12.07.2015 Views

ILOG CPLEX 11.0 User's Manual

ILOG CPLEX 11.0 User's Manual

ILOG CPLEX 11.0 User's Manual

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

What Are Semi-Continuous Variables?A semi-continuous variable is a variable that by default can take the value 0 (zero) or anyvalue between its semi-continuous lower bound (sclb) and its upper bound (ub). Thesemi-continuous lower bound (sclb) must be finite. The upper bound (ub) need not be finite.The semi-continuous lower bound (sclb) must be greater than or equal to 0 (zero). Anattempt to use a negative value for the semi-continuous lower bound (sclb) will result in thatbound being treated as 0 (zero).In Concert Technology, semi-continuous variables are represented by the classIloSemiContVar. To create a semi-continuous variable, you use the constructor from thatclass to indicate the environment, the semi-continuous lower bound, and the upper bound ofthe variable, like this:IloSemiContVar mySCV(env, 1.0, 3.0);That statement creates a semi-continuous variable with a semi-continuous lower bound of1.0 and an upper bound of 3.0. The method IloSemiContVar::getSemiContinuousLBreturns the semi-continuous lower bound of the invoking variable, and the methodIloSemiContVar::getUB returns the upper bound. That class, its constructors, and itsmethods are documented in the <strong>ILOG</strong> <strong>CPLEX</strong> Reference <strong>Manual</strong> of the C++ API.In that manual, you will see that IloSemiContVar derives from IloNumVar, the ConcertTechnology class for numeric variables. Like other numeric variables, semi-continuousvariables assume floating-point values by default (type ILOFLOAT). However, you candesignate a semi-continuous variable as integer (type ILOINT). In that case, it is asemi-integer variable.For details about the feasible region of a semi-continuous or semi-integer variable, see thedocumentation of IloSemiContVar in the <strong>ILOG</strong> <strong>CPLEX</strong> Reference <strong>Manual</strong> of the C++API.In the Callable Library, semi-continuous variables can be entered with type CPX_SEMICONTor CPX_SEMIINT via the routine CPXcopyctype. In that case, the lower bound of 0 (zero) isimplied; the semi-continuous lower bound is defined by the corresponding entry in the arrayof lower bounds; and likewise, the semi-continuous upper bound is defined by thecorresponding entry in the array of upper bounds of the problem.Semi-continuous variables can be specified in MPS and LP files. Stating a MIP Problem onpage 256 tells you how to specify variables as semi-continuous.Describing the ProblemWith this background about semi-continuous variables, consider an example using them.Assume that you are managing a power plant of several generators. Each of the generators334 <strong>ILOG</strong> <strong>CPLEX</strong> <strong>11.0</strong> — USER’ S MANUAL

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!