| 查看: 553 | 回复: 3 | |||
[求助]
迭代 更新 粒子群算法 最近金币只有这么多了 希望有好心人能帮我看看 感激不尽
|
|
for i=1:10 for s=1:14 vv(1,s,i)=-4+8*rand();%产生一个随机速度,这个之所以没有用vv(i,s)是因为后面还得嵌套另外一个程序里面,所以就用的i个行向量。 end end for i=1:10 for s=1:14 if vv(1,s,i)<-4 vv(1,s,i)=-4 end if vv(1,s,i)>4 vv(1,s,i)=4 end end end for i=1:10 g=0; while g==0 for s=1:14 ss=1/(1+exp(-vv(1,s,i))); if ss>rand() hx(1,s,i)=1; else hx(1,s,i)=0; end end if choose(hx,i)==1 %这个是对hx进行判断,在下面有附录 g=1; x(1,:,i)=hx(1,:,i); %根据前面产生的速度产生相应的X end end end %适应值函数 for i=1:10 fitness(i)= sum(15000*x(1,9:14,i).*[9 9 28 28 30 30])-sum([14393 14852 14618 14354 478 425 545 476 17 109 8 111 75 12].*[x(1,1,i)*(x(1,5,i)*sum([x(1,9,i) x(1,11,i) x(1,13,i)].*[9 28 30])+x(1,7,i)*sum([x(1,10,i) x(1,12,i) x(1,14,i)].*[9 28 30])) x(1,2,i)*(x(1,5,i)*sum([x(1,9,i) x(1,11,i) x(1,13,i)].*[9 28 30])+x(1,7,i)*sum([x(1,10,i) x(1,12,i) x(1,14,i)].*[9 28 30])) x(1,3,i)*(x(1,6,i)*sum([x(1,9,i) x(1,11,i) x(1,13,i)].*[9 28 30])+x(1,8,i)*sum([x(1,10,i) x(1,12,i) x(1,14,i)].*[9 28 30])) x(1,4,i)*(x(1,6,i)*sum([x(1,9,i) x(1,11,i) x(1,13,i)].*[9 28 30])+x(1,8,i)*sum([x(1,10,i) x(1,12,i) x(1,14,i)].*[9 28 30])) x(1,5,i)*sum([x(1,9,i) x(1,11,i) x(1,13,i)].*[9 28 30]) x(1,6,i)*sum([x(1,9,i) x(1,11,i) x(1,13,i)].*[9 28 30]) x(1,7,i)*sum([x(1,10,i) x(1,12,i) x(1,14,i)].*[9 28 30]) x(1,8)*sum([x(1,10,i) x(1,12,i) x(1,14,i)].*[9 28 30]) x(1,9,i)*9 x(1,10,i)*9 x(1,11,i)*28 x(1,12,i)*28 x(1,13,i)*30 x(1,14,i)*30]) end %产生最初适应值 for i=1:10 g_bestfitness=fitness(1); %令全局最优解就等于第一颗粒子的适应值函数 gbestx(1, =x(1,:,1); end for i=1:10 if g_bestfitness<fitness(i) g_bestfitness=fitness(i) gbestx(1, =x(1,:,i) end pbestx(1,:,i)=x(1,:,i) pfitness(i) =fitness(i) end %接下来我想进行迭代,可是就不会弄了,为什么感觉运行的时候程序就一直在那产生vv(1,s,i)呢?这部分我想实现,就是对vv(1,s,i)进行更新,然后得到相应的X,接着带到适应值函数中得到新的X,比较新旧的适应值看是否更新,一直迭代多少 步后终止?可是我就不会实现? for t=1:2 for i=1:10 g=0 while g==0 for s=1:14 vv(1,s,i)=vv(1,s,i)+2*rand*(pbestx(1,s,i)-x(1,s,i))+2*rand*(gbestx(1,s)-x(1,s,i)) if vv(1,s,i)<-4 vv(1,s,i)=-4 end if vv(1,s,i)>4 vv(1,s,i)=4 end ss(1,s,i)=1/(1+exp(-vv(1,s,i))) if ss>rand hx(1,s,i)=1; else hx(1,s,i)=0; end end if choose(hx,i)==1 g=1 x(1,:,i)=hx(1,:,i) end if fitness(i)>pfitness(i) pfitness(i)=fitness(i) pbestx=x(1,:,i) end if pfitness(i)>g_bestfitness gbestx=x(1,:,i) end end end pbest(2)=g_bestfitness end 其中: function flag = choose(x,i) if sum(x(1,1:2,i),2)<=1&&sum(x(1,3:4,i),2)<=1&&sum(x(1,5:6,i),2)<=1&&sum(x(1,7:8,i),2)<=1&&sum(x(1,9:10,i),2)<=1&&sum(x(1,11:12,i),2)<=1&&sum(x(1,13:14,i),2)<=1&&inf*(x(1,5,i)+x(1,6,i))>=x(1,9,i)+2*x(1,11,i)+3*x(1,13,i)&&inf*(x(1,7,i)+x(1,8,i))>=x(1,10,i)+2*x(1,12,i)+3*x(1,14,i)&&inf*(x(1,1,i)+x(1,2,i))>=x(1,5,i)*(x(1,9,i)+2*x(1,11,i)+3*x(1,13,i))+x(1,6,i)*(x(1,9,i)+2*x(1,11,i)+3*x(1,13,i))&&inf*(x(1,3,i)+x(1,4,i))>=x(1,6,i)*(x(1,10,i)+2*x(1,12,i)+3*x(1,14,i))+x(1,8,i)*(x(1,10,i)+2*x(1,12,i)+3*x(1,14,i)) flag = 1; else flag = 0; end |
» 猜你喜欢
三甲基碘化亚砜的氧化反应
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
孩子确诊有中度注意力缺陷
已经有12人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
论文投稿,期刊推荐
已经有4人回复
硕士和导师闹得不愉快
已经有13人回复
» 本主题相关价值贴推荐,对您同样有帮助:
请教粒子群优化算法和最小二乘法的优缺点!
已经有4人回复
2楼2014-05-21 23:32:46
3楼2014-05-21 23:34:48
4楼2014-05-22 08:32:35














=x(1,:,1);
回复此楼