Solver Options for EPM#
EPM solves large-scale mixed-integer programs (MIPs). Properly configuring solver options can significantly reduce runtime and improve numerical stability.
Solver settings are defined in a cplex.opt
file.
→ See example cplex.opt
for reference.
Recommended Solver Parameters#
Parameter |
Recommended Value |
Description & Rationale |
---|---|---|
|
|
Number of solver threads. Using more threads than CPU cores (oversubscription) can improve performance through load balancing and OS scheduling. Too many threads (e.g., >16) may increase overhead and slow the model. Test different values. |
|
|
Controls which algorithm is used to solve LPs: |
|
|
Starting algorithm for root LPs (when solving MIPs): same values as |
|
|
Tells CPLEX to solve the primal ( |
|
|
Barrier algorithm type: |
|
|
Algorithm used for crossover after barrier: |
|
|
Sets threshold for treating columns as dense in the barrier method. This can greatly impact performance. Try tuning in steps of ±100. |
|
|
Complementarity tolerance for barrier method. Lower values improve precision but may slow convergence. |
|
|
Type of solution to return: |
|
|
Emphasizes memory-saving strategies, helpful for large models prone to memory issues. |
|
|
Controls verbosity during barrier solve. Higher values produce more output (good for diagnostics). |
|
|
Controls constraint matrix scaling: |
|
|
Disables auxiliary tasks in the root node. Reduces time spent in presolve when root node is slow to launch. |
Notes on Performance Tuning#
Start with default recommendations and test on a small-to-medium scenario.
Barrier method parameters (
baralg
,barcolnz
,barepcomp
) can greatly impact performance, especially for LP relaxations.Interior point solution (
solutiontype = 2
) is not always suitable for MIPs. Use only when appropriate.If presolve seems to hang, try setting:
auxrootthreads = 0