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