我看到一篇文献,用gaot工具箱来做非线性规划的遗传算法,程序如下:
首先编写目标函数文件:
function[sol,eval]=rosenbrockMin(sol,options)
x1=sol(1);
x2=sol(2);
r1=0.1;
r2=0.8;
g1=x1-2*x2+1;
g2=x1.^2/4-x2.^2+1;
if(g1>=0)&(g2>=0)
eval=(x1-2).^2+(x2-1).^2;
else
eval=(x1-2).^2+(x2-1).^2+r1*g1+r2*g2;
end
eval=-eval;
变成调用主程序ga,m如下:
bounds=ones(2,1)*[-1,1];
[x,endPop,bestSols,trace]=ga(bounds,'rosenbrockMin');
x
bestSols
plot(trace(:,1),-trace(:,3),'b-',trace(:,1),-trace(:,2),'r-')
xlabel('Generation','fontsize',14);
ylabel('Fitness','fontsize',14);
运行出来的结果是
x =
1 1 -1
bestSols =
1.0000 0.8961 0.8664 -1.2364
2.0000 0.9489 0.9557 -1.1067
3.0000 1.0000 1.0000 -1.0000
100.0000 1.0000 1.0000 -1.0000
可是人家得出的结果是
x=[1 1]
eval(x)=1 g1(x)=0 g2(x)=0.25
同样的程序为什么结果不同呢,求解