Function Variables for Constraint Programming
Quite often modelers with constraint programming (CP) use the same modelling patterns for different problems, possibly from different domains. This results in recurring idioms in constraint programs. Our approach can be seen as a three-step approach. First, we identify some of these recurring patt...
Main Author: | |
---|---|
Format: | Doctoral Thesis |
Language: | English |
Published: |
Uppsala universitet, Institutionen för informationsvetenskap
2003
|
Subjects: | |
Online Access: | http://urn.kb.se/resolve?urn=urn:nbn:se:uu:diva-3143 http://nbn-resolving.de/urn:isbn:91-506-1650-1 |
id |
ndltd-UPSALLA1-oai-DiVA.org-uu-3143 |
---|---|
record_format |
oai_dc |
spelling |
ndltd-UPSALLA1-oai-DiVA.org-uu-31432013-01-08T13:03:39ZFunction Variables for Constraint ProgrammingengHnich, BrahimUppsala universitet, Institutionen för informationsvetenskapUppsala : Institutionen för informationsvetenskap2003DatalogiConstraint saisfactionconstraint programminghigh-level modellingabstractionreformulationfunction variables.DatalogiComputer scienceDatalogiQuite often modelers with constraint programming (CP) use the same modelling patterns for different problems, possibly from different domains. This results in recurring idioms in constraint programs. Our approach can be seen as a three-step approach. First, we identify some of these recurring patterns in constraint programs. Second, we propose a general way of describing these patterns by introducing proper constructs that would cover a wide range of applications. Third, we propose automating the process of reproducing these idioms from these higher-level descriptions. The whole process can be seen as a way of encapsulating some of the expertise and knowledge often used by CP modelers and making it available in much simpler forms. Doing so, we are able to extend current CP languages with high-level abstractions that open doors for automation of some of the modelling processes. In particular, we introduce function variables and allow the statement of constraints on these variables using function operations. A function variable is a decision variable that can take a value from a set of functions as opposed to an integer variable that ranges over integers, or a set variable that ranges over a set of sets. We show that a function variable can be mapped into different representations in terms of integer and set variables, and illustrate how to map constraints stated on a function variable into constraints on integer and set variables. As a result, a function model expressed using function variables opens doors to the automatic generation of alternate CP models. These alternate models either use a different variable representation, or have extra implied constraints, or employ different constraint formulation, or combine different models that are linked using channelling constraints. A number of heuristics are also developed that allow the comparison of different constraint formulations. Furthermore, we present an extensive theoretical comparison of models of injection problems supported by asymptotic and empirical studies. Finally, a practical modelling tool that is built based on a high-level language that allows function variables is presented and evaluated. The tool helps users explore different alternate CP models starting from a function model that is easier to develop, understand, and maintain. Doctoral thesis, monographinfo:eu-repo/semantics/doctoralThesistexthttp://urn.kb.se/resolve?urn=urn:nbn:se:uu:diva-3143urn:isbn:91-506-1650-1application/pdfinfo:eu-repo/semantics/openAccess |
collection |
NDLTD |
language |
English |
format |
Doctoral Thesis |
sources |
NDLTD |
topic |
Datalogi Constraint saisfaction constraint programming high-level modelling abstraction reformulation function variables. Datalogi Computer science Datalogi |
spellingShingle |
Datalogi Constraint saisfaction constraint programming high-level modelling abstraction reformulation function variables. Datalogi Computer science Datalogi Hnich, Brahim Function Variables for Constraint Programming |
description |
Quite often modelers with constraint programming (CP) use the same modelling patterns for different problems, possibly from different domains. This results in recurring idioms in constraint programs. Our approach can be seen as a three-step approach. First, we identify some of these recurring patterns in constraint programs. Second, we propose a general way of describing these patterns by introducing proper constructs that would cover a wide range of applications. Third, we propose automating the process of reproducing these idioms from these higher-level descriptions. The whole process can be seen as a way of encapsulating some of the expertise and knowledge often used by CP modelers and making it available in much simpler forms. Doing so, we are able to extend current CP languages with high-level abstractions that open doors for automation of some of the modelling processes. In particular, we introduce function variables and allow the statement of constraints on these variables using function operations. A function variable is a decision variable that can take a value from a set of functions as opposed to an integer variable that ranges over integers, or a set variable that ranges over a set of sets. We show that a function variable can be mapped into different representations in terms of integer and set variables, and illustrate how to map constraints stated on a function variable into constraints on integer and set variables. As a result, a function model expressed using function variables opens doors to the automatic generation of alternate CP models. These alternate models either use a different variable representation, or have extra implied constraints, or employ different constraint formulation, or combine different models that are linked using channelling constraints. A number of heuristics are also developed that allow the comparison of different constraint formulations. Furthermore, we present an extensive theoretical comparison of models of injection problems supported by asymptotic and empirical studies. Finally, a practical modelling tool that is built based on a high-level language that allows function variables is presented and evaluated. The tool helps users explore different alternate CP models starting from a function model that is easier to develop, understand, and maintain. |
author |
Hnich, Brahim |
author_facet |
Hnich, Brahim |
author_sort |
Hnich, Brahim |
title |
Function Variables for Constraint Programming |
title_short |
Function Variables for Constraint Programming |
title_full |
Function Variables for Constraint Programming |
title_fullStr |
Function Variables for Constraint Programming |
title_full_unstemmed |
Function Variables for Constraint Programming |
title_sort |
function variables for constraint programming |
publisher |
Uppsala universitet, Institutionen för informationsvetenskap |
publishDate |
2003 |
url |
http://urn.kb.se/resolve?urn=urn:nbn:se:uu:diva-3143 http://nbn-resolving.de/urn:isbn:91-506-1650-1 |
work_keys_str_mv |
AT hnichbrahim functionvariablesforconstraintprogramming |
_version_ |
1716507488864436224 |