移动迭代器工厂目的



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

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

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

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

我想在这两种情况下,在调用方法next()之后(在其创建之后)之后,移动都会发生?

如果需要生成很多动作,

这是最好的解决方案,因为就我而言,首先需要生成许多动作,更不用说玩了?

是否有更智能的方法可以在基于解决方案当前状态的每个步骤中生成自定义组合移动?

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

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

为了使其正常工作,如果迭代器需要随机选择移动(= 可能会选择两次相同的移动,这不是随机的,它是随机的!)或原始顺序,它需要表现不同。

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

最新更新