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