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

时间:2017-09-25 22:57:09

标签: optaplanner

我想创造一种" smart"我的VRP(时间窗口)基于示例的应用程序的MoveIteratorFactory。此移动工厂应返回一个迭代器,该迭代器将在每次基于当前解决方案状态的CompositeMove时生成。

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

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

1 个答案:

答案 0 :(得分:1)

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

在每个步骤开始时,它会调用createRandomMoveIterator(),这可以考虑当前workingSolution的状态。