2

我正在从事我的最后一年项目,我正在开发一种用于时间表优化的遗传算法。目前进展相当顺利,因为我正在生成代表我的课程时间表的随机染色体。我设计了我的函数适应度函数以及潜在的约束,此时我被困在约束的实际权重上。

我使用以下函数作为我的适应度函数:

1/1 + (Ci*Wci)

如 Ci 是约束 i 的违规量,Wci 是约束 i 的权重。

显然,我需要将硬约束的权重高于软约束。

我想知道 any1 以前使用过这种技术吗?这些重量值有推荐的范围吗?

4

1 回答 1

0

如果您只是将惩罚添加到个人当前的适应度值中,那么算法可能会优化解决方案而不会最小化惩罚。如果算法可以将适应值降低到比惩罚更高的程度,则解决方案会变得更好。在使用惩罚时,除了优化质量之外,您还应该将搜索指向可行区域。

我建议为您添加约束违规量的所有不可行解决方案假设一个恒定但非常糟糕的适应度值。例如,在您当前的人群中目标最差的个人可能是一个足够的基值。这样做的好处是您可以将所有解决方案按一个顺序组合在一起:不可行的解决方案只会在它们违反约束的程度方面相互比较,所有可行的解决方案都将与它们在全球范围内的好坏进行比较将是可行性与不可行性。

如果您不这样做,那么您将在您的素质范围内混合不可行和可行的解决方案。

编辑:我也认为你的健身功能有问题。您可能缺少括号。

于 2012-11-21T13:01:51.603 回答