559 lines
15 KiB
TeX
559 lines
15 KiB
TeX
% Note: glossary entries for terms that are acronyms should be prefixed 'gls-'
|
|
% so the non-prefixed reference is used to refer to the acronym
|
|
|
|
\newglossaryentry{aggregation}{
|
|
name={constraint aggregation},
|
|
description={A technique that combines many smaller \glspl{constraint} into a one or, by exception, a few larger \glspl{constraint}},
|
|
}
|
|
|
|
\newglossaryentry{gls-ampl}{
|
|
name={AMPL:\ A Mathematical Programming Language},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{gls-api}{
|
|
name={Application Programming Interface (API)},
|
|
description={
|
|
A particular set of rules and specifications that a software program can follow to access and make use of the services and resources provided by another particular software program that implements that API
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{assignment}{
|
|
name={assignment},
|
|
description={
|
|
A mapping from \glspl{parameter} or \glspl{variable} to values.
|
|
An assignment is referred to as \gls{partial} when it maps only a subset of the \glspl{parameter} and \glspl{variable} of a \gls{model}.
|
|
A \gls{parameter-assignment} is an \gls{partial} \gls{assignment} that maps only the \glspl{parameter}, a \gls{variable-assignment} maps only the \glspl{variable}.
|
|
A complete \gls{parameter-assignment} maps all \glspl{parameter} of a \gls{model}, a complete \gls{variable-assignment} maps all \glspl{variable} of a \gls{model}
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{gls-ast}{
|
|
name={Abstract Syntax Tree},
|
|
description={A tree structure representing the syntactic structure of a piece of computer language. These structures are often used in a \gls{compiler} or \gls{interpreter}},
|
|
}
|
|
|
|
\newglossaryentry{annotation}{
|
|
name={annotation},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{array}{
|
|
name={array},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{backtrack}{
|
|
name={backtrack},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{bnb}{
|
|
name={branch and bound},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{byte-code}{
|
|
name={byte-code},
|
|
description={A set of instructions designed to be efficiently executed by an \gls{interpreter}. Distinctive from other computer languages a byte code has a very compact representation, \eg{} using only numbers, and can not be directly read by humans},
|
|
}
|
|
|
|
\newglossaryentry{bounds-con}{
|
|
name={bounds consistent},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{gls-cbls}{
|
|
name={constraint-based local search},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{chuffed}{
|
|
name={Chuffed},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{comprehension}{
|
|
name={comprehension},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{conditional}{
|
|
name={conditional},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{constraint}{
|
|
name={constraint},
|
|
description={A formalised rule of a problem. Constraints are generally expressed in term of Boolean logic},
|
|
}
|
|
|
|
\newglossaryentry{cml}{
|
|
name={constraint modelling language},
|
|
description={
|
|
A computer language used to define \glspl{model}.
|
|
Low-level constraint modelling languages allow modellers to define \glspl{model} in terms of \gls{native} \glspl{constraint} and \gls{variable} types.
|
|
To create a \gls{slv-mod} the language merely assigns the \glspl{parameter}, (almost) no \gls{rewriting} is required.
|
|
In contrast, high-level constraint modelling languages provide \glspl{global}, allowing modellers to reason at a level different from the targeted \gls{solver}
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{constraint-store}{
|
|
name={constraint store},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{cplex}{
|
|
name={CPLEX},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{gls-chr}{
|
|
name={constraint handling rules},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{gls-clp}{
|
|
name={constraint logic programming},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{gls-cp}{
|
|
name={constraint programming},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{gls-cse}{
|
|
name={common subexpression elimination},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{confluence}{
|
|
name={confluence},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{gls-csp}{
|
|
name={constraint satisfaction problem},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{gls-cop}{
|
|
name={constraint optimisation problem},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{cvar}{
|
|
name={control variable},
|
|
description={
|
|
A special form of an \gls{ivar} where the \gls{variable} represent the result of a \gls{reification}
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{compiler}{
|
|
name={compiler},
|
|
description={
|
|
A computer program that transforms a program in a computer language, referred to as the \emph{source}, into a different language (or instruction set), the \emph{target}.
|
|
The goal of this transformation is generally to create an executable version of the program
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{compiling}{
|
|
name={compiling},
|
|
description={see \gls{compiler}},
|
|
}
|
|
|
|
\newglossaryentry{dec-prb}{
|
|
name={decision problem},
|
|
description={
|
|
A problem which can be defined as making a set of decisions under a certain set of rules.
|
|
Decisions problems can be formalised as \glspl{model}.
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{decomp}{
|
|
name={decomposition},
|
|
description={
|
|
A formulation of a \gls{constraint} in terms of other \glspl{constraint} in order to reach \gls{native} \glspl{constraint}.
|
|
Note that the new \glspl{constraint} might represent the same decisions using a different \glspl{variable}, possibly of different types
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{del-rew}{
|
|
name={delayed rewriting},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{domain}{
|
|
name={domain},
|
|
description={A set of value that a \gls{variable} can take without violating any \glspl{constraint} in the problem},
|
|
}
|
|
|
|
\newglossaryentry{domain-con}{
|
|
name={domain consistent},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{essence}{
|
|
name={Essence},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{eqsat}{
|
|
name={equisatisfiable},
|
|
description={Two \glspl{model} are equisatisfiable when a bijective function can be defined to map the \glspl{sol} of one \gls{model} onto the \glspl{sol} of the other},
|
|
}
|
|
|
|
\newglossaryentry{fixed}{
|
|
name={fixed},
|
|
description={A \gls{variable} is said to be fixed when there is only a single possible value that it can take},
|
|
}
|
|
|
|
\newglossaryentry{fixpoint}{
|
|
name={fix-point},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{flatzinc}{
|
|
name={Flat\-Zinc},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{gecode}{
|
|
name={Gecode},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{gls-gbac}{
|
|
name={Generalised Balanced Academic Curriculum},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{generator}{
|
|
name={generator},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{git}{
|
|
name={Git},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{global}{
|
|
name={global constraint},
|
|
description={
|
|
A common \gls{constraint} pattern.
|
|
These patterns can generally span any number of \glspl{variable}.
|
|
For example, the well-known global constraint \( AllDifferent(\ldots) \) requires all its arguments to take a different value.
|
|
Global constraints are usually not \gls{native} to a \gls{solver}.
|
|
Instead, the \gls{rewriting} process can enforce the global constraint using a \gls{decomp}
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{gurobi}{
|
|
name={Gurobi},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{half-reif}{
|
|
name={half reification},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{indicator-var}{
|
|
name={indicator variable},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{ivar}{
|
|
name={introduced variable},
|
|
description={
|
|
A \gls{variable} that was created in the reformulation of a \gls{decomp}.
|
|
New \gls{variable} are introduced either to redefine an existing \gls{variable} using a different type or to connect newly introduced \glspl{constraint}
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{int-sol}{
|
|
name={intermediate solution},
|
|
description={A \gls{sol} in an \gls{opt-prb} that is not (yet) proven to be the \gls{opt-sol}},
|
|
}
|
|
|
|
\newglossaryentry{instance}{
|
|
name={instance},
|
|
description={A \gls{model} with a complete \gls{parameter-assignment}},
|
|
}
|
|
|
|
\newglossaryentry{interpreter}{
|
|
name={interpreter},
|
|
description={
|
|
A computer program that directly executes instructions one at a time
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{knapsack}{
|
|
name={knapsack problem},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{let}{
|
|
name={let expression},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{gls-lcg}{
|
|
name={lazy clause generation},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{gls-lns}{
|
|
name={large neighbourhood search},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{meta-search}{
|
|
name={meta-search},
|
|
plural={meta-searches},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{microzinc}{
|
|
name={Micro\-Zinc},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{minisearch}{
|
|
name={Mini\-Search},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{model}{
|
|
name={constraint model},
|
|
description={
|
|
A formalisation of a \gls{dec-prb} or an \gls{opt-prb}.
|
|
It is defined in terms of formalised decision, \glspl{variable} of different kinds (\eg{} Boolean, integers, or even sets), and \glspl{constraint}, Boolean logic formulas which are forced to hold in any \gls{sol}, and, in case of an \gls{opt-prb}, an \gls{objective}.
|
|
Any external data required to formulate the \glspl{constraint} is said to be the \glspl{parameter}.
|
|
The combination of a constraint model and assignments for its \glspl{parameter} is said to be an \gls{instance} of the constraint model
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{minizinc}{
|
|
name={Mini\-Zinc},
|
|
description={
|
|
The primary \gls{cml} studied in this thesis.
|
|
MiniZinc is the successor to \gls{zinc} introduced in 2007 \autocite{nethercote-2007-minizinc}.
|
|
An open-source implementation of the language is available \autocite{minizinc-2021-minizinc}
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{normal-form}{
|
|
name={normal form},
|
|
description={A \gls{trs} has reached its normal form when no more rewriting rules can be applied},
|
|
}
|
|
|
|
\newglossaryentry{gls-mip}{
|
|
name={Mixed Integer Programming},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{native}{
|
|
name={native},
|
|
description={\glspl{constraint} and \gls{variable} types are said to be native to a \gls{solver} when they can be directly used as input for the \gls{solver}},
|
|
}
|
|
|
|
\newglossaryentry{nanozinc}{
|
|
name={Nano\-Zinc},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{neighbourhood}{
|
|
name={neighbourhood},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{objective}{
|
|
name={objective function},
|
|
description={A function defined over the \glspl{variable} of a \gls{model} to assign a numeric value to the quality of the \gls{sol}},
|
|
}
|
|
|
|
\newglossaryentry{operator}{
|
|
name={operator},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{gls-opl}{
|
|
name={OPL:\ The optimisation modelling language},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{opt-prb}{
|
|
name={optimisation problem},
|
|
description={
|
|
A decision problem with an additional \gls{objective}.
|
|
It can, likewise, be formalised as a \gls{model}.
|
|
If the problem has multiple \glspl{sol}, then this function can be used to asses the quality on the \gls{sol}.
|
|
For such a problem, an \gls{opt-sol} is a \gls{sol} with the highest quality
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{optional}{
|
|
name={optional},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{opt-sol}{
|
|
name={optimal solution},
|
|
description={A \gls{sol} in an \gls{opt-prb} for which it has been proven that no other \gls{sol} exist of higher quality},
|
|
}
|
|
|
|
\newglossaryentry{restart}{
|
|
name={restart},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{gls-sat}{
|
|
name={boolean satisfiability},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{search-heuristic}{
|
|
name={search heuristic},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{sol}{
|
|
name={solution},
|
|
description={A complete \gls{variable-assignment} for an \gls{instance} such that all \glspl{constraint} are satisfied},
|
|
}
|
|
|
|
\newglossaryentry{solver}{
|
|
name={solver},
|
|
description={
|
|
A computer program that is designed to solve certain types of \gls{dec-prb} and/or \gls{opt-prb}.
|
|
Given a \gls{slv-mod}, in a specified format, a solver will (eventually) produce a \gls{sol} for it.
|
|
When solving a \gls{opt-prb}, solvers often produce intermediate \glspl{sol} before producing the \gls{opt-sol}
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{parameter}{
|
|
name={problem parameter},
|
|
description={
|
|
Problem parameters are part of the external input for a \gls{model}.
|
|
They can be used as immutable data used to define \glspl{constraint} or provide structural information about an \gls{instance}.
|
|
For example, a problem parameter might influence the number of \glspl{constraint} in an \gls{instance}
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{parameter-assignment}{
|
|
name={parameter assignment},
|
|
description={see \gls{assignment}},
|
|
}
|
|
|
|
\newglossaryentry{partial}{
|
|
name={partial},
|
|
description={A function is said to be partial when it does not have a defined result for every possible input. Similarly, an \gls{assignment} is said to be partial when it maps only a subset of the \glspl{parameter} and \glspl{variable} in a },
|
|
}
|
|
|
|
\newglossaryentry{propagation}{
|
|
name={constraint pro\-pa\-ga\-tion},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{propagator}{
|
|
name={propagator},
|
|
description={An algorithm that perform \gls{propagation} for a \gls{constraint}},
|
|
}
|
|
|
|
\newglossaryentry{qcp-max}{
|
|
name={QCP-max},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{reification}{
|
|
name={reification},
|
|
description={A reification is a special form of a \gls{constraint} where, instead of the \gls{constraint} being enforced in the \glspl{sol}, it enforces that a \gls{cvar} represents whether the \gls{constraint} holds or not},
|
|
}
|
|
|
|
\newglossaryentry{rewriting}{
|
|
name={rewriting},
|
|
description={
|
|
The process of transforming a \gls{model} \gls{instance} into an \gls{eqsat} \gls{slv-mod} is referred to as rewriting.
|
|
This happens primarily through the application of \glspl{decomp}
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{satisfied}{
|
|
name={satisfied},
|
|
description={
|
|
A \gls{constraint} is said to be satisfied when its logical expression is proven to hold.
|
|
Furthermore, a \gls{dec-prb} is said to be satisfied when all its \glspl{constraint} are satisfied
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{slv-mod}{
|
|
name={solver model},
|
|
description={
|
|
A \gls{instance} of a \gls{model} where all \glspl{constraint} and \gls{variable} types are \gls{native} for the targeted \gls{solver}.
|
|
\Glspl{instance} of \glspl{model} containing non-native \glspl{constraint} and/or \gls{variable} types can be transformed into solver models through the process of \gls{rewriting}
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{scip}{
|
|
name={SCIP},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{term}{
|
|
name={term},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{termination}{
|
|
name={termination},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{trail}{
|
|
name={trail},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{gls-trs}{
|
|
name={term rewriting system},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{unification}{
|
|
name={unification},
|
|
description={},
|
|
}
|
|
|
|
\newglossaryentry{unsat}{
|
|
name={unsatisfiable},
|
|
description={A problem is unsatisfiable when there exists no possible for the problem},
|
|
}
|
|
|
|
\newglossaryentry{variable}{
|
|
name={decision variable},
|
|
description={
|
|
A formalised decision that is yet to be made.
|
|
When searching for a \gls{sol} a decision variable is said to have a certain \gls{domain}, which contains the values that the decision variable might still take.
|
|
If at any point the \gls{domain} is reduced to a single value, then the decision variable is said to be \gls{fixed}.
|
|
If, however, a decision variable has an empty \gls{domain}, then there is no value it can take that is consistent with the \glspl{constraint}
|
|
},
|
|
}
|
|
|
|
\newglossaryentry{variable-assignment}{
|
|
name={variable assignment},
|
|
description={see \gls{assignment}},
|
|
}
|
|
|
|
\newglossaryentry{violated}{
|
|
name={violated},
|
|
description={A \gls{constraint} is said to be violated when its logical expression is known to be false},
|
|
}
|
|
|
|
\newglossaryentry{zinc}{
|
|
name={Zinc},
|
|
description={},
|
|
}
|