3.1粒子群算法
粒子群优化算法是一种模拟鸟群捕食活动的进化算法,体现了种群相互协作行为的群体智能。在处理优化问题时,每个粒子对应搜索空间的一个潜在方案,在进化过程中基于适应度函数进行选择和记录,粒子之间分享速度信息,并调节运动速度寻找最佳位置。
假设待分配的激光武器数量为nW,无人机数量为nT。标准的粒子群算法包含了N个粒子的种群,每个个体包含了3个n维搜索空间中的向量,分别为粒子当前位置xi、粒子当前最佳位置pi和速度vi。粒子群算法寻优过程中,每个粒子xi以速度vi在搜索空间中运动,通过种群的协作来调节各粒子的速度,更新粒子位置以寻找最优解。
种群进化过程中,每一代中的各个粒子在自身惯性速度的基础上,同时向当前粒子自身历史最优位置和群体最优位置方向加速获得新速度,并对位置进行更新。设种群全局最优粒子为pg,第k代粒子第d维变量进化更新算法如下:
其中,d=1,2,⋯,nW表明火力单元变量的维数;ϕ1,d和ϕ2,d分别为[0,ϕ1,max]和[0,ϕ2,max]区间内均匀分布的随机数;为粒子的惯性权重,可采用线性递减策略对第k代的惯性权重系数进行更新。粒子群算法记录个体过去最佳位置pi和种群全局最优位置pg,并构建它们对寻优过程的正反馈作用机制,通过对各粒子速度的激励,粒子相互协同以快速发现高适应度函数。火力分配时需获取整数配对,可根据连续粒子群算法进行离散化,并以粒子对应的适应度函数评价解的质量。
3.1粒子群寻优
测试函数选择如下: (理论最优值为1)
function y = fun(x)
%函数用于计算粒子适应度值
%x input 输入粒子
%y output 粒子适应度值
y=sin( sqrt(x(1).^2+x(2).^2) )./sqrt(x(1).^2+x(2).^2)+exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)-2.71289;
粒子群算法相关代码:
%% 清空环境
clc
clear
%% 参数初始化
%粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;
maxgen=300; % 进化次数
sizepop=20; %种群规模
Vmax=0.5;
Vmin=-0.5;
popmax=2;
popmin=-2;
%% 产生初始粒子和速度
for i=1:sizepop
%随机产生一个种群
pop(i,:)=2*rands(1,2); %初始种群
V(i,:)=0.5*rands(1,2); %初始化速度
%计算适应度
fitness(i)=fun(pop(i,:)); %染色体的适应度
end
%% 个体极值和群体极值
[bestfitness bestindex]=max(fitness);
zbest=pop(bestindex,:); %全局最佳
gbest=pop; %个体最佳
fitnessgbest=fitness; %个体最佳适应度值
fitnesszbest=bestfitness; %全局最佳适应度值
%% 迭代寻优
for i=1:maxgen
for j=1:sizepop
%速度更新
V(j,:) = V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));
V(j,find(V(j,:)>Vmax))=Vmax;
V(j,find(V(j,:)<Vmin))=Vmin;
%种群更新
pop(j,:)=pop(j,:)+V(j,:);
pop(j,find(pop(j,:)>popmax))=popmax;
pop(j,find(pop(j,:)<popmin))=popmin;
%适应度值
fitness(j)=fun(pop(j,:));
end
for j=1:sizepop
%个体最优更新
if fitness(j) > fitnessgbest(j)
gbest(j,:) = pop(j,:);
fitnessgbest(j) = fitness(j);
end
%群体最优更新
if fitness(j) > fitnesszbest
zbest = pop(j,:);
fitnesszbest = fitness(j);
end
end
yy(i)=fitnesszbest;
end
%% 结果分析
plot(yy)
title('最优个体适应度','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);
寻优结果:
作一些寻优的小改进1:PSO0.m
( 改进后的代码在我资源下载列表进行下载)
寻优的小改进2:PSO1.m
寻优的小改进2:PSO2.m
寻优的小改进2:PSO3.m
寻优的小改进2:PSO4.m
几种方法的拟合效果都还可以!!!!
详细代码见资源列表--->
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)