演化计算--论文.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
演化计算--论文

用郭涛算法计算多目标优化问题 本文将用一个实际的例子讲述如何用郭涛算法计算多目标优化问题,在这里,先简单的介绍一下郭涛算法。 郭涛算法的思想十分简单,但是却是一种很好的演化算法,它对于求解有多个最有解(即有多个“山峰”供爬山的情况)以及求解多目标优化问题是一种十分有效的算法。下面给出算法的描述。 GT Algorithm: Begin P(0):=initialize(X1(0), X2(0), X3(0),…,Xn(0)); t:=0; //xi∈D evaluate f(D); XBest:=arg( f(Xi)); XWorst:=arg( f(Xi)); While |f(XBest)-f(XWorst)|≥εdo //多父体杂交 Select m points Xz’, X2’ ,Xm’ from p(t) randomly X’:=∑ajxj ; //其中使得∑aj=1;-0.5≤aj≤1.5; If f(x’)f(XWorst) then XWorst:= x’; Evaluate XBest:=arg( f(Xi)); XWorst:=arg( f(Xi)); t:=t+1; end While; end; 在本算法中,可以作出两点改进的地方: 可以连续选择S个点,一次淘汰掉S个点,这样有利于提高效率。 m可以在|f(XBest)-f(XWorst)|≤ε and m3 时,每次减1,减少网的大小,以提高效率。 本文中举出的例子是一个简单的多目标优化问题,题目是这样的: min(f1(x),f2(x)),-1《x《3 , 0《x《2 其中 { 本例子采用Delphi 5实现通过,其程序界面如图一所示: 图一 其种群大小由用户控制,多目标优化采用给f1、f2加权的办法取总的函数的最小值,权值亦由用户来确定,运行结果由界面可以直接看出。 下面的图二、图三、图四、图五是几种权值和种群大小下的运行结果。 图二 图三 图四 图五 由以上运行结果可以看出,在种群数为20、30左右时,运行速度教快,为100左右时,稍微慢一点(不过也是较快的,基本感觉不出来)。在种群数较大,比如为100左右时,相当容易得到精确解,种群数小时,要得到精确解就相对难一点。 下面这个过程是给出郭涛算法中所给出的aj,本例子中只是利用了两个aj,所以本过程是相当简单的。程序段如下: procedure assigna(var a:array of real); //本过程通过随机函数给a数组赋值, //使得∑a[i]=1并且-0.5=a[i]=1.5 label ReAssign; begin ReAssign: a[0]:=(random(200) - 50)/100; a[1]:=1 - a[0]; if (a[1]1.5) or (a[1] -0.5) then goto ReAssign; end; 在下面的主体程序中,需要说明的是,本例子中,只是取出两个父体利用郭涛算法进行杂交,杂交所用系数即为上面的过程所求出的a[0]、a[1]。两个父体的选择上,一个采用已经求出的使总函数最好(即总函数值最小)的x值,即为XBEST,一个则在所有的样本中随机选取。由于郭涛算法本身教为简单,加上如上说明和程序段中的注释,下面的程序就不难理解了。 procedure TForm1. ComputeClick(Sender: TObject); var i,m,f1,f2,iBest,iWorst:integer; a:array[0..1] of real; p:array of real; s:string; x,x1,x2,f,fBest,fWorst,XBest,XWorst:real; label ReAssign; begin m:=StrToInt(Edit3.Text); SetLength(p,m); for i:=0 to m -1 do begin p[i]:=random(200)/100; end; f1:=StrToInt(Edit1.Text); f2:=StrToInt(Edit2.Text); //以下选出fWorst,fBest,XBest,XWorst; fBest:=f1*p[0]*p[0]+f2*(p[0]-2)*(p[0]-2); fWorst:=fBe

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档