首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Optaplanner -实时计划找不到好的解决方案

Optaplanner -实时计划找不到好的解决方案
EN

Stack Overflow用户
提问于 2018-01-26 03:58:37
回答 1查看 292关注 0票数 0

我正在尝试使用实现SolverEventListener和守护程序模式的自定义SolverThread来使用实时计划。

我对插入或删除实体不感兴趣。我只对“更新”它们感兴趣,例如,更改我的PlanningEntityCollectionProperty集合中特定实体的“优先级”。

目前,我正在使用:

代码语言:javascript
运行
复制
scoreDirector.beforeProblemPropertyChanged(entity);
entity.setPriority(newPriority);
scoreDirector.afterProblemPropertyChanged(entity);

似乎执行了求解器,并设法改进了实际的解,但它只在上面花费了几毫秒:

代码语言:javascript
运行
复制
org.optaplanner.core.impl.solver.DefaultSolver: Real-time problem fact changes done: step total (1), new best score (0hard/-100medium/-15soft).
org.optaplanner.core.impl.solver.DefaultSolver: Solving restarted: time spent (152), best score (0hard/-100medium/-15soft), environment mode (REPRODUCIBLE), 

因此,考虑到我的求解器有10秒的UnimprovedSecondsSpentLimit,求解器很快就会停止。因此,第一次执行求解器时,它会在10秒后停止,但在接下来的几次中,它会在几毫秒后停止,并且无法获得良好的解。

我不确定当规划实体改变时是否需要使用"beforeProblemPropertyChanged“,但是我找不到任何替代方法,因为当规划变量改变时会使用"beforeVariableChanged”,对吧?也许optaplanner只是不支持实体中的更新,我需要使用beforeEntityRemoved删除旧的,然后使用beforeEntityAdded重新插入它?

我使用的是BRANCH_AND_BOUND,但是,我已经更改为本地搜索TABU_SEARCH,现在似乎调度程序使用了10秒。然而,它似乎陷入了局部最优,因为即使是非常小的集合(10个实体),它也无法改进解决方案。

谁有实时计划的经验?谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-01-29 18:47:02

“解决重启”总是紧跟在“实时问题事实更改完成”之后不久,因为实时问题事实有效地“停止并重新启动”了求解器。10秒未改进的终止仅在重启后再次开始计数。

调试日志记录(甚至是跟踪)将显示实际发生的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48450943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档