Skip to content

[BUG] Clause learning broken since Choco 4.10.14 #1118

@Holt59

Description

@Holt59

Describe the bug

I am trying to upgrade a project from Choco 4.10.13 to 4.10.14, but every time I try to run with clause-learning enabled, I get the following exception:

java.lang.IllegalStateException: cannot find maximum of an empty set
        at org.chocosolver.util.objects.setDataStructures.iterable.IntIterableRangeSet.max(IntIterableRangeSet.java:221) ~[carioca-solver-compute-functional-tests.jar:?]
        at org.chocosolver.solver.learn.LazyImplications.createDomain(LazyImplications.java:316) ~[carioca-solver-compute-functional-tests.jar:?]
        at org.chocosolver.solver.learn.LazyImplications.addEntry(LazyImplications.java:353) ~[carioca-solver-compute-functional-tests.jar:?]
        at org.chocosolver.solver.learn.LazyImplications.pushEvent(LazyImplications.java:383) ~[carioca-solver-compute-functional-tests.jar:?]
        at org.chocosolver.solver.learn.EventRecorder.updateLowerBound(EventRecorder.java:75) ~[carioca-solver-compute-functional-tests.jar:?]
        at org.chocosolver.solver.variables.view.integer.IntAffineView.updateLowerBound(IntAffineView.java:133) ~[carioca-solver-compute-functional-tests.jar:?]
        at org.chocosolver.solver.variables.IntVar.updateBounds(IntVar.java:415) ~[carioca-solver-compute-functional-tests.jar:?]
        at org.chocosolver.solver.constraints.ternary.PropXplusYeqZ.filterPlus(PropXplusYeqZ.java:91) ~[carioca-solver-compute-functional-tests.jar:?]
        at org.chocosolver.solver.constraints.ternary.PropXplusYeqZ.propagate(PropXplusYeqZ.java:72) ~[carioca-solver-compute-functional-tests.jar:?]
        at org.chocosolver.solver.propagation.PropagationEngine.propagateEvents(PropagationEngine.java:215) ~[carioca-solver-compute-functional-tests.jar:?]
        at org.chocosolver.solver.propagation.PropagationEngine.propagate(PropagationEngine.java:199) ~[carioca-solver-compute-functional-tests.jar:?]
        at org.chocosolver.solver.Solver.doPropagate(Solver.java:481) ~[carioca-solver-compute-functional-tests.jar:?]
        at org.chocosolver.solver.Solver.initialize(Solver.java:417) ~[carioca-solver-compute-functional-tests.jar:?]
        at org.chocosolver.solver.Solver.solve(Solver.java:305) ~[carioca-solver-compute-functional-tests.jar:?]

I cannot share the actual code since it's from a huge internal project, but I am available to discuss this on Discord. This might be linked to PropLexInt since I seem to only get the error when activating it.

Environment (please complete the following information):

  • Choco-solver version: 4.10.14 (works fine with 4.10.13).
  • JRE : 17.0.13

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions