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

时间:2015-06-19 18:53:07

标签: optaplanner

强文 Hello 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最终版本中执行此操作?我只看到了获得最佳解决方案的方法。我确信我错过了什么,只是不确定是什么。任何指针都将非常感激。

感谢您的时间,

爱丽丝

1 个答案:

答案 0 :(得分:1)

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

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

每次找到更好的解决方案时,都会调用bestSolutionChanged方法。从这里你需要克隆(我认为,Geoffrey会更清楚)解决方案并将其保存到列表中(可能保留最后5个最佳解决方案或者什么?我会检查克隆过程需要多长时间,因为该方法应该返回很快。