- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
写了这么一个小程序来计算函数f(x,y,z)=xyzsin(xyz)的最
最近学习遗传算法,写了这么一个小程序来计算函数 f(x,y,z) = xyz*sin(xyz)的最大值,这段程序经过小小改变就可以适应其他的函数最大值求解问题首先介绍一下遗传算法,遗传算法就是模拟自然界中物竞天择,适者生存的法则,通过对解空间进行进化从而求得最优方案的方法,遗传算法的好处在于,即使算法中的某些参数不起作用了,整个算法还是可以正常地工作,也就是说,整体种群的走向是越来越好的遗传算法的关键内容包括:1. 染色体??? 首先对优化问题的解进行编码,编码后的一个解被称为一个染色体,组成染色体的元素称为基因。比如对于上面那个函数,我们就可以用24位的2进制串进行编码,首先8位2进制数代表x,中间为y,最后为z,x,y,z都属于[0,255]2. 交配??? 将两个染色体进行交叉的操作被称为交配,交配可能提高染色体的适应值,也可能降低其适应值。通常交配是以一定的概率发生的。在程序中,我们通过随机交换两个染色体的一些位来体现。3. 适应函数??? 我们需要使用一个函数来表现解的优异程度,这个函数只要可以反映出解的优劣即可,没必要很精确。适应函数就类似我们生存的环境,环境评估我们的生存能力,评估值高的更容易存活。4. 变异??? 有时候种群中的某些个体会发生变异的现象,变异一般是以很小的概率发生的,但是变异增加了种群进化的不确定性,也让种群中的个体类型更加丰富。在程序中,我们用随机变化某一位来体现。算法的流程为:1.初始化种群2.进行第一轮评估3.交配4.变异5.评估6.重新选择种群7.若未达到结束条件,转3随机数生成器:
package?edu.zsu.zouang.util;import?java.util.Random;public?class?Randomizer?{????private?int?lower;????private?int?upper;????????private?static?Random?random?=?new?Random();????????public?Randomizer(int?lower,?int?upper){????????if(upper?=?lower){????????????throw?new?IllegalStateException(Upper?is?smaller?than?lower!);????????}????????this.lower?=?lower;????????this.upper?=?upper;????}????public?Double?nextDouble(){????????return?Double.valueOf(lower?+?(upper?-?lower)?*?random.nextDouble());????}????????public?Integer?nextInteger(){????????return?Integer.valueOf(lower?+random.nextInt(upper?-?lower));????}????????public?char[]?nextBitArray(int?length){????????if(length?=?0){????????????throw?new?IllegalStateException(Length?is?less?than?ZERO!);????????}????????char[]?temp?=?new?char[length];????????for(int?i?=?0;?i??length?;?i++){????????????temp[i]?=?random.nextBoolean()???1?:?0;????????}????????return?temp;????}}
染色体:
package?edu.zsu.zouang.inheritence;import?java.util.Arrays;import?edu.zsu.zouang.util.Randomizer;public?class?Chromosome?implements?Cloneable{????private?double?fitness?=?-1;?//代表未计算适应函数????????private?double?select?=?-1;?//?选择概率????????private?char[]?chromo;?//染色体串????????private?Randomizer?random;????????private?int?
文档评论(0)