声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1064|回复: 1

[综合讨论] 遗传算法工具箱的编码问题(请教)

[复制链接]
发表于 2006-6-20 21:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
<P>目标函数代码如下:<BR>function [sol,eval]=f553(sol,options)<BR>m(1)=sol(1);<BR>m(2)=sol(2);<BR>m(3)=sol(3);</P>
<P>q=[0.01 0.05 0.10 0.18;0.08 0.02 0.15 0.12;0.04 0.05 0.20 0.10];<BR>g1=51-(m(1)+3).^2+m(2).^2+m(3).^2;<BR>g2=20*sum(m+exp(-m))-120;<BR>g3=20*sum(m.*exp(-m/4))-65;</P>
<P>if((g1&gt;=0)&amp;(g2&gt;=0)&amp;(g3&gt;=0))<BR> multi=1;<BR> for i=1:3<BR>  summ=0;<BR>  for j=2:4<BR>   summ=summ+q(i,j).^(m(i)+1);<BR>  end<BR>  multi=multi*(1-(1-(1-q(i,1)).^(m(i)+1))-summ);<BR> end<BR> eval=multi;<BR>else<BR> eval=-500;<BR>end<BR>求解部分代码如下:<BR>bounds=[1 4;1 7;1 7];<BR>options=[1e-6 1];<BR>initPop=initializega(80,bounds,'f553',[],options);<BR>[p,endPop,bestSols,trace]=ga(bounds,'f553',[],initPop,[1e-6 1 1],'maxGenTerm',100,'normGeomSelect',[0.08],['arithXover'],[2],'nonUnifMutation',[2 5 3])<BR>%[p,endPop,bestSols,trace]=ga(bounds,'f553')<BR>为什么options里面的1设为2 运行会出错而并不会得到二进制的初始种群呢.请指教~,非常感谢!</P>
回复
分享到:

使用道具 举报

 楼主| 发表于 2006-6-20 21:44 | 显示全部楼层
<P>还有一个疑问 如果我要得到一个最优向量,向量中每一位的值为0或者1,应该在程序中怎么表示?<BR>我是把initializega子程序中的options(2)=1部分改为<BR>xZomeLength = numVars+1;   %Length of string is numVar + fit<BR>  pop         = zeros(num,xZomeLength);  %Allocate the new population<BR>  pop(:,1:numVars)=(ones(num,1)*rng).*(rand(num,numVars))+...<BR>    (ones(num,1)*bounds(:,1)');<BR>  for i=1:1:numVars<BR>      for j=1:1:num<BR>          if pop(j,i)&lt;=0.5<BR>            pop(j,i)=0;<BR>          else<BR>            pop(j,i)=1;<BR>          end<BR>      end<BR>  end<BR>但是不知道在ga程序中其他部分如交叉,变异等部分是不是不能保证每一位的值为0或者1.<BR>应该怎么改啊</P>[em06][em06]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-25 11:15 , Processed in 0.058455 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表