OptaPlanner 在 CartesianProductMoveSelector 创建的 CompositeMove 上抛出 IllegalStateException

2023-12-06

所以基本上我的问题是,OptaPlanner 抛出这个:

java.lang.IllegalStateException: The entity (...) has a variable (previousEntry) with value (...) which has a sourceVariableName variable (nextEntry) with a value (...) which is not null.
Verify the consistency of your input problem for that sourceVariableName variable.
    at org.optaplanner.core.impl.domain.variable.inverserelation.SingletonInverseVariableListener.insert(SingletonInverseVariableListener.java:72)
    at org.optaplanner.core.impl.domain.variable.inverserelation.SingletonInverseVariableListener.afterVariableChanged(SingletonInverseVariableListener.java:51)
    at org.optaplanner.core.impl.domain.variable.listener.support.VariableListenerSupport.triggerVariableListenersInNotificationQueues(VariableListenerSupport.java:209)
    at org.optaplanner.core.impl.score.director.AbstractScoreDirector.triggerVariableListeners(AbstractScoreDirector.java:259)
    at org.optaplanner.core.impl.heuristic.move.AbstractMove.doMove(AbstractMove.java:36)
    at org.optaplanner.core.impl.heuristic.move.AbstractMove.doMove(AbstractMove.java:30)
    at org.optaplanner.core.impl.heuristic.move.CompositeMove.doMove(CompositeMove.java:108)
    at org.optaplanner.core.impl.heuristic.move.CompositeMove.doMove(CompositeMove.java:37)
    at org.optaplanner.core.impl.score.director.AbstractScoreDirector.doAndProcessMove(AbstractScoreDirector.java:187)
    at org.optaplanner.core.impl.localsearch.decider.LocalSearchDecider.doMove(LocalSearchDecider.java:132)
    at org.optaplanner.core.impl.localsearch.decider.LocalSearchDecider.decideNextStep(LocalSearchDecider.java:116)
    at org.optaplanner.core.impl.localsearch.DefaultLocalSearchPhase.solve(DefaultLocalSearchPhase.java:70)
    at org.optaplanner.core.impl.solver.AbstractSolver.runPhases(AbstractSolver.java:88)
    at org.optaplanner.core.impl.solver.DefaultSolver.solve(DefaultSolver.java:191)

我正在使用这个创建移动:

<cartesianProductMoveSelector>
    <ignoreEmptyChildIterators>true</ignoreEmptyChildIterators>
    <changeMoveSelector/>
    <swapMoveSelector/>
</cartesianProductMoveSelector>

我正在尝试优化一条链,所以我有一个影子变量(nextEntry)对于我的计划变量previousEntry。如果我使用一切正常unionMoveSelector,但现在我想尝试结合我的动作,以便 OptaPlanner 可以摆脱局部最优。我只有 1 个规划变量。

编辑:刚刚更新为7.19.0.Final问题仍然存在...

EDIT2:刚刚使用 FULL_ASSERT 进行了测试并得到了相同的结果,没有cartesianProductMoveSelector我得到一个结果:

Solving ended: time spent (371190), best score (0hard/-31648770soft), score calculation speed (81/sec), phase total (3), environment mode (FULL_ASSERT).

如果我添加cartesianProductMoveSelector我得到完全相同的异常

EDIT3:好吧,我刚刚用 optaplanner (7.17.0.Final) 的 vrp-example 测试了它,并得到了完全相同的异常:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Solving failed.
at org.optaplanner.examples.common.swingui.SolverAndPersistenceFrame$SolveWorker.done(SolverAndPersistenceFrame.java:382)
at javax.swing.SwingWorker$5.run(SwingWorker.java:737)
at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:832)
at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:842)
at javax.swing.Timer.fireActionPerformed(Timer.java:313)
at javax.swing.Timer$DoPostEvent.run(Timer.java:245)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Caused by: java.lang.IllegalStateException: The entity (Customer-7) has a variable (previousStandstill) with value (Customer-33) which has a sourceVariableName variable (nextCustomer) with a value (Customer-5) which is not null.
Verify the consistency of your input problem for that sourceVariableName variable.
at org.optaplanner.core.impl.domain.variable.inverserelation.SingletonInverseVariableListener.insert(SingletonInverseVariableListener.java:72)
at org.optaplanner.core.impl.domain.variable.inverserelation.SingletonInverseVariableListener.afterVariableChanged(SingletonInverseVariableListener.java:51)
at org.optaplanner.core.impl.domain.variable.listener.support.VariableListenerSupport.triggerVariableListenersInNotificationQueues(VariableListenerSupport.java:209)
at org.optaplanner.core.impl.score.director.AbstractScoreDirector.triggerVariableListeners(AbstractScoreDirector.java:261)
at org.optaplanner.core.impl.heuristic.move.AbstractMove.doMove(AbstractMove.java:36)
at org.optaplanner.core.impl.heuristic.move.AbstractMove.doMove(AbstractMove.java:30)
at org.optaplanner.core.impl.heuristic.move.CompositeMove.doMove(CompositeMove.java:108)
at org.optaplanner.core.impl.heuristic.move.CompositeMove.doMove(CompositeMove.java:37)
at org.optaplanner.core.impl.score.director.AbstractScoreDirector.doAndProcessMove(AbstractScoreDirector.java:189)
at org.optaplanner.core.impl.localsearch.decider.LocalSearchDecider.doMove(LocalSearchDecider.java:132)
at org.optaplanner.core.impl.localsearch.decider.LocalSearchDecider.decideNextStep(LocalSearchDecider.java:116)
at org.optaplanner.core.impl.localsearch.DefaultLocalSearchPhase.solve(DefaultLocalSearchPhase.java:70)
at org.optaplanner.core.impl.solver.AbstractSolver.runPhases(AbstractSolver.java:88)
at org.optaplanner.core.impl.solver.DefaultSolver.solve(DefaultSolver.java:191)
at org.optaplanner.examples.common.business.SolutionBusiness.solve(SolutionBusiness.java:329)
at org.optaplanner.examples.common.swingui.SolverAndPersistenceFrame$SolveWorker.doInBackground(SolverAndPersistenceFrame.java:370)
at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at javax.swing.SwingWorker.run(SwingWorker.java:334)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

我将提交问题

EDIT4:可以找到提交的问题here


在使用多个 ChainedChange 和 ChainedSwapMove 创建 CompositeMove 时,也会遇到同样的情况。原因是,您的第一个移动可能会更改在第一个移动之后的移动中操作的 PlanningEntity 的 PlanningValue。虽然移动的创建已经捕获了所有变量和值的状态,但第二个移动预计不再存在计划状态。

例子: 移动前的链:

(一)A->B->C->D

你的综合动作: 1) ChainedChangeMove 用于将 B 移动到 A 前面 2) ChainedChangeMove 用于将 D 移动到 C 前面

在创建移动时,值将存储在移动中,如 (I) 所示。动作 1 将正确执行。

移动1)后的解决方案: (二)B→A→C→D

第二步现在将尝试将 D 移到 B 后面,但 B 已在 A 的 previousStandstill 变量中引用

您可以使用其他版本的复合动作创建类似的场景。只要连锁动作在创建动作时保存链的状态,联合动作和复合动作就可能会失败。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OptaPlanner 在 CartesianProductMoveSelector 创建的 CompositeMove 上抛出 IllegalStateException 的相关文章

  • 热重载在docker中运行的java程序

    我开发了一个java程序 应该在docker中运行 然而 我在调试docker中运行的java程序时遇到了很多痛苦 我在网上搜索 一些教程提出了像 spring dev tools 这样的工具 因为我的java程序是基于spring boo
  • JavaMail Gmail 问题。 “准备启动 TLS”然后失败

    mailServerProperties System getProperties mailServerProperties put mail smtp port 587 mailServerProperties put mail smtp
  • 我需要在 Spring 中检查每个控制器中的有效会话吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 假设在 Spring Mvc 的 Web 应用程序中 我们是否需要检查每个控制器或 jsps 中的有效会话 我该如何解决 MVC 中的
  • Java程序中的数组奇怪的行为[重复]

    这个问题在这里已经有答案了 我遇到了这个 Java 程序及其以意想不到的方式运行 以下程序计算 int 数组中元素对之间的差异 import java util public class SetTest public static void
  • 如何测试 JUnit 测试的 Comparator?

    我需要测试 Compare 方法 但我对如何测试感到困惑 我可以看看该怎么做吗 public class MemberComparator implements Comparator
  • IntelliJ IDEA 创建的 JAR 文件无法运行

    我在 IntelliJ 中编写了一个跨越几个类的程序 当我在 IDE 中测试它时它运行良好 但是 每当我按照教程将项目制作成 jar 可执行文件时 它就不会运行 双击 out 文件夹中的文件时 该文件不会运行 并显示 无法启动 Java J
  • 一种使用 Java Robot API 和 Selenium WebDriver by Java 进行文件上传的解决方案

    我看到很多人在使用 Selenium WebDriver 的测试环境中上传文件时遇到问题 我使用 selenium WebDriver 和 java 也遇到了同样的问题 我终于找到了解决方案 所以我将其发布在这里希望对其他人有所帮助 当我需
  • Microsoft Graph 身份验证 - 委派权限

    我可以使用 Microsoft Graph 访问资源无需用户即可访问 https developer microsoft com en us graph docs concepts auth v2 service 但是 此方法不允许我访问需
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • 无法理解 Java 地图条目集

    我正在看一个 java 刽子手游戏 https github com leleah EvilHangman blob master EvilHangman java https github com leleah EvilHangman b
  • 序列化对象以进行单元测试

    假设在单元测试中我需要一个对象 其中所有 50 个字段都设置了一些值 我不想手动设置所有这些字段 因为这需要时间而且很烦人 不知何故 我需要获得一个实例 其中所有字段都由一些非空值初始化 我有一个想法 如果我要调试一些代码 在某个时候我会得
  • 制作java包

    我的 Java 类组织变得有点混乱 所以我要回顾一下我在 Java 学习中跳过的东西 类路径 我无法安静地将心爱的类编译到我为它们创建的包中 这是我的文件夹层次结构 com david Greet java greeter SayHello
  • 检查 protobuf 消息 - 如何按名称获取字段值?

    我似乎无法找到一种方法来验证 protobuf 消息中字段的值 而无需显式调用其 getter 我看到周围的例子使用Descriptors FieldDescriptor实例到达消息映射内部 但它们要么基于迭代器 要么由字段号驱动 一旦我有
  • Java直接内存:在自定义类中使用sun.misc.Cleaner

    在 Java 中 NIO 直接缓冲区分配的内存通过以下方式释放 sun misc Cleaner实例 一些比对象终结更有效的特殊幻像引用 这种清洁器机制是否仅针对直接缓冲区子类硬编码在 JVM 中 或者是否也可以在自定义组件中使用清洁器 例
  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • 将 JSON 参数从 java 发布到 sinatra 服务

    我有一个 Android 应用程序发布到我的 sinatra 服务 早些时候 我无法读取 sinatra 服务上的参数 但是 在我将内容类型设置为 x www form urlencoded 之后 我能够看到参数 但不完全是我想要的 我在
  • 运行 Jar 文件时出现问题

    我已将 java 项目编译成 Jar 文件 但运行它时遇到问题 当我跑步时 java jar myJar jar 我收到以下错误 Could not find the main class myClass 类文件不在 jar 的根目录中 因
  • java8 Collectors.toMap() 限制?

    我正在尝试使用java8Collectors toMap on a Stream of ZipEntry 这可能不是最好的想法 因为在处理过程中可能会发生异常 但我想这应该是可能的 我现在收到一个我不明白的编译错误 我猜是类型推理引擎 这是
  • javax.persistence.Table.indexes()[Ljavax/persistence/Index 中的 NoSuchMethodError

    我有一个 Play Framework 应用程序 并且我was使用 Hibernate 4 2 5 Final 通过 Maven 依赖项管理器检索 我决定升级到 Hibernate 4 3 0 Final 成功重新编译我的应用程序并运行它
  • Swagger/Openapi-Annotations:如何使用 $ref 生成 allOf?

    我正在生成 Rest 端点 包括添加OpenAPI Swagger对生成的代码进行注释 虽然它对于基本类型运行得很好 但我在自定义类方面遇到了一些问题 现在我有很多自定义类的重复架构条目 使用 Schema 实现 MyClass class

随机推荐

  • 如何使用Microsoft Graph API获取Office365邮件的MIME内容?

    如何使用 Microsoft Graph API 获取 Office365 邮件的 MIME 内容以便我可以创建 EML 文件 或者是否有其他方法可以使用 Microsoft graph API 创建 Office365 中找到的邮件的 E
  • 从 HttpListener 解析 POST 参数

    假设我有 HttpListener 它监听一些端口和IP 当我发送 POST 请求时 它会捕获它 如何从 HttpListenerRequest 解析 POST 参数 HttpListenerContext context listener
  • VBScript 创建一个多维数组并添加到它?

    这对我来说太棒了哈哈 我几乎检查了谷歌搜索上的每个页面 但我仍然不明白该怎么做 我想在 VB 脚本中创建一个名为 data2 的多维数组 尝试我见过的示例 但出现 下标超出范围 错误 Dim data2 sub grabdata SQL q
  • 在 C# 中使用不同的用户凭据将文件保存到文件系统

    如何使用与当前登录用户不同的用户将文件保存到文件系统 我目前正在使用 NET Framework 4 0 如果您有其他用户的登录凭据 您可以冒充他们 使用 DLL Import 在 Win32 中调用 LogonUser DllImport
  • 安装 Apple 的网络链接调节器工具

    我已经在运行 Lion 的机器上安装了 xcode 4 3 1 我在任何地方都找不到网络链接调节器工具 我已经检查了实用程序文件夹 还有xcode contents developer 目录 没有这样的运气 我是否需要安装特定组件或者该工具
  • CodeIgniter - 声明全局变量的最佳位置

    我只想用一个 variable在几个地方 不仅是视图和控制器 而且在routes php和其他配置文件 我不想要这样的事情 使用 Config 类加载配置文件 使用 CIget instance等等 我只想声明一个给定的 variable
  • 有没有简单的方法在 Windows 版 xampp 中安装 SSH?

    有没有简单的方法在 Windows 版 xampp 中安装 SSH 我不相信是这样 即使可以 您也无法像在 nix 机器上所期望的那样无缝访问 apache 和 mysql 如果你已经死心了 最好的选择就是安装 openssh 服务器 ht
  • 在 Next.js 中将回调从服务器组件传递到客户端组件

    我陷入了创建自定义按钮组件 将其标记为客户端组件 然后传递其onClick来自服务器端组件的回调 它给了我这个错误 error Error Event handlers cannot be passed to Client Componen
  • lambda 函数可以模板化吗?

    在 C 11 中 有没有办法模板化 lambda 函数 或者它本身就太具体而无法模板化 我知道我可以定义一个经典的模板化类 函子 但问题更像是 该语言是否允许模板化 lambda 函数 2018 年更新 C 20 将附带模板化和概念化的 l
  • 在WPF中使用C#代码删除IE缓存和Cookie

    我在 WPF 应用程序中使用 WebBrowser 控件 并且希望从代码中清除 IE cookie 缓存 我尝试使用以下代码 string Cookies System IO Directory GetFiles Environment G
  • 从java中的类对象构造类实例

    我需要从类对象数组创建类的新实例 如下所示 static Class spells Fireball class Iceball class 所以当我想调用火球时我应该能够做类似的事情 Spell Currentspell new spel
  • 如何获取本地安装的 Python 模块的列表?

    如何获取我的计算机上安装的 Python 模块的列表 help modules 在 Python shell 提示符中
  • ggplot 多线图上缺少图例

    我正在从包含每年最小值 平均值和最大值的数据框中绘制年度温度数据 我一直无法在我的情节上找到传说 理想情况下 图例应具有图例标题并将线条颜色标记为 最小值 平均值 和 最大值 任何帮助 将不胜感激 数据看起来像 示例 数据名为 s 示例数据
  • 从阅读器中删除或忽略字符

    我正在将所有字符读入流中 我正在使用 inputStream read 读取它 这是 java io Reader 输入流 读入缓冲区时如何忽略 等特殊字符 code private final void FillBuff throws j
  • 如何在地图中平滑移动标记而不闪烁

    每次我收到服务器请求以获取设备的新位置并更新地图上标记的位置时 我的标记都会出现问题 当我的车辆设备移动时 标记将跳转到新位置并闪烁 我怎样才能避免这种情况不闪烁 或者我的标记可以顺利移动 先感谢您 var map var marker v
  • 需要通过 Union() 中的匿名类型显式转换

    我有 2 个 var objects 通过这两个函数检索 private IQueryable
  • 为什么这个正则表达式中的后向表达式没有“明显的最大长度”?

    给定一个包含一定数量的方括号和其他字符的字符串 我想找到所有右方括号 前面有一个左方括号和一些字母 例如 如果字符串是 abc 123 abc 我只想找到第二个右括号 以下正则表达式 会找到第二个右括号 也是最后一个 abc 123 abc
  • 在屏幕上的随机位置生成一个圆圈

    我一直在绞尽脑汁 到处搜索 试图找出如何在屏幕上生成一个随机位置来生成一个圆圈 我希望这里有人可以帮助我 因为我完全被难住了 基本上 我试图创建一个形状 当用户触摸时 该形状总是在屏幕上的随机位置生成 override func touch
  • Rails 将普通旧字符串作为 BLOB 保存到 SQlite?我快要疯了!

    我不知道为什么会发生这种情况 但 Rails 正在将字符串作为 BLOB 保存到 SQLite 在我的应用程序中创建新用户之前 我会先获取他们的纯字符串密码并对其进行 MD5 然后再保存到数据库 class User lt ActiveRe
  • OptaPlanner 在 CartesianProductMoveSelector 创建的 CompositeMove 上抛出 IllegalStateException

    所以基本上我的问题是 OptaPlanner 抛出这个 java lang IllegalStateException The entity has a variable previousEntry with value which has