Priority

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 branches on variables with an assigned priority before variables without a priority. It also branches on variables with higher priority before variables with lower priority, when the variables have fractional values.

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, or a member of a special ordered set.

Sometimes, a generic priority may be helpful. There are options for setting priority among variables based on the magnitude of their coefficients in the objective function, on the range of their bounds, and on their objective value divided by column count.

For example:

If you explicitly read a file of priority orders, its settings will override any generic priority order you may have set by interactive commands.

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.

Priority based on the magnitude of objective coefficients is often useful in this way.


Previous Page: Cuts   Return to Top Next Page: Heuristics