我以前使用过MOEA 框架,它知道约束的概念。也就是说,问题的解决方案可能具有良好的适应度,但不可行。例如,在处理背包问题时,物品的特定组合可能会带来高利润,但它们的重量超过了背包的容量。相应的适应度函数将包括以下行:
// Set the fitness (=> profit) of the solution (=> knapsack).
solution.setObjective(0, profit)
// Set the constrain (=> 0.0 if OK, , otherwise the distance to the boundary).
solution.setConstraint(0, (weight <= capacity) ? 0.0 : weight - capacity)
在多目标背包问题的情况下的另一个示例是不允许一个背包使用已经在另一个背包中使用的物品的约束。
Jenetics有类似的东西吗?或者我如何将约束编码为适应度函数的一部分(或其他地方)?