如何通过optaplanner引擎获得没有任何硬分的解决方案

问题描述 投票:0回答:2

我们想找到一种方法来避免optaplanner解决方案的硬分。

在我们的企业优化项目中,不允许生成具有严格约束分数的解决方案。但是实际上,由Optaplanner引擎生成的结果始终具有一些带有硬约束分数的分配。当发生这种情况时,我们将尝试将实体当前移至空分配,而不是清除硬分。

上述解决方案似乎不是避免硬分的正确方法。还有其他方法可以实现该目标吗?

java optaplanner
2个回答
1
投票

如果没有任何算法配置示例和问题示例,很难知道问题出在哪里,但希望能有所帮助。

如果您在解决方案中遇到违反约束的情况(这就是硬分),则意味着找不到可行的解决方案。这可能有两个原因:*首先没有可行的解决方案*优化算法的步速不够快或终止会导致终止时间过早。

取决于当前的问题,很难验证是否存在可行的解决方案,但是可以起草一个简单的问题,由Optaplanner解决,以验证它是否可以找到它(应该可以)。如果不是,则建模或目标函数出了点问题。

对于第二点,最好的前进方法是跟踪分数计算速度,最好应每秒几千步(> 1000 / sec)。如果不进行调查,请使用DroolsIncrementalScoreCalculator进行禁食计算。另外,使用基准测试器模块查看您的算法是否配置正确。

最后,您有本地搜索阶段吗?与具有局部搜索阶段的解决方案相比,仅在建设阶段更可能返回不可行的解决方案。


0
投票

在用户指南中,请参见过度约束的计划。您可以按照nullable=true的方法对每个空作业分配中等分的罚款。另请参阅K88的答案。

© www.soinside.com 2019 - 2024. All rights reserved.