A mixed integer programming (MIP) problem may contain both integer and continuous variables. If the problem contains an objective function with no quadratic term, (a linear objective), then the problem is termed a Mixed Integer Linear Program (MILP). If there is a quadratic term in the objective function, the problem is termed a Mixed Integer Quadratic Program (MIQP). In ILOG CPLEX documentation, if the discussion pertains specifically to either the MILP or MIQP case, then that term is used. For the majority of topics that pertain equally to MILP and MIQP, the comprehensive term MIP is used.
The integer variables may be restricted to the values 0 (zero) and 1 (one), in which case they are referred to as binary variables. Or they may take on any integer values, in which case they are referred to as general integer variables. A variable of any MIP that may take either the value 0 or a value between a lower and an upper bound is referred to as semi-continuous. A semi-continuous variable that is restricted to integer values is referred to as semi-integer. Special Ordered Sets (SOS) are discussed elsewhere in this chapter. Continuous variables in a MIP problem are those which are not restricted in any of these ways, and are thus permitted to take any solution value within their (possibly infinite) lower and upper bounds.
In ILOG CPLEX documentation, the comprehensive term integer variable means any of the various types just mentioned except for continuous or SOS. The presence or absence of a quadratic term in the objective function for a given variable has no bearing on its being classified as continuous or integer.
The following illustrates a mixed integer programming problem, which is solved in the example program ilomipex1.cpp
/ mipex1.c
, discussed later in this chapter: