我想爲我的基於VRP(時間窗口)的示例應用程序創建一種「智能」MoveIteratorFactory。這個移動工廠應該返回一個Iterator,它會在每次基於當前解決方案狀態生成CompositeMove時生成。MoveIteratorFactory可以根據當前的工作解決方案生成移動嗎?
MoveIteratorFactory是否可以創建一個迭代器,以便根據當前解決方案狀態生成移動?
AFAIK MoveIteratorFactory的方法接受ScoreDirector對象,看起來返回的Iterator應該使用從ScoreDirector的工作解決方案中檢索到的實例生成移動。但是在求解過程正在進行時這些實例是否被更新?他們是否具有根據當前工作解決方案狀態設置的所有計劃變量,何時hasNext和下一個方法被調用?還是應該迭代器有一個帶有ScoreDirector實例的字段,並且使用每次從ScoreDirector檢索到的實例生成移動?
非常感謝!我只想知道每次爲每個步驟重新分配一個迭代器實例時分配的影響(性能)是什麼? –
可忽略的,如果它確實在列表中創建所有移動(否則你可能會使用MoveListFactory) –