目录
1 概述
2 运行结果
3 参考文献
4 Matlab代码
系统试图借助人工蜂群针对粒子群算法和蜂群算法在寻优中存在的一些早熟和收敛速精度不高等问题,本文分别对粒子算法和蜂群算法的更新策略以及更新公式进行了改进,利用改进的粒子群算法和改进的蜂群算法同时对一个粒子位置进行部分算术更新的方法,提出了一种新混合的优化算法.并将其在12个多极值基准函数进行全局最优化测试,实验结果表明,笔者提出的混合优化算法收敛的速度和收敛精度大大提高了,其性大大优于改进的粒子群算法(CLPSO算法)和人工蜂群算法,对于高、低维复杂函数的优化均适用.。(ABC)算法和粒子群优化算法相结合的方法可找到从起点到终点之间最优的路径。这是一种很好的机器人寻径策略。在每一次运行中,新的障碍在新的位置和曲线试图找到最佳路径。多次运行以找到最佳结果。
[1]叶奕茂,赵华生,金龙.一种基于PSO-ABC的全局优化算法[J].广西民族大学学报(自然科学版),2013,19(04):55-59.DOI:10.16177/j.cnki.gxmzzk.2013.04.022.
主函数部分代码:
%% Cleaning The Stage
clc;
clear;
warning('off');
%% Start ABC + PSO Optimal Path Finder
model=Basics();
model.n=6; % number of Handle Points
CostFunction=@(x) Cost(x,model); % Cost Function
nVar=model.n; % Number of Decision Variables
VarSize=[1 nVar]; % Size of Decision Variables Matrix
VarMin.x=model.xmin; % Lower Bound of Variables
VarMax.x=model.xmax; % Upper Bound of Variables
VarMin.y=model.ymin; % Lower Bound of Variables
VarMax.y=model.ymax; % Upper Bound of Variables
%% PSO + ABC Parameters
MaxIt=150; % Maximum Number of Iterations
nPop=20; % Population Size (Swarm Size)
w=1; % Inertia Weight
wdamp=0.98; % Inertia Weight Damping Ratio
c1=1.5; % Personal Learning Coefficient
c2=1.5; % Global Learning Coefficient
nOnlooker = nPop; % Number of Onlooker Bees
L = round(0.6*nVar*nPop); % Abandonment Limit Parameter (Trial Limit)
a = 1;
alpha=0.1;
VelMax.x=alpha*(VarMax.x-VarMin.x); % Maximum Velocity
VelMin.x=-VelMax.x; % Minimum Velocity
VelMax.y=alpha*(VarMax.y-VarMin.y); % Maximum Velocity
VelMin.y=-VelMax.y; % Minimum Velocity
%% Initialization PSO + ABC
% Create Empty Particle Structure
empty_particle.Position=[];
empty_particle.Velocity=[];
empty_particle.Cost=[];
empty_particle.Sol=[];
empty_particle.Best.Position=[];
empty_particle.Best.Cost=[];
empty_particle.Best.Sol=[];
% Empty Bee Structure
empty_bee.Position = [];
empty_bee.Cost = [];
% Initialize Global Best
GlobalBest.Cost=inf;
% Initialize Population Array
pop = repmat(empty_bee, nPop, 1);
bee = repmat(empty_bee, nPop, 1);
% Initialize Best Solution Ever Found
BestSol.Cost = inf;
GlobalBest.Cost=inf;
% Create Particles Matrix
particle=repmat(empty_particle,nPop,1);
% Initialization Loop
for i=1:nPop
% Initialize Position
if i > 1
particle(i).Position=CRSolution(model);
else
完整代码见评论区置顶评论。