16.01.2015 Views

A Tutorial on Variable Neighborhood Search

A Tutorial on Variable Neighborhood Search

A Tutorial on Variable Neighborhood Search

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.

Les Cahiers du GERAD G–2003–46 14<br />

in the deepest valley this informati<strong>on</strong> is in part irrelevant. It is therefore of interest to<br />

modify VNS schemes in order to explore more fully valleys which are far away from the<br />

incumbent soluti<strong>on</strong>. This will be d<strong>on</strong>e by accepting to recenter the search when a soluti<strong>on</strong><br />

close to the best <strong>on</strong>e known, but not necessarily as good, is found, provided that it is far<br />

from this last soluti<strong>on</strong>. The modified VNS scheme for this variant, called Skewed <strong>Variable</strong><br />

<strong>Neighborhood</strong> <strong>Search</strong> (SVNS) is presented in Figure 7. The relaxed rule for recentering uses<br />

an evaluati<strong>on</strong> functi<strong>on</strong> linear in the distance from the incumbent, i.e., f(x ′′ ) is replaced by<br />

f(x ′′ ) − αρ(x, x ′′ )<br />

where ρ(x, x ′′ ) is the distance from x to x ′′ and α a parameter. A metric for distance<br />

between soluti<strong>on</strong>s is usually easy to find, e.g. the Hamming distance when soluti<strong>on</strong>s are<br />

described by boolean vectors or the Euclidean distance in the c<strong>on</strong>tinuous case.<br />

Initializati<strong>on</strong>. Select the set of neighborhood structures N k ,fork =1,...,k max , that will<br />

be used in the search; find an initial soluti<strong>on</strong> x and its value f(x); set x opt ← x, f opt ← f(x):<br />

choose a stopping c<strong>on</strong>diti<strong>on</strong> and a parameter value α;<br />

Repeat the following until the stopping c<strong>on</strong>diti<strong>on</strong> is met:<br />

(1) Set k ← 1;<br />

(2) Repeat the following steps until k = k max :<br />

(a)Shaking. Generate a point x ′ at random from the k th neighborhood of x;<br />

(b)Local search. Apply some local search method with x ′ as initial soluti<strong>on</strong>; denote<br />

with x ′′ the so obtained local optimum;<br />

(c) Improvement or not. Iff(x ′′ )

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

Saved successfully!

Ooh no, something went wrong!