Unsatisfactory optimization of subproblems
Describes ways to overcome unsatisfactory optimization of difficult subproblems.
In some problems, you can improve performance by evaluating how the continuous LP or QP subproblems are solved at the nodes in the search space, and then possibly modifying the choice of algorithm to solve them.
QCP subproblems are solved only by the barrier optimizer. However,
MIQCP models are not always solved by a sequence of QCP subproblems.
The MIQCP strategy switch (MIQCPStrat, CPX_PARAM_MIQCPSTRAT)
allows you to control what kinds of subproblems are solved in a mixed
integer quadratically constrained programming model. Consequently,
the following suggestions may also help that class of problem as well.
You can control which algorithm CPLEX applies to the root relaxation of your problem separately from your control of which algorithm CPLEX applies to other subproblems. The following sections explain those parameters more fully.
RootAlg parameter and difficult subproblems
RootAlg
algorithm parameter indicates the algorithm for CPLEX to use on the
initial subproblem. In a typical MIP, that initial subproblem is usually
the linear relaxation of the original MIP. By default, CPLEX starts
the initial subproblem with the dual simplex optimizer. You may have
information about your problem that suggests that another optimizer
could be more efficient. Table 1 summarizes
the values available for the RootAlg parameter. To set the algorithm for initial MIP relaxation parameter:
In the Interactive Optimizer, use the command
set mip strategy startalgorithmwith the value to indicate the optimizer you want.In Concert Technology, use the
IloCplexmethodsetParamwith the parameterRootAlgand the appropriate algorithm enumeration value.In the Callable Library, use the routine
CPXsetinparamwith the parameterCPX_PARAM_STARTALG, and the appropriate symbolic constant.
| Concert Technology Enumeration | Callable Library Symbolic Constant | Setting | Calls this Optimizer |
|---|---|---|---|
Auto |
CPX_ALG_AUTO |
0 | automatic |
Primal |
CPX_ALG_PRIMAL |
1 | primal simplex |
Dual |
CPX_ALG_DUAL |
2 | dual simplex (default) |
Network |
CPX_ALG_HYBNETOPT |
3 | network simplex |
Barrier |
CPX_ALG_BARRIER |
4 | barrier with crossover |
Sifting |
CPX_ALG_SIFTING |
5 | sifting |
Concurrent |
CPX_ALG_CONCURRENT |
6 | concurrent: allowed at root, but not at nodes |
NodeAlg parameter and difficult subproblems
NodeAlg parameter
indicates the algorithm for CPLEX to use on node relaxations other
than the root node. By default, CPLEX applies the dual simplex optimizer
to subproblems, and unlike the RootAlg parameter
it is extremely unusual for this to not be the most desirable choice,
but again, you may have information about your problem that tells
you another optimizer could be more efficient. The values and symbolic
constants are the same for the NodeAlg parameter
as for the RootAlg parameter in Table 1.To set the MIP subproblem algorithm parameter:
In Concert Technology, use the
IloCplexmethodsetParamwith the parameterNodeAlgand the appropriate algorithm enumeration value.In the Callable Library, use the routine
CPXsetintparamwith the parameterCPX_PARAM_SUBALG, and the appropriate symbolic constant.In the Interactive Optimizer, use the command
set mip strategy subalgorithmwith the value to indicate the optimizer you want.
Only simplex and barrier optimizers can solve problems of type QP (quadratic term in the objective function).
Only the barrier optimizer can solve problems of type QCP (quadratic terms among the constraints).
Solution polishing and difficult subproblems
When subproblems are not solved satisfactorily, another option is to solve as few subproblems of the original model as possible by switching to solution polishing as soon as a first feasible solution is found. This strategy is helpful when finding a good integer solution is more important than proving optimality. For more information about this strategy, see Solution polishing in this manual.