Problem Context: I'm working on a large-scale Linear Programming (LP) problem containing over 6 million variables (There are a total of 7 different models). My goal is to improve the model's optimization time.
Analysis Performed: When analyzing the Gurobi and CPLEX logs, I identified two main issues:
Significant reduction in the number of variables by the presolver - The presolver is eliminating a considerable number of variables, which makes me question whether I can optimize the model from its initial formulation.
Numerical conditioning problem - The logs indicate that the model has conditioning issues.
My Questions:
Regarding the presolver: I thought about comparing the post-presolver . lp file with the initial model to identify which variables are being eliminated. The idea would be to analyze whether I can avoid creating these variables from the start, thus reducing the model size before optimization even begins. Does this approach make sense? Is there a more efficient way to perform this analysis?
Regarding the ill-conditioning: I would like guidance on how to identify the causes of ill-conditioning and what techniques you recommend to address this issue. What are the best practices for handling this type of problem in large-scale LP models?
Reading time = 183.38 seconds
: 862106 rows, 3277568 columns, 57976445 nonzeros
Set parameter Presolve to value 2
Gurobi Optimizer version 12.0.3 build v12.0.3rc0 (win64 - Windows 11.0 (26100.2))
CPU model: 13th Gen Intel(R) Core(TM) i7-13850HX, instruction set [SSE2|AVX|AVX2]
Thread count: 20 physical cores, 28 logical processors, using up to 28 threads
Non-default parameters:
Presolve 2
Presolve a model with 862106 rows, 3277568 columns and 57976445 nonzeros
Model fingerprint: 0x8ffe011d
Coefficient statistics:
Matrix range [1e+00, 1e+04]
Objective range [5e-03, 2e+04]
Bounds range [1e+00, 5e+04]
RHS range [2e-03, 1e+05]
Presolve removed 834388 rows and 3115632 columns (presolve time = 5s)...
Presolve removed 834763 rows and 3115632 columns
Gurobi Optimizer version 12.0.3 build v12.0.3rc0 (win64 - Windows 11.0 (26100.2))
CPU model: 13th Gen Intel(R) Core(TM) i7-13850HX, instruction set [SSE2|AVX|AVX2]
Thread count: 20 physical cores, 28 logical processors, using up to 28 threads
Non-default parameters:
Presolve 2
Optimize a model with 862106 rows, 3277568 columns and 57976445 nonzeros
Model fingerprint: 0x8ffe011d
Coefficient statistics:
Matrix range [1e+00, 1e+04]
Objective range [5e-03, 2e+04]
Bounds range [1e+00, 5e+04]
RHS range [2e-03, 1e+05]
Presolve removed 834388 rows and 3115632 columns (presolve time = 5s)...
Presolve removed 834763 rows and 3115632 columns
Presolve time: 5.50s
Presolved: 27343 rows, 162310 columns, 3128771 nonzeros
Concurrent LP optimizer: primal simplex, dual simplex, and barrier
Showing barrier log only...