12.07.2015 Views

ILOG CPLEX 11.0 User's Manual

ILOG CPLEX 11.0 User's Manual

ILOG CPLEX 11.0 User's Manual

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

Modifying a ProblemThis section briefly discusses the mechanics of modifying a problem after presolve has beenperformed. This discussion applies only to linear programs; it does not apply to quadraticprograms, quadratically constrained programs, nor mixed integer programs.As noted earlier, the user must indicate through the CPX_PARAM_REDUCE parameter thetypes of modifications that are going to be performed on the problem. Recall that if primalreductions are turned off, the user can add variables, change the righthand-side vector, orloosen variable bounds without losing the presolved problem. These changes are madethrough the standard problem modification interface (CPXaddcols, CPXchgrhs, andCPXchgbds).Recall that if dual reductions are turned off, the user can add constraints to the problem,change the objective function, or tighten variable bounds. Variable bounds are tightenedthrough the standard interface (CPXchgbds). The addition of constraints or changes to theobjective value must be done through the two interface routines CPXpreaddrows andCPXprechgobj. We should note that the constraints added by CPXpreaddrows areequivalent to but sometimes different from those input by the user. The dual variablesassociated with the added rows may take different values than those the user might expect.If a user makes a problem modification that is not consistent with the setting ofCPX_PARAM_REDUCE, the presolved problem is discarded and presolve is reinvoked at thenext optimization call. Similarly, <strong>CPLEX</strong> discards the presolved problem if the usermodifies a variable or constraint that presolve had previously removed from the problem.You can use CPXpreaddrows or CPXprechgobj to make sure that this will not happen.Note that CPXpreaddrows also permits changes to the bounds of the presolved problem. Ifthe nature of the procedure dictates a real need to modify the variables that presolveremoved, you can use the CPXcopyprotected routine to instruct <strong>CPLEX</strong> not to removethose variables from the problem.Instead of changing the bounds on the presolved problem, consider changing the bounds onthe original problem. <strong>CPLEX</strong> will discard the presolved problem, but calling CPXpresolvewill cause <strong>CPLEX</strong> to apply presolve to the modified problem, with the added benefit ofreductions based on the latest problem modifications. Then use CPXcrushx, CPXcrushpi,and CPXcopystart to provide an advanced start for the problem after presolve has beenapplied on the modified problem.<strong>ILOG</strong> <strong>CPLEX</strong> <strong>11.0</strong> — USER’ S MANUAL 481

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

Saved successfully!

Ooh no, something went wrong!