粒子群算法MATLAB代码,怎么运行不行,高手们给我修改一下,本人是菜鸟!谢谢!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了粒子群算法MATLAB代码,怎么运行不行,高手们给我修改一下,本人是菜鸟!谢谢!相关的知识,希望对你有一定的参考价值。
functionF=fitness(x)
F=(x(1)-17.3962)^2+(x(2)-17.2974)^2+(x(3)-17.6002)^2+(x(4)-18.3051)^2+(x(5)-19.4117)^2+(x(6)-20.9202)^2+(x(7)-22.8304)^2
>> [xm,fv]=LinwPSO(@fitness,100, 1.2,1.8,0.9992,0.0008,200,7)
%下面是主程序
%% 清空环境
clc
clear
%% 参数初始化
%粒子群算法中的两个参数
c1=1.2 ; %最大权重
c2=1.8; %最小权重
w1=0.9992; %学习因子1
w2=0.0008; %学习因子2
M=200; %最大迭代次数
D=7; %搜索空间维数(未知数个数)
N=100; %初始化群体个体数目
eps=10^(-5); %设置精度(在已知最小值时候用)
%------初始化种群的个体(可以在这里限定位置和速度的范围)------------
for i=1:N
for j=1:D
x(i,j)=randn; %随机初始化位置
v(i,j)=randn; %随机初始化速度
end
end
for i=1:N
p(i)=fitness(x(i,:));
y(i,:)=x(i,:);
end
pg=x(N,:); %Pg为全局最优
for i=1:(N-1)
if fitness(x(i,:))<fitness(pg)
pg=x(i,:);
end
end
for t=1:M
for i=1:N
w=wmax-(t-1)*(wmax-wmin)/(M-1); %权重线性递减
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
x(i,:)=x(i,:)+v(i,:);
if fitness(x(i,:))<p(i)
p(i)=fitness(x(i,:));
y(i,:)=x(i,:);
end
if p(i)<fitness(pg)
pg=y(i,:);
end
end
end
xm=pg
fv=fitness(pg),
求直接调用的matlab粒子群算法和模拟退火法的函数
我目标函数已经编好了,现在只要直接调用matlab内部的粒子群算法和模拟退火法就可以了,想请问一下直接调用的函数和设置是怎么写的?两行就搞定的那种
参考技术A 没有,自己网上去下别人编好的工具箱吧。以上是关于粒子群算法MATLAB代码,怎么运行不行,高手们给我修改一下,本人是菜鸟!谢谢!的主要内容,如果未能解决你的问题,请参考以下文章