Jip Dekker's PhD Thesis
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Small corrections

+7 -7
+7 -7
chapters/1_introduction.tex
··· 29 29 30 30 \Cmls{} have been designed to tackle these issues. 31 31 They serve as a level of abstraction between the modeller and the \solver{}. 32 + The typical process of a \cml{} is visualized in \cref{fig:intro-cml-flow}. 32 33 Instead of providing a flat list of \variables{} and \constraints{}, a modeller creates a \cmodel{} using the more natural syntax of the \cml{}. 33 - A \cmodel{} can generally describe a class of problems through the use of \prbpars{}, values assigned by external input. 34 + A \cmodel{} can generally describe a class of problems through the use of \prbpars{}: values assigned by external input. 34 35 Once given a complete \gls{assignment} of the \prbpars{}, the \cmodel{} forms an \instance{}. 35 - Central to the process of a \cml{}, the \instance{} is transformed, through \gls{rewriting}, into a \gls{slv-mod}, an encoding of the problem that can be used by the \solver{}. 36 - This process is visualized in \cref{fig:intro-cml-flow}. 36 + The \gls{rewriting} process of a \cml{} transforms a \cmodel{} into a \gls{slv-mod}: the encoding of the problem for the \solver{}. 37 37 38 38 \begin{figure} 39 39 \centering ··· 42 42 \end{figure} 43 43 44 44 Traditional \cmls{}, such as \glsxtrshort{ampl} \autocite{fourer-2003-ampl}, \gls{essence} \autocite{frisch-2007-essence}, and \glsxtrshort{opl} \autocite{van-hentenryck-1999-opl}, offer the modeller an expressive language that can be used to target a great variety of \solvers{}. 45 - However, these language lack a certain level of flexibility: the modeller is unable to capture common concepts used throughout a \cmodel{}; and the \solver{} cannot influence their way in which the problem is encoded. 45 + However, these language lack a certain level of flexibility: the modeller is unable to capture common concepts used throughout a \cmodel{}, and the \solver{} cannot influence their way in which the problem is encoded. 46 46 47 - This is a stark different to \gls{clp} languages, such Sictus Prolog \autocite{carlsson-1997-sicstus}, which are said to be the precursors to \cmls{}. 47 + This is a stark difference to \gls{clp} languages, such as Sictus Prolog \autocite{carlsson-1997-sicstus}, which are said to be the precursors to \cmls{}. 48 48 In these languages, the modeller is encouraged to create high-level concepts and declare the way in which they are rewritten into \gls{native} \constraints{}. 49 49 The downside of \gls{clp} languages is that, because of its search mechanism, the \solver{} is tightly integrated within the \gls{rewriting}. 50 50 These languages thus lack the \solver{}-independence of \cmls{}. 51 51 52 52 \minizinc{} \autocite{nethercote-2007-minizinc} is a functional \cml{} that operates on a level in between these two types of languages. 53 53 Like a traditional \cml{}, it is a \solver{}-independent \cml{}. 54 - And like a \gls{clp} language, modellers can declare common concepts and control the encoding into the \gls{slv-mod} through the use of function definitions. 54 + Similarly, like a \gls{clp} language, modellers can declare common concepts and control the encoding into the \gls{slv-mod} through the use of function definitions. 55 55 Fundamentally, in its \gls{rewriting} process \minizinc{} is a functional language. 56 56 It continuously evaluates the calls in a \minizinc{} \instance{} until it reaches \gls{native} \constraints{}. 57 57 Like other functional languages, \minizinc{} allows recursion; it can be used as a fully Turing complete programming language. ··· 112 112 113 113 \gls{clp}, as used for example in the Sictus Prolog language \autocite{carlsson-1997-sicstus}, offers a very different mechanism to create a \cmodel{}. 114 114 In these languages, the modeller is encouraged to create high-level concepts and declare the way in which they are rewritten into \gls{native} \constraints{}. 115 - For example, the concepts of one task preceding another and non-overlapping of tasks could be defined in Prolog as: 115 + For example, the concepts of one task preceding another and non-overlapping of tasks could be defined in Prolog as follows. 116 116 117 117 \begin{minted}[ 118 118 autogobble=true,