24小时热门版块排行榜    

查看: 728  |  回复: 3

s1y9shy

铁虫 (小有名气)

[求助] 迭代 更新 粒子群算法 最近金币只有这么多了 希望有好心人能帮我看看 感激不尽

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
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

s1y9shy

铁虫 (小有名气)

我在线~~拜托拜托  我实在了解的不多  都是最近才学的 希望能得到大家的指点  感激不尽
2楼2014-05-21 23:32:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

s1y9shy

铁虫 (小有名气)

为什么感觉就一直在迭代vv(1,s,i)这一步呢  就一直在循环这似的  不知道怎么回事~~
3楼2014-05-21 23:34:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

s1y9shy

铁虫 (小有名气)

首先是初始化,求出i个X的适应值,并在这Xi中找出最好的一个X,定义为pgX,接着开始迭代,更新每个Xi,求出对应的更新的Xi的适应值,首先,比较更新的Xi是不是比原来Xi好,若好就替换掉原来的Xi及其适应值,否则就还是为原来的Xi,将这个更好的Xi定义为pXi,对于每个X自己都会有一个pX。再比较这更新的Xi中的全局最优解是不是好于原来的pgX,若优于原先的最优解,就替换掉pgX,否则就还是为原来的pgX。迭代t次后结束。就是迭代这我不知道怎么实现。如何更显X和PX和pgX有关系。
4楼2014-05-22 08:32:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 s1y9shy 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 0XLacIJUOj8D 2026-08-24 3/150 2026-08-25 01:47 by BZKMTicpDhFj
[硕博家园] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 0XLacIJUOj8D 2026-08-24 6/300 2026-08-25 00:11 by BZKMTicpDhFj
[基金申请] 明天应该可查了!? +5 chengyan1220 2026-08-23 5/250 2026-08-24 23:28 by 我4大白菜
[基金申请] 如果此刻你正在为国基感到焦虑,不妨来听听这首《基金之外》 +7 scalable 2026-08-24 7/350 2026-08-24 23:01 by anata1209
[基金申请] 没有任何消息-是不是就凉了 +7 图啦图啦 2026-08-24 8/400 2026-08-24 22:00 by maomao_da
[论文投稿] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 0XLacIJUOj8D 2026-08-24 3/150 2026-08-24 21:59 by BZKMTicpDhFj
[基金申请] 我面上完蛋了 +9 且听虎啸 2026-08-20 10/500 2026-08-24 20:08 by 苦寒来香
[基金申请] 能否退出参与的面上项目解除限项 +21 koalala 2026-08-24 24/1200 2026-08-24 19:25 by 家与远方
[基金申请] filecode,4个jtjc了 +14 ziyangfang 2026-08-19 17/850 2026-08-24 18:37 by 哈哈蛤?
[基金申请] 2026国自然函评费到账 +17 羊腰板 2026-08-21 19/950 2026-08-24 16:52 by iaeyuan
[基金申请] 估计是周四 +4 archvillain 2026-08-18 4/200 2026-08-24 13:53 by zzuzxg
[基金申请] 放榜前的不淡定 20+4 snowwithsea 2026-08-19 17/850 2026-08-24 10:20 by echo8914667
[基金申请] 什么时候开奖? +10 CrisMessi 2026-08-18 11/550 2026-08-24 06:50 by 开心的小狮子
[教师之家] 跳槽后在研项目怎么办? +5 简单化xn 2026-08-22 10/500 2026-08-23 12:38 by 简单化xn
[基金申请] 今天放榜吗? +15 布布和一二 2026-08-19 16/800 2026-08-23 09:55 by 张春生
[基金申请] 只有每年这种时候来逛逛小木虫 +24 yaoyewhu2008 2026-08-20 26/1300 2026-08-22 17:43 by kammury
[基金申请] 今天基金会出结果吗?20260819 +16 kkkl_v 2026-08-19 17/850 2026-08-22 16:12 by 阿布Abu
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[基金申请] 今天放榜没戏了吧 +9 yuleib84 2026-08-19 11/550 2026-08-21 10:06 by gltch
[基金申请] 基金啊基金 +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
信息提示
请填处理意见