gpt4 book ai didi

python - 使用 DEAP 在遗传算法中实现约束

转载 作者:行者123 更新时间:2023-12-03 16:29:57 34 4
gpt4 key购买 nike

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

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

最佳答案

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

在使用进化算法时,有多种方法可以有效地处理数值约束。我向您推荐 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-1 . http://www.sciencedirect.com/science/article/pii/S0045782501003231

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

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

关于python - 使用 DEAP 在遗传算法中实现约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20301206/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com