我正在为优化问题构建OptaPlan解决方案。
我有一个List<Integer>
叫权重
这些是我模型中唯一的planning variable
,所有其他都是阴影。
我想确保权重之和(weights[0] + weights[1] + weights[2]... = 1000)
,而权重(shadow
)以外的变量将确保什么是最好的解决方案(使用SimpleScore
)。
使用简单的EasyScoreCalculator
可能会产生大量搜索我的问题的信息。我认为每次weights[0] + weights[1] + weights[2]... != 1000
的惩罚分数都是一种未优化(缓慢)的方法。
什么是最好的方法?
答案 0 :(得分:1)
您应该惩罚该总和与1000之间的差。因此,例如,如果重量总和为920,则惩罚-80。如果重量为1019,则罚-19。
看看云平衡问题,我怀疑您只需要对包含@PlanningVariable布尔值等于true的项的所有权重求和即可。