Uploaded image for project: 'OptaPlanner'
  1. OptaPlanner
  2. PLANNER-1464

IllegalStateException on CompositeMove on a chained planning variable created by CartesianProductMoveSelector

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • 7.19.0.Final
    • optaplanner-core
    • Hide

      in vehicleRoutingSolverConfig.xml add
      <cartesianProductMoveSelector>
      <ignoreEmptyChildIterators>true</ignoreEmptyChildIterators>
      <changeMoveSelector/>
      <swapMoveSelector/>
      </cartesianProductMoveSelector>
      to

      <localSearch>
      <unionMoveSelector>
      ...
      </unionMoveSelector>
      </localSearch

      and run the application:
      org.optaplanner.examples.vehiclerouting.app.VehicleRoutingApp

      select input and click "Solve"

      Show
      in vehicleRoutingSolverConfig.xml add <cartesianProductMoveSelector> <ignoreEmptyChildIterators>true</ignoreEmptyChildIterators> <changeMoveSelector/> <swapMoveSelector/> </cartesianProductMoveSelector> to <localSearch> <unionMoveSelector> ... </unionMoveSelector> </localSearch and run the application: org.optaplanner.examples.vehiclerouting.app.VehicleRoutingApp select input and click "Solve"
    • NEW
    • NEW

      IllegalStateException is thrown if there is CompositeMove on a chained planning variable created by CartesianProductMoveSelector:

      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)

            Unassigned Unassigned
            johnnyaw Waldemar Ankudin (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: