MoveIteratorFactory 目的

MoveIteratorFactory purpose

正如我从文档中了解到的,"MoveIteratorFactory" 的目的是生成每一步都需要执行的动作。

"getSize" 方法的移动子集有多大?

"createOriginalMoveIterator"和"createRandomMoveIterator"有什么区别?

"createOriginalMoveIterator" 是否会在后面的步骤中再次生成移动的子集?

我想在这两种情况下,移动都是在调用方法 next() 之后(在其创建之后)完成的?

如果需要生成很多动作,这是否是最佳解决方案,因为在我的情况下,首先需要生成很多动作,更不用说播放了?

是否有更智能的方法来根据解决方案的当前状态在每一步生成自定义组合动作?

MoveIteratorFactoryMoveListFactory 的更复杂的替代方法,它通过创建 Iterator<Move> 来避免创建 List<Move>。在Java 8个术语中,它与Stream有很多共同点。

假设您有 50k 个实体和 10k 个值。所有 changemoves 的列表将包含 500m 元素,导致内存问题和每次步骤开始时严重的延迟损失。为避免这种情况,它会在 Iterator.next()hasNext().

及时 生成 changemove

为了使其正常工作,如果迭代器需要 selects 随机移动(= 可能 select 相同的移动两次,它需要有不同的行为,这不是随机的,它是随机的! ) 或原始订单。

假设您有 50k 个实体和 10k 个值。所有 changemoves 的列表将包含 500m 元素,导致内存问题和每次步骤开始时严重的延迟损失。为了避免这种情况,它会及时生成一个 changemove,在 Iterator.next() 或 hasNext()