optaplanner - OptaPlanner 无限期重复最后一步
问题描述
我使用 OptaPlanner 7.56 实现了一个类似于 CloudBalancing 的算法。
实际上,我正在使用我用某些条件过滤的 ChangeMoveSelector 并且效果很好。当没有可用的移动时,它会停止并返回最佳解决方案。
<localSearch>
<changeMoveSelector>
<selectionOrder>ORIGINAL</selectionOrder>
<filterClass>...</filterClass>
</changeMoveSelector>
<acceptor>
<acceptorType>HILL_CLIMBING</acceptorType>
</acceptor>
<forager>
<pickEarlyType>NEVER</pickEarlyType>
<acceptedCountLimit>1000</acceptedCountLimit>
</forager>
</localSearch>
但是我尝试添加具有类似过滤器的 PillarChangeMove 并在检查所有可能的移动后,它无限期地重复最后一次移动,并且在一段时间后我收到以下警告Bailing out of neverEnding selector
。
<unionMoveSelector>
<changeMoveSelector>
<selectionOrder>ORIGINAL</selectionOrder>
<filterClass>...</filterClass>
</changeMoveSelector>
<pillarChangeMoveSelector>
<filterClass>...</filterClass>
<subPillarType>NONE</subPillarType>
</pillarChangeMoveSelector>
</unionMoveSelector>
解决方案
我记得我在实施时遇到了同样的问题ChangeMoveSelector
。我通过添加来修复<selectionOrder>ORIGINAL</selectionOrder>
<unionMoveSelector>
<changeMoveSelector>
<selectionOrder>ORIGINAL</selectionOrder>
<filterClass>...</filterClass>
</changeMoveSelector>
<pillarChangeMoveSelector>
<selectionOrder>ORIGINAL</selectionOrder>
<filterClass>...</filterClass>
<subPillarType>NONE</subPillarType>
</pillarChangeMoveSelector>
</unionMoveSelector>
推荐阅读
- java - 为什么 Java 找不到 CLASSPATH 中的类?
- python - 每次出现都要重复的 if 语句
- r - 带有 vcovCL 的 POLR 有序 logit 上的聚集标准错误给出“不一致的参数”错误
- java - SecondaryTable 可以是 OneToMany 关系吗?
- reactjs - 在 Kubernetes Ingress 后面为静态反应应用程序提供服务
- c - C 编程 为什么这段代码显示分段错误(核心转储)?
- function - 封装 Powershell 函数
- c - 未初始化的值是由堆分配链表创建的
- django - 更新操作期间嵌套 AbstractUser 模型失败,“user_id 列中的空值违反非空约束”
- sql - Redshift - 加入两个表时缺少最新日期