我正在完成我的最后一年项目,我正在开发一种用于时间表优化的遗传算法。由于我正在制作代表我课程时间表的随机染色体,所以当下进展相当顺利。我有我的功能健身功能设计以及潜在的约束,在我坚持我的约束的实际权重的那一刻。
我正在使用以下功能作为我的健身功能:
1/1 +(Ci * Wci)
因为在Ci中,约束i和Wci的违反量是约束i的加权。
显然,我需要对硬约束进行加权,而不是软约束。
我想知道之前有没有使用过这种技术,是否有推荐使用这些重量值的范围?
答案 0 :(得分:0)
如果您只是将惩罚添加到个人的当前适应值中,那么算法可以优化解决方案而不会最小化惩罚。如果算法可以将适应度值降低到高于惩罚的程度,则解决方案变得更好。在使用惩罚时,除了优化质量外,还应将搜索指向可行区域。
我建议对所有不可行的解决方案假设一个常量但非常差的适应值,并向其添加约束违规量。例如。当前人口中目标最差的个人可能是足够的基础价值。这样做的好处是,您可以将所有解决方案整合在一起:不可行的解决方案只会在违反约束条件的情况下相互比较,所有可行的解决方案都将与它们的完整性进行比较,并在全球范围内进行比较将是可行性与不可行性。
如果你不这样做,那么你在整个品质范围内混合了不可行和可行的解决方案。
编辑:我也认为您的健身功能有问题。你可能错过了括号。