导航:首页 > 源码编译 > pso算法matlab代码

pso算法matlab代码

发布时间:2022-07-14 07:03:33

‘壹’ matlab运行程序时不报错,只显示出ans=程序名,这是为什么,以下是详细代码,用pso算法求解tsp问题

换个名字就好了。
不要使用“纯数字”、“关键字”等等。
名称里面,也不要有运算符号:-、+等等。
也不要用汉字。

‘贰’ 如何用pso算法优化离散数据(matlab程序)

如果你是想找一个三阶的多项式拟合你的离散数据的话,可以用PSO。
直接用基础pso就可以,不过你的适应度函数是三维(因为是3阶的多项式),要利用你的数据编一个,常用的话就是差值平方和,就是fitness=(真实值1-多项式计算值1)^2+(真实值2-多项式计算值2)^2+...... 你有13组数据就可以加13次够了,不过提醒一下,你的每个变量的范围要注意设置。
如果还有不懂的可以M我,不过我不常在(⊙o⊙)哦,谢谢

‘叁’ 求把MATLAB的pso源代码算法修改为 qpso算法 要求返回参数相同

下面的代码是量子群优化算法,你参照着改下:
popsize=20;
MAXITER=2000;
dimension=30;
irange_l=-5.12;
irange_r=5.12;
xmax=10;

sum1=0;
sum2=0;
mean=0;
st=0;
runno=10;
data1=zeros(runno,MAXITER);
for run=1:runno
T=cputime;
x=(irange_r- irange_l)*rand(popsize,dimension,1) + irange_l;

pbest=x;
gbest=zeros(1,dimension);

for i=1:popsize
f_x(i)=f3(x(i,:));
f_pbest(i)=f_x(i);
end

g=min(find(f_pbest==min(f_pbest(1:popsize))));
gbest=pbest(g,:);

f_gbest=f_pbest(g);

MINIUM=f_pbest(g);
for t=1:MAXITER

beta=(1-0.5)*(MAXITER-t)/MAXITER+0.5;
mbest=sum(pbest)/popsize;

for i=1:popsize
fi=rand(1,dimension);
p=fi.*pbest(i,:)+(1-fi).*gbest;
u=rand(1,dimension);
b=beta*(mbest-x(i,:));
v=-log(u);
y=p+((-1).^ceil(0.5+rand(1,dimension))).*b.*v;
x(i,:)=y;
x(i,:)=sign(y).*min(abs(y),xmax);

f_x(i)=f3(x(i,:));
if f_x(i)<f_pbest(i)
pbest(i,:)=x(i,:);
f_pbest(i)=f_x(i);
end
if f_pbest(i)<f_gbest
gbest=pbest(i,:);
f_gbest=f_pbest(i);
end
MINIUM=f_gbest;
end
data1(run,t)=MINIUM;
if MINIUM>1e-007
mean=t;
end
end
sum1=sum1+mean;
sum2=sum2+MINIUM;
%MINIUM
time=cputime-T;
st=st+time;

end
av1=sum1/10; %输出平均收验代数
av2=sum2/10; %输出平均最优解
st/10 %就是最后anw输出的解

‘肆’ 粒子群优化算法(PSO)解决单目标优化问题的matlab编程

我之前做过的,

‘伍’ 求教PSO算法优化函数的matlab程序,比如sphere、schaffer、rosenbrock、rastrigin、shubert函数,

呵呵,其实,如果你想知道的MATLAB功能的作用,最好是约帮助下,慢慢的你会发现它非常强大。
中国
帮助呗,那你相信的事实是错误的
帮助腹肌
ABS绝对值。
ABS(X)为X的元素的绝对值时
X是复杂的,ABS(X)为
的复数模量(幅度)十
的元素,这是它的作用,它仅仅是绝对值,例如ABS(-1)= 1,ABS(2)= 2。

‘陆’ 粒子群(PSO)算法的matlab程序

%不知道你具体的问题是什么,下面是一个最基本的pso算法解决函数极值问题,如果是一些大型的问题,需要对速度、惯性常数、和自适应变异做进一步优化,希望对你有帮助
function y = fun(x)
y=-20*exp(-0.2*sqrt((x(1)^2+x(2)^2)/2))-exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)+20+2.71289;
%下面是主程序
%% 清空环境
clc
clear

%% 参数初始化
%粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;

maxgen=200; % 进化次数
sizepop=20; %种群规模

Vmax=1;%速度限制
Vmin=-1;
popmax=5;%种群限制
popmin=-5;

%% 产生初始粒子和速度
for i=1:sizepop
%随机产生一个种群
pop(i,:)=5*rands(1,2); %初始种群
V(i,:)=rands(1,2); %初始化速度
%计算适应度
fitness(i)=fun(pop(i,:)); %染色体的适应度
end

%找最好的染色体
[bestfitness bestindex]=min(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,:)+0.5*V(j,:);
pop(j,find(pop(j,:)>popmax))=popmax;
pop(j,find(pop(j,:)<popmin))=popmin;

%自适应变异(避免粒子群算法陷入局部最优)
if rand>0.8
k=ceil(2*rand);%ceil朝正无穷大方向取整
pop(j,k)=rand;
end

%适应度值
fitness(j)=fun(pop(j,:));

%个体最优更新
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(['适应度曲线 ' '终止代数=' num2str(maxgen)]);
xlabel('进化代数');ylabel('适应度');
以上回答你满意么?

‘柒’ 求教PSO算法优化函数的matlab程序,比如sphere、schaffer、rosenbrock、rastrigin、shubert函数,额是新手

psoT即可,TestFunction里全有你要的函数,使用也比较简单
[email protected]可以给你传一份

‘捌’ pso算法代码怎样用来参数估计

%标准PSO算法源代码(matlab)%标准粒群优化算法程序%2007.1.9Byjxy%测试函数:f(x,y)=100(x^2-y)^2+(1-x)^2,-2.048pop(i,8)%若当前适应值优于个体最优值,则进行个体最优信息的更新pop(i,7)=pop(i,8);%适值更新pop(i,5:6)=pop(i,1:2);%位置坐标更新endend%计算完适应值后寻找当前全局最优位置并记录其坐标ifbest_fitness>min(pop(:,7))best_fitness=min(pop(:,7));%全局最优值gbest_x=pop(find(pop(:,7)==min(pop(:,7))),1);%全局最优粒子的位置gbest_y=pop(find(pop(:,7)==min(pop(:,7))),2);endbest_in_history(exetime)=best_fitness;%记录当前全局最优%实时输出结果%输出当前种群中粒子位置subplot(1,2,1);fori=1:popsizeplot(pop(i,1),pop(i,2),'b*');holdon;endplot(gbest_x,gbest_y,'r.','markersize',20);axis([-2,2,-2,2]);holdoff;subplot(1,2,2);axis([0,gen,-0.00005,0.00005]);ifexetime-1>0line([exetime-1,exetime],[best_in_history(exetime-1),best_fitness]);holdon;end%粒子群速度与位置更新%更新粒子速度fori=1:popsizepop(i,3)=rand()*pop(i,3)+c1*rand()*(pop(i,5)-pop(i,1))+c2*rand()*(gbest_x-pop(i,1));%更新速度pop(i,4)=rand()*pop(i,4)+c1*rand()*(pop(i,6)-pop(i,2))+c2*rand()*(gbest_x-pop(i,2));ifabs(pop(i,3))>max_velocityifpop(i,3)>0pop(i,3)=max_velocity;elsepop(i,3)=-max_velocity;endendifabs(pop(i,4))>max_velocityifpop(i,4)>0pop(i,4)=max_velocity;elsepop(i,4)=-max_velocity;endendend%更新粒子位置fori=1:popsizepop(i,1)=pop(i,1)+pop(i,3);pop(i,2)=pop(i,2)+pop(i,4);

‘玖’ pso算法的matlab程序

%------基本粒子群优化算法(Particle Swarm Optimization)-----------
%------名称:基本粒子群优化算法(PSO)
%------作用:求解优化问题
%------说明:全局性,并行性,高效的群体智能算法
%------初始格式化--------------------------------------------------
clear all;
clc;
format long;
%------给定初始化条件----------------------------------------------
c1=1.4962;             %学习因子1
c2=1.4962;             %学习因子2
w=0.7298;              %惯性权重
MaxDT=1000;            %最大迭代次数
D=10;                  %搜索空间维数(未知数个数)
N=40;                  %初始化群体个体数目
eps=10^(-6);           %设置精度(在已知最小值时候用)
%------初始化种群的个体(可以在这里限定位置和速度的范围)------------
for i=1:N
    for j=1:D
        x(i,j)=randn; %随机初始化位置
        v(i,j)=randn; %随机初始化速度
    end
end
%------先计算各个粒子的适应度,并初始化Pi和Pg----------------------
for i=1:N
    p(i)=fitness(x(i,:),D);
    y(i,:)=x(i,:);
end
pg=x(1,:);             %Pg为全局最优
for i=2:N
    if fitness(x(i,:),D)<FITNESS(PG,D)< span>
        pg=x(i,:);
    end
end
%------进入主要循环,按照公式依次迭代,直到满足精度要求------------
for t=1:MaxDT
    for i=1:N
        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,:),D)<P(I)< span>
            p(i)=fitness(x(i,:),D);
            y(i,:)=x(i,:);
        end
        if p(i)<FITNESS(PG,D)< span>
            pg=y(i,:);
        end
    end
    Pbest(t)=fitness(pg,D);
end
%------最后给出计算结果
disp('*************************************************************')
disp('函数的全局最优位置为:')
Solution=pg'
disp('最后得到的优化极值为:')
Result=fitness(pg,D)
disp('*************************************************************')
%------算法结束---DreamSun GL & HF-----------------------------------
 
    适应度函数源程序(fitness.m)
function result=fitness(x,D)
sum=0;
for i=1:D
    sum=sum+x(i)^2;
end
result=sum;

‘拾’ 跪求 pso算法在图像分割中的应用源代码(MATLAB仿真)

%标准PSO算法源代码(matlab)
%标准粒群优化算法程序
% 2007.1.9 By jxy
%测试函数:f(x,y)=100(x^2-y)^2+(1-x)^2, -2.048<x,y<2.048
%求解函数最小值

global popsize; %种群规模
%global popnum; %种群数量
global pop; %种群
%global c0; %速度惯性系数,为0—1的随机数
global c1; %个体最优导向系数
global c2; %全局最优导向系数
global gbest_x; %全局最优解x轴坐标
global gbest_y; %全局最优解y轴坐标
global best_fitness; %最优解
global best_in_history; %最优解变化轨迹
global x_min; %x的下限
global x_max; %x的上限
global y_min; %y的下限
global y_max; %y的上限
global gen; %迭代次数
global exetime; %当前迭代次数
global max_velocity; %最大速度

initial; %初始化

for exetime=1:gen
outputdata; %实时输出结果
adapting; %计算适应值
errorcompute(); %计算当前种群适值标准差
updatepop; %更新粒子位置
pause(0.01);
end

clear i;
clear exetime;
clear x_max;
clear x_min;
clear y_min;
clear y_max;

%程序初始化

gen=100; %设置进化代数
popsize=30; %设置种群规模大小
best_in_history(gen)=inf; %初始化全局历史最优解
best_in_history(gen)=inf; %初始化全局历史最优解
max_velocity=0.3; %最大速度限制
best_fitness=inf;
%popnum=1; %设置种群数量

pop(popsize,8)=0; %初始化种群,创建popsize行5列的0矩阵
%种群数组第1列为x轴坐标,第2列为y轴坐标,第3列为x轴速度分量,第4列为y轴速度分量
%第5列为个体最优位置的x轴坐标,第6列为个体最优位置的y轴坐标
%第7列为个体最优适值,第8列为当前个体适应值

for i=1:popsize
pop(i,1)=4*rand()-2; %初始化种群中的粒子位置,值为-2—2,步长为其速度
pop(i,2)=4*rand()-2; %初始化种群中的粒子位置,值为-2—2,步长为其速度
pop(i,5)=pop(i,1); %初始状态下个体最优值等于初始位置
pop(i,6)=pop(i,2); %初始状态下个体最优值等于初始位置
pop(i,3)=rand()*0.02-0.01; %初始化种群微粒速度,值为-0.01—0.01,间隔为0.0001
pop(i,4)=rand()*0.02-0.01; %初始化种群微粒速度,值为-0.01—0.01,间隔为0.0001
pop(i,7)=inf;
pop(i,8)=inf;
end

c1=2;
c2=2;
x_min=-2;
y_min=-2;
x_max=2;
y_max=2;

gbest_x=pop(1,1); %全局最优初始值为种群第一个粒子的位置
gbest_y=pop(1,2);

%适值计算
% 测试函数为f(x,y)=100(x^2-y)^2+(1-x)^2, -2.048<x,y<2.048

%计算适应值并赋值
for i=1:popsize
pop(i,8)=100*(pop(i,1)^2-pop(i,2))^2+(1-pop(i,1))^2;
if pop(i,7)>pop(i,8) %若当前适应值优于个体最优值,则进行个体最优信息的更新
pop(i,7)=pop(i,8); %适值更新
pop(i,5:6)=pop(i,1:2); %位置坐标更新
end
end

%计算完适应值后寻找当前全局最优位置并记录其坐标
if best_fitness>min(pop(:,7))
best_fitness=min(pop(:,7)); %全局最优值
gbest_x=pop(find(pop(:,7)==min(pop(:,7))),1); %全局最优粒子的位置
gbest_y=pop(find(pop(:,7)==min(pop(:,7))),2);
end

best_in_history(exetime)=best_fitness; %记录当前全局最优

%实时输出结果

%输出当前种群中粒子位置
subplot(1,2,1);
for i=1:popsize
plot(pop(i,1),pop(i,2),'b*');
hold on;
end

plot(gbest_x,gbest_y,'r.','markersize',20);axis([-2,2,-2,2]);
hold off;

subplot(1,2,2);
axis([0,gen,-0.00005,0.00005]);

if exetime-1>0
line([exetime-1,exetime],[best_in_history(exetime-1),best_fitness]);hold on;
end

%粒子群速度与位置更新

%更新粒子速度
for i=1:popsize
pop(i,3)=rand()*pop(i,3)+c1*rand()*(pop(i,5)-pop(i,1))+c2*rand()*(gbest_x-pop(i,1)); %更新速度
pop(i,4)=rand()*pop(i,4)+c1*rand()*(pop(i,6)-pop(i,2))+c2*rand()*(gbest_x-pop(i,2));
if abs(pop(i,3))>max_velocity
if pop(i,3)>0
pop(i,3)=max_velocity;
else
pop(i,3)=-max_velocity;
end
end
if abs(pop(i,4))>max_velocity
if pop(i,4)>0
pop(i,4)=max_velocity;
else
pop(i,4)=-max_velocity;
end
end
end

%更新粒子位置
for i=1:popsize
pop(i,1)=pop(i,1)+pop(i,3);
pop(i,2)=pop(i,2)+pop(i,4);

阅读全文

与pso算法matlab代码相关的资料

热点内容
喷油螺杆制冷压缩机 浏览:577
python员工信息登记表 浏览:375
高中美术pdf 浏览:159
java实现排列 浏览:511
javavector的用法 浏览:980
osi实现加密的三层 浏览:230
大众宝来原厂中控如何安装app 浏览:912
linux内核根文件系统 浏览:241
3d的命令面板不见了 浏览:524
武汉理工大学服务器ip地址 浏览:147
亚马逊云服务器登录 浏览:523
安卓手机如何进行文件处理 浏览:70
mysql执行系统命令 浏览:929
php支持curlhttps 浏览:142
新预算法责任 浏览:443
服务器如何处理5万人同时在线 浏览:249
哈夫曼编码数据压缩 浏览:424
锁定服务器是什么意思 浏览:383
场景检测算法 浏览:616
解压手机软件触屏 浏览:348