> Discrete Optimization > Solving Mixed Integer Programming Problems (MIP) > Using the Mixed Integer Optimizer > Priority Orders |
Priority Orders |
INDEX PREVIOUS NEXT |
In branch & cut, ILOG CPLEX makes decisions about which variable to branch on at a node. You can control the order in which ILOG CPLEX branches on variables by issuing a priority order. A priority order assigns a branching priority to some or all of the integer variables in a model. ILOG CPLEX performs branches on variables with a higher assigned priority number before variables with a lower priority; variables not assigned an explicit priority value by the user are treated as having a priority value of 0
. Note that ILOG CPLEX will branch only on variables that take a fractional solution value at a given node. Thus a variable with a high priority number might still not be branched upon until late in the tree, if at all, and indeed if the presolve or the aggregator feature of the ILOG CPLEX Preprocessor removes a given variable then branching on that variable would never occur regardless of a high priority order assigned to it by the user.
You can specify priority for any variable, though the priority is used only if the variable is a general integer variable, a binary integer variable, a semi-continuous variable, a semi-integer variable, or a member of a special ordered set. To specify priority, use one of the following routines or methods:
CPXcopyorder
to copy a priority order and apply it, or CPXreadcopyorder
to read the copy order from a file in ORD format. That format is documented in the reference manual ILOG CPLEX File Formats.
setPriority
to set the priority of a given variable or setPriorities
to set priorities for an array of variables. Use the method readOrder
to read priorities from a file in ORD format and apply them.
ILOG CPLEX can generate a priority order automatically, based on problem-data characteristics. This facility can be activated by setting the MIPOrdType
parameter to one of the values in Table 13.10.
If you explicitly read a file of priority orders, its settings will override any generic priority order you may have set by interactive commands.
The parameter MIPOrdInd
, when set to 0 (zero), allows you to direct ILOG CPLEX to ignore a priority order that was previously read from a file. The default setting for this parameter means that a priority order will be used, if one has been read in.
Problems that use integer variables to represent different types of decisions should assign higher priority to those that must be decided first. For example, if some variables in a model activate processes, and others use those activated processes, then the first group of variables should be assigned higher priority than the second group. In that way, you can use priority to achieve better solutions.
Setting priority based on the magnitude of objective coefficients is also sometimes helpful.
Copyright © 1987-2003 ILOG, S.A. All rights reserved. Legal terms. | PREVIOUS NEXT |