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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

488 PATH 4.6<br />

In the context of nonlinear complementarity problems the generalized minimum map corresponds to the classic<br />

minimum map min(x, F (x)). Furthermore, for NCPs the minimum map and the Fischer function are both local<br />

error bounds and were shown to be equivalent in [36]. Figure 28.10 in the subsequent section plots all of these<br />

merit functions for the ill-defined example discussed therein and highlights the differences between them.<br />

<strong>The</strong> squared norm of Φ, namely Ψ(x) := 1 2<br />

∑ φ(xi , F i ) 2 , is continuously differentiable on R n provided F itself is.<br />

<strong>The</strong>refore, the first order optimality conditions for the unconstrained minimization of Ψ(x), namely ∇Ψ(x) = 0<br />

give another indication as to whether the point under consideration is a solution of MCP.<br />

<strong>The</strong> merit functions and the information PATH provides at the solution can be useful for diagnostic purposes. By<br />

default, PATH 4.x returns the best point with respect to the merit function because this iterate likely provides<br />

better information to the modeler. As detailed in Section 2.4, the default merit function in PATH 4.x is the<br />

Fischer function. To change this behavior the merit function option can be used.<br />

3.2.2 Crashing Method<br />

<strong>The</strong> crashing technique [12] is used to quickly identify an active set from the user-supplied starting point. At<br />

this time, a proximal perturbation scheme [1, 2] is used to overcome problems with a singular basis matrix. <strong>The</strong><br />

proximal perturbation is introduced in the crash method, when the matrix factored is determined to be singular.<br />

<strong>The</strong> value of the perturbation is based on the current merit function value.<br />

Even if the crash method is turned off, for example via the option crash method none, perturbation can be<br />

added. This is determined by factoring the matrix that crash would have initially formed. This behavior is<br />

extremely useful for introducing a perturbation for singular models. It can be turned off by issuing the option<br />

crash perturb no.<br />

3.2.3 Nonmontone Searches<br />

<strong>The</strong> first line of defense against convergence to stationary points is the use of a nonmonotone linesearch [23, 24, 15].<br />

In this case we define a reference value, R k and we use this value in test for sufficient decrease: test:<br />

Ψ(x k + t k d k ) ≤ R k + t k ∇Ψ(x k ) T d k .<br />

Depending upon the choice of the reference value, this allows the merit function to increase from one iteration to<br />

the next. This strategy can not only improve convergence, but can also avoid local minimizers by allowing such<br />

increases.<br />

We now need to detail our choice of the reference value. We begin by letting {M 1 , . . . , M m } be a finite set of<br />

values initialized to κΨ(x 0 ), where κ is used to determine the initial set of acceptable merit function values. <strong>The</strong><br />

value of κ defaults to 1 in the code and can be modified with the nms initial reference factor option; κ = 1<br />

indicates that we are not going to allow the merit function to increase beyond its initial value.<br />

Having defined the values of {M 1 , . . . , M m } (where the code by default uses m = 10), we can now calculate a<br />

reference value. We must be careful when we allow gradient steps in the code. Assuming that d k is the Newton<br />

direction, we define i 0 = argmax M i and R k = M i0 . After the nonmonotone linesearch rule above finds t k , we<br />

update the memory so that M i0 = Ψ(x k + t k d k ), i.e. we remove an element from the memory having the largest<br />

merit function value.<br />

When we decide to use a gradient step, it is beneficial to let x k = x best where x best is the point with the<br />

absolute best merit function value encountered so far. We then recalculate d k = −∇Ψ(x k ) using the best point<br />

and let R k = Ψ(x k ). That is to say that we force decrease from the best iterate found whenever a gradient step is<br />

performed. After a successful step we set M i = Ψ(x k + t k d k ) for all i ∈ [1, . . . , m]. This prevents future iterates<br />

from returning to the same problem area.<br />

A watchdog strategy [5] is also available for use in the code. <strong>The</strong> method employed allows steps to be accepted<br />

when they are “close” to the current iterate. Nonmonotonic decrease is enforced every m iterations, where m is<br />

set by the nms mstep frequency option.

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

Saved successfully!

Ooh no, something went wrong!