Benchmark a real-time planning algorithm using Optaplanner
我正在尝试对实时规划算法进行基准测试,但似乎无法找到如何做到这一点,这是否支持Optaplanner?
我已成功使用我的问题的离线版本运行基准测试。 我已经实现了SolutionFileIO来读取我的问题实例并将它们转换为解决方案。 我已阅读文档并看到与基准测试相关的视频但无法找到我正在寻找的内容。
或者,我可以使用自己的框架运行实时算法,但这需要我手动定义我想要运行的所有Optaplanner启发式(这在使用矩阵设置时非常麻烦)。 有没有办法基于基准xml定义实例化解算器(在Java中)? 这样我就可以在使用Optaplanner基准定义的同时运行自己的实时基准测试。
-
通过实时规划,我们可以假设你的意思是你正在解雇ProblemFactChange吗?
-
我实际上没有使用ProblemFactChange实现它(但可能已经这样做了)。 在问题发生变化时,我将停止算法并使用新的问题定义启动它,包括最新的最佳时间表。 所以基本上它是一个温暖的重启。
-
听起来你应该使用ProblemFactChange因为它可能更有效/更快。 你不是的任何理由?
-
是的,我知道这一点,谢谢。 我不是(还)那样做,因为当前的设置需要较少的实现,我的模拟器RinSim已经收集了所有必要的信息。 如果此设置不够快,我肯定会考虑使用ProblemFactChange。
尚未支持同时触发ProblemFactChange事件(=实时计划)的基准配置,投票支持此jira。 您希望基准配置看起来如何?
要从基准配置中重用求解器,将PlannerBenchmark转换为PlannerBenchmarkRunner并使用getPlannerBenchmarkResult().getSolverBenchmarkResultList(),但这将放弃一堆业务流程(包括报告)。 相反,如果你能够成功覆盖SubSingleBenchmarkResult,你就不会失去那个编排(但你的黑客会更深)。
无论你最终做什么,都要分享你的基准配置的样子,因为当我们为未来的OptaPlanner版本实现它时,这将给我们灵感。
-
我刚刚尝试了你描述的第一个hack,它似乎有效:final SolverConfig configFromBenchmark = .. //using code above然后创建一个空工厂:final SolverFactory factory = SolverFactory.createEmpty();,添加config:factory.getSolverConfig().inherit(configFromBenchmark);并使用factory.buildSolver();创建一个求解器实例