Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Primal starting value on 7.0.3 #198

Closed
matbesancon opened this issue Jun 9, 2021 · 6 comments
Closed

Primal starting value on 7.0.3 #198

matbesancon opened this issue Jun 9, 2021 · 6 comments

Comments

@matbesancon
Copy link
Member

With the SCIP version 7.0.3, once the previous issue is fixed, we have 4 tests failing on primal value setting:

Primal start values: Test Failed at /home/mbesancon/julia_projects/SCIP.jl/test/MOI_additional.jl:617
  Expression: MOI.get(optimizer, MOI.TerminationStatus()) == MOI.SOLUTION_LIMIT
   Evaluated: MathOptInterface.OPTIMAL == MathOptInterface.SOLUTION_LIMIT
Stacktrace:
 [1] macro expansion
   @ ~/julia_projects/SCIP.jl/test/MOI_additional.jl:617 [inlined]
 [2] macro expansion
   @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Test/src/Test.jl:1151 [inlined]
 [3] top-level scope
   @ ~/julia_projects/SCIP.jl/test/MOI_additional.jl:577
Primal start values: Test Failed at /home/mbesancon/julia_projects/SCIP.jl/test/MOI_additional.jl:621
  Expression: (MOI.get(optimizer, MOI.ObjectiveValue()), 1.0, atol = atol, rtol = rtol)
   Evaluated: 2.0  1.0 (atol=1.0e-6, rtol=1.0e-6)
Stacktrace:
 [1] macro expansion
   @ ~/julia_projects/SCIP.jl/test/MOI_additional.jl:621 [inlined]
 [2] macro expansion
   @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Test/src/Test.jl:1151 [inlined]
 [3] top-level scope
   @ ~/julia_projects/SCIP.jl/test/MOI_additional.jl:577
Primal start values: Test Failed at /home/mbesancon/julia_projects/SCIP.jl/test/MOI_additional.jl:622
  Expression: (MOI.get(optimizer, MOI.VariablePrimal(), x), 1.0, atol = atol, rtol = rtol)
   Evaluated: 0.0  1.0 (atol=1.0e-6, rtol=1.0e-6)
Stacktrace:
 [1] macro expansion
   @ ~/julia_projects/SCIP.jl/test/MOI_additional.jl:622 [inlined]
 [2] macro expansion
   @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Test/src/Test.jl:1151 [inlined]
 [3] top-level scope
   @ ~/julia_projects/SCIP.jl/test/MOI_additional.jl:577
Primal start values: Test Failed at /home/mbesancon/julia_projects/SCIP.jl/test/MOI_additional.jl:623
  Expression: (MOI.get(optimizer, MOI.VariablePrimal(), y), 0.0, atol = atol, rtol = rtol)
   Evaluated: 1.0  0.0 (atol=1.0e-6, rtol=1.0e-6)
Stacktrace:
 [1] macro expansion
   @ ~/julia_projects/SCIP.jl/test/MOI_additional.jl:623 [inlined]
 [2] macro expansion
   @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Test/src/Test.jl:1151 [inlined]
 [3] top-level scope
   @ ~/julia_projects/SCIP.jl/test/MOI_additional.jl:577
@matbesancon
Copy link
Member Author

the 4 tests failing are:
Primal start values | 8 4 12

@rschwarz
Copy link
Collaborator

rschwarz commented Jun 9, 2021

Testing "MIP Start" is always tricky. I think the idea of the test is to

  • submit a sub-optimal solution,
  • disable heuristics to prevent SCIP from finding something better,
  • limiting the search to stop the process prematurely,
  • and finally asserting that our submitted solution is (still) the best-known solution.

I could guess that an "improvement" in SCIP might have sneaked in a better solution here?

@matbesancon
Copy link
Member Author

yes that might be

@matbesancon
Copy link
Member Author

matbesancon commented Jun 9, 2021

So for more details:
SCIP 7.0.2:

julia> MOI.optimize!(optimizer)
feasible solution found by completesol heuristic after 0.0 seconds, objective value 1.000000e+00
presolving:
presolving (1 rounds: 1 fast, 1 medium, 1 exhaustive):
 2 deleted vars, 1 deleted constraints, 0 added constraints, 2 tightened bounds, 0 added holes, 0 changed sides, 0 changed coefficients
 0 implications, 0 cliques
presolved problem has 0 variables (0 bin, 0 int, 0 impl, 0 cont) and 0 constraints
transformed objective value is always integral (scale: 1)
Presolving Time: 0.01


SCIP Status        : solving was interrupted [solution limit reached]
Solving Time (sec) : 0.01
Solving Nodes      : 0
Primal Bound       : +1.00000000000000e+00 (2 solutions)
Dual Bound         : +1.00000000000000e+20
Gap                : infinite

with the new bugfix:

julia> MOI.optimize!(optimizer)
feasible solution found by completesol heuristic after 0.0 seconds, objective value 1.000000e+00
presolving:
presolving (1 rounds: 1 fast, 1 medium, 1 exhaustive):
 2 deleted vars, 1 deleted constraints, 0 added constraints, 2 tightened bounds, 0 added holes, 0 changed sides, 0 changed coefficients
 0 implications, 0 cliques
transformed 1/3 original solutions to the transformed problem space
Presolving Time: 0.02

SCIP Status        : problem is solved [optimal solution found]
Solving Time (sec) : 0.02
Solving Nodes      : 0
Primal Bound       : +2.00000000000000e+00 (3 solutions)
Dual Bound         : +2.00000000000000e+00
Gap                : 0.00 %

@matbesancon
Copy link
Member Author

matbesancon commented Jun 9, 2021

Solution was to deactivate presolving, which changed some behavior on other constraint handlers, the
@testset "NoGoodCounter (2 binary vars)"
was counting the number of solutions, which has been reduced from 4 to 3 by the presolver between the two versions

@matbesancon
Copy link
Member Author

Closed by #195

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants