24小时热门版块排行榜    

查看: 715  |  回复: 2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

shu_fyh

新虫 (初入文坛)

[求助] 求大神帮忙用matlab写一个关于遗传算法的小程序

本人matlab刚学习不久,写的程序无法运行,求大神帮忙修改至可以运行
目标函数:VRRm=0.2355-0.637*10-4x1+1.85875*10-4x2+0.82225*10-2x3-0.1715x4-1.6725*10-6x1*x2+0.966925*10-4x1*x3+0.403*10-4x2*x3-0.471*10-2x3*x4
1.种群生成
pop_size:种群数量
chromosome:染色体(每组染色体即代表一个解)
r:[0,1]间的随机数
j:不同堆垛方案所决定的决定变量(stckopile length、stockpile height、stacker speed、stockpile type)
xupp、xlow分别表示各个变量的上下限
过程:for i=1,pop_size
      chromosomei=xj=(rij*(xuppj-xlowj))+xlowj
      End
种群选择(轮盘赌)
过程:for i=1,pop_size
      E(vi)=a(1-a)i-1
         end
      if i=0
      then q0=0
      else
      qi=
      endif
      generate  a  random  number  r  between [0,qpop_size]
      if qi-1<r<qi
          then Vi is slected
      endif
      continute untill pop_size reached
交叉和变异
Pc:交叉概率
for i=1,pop_size
generate a random number ri between [0,1]
if ri<Pc,
then Vi is selected as a parent qj
end if
clear i
clear j
if j is odd
then qj is removed
end if
Q=Q(randperm(numel(q)))
generate a random number r between [0,1]
for i=1,j
then xi=r*Qi+(1-r)*Qi+j/2
   xi+j/2=(1-r)*Qi+r*Qi+j/2
End
Pm:变异概率
generate a random number ri between [0,1]
if ri<Pm,
then Vi is selected as a parent qj
end if
for i=1,j
xi=qi+M*d
end
每一组方案的可行性分析
generate a random number, ra
sum=1.
for j=1, jvar-1
xj = (ra*(xuppj– xlowj))+xlowj
sum=sum*xj
end
sp=(cap /sum)**(1.0 /(nvari-1))
for m=1,jvar-1
xm=xm*sp
if (xm>xlowmr.and.xm<xuppm)feasible
otherwise unfeasible and go to generate a number, ra
end
continue until population-size is reached
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shu_fyh

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by chfyh at 2013-11-11 10:02:37
你好,我已经写好了,可以发你邮箱,咱们私聊

多谢帮助!
3楼2013-11-11 10:03:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

chfyh

银虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
shu_fyh: 金币+30, ★★★★★最佳答案 2013-11-11 10:03:38
你好,我已经写好了,可以发你邮箱,咱们私聊
加油!
2楼2013-11-11 10:02:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见