matlab编写遗传算法时约束条件如何处理?%目标函数function f=Objmax(x,y,m,n)f=(0.5*((0.2437+2.44)*x+(0.1483+2.44)*y+(0.0666+2.44)*m+(0.1494+2.44)*n))-...(0.5*((0.0223*x.*x)+(0.0193*x.*y)+(0.0276*x.*m)+(0.0492*x.*n)+(0.0193*y.*x)+(0.040
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/14 15:10:49
matlab编写遗传算法时约束条件如何处理?%目标函数function f=Objmax(x,y,m,n)f=(0.5*((0.2437+2.44)*x+(0.1483+2.44)*y+(0.0666+2.44)*m+(0.1494+2.44)*n))-...(0.5*((0.0223*x.*x)+(0.0193*x.*y)+(0.0276*x.*m)+(0.0492*x.*n)+(0.0193*y.*x)+(0.040
matlab编写遗传算法时约束条件如何处理?
%目标函数
function f=Objmax(x,y,m,n)
f=(0.5*((0.2437+2.44)*x+(0.1483+2.44)*y+(0.0666+2.44)*m+(0.1494+2.44)*n))-...
(0.5*((0.0223*x.*x)+(0.0193*x.*y)+(0.0276*x.*m)+(0.0492*x.*n)+(0.0193*y.*x)+(0.0407*y.*y)+.
(0.0490*y.*m)+(0.0148*y.*n)+(0.02276*m.*x)+(0.0490*m.*y)+(0.0624*m.*m)+(0.0292*m.*n)+...
(0.0492*n.*x)+(0.0148*n.*y)+(0.0292*n.*m)+(0.1451*n.*n)));
%遗传算法
>> figure(1); %定义遗传算法参数
>> NIND=40; %个体数目
>> MAXGEN=500; %最大遗传代数
>> NVAR=4; %变量维数
>> PRECI=25; %变量的二进制位数
>> GGAP=0.9; %代沟
>> trace=zeros(MAXGEN,2); %追踪
>> FieldD=[rep([PRECI],[1,NVAR]);rep([0;1],[1,NVAR]);rep([1;0;1;1],[1,NVAR])]; %建立区域描述器,标准二进制编码,包含边界
>> Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群
>> gen=0;
>> x=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换
>> ObjV=Objmax(x(:,1),x(:,2),x(:,3),x(:,4));
>> while gen> figure(2);
>> plot(trace(:,1)');hold on;
>> plot(trace(:,2)','-.');grid;
>> legend('解的变化','种群均值的变化')
>> display(x(:,1));
>> display(x(:,2));
>> display(x(:,3));
>> display(x(:,4));
使目标函数中的x+y+m+n=1,该如何实现?最好有代码,
matlab编写遗传算法时约束条件如何处理?%目标函数function f=Objmax(x,y,m,n)f=(0.5*((0.2437+2.44)*x+(0.1483+2.44)*y+(0.0666+2.44)*m+(0.1494+2.44)*n))-...(0.5*((0.0223*x.*x)+(0.0193*x.*y)+(0.0276*x.*m)+(0.0492*x.*n)+(0.0193*y.*x)+(0.040
可以作为惩罚函数 比如 和距离1 越大 那么累加到适应度上的数值也就反向越大