matlab遗传算法错误求指正>> %主程序:用遗传算法求解y=200*exp(-0.05*x).*sin(x)在[-2,2]区间上的最大值>> clear all;>> close all;>> global BitLength>> global boundsbegin>> global boundsend>> bounds=[-2,2];%一维自变量的取

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/08 17:12:50
matlab遗传算法错误求指正>> %主程序:用遗传算法求解y=200*exp(-0.05*x).*sin(x)在[-2,2]区间上的最大值>> clear all;>> close all;>> global BitLength>> global boundsbegin>> global boundsend>> bounds=[-2,2];%一维自变量的取
xVKOV+D!jC0U GpMRD3tQ!a#@BQ!MCΪDZodU]Urs9y\&b傽ڮW%zW5j5òKk'ssKm,n~os5Փ@JN{O( hōO5{F{SSmE'R\4%D^"xR"(O RExa\EYk:9֍^lPu}rA$㔌ܫr0C6%D%>. pͳQg;0_ZP2$>[Z:H_f2Ζ^okryXvAlQ:izpCi ,ЍDeUmh[XHKR'6O{ٲŒr$ ZQXՋGN'~ 9`?cZ"P"?/hsMM,_Bɘ%Sb؊gl$I@ř݅r.*׏~Ү6b}$>"Đ S_ n9d,D*Pjj,R T,)TQtkQG|>7EBy7+sbf Lw  _#۽cm7^ˍ+]Nf N \SR ̄{vov-VcY$ʾLae(; T1yX4@p}Um>|2:jc%Kbrsl3P(#Ie ? nG3Lo2OHtݱ7P59FFX5gV]mWj-YloO!v|H;,MlrZӲ8EʆMؑ~@cVǴAt|_n"s 4a* HI]@` OA6!Ӷ%{>#\Uj{jepjmpZ[9蕮z;UvZ 5Nh>|,'HKrXlHжZOUy|z-U~ӊZX@Hx3'176 ۥ "R{m+Q;) H8S¯W JpՀ*

matlab遗传算法错误求指正>> %主程序:用遗传算法求解y=200*exp(-0.05*x).*sin(x)在[-2,2]区间上的最大值>> clear all;>> close all;>> global BitLength>> global boundsbegin>> global boundsend>> bounds=[-2,2];%一维自变量的取
matlab遗传算法错误求指正
>> %主程序:用遗传算法求解y=200*exp(-0.05*x).*sin(x)在[-2,2]区间上的最大值
>> clear all;
>> close all;
>> global BitLength
>> global boundsbegin
>> global boundsend
>> bounds=[-2,2];%一维自变量的取值范围
>> precision=0.0001;%运算精度
>> boundsbegin=bounds(:,1);
>> boundsend=bounds(:,2);
>> %计算如果满足求解精度至少需要多长的染色体
>> BitLength=ceil(log2((boundsend-boundsbegin)'./precision));
>> popsize=50;%初始种群大小
>> Generationnmax=12;%最大代数
>> pcrossover=0.90;%交配概率
>> pmutation=0.09;%变异概率
>> %产生初始种群
>> population=round(rand(popsize,BitLength));
>> %计算适应度,返回适应度Fitvalue和累积概率cumsump
>> [Fitvalue,cumsump]=fitnessfun(population);
到这一步就错误了,原因如下:
In an assignment A(I) = B,the number of elements in B and I must be the same.
Error in fitnessfun (line 11) Fitvalue(i)=targetfun(xx);%计算函数值,即适应度
下面是各子程序:
%子程序:计算适应度函数
function [Fitvalue,cumsump]=fitnessfun(population);
global BitLength
global boundsbegin
global boundsend
popsize=size(population,1);%有popsize个个体
for i=1:popsize
x=transform2to10(population(i,:));%将二进制转换为十进制
%转化为[-2,2]区间的实数
xx=boundsbegin+x*(boundsend-boundsbegin)/(power((boundsend),BitLength)-1);
Fitvalue(i)=targetfun(xx);%计算函数值,即适应度
end
%给适应度函数加上一个大小合理的数以便保证种群适应值为正数
Fitvalue=Fitvalue'+230;
%计算选择概率
fsum=sum(Fitvalue);
Pperpopulation=Fitvalue/fsum;
%计算累积概率
cumsump(1)=Pperpopulation(1);
for i=2:popsize
cumsump(i)=cumsump(i-1)+Pperpopulation(i);
end
cumsump=cumsump';
%子程序:对于优化最大值或极大值函数问题,目标函数可以作为适应度函数
function y=targetfun(x);%目标函数
y=200*exp(-0.05*x).*sin(x);
我是新手,实在看不太懂,怎样改才能对呀?

matlab遗传算法错误求指正>> %主程序:用遗传算法求解y=200*exp(-0.05*x).*sin(x)在[-2,2]区间上的最大值>> clear all;>> close all;>> global BitLength>> global boundsbegin>> global boundsend>> bounds=[-2,2];%一维自变量的取
fitvalue的size和xx的size不匹配,你的xx是一列元素,得到的fitvalue(i)也是一列元素,x是一个数,targetfun(x)得到的值是一个数~