【问题标题】:Benchmark a real-time planning algorithm using Optaplanner使用 Optaplanner 对实时规划算法进行基准测试
【发布时间】:2016-01-14 17:28:05
【问题描述】:

我正在尝试对实时规划算法进行基准测试,但似乎无法找到方法,Optaplanner 是否支持此功能?

我已使用我的问题的离线版本成功运行基准测试。我已经实现了SolutionFileIO,它读取我的问题实例并将它们转换为解决方案。我已阅读文档并看到与基准测试相关的video,但找不到我要查找的内容。

或者,我可以使用自己的框架运行实时算法,但这需要我手动定义我想要运行的所有 Optaplanner 启发式算法(使用矩阵设置时这很麻烦)。有没有办法根据基准 xml 定义实例化求解器(在 Java 中)?这将允许我在仍然使用 Optaplanner 基准定义的同时运行自己的实时基准。

【问题讨论】:

  • 有了实时计划,我们可以假设你的意思是你正在向它开火吗?
  • 我实际上并没有使用ProblemFactChange 实现它(但本可以这样做)。在问题发生变化时,我将停止算法并使用新的问题定义(包括最新的最佳时间表)启动它。所以本质上它是一个热重启。
  • 听起来你应该使用ProblemFactChange,因为这可能更有效/更快。你有什么理由不这样做?
  • 是的,我知道,谢谢。我(还)没有这样做,因为当前的设置需要较少的实现,我的模拟器RinSim 已经收集了所有必要的信息。如果这个设置不够快,我肯定会考虑使用ProblemFactChange

标签: benchmarking optaplanner


【解决方案1】:

尚不支持同时触发ProblemFactChange 事件(= 实时计划)的基准配置vote for this jira您希望基准配置的外观如何?

要从基准配置中重用求解器,请将PlannerBenchmark 转换为PlannerBenchmarkRunner 并使用getPlannerBenchmarkResult().getSolverBenchmarkResultList(),但这将放弃大量编排(包括报告)。相反,如果您能够成功覆盖 SubSingleBenchmarkResult,您就不会失去该编排(但您的 hack 会更深)。

无论您最终做了什么,请分享您对基准配置的看法,因为这将为我们在未来的 OptaPlanner 版本中实施它时提供灵感。

【讨论】:

  • 我刚刚尝试了您描述的第一个 hack,它似乎可以工作:final SolverConfig configFromBenchmark = .. //using code above 然后创建一个空工厂:final SolverFactory factory = SolverFactory.createEmpty();,添加配置:factory.getSolverConfig().inherit(configFromBenchmark); 并创建一个求解器实例使用factory.buildSolver();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-25
相关资源
最近更新 更多