The need to solve combinatorial problems effectively has
attracted much attention from the research
community and remains as one of the most actively researched areas.
Consequently, the research community has devoted a lot of effort to address this
issue computationally. This has resulted in three main approaches of solving
combinatorial problems, namely Operation Research (OR) also widely known as
Mathematical Programming(
Mathematical programming uses equation solving techniques to solve combinatorial problems. In contrast to Mathematical Programming, constraint programming focuses more on applying a judicious search strategy that exploits the problem structure to enumerate possible solution in an efficient manner. Meta-heuristic is an ad-hoc approach in which the search algorithm is based on a collection of heuristics techniques (or ``rules of thumb''). These heuristics techniques range from probabilistic and memory-based to actual simulation of natural processes.
All three fields have developed substantially over the years and obtained variable degrees of success. Generally, if a combinatorial problem needs an optimal solution, then mathematical programming techniques such as Simplex would seem a good fit provided the problem could be modelled as linear equations. However, if only a feasible solution is required, the problem is a good candidate for applying constraint programming techniques. The application of meta-heuristic techniques in combinatorial solving are not well understood. Due to this uncertainty, meta-heuristic techniques often served as an alternative approach when the other two techniques could not produce desired solutions.
Even though all three approaches have orthogonal strengths and weaknesses,
researchers generally agreed that hybrid algorithms generate better results
compare to conventional approaches (
In this paper, attention is paid to literatures that cover different aspects of a modelling language and different approaches towards modelling. In doing so, we hope to gain some insights to assist in the research of adding modelling capabilites onto HAL, a constraint logic programming language.
In Section 2, we defined the formal definition of constraint solving and constraint optimization. In Section 3, we discuss solver techniques arise from mathematical programming, constraint programming and meta-heuristic. In Section 4, different tools that facilitate the application of solving techniques are discussed. Finally, in section 5, modelling languages are discussed.