optaplanner得分哪些约束不满足

时间:2014-09-04 12:40:44

标签: java drools optaplanner

我正在探索optaplanner,我发现它给了我一个最好的解决方案以及一些得分值,如-4Hard / -3hard。

我希望获得有关此分数的更多信息,例如列出在给定解决方案中不满足的硬约束和软约束,以便用户能够稍微更改约束以获得更好的解决方案。

是否有可能在optaplanner中,如果可以,怎么样?

1 个答案:

答案 0 :(得分:0)

您的硬/软分数取决于您的实施。

从Optaplanner中的示例中获取 CloudBalancingEasyScoreCalculator see docs)。 你看到分数实际上是累积的总和。 Optaplanner没有机会知道该总和中考虑的每个约束的细节。 无处定义一组约束。我们只是将它们作为全球目标收集起来。

解决方案1 ​​:在这种情况下,解决方案是在计算分数时跟踪自己不受尊重的约束。

在同一个例子中,您可以在此处插入此处理:

        // Hard constraints

        int cpuPowerAvailable = computer.getCpuPower() - cpuPowerUsage;

        if (cpuPowerAvailable < 0) {

            hardScore += cpuPowerAvailable;

            cloudbalance.trackUnrespectedHardConstraint(...)


        }

而不是

        // Hard constraints

        int cpuPowerAvailable = computer.getCpuPower() - cpuPowerUsage;

        if (cpuPowerAvailable < 0) {

            hardScore += cpuPowerAvailable;

        }

我没有根据您的需要探索可能是解决方案2 的Drools得分配置。

希望这有帮助。

ThePolyscope.com