【问题标题】:Enforce constraints in genetic algorithm with DEAP使用 DEAP 在遗传算法中实施约束
【发布时间】:2013-11-30 14:09:23
【问题描述】:

我正在尝试使用带有 DEAP 的遗传算法来解决与背包问题没有太大区别的优化问题。染色体由整数向量表示,约束是向量的总和必须等于某个数字 X。在适应度评估中处理这个问题似乎效率低下,因为很少有交叉/突变会导致有一个向量的和正好等于 X。

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

【问题讨论】:

    标签: python optimization evolutionary-algorithm pyevolve


    【解决方案1】:

    解决此问题的一种方法是在变体级别。您可以使用将无效个体重新映射到有效域的装饰器来装饰您最喜欢的变体方案。

    在使用进化算法时,有多种方法可以有效地处理数值约束。我向您推荐 Coello Coello 的以下论文,该论文是对可以使用的不同方法的广泛调查。 DEAP 文档有一些code examples

    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-1http://www.sciencedirect.com/science/article/pii/S0045782501003231

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

    另外,请注意我是DEAP 开发人员,也可以在mailing list 上找到答案。

    【讨论】:

    • 提供一个简单的代码示例将使这个答案变得更好!
    猜你喜欢
    • 1970-01-01
    • 2018-01-18
    • 2023-01-09
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2018-06-25
    • 2016-01-13
    相关资源
    最近更新 更多