大家好,今天来为大家分享Matlab中优化算法应用(四):粒子群测试算法详解的一些知识点,和的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
为了测试该功能及其图像代码,我在网上找到了一个
文件名说明.optimizationalgorithmframeGet_Functions_details.m 测试函数,使用.optimizationalgorithmframefunc_plot.m 函数图像进行评估,使用..optimization algorithmframeGet_Functions_details.m进行绘图函数[lb,ub,dim,fobj]=获取函数详细信息(F)
开关F
案例“F1”
磅=-100;
ub=100;
暗淡=10;
fobj=@F1;
案例“F2”
fobj=@F2;
磅=-10;
ub=10;
暗淡=10;
案例“F3”
fobj=@F3;
磅=-100;
ub=100;
暗淡=10;
案例“F4”
fobj=@F4;
磅=-100;
ub=100;
暗淡=10;
案例“F5”
fobj=@F5;
磅=-30;
ub=30;
暗淡=10;
案例“F6”
fobj=@F6;
磅=-100;
ub=100;
暗淡=10;
案例“F7”
fobj=@F7;
磅=-1.28;
ub=1.28;
暗淡=10;
案例“F8”
fobj=@F8;
磅=-500;
ub=500;
暗淡=10;
案例“F9”
fobj=@F9;
磅=-5.12;
ub=5.12;
暗淡=10;
案例“F10”
fobj=@F10;
磅=-32;
ub=32;
暗淡=10;
案例“F11”
fobj=@F11;
磅=-600;
ub=600;
暗淡=10;
案例“F12”
fobj=@F12;
磅=-50;
ub=50;
暗淡=10;
案例“F13”
fobj=@F13;
磅=-50;
ub=50;
暗淡=10;
案例“F14”
fobj=@F14;
磅=-65.536;
ub=65.536;
暗淡=2;
案例“F15”
fobj=@F15;
磅=-5;
ub=5;
暗淡=4;
案例“F16”
fobj=@F16;
磅=-5;
ub=5;
暗淡=2;
案例“F17”
fobj=@F17;
磅=[-5,0];
ub=[10,15];
暗淡=2;
案例“F18”
fobj=@F18;
磅=-2;
ub=2;
暗淡=2;
案例“F19”
fobj=@F19;
磅=0;
ub=1;
暗淡=3;
案例“F20”
fobj=@F20;
磅=0;
ub=1;
暗淡=6;
案例“F21”
fobj=@F21;
磅=0;
ub=10;
暗淡=4;
案例“F22”
fobj=@F22;
磅=0;
ub=10;
暗淡=4;
案例“F23”
fobj=@F23;
磅=0;
ub=10;
暗淡=4;
结尾
结尾
%F1
函数o=F1(x)
x=x-90;
o=sum(x.^2);
结尾
% F2
函数o=F2(x)
o=sum(abs(x))+prod(abs(x));
结尾
%F3
函数o=F3(x)
暗淡=大小(x,2);
0=0;
对于i=1:dim
o=o+sum(x(1:i))^2;
结尾
结尾
%F4
函数o=F4(x)
o=max(abs(x));
结尾
%F5
函数o=F5(x)
暗淡=大小(x,2);
o=sum(100*(x(2:dim)-(x(1:dim-1).^2)).^2+(x(1:dim-1)-1).^2);
结尾
%F6
函数o=F6(x)
o=sum(abs((x+.5)).^2);
结尾
%F7
函数o=F7(x)
暗淡=大小(x,2);
o=sum([1:dim].*(x.^4))+rand;
结尾
%F8
函数o=F8(x)
o=sum(-x.*sin(sqrt(abs(x))));
结尾
%F9
函数o=F9(x)
暗淡=大小(x,2);
o=sum(x.^2-10*cos(2*pi.*x))+10*dim;
结尾
%F10
函数o=F10(x)
暗淡=大小(x,2);
o=-20*exp(-.2*sqrt(sum(x.^2)/dim))-exp(sum(cos(2*pi.*x))/dim)+20+exp(1);
结尾
%F11
函数o=F11(x)
暗淡=大小(x,2);
o=sum(x.^2)/4000-prod(cos(x./sqrt([1:dim])))+1;
结尾
%F12
函数o=F12(x)
暗淡=大小(x,2);
o=(pi/dim)*(10*((sin(pi*(1+(x(1)+1)/4)))^2)+sum((((x(1:dim-1)+1 )./4).^2).*.
(1+10.*((sin(pi.*(1+(x(2:dim)+1)./4))).^2))+((x(dim)+1)/4)^ 2)+sum(Ufun(x,10,100,4));
结尾
% F13
函数o=F13(x)
暗淡=大小(x,2);
o=.1*((sin(3*pi*x(1)))^2+sum((x(1:dim-1)-1).^2.*(1+(sin(3.*pi. *x(2:dim))).^2))+.
((x(dim)-1)^2)*(1+(sin(2*pi*x(dim)))^2))+sum(Ufun(x,5,100,4));
结尾
%F14
函数o=F14(x)
aS=[-32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32;
-32 -32 -32 -32 -32 -16 -16 -16 -16 -16 0 0 0 0 0 16 16 16 16 16 32 32 32 32 32];
对于j=1:25
bS(j)=sum((x"-aS(:j)).^6);
结尾
o=(1/500+sum(1./([1:25]+bS))).^(-1);
结尾
%F15
函数o=F15(x)
aK=[.1957 .1947 .1735 .16 .0844 .0627 .0456 .0342 .0323 .0235 .0246];
bK=[.25 .5 1 2 4 6 8 10 12 14 16];bK=1./bK;
o=sum((aK-((x(1).*(bK.^2+x(2).*bK))./(bK.^2+x(3).*bK+x(4) ))).^2);
结尾
%F16
函数o=F16(x)
o=4*(x(1)^2)-2.1*(x(1)^4)+(x(1)^6)/3+x(1)*x(2)-4*(x( 2)^2)+4*(x(2)^4);
结尾
%F17
函数o=F17(x)
o=(x(2)-(x(1)^2)*5.1/(4*(pi^2))+5/pi*x(1)-6)^2+10*(1-1/(8*pi))*cos(x(1))+10;
结尾
% F18
函数o=F18(x)
o=(1+(x(1)+x(2)+1)^2*(19-14*x(1)+3*(x(1)^2)-14*x(2)+6 *x(1)*x(2)+3*x(2)^2))*.
(30+(2*x(1)-3*x(2))^2*(18-32*x(1)+12*(x(1)^2)+48*x(2)-36 *x(1)*x(2)+27*(x(2)^2)));
结尾
%F19
函数o=F19(x)
aH=[3 10 30;1 10 35;3 10 30;1 10 35];cH=[1 1.2 3 3.2];
pH=[.3689 .117 .2673;4699 .4387 .747;1091 .8732 .5547;03815 .5743 .8828];
0=0;
对于我=1:4
o=o-cH(i)*exp(-(sum(aH(i,).*((x-pH(i,)).^2))));
结尾
结尾
% F20
函数o=F20(x)
aH=[10 3 17 3.5 1.7 8;05 10 17 .1 8 14;3 3.5 1.7 10 17 8;17 8 .05 10 .1 14];
CH=[1 1.2 3 3.2];
pH=[.1312 .1696 .5569 .0124 .8283 .5886;2329 .4135 .8307 .3736 .1004 .9991;
.2348 .1415 .3522 .2883 .3047 .6650;4047 .8828 .8732 .5743 .1091 .0381];
0=0;
对于我=1:4
o=o-cH(i)*exp(-(sum(aH(i,).*((x-pH(i,)).^2))));
结尾
结尾
%F21
函数o=F21(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
0=0;
对于我=1:5
o=o-((x-aSH(i,))*(x-aSH(i,))"+cSH(i))^(-1);
结尾
结尾
%F22
函数o=F22(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
0=0;
对于我=1:7
o=o-((x-aSH(i,))*(x-aSH(i,))"+cSH(i))^(-1);
结尾
结尾
%F23
函数o=F23(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
0=0;
对于我=1:10
o=o-((x-aSH(i,))*(x-aSH(i,))"+cSH(i))^(-1);
结尾
结尾
函数o=Ufun(x,a,k,m)
o=k.*((x-a).^m).*(xa)+k.*((-x-a).^m).*(x(-a));
end上面的测试函数的最优解大多在0处,为了不让向0收敛的算法有较好的结果,我们可以修改最优解,如F1,我将最优解放在了x=90处。..optimization algorithmframefunc_plot.m% 该函数绘制基准函数
函数func_plot(func_name)
[lb,ub,dim,fobj]=Get_Functions_details(func_name);
开关功能名称
案例“F1”
x=-100:2:100; y=x; %[-100,100]
案例“F2”
x=-100:2:100; y=x; %[-10,10]
案例“F3”
x=-100:2:100; y=x; %[-100,100]
案例“F4”
x=-100:2:100; y=x; %[-100,100]
案例“F5”
x=-200:2:200; y=x; %[-5,5]
案例“F6”
x=-100:2:100; y=x; %[-100,100]
案例“F7”
x=-1:0.03:1; y=x %[-1,1]
案例“F8”
x=-500:10:500;y=x; %[-500,500]
案例“F9”
x=-5:0.1:5; y=x; %[-5,5]
案例“F10”
x=-20:0.5:20; y=x;%[-500,500]
案例“F11”
x=-500:10:500; y=x;%[-0.5,0.5]
案例“F12”
x=-10:0.1:10; y=x;%[-pi,pi]
案例“F13”
x=-5:0.08:5; y=x;%[-3,1]
案例“F14”
x=-100:2:100; y=x;%[-100,100]
案例“F15”
x=-5:0.1:5; y=x;%[-5,5]
案例“F16”
x=-1:0.01:1; y=x;%[-5,5]
案例“F17”
x=-5:0.1:5; y=x;%[-5,5]
案例“F18”
x=-5:0.06:5; y=x;%[-5,5]
案例“F19”
x=-5:0.1:5; y=x;%[-5,5]
案例“F20”
x=-5:0.1:5; y=x;%[-5,5]
案例“F21”
x=-5:0.1:5; y=x;%[-5,5]
案例“F22”
x=-5:0.1:5; y=x;%[-5,5]
案例“F23”
x=-5:0.1:5; y=x;%[-5,5]
结尾
L=长度(x);
f=[];
对于i=1:L
对于j=1:L
if strcmp(func_name,"F15")==0 strcmp(func_name,"F19")==0 strcmp(func_name,"F20")==0 strcmp(func_name,"F21")==0 strcmp(func_name," F22")==0 strcmp(func_name,"F23")==0
f(i,j)=fobj([x(i),y(j)]);
结尾
if strcmp(func_name,"F15")==1
f(i,j)=fobj([x(i),y(j),0,0]);
结尾
if strcmp(func_name,"F19")==1
f(i,j)=fobj([x(i),y(j),0]);
结尾
if strcmp(func_name,"F20")==1
f(i,j)=fobj([x(i),y(j),0,0,0,0]);
结尾
if strcmp(func_name,"F21")==1 || strcmp(func_name,"F22")==1 || strcmp(func_name,"F23")==1
f(i,j)=fobj([x(i),y(j),0,0]);
结尾
结尾
结尾
surfc(x,y,f,"LineStyle","无");
下面结束修改测试代码
%% 清理之前的数据
% 清除所有数据
全部清除;
% 清除窗口输出
clc;
%% 添加框架路径
% 将上级目录下的frame文件夹添加到路径中
添加路径("./frame")
%% 选择测试功能
函数名="F1";
%[最小值、最大值、尺寸、测试函数]
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);
%%算法示例
人口规模%
大小=50;
% 最大迭代次数
最大迭代次数=1000;
% 值范围上限
range_max_list=Ones(1,dim).*ub;
% 值范围下限
range_min_list=Ones(1,dim).*lb;
% 实例化粒子组类
基=PSO_Impl(暗淡,大小,iter_max,range_min_list,range_max_list);
% 告诉算法寻找的不是最大值
base.is_cal_max=false;
%确定适应度函数
基础.fitfunction=fobj;
跑步
基.run();
%%绘制图像
图("位置",[500 500 660 290])
% 绘制搜索空间
子图(1,2,1);
func_plot(函数名称);
title("参数空间")
xlabel("x_1");
ylabel("x_2");
zlabel([函数名称,"( x_1 , x_2 )"])
% 绘制目标空间
子图(1,2,2);
%绘制曲线
半学(base.value_best_history,"颜色","r")
title("目标空间")
xlabel("迭代");
ylabel("迄今为止获得的最好成绩");
% 调整坐标轴以紧凑
轴紧
% 添加网格
网格上
% 在所有四个面上显示比例
盒子关闭
图例(基本名称)
display(["",base.name ,"得到的最佳解为", num2str(base.value_best)]);
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!
【Matlab中优化算法应用(四):粒子群测试算法详解】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
终于找到了关于粒子群算法的MATLAB代码实现!
有12位网友表示赞同!
我想了解一下粒子群算法在实际工程中的应用情况。
有6位网友表示赞同!
这个系列文章内容很不错,我对优化算法很感兴趣。
有14位网友表示赞同!
我之前尝试过一些其他类型的优化算法,这次想试试粒子群算法的效果。
有18位网友表示赞同!
这篇文章的代码实现看起来很简洁易懂,赞一个!
有18位网友表示赞同!
测试方面的内容很重要,能直接验证算法的效果,方便学习。
有20位网友表示赞同!
我想知道测试过程中有哪些指标来评价粒子群算法的性能?
有11位网友表示赞同!
感觉优化算法这块知识应用范围超级广啊!
有6位网友表示赞同!
希望作者能继续分享更多关于不同类型的优化算法的内容!
有12位网友表示赞同!
我已经有一些MATLAB编程经验,可以试试这个代码实现看看。
有19位网友表示赞同!
学习算法的时候我总会遇到一些卡住了的地方,希望能通过这篇文章解决一些问题。
有18位网友表示赞同!
粒子群算法原理还是比较难理解,希望这篇文章能给我一些启发!
有18位网友表示赞同!
我很想把这个代码应用到我的毕业设计中,看看效果如何。
有9位网友表示赞同!
感觉MATLAB作为仿真工具在优化算法研究方面非常实用!
有17位网友表示赞同!
我之前没有接触过粒子群算法,这篇文章是一个很好的入门指南!
有8位网友表示赞同!
测试结果能够清晰地展示出粒子群算法的优劣势,很有价值。
有11位网友表示赞同!
我想知道如何将粒子群算法应用到其他领域的具体案例!
有19位网友表示赞同!
学习优化算法不仅可以提升我的编程能力,还能帮助我在科研方面有所突破。
有9位网友表示赞同!
这个系列文章的内容非常系统化,很容易理解和学习!
有17位网友表示赞同!
我会将这篇文章分享给我的朋友们,一起学习和探讨优化算法!
有10位网友表示赞同!