C++ Reference: class LocalSearchFilter

This documentation is automatically generated.

Local Search Filters are used for fast neighbor pruning. Filtering a move is done in several phases:
   - in the Relax phase, filters determine which parts of their internals will be changed by the candidate, and modify intermediary State
   - in the Accept phase, filters check that the candidate is feasible,
   - if the Accept phase succeeds, the solver may decide to trigger a Synchronize phase that makes filters change their internal representation to the last candidate,
   - otherwise (Accept fails or the solver does not want to synchronize), a Revert phase makes filters erase any intermediary State generated by the Relax and Accept phases.
A given filter has phases called with the following pattern: (Relax.Accept.Synchronize | Relax.Accept.Revert | Relax.Revert)*. Filters's Revert() is always called in the reverse order their Accept() was called, to allow late filters to use state done/undone by early filters' Accept()/Revert().
Method
Accept

Return type: virtual bool

Arguments: const Assignment* delta, const Assignment* deltadelta, int64 objective_min, int64 objective_max

Accepts a "delta" given the assignment with which the filter has been synchronized; the delta holds the variables which have been modified and their new value. If the filter represents a part of the global objective, its contribution must be between objective_min and objective_max. Sample: supposing one wants to maintain a[0,1] + b[0,1] <= 1, for the assignment (a,1), (b,0), the delta (b,1) will be rejected but the delta (a,0) will be accepted. TODO(user): Remove arguments when there are no more need for those.

GetAcceptedObjectiveValue

Return type: virtual int64

Objective value from the last time Accept() was called and returned true. If the last Accept() call returned false, returns an undefined value.

GetSynchronizedObjectiveValue

Return type: virtual int64

Objective value from last time Synchronize() was called.

IsIncremental

Return type: virtual bool

Relax

Return type: virtual void

Arguments: const Assignment* delta, const Assignment* deltadelta

Lets the filter know what delta and deltadelta will be passed in the next Accept().

Revert

Return type: virtual void

Cancels the changes made by the last Relax()/Accept() calls.

Synchronize

Return type: virtual void

Arguments: const Assignment* assignment, const Assignment* delta

Synchronizes the filter with the current solution, delta being the difference with the solution passed to the previous call to Synchronize() or IncrementalSynchronize(). 'delta' can be used to incrementally synchronizing the filter with the new solution by only considering the changes in delta.