《java个人见解.docxVIP

  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文档。上传文档
查看更多
《java个人见解

关于遗传算法的详细原理以及具体的定义这里就不多介绍,想了解的可以自行百度,下面就简单介绍下自己对遗传算法的理解,本文对基因的编码采用二进制规则。 算法思想: ????? 遗传算法参照达尔文的进化论,认为物种都是向好的方向去发展(适者生存),因此可以认为到足够的代数之后,得到的最值可实际的最值很接近。 算法步骤: 1)随机产生一个种群; 2)计算种群的适应度、最好适应度、最差适应度、平均适应度等指标; 3)验证种群代数是否达到自己设置的阈值,如果达到结束计算,否则继续下一步计算; 4)采用转盘赌法选择可以产生下一代的父代,产生下一代种群(种群中个体数量不变); 5)种群发生基因突变; 6)重复2、3、4、5步。 算法实现-基因部分 1、种群个体(这里认为是染色体),在个体中,我们为这个个体添加两个属性,个体的基因和基因对应的适应度(函数值)。 HYPERLINK /article/79015.htm ? 1 2 3 4 public class Chromosome {? ??private boolean[] gene;//基因序列? ??private double score;//对应的函数得分? } 2、随机生成基因序列,基因的每一个位置是0还是1,这里采用完全随机的方式实现。 HYPERLINK /article/79015.htm ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public Chromosome(int size) {? ??if (size = 0) {? ????return;? ??}? ??initGeneSize(size);? ??for (int i = 0; i size; i++) {? ????gene[i] = Math.random() = 0.5;? ??}? }? ??? private void initGeneSize(int size) {? ??if (size = 0) {? ????return;? ??}? ??gene = new boolean[size];? } 3、把基因转化为对应的值,比如101对应的数字是5,这里采用位运算来实现。 HYPERLINK /article/79015.htm ? 1 2 3 4 5 6 7 8 9 10 11 12 13 public int getNum() {? ??if (gene == null) {? ????return 0;? ??}? ??int num = 0;? ??for (boolean bool : gene) {? ????num = 1;? ????if (bool) {? ??????num += 1;? ????}? ??}? ??return num;? } 4、基因发生变异,对于变异的位置这里完全采取随机的方式实现,变异原则是由1变为0,0变为1。 HYPERLINK /article/79015.htm ? 1 2 3 4 5 6 7 8 9 10 11 public void mutation(int num) {? ??//允许变异? ??int size = gene.length;? ??for (int i = 0; i num; i++) {? ????//寻找变异位置? ????int at = ((int) (Math.random() * size)) % size;? ????//变异后的值? ????boolean bool = !gene[at];? ????gene[at] = bool;? ??}? } 5、克隆基因,用于产生下一代,这一步就是将已存在的基因copy一份。 HYPERLINK /article/79015.htm ? 1 2 3 4 5 6 7 8 9 10 11 public static Chromosome clone(final Chromosome c) {? ??if (c == null || c.gene == null) {? ????return null;? ??}? ??Chromosome copy = new Chromosome();? ??copy.initGeneSize(c.gene.length);? ??for (int i = 0; i c.gene.length; i++) {? ????copy.gene[i] = c.gene[i];? ??}? ??return copy;? } 6、父母双方产生下一代,这里两个个体产生两个个体子代,具体

文档评论(0)

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

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

1亿VIP精品文档

相关文档