solve(Variables) :- read_data(Data), setup_constraints(Data, Variables), labeling(Variables). |
setup_constraints/2
contains the problem model. It creates the
variables and the constraints over the variables.
This is often, but not necessarily, deterministic.
The labeling/1
predicate is the search part of the program that
attempts to find solutions by trying all instantiations for the
variables. This search is constantly pruned by constraint propagation.
solve(Variables) :- read_data(Data), setup_constraints(Data, Variables, Objective), branch_and_bound:minimize(labeling(Variables), Objective). |