| 查看: 842 | 回复: 5 | |||
[求助]
矩阵的问题
|
|
我做遗传算法,看的别人的程序运行是正确的,可是自己同样的就出现了错误。 就是这段程序,就是select被赋值了,但是在下一行时select(y1(2*p-1),q)却显示的是空矩阵,请问是什么原因呢? [ Last edited by xiegangmai on 2011-7-5 at 09:38 ] |
» 猜你喜欢
一志愿河北工业大学0817化工278分求调剂
已经有15人回复
085601材料工程找调剂
已经有15人回复
材料与化工272求调剂
已经有15人回复
085600 286分 材料求调剂
已经有10人回复
南京大学化学调剂
已经有14人回复
一志愿北京工业大学,324分求调剂
已经有6人回复
求调剂
已经有5人回复
281求调剂
已经有6人回复
26申博自荐
已经有6人回复
一志愿哈尔滨工业大学材料与化工方向336分
已经有10人回复
|
2楼2011-07-05 11:07:32
信彼南山
木虫 (著名写手)
- 应助: 33 (小学生)
- 金币: 4142.9
- 散金: 1221
- 红花: 16
- 帖子: 1178
- 在线: 233.5小时
- 虫号: 1133529
- 注册: 2010-10-27
- 专业: 导航、制导与传感技术
3楼2011-07-05 15:25:07
4楼2011-07-05 20:17:46
|
function [out]=my_function(input) clear all; clc; popsize=10; codel=4; G=30; tic s=sprintf('程序正在运行中,请稍等......'); %要优化的是y(k)=b1*y(k-1)+2*y(k-2)+a1*u(k-1)+a2*u(k-2)的b1,b2,a1,a2这四个参数,已知 disp(s); popu=2*rand(popsize,codel)-1 %初始化种群 evo_pop=zeros(popsize-1,codel); %要进化的种群 select=zeros(popsize-1,codel); %选择的种群 cross=zeros(popsize-1,codel); %交叉的种群 mutation=zeros(popsize-1,codel); %变异的种群 Trace=zeros(G,codel); %最优轨迹 for kg=1:G time(kg)=kg; %进化到第几代 for i=1:popsize %开始循环 xi=popu(i, ;x1=xi(1); x2=xi(2); x3=xi(3); x4=xi(4); c=0; b1=[-0.1;0;0.2;0.5;1;1.8;2.1;4.2;6.6;11]; a1=[0.1;0.2;0.1;0.2;0.1;0.2;0.1;0.2;0;0.4] ; for k=3:10 f=[b1(k)-x1*b1(k-1)-x2*b1(k-2)-x3*a1(k-1)-x4*a1(k-2)]^2; 把它定 为目标函数 c=c+f; Msum(i,k)=c; Mfit(i,k)=1/c; %适应度函数 end fitness=Mfit(:,k) Bestf(i)=max(fitness) end [Oderf,index]=sort(Bestf,'descend') %排列 Bestfitness=Oderf(1) bfi(kg)=Bestfitness best_gene=popu(index(1), ![]() [max_fitness,index1]=max(fitness) [min_fitness,index2]=min(fitness) vari=mean(popu(index1, );popu(index2, =popu(index1,![]() fitness(index2, =fitness(index1,![]() index(index1)=0 index=nonzeros(index) evo_popu=popu(index, ![]() evo_fitness=fitness(index, ![]() evo_popsize=popsize-1 fitness_sum=sum(evo_fitness) fitscore=evo_fitness/fitness_sum fitnesscum=cumsum(fitscore) r=rand(1,evo_popsize) selected=sum(fitnesscum*ones(1,popsize-1) ![]() 这就是上面的程序,你能否帮我看看,十分感谢 |
5楼2011-07-05 20:39:34
|
function [out]=my_function(input) clear all; clc; popsize=10; codel=4; G=30; tic s=sprintf('程序正在运行中,请稍等......'); %要优化的是y(k)=b1*y(k-1)+2*y(k-2)+a1*u(k-1)+a2*u(k-2)的b1,b2,a1,a2这四个参数,已知 disp(s); popu=2*rand(popsize,codel)-1 %初始化种群 evo_pop=zeros(popsize-1,codel); %要进化的种群 select=zeros(popsize-1,codel); %选择的种群 cross=zeros(popsize-1,codel); %交叉的种群 mutation=zeros(popsize-1,codel); %变异的种群 Trace=zeros(G,codel); %最优轨迹 for kg=1:G time(kg)=kg; %进化到第几代 for i=1:popsize %开始循环 xi=popu(i, ;x1=xi(1); x2=xi(2); x3=xi(3); x4=xi(4); c=0; b1=[-0.1;0;0.2;0.5;1;1.8;2.1;4.2;6.6;11]; a1=[0.1;0.2;0.1;0.2;0.1;0.2;0.1;0.2;0;0.4] ; for k=3:10 f=[b1(k)-x1*b1(k-1)-x2*b1(k-2)-x3*a1(k-1)-x4*a1(k-2)]^2; 把它定 为目标函数 c=c+f; Msum(i,k)=c; Mfit(i,k)=1/c; %适应度函数 end fitness=Mfit(:,k) Bestf(i)=max(fitness) end [Oderf,index]=sort(Bestf,'descend') %排列 Bestfitness=Oderf(1) bfi(kg)=Bestfitness best_gene=popu(index(1), ![]() [max_fitness,index1]=max(fitness) [min_fitness,index2]=min(fitness) vari=mean(popu(index1, );popu(index2, =popu(index1,![]() fitness(index2, =fitness(index1,![]() index(index1)=0 index=nonzeros(index) evo_popu=popu(index, ![]() evo_fitness=fitness(index, ![]() evo_popsize=popsize-1 fitness_sum=sum(evo_fitness) fitscore=evo_fitness/fitness_sum fitnesscum=cumsum(fitscore) r=rand(1,evo_popsize) selected=sum(fitnesscum*ones(1,popsize-1) ![]() 这就是上面的程序,你能否帮我看看,十分感谢 |
6楼2011-07-05 20:40:46














回复此楼
;