NO FRAMES

Class IloCplex

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

IloCplex derives from the class IloAlgorithm. Use it to solve LP (linear programming), QP (programs with quadratic terms in the objective function), QCP (quadratically constrained programming), and MIP (mixed integer programming) Mathematical Programming models. More precisely, models to be solved by IloCplex should contain only IloExtractable objects from the following list:

The expressions used in the constraints and objective function handled by IloCplex are built from variables of those listed types and can be linear or quadratic. In addition, expressions may contain the following constructs:

Expressions that evaluate only to 0 (zero) and 1 (one) are referred to as Boolean expressions. Such expressions also support:

Moreover, Boolean expressions can be constucted not only from variables, but also from constraints.

IloCplex will automatically transform all of these constructs into an equivalent representation amenable to IloCplex. Such models can be represented in the following way:

     Minimize (or Maximize)   c'x + x'Qx
     subject to               L ≤ Ax ≤ U
                      a_i'x + x'Q_i x ≤ r_i, for i = 1, ..., q
                              l ≤  x ≤ u.
  

That is, in fact, the standard math programming matrix representation that IloCplex uses internally. A is the matrix of linear constraint coefficients, and L and U are the vectors of lower and upper bounds on the vector of variables in the array x. The Q matrix must be positive semi-definite (or negative semi-definite in the maximization case) and represents the quadratic terms of the objective function. The matrices Q_i must be positive semi-definite and represent the quadratic terms of the i-th quadratic constraint. The a_i are vectors containing the correponding linear terms. For details about the Q_i, see the chapter about quadratically constrained programs (QCP) in the ILOG CPLEX User's Manual.

Special ordered sets (SOS) fall outside the conventional representation in terms of A and Q matrices and are stored separately.

If the model contains integer, Boolean, or semi-continuous variables, or if the model has special ordered sets (SOSs), the model is referred to as a mixed integer program (MIP). You can query whether the active model is a MIP with the method IloCplex::isMIP.

A model with quadratic terms in the objective is referred to as a mixed integer quadratic program (MIQP) if it is also a MIP, and a quadratic program (QP) otherwise. You can query whether the active model has a quadratic objective by calling method IloCplex::isQO.

A model with quadratic constraints is referred to as a mixed integer quadratically constrained program (MIQCP) if it is also a MIP, and as a quadratically constrained program (QCP) otherwise. You can query whether the active model is quadratically constrained by calling the method IloCplex::isQC. A QCP may or may not have a quadratic objective; that is, a given problem may be both QP and QCP. Likewise, a MIQCP may or may not have a quadratic objective; that is, a given problem may be both MIQP and MIQCP.

If there are no quadratic terms in the objective, no integer constraints, and the problem is not quadratically constrained, and all variables are continuous it is called a linear program (LP).

Information related to the matrix representation of the model can be queried through these methods:

Additional information about the active model can be obtained through iterators defined on the different types of modeling objects in the extracted or active model.

IloCplex effectively treats all models as MIQCP models. That is, it allows the most general case, although the solution algorithms make efficient use of special cases, such as taking advantage of the absence of quadratic terms in the formulation. The method IloCplex::solve begins by solving the root relaxation of the MIQCP model, where all integrality constraints and SOSs are ignored. If the model has no integrality constraints or SOSs, then the optimization is complete once the root relaxation is solved. Otherwise, IloCplex uses a branch and cut procedure to reintroduce the integrality constraints or SOSs. See the ILOG CPLEX User's Manual for more information about branch & cut.

Most users can simply call solve to solve their models. However, several parameters are available for users who require more control. Perhaps the most important one is IloCplex::RootAlg, which determines the algorithm used to solve the root relaxation. Possible settings, as defined in IloCplex::Algorithm, are:

Numerous other parameters allow you to control algorithmic aspects of the optimizer. See the nested enumerations IloCplex::IntParam, IloCplex::DoubleParam, and IloCplex#StringParam for further information. Parameters are set with the method setParam.

Even higher levels of control can be achieved through goals (see IloCplex::Goal) or through callbacks (see IloCplex::Callback and its extensions).

Information about a Solution

The solve method returns an IloBool value indicating whether (IloTrue) or not (IloFalse) a solution (not necessarily the optimal one) has been found. Further information about the solution can be queried with the method getStatus. The return code of type IloAlgorithm::Status indicates whether the solution is feasible, bounded, or optimal, or if the model has been proven to be infeasible or unbounded.

The method IloCplex::getCplexStatus provides more detailed information about the status of the optimizer after solve returns. For example, it can provide information on why the optimizer terminated prematurely (time limit, iteration limit, or other similar limits). The methods IloCplex::isPrimalFeasible and IloCplex::isDualFeasible can determine whether a primal or dual feasible solution has been found and can be queried.

The most important solution information computed by IloCplex are usually the solution vector and the objective function value. The method IloCplex::getValue queries the solution vector. The method IloCplex::getObjValue queries the objective function value. Most optimizers also compute additional solution information, such as dual values, reduced costs, simplex bases, and others. This additional information can also be queried through various methods of IloCplex. If you attempt to retrive solution information that is not available from a particular optimizer, IloCplex will throw an exception.

If you are solving an LP and a basis is available, the solution can be further analyzed by performing sensitivity analysis. This information tells you how sensitive the solution is with respect to changes in variable bounds, constraint bounds, or objective coefficients. The information is computed and accessed with the methods IloCplex::getBoundSA, IloCplex::getRangeSA, IloCplex::getRHSSA, and IloCplex::getObjSA.

An important consideration when you access solution information is the numeric quality of the solution. Since IloCplex performs arithmetic operations using finite precision, solutions are always subject to numeric errors. For most problems, numeric errors are well within reasonable tolerances. However, for numerically difficult models, you are advised to verify the quality of the solution using the method IloCplex::getQuality, which offers a variety of quality measures.

More about Solving Problems

By default when the method IloCplex::solve is called, IloCplex first presolves the model; that is, it transforms the model into a smaller, yet equivalent model. This operation can be controlled with the following parameters:

For the rare occasion when a user wants to monitor progress during presolve, the callback class IloCplex::PresolveCallbackI is provided.

After the presolve is completed, IloCplex solves the first node relaxation and (in cases of a true MIP) enters the branch & cut process. IloCplex provides callback classes that allow the user to monitor solution progress at each level. Callbacks derived from IloCplex::ContinuousCallbackI or one of its derived classes are called regularly during the solution of a node relaxation (including the root), and callbacks derived from IloCplex::MIPCallbackI or one of its derived callbacks are called regularly during branch & cut search. All callbacks provide the option to abort the current optimization.

Branch Priorities and Directions

When a branch occurs at a node in the branch & cut tree, usually there is a set of fractional-valued variables available to pick from for branching. IloCplex has several built-in rules for making such a choice, and they can be controlled by the parameter IloCplex::VarSel. Also, the method IloCplex::setPriority allows the user to specify a priority order. An instance of IloCplex 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.

Frequently, when two new nodes have been created (controlled by the parameter IloCplex::BtTol), one of the two nodes is processed next. This activity is known as diving. The branch direction determines which of the branches, the up or the down branch, is used when diving. By default, IloCplex automatically selects the branch direction. The user can control the branch direction by the method IloCplex::setDirection.

As mentioned before, the greatest flexibility for controlling the branching during branch & cut search is provided through goals (see IloCplex::Goal) or through the callbacks (see IloCplex::BranchCallbackI). With these concepts, you can control the branching decision based on runtime information during the search, instead of statically through branch priorities and directions, but the default strategies work well on many problems.

Cuts

An instance of IloCplex can also generate certain cuts in order to strengthen the relaxation, that is, in order to make the relaxation a better approximation of the original MIP. Cuts are constraints added to a model to restrict (cut away) noninteger solutions that would otherwise be solutions of the relaxation. The addition of cuts usually reduces the number of branches needed to solve a MIP.

When solving a MIP, IloCplex tries to generate violated cuts to add to the problem after solving a node. After IloCplex adds cuts, the subproblem is re-optimized. IloCplex then repeats the process of adding cuts at a node and reoptimizing until it finds no further effective cuts.

An instance of IloCplex generates its cuts in such a way that they are valid for all subproblems, even when they are discovered during analysis of a particular node. After a cut has been added to the problem, it will remain in the problem to the end of the optimization. However, cuts are added only internally; that is, they will not be part of the model extracted to the IloCplex object after the optimization. Cuts are most frequently seen at the root node, but they may be added by an instance of IloCplex at other nodes as conditions warrant.

IloCplex looks for various kinds of cuts that can be controlled by the following parameters:

During the search, you can query information about those cuts with a callback (see IloCplex::MIPCallbackI and its subclasses). For types of cuts that may take a long time to generate, callbacks are provided to monitor the progress and potentially abort the cut generation progress. In particular, those callback classes are IloCplex::FractionalCutCallbackI and IloCplex::DisjunctiveCutCallbackI. The callback class IloCplex::CutCallbackI allows you to add your own problem-specific cuts during search. This callback also allows you to generate and add local cuts, that is cuts that are only valid within the subtree where they have been added.

Instead of using callbacks, you can use goals to add your own cuts during the optimization.

Heuristics

After a node has been processed, that is, the LP has been solved and no more cuts were generated, IloCplex may try to construct an integer feasible solution from the LP solution at that node. The parameter IloCplex::HeurFreq and other parameters provide some control over this activity. In addition, goals or the callback class IloCplex::HeuristicCallbackI make it possible to call user-written heuristics to find an integer feasible solution.

Again, instead of using callbacks, you can use goals to add inject your own heuristically constructed solution into the running optimization.

Node Selection

When IloCplex is not diving but picking an unexplored node from the tree, several options are available that can be controlled with the parameter IloCplex::NodeSel. Again, IloCplex offers a callback class, IloCplex::NodeCallbackI, to give the user full control over this selection. With goals, objects of type IloCplex::NodeEvaluatorI can be used to define your own selection strategy.

See also IloAlgorithm in the ILOG Concert Reference Manual.

See also Goals among the Concepts in this manual. See also goals in the ILOG CPLEX User's Manual.

See Also:

Constructor Summary
public IloCplex(IloEnv)
public IloCplex(const IloModel)
Method Summary
public IloConstraintaddCut(IloConstraint)
public const IloConstraintArrayaddCuts(const IloConstraintArray)
public IloConstraintaddLazyConstraint(IloConstraint)
public const IloConstraintArrayaddLazyConstraints(const IloConstraintArray)
public IloConstraintaddUserCut(IloConstraint)
public const IloConstraintArrayaddUserCuts(const IloConstraintArray)
public static IloCplex::GoalApply(IloCplex, IloCplex::Goal, IloCplex::NodeEvaluator)
public voidbasicPresolve(const IloNumVarArray, IloNumArray, IloNumArray, const IloRangeArray, IloBoolArray)
public voidclearCuts()
public voidclearLazyConstraints()
public voidclearModel()
public voidclearUserCuts()
public voiddelDirection(IloNumVar)
public voiddelDirections(const IloNumVarArray)
public voiddelPriorities(const IloNumVarArray)
public voiddelPriority(IloNumVar)
public voidexportModel(const char *)
public IloBoolfeasOpt(const IloRangeArray, IloNumArray, IloNumArray, IloBool)
public IloBoolfeasOpt(const IloNumVarArray, IloNumArray, IloNumArray, IloBool)
public IloBoolfeasOpt(const IloRangeArray, IloNumArray, IloNumArray, const IloNumVarArray, IloNumArray, IloNumArray, IloBool)
public voidfreePresolve()
public IloCplex::AlgorithmgetAlgorithm()
public voidgetAX(IloNumArray, const IloRangeArray)
public IloNumgetAX(const IloRange)
public IloCplex::BasisStatusgetBasisStatus(const IloConstraint)
public IloCplex::BasisStatusgetBasisStatus(const IloIntVar)
public IloCplex::BasisStatusgetBasisStatus(const IloNumVar)
public voidgetBasisStatuses(IloCplex::BasisStatusArray, const IloNumVarArray, IloCplex::BasisStatusArray, const IloConstraintArray)
public voidgetBasisStatuses(IloCplex::BasisStatusArray, const IloConstraintArray)
public voidgetBasisStatuses(IloCplex::BasisStatusArray, const IloNumVarArray)
public IloNumgetBestObjValue()
public voidgetBoundSA(IloNumArray, IloNumArray, IloNumArray, IloNumArray, const IloNumVarArray)
public IloCplex::CplexStatusgetCplexStatus()
public IloCplex::CplexStatusgetCplexSubStatus()
public IloNumgetCutoff()
public IloBoolgetDefault(IloCplex::BoolParam)
public IloCplex::DeleteModegetDeleteMode()
public IloCplex::BranchDirectiongetDirection(IloNumVar)
public voidgetDirections(IloCplex::BranchDirectionArray, const IloNumVarArray)
public IloExtractablegetDiverging()
public IloNumgetDual(const IloRange)
public voidgetDuals(IloNumArray, const IloRangeArray)
public IloNumgetFormulationBigValue()
public IloNumgetFormulationEpsValue()
public voidgetIIS(IloCplex::IISStatusArray, IloNumVarArray, IloCplex::IISStatusArray, IloConstraintArray)
public IloIntgetIncumbentNode()
public IloIntgetMax(IloCplex::IntParam)
public IloIntgetMin(IloCplex::IntParam)
public IloIntgetNbarrierIterations()
public IloIntgetNbinVars()
public IloIntgetNcliques()
public IloIntgetNcols()
public IloIntgetNcovers()
public IloIntgetNcrossDExch()
public IloIntgetNcrossDPush()
public IloIntgetNcrossPExch()
public IloIntgetNcrossPPush()
public IloIntgetNdualSuperbasics()
public IloIntgetNintVars()
public IloIntgetNiterations()
public IloIntgetNnodes()
public IloIntgetNnodesLeft()
public IloIntgetNNZs()
public IloIntgetNphaseOneIterations()
public IloIntgetNprimalSuperbasics()
public IloIntgetNQCs()
public IloIntgetNrows()
public IloIntgetNsemiContVars()
public IloIntgetNsemiIntVars()
public IloIntgetNsiftingIterations()
public IloIntgetNsiftingPhaseOneIterations()
public IloIntgetNSOSs()
public voidgetObjSA(IloNumArray, IloNumArray, const IloNumVarArray)
public IloBoolgetParam(IloCplex::BoolParam)
public voidgetPriorities(IloNumArray, const IloNumVarArray)
public IloNumgetPriority(IloNumVar)
public IloCplex::PWLFormulationgetPWLFormulation()
public IloNumgetQuality(IloCplex::Quality, IloNumVar *, IloConstraint *)
public voidgetRangeSA(IloNumArray, IloNumArray, IloNumArray, IloNumArray, const IloRangeArray)
public voidgetRay(IloNumArray, IloNumVarArray)
public IloNumgetReducedCost(const IloIntVar)
public IloNumgetReducedCost(const IloNumVar)
public voidgetReducedCosts(IloNumArray, const IloIntVarArray)
public voidgetReducedCosts(IloNumArray, const IloNumVarArray)
public voidgetRHSSA(IloNumArray, IloNumArray, const IloRangeArray)
public IloNumgetSlack(const IloRange)
public voidgetSlacks(IloNumArray, const IloRangeArray)
public IloAlgorithm::StatusgetStatus()
public IloCplex::AlgorithmgetSubAlgorithm()
public voidgetValues(const IloIntVarArray, IloNumArray)
public voidgetValues(IloNumArray, const IloIntVarArray)
public voidgetValues(IloNumArray, const IloNumVarArray)
public const char *getVersion()
public voidimportModel(IloModel &, const char *)
public voidimportModel(IloModel &, const char *, IloObjective &, IloNumVarArray, IloRangeArray, IloRangeArray, IloRangeArray)
public voidimportModel(IloModel &, const char *, IloObjective &, IloNumVarArray, IloRangeArray, IloSOS1Array, IloSOS2Array, IloRangeArray, IloRangeArray)
public IloBoolisDualFeasible()
public IloBoolisMIP()
public IloBoolisPrimalFeasible()
public IloBoolisQC()
public IloBoolisQO()
public static IloCplex::GoalLimitSearch(IloCplex, IloCplex::Goal, IloCplex::SearchLimit)
public voidpresolve(IloCplex::Algorithm)
public voidqpIndefCertificate(IloNumVarArray, IloNumArray)
public voidreadBasis(const char *)
public voidreadMIPStart(const char *)
public voidreadOrder(const char *)
public voidreadParam(const char *)
public voidreadTree(const char *)
public voidreadVectors(const char *)
public voidsetBasisStatuses(const IloCplex::BasisStatusArray, const IloNumVarArray, const IloCplex::BasisStatusArray, const IloConstraintArray)
public voidsetDefaults()
public voidsetDeleteMode(IloCplex::DeleteMode)
public voidsetDirection(IloNumVar, IloCplex::BranchDirection)
public voidsetDirections(const IloNumVarArray, const IloCplex::BranchDirectionArray)
public voidsetFormulationBigValue(IloNum)
public voidsetFormulationEpsValue(IloNum)
public voidsetParam(IloCplex::BoolParam, IloBool)
public voidsetPriorities(const IloNumVarArray, const IloNumArray)
public voidsetPriority(IloNumVar, IloNum)
public voidsetPWLFormulation(IloCplex::PWLFormulation)
public voidsetVectors(const IloNumArray, const IloNumArray, const IloNumVarArray, const IloNumArray, const IloNumArray, const IloRangeArray)
public IloBoolsolve(IloCplex::Goal)
public IloBoolsolve()
public IloBoolsolveFixed()
public IloCplex::Callbackuse(IloCplex::Callback)
public voidwriteBasis(const char *)
public voidwriteMIPStart(const char *)
public voidwriteOrder(const char *)
public voidwriteParam(const char *)
public voidwriteTextSolution(const char *)
public voidwriteTree(const char *)
public voidwriteVectors(const char *)
Inner Enumeration
IloCplex::Algorithm
IloCplex::BasisStatus
IloCplex::BoolParam
IloCplex::BranchDirection
IloCplex::CplexStatus
IloCplex::DeleteMode
IloCplex::DualPricing
IloCplex::IISStatus
IloCplex::IntParam
IloCplex::MIPEmphasisType
IloCplex::NodeSelect
IloCplex::NumParam
IloCplex::PWLFormulation
IloCplex::PrimalPricing
IloCplex::Quality
IloCplex::StringParam
IloCplex::VariableSelect
Inner Typedef
IloCplex::BasisStatusArray
IloCplex::BranchDirectionArray
IloCplex::IISStatusArray
Inner Class
IloCplex::GoalI
IloCplex::Goal
IloCplex::CutCallbackI
IloCplex::HeuristicCallbackI
IloCplex::BranchCallbackI
IloCplex::ControlCallbackI
IloCplex::DisjunctiveCutCallbackI
IloCplex::FlowMIRCutCallbackI
IloCplex::FractionalCutCallbackI
IloCplex::CrossoverCallbackI
IloCplex::BarrierCallbackI
IloCplex::ContinuousCallbackI
IloCplex::CallbackI
IloCplex::Callback
IloCplex::Exception
IloCplex::MultipleObjException
IloCplex::MultipleConversionException
IloCplex::UnknownExtractableException
IloCplex::InvalidCutException
IloCplex::PresolveCallbackI
IloCplex::SimplexCallbackI
IloCplex::NetworkCallbackI
IloCplex::MIPCallbackI
IloCplex::ProbingCallbackI
IloCplex::IncumbentCallbackI
IloCplex::NodeCallbackI
IloCplex::SolveCallbackI
IloCplex::UserCutCallbackI
IloCplex::LazyConstraintCallbackI
IloCplex::NodeEvaluatorI
IloCplex::NodeEvaluator
IloCplex::SearchLimitI
IloCplex::SearchLimit
Constructor Detail

IloCplex

public IloCplex(IloEnv env)

This constructor creates an ILOG CPLEX algorithm. The new IloCplex object has no IloModel loaded (or extracted) to it.


IloCplex

public IloCplex(const IloModel model)

This constructor creates an ILOG CPLEX algorithm and extracts model for that algorithm.

When you create an algorithm (an instance of IloCplex, for example) and extract a model for it, you can write either this line:


 IloCplex cplex(model);

or these two lines:


 IloCplex cplex(env);

 cplex.extract(model);

Method Detail

Apply

public static IloCplex::Goal Apply(IloCplex cplex, IloCplex::Goal goal, IloCplex::NodeEvaluator eval)

This method is used to create and return a goal that applies the node selection strategy defined by eval to the search strategy defined by goal. The resulting goal will use the node strategy defined by eval for the subtree generated by goal.


LimitSearch

public static IloCplex::Goal LimitSearch(IloCplex cplex, IloCplex::Goal goal, IloCplex::SearchLimit limit)

This method creates and returns a goal that puts the search specified by goal under the limit defined by limit. Only the subtree controlled by goal will be subjected to limit limit.


addCut

public IloConstraint addCut(IloConstraint con)

This method adds con as a cut to the invoking IloCplex object. The cut is not extracted as the regular constraints in a model, but is only copied when invoking the method addCut. Thus, con may be deleted or modified after addCut has been called and the change will not be notified to the invoking IloCplex object.

When columns are deleted from the extracted model, all cuts are deleted as well and need to be reextracted if they should be considered. Cuts are not part of the root problem, but are considered on an as-needed basis. A solution computed by IloCplex is guaranteed to satisfy all cuts added with this method.


addCuts

public const IloConstraintArray addCuts(const IloConstraintArray con)

This method adds the constraints in con as cuts to the invoking IloCplex object. Everything said for IloCplex::addCut applies equally to each of the cuts given in array con.


addLazyConstraint

public IloConstraint addLazyConstraint(IloConstraint con)
Note

This is an advanced method. Advanced methods typically demand a profound understanding of the algorithms used by ILOG CPLEX. Thus they incur a higher risk of incorrect behavior in your application, behavior that can be difficult to debug. Therefore, ILOG encourages you to consider carefully whether you can accomplish the same task by means of other methods instead.

This method adds con as a lazy constraint to the invoking IloCplex object. The constraint con is copied into the lazy constraint pool; the con itself is not part of the pool, so changes to con after it has been copied into the lazy constraint pool will not affect the lazy constraint pool.

Lazy constraints added with addLazyConstraint are typically constraints of the model that are not expected to be violated when left out. The idea behind this is that the LPs that are solved when solving the MIP can be kept smaller when these constraints are not included. IloCplex will, however, include a lazy constraint in the LP as soon as it becomes violated. In other words, the solution computed by IloCplex makes sure that all the lazy constraints that have been added are satisfied.

By contrast, if the constraint does not change the feasible region of the extracted model but only strengthens the formulation, it is referred to as a user cut. While user cuts can be added to IloCplex with addLazyConstraint, it is generally preferable to do so with addUserCuts. It is an error, however, to add lazy constraints by means of the method addUserCuts.

When columns are deleted from the extracted model, all lazy constraints are deleted as well and need to be recopied into the lazy constraint pool. Use of this method in place of addCuts allows for further presolve reductions

This method is equivalent to IloCplex::addCut.

addLazyConstraints

public const IloConstraintArray addLazyConstraints(const IloConstraintArray con)
Note

This is an advanced method. Advanced methods typically demand a profound understanding of the algorithms used by ILOG CPLEX. Thus they incur a higher risk of incorrect behavior in your application, behavior that can be difficult to debug. Therefore, ILOG encourages you to consider carefully whether you can accomplish the same task by means of other methods instead.

This method adds a set of lazy constraints to the invoking IloCplex object. Everything said for IloCplex::addLazyConstraint applies to each of the lazy constraints given in array con.

This method is equivalent to IloCplex::addCuts.

addUserCut

public IloConstraint addUserCut(IloConstraint con)
Note

This is an advanced method. Advanced methods typically demand a profound understanding of the algorithms used by ILOG CPLEX. Thus they incur a higher risk of incorrect behavior in your application, behavior that can be difficult to debug. Therefore, ILOG encourages you to consider carefully whether you can accomplish the same task by means of other methods instead.

This method adds con as a user cut to the invoking IloCplex object. The constraint con is copied into the user cut pool; the con itself is not part of the pool, so changes to con after it has been copied into the user cut pool will not affect the user cut pool.

Cuts added with addUserCut must be real cuts, in that the solution of a MIP does not depend on whether the cuts are added or not. Instead, they are there only to strengthen the formulation.

When columns are deleted from the extracted model, all user cuts are deleted as well and need to be recopied into the user cut pool.

Note

It is an error to use addUserCut for lazy constraints, that is, constraints whose absence may potentially change the solution of the problem. Use addLazyConstraints or, equivalently, addCut when you add such a constraint.


addUserCuts

public const IloConstraintArray addUserCuts(const IloConstraintArray con)
Note

This is an advanced method. Advanced methods typically demand a profound understanding of the algorithms used by ILOG CPLEX. Thus they incur a higher risk of incorrect behavior in your application, behavior that can be difficult to debug. Therefore, ILOG encourages you to consider carefully whether you can accomplish the same task by means of other methods instead.

This method adds a set of user cuts to the invoking IloCplex object. Everything said for IloCplex::addUserCut applies to each of the user cuts given in array con.


basicPresolve

public void basicPresolve(const IloNumVarArray vars, IloNumArray redlb, IloNumArray redub, const IloRangeArray rngs, IloBoolArray redundant)
public void basicPresolve(const IloIntVarArray vars, IloNumArray redlb, IloNumArray redub, const IloRangeArray rngs, IloBoolArray redundant)

This method can be used to compute tighter bounds for the model variables and to detect redundant constraints in the model extracted to the invoking IloCplex object. For every variable specified in parameter vars, it will return possibly tightened bounds in the corresponding elements of arrays redlb and redub. Similarly, for every constraint specified in parameter rngs, this method will return a boolean indicating whether or not it is redundant in the model in the corresponding element of array redundant.


clearCuts

public void clearCuts()

This method deletes all cuts that have previously been added to the invoking IloCplex object with the methods addCut and addCuts.


clearLazyConstraints

public void clearLazyConstraints()
Note

This is an advanced method. Advanced methods typically demand a profound understanding of the algorithms used by ILOG CPLEX. Thus they incur a higher risk of incorrect behavior in your application, behavior that can be difficult to debug. Therefore, ILOG encourages you to consider carefully whether you can accomplish the same task by means of other methods instead.

This method deletes all lazy constraints added to the invoking IloCplex object with the methods IloCplex::addLazyConstraint and IloCplex::addLazyConstraints.

This method is equivalent to IloCplex::clearCuts.

clearModel

public void clearModel()

This method can be used to unextract the model that is currently extracted to the invoking IloCplex object.


clearUserCuts

public void clearUserCuts()
Note

This is an advanced method. Advanced methods typically demand a profound understanding of the algorithms used by ILOG CPLEX. Thus they incur a higher risk of incorrect behavior in your application, behavior that can be difficult to debug. Therefore, ILOG encourages you to consider carefully whether you can accomplish the same task by means of other methods instead.

This method deletes all user cuts that have previously been added to the invoking IloCplex object with the methods IloCplex::addUserCut and IloCplex::addUserCuts.


delDirection

public void delDirection(IloNumVar var)
public void delDirection(IloIntVar var)

This method removes any existing branching direction assignment from variable var.


delDirections

public void delDirections(const IloNumVarArray var)
public void delDirections(const IloIntVarArray var)

This method removes any existing branching direction assignments from all variables in the array var.


delPriorities

public void delPriorities(const IloNumVarArray var)
public void delPriorities(const IloIntVarArray var)

This method removes any existing priority order assignments from all variables in the array var.


delPriority

public void delPriority(IloNumVar var)
public void delPriority(IloIntVar var)

This method removes any existing priority order assignment from variable var.


exportModel

public void exportModel(const char * filename)

This method writes the model that has been extracted to the invoking algorithm in the file filename. The name of the file must include an extension that ILOG CPLEX recognizes as a file format for a model. Supported formats are .sav, .lp and .mps. See the reference manual ILOG CPLEX File Formats for more detail and the ILOG CPLEX User's Manual for additional information about file formats.


feasOpt

public IloBool feasOpt(const IloRangeArray rngs, IloNumArray rnglb, IloNumArray rngub, IloBool optimize)

Attempts to find a feasible relaxation of an active model by relaxing the bounds of the constraints specified in rngs as specified in rnglb and rngub. This is a special version of the method feasOpt(IloRangeArray, IloNumArray, IloNumArray, IloNumVarArray, IloNumArray, IloNumArray, IloBool)

The method returns IloTrue if a feasible relaxation is found along with a solution for it.


feasOpt

public IloBool feasOpt(const IloNumVarArray vars, IloNumArray varlb, IloNumArray varub, IloBool optimize)
public IloBool feasOpt(const IloIntVarArray vars, IloNumArray varlb, IloNumArray varub, IloBool optimize)

Attempts to find a feasible relaxation of an active model by relaxing the bounds of the variables specified in vars as specified in varlb and varub. This is a special version of the method feasOpt(IloRangeArray, IloNumArray, IloNumArray, IloNumVarArray, IloNumArray, IloNumArray, IloBool)

The method returns IloTrue if a feasible relaxation is found, along with a solution for it.


feasOpt

public IloBool feasOpt(const IloRangeArray rngs, IloNumArray rnglb, IloNumArray rngub, const IloNumVarArray vars, IloNumArray varlb, IloNumArray varub, IloBool optimize)
public IloBool feasOpt(const IloRangeArray rngs, IloNumArray rnglb, IloNumArray rngub, const IloIntVarArray vars, IloNumArray varlb, IloNumArray varub, IloBool optimize)

The method feasOpt computes a minimal relaxation of the bounds of variables and constraints that make the active model feasible. For each bound, the user may specify a preferred value indicating how much a relaxation of that bound is acceptable. A negative or 0 (zero) value indicates that the corresponding bound must not be relaxed. Typically, values greater than or equal to 1 (one) should be used. The preference value for relaxing the lower and upper bound of constraint rngs[i] must be provided in rnglb[i] and rngub[i], respectively. Similarly, the preference value for relaxing the lower and upper bound of constraint vars[i] must be provided in varlb[i] and varub[i], respectively.

If enough variables or constraints were allowed to be relaxed, the function will return IloTrue and IloFalse otherwise. In case of success, the routine returns with suggested relaxed values that would make the active model feasible. These bounds are chosen in such a way that the relaxation is minimal in the sense that the sum of (relaxation amount)/(preference value) over all variables and constraints is minimized.

The bounds that make the model feasible are returned in the same arrays as the preference values are passed into this method. That is, after successfull termination of the method feasOpt, rnglb[i] and rngub[i] contain the lower and upper bound to use for the constraint rngs[i] in order to make the model feasible. Similarly, varlb[i] and varub[i] contain the lower and upper bound to use for variable vars[i] in order to make the model feasible. If bounds were not allowed to be relaxed or did not need to be relaxed in order to make the model feasible, the original bounds are returned.

The active model is not changed by this method.

If feasOpt successfully finds a relaxation that made the model feasible, it also installs a solution vector that would be feasible, had the model been relaxed as specified with the returned relaxed bounds. This solution can be queried with the conventional query methods.

When the optind parameter is IloTrue, this method also tries to find the optimal solution of the minimally relaxed model. That is, it finds the solution that is optimal with respect to the original objective function, but requires only minimal relaxation. With the default setting of the parameter optind the original objective funciton is not evaluated.


freePresolve

public void freePresolve()

This method frees the presolved problem. Under the default setting of parameter Reduce, the presolved problem is freed when an optimal solution is found; however, it is not freed if Reduce has been set to 1 (primal reductions) or to 2 (dual reductions). In these instances, the function freePresolve can be used when necessary to free it manually.


getAX

public void getAX(IloNumArray val, const IloRangeArray con)

For the constraints in con, this method places the values of the expressions, or, equivalently, the activity levels of the constraints for the current solution of the invoking IloCplex object into the array val. Array val is resized to the same size as array con, and val[i] will contain the slack value for constraint con[i]. All ranges in con must be part of the extracted model.


getAX

public IloNum getAX(const IloRange range)

This method returns the value of the expression of constraint range, or, equivalently, its activity level, for the current solution of the invoking IloCplex object. The range must be part of the extracted model.


getAlgorithm

public IloCplex::Algorithm getAlgorithm()

This method returns the algorithm type that was used to solve the most recent model in cases where it was not a MIP.


getBasisStatus

public IloCplex::BasisStatus getBasisStatus(const IloConstraint con)

This method returns the basis status of the implicit slack or artificial variable created for the constraint con.


getBasisStatus

public IloCplex::BasisStatus getBasisStatus(const IloIntVar var)

This method returns the basis status for the variable var.


getBasisStatus

public IloCplex::BasisStatus getBasisStatus(const IloNumVar var)

This method returns the basis status for the variable var.


getBasisStatuses

public void getBasisStatuses(IloCplex::BasisStatusArray cstat, const IloNumVarArray var, IloCplex::BasisStatusArray rstat, const IloConstraintArray con)
public void getBasisStatuses(IloCplex::BasisStatusArray cstat, const IloIntVarArray var, IloCplex::BasisStatusArray rstat, const IloConstraintArray con)

This method puts the basis status of each variable in var into the corresponding element of the array cstat, and it puts the status of each row in con (an array of ranges or constraints) into the corresponding element of the array rstat. Arrays rstat and cstat are resized accordingly.


getBasisStatuses

public void getBasisStatuses(IloCplex::BasisStatusArray stat, const IloConstraintArray con)

This method puts the basis status of each constraint in con into the corresponding element of the array stat. Array stat is resized accordingly.


getBasisStatuses

public void getBasisStatuses(IloCplex::BasisStatusArray stat, const IloNumVarArray var)
public void getBasisStatuses(IloCplex::BasisStatusArray stat, const IloIntVarArray var)

This method puts the basis status of each variable in var into the corresponding element of the array stat. Array stat is resized accordingly.


getBestObjValue

public IloNum getBestObjValue()
This method returns a bound on the optimal solution value of the problem. When a model has been solved to optimality, this value matches the optimal solution value. If a MIP optimization is terminated before optimality has been proven, this value is computed for a minimization (maximization) problem as the minimum (maximum) objective function value of all remaining unexplored nodes.

getBoundSA

public void getBoundSA(IloNumArray lblower, IloNumArray lbupper, IloNumArray ublower, IloNumArray ubupper, const IloNumVarArray vars)
public void getBoundSA(IloNumArray lblower, IloNumArray lbupper, IloNumArray ublower, IloNumArray ubupper, const IloIntVarArray vars)

For the given set of variables vars, bound sensitivity information is computed. When the method returns, the element lblower[j] and lbupper[j] will contain the lowest and highest value the lower bound of variable vars[j] can assume without affecting the optimality of the solution. Likewise, ublower[j] and ubupper[j] will contain the lowest and highest value the upper bound of variable vars[j] can assume without affecting the optimality of the solution. The arrays lblower, lbupper, ublower, and ubupper will be resized to the size of array vars. The value 0 (zero) can be passed for any of the return arrays if the information is not desired.


getCplexStatus

public IloCplex::CplexStatus getCplexStatus()

This method returns the ILOG CPLEX status of the invoking algorithm. For possible ILOG CPLEX values, see the enumeration type IloCplex::CplexStatus.


getCplexSubStatus

public IloCplex::CplexStatus getCplexSubStatus()

This method is used to access the solution status of the last node problem that was solved in the event of an error termination in the previous invocation of IloCplex::solve. The method IloCplex::getCplexSubStatus returns 0 in the event of a normal termination. If the invoking IloCplex object is continuous, this is equivalent to the status returned by the method IloCplex::getCplexStatus.


getCutoff

public IloNum getCutoff()

This method returns the MIP cutoff value being used during the MIP optimization. In a minimization problem, all nodes are pruned that have an optimal solution value of the continuous relaxation that is larger than the current cutoff value. The cutoff is updated with the incumbent. If the invoking IloCplex object is an LP or QP, +IloInfinity or -IloInfinity is returned, depending on the optimization sense.


getDefault

public IloBool getDefault(IloCplex::BoolParam parameter)
public const char * getDefault(IloCplex::StringParam parameter)
public IloNum getDefault(IloCplex::NumParam parameter)
public IloInt getDefault(IloCplex::IntParam parameter)

These method return the default setting for the parameter parameter.


getDeleteMode

public IloCplex::DeleteMode getDeleteMode()

This method returns the current delete mode of the invoking IloCplex object.


getDirection

public IloCplex::BranchDirection getDirection(IloNumVar var)
public IloCplex::BranchDirection getDirection(IloIntVar var)

This method returns the branch direction previously assigned to variable var with method IloCplex::setDirectionor IloCplex::setDirections. If no direction has been assigned, IloCplex::BranchGlobal will be returned.


getDirections

public void getDirections(IloCplex::BranchDirectionArray dir, const IloNumVarArray var)
public void getDirections(IloCplex::BranchDirectionArray dir, const IloIntVarArray var)

This method returns the branch directions previously assigned to variables listed in var with the method setDirection or setDirections. When the function returns, dir[i] will contain the branch direction assigned for variables var[i]. If no branch direction has been assigned to var[i], dir[i] will be set to IloCplex::BranchGlobal.


getDiverging

public IloExtractable getDiverging()

This method returns the diverging variable or constraint, in a case where the primal Simplex algorithm has determined the problem to be infeasible. The returned extractable is either an IloNumVar or an IloConstraint object extracted to the invoking IloCplex optimizer; it is of type IloNumVar if the diverging column corresponds to a variable, or of type IloConstraint if the diverging column corresponds to the slack variable of a constraint.


getDual

public IloNum getDual(const IloRange range)

This method returns the dual value associated with constraint range in the current solution of the invoking algorithm.


getDuals

public void getDuals(IloNumArray val, const IloRangeArray con)

This method puts the dual values associated with the ranges in the array con into the array val. Array val is resized to the same size as array con, and val[i] will contain the dual value for constraint con[i].


getFormulationBigValue

public IloNum getFormulationBigValue()

The method getFormulationBigValue returns the current setting of the large value used to set a bound on otherwise unbounded expressions appearing in logical constraints. Such a value is sometimes referred to as Big M.

By default, this value is 1e6. You can change that default setting by means of the method setFormulationBigValue.

In order to transform a logical constraint automatically into an equivalent MIP representation, it is sometimes necessary to set a finite upper or lower bound on an otherwise unbounded term. When such a bound does not already exist, CPLEX uses the value returned by this method for that purpose. For example, consider the following disjunction (that is, or-statement):

 (x == 1) || (x ≥ 2)
 

It is necessary to have an upper bound on x. If the upper bound on x is IloInfinity, CPLEX will use the value returned by getFormulationBigValue in the transformed representation of logical formulations.


getFormulationEpsValue

public IloNum getFormulationEpsValue()

This method returns the epsilon value that is used to model strict relations. In order to model a strict inequality, such as x < b in a MIP, IloCplex uses x ≤ b - eps as a surrogate, where eps is the value returned by this method.


getIIS

public void getIIS(IloCplex::IISStatusArray cstat, IloNumVarArray var, IloCplex::IISStatusArray rstat, IloConstraintArray rng)

If an LP model has been proven to be infeasible, this method can compute an irreducibly inconsistent set (IIS). The variables and range constraints in the IIS are returned in the arrays var and rng, respectively.

Note

CPLEX resizes these arrays for you.

For each variable var[i], cstat[i] gives the IIS status for that variable in the IIS, where the meaning of cstat[i] is:

IloCplex::Lower the lower bound of the variable participates in the IIS

IloCplex::Upper the upper bound of the variable participates in the IIS

IloCplex::Both both variable bounds participate in the IIS

Similarly, for each range constraint rng[i], rstat[i] gives the IIS status for that constraint in the IIS, where the meaning of rstat[i] is:

IloCplex::Lower the lower bound of the constraint participates in the IIS

IloCplex::Upper the upper bound of the constraint participates in the IIS

IloCplex::Both range is equality constraint and participates in the IIS.

The statuses IloCplex::Lower and IloCplex::Upper are needed only for constraints that are truly ranged, that is, where both bounds are finite but different.

By definition, if any of the bounds or constraints participating in the IIS is removed, the IIS becomes feasible. However, this does not mean that the model also becomes feasible by doing so. Instead, there may be yet another source of infeasiblity in the model.

If the LP has been proven infeasible but no basis is available, IloCplex automatically invokes the primal simplex optimizer to compute the basis needed for the IIS-finding algorithm.


getIncumbentNode

public IloInt getIncumbentNode()

This method returns the node number where the current incumbent was found. If the invoking IloCplex object is an LP or a QP, 0 is returned.


getMax

public IloInt getMax(IloCplex::IntParam parameter)
public IloNum getMax(IloCplex::NumParam parameter)

These method return the maximum allowed value for the parameter parameter.


getMin

public IloInt getMin(IloCplex::IntParam parameter)
public IloNum getMin(IloCplex::NumParam parameter)

These method return the minimum allowed value for the parameter parameter.


getNNZs

public IloInt getNNZs()

This method returns the number of non-zeros extracted to the constraint matrix A of the invoking algorithm.


getNQCs

public IloInt getNQCs()

This method returns the number of quadratic constraints extracted from the active model for the invoking algorithm. This number may be different from the total number of constraints in the active model because linear constraints are not accounted for in this function.

See Also:


getNSOSs

public IloInt getNSOSs()

This method returns the number of SOSs extracted for the invoking algorithm. There may be differences in the number returned by this function and the number of IloNumVar, etc. in the model that is extracted. This is because piecewise linear functions are extracted to a set of SOS.


getNbarrierIterations

public IloInt getNbarrierIterations()

This method returns the number of barrier iterations from the last solve.


getNbinVars

public IloInt getNbinVars()

This method returns the number of binary variables in the matrix representation of the active model in the invoking IloCplex object.


getNcliques

public IloInt getNcliques()

This method returns the number of clique cuts that have been added to the problem. If the invoking IloCplex object is not a MIP, 0 is returned.


getNcols

public IloInt getNcols()

This method returns the number of columns extracted for the invoking algorithm. There may be differences in the number returned by this function and the number of object of type IloNumVar and its subclasses in the model that is extracted. This is because automatic transformation of non-linear constraints and expressions may introduce new variables.


getNcovers

public IloInt getNcovers()

This method returns the number of cover cuts that have been added to the problem. If the invoking IloCplex object is not a MIP, 0 is returned.


getNcrossDExch

public IloInt getNcrossDExch()

This method returns the number of dual exchange operations in the crossover of the last call to method solve or solveFixed, if barrier with crossover has been used for solving an LP or QP.


getNcrossDPush

public IloInt getNcrossDPush()

This method returns the number of dual push operations in the crossover of the last call to IloCplex::solve or IloCplex::solveFixed, if barrier with crossover was used for solving an LP or QP.


getNcrossPExch

public IloInt getNcrossPExch()

This method returns the number of primal exchange operations in the crossover of the last call of method IloCplex::solve or IloCplex::solveFixed, if barrier with crossover was used for solving an LP of QP.


getNcrossPPush

public IloInt getNcrossPPush()

This method returns the number of primal push operations in the crossover of the last call of method IloCplex::solve or IloCplex::solveFixed, if barrier with crossover was used for solving an LP or QP.


getNdualSuperbasics

public IloInt getNdualSuperbasics()

This method returns the number of dual superbasic variables in the current solution of the invoking IloCplex object.


getNintVars

public IloInt getNintVars()

This method returns the number of integer variables in the matrix representation of the active model in the invoking IloCplex object.


getNiterations

public IloInt getNiterations()

This method returns the number of iterations that occurred during the last call to the method IloCplex::solve in the invoking algorithm.


getNnodes

public IloInt getNnodes()

This method returns the number of branch-and-cut nodes that were processed in the current solution. If the invoking IloCplex object is not a MIP, it returns 0.


getNnodesLeft

public IloInt getNnodesLeft()

This method returns the number of branch-and-cut nodes that remain to be processed in the current solution. If the invoking IloCplex object is not a MIP, it returns 0.


getNphaseOneIterations

public IloInt getNphaseOneIterations()

If a simplex method was used for solving continuous model, this method returns the number of iterations in phase 1 of the last call to IloCplex::solve or IloCplex::solveFixed.


getNprimalSuperbasics

public IloInt getNprimalSuperbasics()

This method returns the number of primal superbasic variables in the current solution of the invoking IloCplex object.


getNrows

public IloInt getNrows()

This method returns the number of rows extracted for the invoking algorithm. There may be differences in the number returned by this function and the number of IloRanges and IloConstraints in the model that is extracted. This is because quadratic constraints are not accounted for by method getNrows and automatic transformation of non-linear constraints and expressions may introduce new constraints.

See Also:


getNsemiContVars

public IloInt getNsemiContVars()

This method returns the number of semi-continuous variables in the matrix representation of the active model in the invoking IloCplex object.


getNsemiIntVars

public IloInt getNsemiIntVars()

This method returns the number of semi-integer variables in the matrix representation of the active model in the invoking IloCplex object.


getNsiftingIterations

public IloInt getNsiftingIterations()

This method returns the number of sifting iterations performed for solving the last LP with algorithm type IloCplex::Sifting, or, equivalently, the number of work LPs that have been solved for it.


getNsiftingPhaseOneIterations

public IloInt getNsiftingPhaseOneIterations()

This method returns the number of sifting iterations performed for solving the last LP with algorithm type IloCplex::Sifting in order to achieve primal feasibility.


getObjSA

public void getObjSA(IloNumArray lower, IloNumArray upper, const IloNumVarArray vars)
public void getObjSA(IloNumArray lower, IloNumArray upper, const IloIntVarArray cols)

This method performs objecitve sensitivity analysis for the variables specified in array vars. When this method returns lower[i] and upper[i] will contain the lowest and highest value the objective function coefficient for variable vars[i] can assume without affecting the optimality of the solution. The arrays lower and upper will be resized to the size of array vars. If any of the information is not requested, 0 (zero) can be passed for the corresponding array parameter.


getPWLFormulation

public IloCplex::PWLFormulation getPWLFormulation()

This method queries the way piecewise linear expressions are represented when CPLEX automatically transforms them during extraction.


getParam

public IloBool getParam(IloCplex::BoolParam parameter)
public const char * getParam(IloCplex::StringParam parameter)
public IloNum getParam(IloCplex::NumParam parameter)
public IloInt getParam(IloCplex::IntParam parameter)

This method returns the current setting of parameter in the invoking algorithm.

See the reference manual ILOG CPLEX Parameters and the ILOG CPLEX User's Manual for more information about these parameters. Also see the user's manual for examples of their use.


getPriorities

public void getPriorities(IloNumArray pri, const IloNumVarArray var)
public void getPriorities(IloNumArray pri, const IloIntVarArray var)

This method returns query branch priorities previously assigned to variables listed in var with the method setPriority or setPriorities. When the function returns, pri[i] will contain the priority value assigned for variables var[i]. If no priority has been assigned to var[i], pri[i] will contain 0 (zero).


getPriority

public IloNum getPriority(IloNumVar var)
public IloNum getPriority(IloIntVar var)

This method returns the priority previously assigned to the variable var with the method setPriority or setPriorities. It returns 0 (zero) if no priority has been assigned.


getQuality

public IloNum getQuality(IloCplex::Quality q, IloNumVar * var, IloConstraint * rng)
public IloNum getQuality(IloCplex::Quality q, IloConstraint * rng, IloNumVar * var)

These method return the requested quality measure.

Some quality measures are related to a variable or a constraint. For example IloCplex::MaxPrimalInfeas is related to the variable or range constraint where the maximum infeasibility (bound violation) occurs. If this information is also requested, pointers to IloNumVar or IloConstraint objects may be passed for the optional parameters where the relevant variable or range will be written.


getRHSSA

public void getRHSSA(IloNumArray lower, IloNumArray upper, const IloRangeArray cons)

This method performs righthand side sensitivity analysis for the constraints specified in array cons. The constraints must be of the form cons[i]: expr[i] rel rhs[i]. When this method returns lower[i] and upper[i] will contain the lowest and highest value rhs[i] can assume without affecting the optimality of the solution. The arrays lower and upper will be resized to the size of array cons. If any of the information is not requested, 0 (zero) can be passed for the corresponding array parameter.


getRangeSA

public void getRangeSA(IloNumArray lblower, IloNumArray lbupper, IloNumArray ublower, IloNumArray ubupper, const IloRangeArray con)

This method performs sensistivity analysis for the upper and lower bounds of the ranged constraints passed in the array con. When the method returns, lblower[i] and lbupper[i] will contain, respecitively, the lowest and the highest value that the lower bound of constraint con[i] can assume without affecting the optimality of the solution. Similarly, ublower[i] and ubupper[i] will contain, respectively, the lowest and the highest value that the upper bound of the constraint con[i] can assume without affecting the optimality of the solution. The arrays lblower, lbupper, ublower, and ubupper will be resized to the size of array con. If any of the information is not requested, 0 can be passed for the corresponding array parameter.


getRay

public void getRay(IloNumArray vals, IloNumVarArray vars)

This method returns an unbounded direction (also known as a ray) corresponding to the present basis for an LP that has been determined to be an unbounded problem. CPLEX puts the the variables of the extracted model into the array vars and it puts the corresponding values of the unbounded direction into the array vals.

Note

CPLEX resizes these arrays for you.


getReducedCost

public IloNum getReducedCost(const IloIntVar var)

This method returns the reduced cost associated with var in the invoking algorithm.


getReducedCost

public IloNum getReducedCost(const IloNumVar var)

This method returns the reduced cost associated with var in the invoking algorithm.


getReducedCosts

public void getReducedCosts(IloNumArray val, const IloIntVarArray var)

This method puts the reduced costs associated with the numeric variables of the array var into the array val. The array val is automatically resized to the same length as array var, and val[i] will contain the reduced cost for variable var[i].


getReducedCosts

public void getReducedCosts(IloNumArray val, const IloNumVarArray var)

This method puts the reduced costs associated with the variables in the array var into the array val. Array val is resized to the same size as array var, and val[i] will contain the reduced cost for variable var[i].


getSlack

public IloNum getSlack(const IloRange range)

This method returns the slack value associated with constraint range in the current solution of the invoking algorithm. For a range with finite lower and upper bounds, the slack value consists of the difference between the expression of the range and its lower bound.


getSlacks

public void getSlacks(IloNumArray val, const IloRangeArray con)

This method puts the slack values associated with the constraints indicated by the array con into the array val. For a ranged constraint with finite lower and upper bounds, the slack value consists of the difference between the expression in the range and its lower bound. Array val is resized to the same size as array con, and val[i] will contain the slack value for constraint con[i].


getStatus

public IloAlgorithm::Status getStatus()

This method returns the status of the invoking algorithm. For its ILOG CPLEX status, see the method IloCplex::getCplexStatus.


getSubAlgorithm

public IloCplex::Algorithm getSubAlgorithm()

This method returns the algorithm type that was used to solve most recent node of a MIP.


getValues

public void getValues(const IloIntVarArray var, IloNumArray val)

This method puts the solution values of the integer variables indicated by the array var into the array val. Array val is resized to the same size as array var, and val[i] will contain the solution value for variable var[i].


getValues

public void getValues(IloNumArray val, const IloIntVarArray var)

This method puts the solution values of the integer variables indicated by the array var into the array val. Array val is resized to the same size as array var, and val[i] will contain the solution value for variable var[i].


getValues

public void getValues(IloNumArray val, const IloNumVarArray var)

This method puts the solution values of the numeric variables indicated by the array var into the array val. Array val is resized to the same size as array var, and val[i] will contain the solution value for variable var[i].


getVersion

public const char * getVersion()

This method returns a string indicating the version of IloCplex.


importModel

public void importModel(IloModel & m, const char * filename)

This method reads a model from the file indicated by filename into model. The invoking IloCplex object is not affected when calling this method unless model is its active model.


importModel

public void importModel(IloModel & m, const char * filename, IloObjective & obj, IloNumVarArray vars, IloRangeArray rngs, IloRangeArray lazy, IloRangeArray cuts)

This method is an simplification of the importModel method that does not provide arrays to return SOS's. This method is more easy to use in the case that you are dealing with continuous models, because in this case you already know that no SOS's will be present.


importModel

public void importModel(IloModel & model, const char * filename, IloObjective & obj, IloNumVarArray vars, IloRangeArray rngs, IloSOS1Array sos1, IloSOS2Array sos2, IloRangeArray lazy, IloRangeArray cuts)

This method reads a model from the file indicated by filename into model. Note, that the invoking IloCplex object is not affected when calling this method unless model is its active model. It places the objective it has read in obj, the variables it has read in the array vars, the ranges it has read in the array rngs; and the Special Ordered Sets it has read in the arrays sos1 and sos2.

Note
CPLEX resizes these arrays for you to accomodate the returned objects.
Note

This notes is for advanced users only. The two arrays lazy and cuts are filled with the lazy constraints and user cuts that may be included in the model in file filename.


isDualFeasible

public IloBool isDualFeasible()

This method returns IloTrue if a dual feasible solution is recorded in the invoking IloCplex object and can be queried.


isMIP

public IloBool isMIP()

This method returns IloTrue if the invoking algorithm has extracted a model that is a MIP (mixed-integer programming problem) and IloFalse otherwise. Member functions for accessing duals and reduced cost basis work only if the model is not a MIP.


isPrimalFeasible

public IloBool isPrimalFeasible()

This method returns IloTrue if a primal feasible solution is recorded in the invoking IloCplex object and can be queried.


isQC

public IloBool isQC()

This method returns IloTrue if the invoking algorithm has extracted a model that is quadratically constrained. Otherwise, it returns IloFalse. For an explanation of quadratically constrained see the topic QCP in the ILOG CPLEX User's Manual.


isQO

public IloBool isQO()

This method returns IloTrue if the invoking algorithm has extracted a model that has quadratic objective function terms. Otherwise, it returns IloFalse.


presolve

public void presolve(IloCplex::Algorithm alg)

This method performs Presolve on the model. The enumeration alg tells Presolve which algorithm is intended to be used on the reduced model; NoAlg should be specified for MIP models.


qpIndefCertificate

public void qpIndefCertificate(IloNumVarArray var, IloNumArray x)
public void qpIndefCertificate(IloIntVarArray var, IloNumArray x)

The quadratic objective terms in a QP model must form a positive semi-definite Q matrix (negative semi-definite for maximization). If IloCplex finds that this is not true, it will discontinue the optimization. In such cases, the qpIndefCertificate method can be used to compute assignments (returned in array x) to all variables (returned in array var) such that the quadratic term of the objective function evaluates to a negative value (x'Q x < 0 in matrix terms) to prove the indefiniteness.

Note
CPLEX resizes these arrays for you.

readBasis

public void readBasis(const char * name)

Reads a simplex basis from the BAS file indicated by name, and copies that basis into the invoking IloCplex object. The parameter AdvInd must be set to a nonzero value (e.g. its default setting) for the simplex basis to be used to start a subsequent optimization with one of the Simplex algorithms.

By convention, the file extension is .bas. The BAS file format is documented in the reference manual ILOG CPLEX File Formats.


readMIPStart

public void readMIPStart(const char * name)

Reads the MST file indicated by name and copies the MIP start information into the invoking IloCplex object. The parameter MIPStart must be turned on in order for the MIP start information to be used to with a subsequent MIP optimization. The default value for the parameter is off.

By convention, the file extension is .mst. The MST file format is documented in the reference manual ILOG CPLEX File Formats.


readOrder

public void readOrder(const char * filename)

This method reads a priority order from an file in ORD format into the invoking IloCplex object. The names in the ORD file must match the names in the active model. The priority order will be associated with the model. The parameter MipOrdType must be nonzero, for the next invocation of the method IloCplex::solve to take the order into account.

By convention, the file extension is .ord. The ORD file format is documented in the reference manual ILOG CPLEX File Formats.


readParam

public void readParam(const char * name)

Reads parameters and their settings from the file indicated by name and applies them to the invoking IloCplex object. Parameters not listed in the parameter file will be reset to their default setting.

By convention, the file extension is .prm. The PRM file format is documented in the reference manual ILOG CPLEX File Formats.


readTree

public void readTree(const char * name)

Reads branch-and-bound progress information from a prior run, contained in the TRE file indicated by name, into a CPLEX problem object. The parameter AdvInd must set to a nonzero value be on (e.g. its default value), in order for the tree to be used for starting a subsequent optimization.

By convention, the file extension is .tre. The TRE file format is documented in the reference manual ILOG CPLEX File Formats.


readVectors

public void readVectors(const char * name)

Reads a barrier solution from the VEC file indicated by name and copies this information into a CPLEX problem object. This routine is typically used to initiate a crossover from the barrier solution. The parameter AdvInd must set to a nonzero value (e.g. its default setting) in order for the vector file to take effect for starting a crossover at the next invokation of a simplex algorithm with method solve.

By convention, the file extension is .vec. The VEC file format is documented in the reference manual ILOG CPLEX File Formats.


setBasisStatuses

public void setBasisStatuses(const IloCplex::BasisStatusArray cstat, const IloNumVarArray var, const IloCplex::BasisStatusArray rstat, const IloConstraintArray con)
public void setBasisStatuses(const IloCplex::BasisStatusArray cstat, const IloIntVarArray var, const IloCplex::BasisStatusArray rstat, const IloConstraintArray con)

This method uses the array cstats to set the basis status of the variables in the array var; it uses the array rstats to set the basis status of the ranges in the array con.


setDefaults

public void setDefaults()

This method resets all CPLEX parameters to their default values.


setDeleteMode

public void setDeleteMode(IloCplex::DeleteMode mode)

This method sets the delete mode in the invoking IloCplex object to mode.


setDirection

public void setDirection(IloNumVar var, IloCplex::BranchDirection dir)
public void setDirection(IloIntVar var, IloCplex::BranchDirection dir)

This method sets the preferred branching direction for variable var to dir. This setting will cause CPLEX first to explore the branch indicated by dir after branching on variable var.


setDirections

public void setDirections(const IloNumVarArray var, const IloCplex::BranchDirectionArray dir)
public void setDirections(const IloIntVarArray var, const IloCplex::BranchDirectionArray dir)

This method sets the preferred branching direction for each variable in the array var to the corresponding value in the array dir. This will cause CPLEX to first explore the branch indicated by dir[i] after branching on variable var[i].


setFormulationBigValue

public void setFormulationBigValue(IloNum v)

This method sets the large value used to set a bound on any otherwise unbounded expressions appearing in logical constraints. Such a value is sometimes referred to as Big M. By default, it is set to 1e6.

The method getFormulationBigValue returns the current setting of the large value.

In order to transform a logical constraint autmatically into an equivalent MIP formulation, it is sometimes necessary to set a finite upper or lower bound on an otherwise unbounded term. When such a bound does not already exist, CPLEX uses the value set by this method for that purpose. For example, consider the following disjunction (that is, an or-statement):

 (x == 1) || (x ≥ 2)
 

It is necessary to have an upper bound on x. If the upper bound on x is IloInfinity, CPLEX will use the value controlled by this method in the transformed representation of logical formulations.


setFormulationEpsValue

public void setFormulationEpsValue(IloNum eps)

This method sets the epsilon value that is used to model strict relations. In order to model a strict inequality such as x < b in a MIP, IloCplex uses x ≤ b - eps as a surrogate, where eps is the value controlled by this method.


setPWLFormulation

public void setPWLFormulation(IloCplex::PWLFormulation f)

This method allows you to control the way piecewise linear expressions are represented when CPLEX automatically transforms them during extraction.


setParam

public void setParam(IloCplex::BoolParam parameter, IloBool value)
public void setParam(IloCplex::StringParam parameter, const char * value)
public void setParam(IloCplex::NumParam parameter, IloNum value)
public void setParam(IloCplex::IntParam parameter, IloInt value)

This method sets parameter to value in the invoking algorithm. See the ILOG CPLEX User's Manual for more detailed information about parameters and for examples of their use.


setPriorities

public void setPriorities(const IloNumVarArray var, const IloNumArray pri)
public void setPriorities(const IloIntVarArray var, const IloNumArray pri)

This method sets the priority order for all variables in the array var to the corresponding value in the array pri. During branching, integer variables with higher priorities are given preference over integer variables with lower priorities. Further, variables that have priority values assigned to them are given preference over variables that don't. Priorities must be positive integers.


setPriority

public void setPriority(IloNumVar var, IloNum pri)
public void setPriority(IloIntVar var, IloNum pri)

This method sets the priority order for the variable var to pri. During branching, integer variables with higher priorities are given preference over integer variables with lower priorities. Further, variables that have priority values assigned to them are given preference over variables that don't. Priorities must be positive integers.


setVectors

public void setVectors(const IloNumArray x, const IloNumArray dj, const IloNumVarArray var, const IloNumArray slack, const IloNumArray pi, const IloRangeArray rng)
public void setVectors(const IloNumArray x, const IloNumArray dj, const IloIntVarArray var, const IloNumArray slack, const IloNumArray pi, const IloRangeArray rng)

This method allows a user to specify a starting point for the following invocation of the IloCplex::solve method. Zero can be passed for any of the parameters. However, if x or dj is not zero, var must not be zero either. Similarly, if slack or pi is not zero, rng must not be zero either.

For all variables in var, x[i] specifies the starting value for the variable var[i]. Similarly, dj[i] specifies the starting reduced cost for variable var[i]. For all ranged constraints specified in rng, slack[i] specifies the starting slack value for rng[i]. Similarly, pi[i] specifies the starting dual value for rng[i].

This information is exploited at the next call to IloCplex::solve, to construct a starting point for the algorithm, provided that the AdvInd parameter is set to a value greater than or equal to one. In particular, if the extracted model is an LP, and the root algorithm is dual or primal, the information is used to construct a starting basis for the simplex method for the original model, if AdvInd is set to 1 (one). If AdvInd is set to 2, the information is used to construct a starting basis for the presolved model.

If the extracted model is a MIP, only x values can be used, and a value must be specified for all variables of type ILOINT. If the provided values are compatible with an integer feasible solution, that solution becomes the incumbent for the next search; otherwise, the starting information is ignored. The parameter IloCplex::MIPStart must be turned on (that is, set to IloTrue) for the starting point to take effect.


solve

public IloBool solve(IloCplex::Goal goal)

This method initializes the goal stack of the root node with goal before starting the branch & cut search. The search tree will be defined by the execute method of goal and its subgoals. See the concept Goals and the nested class IloCplex::GoalI for more information.


solve

public IloBool solve()

This method solves the model currently extracted to the invoking IloCplex object. The method returns IloTrue if it finds a solution (not necessarily an optimal one).


solveFixed

public IloBool solveFixed()

After the invoking algorithm has solved the extracted MIP model to a feasible (but not necessarily optimal) solution as a MIP, this member function solves the relaxation of the model obtained by fixing all the integer variables of the extracted MIP to the values of the current solution.


use

public IloCplex::Callback use(IloCplex::Callback cb)

This method instructs the invoking IloCplex object to use cb as a callback. If a callback of the same type as cb is already being used by the invoking IloCplex object, the previously used callback will be overridden. If the callback object cb is already being used by another IloCplex object, a copy of cb will be used instead. A handle to the callback that is installed in the invoking IloCplex object is returned. See IloCplex::CallbackI for a discussion of how to implement callbacks.


writeBasis

public void writeBasis(const char * name)

Writes the current Simplex basis to the file indicated by name.

By convention, the file extension is .bas. The BAS file format is documented in the reference manual ILOG CPLEX File Formats.


writeMIPStart

public void writeMIPStart(const char * name)

Writes MIP start information to a file indicated by name

By convention, the file extension is .mst. The MST file format is documented in the reference manual ILOG CPLEX File Formats.


writeOrder

public void writeOrder(const char * filename)

This method writes a priority order to the file filename. If a priority order has been associated with the CPLEX problem object, or the parameter MipOrdType is nonzero, or a MIP feasible solution exists, this method writes the priority order into the indicated file.

By convention, the file extension is .ord. The ORD file format is documented in the reference manual ILOG CPLEX File Formats.


writeParam

public void writeParam(const char * name)

Writes the parameter name and its current setting into the file indicated by name for all the CPLEX parameters that are not currently set at their default.

By convention, the file extension is .prm. The PRM file format is documented in the reference manual ILOG CPLEX File Formats.


writeTextSolution

public void writeTextSolution(const char * name)

Writes a solution file in text format for the current problem to the file indicated by name.


writeTree

public void writeTree(const char * name)

Writes the branch-and-bound tree from the last optimization to a file speified by name in TRE format.

By convention, the file extension is .tre. The TRE file format is documented in the reference manual ILOG CPLEX File Formats.


writeVectors

public void writeVectors(const char * name)

This method writes solution information from a barrier optimization (without crossover) into the file indicated by name. By convention, the file extension is .vec. The VEC file format is documented in the reference manual ILOG CPLEX File Formats.


Inner Enumeration Detail

Enumeration Algorithm

Definition file: ilocplexi.h
Include files: ilocplex.h

The enumeration IloCplex::Algorithm lists the available algorithms in CPLEX to solve continuous models as controlled by the parameters IloCplex::RootAlg and IloCplex::NodeAlg.

See Also:

Fields
NoAlg
= CPX_ALG_NONE
AutoAlg
= CPX_ALG_AUTOMATIC
Primal
= CPX_ALG_PRIMAL
Dual
= CPX_ALG_DUAL
Barrier
= CPX_ALG_BARRIER
Sifting
= CPX_ALG_SIFTING
Concurrent
= CPX_ALG_CONCURRENT
Network
= CPX_ALG_NET

Enumeration BasisStatus

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

The enumeration IloCplex::BasisStatus lists values that the status of variables or range constraints may assume in a basis. NotABasicStatus is not a valid status for a variable. A basis containing such a status does not constitute a valid basis. The basis status of a ranged constraint corresponds to the basis status of the corresponding slack or artificial variable that IloCplex manages for it.

See Also:

Fields
NotABasicStatus
Basic
AtLower
AtUpper
FreeOrSuperbasic

Enumeration BoolParam

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

The enumeration IloCplex::BoolParam lists the parameters of CPLEX that require Boolean values. Boolean values are also known in certain contexts as binary values or as zero-one (0-1) values. Use these values with the methods that accept Boolean parameters: IloCplex::getParam and IloCplex::setParam.

See the reference manual ILOG CPLEX Parameters for more information about these parameters. Also see the user's manual for examples of their use.

See Also:

Fields
DepInd
= CPX_PARAM_DEPIND
PreInd
= CPX_PARAM_PREIND
MIPStart
= CPX_PARAM_MIPSTART
ReverseInd
= CPX_PARAM_REVERSEIND
XXXInd
= CPX_PARAM_XXXIND
MIPOrdInd
= CPX_PARAM_MIPORDIND
RelaxPreInd
= CPX_PARAM_RELAXPREIND
PerInd
= CPX_PARAM_PERIND
PreLinear
= CPX_PARAM_PRELINEAR
DataCheck
= CPX_PARAM_DATACHECK
BarOOC
= CPX_PARAM_BAROOC
Symmetry
= CPX_PARAM_SYMMETRY
QPmakePSDInd
= CPX_PARAM_QPMAKEPSDIND
FinalFactor
= CPX_PARAM_FINALFACTOR

Enumeration BranchDirection

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

The enumeration IloCplex::BranchDirection lists values that can be used for specifying branch directions either with the branch direction parameter IloCplex::BrDir or with the methods IloCplex::setDirection and IloCplex::setDirections. The branch direction specifies which direction to explore first after branching on one variable.

See the reference manual ILOG CPLEX Parameters and the ILOG CPLEX User's Manual for more information about these parameters. Also see the user's manual for examples of their use.

See Also:

Fields
BranchGlobal
= CPX_BRANCH_GLOBAL
BranchDown
= CPX_BRANCH_DOWN
BranchUp
= CPX_BRANCH_UP

Enumeration CplexStatus

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

The enumeration IloCplex::CplexStatus lists values that the status of an IloCplex algorithm can assume. These values can be accessed via the method IloCplex::getCplexStatus and IloCplex::getCplexSubStatus and provide information about what the algorithm learned about the active model in the most recent invocation of the method solve or feasOpt. It may also tell why the algorithm terminated.

See the group optim.cplex.solutionstatus in the Callable Library Reference Manual, where they are listed in alphabetic order, or the topic Interpreting Solution Status Codes in the Overview of the APIs, where they are listed in numeric order, for more information about these values. Also see the ILOG CPLEX User's Manual for examples of their use.

See also the enumeration IloAlgorithm::Status in the ILOG Concert Technology Reference Manual.

See Also:

Fields
Unknown
Optimal
= CPX_STAT_OPTIMAL
Unbounded
= CPX_STAT_UNBOUNDED
Infeasible
= CPX_STAT_INFEASIBLE
InfOrUnbd
= CPX_STAT_INForUNBD
OptimalInfeas
= CPX_STAT_OPTIMAL_INFEAS
NumBest
= CPX_STAT_NUM_BEST
FeasibleRelaxed
= CPX_STAT_FEASIBLE_RELAXED
OptimalRelaxed
= CPX_STAT_OPTIMAL_RELAXED
AbortObjLim
= CPX_STAT_ABORT_OBJ_LIM
AbortPrimObjLim
= CPX_STAT_ABORT_PRIM_OBJ_LIM
AbortDualObjLim
= CPX_STAT_ABORT_DUAL_OBJ_LIM
AbortItLim
= CPX_STAT_ABORT_IT_LIM
AbortTimeLim
= CPX_STAT_ABORT_TIME_LIM
AbortUser
= CPX_STAT_ABORT_USER
OptimalFaceUnbounded
= CPX_STAT_OPTIMAL_FACE_UNBOUNDED
OptimalTol
= CPXMIP_OPTIMAL_TOL
SolLim
= CPXMIP_SOL_LIM
NodeLimFeas
= CPXMIP_NODE_LIM_FEAS
NodeLimInfeas
= CPXMIP_NODE_LIM_INFEAS
FailFeas
= CPXMIP_FAIL_FEAS
FailInfeas
= CPXMIP_FAIL_INFEAS
MemLimFeas
= CPXMIP_MEM_LIM_FEAS
MemLimInfeas
= CPXMIP_MEM_LIM_INFEAS
FailFeasNoTree
= CPXMIP_FAIL_FEAS_NO_TREE
FailInfeasNoTree
= CPXMIP_FAIL_INFEAS_NO_TREE

Enumeration DeleteMode

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

This enumeration lists the possible settings for the delete mode of IloCplex as controlled by the method IloCplex::setDeleteMode and queried by the method IloCplex::getDeleteMode.

With the default setting IloCplex::LeaveBasis, an existing basis will remain unchanged if variables or constraints are removed from the loaded LP model. This choice generally renders the basis unusable for a restart when CPLEX is solving the modified LP and the advance indicator (parameter IloCplex::AdvInd) is set to IloTrue.

In contrast, with delete mode set to IloCplex::FixBasis, the invoking object will do basis pivots in order to maintain a valid basis when variables or constraints are removed. This choice makes the delete operation more computation-intensive, but may give a better starting point for reoptimization after modification of the extracted model.

If no basis is present in the invoking object, the setting of the delete mode has no effect.

See Also:

Fields
LeaveBasis
FixBasis

Enumeration DualPricing

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

The enumeration IloCplex::DualPricing lists values that the dual pricing parameter IloCplex:DPriInd can assume in IloCplex for use with the dual simplex algorithm. Use these values with the method IloCplex::setParam(IloCplex::DPriInd, value) when you set the dual pricing indicator.

See the reference manual ILOG CPLEX Parameters and the ILOG CPLEX User's Manual for more information about these parameters. Also see the user's manual for examples of their use.

See Also:

Fields
DPriIndAuto
= CPX_DPRIIND_AUTO
DPriIndFull
= CPX_DPRIIND_FULL
DPriIndSteep
= CPX_DPRIIND_STEEP
DPriIndFullSteep
= CPX_DPRIIND_FULLSTEEP
DPriIndSteepQStart
= CPX_DPRIIND_STEEPQSTART
DPriIndDevex
= CPX_DPRIIND_DEVEX

Enumeration IISStatus

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

The enumeration IloCplex::IISStatus lists values that indicate the status that variables and constraints can assume in an irreducibly inconsistent set (IIS) in IloCplex.

See Also:

Fields
Lower
= CPXIIS_AT_LOWER
Both
= CPXIIS_FIXED
Upper
= CPXIIS_AT_UPPER

Enumeration IntParam

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

IloCplex is the class for the CPLEX algorithms in ILOG CPLEX. The enumeration IloCplex::IntParam lists the parameters of CPLEX that require integer values. Use these values with the methods IloCplex::getParam and IloCplex::setParam.

See the reference manual ILOG CPLEX Parameters and the ILOG CPLEX User's Manual for more information about these parameters. Also see the user's manual for examples of their use.

See Also:

Fields
AdvInd
= CPX_PARAM_ADVIND
RootAlg
= CPX_PARAM_LPMETHOD
NodeAlg
= CPX_PARAM_SUBALG
MIPEmphasis
= CPX_PARAM_MIPEMPHASIS
AggFill
= CPX_PARAM_AGGFILL
AggInd
= CPX_PARAM_AGGIND
BasInterval
= CPX_PARAM_BASINTERVAL
ClockType
= CPX_PARAM_CLOCKTYPE
CraInd
= CPX_PARAM_CRAIND
PreDual
= CPX_PARAM_PREDUAL
PrePass
= CPX_PARAM_PREPASS
PreCompress
= CPX_PARAM_PRECOMPRESS
DPriInd
= CPX_PARAM_DPRIIND
PriceLim
= CPX_PARAM_PRICELIM
IISInd
= CPX_PARAM_IISIND
SimDisplay
= CPX_PARAM_SIMDISPLAY
ItLim
= CPX_PARAM_ITLIM
NetFind
= CPX_PARAM_NETFIND
PerLim
= CPX_PARAM_PERLIM
PPriInd
= CPX_PARAM_PPRIIND
ReInv
= CPX_PARAM_REINV
ScaInd
= CPX_PARAM_SCAIND
Threads
= CPX_PARAM_THREADS
SingLim
= CPX_PARAM_SINGLIM
RowGrowth
= CPX_PARAM_ROWGROWTH
ColGrowth
= CPX_PARAM_COLGROWTH
NzGrowth
= CPX_PARAM_NZGROWTH
Reduce
= CPX_PARAM_REDUCE
QPNzGrowth
= CPX_PARAM_QPNZGROWTH
NzReadLim
= CPX_PARAM_NZREADLIM
ColReadLim
= CPX_PARAM_COLREADLIM
RowReadLim
= CPX_PARAM_ROWREADLIM
QPNzReadLim
= CPX_PARAM_QPNZREADLIM
SiftDisplay
= CPX_PARAM_SIFTDISPLAY
SiftAlg
= CPX_PARAM_SIFTALG
SiftItLim
= CPX_PARAM_SIFTITLIM
BrDir
= CPX_PARAM_BRDIR
Cliques
= CPX_PARAM_CLIQUES
CoeRedInd
= CPX_PARAM_COEREDIND
Covers
= CPX_PARAM_COVERS
MIPDisplay
= CPX_PARAM_MIPDISPLAY
MIPInterval
= CPX_PARAM_MIPINTERVAL
MIPThreads
= CPX_PARAM_MIPTHREADS
IntSolLim
= CPX_PARAM_INTSOLLIM
NodeFileInd
= CPX_PARAM_NODEFILEIND
NodeLim
= CPX_PARAM_NODELIM
NodeSel
= CPX_PARAM_NODESEL
VarSel
= CPX_PARAM_VARSEL
BndStrenInd
= CPX_PARAM_BNDSTRENIND
HeurFreq
= CPX_PARAM_HEURFREQ
RINSHeur
= CPX_PARAM_RINSHEUR
SubMIPNodeLim
= CPX_PARAM_SUBMIPNODELIM
MIPOrdType
= CPX_PARAM_MIPORDTYPE
BBInterval
= CPX_PARAM_BBINTERVAL
FlowCovers
= CPX_PARAM_FLOWCOVERS
ImplBd
= CPX_PARAM_IMPLBD
Probe
= CPX_PARAM_PROBE
GUBCovers
= CPX_PARAM_GUBCOVERS
StrongCandLim
= CPX_PARAM_STRONGCANDLIM
StrongItLim
= CPX_PARAM_STRONGITLIM
StrongThreadLim
= CPX_PARAM_STRONGTHREADLIM
FracCand
= CPX_PARAM_FRACCAND
FracCuts
= CPX_PARAM_FRACCUTS
FracPass
= CPX_PARAM_FRACPASS
PreslvNd
= CPX_PARAM_PRESLVND
FlowPaths
= CPX_PARAM_FLOWPATHS
MIRCuts
= CPX_PARAM_MIRCUTS
DisjCuts
= CPX_PARAM_DISJCUTS
AggCutLim
= CPX_PARAM_AGGCUTLIM
CutPass
= CPX_PARAM_CUTPASS
DiveType
= CPX_PARAM_DIVETYPE
BarAlg
= CPX_PARAM_BARALG
BarColNz
= CPX_PARAM_BARCOLNZ
BarDisplay
= CPX_PARAM_BARDISPLAY
BarItLim
= CPX_PARAM_BARITLIM
BarMaxCor
= CPX_PARAM_BARMAXCOR
BarOrder
= CPX_PARAM_BARORDER
BarThreads
= CPX_PARAM_BARTHREADS
BarCrossAlg
= CPX_PARAM_BARCROSSALG
BarStartAlg
= CPX_PARAM_BARSTARTALG
NetItLim
= CPX_PARAM_NETITLIM
NetPPriInd
= CPX_PARAM_NETPPRIIND
NetDisplay
= CPX_PARAM_NETDISPLAY

Enumeration MIPEmphasisType

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

The enumeration IloCplex::MIPEmphasisType lists the values that the MIP emphasis parameter IloCplex::MIPEmphasis can assume in an instance of IloCplex for use when it is solving MIP problems. Use these values with the method IloCplex::setParam(IloCplex::MIPEmphasis, value) when you set MIP emphasis.

With the default setting of IloCplex::MIPEmphasisBalance, IloCplex tries to compute the branch & cut algorithm in such a way as to find a proven optimal solution quickly. For a discussion about various settings, refer to the ILOG CPLEX User's Manual.

See the reference manual ILOG CPLEX Parameters and the ILOG CPLEX User's Manual for more information about these parameters. Also see the user's manual for examples of their use.

See Also:

Fields
MIPEmphasisBalanced
= CPX_MIPEMPHASIS_BALANCED
MIPEmphasisOptimality
= CPX_MIPEMPHASIS_OPTIMALITY
MIPEmphasisFeasibility
= CPX_MIPEMPHASIS_FEASIBILITY
MIPEmphasisBestBound
= CPX_MIPEMPHASIS_BESTBOUND
MIPEmphasisHiddenFeas
= CPX_MIPEMPHASIS_HIDDENFEAS

Enumeration NodeSelect

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

The enumeration IloCplex::NodeSelect lists values that the parameter IloCplex::NodeSel can assume in IloCplex. Use these values with the method IloCplex::setParam(IloCplex::NodeSel, value).

See the reference manual ILOG CPLEX Parameters and the ILOG CPLEX User's Manual for more information about these parameters. Also see the user's manual for examples of their use.

See Also:

Fields
DFS
= CPX_NODESEL_DFS
BestBound
= CPX_NODESEL_BESTBOUND
BestEst
= CPX_NODESEL_BESTEST
BestEstAlt
= CPX_NODESEL_BESTEST_ALT

Enumeration NumParam

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

The enumeration IloCplex::NumParam lists the parameters of CPLEX that require numeric values. Use these values with the member functions: IloCplex::getParam and IloCplex::setParam.

See the reference manual ILOG CPLEX Parameters information about these parameters. Also see the ILOG CPLEX User's Manual for more examples of their use.

See Also:

Fields
EpMrk
= CPX_PARAM_EPMRK
EpOpt
= CPX_PARAM_EPOPT
EpPer
= CPX_PARAM_EPPER
EpRHS
= CPX_PARAM_EPRHS
NetEpOpt
= CPX_PARAM_NETEPOPT
NetEpRHS
= CPX_PARAM_NETEPRHS
TiLim
= CPX_PARAM_TILIM
BtTol
= CPX_PARAM_BTTOL
CutLo
= CPX_PARAM_CUTLO
CutUp
= CPX_PARAM_CUTUP
EpGap
= CPX_PARAM_EPGAP
EpInt
= CPX_PARAM_EPINT
EpAGap
= CPX_PARAM_EPAGAP
ObjDif
= CPX_PARAM_OBJDIF
ObjLLim
= CPX_PARAM_OBJLLIM
ObjULim
= CPX_PARAM_OBJULIM
RelObjDif
= CPX_PARAM_RELOBJDIF
CutsFactor
= CPX_PARAM_CUTSFACTOR
TreLim
= CPX_PARAM_TRELIM
WorkMem
= CPX_PARAM_WORKMEM
BarEpComp
= CPX_PARAM_BAREPCOMP
BarQCPEpComp
= CPX_PARAM_BARQCPEPCOMP
BarGrowth
= CPX_PARAM_BARGROWTH
BarObjRng
= CPX_PARAM_BAROBJRNG

Enumeration PWLFormulation

Definition file: ilocplexi.h
Include files: ilocplex.h

The enumeration PWLFormulation defines symbolic constants that represent various ways of representing piecewise linear expressions in a MIP. Which of these ways to use is controlled by the method setPWLFormulation. All of these formulations have the same theoretical strength. However, in practice, the effectiveness for solving a particular model may vary dramatically, depending on the formulation being used. These are the various formulations:

Fields
LambdaSOS
LambdaBin
Disjunctive
Delta

Enumeration PrimalPricing

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

The enumeration IloCplex::PrimalPricing lists values that the primal pricing parameter IloCplex::PPriInd can assume in IloCplex for use with the primal simplex algorithm. Use these values with the method IloCplex::setParam(IloCplex::PPriInd, value) when setting the primal pricing indicator.

See the reference manual ILGO CPLEX Parameters and the ILOG CPLEX User's Manual for more information about these parameters. Also see the user's manual for examples of their use.

See Also:

Fields
PPriIndPartial
= CPX_PPRIIND_PARTIAL
PPriIndAuto
= CPX_PPRIIND_AUTO
PPriIndDevex
= CPX_PPRIIND_DEVEX
PPriIndSteep
= CPX_PPRIIND_STEEP
PPriIndSteepQStart
= CPX_PPRIIND_STEEPQSTART
PPriIndFull
= CPX_PPRIIND_FULL

Enumeration Quality

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

The enumeration IloCplex::Quality lists types of quality measures that can be queried for a solution with method IloCplex::getQuality.

See the group optim.cplex.solutionquality in the ILOG CPLEX Callable Library Reference Manual for more information about these values. Also see the ILOG CPLEX User's Manual for examples of their use.

See Also:

Fields
MaxPrimalInfeas
= CPX_MAX_PRIMAL_INFEAS
MaxScaledPrimalInfeas
= CPX_MAX_SCALED_PRIMAL_INFEAS
SumPrimalInfeas
= CPX_SUM_PRIMAL_INFEAS
SumScaledPrimalInfeas
= CPX_SUM_SCALED_PRIMAL_INFEAS
MaxDualInfeas
= CPX_MAX_DUAL_INFEAS
MaxScaledDualInfeas
= CPX_MAX_SCALED_DUAL_INFEAS
SumDualInfeas
= CPX_SUM_DUAL_INFEAS
SumScaledDualInfeas
= CPX_SUM_SCALED_DUAL_INFEAS
MaxIntInfeas
= CPX_MAX_INT_INFEAS
SumIntInfeas
= CPX_SUM_INT_INFEAS
MaxPrimalResidual
= CPX_MAX_PRIMAL_RESIDUAL
MaxScaledPrimalResidual
= CPX_MAX_SCALED_PRIMAL_RESIDUAL
SumPrimalResidual
= CPX_SUM_PRIMAL_RESIDUAL
SumScaledPrimalResidual
= CPX_SUM_SCALED_PRIMAL_RESIDUAL
MaxDualResidual
= CPX_MAX_DUAL_RESIDUAL
MaxScaledDualResidual
= CPX_MAX_SCALED_DUAL_RESIDUAL
SumDualResidual
= CPX_SUM_DUAL_RESIDUAL
SumScaledDualResidual
= CPX_SUM_SCALED_DUAL_RESIDUAL
MaxCompSlack
= CPX_MAX_COMP_SLACK
SumCompSlack
= CPX_SUM_COMP_SLACK
MaxX
= CPX_MAX_X
MaxScaledX
= CPX_MAX_SCALED_X
MaxPi
= CPX_MAX_PI
MaxScaledPi
= CPX_MAX_SCALED_PI
MaxSlack
= CPX_MAX_SLACK
MaxScaledSlack
= CPX_MAX_SCALED_SLACK
MaxRedCost
= CPX_MAX_RED_COST
MaxScaledRedCost
= CPX_MAX_SCALED_RED_COST
SumX
= CPX_SUM_X
SumScaledX
= CPX_SUM_SCALED_X
SumPi
= CPX_SUM_PI
SumScaledPi
= CPX_SUM_SCALED_PI
SumSlack
= CPX_SUM_SLACK
SumScaledSlack
= CPX_SUM_SCALED_SLACK
SumRedCost
= CPX_SUM_RED_COST
SumScaledRedCost
= CPX_SUM_SCALED_RED_COST
Kappa
= CPX_KAPPA
Objgap

DEPRECATED use OjbGap instead

ObjGap
= CPX_OBJ_GAP
DualobJ

DEPRECATED use DualObj instead

DualObj
= CPX_DUAL_OBJ
Primalobj

DEPRECATED use PrimalObj instead

PrimalObj
= CPX_PRIMAL_OBJ

Enumeration StringParam

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

The enumeration IloCplex::StringParam lists the parameters of CPLEX that require a character string as a value. Use these values with the methods IloCplex::getParam and IloCplex::setParam.

See the reference manual ILOG CPLEX Parameter Table and the ILOG CPLEX User's Manual for more information about these parameters. Also see the user's manual for examples of their use.

See Also:

Fields
WorkDir
= CPX_PARAM_WORKDIR

Enumeration VariableSelect

Definition file: ilocplexi.h
Include files: ilcplex/ilocplex.h

The enumeration IloCplex::VariableSelect lists values that the parameter IloCplex::VarSel can assume in IloCplex. Use these values with the method IloCplex::setParam(IloCplex::VarSel, value).

See the reference manual ILOG CPLEX Parameters and the ILOG CPLEX User's Manual for more information about these parameters. Also see the user's manual for examples of their use.

See Also:

Fields
MinInfeas
= CPX_VARSEL_MININFEAS
DefaultVarSel
= CPX_VARSEL_DEFAULT
MaxInfeas
= CPX_VARSEL_MAXINFEAS
Pseudo
= CPX_VARSEL_PSEUDO
Strong
= CPX_VARSEL_STRONG
PseudoReduced
= CPX_VARSEL_PSEUDOREDUCED
Inner Typedef Detail

Typedef BasisStatusArray

Definition file: ilocplexi.h
Include files: ilocplex.h

IloArray< BasisStatus > BasisStatusArray

This type defines an array-type for IloCplex::BasisStatus. The fully qualified name of a basis status array is IloCplex::BasisStatusArray.

See Also:

Typedef BranchDirectionArray

Definition file: ilocplexi.h
Include files: ilocplex.h

IloArray< BranchDirection > BranchDirectionArray

This type defines an array-type for IloCplex::BranchDirection. The fully qualified name of a branch direction array is IloCplex::BranchDirectionArray.

See Also:

Typedef IISStatusArray

Definition file: ilocplexi.h
Include files: ilocplex.h

IloArray< IISStatus > IISStatusArray

This type defines an array-type for IloCplex::IISStatus. The fully qualified name of a basis status array is IloCplex::IISStatusArray.

See Also: