?? matlab無約束優化中的應用.txt
字號:
無約束優化中的應用2007/06/02 23:56
求在-5<=xj<=5,j=1,2區間內,求解min f(x1,x2)
當n=2時,
[x1,x2] = meshgrid(-5:0.1:5);
f=-20*exp(-0.2*sqrt(0.5*(x1.^2+x2.^2)))-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)))+22.71282;
mesh(x1,x2,f);
xlabel('x1');
ylabel('x2');
zlabel('f(x1,x2)');
如圖
遺傳算法的參數設置如下:
種群大小 pop_size=10
最大代數 gen_max=1000
變異率 pm=0.1
交叉率 pc=0.3
function [eval]=griewangk(sol)
numv = size(sol,2);
x=sol(1:numv);
eval=-20*exp(-0.2*sqrt(sum(x.^2)/numv))-exp(sum(cos(2*pi*x))/numv)+22.71282;
function [sol,eval]=Ackleymin(sol,options)
numv = size(sol,2)-1;
x=sol(1:numv);
eval=griewangk(x);
eval=-eval;
%維數n=2
%設置參數邊界
bounds = ones(2,1)*[-5 5];
%遺傳算法優化
[p,endPop,bestSols,trace]=ga(bounds,'Ackleymin');
%性能跟蹤
plot(trace(:,1),trace(:,3),'b-')
hold on
plot(trace(:,1),trace(:,2),'r-')
xlabel('Generation');
ylabel('Fittness');
legend('解的變化','種群平均值的變化');
p =
0.0000 -0.0000 0.0055
即最優解圍p=0.0000 0.0000
最小值為:
Ackley(p)=0.0055
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -