如何解决Optaplanner:给定MoveSelector的isdoable方法
我的任务是创建家具的加工顺序。在要生产的家具中,单个家具可能会出现多次。如果OptaPlanner在计划表中交换彼此相同的两件家具,则不会使Makespan最小化。因此,我想编写自己的isdoable方法来防止此类移动。但是在文档中,我找不到此处的处理方法。我已经修改了等式和哈希方法来识别两件相同的家具。但是,OptaPlanner会执行此类操作。 也许你们当中的一个知道如何解决这个问题
解决方法
在实施自定义移动之前,我建议您找出哪种移动会产生这种不良结果。请参见logging configuration,将日志记录级别切换为“跟踪”,以使OptaPlanner打印有关每次移动的信息。
library(dplyr)
mtcars %>%
rowwise() %>%
mutate(any_value= if(any(c_across(all_of(my_vars)) == 4)) 'purple' else 'green')
和ChangeMove
已经都只允许更改(或交换)不同值的移动。
这是实现isMoveDoable
的文档,应该可以满足您的需求。
https://docs.optaplanner.org/7.41.0.Final/optaplanner-docs/html_single/index.html#theInterfaceMove
由于您未实现自定义移动,因此可以将Entity Selection Filter用于现有的OptaPlanner移动。
如果您使用禁忌搜索,则可以指定Entity Tabu以避免在连续移动中修改同一实体。
根据您的其他评论,我认为选择过滤器是更好的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。