I solve a single instance (maximize) with pygcgopt and pyscipopt, but find different primal solutions. Pygcgopt terminates at 42.60s and outputs an "optimal" objective of +9.06769695399432e+04. Pyscipopt reaches the time limit of 100s and outputs the best objective of +9.35093089340221e+04, better than pygcgopt.
I wonder whether someone knows this problem.
The code, instance file and log files are as follows.
Here is the .lp file (change the file type due to the platform support):
instance.txt
The code:
from pygcgopt import Model
instance = f'instance.lp'
m = Model()
m.setParam('limits/time', 100)
m.setParam('randomization/randomseedshift', 0)
m.setParam('randomization/lpseed', 0)
m.setParam('randomization/permutationseed', 0)
m.readProblem(instance)
m.optimize()
Log file of pygcgopt:
original problem has 1500 variables (1500 bin, 0 int, 0 impl, 0 cont) and 2605 constraints
feasible solution found by trivial heuristic after 0.0 seconds, objective value 0.000000e+00
presolving:
(round 1, fast) 34 del vars, 627 del conss, 0 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 1978 clqs
(round 2, fast) 58 del vars, 627 del conss, 0 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 1978 clqs
(round 3, exhaustive) 58 del vars, 774 del conss, 0 add conss, 0 chg bounds, 147 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 1978 clqs
(round 4, exhaustive) 58 del vars, 774 del conss, 0 add conss, 0 chg bounds, 147 chg sides, 0 chg coeffs, 1831 upgd conss, 0 impls, 1978 clqs
(round 5, fast) 74 del vars, 776 del conss, 0 add conss, 0 chg bounds, 147 chg sides, 0 chg coeffs, 1831 upgd conss, 0 impls, 1974 clqs
(round 6, medium) 156 del vars, 779 del conss, 0 add conss, 0 chg bounds, 147 chg sides, 79 chg coeffs, 1831 upgd conss, 0 impls, 1969 clqs
(round 7, exhaustive) 167 del vars, 779 del conss, 0 add conss, 0 chg bounds, 147 chg sides, 79 chg coeffs, 1831 upgd conss, 0 impls, 1960 clqs
(0.1s) probing: 51/1333 (3.8%) - 0 fixings, 0 aggregations, 0 implications, 0 bound changes
(0.1s) probing aborted: 50/50 successive totally useless probings
presolving (8 rounds: 8 fast, 5 medium, 4 exhaustive):
167 deleted vars, 780 deleted constraints, 0 added constraints, 0 tightened bounds, 0 added holes, 147 changed sides, 79 changed coefficients
0 implications, 1960 cliques
presolved problem has 1333 variables (1333 bin, 0 int, 0 impl, 0 cont) and 1825 constraints
1825 constraints of type <setppc>
Presolving Time: 0.06
Consclassifier "nonzeros" yields a classification with 10 different constraint classes
Consclassifier "constypes" yields a classification with 1 different constraint classes
Consclassifier "constypes according to miplib" yields a classification with 2 different constraint classes
Consclassifier "gamsdomain" yields a classification with 1 different constraint classes
Conspartition "gamsdomain" is not considered since it offers the same structure as "constypes" conspartition
Consclassifier "gamssymbols" yields a classification with 1 different constraint classes
Conspartition "gamssymbols" is not considered since it offers the same structure as "constypes" conspartition
Varclassifier "gamsdomain" yields a classification with 1 different variable classes
Varclassifier "gamssymbols" yields a classification with 1 different variable classes
Varpartition "gamssymbols" is not considered since it offers the same structure as "gamsdomain"
Varclassifier "vartypes" yields a classification with 1 different variable classes
Varpartition "vartypes" is not considered since it offers the same structure as "gamsdomain"
Varclassifier "varobjvals" yields a classification with 1333 different variable classes
Varclassifier "varobjvalsigns" yields a classification with 1 different variable classes
Varpartition "varobjvalsigns" is not considered since it offers the same structure as "gamsdomain"
Added reduced version of conspartition nonzeros with 9 different constraint classes
the current varclass distribution includes 1333 classes but only 18 are allowed for GCGconshdlrDecompCalcCandidatesNBlocks()
in dec_consclass: there are 4 different constraint classes
the current consclass distribution includes 10 classes but only 9 are allowed for propagatePartialdec() of cons class detector
the current constraint classifier "constypes" consists of 1 different classes
the current constraint classifier "constypes according to miplib" consists of 2 different classes
the current constraint classifier "nonzeros-red-to-9" consists of 9 different classes
dec_consclass found 515 new partialdecs
dec_densemasterconss found 1 new partialdec
dec_neighborhoodmaster found 1 new partialdec
POSTPROCESSING of decompositions. Added 477 new decomps.
Found 992 finished decompositions.
Measured running time per detector:
Detector postprocess worked on 477 finished decompositions and took a total time of 0.089
Detector consclass worked on 988 finished decompositions and took a total time of 0.055
Detector densemasterconss worked on 1 finished decompositions and took a total time of 0.000
Detector neighborhoodmaster worked on 1 finished decompositions and took a total time of 0.000
Detector connectedbase worked on 991 finished decompositions and took a total time of 0.393
Detector varclass worked on 1 finished decompositions and took a total time of 0.000
Detection Time: 1.64
A Dantzig-Wolfe reformulation is applied to solve the original problem.
Chosen structure has 173 blocks, 763 master-only (static) variables, and 1427 linking constraints.
This decomposition has a maxwhite score of 0.216789.
Matrix has 173 blocks, using 173 pricing problems.
time | node | left |SLP iter|MLP iter|LP it/n| mem |mdpt |ovars|mvars|ocons|mcons|mcuts| dualbound | primalbound | deg | gap
t 0.5s| 1 | 0 | 0 | 0 | - | 62M| 0 |1333 | 0 |1825 | 0 | 0 | 4.780775e+05 | 1.063107e+04 | -- |4396.98%
p 0.5s| 1 | 0 | 0 | 0 | - | 64M| 0 |1333 | 0 |1825 | 0 | 0 | 4.780775e+05 | 6.586432e+04 | -- | 625.85%
p 0.5s| 1 | 0 | 0 | 0 | - | 64M| 0 |1333 | 0 |1825 | 0 | 0 | 4.780775e+05 | 7.626814e+04 | -- | 526.84%
i 0.5s| 1 | 0 | 0 | 0 | - | 64M| 0 |1333 | 0 |1825 | 0 | 0 | 4.780775e+05 | 7.797528e+04 | -- | 513.11%
1.5s| 1 | 0 | 0 | 0 | - | 64M| 0 |1333 | 0 |1825 | 0 | 0 | 1.060817e+05 | 7.797528e+04 | -- | 36.05%
1.6s| 1 | 0 | 552 | 552 | - | 69M| 0 |1333 | 936 |1826 |1601 | 0 | 1.060817e+05 | 7.797528e+04 | 0.00%| 36.05%
1.6s| 1 | 0 | 552 | 552 | - | 71M| 0 |1333 |1974 |1826 |1601 | 0 | 1.060817e+05 | 7.797528e+04 | 0.00%| 36.05%
*P13.8s| 1 | 0 | 11728 | 11728 | - | 71M| 0 |1333 |1974 |1826 |1601 | 0 | 1.060817e+05 | 8.465736e+04 | 0.00%| 25.31%
13.8s| 1 | 0 | 11728 | 11728 | - | 71M| 0 |1333 |1974 |1826 |1601 | 0 | 1.060817e+05 | 8.465736e+04 | 0.00%| 25.31%
Starting reduced cost pricing...
20.1s| 1 | 0 | 22795 | 22795 | - | 80M| 0 |1333 |2402 |1826 |1601 | 0 | 1.060817e+05 | 8.465736e+04 | 0.82%| 25.31%
d 27.9s| 1 | 0 | 45269 | 45269 | - | 112M| 0 |1333 |9149 |1826 |1601 | 0 | 1.060817e+05 | 8.510654e+04 | 0.82%| 24.65%
d 27.9s| 1 | 0 | 45269 | 45269 | - | 113M| 0 |1333 |9322 |1826 |1601 | 0 | 1.060817e+05 | 8.653401e+04 | 0.82%| 22.59%
d 27.9s| 1 | 0 | 45269 | 45269 | - | 113M| 0 |1333 |9495 |1826 |1601 | 0 | 1.060817e+05 | 9.067697e+04 | 0.82%| 16.99%
38.2s| 1 | 0 | 45269 | 45269 | - | 114M| 0 |1333 |9841 |1826 |1601 | 0 | 1.060817e+05 | 9.067697e+04 | 0.82%| 16.99%
38.3s| 1 | 0 | 45269 | 45269 | - | 115M| 0 |1333 | 10k|1826 |1601 | 0 | 1.060817e+05 | 9.067697e+04 | 0.82%| 16.99%
time | node | left |SLP iter|MLP iter|LP it/n| mem |mdpt |ovars|mvars|ocons|mcons|mcuts| dualbound | primalbound | deg | gap
38.3s| 1 | 2 | 45269 | 45269 | - | 116M| 0 |1333 | 10k|1826 |1601 | 0 | 1.060817e+05 | 9.067697e+04 | 0.82%| 16.99%
SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 42.60
Solving Nodes : 3
Primal Bound : +9.06769695399432e+04 (56 solutions)
Dual Bound : +9.06769695399432e+04
Gap : 0.00 %
Dear support team,
I solve a single instance (maximize) with pygcgopt and pyscipopt, but find different primal solutions. Pygcgopt terminates at 42.60s and outputs an "optimal" objective of +9.06769695399432e+04. Pyscipopt reaches the time limit of 100s and outputs the best objective of +9.35093089340221e+04, better than pygcgopt.
I wonder whether someone knows this problem. The code, instance file and log files are as follows.
Here is the .lp file (change the file type due to the platform support): instance.txt
The code:
Log file of pygcgopt:
Log file of pyscipopt: