When I use COPT through JuMP to solve the LP relaxation of a MILP with SOS1 constraints, the MILP rather than its LP relaxation is solved. If the SOS1 constraints are removed, then COPT solves the LP relaxation.
Output:
$ julia JuMP_solve.jl
Cardinal Optimizer v6.5.7. Build date Jul 28 2023
Copyright Cardinal Operations 2023. All Rights Reserved
Setting parameter ‘LogToConsole’ to 1
Setting parameter ‘LpMethod’ to 2
Model fingerprint: aa3dc1e0
Using Cardinal Optimizer v6.5.7 on Linux
Hardware has 24 cores and 48 threads. Using instruction set X86_NATIVE (1)
Minimizing a MIP problem
The original problem has:
294515 rows, 299698 columns and 888526 non-zero elements
100 SOSs
Presolving the problem
The presolved problem has:
294515 rows, 299698 columns and 888526 non-zero elements
294414 binaries
Starting the MIP solver with 32 threads and 64 tasks
Nodes Active LPit/n IntInf BestBound BestSolution Gap Time
0 1 -- 0 0.000000e+00 -- Inf 184s
H 0 1 – 0 0.000000e+00 1.280000e+06 100.0% 184s
H 0 1 – 0 0.000000e+00 4.053610e+05 100.0% 184s
0 1 – 197 1.722190e+05 4.053610e+05 57.5% 199s
H 0 1 – 197 1.722190e+05 2.002380e+05 14.0% 201s
0 1 – 291 1.722675e+05 2.002380e+05 14.0% 221s
0 1 – 271 1.722696e+05 2.002380e+05 14.0% 238s
0 1 – 293 1.723109e+05 2.002380e+05 13.9% 255s
0 1 – 289 1.723154e+05 2.002380e+05 13.9% 273s
Julia code in JuMP_solve.jl:
using JuMP
#using SCIP
#using HiGHS
using COPT
MPS_fn = “/data/stuart/gen_MPS_files/p12_fix0_MILP_binary_SOS1_x.mps”
model = read_from_file(MPS_fn)
#opt = SCIP.Optimizer
#opt = HiGHS.Optimizer
opt = COPT.Optimizer
relax_integrality(model)
set_optimizer(model,opt)
set_attribute(model,“LpMethod”,2)
@time optimize!(model)