16.01.2015 Views

GAMS — The Solver Manuals - Available Software

GAMS — The Solver Manuals - Available Software

GAMS — The Solver Manuals - Available Software

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

CPLEX 11 165<br />

and integer variables, even though there may exist several solutions that have the same values for all binary and<br />

integer variables but different values for continuous variables.<br />

Likewise, for the same reason, the populate procedure does not generate all possible solutions for unbounded<br />

models. As soon as the proof of unboundedness is obtained, the populate procedure stops.<br />

Cplex uses numerical methods of finite-precision arithmetic. Consequently, the feasibility of a solution depends<br />

on the value given to tolerances. Two parameters define the tolerances that assess the feasibility of a solution:<br />

• the integrality tolerance EpInt<br />

• the feasibility tolerance EpRHS<br />

A solution may be considered feasible for one pair of values for these two parameters, and infeasible for a different<br />

pair. This phenomenon is especially noticeable in models with numeric difficulties, for example, in models with<br />

Big M coefficients.<br />

Since the definition of a feasible solution is subject to tolerances, the total number of solutions to a model may<br />

vary, depending on the approach used to enumerate solutions, and on precisely which tolerances are used. In most<br />

models, this tolerance issue is not problematic. But, in the presence of numeric difficulties, Cplex may create<br />

solutions that are slightly infeasible or integer infeasible, and therefore create more solutions than expected.<br />

3.5.3 Filtering the Solution Pool<br />

Filtering allows you to control properties of the solutions generated and stored in the solution pool. Cplex provides<br />

two predefined ways to filter solutions.<br />

If you want to filter solutions based on their difference as compared to a reference solution, use a diversity filter.<br />

This filter is practical for most purposes. However, if you require finer control of which solutions to keep and<br />

which to eliminate, use the incumbent filter.<br />

3.5.4 Diversity Filter<br />

A diversity filter allows you to generate solutions that are similar to (or different from) a set of reference values<br />

that you specify for a set of binary variables using dot option divflt and lower and upper bounds divfltlo and<br />

divfltup. In particular, you can use a diversity filter to generate more solutions that are similar to an existing<br />

solution or to an existing partial solution. If you need more than one diversity filter, for example, to generate<br />

solutions that share the characteristics of several different solutions, additional filters can be specified through a<br />

Cplex Filter File using parameter ReadFLT. Details can be found in the example model solnpool in the <strong>GAMS</strong><br />

model library.<br />

3.5.5 Incumbent Filter<br />

If you need to enforce more complex constraints on solutions (e.g. if you need to enforce nonlinear constraints),<br />

you can use the incumbent filtering. <strong>The</strong> incumbent checking routine is part of the <strong>GAMS</strong> BCH Facility. It will<br />

accept or reject incumbents independent of a solution pool. During the populate or regular optimize procedure,<br />

the incumbent checking routine specified by the parameter userincbcall is called each time a new solution is<br />

found, even if the new solution does not improve the objective value of the incumbent. <strong>The</strong> incumbent filter allows<br />

your application to accept or reject the new solution based on your own criteria. If the <strong>GAMS</strong> program specified<br />

by userincbcall terminates normally, the solution is rejected. If this program returns with a compilation or<br />

execution error, the incumbent is accepted.<br />

3.5.6 Accessing the Solution Pool<br />

<strong>The</strong> <strong>GAMS</strong>/Cplex link produces, if properly instructed, a GDX file with name specified in SolnPool that contains<br />

a set Index with elements file1, file2, ... <strong>The</strong> associated text of these elements contain the file names of the

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

Saved successfully!

Ooh no, something went wrong!