| Overview | Group | Tree | Graph | Index | Concepts |
This function creates a neighborhood that samples a proportion
proportion of neighborhood nhood at each move.
Normally, the sampling is done in a round-robin fashion. For example,
if the proportion was set to 0.4, then on the first move the neighborhood
would correspond to the first 40% of the neighbors of nhood.
On the next move, the neighborhood would be the next 40% of the neighbors of
nhood. On the third move, the neighborhood would be the last
20% followed by the first 20% of the neighbors of nhood.
This round-robin behavior can be replaced with a completely random
behavior by suppling the option argument rand. In this
case, at each move (assuming proportion=0.4) 40% of the
neighbors of nhood are sampled entirely at random by
drawing random numbers from rand.
The optional argument
name, if provided, becomes the name of the newly created
neighborhood.
In such a neighborhood, the member function
IloNHood::define defines the appropriate
neighbor from nhood neighborhood using the sampling rule; the
functions IloNHood::notify and
IloNHood#notifyOther perform the corresponding
actions using the same sampling rule; the function
IloNHood::start calls
start for nhood; and the function
IloNHood::getSize returns
proportion times nhood.getSize(), rounded to
the nearest integer.
This type of neighborhood can be useful for simple diversification of search in a “best accept” context, where the best move is taken at each step of the search. By limiting the neighborhood at each step, it becomes possible to move out of local minima more easily. Such a neighborhood can also be useful in conjunction with tabu search.
See Also: