next up previous
Next: Detailed Implementation of the Up: An Efficient Implementation of Previous: An Efficient Implementation of

Lazy Implementation of Solution Objects

In a local search, it is often the case that several neighbors of a given solution are generated, evaluated to select of a few and discard the rest. To take advantage of this characteristic, we design a Solution object that contains a pointer to Combinatorial object and a Mutation object.

An unmutated solution s has an empty mutation, and a pointer to a combinatorial object. Neighbors of s have non-empty mutation objects, and their combinatorial object point to that of s. The discarded neighbors are simply deleted, while the selected ones will now copy the combinatorial object to which they point, and individualize them by committing their own mutations.

The saving in copying the actual combinatorial object is usually significant. The improvement depends on the improvement ratio of the delta_objective and objective functions. This in turn depends on the continuity of objective function acting on the neighborhood defined by the neighborhood operator. The smoother on the search space the objective function, the better: small difference in structural solution, small difference in value.

In a more sophisticated implementation, we can have higher order of referencing: a mutated solution of a mutated solution. However, I don't think that the implementation complexity justifies the saving.


next up previous
Next: Detailed Implementation of the Up: An Efficient Implementation of Previous: An Efficient Implementation of
Vinhthuy Phan 2003-05-15