MAT之PSO:利用PSO实现对一元函数y = sin(10*pi*x) ./ x进行求解优化,找到最优个体适应度

简介: MAT之PSO:利用PSO实现对一元函数y = sin(10*pi*x) ./ x进行求解优化,找到最优个体适应度

输出结果

image.png


代码设计


x = 1:0.01:2;          

y = sin(10*pi*x) ./ x;  

figure

plot(x, y)

title('绘制目标函数曲线图—Jason niu');

hold on

c1 = 1.49445;

c2 = 1.49445;

maxgen = 50;    

sizepop = 10;  

Vmax = 0.5;    

Vmin = -0.5;

popmax = 2;    

popmin = 1;

for i = 1:sizepop

   pop(i,:) = (rands(1) + 1) / 2 + 1;    

   V(i,:) = 0.5 * rands(1);  

   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

[fitnesszbest zbest]

plot(zbest, fitnesszbest,'r*')

figure

plot(yy)

title('PSO:PSO算法(快于GA算法)实现找到最优个体适应度—Jason niu','fontsize',12);

xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);

————————————————

版权声明:本文为CSDN博主「一个处女座的程序猿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_41185868/article/details/79379034

相关文章
|
7月前
|
资源调度 算法
Matlab马尔可夫链蒙特卡罗法(MCMC)估计随机波动率(SV,Stochastic Volatility) 模型
Matlab马尔可夫链蒙特卡罗法(MCMC)估计随机波动率(SV,Stochastic Volatility) 模型
|
7月前
Stata中的治疗效果:RA:回归调整、 IPW:逆概率加权、 IPWRA、 AIPW
Stata中的治疗效果:RA:回归调整、 IPW:逆概率加权、 IPWRA、 AIPW
|
机器学习/深度学习 算法 数据挖掘
最优化--梯度下降法--牛顿法(详解)
最优化--梯度下降法--牛顿法(详解)
1593 1
罗尔(Rolle)、拉格朗日(Lagrange)和柯西(Cauchy)三大微分中值定理的定义
罗尔(Rolle)、拉格朗日(Lagrange)和柯西(Cauchy)三大微分中值定理的定义
罗尔(Rolle)、拉格朗日(Lagrange)和柯西(Cauchy)三大微分中值定理的定义
|
机器学习/深度学习 传感器 算法
【粘菌算法】基于粘菌算法SMA求解单目标优化问题附matlab代码
【粘菌算法】基于粘菌算法SMA求解单目标优化问题附matlab代码
一元函数微分学中导数--高阶导数--极值--凹凸性--泰勒展开式
一元函数微分学中导数--高阶导数--极值--凹凸性--泰勒展开式
最优化--凸函数--拉格朗日乘子法
最优化--凸函数--拉格朗日乘子法
|
机器学习/深度学习 算法
《最优化方法》——无约束具体算法以及KK
《最优化方法》——无约束具体算法以及KK
337 0
《最优化方法》——无约束具体算法以及KK
|
算法 数据可视化
smooth的作用,Adam算法引入了二阶动量的概念
在loss function中的主要目的是把loss function变成continuous differerntiable function(连续可微分函数),从而在optimization(优化)
219 0
|
机器学习/深度学习 算法
梯度下降算法主要通过哪两个控制因子实现最优参数选择?这两个因子分别起到什么作用?为什么计算损失函数最优值采用梯度下降算法而不是直接对损失函数求导数等于0时的最优解?如何判断梯度下降算法是否正确工作?
梯度下降算法主要通过哪两个控制因子实现最优参数选择?这两个因子分别起到什么作用?为什么计算损失函数最优值采用梯度下降算法而不是直接对损失函数求导数等于0时的最优解?如何判断梯度下降算法是否正确工作? 梯度下降算法有两个重要的控制因子:一个是步长,由学习率控制;一个是方向,由梯度指定。 1.在梯度下降算法中,步长决定了每一次迭代过程中,会往梯度下降的方向移动的距离。试想一下,如果步长很大,算法会在局部最优点附近来回跳动,不会收敛(如下图);但如果步长太短,算法每步的移动距离很短,就会导致算法收敛速度很慢。 2
254 0