正如我从文档中了解到的那样,“MoveIteratorFactory”的目的是生成每一步都需要执行的 Action 。
“getSize”方法的移动子集有多大?
“createOriginalMoveIterator”和“createRandomMoveIterator”有什么区别?
“createOriginalMoveIterator”是否会在后面的步骤中再次生成移动的子集?
我猜在这两种情况下,移动都是在调用方法 next() 之后(在其创建之后)完成的?
如果需要生成很多 Action ,这是否是最佳解决方案,因为在我的情况下,首先需要生成很多 Action ,更不用说完成了?
是否有更智能的方法来根据解决方案的当前状态在每一步生成自定义组合 Action ?
请您参考如下方法:
MoveIteratorFactory
是 MoveListFactory
的更复杂替代方案这避免了创建 List<Move>
通过创建 Iterator<Move>
反而。在 Java 8 术语中,它与 Stream
有很多共同点。 .
假设您有 5 万个实体和 1 万个值。所有 changemoves 的列表将包含 500m 元素,导致内存问题和每次步骤开始时严重的延迟损失。为避免这种情况,它会在 Iterator.next()
处及时 生成一个 changemove。或 hasNext()
.
为了使其正常工作,如果迭代器需要随机选择移动(= 可能选择相同的移动两次,这不是随机的,它是随机的!)或原始顺序,它需要表现不同。