在OptaPlanner中添加约束什么是更好的



我正在为优化问题构建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。

最新更新