MoveIteratorFactory 是否可以根据当前工作解决方案生成移动?

Is it possible for a MoveIteratorFactory to generate moves based on a current working solution?

我想为我的基于 VRP(时间窗口)示例的应用程序创建一种 "smart" MoveIteratorFactory。这个移动工厂应该 return 一个迭代器,每次都会根据当前的解决方案状态生成一个 CompositeMove。

MoveIteratorFactory 是否可以创建一个迭代器来根据当前解决方案状态生成移动?

AFAIK MoveIteratorFactory 的方法接受一个 ScoreDirector 对象,returned 迭代器似乎应该使用从 ScoreDirector 的工作解决方案中检索到的实例生成移动。但是这些实例是否在求解器过程中被更新?当调用 hasNextnext 方法时,它们是否根据当前工作解决方案状态设置了所有计划变量?或者迭代器应该有一个带有 ScoreDirector 实例的字段,并使用每次从 ScoreDirector 检索的实例生成移动?

是的,只需确保 cacheType 不是 PHASE 或更高(默认情况下没问题,因为默认情况下是 JUST_IN_TIME)。请参阅文档第 7 章。

每一步开始都会调用createRandomMoveIterator(),可以考虑到当前workingSolution的状态。