Next: FDPLEX Predicates
Up: FDPLEX: A Hybrid Finite
Previous: Usage
  Index
The library redefines minimize/2, min_max/2, indomain/1 and labeling/1
with versions that setup and trigger the simplex solver (on the
relaxed floating-point problem) in appropriate places.
In more detail:
- 1.
- At the beginning of
minimize/2
or
min_max/2,
the finite-domain constraint
store is scanned, an LP-relaxation is extracted,
a corresponding LP-solver is set up and the relaxation is solved once.
- 2.
- Then the normal FD branch-and-bound procedure is started,
using the user-supplied labeling routine.
- 3.
- The modified version of
indomain/1
employs a value-selection strategy
based on the solution of the LP-relaxation: The variable is first
labeled with the integer which is closest to the floating-point solution.
On backtracking, the rest of the domain is tried.
- 4.
- Variable instantiation (or, optionally, interval narrowing)
can trigger the LP-solver:
When a variable takes a value that is not close enough to the solution
of the relaxation (or, optionally, when the narrowed interval excludes the
solution of the relaxation), the solver is re-invoked.
It computes a new solution, taking into account the current variable
values and bounds.
The benefits from solver cooperation are:
- Infeasibility of the relaxed problem can prune the search.
- The cost of the relaxed solution is a lower bound to the cost
of every integer solution. This cost bound is imposed as an additional
constraint, and can thus cause FD-propagation and prune the search.
- The solution to the relaxed problem can be used as a labeling
heuristics, hopefully leading to solution earlier.
Next: FDPLEX Predicates
Up: FDPLEX: A Hybrid Finite
Previous: Usage
  Index
1999-08-06