用DEAP实现遗传算法的约束

 青青河边羊 发布于 2023-02-13 17:28

我正在尝试使用DEAP遗传算法来解决一个与背包问题不同的优化问题.染色体由整数向量表示,约束条件是向量之和必须等于某个数字X.在适应性评估中处理这个问题似乎效率低,因为相对较少的交叉/突变会导致有一个总和恰好等于X的向量.

相反,似乎我应该将交叉和突变重新映射到有限的可能解决方案中.我应该在DEAP中使用装饰器来实现这个,还是有人知道更好的方法来解决这个问题?有没有人有这种情况的示例代码的链接?

1 个回答
  • 处理此问题的一种方法是在变化级别.您可以使用装饰器修饰您最喜欢的变体方案,该装饰器将无效个体重新映射到有效域.

    在使用进化算法时,有多种方法可以有效地处理数值约束.我推荐Coello Coello的以下论文,这是对可以使用的不同方法的广泛调查.DEAP文档有一些代码示例.

    Carlos A Coello Coello,与进化算法一起使用的理论和数值约束处理技术:现状调查,应用力学与工程中的计算机方法,第191卷,第11-12期,2002年1月4日,第1245-1287页,ISSN 0045-7825,http: //dx.doi.org/10.1016/S0045-7825(01)00323-1 .http://www.sciencedirect.com/science/article/pii/S0045782501003231

    请注意,重新映射的后果应考虑在内,因为交叉和突变应将遗传物质从父母转移到后代.如果您的映射会使值过多,则结果可能或多或少是随机搜索.也许您应该尝试定义产生较少无效个体的特定问题的运算符.

    另外,请注意我是DEAP开发人员,也可以在邮件列表中找到答案.

    2023-02-13 17:31 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有