matlab z=x^2+y^2求Z的最大值.X属于(-1,2) Y属于(0,2)用遗传算法

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/30 06:44:43
matlab z=x^2+y^2求Z的最大值.X属于(-1,2) Y属于(0,2)用遗传算法

matlab z=x^2+y^2求Z的最大值.X属于(-1,2) Y属于(0,2)用遗传算法
matlab z=x^2+y^2求Z的最大值.X属于(-1,2) Y属于(0,2)
用遗传算法

matlab z=x^2+y^2求Z的最大值.X属于(-1,2) Y属于(0,2)用遗传算法
matlab遗传法求解,(注意楼主不能直接把下面的程序直接粘贴在matlab里面,注意汉英的标点符号去表,其次是看你的metlab是不是精简版,有没有那些指定的小程序)
为简化程序,这里采用设定函数f(x1,x2)=X1^2+X2^2,这样方便些;把x,y分别换成x1,x2指的是
1,定义函数
function eval=f(sol)
numv =size(sol,2);
x=sol(1:numv);
eval= X1^2+X2^2
2.定义适应度函数fitness
function [sol,eval]=fitness(sol,options)
numv=size(sol,2)-1
x=sol(1:numv);
eval=f(x);
eval=-eval;
3,用遗传算法求解
bound=ones[-1,2]*[0,2];
%生成初始种群,大小为10
initpop=initializega(10,bounds,'finess');
[p,endpop,bestsols]=ga(bounds,'fitness',[],...
initpop,[1e-6 0 0 ],...
'maxGenTerm',1000,...
'normGeomSelect',[0.08],..
['simpleXover'],[0.3],...
'binaryMutation',[0.1]);

> x=linspace(-1,2,200);
>> y=linspace(0,2,200);
>> z=x.*x+y.*y;
>> max(z)
ans =
8

晚上回去给你弄。

没有最大值,是不是题目错了?