写了这么一个小程序来计算函数f(x,y,z)=xyzsin(xyz)的最.docVIP

写了这么一个小程序来计算函数f(x,y,z)=xyzsin(xyz)的最.doc

  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文档。上传文档
查看更多
写了这么一个小程序来计算函数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)

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

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

1亿VIP精品文档

相关文档