实现遗传算法的0-1背包问题..docxVIP

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

实现遗传算法的0-1背包问题求解及其改进学校:学院:专业: 姓名: 学号: 课程名称: 指导老师: 问题陈述0-1背包问题属于组合优化问题的一个例子,求解0-1背包问题的过程可以被视作在很多可行解当中求解一个最优解。01背包问题的一般描述如下:给定n个物品和一个背包,物品i的重量为Wi,其价值为Vi,背包的容量为C。选择合适的物品装入背包,使得背包中装入的物品的总价值最大。注意的一点是,背包内的物品的重量之和不能大于背包的容量C。在选择装入背包的物品时,对每种物品i只有两种选择:装入背包或者不装入背包,即只能将物品i装入背包一次。称此类问题为0/1背包问题。其数学模型为: 0-1背包问题传统的解决方法有动态规划法、分支界限法、回溯法等等。传统的方法不能有效地解决0-1背包问题。遗传算法(Genetic Algorithms)则是一种适合于在大量的可行解中搜索最优(或次优)解的有效算法。二、遗传算法分析与实现1、遗传算法概述遗传算法(Genetic Algorithm)是一类借鉴生物界的进化规律(适者生存,优胜劣汰)演化而来的随机化搜索方法。算法根据问题的目标函数构造一个适值函数,对一个由多个解(每个解对应一个染色体)构成的和种群进行评估、遗传、选择,经多代繁殖,获得适应值最好的个体作为问题的最优解。其特点是具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。遗传算法一般是直接在解空间搜索, 而不像图搜索那样一般是在问题空间搜索, 最后才找到解(如果搜索成功的话)。 遗传算法的搜索随机地始于搜索空间的一个点集, 而不像图搜索那样固定地始于搜索空间的初始节点或终止节点, 所以遗传算法是一种随机搜索算法。 遗传算法总是在寻找优解(最优解或次优解), 而不像图搜索那样并非总是要求优解, 而一般是设法尽快找到解(当然包括优解), 所以遗传算法又是一种优化搜索算法。 遗传算法的搜索过程是从空间的一个点集(种群)到另一个点集(种群)的搜索,而不像图搜索那样一般是从空间的一个点到另一个点地搜索。 因而它实际是一种并行搜索, 适合大规模并行计算, 而且这种种群到种群的搜索有能力跳出局部最优解。 遗传算法的适应性强, 除需知适应度函数外, 几乎不需要其他的先验知识。 遗传算法长于全局搜索, 它不受搜索空间的限制性假设的约束,不要求连续性, 能以很大的概率从离散的、多极值的、 含有噪声的高维问题中找到全局最优解。2、遗传算法流程Step 1 参数设置:在论域空间U上定义一个适应度函数f(x),给定种群规模N,交叉率Pc和变异率Pm,代数T;Step 2 初始种群:随机产生U中的N个染色体s1, s2, …, sN,组成初始种群S={s1, s2, …, sN},置代数计数器t=1;Step 3 计算适应度:S中每个染色体的适应度f() ;Step 4 判断:若终止条件满足,则取S中适应度最大的染色体作为所求结果,算法结束。Step 5 选择-复制:按选择概率P(xi)所决定的选中机会,每次从S中随机选定1个染色体并将其复制,共做N次,然后将复制所得的N个染色体组成群体S1; Step 6 交叉:按交叉率Pc所决定的参加交叉的染色体数c,从S1中随机确定c个染色体,配对进行交叉操作,并用产生的新染色体代替原染色体,得群体S2;Step 7 变异:按变异率Pm所决定的变异次数m,从S2中随机确定m个染色体,分别进行变异操作,并用产生的新染色体代替原染色体,得群体S3;Step 8 更新:将群体S3作为新一代种群,即用S3代替S,t=t+1,转步3;3.程序步骤: 一、 使用基本遗传算法解决0- 1背包问题:1: 打开数据文件2: 设置程序运行主界面3: 调用初始化种群模块3- 1: 按照一定的种群规模和染色体长度以基因为单位用随机产生的0- 1对个体赋值3- 2: 调用计算适应度函数4: 以最大进化代数为循环终止条件开始进行循环4- 1: 调用产生新一代个体的函数4- 1- 1: 调用选择函数4- 1- 2: 调用交叉函数4- 1- 3: 调用变异函数4- 1- 4: 调用计算适应度函数5: 调用计算新一代种群统计数据函数6: 调用输出新一代统计数据函数7: 返回到第四步, 直至循环结束二、 基本遗传算法解决0- 1背包问题存在的不足:1.对于过程中不满足重量限制条件的个体的处理在用基本遗传算法解决0- 1背包问题的时候,在初始化或者交叉变异后可能会产生不满足重量约束条件的伪解,而对于这些伪解,基本遗传算法没有给出一个很好的处理方法,而只是又随机生成了一个满足约束条件的解作

文档评论(0)

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

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

1亿VIP精品文档

相关文档