matlab搞不懂哪里错了,望大神帮忙看一下 5

%f(x)=11*sin(6x)+7*cos(5x)x∈[0,2*pi]%2.8主程序%遗传算法主程序clearclfpopsize=20;%设置初始参数,群体大小chr... % f(x)=11*sin(6x)+7*cos(5x) x∈[0,2*pi]
% 2.8 主程序
%遗传算法主程序
clear
clf
popsize=20; %设置初始参数,群体大小
chromlength=8; %字符串长度(个体长度),染色体长度
pc=0.8; %设置交叉概率,本例中交叉概率是定值,若想设置变化的交叉概率可用表达式表示,或从写一个
%交叉概率函数,例如用神经网络训练得到的值作为交叉概率
pm=0.01; %设置变异概率,同理也可设置为变化的
pop=initpop(popsize,chromlength); %运行初始化函数,随机产生初始群体
for i=1:20%20为迭代次数
[objvalue]=calobjvalue(pop);%计算目标函数
fitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度
[newpop]=selection(pop,fitvalue); %复制 错误!!!
[newpop]=crossover(pop,pc); %交叉 错误!!!
[newpop]=mutation(pop,pc);%变异
[bestindividual,bestfit]=best(pop,fitvalue);%求出群体中适应值最大的个体及其适应值
y(i)=max(bestfit); 错误!!!
n(i)=i; 错误!!!
pop5=bestindividual;
x(i)=decodechrom(pop5,1,chromlength)*10/1023; 错误!!!
pop=newpop;
end
fplot('11*sin(6*x)+7*cos(5*x)',[0 2*pi])
grid on
hold on
plot(x,y,'r*')
hold off
展开
 我来答
haojunld
2015-04-16 · TA获得超过189个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:57.3万
展开全部
你的子函数没有啊,其中y(i)是个明显的错误,i在matlab里就是指虚单位,你可发用ii代替,上面的两个错误你要看一下函数的格式,怎么连续现行都赋值给了同一输出变量
追问
上面两个错误只要把其中两个newpop换成不一样的就好了吧,下面的可以告诉我怎么改么,子函数怎么弄,这只是一个主程序,还有好几个子程序,谢谢。
追答
这个子程序没有是没法运行的,子函数可以百度一个。后面的两个问题就是不要用i母,这是个复数单位,属于系统字,改成别的,比如ii
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式