Skip to main content
FRAMES NO FRAMES

Group optim.cplex.cpp

The API of CPLEX for users of C++.
Class Summary
Callback::Context
ControlCallbackI::PresolvedVariableException
IloBound
IloCplex
IloCplex::Aborter
IloCplex::AsyncHandle
IloCplex::BarrierCallbackI
IloCplex::BranchCallbackI
IloCplex::Callback
IloCplex::CallbackI
IloCplex::ContinuousCallbackI
IloCplex::ControlCallbackI
IloCplex::CrossoverCallbackI
IloCplex::Deserializer
IloCplex::DisjunctiveCutCallbackI
IloCplex::DisjunctiveCutInfoCallbackI
IloCplex::Exception
IloCplex::ExtractedConstraintException
IloCplex::FeasOptHandle
IloCplex::FlowMIRCutCallbackI
IloCplex::FlowMIRCutInfoCallbackI
IloCplex::FractionalCutCallbackI
IloCplex::FractionalCutInfoCallbackI
IloCplex::Goal
IloCplex::GoalI
IloCplex::HeuristicCallbackI
IloCplex::IncumbentCallbackI
IloCplex::InvalidCutException
IloCplex::LazyConstraintCallbackI
IloCplex::LongAnnotation
IloCplex::MIPCallbackI
IloCplex::MIPInfoCallbackI
IloCplex::MultipleConversionException
IloCplex::MultipleObjException
IloCplex::NetworkCallbackI
IloCplex::NodeCallbackI
IloCplex::NodeEvaluator
IloCplex::NodeEvaluatorI
IloCplex::NumAnnotation
IloCplex::OptimizationCallbackI
IloCplex::Parameter
IloCplex::ParameterSet
IloCplex::PopulateHandle
IloCplex::PresolveHandle
IloCplex::ProbingCallbackI
IloCplex::ProbingInfoCallbackI
IloCplex::RefineConflictHandle
IloCplex::RefineMIPStartConflictHandle
IloCplex::RemoteInfoHandler
IloCplex::SearchLimit
IloCplex::SearchLimitI
IloCplex::Serializer
IloCplex::SimplexCallbackI
IloCplex::SolveCallbackI
IloCplex::SolveFixedHandle
IloCplex::SolveHandle
IloCplex::TuneParamHandle
IloCplex::TuningCallbackI
IloCplex::UnknownExtractableException
IloCplex::UserCutCallbackI
IloModelingAssistance
MIPCallbackI::NodeData
ParameterSet::Iterator
Typedef Summary
ControlCallbackI::IntegerFeasibilityArray
GoalI::IntegerFeasibilityArray
IloCplex::BasisStatusArray
IloCplex::BranchDirectionArray
IloCplex::ConflictStatusArray
IloInt64
Macro Summary
ILOBARRIERCALLBACK0
ILOBRANCHCALLBACK0
ILOCONTINUOUSCALLBACK0
ILOCPLEXGOAL0
ILOCROSSOVERCALLBACK0
ILODISJUNCTIVECUTCALLBACK0
ILODISJUNCTIVECUTINFOCALLBACK0
ILOFLOWMIRCUTCALLBACK0
ILOFLOWMIRCUTINFOCALLBACK0
ILOFRACTIONALCUTCALLBACK0
ILOFRACTIONALCUTINFOCALLBACK0
ILOHEURISTICCALLBACK0
ILOINCUMBENTCALLBACK0
ILOLAZYCONSTRAINTCALLBACK0
ILOMIPCALLBACK0
ILOMIPINFOCALLBACK0
ILONETWORKCALLBACK0
ILONODECALLBACK0
ILOPROBINGCALLBACK0
ILOPROBINGINFOCALLBACK0
ILOSIMPLEXCALLBACK0
ILOSOLVECALLBACK0
ILOTUNINGCALLBACK0
ILOUSERCUTCALLBACK0
Enumeration Summary
BranchCallbackI::BranchType
Callback::Type
ControlCallbackI::IntegerFeasibility
GoalI::BranchType
GoalI::IntegerFeasibility
IloBound::Type
IloCplex::Algorithm
IloCplex::BasisStatus
IloCplex::BoolParam
IloCplex::BranchDirection
IloCplex::CalcQCPDuals
IloCplex::ConflictAlgorithm
IloCplex::ConflictStatus
IloCplex::CplexStatus
IloCplex::CutManagement
IloCplex::CutType
IloCplex::DataCheckType
IloCplex::DeleteMode
IloCplex::DistMIPRampupDuration
IloCplex::DualPricing
IloCplex::IntParam
IloCplex::LongParam
IloCplex::MIPEmphasisType
IloCplex::MIPStartEffort
IloCplex::MIPsearch
IloCplex::MultiObjInt64Info
IloCplex::MultiObjIntInfo
IloCplex::MultiObjNumInfo
IloCplex::NodeSelect
IloCplex::NumParam
IloCplex::OptimalityTargetType
IloCplex::Parallel_Mode
IloCplex::PrimalPricing
IloCplex::Quality
IloCplex::Relaxation
IloCplex::SolutionType
IloCplex::StringParam
IloCplex::TuningStatus
IloCplex::VariableSelect
IloCplex::WriteLevelType
IncumbentCallbackI::SolutionSource
Info::Infos
SolutionStrategy::Types

What is IloCplex?

IloCplex is a Concert Technology class derived from IloAlgorithm. Instances of this class are capable of solving optimization problems of the following types:

An instance of IloCplex can extract and solve models consisting of the following Concert Technology extractables:

Extractable Class Used to Model
IloNumVar numeric variables
IloSemiContVar semi-continuous or semi-integer variables
IloObjective at most one objective function with linear, piecewise linear, or quadratic expressions
IloRange range constraints with linear or piecewise linear expressions
IloConstraint ranged constraints of the form expr1relationexpr, where expr1 indicates a linear, logical, or quadratic expression and the relation less than or equal to or the relation greater than or equal to; constraints can be combined by logical operators
IloConversion variable type conversions
IloModel submodels
IloSOS1 special ordered sets of type 1
IloSOS2 special ordered sets of type 2
IloAnd constraint clauses

What is special about this set of extractable classes recognized by IloCplex is that models consisting of these objects can be transformed into mathematical programming problems of the form:

overview1a.gif

When all variables are continuous and Q is zero, problems of this form are known as Linear Programs (LPs). If Q is not zero, such problems are known as Quadratic Programs (QPs). If any variables are integer, semi-continuous, or Boolean, such problems are called Mixed Integer Programs (MIPs). A MIP with a zero Q matrix is called a Mixed Integer Linear Program (MILP), and a MIP with a non-zero Q is called a Mixed Integer Quadratic Program (MIQP). If there are quadratic constraints in the problem, and its variables are continuous, it is known as a Quadratically Constrained Program (QCP). If in addition to the quadratic constraints, there are discrete variables in the problem (such as integer, Boolean, or semi-continuous variables), then it is known as MIQCP.

IloCplex Optimizer Options

An instance of the class IloCplex is not really only one algorithm, but, in fact, consists of a set of highly configurable algorithms, also known as optimizer options. They include primal and dual simplex algorithms, barrier algorithm, a sifting algorithm, a network simplex algorithm, and a branch-and-cut algorithm for MIPs. Though in most cases IloCplex can be used like a black box, the optimizer options can be selected individually to provide a wealth of parameters that allow you to fine tune the algorithm to your particular model. In the case of the mixed integer optimizer, you can use your own goals or callbacks and directly control the branch-and-cut search carried out by IloCplex.

The most general kind of problem is a MIP. You might think of the LPs as a subset of MIPs: an LP is a problem in which the model is:

For linear programming problems (LPs), a variety of additional solution information can be queried. These queries include dual information or, with the appropriate optimizer option, basis information. Sensitivity analysis allows you to analyze how you can modify your model while preserving the same solution. Or, if your model is infeasible, the infeasibility finder enables you to analyze the source of the infeasibility.