我想创造一种" smart"我的VRP(时间窗口)基于示例的应用程序的MoveIteratorFactory。此移动工厂应返回一个迭代器,该迭代器将在每次基于当前解决方案状态的CompositeMove时生成。
MoveIteratorFactory是否可以创建一个基于当前解决方案状态生成移动的迭代器?
AFAIK MoveIteratorFactory的方法接受ScoreDirector对象,似乎返回的Iterator应使用从ScoreDirector的工作解决方案中检索到的实例生成移动。但这些实例是在求解器过程正在进行时更新的吗?当 hasNext 和 next 方法被调用时,他们是否根据当前工作解决方案状态设置了所有计划变量?或者迭代器是否应该有一个带有ScoreDirector实例的字段,并使用每次从ScoreDirector检索的实例生成移动?
答案 0 :(得分:1)
是的,只需确保cacheType
不是PHASE
或更高(默认情况下它没问题,因为默认情况下它是JUST_IN_TIME
)。参见文档第7章。
在每个步骤开始时,它会调用createRandomMoveIterator()
,这可以考虑当前workingSolution
的状态。