本人刚学MATLAB遗传算法工具箱,请大家帮我看一下这个简单一元函数优化错误的原因及怎样修改。 10

closeall;figure;fplot('variable*sin(10*pi*variable)+2.0',[-1,2]);%画出函数原图NIND=40;%个体数目... close all;
figure;
fplot('variable*sin(10*pi*variable)+2.0',[-1,2]);%画出函数原图
NIND=40;%个体数目
MAXGEN=25;%最大遗传代数
PRECI=20;%变量的二进制位数,
GGAP=0.9;%代沟
trace=zeros(2,MAXGEN);%创建寻优结果的初始值——2行25列的零矩阵
FieldD=[20;-1;2;1;0;1;1];%区域描述器,子串长度20,下界-1,上界2,二进制编码,算术刻度,包含边界。将子串取值范围锁定在-1至2。
Chrom=crtbp(NIND,PRECI);%创建一个大小为Nind(行,个体数目)*PRECI(列,个体位数)的随机二元矩阵。创建初始种群
gen=0;%代计数器
variable=bs2rv(Chrom,FieldD);%计算初始种群的十进制转换,产生40个介于-1到2之间的值。得到初始种群的十进制值。
ObjV=variable.*sin(10*pi*variable)+2.0;%计算目标函数值40个
while gen<MAXGEN,%若未达到最大遗传代数
FitnV=ranking(-ObjV);%分配适应度值,采用的是-ObjV,按照个体的目标值Objv由大到小的顺序对他们进行排序,ObjV值大者适应度高,使目标函数最大化。缺省默认适应度压差2,线性评估。
SelCh=select('sus',Chrom,FitnV,GGAP);%选择,从种群中选择个体数等于种群个体数目NIND*代沟GGAP。列向量FitnV包含个体的适应度值,适应度值表明了每个个体被选择的预期概率。
SelCh=recombin('xovsp',SelCh,0.7);%重组:采用单点交叉,交叉概率0.7
SelCh=mut(SelCh);%变异:NewChrom=mut(OldChrom,Pm),此处变异概率Pm缺省,默认值为0.7/染色体结构长度Lind。
variable=bs2rv(SelCh,FieldD);%子代个体的十进制转换,得到子代个体的十进制值。
ObjVSel=variable.*sin(10*pi*variable)+2.0;%计算子代的目标函数值
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入子代的新种群。因为使用了代沟,子代数量少于前种群,因此使用恢复函数reins.基于适应度的恢复用Selch中的个体代替Chrom中最不适应的个体。
gen=gen+1;%代计数器增加
%输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的序号
[Y,I]=max(ObjV),hold on;
plot(variable(I),Y,'bo');%遗传算法性能跟踪
trace(1,gen)=max(ObjV);%trace矩阵中第一行为每次迭代后的最优解
trace(2,gen)=sum(ObjV)/length(ObjV);%%trace矩阵中第二行为每次迭代后的最优解的均值。每次迭代后的最优解和解的均值存放到trace中.这个遗传优化的结果包含在矩阵Objv中,决策变量的值为variable(I).length:数组长度(即行数或列数中的较大值),因Obiv为一列值,故取行数,也即个体数。
end
variable=bs2rv(Chrom,FieldD);%最优个体的十进制转换
hold on ,grid;
plot(variable',ObjV','b*');
figure;
plot(trace(1,:)');%trace矩阵中第一行为每次迭代后的最优解
hold on;
plot(trace(2,:)','-.');grid;
legend('解的变化','种群均值的变化')
展开
 我来答
百度网友33e7e72
2015-04-14
知道答主
回答量:2
采纳率:0%
帮助的人:2.2万
展开全部
由于有代沟,所以plot中的variable是36*20的,而I对应的ObjV是40*1的,所以I可能取40个值,但variable只有36行,所以出错。在“gen=gen+1;%代计数器增加”后加variable=bs2rv(Chrom,FieldD),你调试一下试试。
钺联昱M
2015-04-13 · TA获得超过706个赞
知道小有建树答主
回答量:1789
采纳率:33%
帮助的人:888万
展开全部
先去掉 plot(variable(I),Y,'bo');%遗传算法性能跟踪
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式