| 查看: 798 | 回复: 5 | ||
[求助]
矩阵的问题
|
|
我做遗传算法,看的别人的程序运行是正确的,可是自己同样的就出现了错误。 就是这段程序,就是select被赋值了,但是在下一行时select(y1(2*p-1),q)却显示的是空矩阵,请问是什么原因呢? [ Last edited by xiegangmai on 2011-7-5 at 09:38 ] |
» 猜你喜欢
存款400万可以在学校里躺平吗
已经有18人回复
国自然申请面上模板最新2026版出了吗?
已经有19人回复
拟解决的关键科学问题还要不要写
已经有7人回复
请教限项目规定
已经有3人回复
基金委咋了?2026年的指南还没有出来?
已经有10人回复
基金申报
已经有6人回复
推荐一本书
已经有13人回复
纳米粒子粒径的测量
已经有8人回复
疑惑?
已经有5人回复
计算机、0854电子信息(085401-058412)调剂
已经有5人回复
|
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













回复此楼
;