Set Programming is a style of logic programming which supports set theoretical formulation and reasoning to solve constraint satisfaction problems. It features higher modeling abstraction and greater expressive power. Contrary to worries on possible loss of efficiency, the higher level set programming not only guarantees program clarity and readability, but also can bring better problem-solving capability. Set programming does not mean simple use of set notations, set variables or set constraints in a problem-solving system, but rather integration of rigorous and complete set theoretical formulation and reasoning into a traditional algorithmic framework (e.g., branch and bound, branch and cut, branch and price). The combination of set reasoning with OR algorithms can only lead to an enhanced algorithmic power; see the solving of set partitioning and vehicle routing problems in the references below. Set Programming alone may not be sufficient enough for dealing with complex industrial problems which are primarily NP-hard. It is usually embeded in the more extensive Mixed Set Programming framework which solves problems over a mixed domain of reals, integers, Booleans, references, dates/times, and sets.
|