使用 optaplanner 返回调度问题的多个解决方案

Returning multiple solutions to a scheduling issue with optaplanner

强文本您好Optaplanner专家,

我是 OptaPlanner 的新手,所以请原谅任何幼稚或基本的问题。我用它来安排:

set of jobs, A, B and C, which can be completed by 5 resources, say Will, Jane, Roy, Tom, Jeff. 

这些工作中的每一个都可以由 5 种资源中的任何一种来完成。会有一些算法根据软约束来计算谁是最合适的,但我还没有。现在,我只需要想出多种解决方案,比如

1. Will - A, Roy - B and Jeff - C
2. Roy - B, Tom - B and Jane - C
... and so on

在 OptaPlanner 6.2.0 Final 版本中有没有办法做到这一点?我只看到一种获得最佳解决方案的方法。我确定我错过了什么,只是不确定是什么。任何指针将不胜感激。

感谢您的宝贵时间,

爱丽丝

可能有更好的解决方案,但我建议通过以下方式向您的求解器添加 SolverEventListener

solver.addEventListener(new SolverEventListener<Solution>() {
    @Override
    public void bestSolutionChanged(BestSolutionChangedEvent<Solution> event) {
        // TODO Auto-generated method stub  
    }
});

每次找到更好的解决方案时都会调用 bestSolutionChanged 方法。从这里你需要克隆(我想,Geoffrey 会更清楚)解决方案并将其保存到列表中(也许保留最后 5 个最佳解决方案之类的?我会检查克隆过程需要多长时间,因为该方法应该 return 相当快。