有什么更好的方法可以在OptaPlanner中添加约束

时间:2018-11-10 20:08:58

标签: optaplanner

我正在为优化问题构建OptaPlan解决方案。

我有一个List<Integer>叫权重 这些是我模型中唯一的planning variable,所有其他都是阴影。

我想确保权重之和(weights[0] + weights[1] + weights[2]... = 1000),而权重(shadow)以外的变量将确保什么是最好的解决方案(使用SimpleScore)。

使用简单的EasyScoreCalculator可能会产生大量搜索我的问题的信息。我认为每次weights[0] + weights[1] + weights[2]... != 1000的惩罚分数都是一种未优化(缓慢)的方法。

什么是最好的方法?

1 个答案:

答案 0 :(得分:1)

您应该惩罚该总和与1000之间的差。因此,例如,如果重量总和为920,则惩罚-80。如果重量为1019,则罚-19。

看看云平衡问题,我怀疑您只需要对包含@PlanningVariable布尔值等于true的项的所有权重求和即可。