From 36872602097bb6c30fcfab70b413eefee05f13b0 Mon Sep 17 00:00:00 2001 From: "Jip J. Dekker" Date: Mon, 24 May 2021 14:41:37 +1000 Subject: [PATCH] Incorporate Background feedback from Peter --- assets/acronyms.tex | 2 +- assets/bibliography/references.bib | 1531 ++++++++++++++-------------- chapters/2_background.tex | 305 +++--- 3 files changed, 934 insertions(+), 904 deletions(-) diff --git a/assets/acronyms.tex b/assets/acronyms.tex index 285f9f6..e3129b0 100644 --- a/assets/acronyms.tex +++ b/assets/acronyms.tex @@ -45,7 +45,7 @@ \newacronym[see={[Glossary:]{gls-mip}}]{mip}{MIP\glsadd{gls-mip}}{Mixed Integer Programming} -\newacronym{np-comp}{NP-complete}{Nondeterministic Polynomial-time complete} +\newacronym{np}{NP}{Nondeterministic Polynomial-time} \newacronym[see={[Glossary:]{gls-opl}}]{opl}{OPL\glsadd{gls-opl}}{The Optimisation Programming Language} diff --git a/assets/bibliography/references.bib b/assets/bibliography/references.bib index 79d5849..1338810 100644 --- a/assets/bibliography/references.bib +++ b/assets/bibliography/references.bib @@ -1,198 +1,200 @@ @book{allen-1978-lisp, - author = {Allen, John}, - title = {Anatomy of LISP}, - year = 1978, - isbn = {007001115X}, - publisher = {McGraw-Hill, Inc.}, - address = {USA} + author = {Allen, John}, + title = {Anatomy of LISP}, + year = 1978, + isbn = {007001115X}, + publisher = {McGraw-Hill, Inc.}, + address = {USA} } @inproceedings{araya-2008-cse-numcsp, - author = {Ignacio Araya and Bertrand Neveu and Gilles Trombettoni}, - editor = {Peter J. Stuckey}, - title = {Exploiting Common Subexpressions in Numerical CSPs}, - booktitle = {Principles and Practice of Constraint Programming, 14th + author = {Ignacio Araya and Bertrand Neveu and Gilles Trombettoni}, + editor = {Peter J. Stuckey}, + title = {Exploiting Common Subexpressions in Numerical CSPs}, + booktitle = {Principles and Practice of Constraint Programming, 14th International Conference, {CP} 2008, Sydney, Australia, September 14-18, 2008. Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 5202, - pages = {342--357}, - publisher = {Springer}, - year = 2008, - url = {https://doi.org/10.1007/978-3-540-85958-1_23}, - doi = {10.1007/978-3-540-85958-1_23}, - timestamp = {Tue, 14 May 2019 10:00:45 +0200}, - biburl = {https://dblp.org/rec/conf/cp/ArayaNT08.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + series = {Lecture Notes in Computer Science}, + volume = 5202, + pages = {342--357}, + publisher = {Springer}, + year = 2008, + url = {https://doi.org/10.1007/978-3-540-85958-1_23}, + doi = {10.1007/978-3-540-85958-1_23}, + timestamp = {Tue, 14 May 2019 10:00:45 +0200}, + biburl = {https://dblp.org/rec/conf/cp/ArayaNT08.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @book{baader-1998-term-rewriting, - place = {Cambridge}, - title = {Term Rewriting and All That}, - doi = {10.1017/CBO9781139172752}, - publisher = {Cambridge University Press}, - author = {Baader, Franz and Nipkow, Tobias}, - year = 1998 + place = {Cambridge}, + title = {Term Rewriting and All That}, + doi = {10.1017/CBO9781139172752}, + publisher = {Cambridge University Press}, + author = {Baader, Franz and Nipkow, Tobias}, + year = 1998 } @article{baatar-2011-radiation, - author = {Davaatseren Baatar and Natashia Boland and Sebastian Brand + author = {Davaatseren Baatar and Natashia Boland and Sebastian Brand and Peter J. Stuckey}, - title = {{CP} and {IP} approaches to cancer radiotherapy delivery + title = {{CP} and {IP} approaches to cancer radiotherapy delivery optimization}, - journal = {Constraints An Int. J.}, - volume = 16, - number = 2, - pages = {173--194}, - year = 2011, - url = {https://doi.org/10.1007/s10601-010-9104-1}, - doi = {10.1007/s10601-010-9104-1}, - timestamp = {Fri, 13 Mar 2020 10:58:27 +0100}, - biburl = {https://dblp.org/rec/journals/constraints/BaatarBBS11.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + journal = {Constraints An Int. J.}, + volume = 16, + number = 2, + pages = {173--194}, + year = 2011, + url = {https://doi.org/10.1007/s10601-010-9104-1}, + doi = {10.1007/s10601-010-9104-1}, + timestamp = {Fri, 13 Mar 2020 10:58:27 +0100}, + biburl = {https://dblp.org/rec/journals/constraints/BaatarBBS11.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @article{balas-1989-pctsp, - author = {Egon Balas}, - title = {The prize collecting traveling salesman problem}, - journal = {Networks}, - volume = 19, - number = 6, - pages = {621--636}, - year = 1989, - url = {https://doi.org/10.1002/net.3230190602}, - doi = {10.1002/net.3230190602}, - timestamp = {Sun, 28 May 2017 13:19:52 +0200}, - biburl = {https://dblp.org/rec/journals/networks/Balas89.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + author = {Egon Balas}, + title = {The prize collecting traveling salesman problem}, + journal = {Networks}, + volume = 19, + number = 6, + pages = {621--636}, + year = 1989, + url = {https://doi.org/10.1002/net.3230190602}, + doi = {10.1002/net.3230190602}, + timestamp = {Sun, 28 May 2017 13:19:52 +0200}, + biburl = {https://dblp.org/rec/journals/networks/Balas89.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @inproceedings{belin-2014-interactive, - author = {Bruno Belin and Marc Christie and Charlotte Truchet}, - editor = {Helmut Simonis}, - title = {Interactive Design of Sustainable Cities with a Distributed + author = {Bruno Belin and Marc Christie and Charlotte Truchet}, + editor = {Helmut Simonis}, + title = {Interactive Design of Sustainable Cities with a Distributed Local Search Solver}, - booktitle = {Integration of {AI} and {OR} Techniques in Constraint + booktitle = {Integration of {AI} and {OR} Techniques in Constraint Programming - 11th International Conference, {CPAIOR} 2014, Cork, Ireland, May 19-23, 2014. Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 8451, - pages = {104--119}, - publisher = {Springer}, - year = 2014, - url = {https://doi.org/10.1007/978-3-319-07046-9_8}, - doi = {10.1007/978-3-319-07046-9_8}, - timestamp = {Tue, 14 May 2019 10:00:47 +0200}, - biburl = {https://dblp.org/rec/conf/cpaior/BelinCT14.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + series = {Lecture Notes in Computer Science}, + volume = 8451, + pages = {104--119}, + publisher = {Springer}, + year = 2014, + url = {https://doi.org/10.1007/978-3-319-07046-9_8}, + doi = {10.1007/978-3-319-07046-9_8}, + timestamp = {Tue, 14 May 2019 10:00:47 +0200}, + biburl = {https://dblp.org/rec/conf/cpaior/BelinCT14.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @inproceedings{belov-2016-linearisation, - author = {Gleb Belov and Peter J. Stuckey and Guido Tack and Mark + author = {Gleb Belov and Peter J. Stuckey and Guido Tack and Mark Wallace}, - editor = {Michel Rueher}, - title = {Improved Linearization of Constraint Programming Models}, - booktitle = {Principles and Practice of Constraint Programming - 22nd + editor = {Michel Rueher}, + title = {Improved Linearization of Constraint Programming Models}, + booktitle = {Principles and Practice of Constraint Programming - 22nd International Conference, {CP} 2016, Toulouse, France, September 5-9, 2016, Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 9892, - pages = {49--65}, - publisher = {Springer}, - year = 2016, - url = {https://doi.org/10.1007/978-3-319-44953-1_4}, - doi = {10.1007/978-3-319-44953-1_4}, - timestamp = {Fri, 27 Mar 2020 09:00:36 +0100}, - biburl = {https://dblp.org/rec/conf/cp/BelovSTW16.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + series = {Lecture Notes in Computer Science}, + volume = 9892, + pages = {49--65}, + publisher = {Springer}, + year = 2016, + url = {https://doi.org/10.1007/978-3-319-44953-1_4}, + doi = {10.1007/978-3-319-44953-1_4}, + timestamp = {Fri, 27 Mar 2020 09:00:36 +0100}, + biburl = {https://dblp.org/rec/conf/cp/BelovSTW16.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @software{biere-2021-kissat, title = {Kissat}, version = {2021}, + year = {2021}, author = {Armin Biere}, url = {http://fmv.jku.at/kissat/} } @book{biere-2021-sat, - title = {Handbook of Satisfiability}, - author = {Biere, A. and Heule, M. and Van Maaren, H. and Walsh, T.}, - isbn = 9781643681610, - series = {Frontiers in artificial intelligence and applications}, - url = {https://books.google.com.au/books?id=YVSM3sxhBhcC}, - year = 2021, - publisher = {IOS Press}, - edition = 2 + title = {Handbook of Satisfiability}, + author = {Biere, A. and Heule, M. and Van Maaren, H. and Walsh, T.}, + isbn = 9781643681610, + series = {Frontiers in artificial intelligence and applications}, + url = {https://books.google.com.au/books?id=YVSM3sxhBhcC}, + year = 2021, + publisher = {IOS Press}, + edition = 2 } @article{bjordal-2015-fzn2oscarcbls, - author = {Gustav Bj{\"{o}}rdal and Jean{-}No{\"{e}}l Monette and + author = {Gustav Bj{\"{o}}rdal and Jean{-}No{\"{e}}l Monette and Pierre Flener and Justin Pearson}, - title = {A constraint-based local search backend for MiniZinc}, - journal = {Constraints An Int. J.}, - volume = 20, - number = 3, - pages = {325--345}, - year = 2015, - url = {https://doi.org/10.1007/s10601-015-9184-z}, - doi = {10.1007/s10601-015-9184-z}, - timestamp = {Fri, 13 Mar 2020 10:58:30 +0100}, - biburl = {https://dblp.org/rec/journals/constraints/BjordalMFP15.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + title = {A constraint-based local search backend for MiniZinc}, + journal = {Constraints An Int. J.}, + volume = 20, + number = 3, + pages = {325--345}, + year = 2015, + url = {https://doi.org/10.1007/s10601-015-9184-z}, + doi = {10.1007/s10601-015-9184-z}, + timestamp = {Fri, 13 Mar 2020 10:58:30 +0100}, + biburl = {https://dblp.org/rec/journals/constraints/BjordalMFP15.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @inproceedings{brand-2006-propagation, - author = {Sebastian Brand and Roland H. C. Yap}, - editor = {Sandro Etalle and Miroslaw Truszczynski}, - title = {Towards "Propagation = Logic + Control"}, - booktitle = {Logic Programming, 22nd International Conference, {ICLP} + author = {Sebastian Brand and Roland H. C. Yap}, + editor = {Sandro Etalle and Miroslaw Truszczynski}, + title = {Towards "Propagation = Logic + Control"}, + booktitle = {Logic Programming, 22nd International Conference, {ICLP} 2006, Seattle, WA, USA, August 17-20, 2006, Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 4079, - pages = {102--116}, - publisher = {Springer}, - year = 2006, - url = {https://doi.org/10.1007/11799573_10}, - doi = {10.1007/11799573_10}, - timestamp = {Tue, 14 May 2019 10:00:48 +0200}, - biburl = {https://dblp.org/rec/conf/iclp/BrandY06.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + series = {Lecture Notes in Computer Science}, + volume = 4079, + pages = {102--116}, + publisher = {Springer}, + year = 2006, + url = {https://doi.org/10.1007/11799573_10}, + doi = {10.1007/11799573_10}, + timestamp = {Tue, 14 May 2019 10:00:48 +0200}, + biburl = {https://dblp.org/rec/conf/iclp/BrandY06.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @inproceedings{carlsson-1997-sicstus, - author = {Mats Carlsson and Greger Ottosson and Bj{\"{o}}rn Carlson}, - editor = {Hugh Glaser and Pieter H. Hartel and Herbert Kuchen}, - title = {An Open-Ended Finite Domain Constraint Solver}, - booktitle = {Programming Languages: Implementations, Logics, and + author = {Mats Carlsson and Greger Ottosson and Bj{\"{o}}rn Carlson}, + editor = {Hugh Glaser and Pieter H. Hartel and Herbert Kuchen}, + title = {An Open-Ended Finite Domain Constraint Solver}, + booktitle = {Programming Languages: Implementations, Logics, and Programs, 9th International Symposium, PLILP'97, Including a Special Trach on Declarative Programming Languages in Education, Southampton, UK, September 3-5, 1997, Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 1292, - pages = {191--206}, - publisher = {Springer}, - year = 1997, - url = {https://doi.org/10.1007/BFb0033845}, - doi = {10.1007/BFb0033845}, - timestamp = {Tue, 14 May 2019 10:00:36 +0200}, - biburl = {https://dblp.org/rec/conf/plilp/CarlssonOC97.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + series = {Lecture Notes in Computer Science}, + volume = 1292, + pages = {191--206}, + publisher = {Springer}, + year = 1997, + url = {https://doi.org/10.1007/BFb0033845}, + doi = {10.1007/BFb0033845}, + timestamp = {Tue, 14 May 2019 10:00:36 +0200}, + biburl = {https://dblp.org/rec/conf/plilp/CarlssonOC97.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @article{chiarandini-2012-gbac, - author = {Marco Chiarandini and Luca Di Gaspero and Stefano Gualandi + author = {Marco Chiarandini and Luca Di Gaspero and Stefano Gualandi and Andrea Schaerf}, - title = {The balanced academic curriculum problem revisited}, - journal = {J. Heuristics}, - volume = 18, - number = 1, - pages = {119--148}, - year = 2012, - url = {https://doi.org/10.1007/s10732-011-9158-2}, - doi = {10.1007/s10732-011-9158-2}, - timestamp = {Fri, 30 Nov 2018 13:23:27 +0100}, - biburl = {https://dblp.org/rec/journals/heuristics/ChiarandiniGGS12.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + title = {The balanced academic curriculum problem revisited}, + journal = {J. Heuristics}, + volume = 18, + number = 1, + pages = {119--148}, + year = 2012, + url = {https://doi.org/10.1007/s10732-011-9158-2}, + doi = {10.1007/s10732-011-9158-2}, + timestamp = {Fri, 30 Nov 2018 13:23:27 +0100}, + biburl = + {https://dblp.org/rec/journals/heuristics/ChiarandiniGGS12.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @software{chuffed-2021-chuffed, @@ -203,102 +205,103 @@ version = {0.10.3} } +@inproceedings{choi-2006-fin-cons, + author = {Chiu Wo Choi and Warwick Harvey and J. H. M. Lee and Peter + J. Stuckey}, + editor = {Abdul Sattar and Byeong{-}Ho Kang}, + title = {Finite Domain Bounds Consistency Revisited}, + booktitle = {{AI} 2006: Advances in Artificial Intelligence, 19th + Australian Joint Conference on Artificial Intelligence, + Hobart, Australia, December 4-8, 2006, Proceedings}, + series = {Lecture Notes in Computer Science}, + volume = 4304, + pages = {49--58}, + publisher = {Springer}, + year = 2006, + url = {https://doi.org/10.1007/11941439\_9}, + doi = {10.1007/11941439\_9}, + timestamp = {Mon, 04 Nov 2019 12:36:13 +0100}, + biburl = {https://dblp.org/rec/conf/ausai/ChoiHLS06.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} + @article{cocke-1970-cse, - author = {Cocke, John}, - title = {Global Common Subexpression Elimination}, - year = 1970, - issue_date = {July 1970}, - publisher = {Association for Computing Machinery}, - address = {New York, NY, USA}, - volume = 5, - number = 7, - issn = {0362-1340}, - url = {https://doi.org/10.1145/390013.808480}, - doi = {10.1145/390013.808480}, - journal = {SIGPLAN Not.}, - month = jul, - pages = {20–24}, - numpages = 5 + author = {Cocke, John}, + title = {Global Common Subexpression Elimination}, + year = 1970, + issue_date = {July 1970}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + volume = 5, + number = 7, + issn = {0362-1340}, + url = {https://doi.org/10.1145/390013.808480}, + doi = {10.1145/390013.808480}, + journal = {SIGPLAN Not.}, + month = jul, + pages = {20–24}, + numpages = 5 } @inproceedings{cook-1971-sat, - author = {Stephen A. Cook}, - editor = {Michael A. Harrison and Ranan B. Banerji and Jeffrey D. + author = {Stephen A. Cook}, + editor = {Michael A. Harrison and Ranan B. Banerji and Jeffrey D. Ullman}, - title = {The Complexity of Theorem-Proving Procedures}, - booktitle = {Proceedings of the 3rd Annual {ACM} Symposium on Theory of + title = {The Complexity of Theorem-Proving Procedures}, + booktitle = {Proceedings of the 3rd Annual {ACM} Symposium on Theory of Computing, May 3-5, 1971, Shaker Heights, Ohio, {USA}}, - pages = {151--158}, - publisher = {{ACM}}, - year = 1971, - url = {https://doi.org/10.1145/800157.805047}, - doi = {10.1145/800157.805047}, - timestamp = {Mon, 26 Nov 2018 15:05:57 +0100}, - biburl = {https://dblp.org/rec/conf/stoc/Cook71.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + pages = {151--158}, + publisher = {{ACM}}, + year = 1971, + url = {https://doi.org/10.1145/800157.805047}, + doi = {10.1145/800157.805047}, + timestamp = {Mon, 26 Nov 2018 15:05:57 +0100}, + biburl = {https://dblp.org/rec/conf/stoc/Cook71.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @manual{cplex-2020-cplex, - title = {V20.1: User’s Manual for CPLEX}, - author = {CPLEX, IBM ILOG}, - journal = {International Business Machines Corporation}, - year = 2020 + title = {V20.1: User’s Manual for CPLEX}, + author = {CPLEX, IBM ILOG}, + journal = {International Business Machines Corporation}, + year = 2020 } @article{davis-1962-dpll, - author = {Davis, Martin and Logemann, George and Loveland, Donald}, - title = {A Machine Program for Theorem-Proving}, - year = 1962, - issue_date = {July 1962}, - publisher = {Association for Computing Machinery}, - address = {New York, NY, USA}, - volume = 5, - number = 7, - issn = {0001-0782}, - url = {https://doi.org/10.1145/368273.368557}, - doi = {10.1145/368273.368557}, - journal = {Commun. ACM}, - month = jul, - pages = {394–397}, - numpages = 4 + author = {Davis, Martin and Logemann, George and Loveland, Donald}, + title = {A Machine Program for Theorem-Proving}, + year = 1962, + issue_date = {July 1962}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + volume = 5, + number = 7, + issn = {0001-0782}, + url = {https://doi.org/10.1145/368273.368557}, + doi = {10.1145/368273.368557}, + journal = {Commun. ACM}, + month = jul, + pages = {394–397}, + numpages = 4 } @inproceedings{ek-2020-online, - author = {Alexander Ek and Maria Garcia de la Banda and Andreas + author = {Alexander Ek and Maria Garcia de la Banda and Andreas Schutt and Peter J. Stuckey and Guido Tack}, - title = {Modelling and Solving Online Optimisation Problems}, - booktitle = {The Thirty-Fourth {AAAI} Conference on Artificial + title = {Modelling and Solving Online Optimisation Problems}, + booktitle = {The Thirty-Fourth {AAAI} Conference on Artificial Intelligence, {AAAI} 2020, The Thirty-Second Innovative Applications of Artificial Intelligence Conference, {IAAI} 2020, The Tenth {AAAI} Symposium on Educational Advances in Artificial Intelligence, {EAAI} 2020, New York, NY, USA, February 7-12, 2020}, - pages = {1477--1485}, - publisher = {{AAAI} Press}, - year = 2020, - url = {https://aaai.org/ojs/index.php/AAAI/article/view/5506}, - timestamp = {Tue, 02 Feb 2021 08:00:20 +0100}, - biburl = {https://dblp.org/rec/conf/aaai/EkBSST20.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} -} - -@inproceedings{feydy-2011-half-reif, - author = {Thibaut Feydy and Zoltan Somogyi and Peter J. Stuckey}, - editor = {Jimmy Ho{-}Man Lee}, - title = {Half Reification and Flattening}, - booktitle = {Principles and Practice of Constraint Programming - {CP} - 2011 - 17th International Conference, {CP} 2011, Perugia, - Italy, September 12-16, 2011. Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 6876, - pages = {286--301}, - publisher = {Springer}, - year = 2011, - url = {https://doi.org/10.1007/978-3-642-23786-7_23}, - doi = {10.1007/978-3-642-23786-7_23}, - timestamp = {Tue, 14 May 2019 10:00:45 +0200}, - biburl = {https://dblp.org/rec/conf/cp/FeydySS11.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + pages = {1477--1485}, + publisher = {{AAAI} Press}, + year = 2020, + url = {https://aaai.org/ojs/index.php/AAAI/article/view/5506}, + timestamp = {Tue, 02 Feb 2021 08:00:20 +0100}, + biburl = {https://dblp.org/rec/conf/aaai/EkBSST20.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @software{forrest-2020-cbc, @@ -324,97 +327,101 @@ url = {https://doi.org/10.5281/zenodo.3700700} } +@inproceedings{feydy-2011-half-reif, + author = {Thibaut Feydy and Zoltan Somogyi and Peter J. Stuckey}, + editor = {Jimmy Ho{-}Man Lee}, + title = {Half Reification and Flattening}, + booktitle = {Principles and Practice of Constraint Programming - {CP} + 2011 - 17th International Conference, {CP} 2011, Perugia, + Italy, September 12-16, 2011. Proceedings}, + series = {Lecture Notes in Computer Science}, + volume = 6876, + pages = {286--301}, + publisher = {Springer}, + year = 2011, + url = {https://doi.org/10.1007/978-3-642-23786-7_23}, + doi = {10.1007/978-3-642-23786-7_23}, + timestamp = {Tue, 14 May 2019 10:00:45 +0200}, + biburl = {https://dblp.org/rec/conf/cp/FeydySS11.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} + @article{fourer-2002-amplcp, - author = {Robert Fourer and David M. Gay}, - title = {Extending an Algebraic Modeling Language to Support + author = {Robert Fourer and David M. Gay}, + title = {Extending an Algebraic Modeling Language to Support Constraint Programming}, - journal = {{INFORMS} J. Comput.}, - volume = 14, - number = 4, - pages = {322--344}, - year = 2002, - url = {https://doi.org/10.1287/ijoc.14.4.322.2825}, - doi = {10.1287/ijoc.14.4.322.2825}, - timestamp = {Sun, 15 Mar 2020 19:45:41 +0100}, - biburl = {https://dblp.org/rec/journals/informs/FourerG02.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + journal = {{INFORMS} J. Comput.}, + volume = 14, + number = 4, + pages = {322--344}, + year = 2002, + url = {https://doi.org/10.1287/ijoc.14.4.322.2825}, + doi = {10.1287/ijoc.14.4.322.2825}, + timestamp = {Sun, 15 Mar 2020 19:45:41 +0100}, + biburl = {https://dblp.org/rec/journals/informs/FourerG02.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @book{fourer-2003-ampl, - title = {AMPL: A Modeling Language for Mathematical Programming}, - author = {Fourer, R. and Gay, D.M. and Kernighan, B.W.}, - isbn = 9780534388096, - lccn = 00698382, - series = {Scientific Press series}, - year = 2003, - publisher = {Thomson/Brooks/Cole} + title = {AMPL: A Modeling Language for Mathematical Programming}, + author = {Fourer, R. and Gay, D.M. and Kernighan, B.W.}, + isbn = 9780534388096, + lccn = 00698382, + series = {Scientific Press series}, + year = 2003, + publisher = {Thomson/Brooks/Cole} } @article{freuder-1997-holygrail, - author = {Eugene C. Freuder}, - title = {In Pursuit of the Holy Grail}, - journal = {Constraints An Int. J.}, - volume = 2, - number = 1, - pages = {57--61}, - year = 1997, - url = {https://doi.org/10.1023/A:1009749006768}, - doi = {10.1023/A:1009749006768}, - timestamp = {Fri, 13 Mar 2020 10:58:24 +0100}, - biburl = {https://dblp.org/rec/journals/constraints/Freuder97.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + author = {Eugene C. Freuder}, + title = {In Pursuit of the Holy Grail}, + journal = {Constraints An Int. J.}, + volume = 2, + number = 1, + pages = {57--61}, + year = 1997, + url = {https://doi.org/10.1023/A:1009749006768}, + doi = {10.1023/A:1009749006768}, + timestamp = {Fri, 13 Mar 2020 10:58:24 +0100}, + biburl = {https://dblp.org/rec/journals/constraints/Freuder97.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @inproceedings{frisch-2007-essence, - author = {Alan M. Frisch and Matthew Grum and Christopher Jefferson + author = {Alan M. Frisch and Matthew Grum and Christopher Jefferson and Bernadette Mart{\'{\i}}nez Hern{\'{a}}ndez and Ian Miguel}, - editor = {Manuela M. Veloso}, - title = {The Design of {ESSENCE:} {A} Constraint Language for + editor = {Manuela M. Veloso}, + title = {The Design of {ESSENCE:} {A} Constraint Language for Specifying Combinatorial Problems}, - booktitle = {{IJCAI} 2007, Proceedings of the 20th International Joint + booktitle = {{IJCAI} 2007, Proceedings of the 20th International Joint Conference on Artificial Intelligence, Hyderabad, India, January 6-12, 2007}, - pages = {80--87}, - year = 2007, - url = {http://ijcai.org/Proceedings/07/Papers/011.pdf}, - timestamp = {Tue, 20 Aug 2019 16:17:11 +0200}, - biburl = {https://dblp.org/rec/conf/ijcai/FrischGJHM07.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + pages = {80--87}, + year = 2007, + url = {http://ijcai.org/Proceedings/07/Papers/011.pdf}, + timestamp = {Tue, 20 Aug 2019 16:17:11 +0200}, + biburl = {https://dblp.org/rec/conf/ijcai/FrischGJHM07.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @inproceedings{frisch-2009-undefinedness, - author = {Alan M. Frisch and Peter J. Stuckey}, - editor = {Ian P. Gent}, - title = {The Proper Treatment of Undefinedness in Constraint + author = {Alan M. Frisch and Peter J. Stuckey}, + editor = {Ian P. Gent}, + title = {The Proper Treatment of Undefinedness in Constraint Languages}, - booktitle = {Principles and Practice of Constraint Programming - {CP} + booktitle = {Principles and Practice of Constraint Programming - {CP} 2009, 15th International Conference, {CP} 2009, Lisbon, Portugal, September 20-24, 2009, Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 5732, - pages = {367--382}, - publisher = {Springer}, - year = 2009, - url = {https://doi.org/10.1007/978-3-642-04244-7_30}, - doi = {10.1007/978-3-642-04244-7_30}, - timestamp = {Tue, 14 May 2019 10:00:45 +0200}, - biburl = {https://dblp.org/rec/conf/cp/FrischS09.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} -} - -@article{fruhwirth-1998-chr, - author = {Thom W. Fr{\"{u}}hwirth}, - title = {Theory and Practice of Constraint Handling Rules}, - journal = {J. Log. Program.}, - volume = 37, - number = {1-3}, - pages = {95--138}, - year = 1998, - url = {https://doi.org/10.1016/S0743-1066(98)10005-5}, - doi = {10.1016/S0743-1066(98)10005-5}, - timestamp = {Wed, 17 Feb 2021 08:54:37 +0100}, - biburl = {https://dblp.org/rec/journals/jlp/Fruhwirth98.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + series = {Lecture Notes in Computer Science}, + volume = 5732, + pages = {367--382}, + publisher = {Springer}, + year = 2009, + url = {https://doi.org/10.1007/978-3-642-04244-7_30}, + doi = {10.1007/978-3-642-04244-7_30}, + timestamp = {Tue, 14 May 2019 10:00:45 +0200}, + biburl = {https://dblp.org/rec/conf/cp/FrischS09.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @techreport{gamrath-2020-scip, @@ -428,19 +435,19 @@ url = {http://nbn-resolving.de/urn:nbn:de:0297-zib-78023} } -@article{gebser-2012-clasp, - author = {Martin Gebser and Benjamin Kaufmann and Torsten Schaub}, - title = {Conflict-driven answer set solving: From theory to - practice}, - journal = {Artif. Intell.}, - volume = 187, - pages = {52--89}, - year = 2012, - url = {https://doi.org/10.1016/j.artint.2012.04.001}, - doi = {10.1016/j.artint.2012.04.001}, - timestamp = {Fri, 09 Apr 2021 18:34:15 +0200}, - biburl = {https://dblp.org/rec/journals/ai/GebserKS12.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} +@article{fruhwirth-1998-chr, + author = {Thom W. Fr{\"{u}}hwirth}, + title = {Theory and Practice of Constraint Handling Rules}, + journal = {J. Log. Program.}, + volume = 37, + number = {1-3}, + pages = {95--138}, + year = 1998, + url = {https://doi.org/10.1016/S0743-1066(98)10005-5}, + doi = {10.1016/S0743-1066(98)10005-5}, + timestamp = {Wed, 17 Feb 2021 08:54:37 +0100}, + biburl = {https://dblp.org/rec/journals/jlp/Fruhwirth98.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @software{gecode-2021-gecode, @@ -451,249 +458,247 @@ version = {6.3.0} } +@article{gebser-2012-clasp, + author = {Martin Gebser and Benjamin Kaufmann and Torsten Schaub}, + title = {Conflict-driven answer set solving: From theory to + practice}, + journal = {Artif. Intell.}, + volume = 187, + pages = {52--89}, + year = 2012, + url = {https://doi.org/10.1016/j.artint.2012.04.001}, + doi = {10.1016/j.artint.2012.04.001}, + timestamp = {Fri, 09 Apr 2021 18:34:15 +0200}, + biburl = {https://dblp.org/rec/journals/ai/GebserKS12.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} + @manual{gurobi-2021-gurobi, - author = {{Gurobi Optimization, LLC}}, - title = {Gurobi Optimizer Reference Manual}, - year = 2021, - url = {http://www.gurobi.com} + author = {{Gurobi Optimization, LLC}}, + title = {Gurobi Optimizer Reference Manual}, + year = 2021, + url = {http://www.gurobi.com} } @inproceedings{hebrard-2005-diverse, - author = {Emmanuel Hebrard and Brahim Hnich and Barry O'Sullivan and + author = {Emmanuel Hebrard and Brahim Hnich and Barry O'Sullivan and Toby Walsh}, - editor = {Manuela M. Veloso and Subbarao Kambhampati}, - title = {Finding Diverse and Similar Solutions in Constraint + editor = {Manuela M. Veloso and Subbarao Kambhampati}, + title = {Finding Diverse and Similar Solutions in Constraint Programming}, - booktitle = {Proceedings, The Twentieth National Conference on + booktitle = {Proceedings, The Twentieth National Conference on Artificial Intelligence and the Seventeenth Innovative Applications of Artificial Intelligence Conference, July 9-13, 2005, Pittsburgh, Pennsylvania, {USA}}, - pages = {372--377}, - publisher = {{AAAI} Press / The {MIT} Press}, - year = 2005, - url = {http://www.aaai.org/Library/AAAI/2005/aaai05-059.php}, - timestamp = {Mon, 10 Dec 2012 15:34:42 +0100}, - biburl = {https://dblp.org/rec/conf/aaai/HebrardHOW05.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + pages = {372--377}, + publisher = {{AAAI} Press / The {MIT} Press}, + year = 2005, + url = {http://www.aaai.org/Library/AAAI/2005/aaai05-059.php}, + timestamp = {Mon, 10 Dec 2012 15:34:42 +0100}, + biburl = {https://dblp.org/rec/conf/aaai/HebrardHOW05.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @inproceedings{ingmar-2020-diverse, - author = {Linnea Ingmar and Maria Garcia de la Banda and Peter J. + author = {Linnea Ingmar and Maria Garcia de la Banda and Peter J. Stuckey and Guido Tack}, - title = {Modelling Diversity of Solutions}, - booktitle = {The Thirty-Fourth {AAAI} Conference on Artificial + title = {Modelling Diversity of Solutions}, + booktitle = {The Thirty-Fourth {AAAI} Conference on Artificial Intelligence, {AAAI} 2020, The Thirty-Second Innovative Applications of Artificial Intelligence Conference, {IAAI} 2020, The Tenth {AAAI} Symposium on Educational Advances in Artificial Intelligence, {EAAI} 2020, New York, NY, USA, February 7-12, 2020}, - pages = {1528--1535}, - publisher = {{AAAI} Press}, - year = 2020, - url = {https://aaai.org/ojs/index.php/AAAI/article/view/5512}, - timestamp = {Tue, 02 Feb 2021 08:00:14 +0100}, - biburl = {https://dblp.org/rec/conf/aaai/IngmarBST20.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + pages = {1528--1535}, + publisher = {{AAAI} Press}, + year = 2020, + url = {https://aaai.org/ojs/index.php/AAAI/article/view/5512}, + timestamp = {Tue, 02 Feb 2021 08:00:14 +0100}, + biburl = {https://dblp.org/rec/conf/aaai/IngmarBST20.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @book{jaillet-2021-online, - title = {Online Optimization}, - author = {Jaillet, P. and Wagner, M.R.}, - isbn = 9780387717715, - series = {International Series in Operations Research \& Management + title = {Online Optimization}, + author = {Jaillet, P. and Wagner, M.R.}, + isbn = 9780387717715, + series = {International Series in Operations Research \& Management Science}, - year = 2021, - publisher = {Springer US} + year = 2021, + publisher = {Springer US} } @article{jefferson-2010-connectives, - author = {Christopher Jefferson and Neil C. A. Moore and Peter + author = {Christopher Jefferson and Neil C. A. Moore and Peter Nightingale and Karen E. Petrie}, - title = {Implementing logical connectives in constraint programming}, - journal = {Artif. Intell.}, - volume = 174, - number = {16-17}, - pages = {1407--1429}, - year = 2010, - url = {https://doi.org/10.1016/j.artint.2010.07.001}, - doi = {10.1016/j.artint.2010.07.001}, - timestamp = {Sat, 16 Sep 2017 12:06:14 +0200}, - biburl = {https://dblp.org/rec/journals/ai/JeffersonMNP10.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + title = {Implementing logical connectives in constraint programming}, + journal = {Artif. Intell.}, + volume = 174, + number = {16-17}, + pages = {1407--1429}, + year = 2010, + url = {https://doi.org/10.1016/j.artint.2010.07.001}, + doi = {10.1016/j.artint.2010.07.001}, + timestamp = {Sat, 16 Sep 2017 12:06:14 +0200}, + biburl = {https://dblp.org/rec/journals/ai/JeffersonMNP10.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @article{jones-2002-multi-objective, - author = {Dylan F. Jones and S. Keyvan Mirrazavi and Mehrdad Tamiz}, - title = {Multi-objective meta-heuristics: An overview of the current + author = {Dylan F. Jones and S. Keyvan Mirrazavi and Mehrdad Tamiz}, + title = {Multi-objective meta-heuristics: An overview of the current state-of-the-art}, - journal = {Eur. J. Oper. Res.}, - volume = 137, - number = 1, - pages = {1--9}, - year = 2002, - url = {https://doi.org/10.1016/S0377-2217(01)00123-0}, - doi = {10.1016/S0377-2217(01)00123-0}, - timestamp = {Fri, 21 Feb 2020 13:15:05 +0100}, - biburl = {https://dblp.org/rec/journals/eor/JonesMT02.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + journal = {Eur. J. Oper. Res.}, + volume = 137, + number = 1, + pages = {1--9}, + year = 2002, + url = {https://doi.org/10.1016/S0377-2217(01)00123-0}, + doi = {10.1016/S0377-2217(01)00123-0}, + timestamp = {Fri, 21 Feb 2020 13:15:05 +0100}, + biburl = {https://dblp.org/rec/journals/eor/JonesMT02.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @article{kolisch-1997-psplib, - title = {PSPLIB - A project scheduling problem library: OR Software + title = {PSPLIB - A project scheduling problem library: OR Software - ORSEP Operations Research Software Exchange Program}, - journal = {European Journal of Operational Research}, - volume = 96, - number = 1, - pages = {205-216}, - year = 1997, - issn = {0377-2217}, - doi = {https://doi.org/10.1016/S0377-2217(96)00170-1}, - url = {https://www.sciencedirect.com/science/article/pii/S0377221796001701}, - author = {Rainer Kolisch and Arno Sprecher}, - keywords = {Project scheduling, Resource constraints, Benchmark + journal = {European Journal of Operational Research}, + volume = 96, + number = 1, + pages = {205-216}, + year = 1997, + issn = {0377-2217}, + doi = {https://doi.org/10.1016/S0377-2217(96)00170-1}, + url = + {https://www.sciencedirect.com/science/article/pii/S0377221796001701}, + author = {Rainer Kolisch and Arno Sprecher}, + keywords = {Project scheduling, Resource constraints, Benchmark instances} } @inproceedings{lagerkvist-2009-groups, - author = {Mikael Z. Lagerkvist and Christian Schulte}, - editor = {Ian P. Gent}, - title = {Propagator Groups}, - booktitle = {Principles and Practice of Constraint Programming - {CP} + author = {Mikael Z. Lagerkvist and Christian Schulte}, + editor = {Ian P. Gent}, + title = {Propagator Groups}, + booktitle = {Principles and Practice of Constraint Programming - {CP} 2009, 15th International Conference, {CP} 2009, Lisbon, Portugal, September 20-24, 2009, Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 5732, - pages = {524--538}, - publisher = {Springer}, - year = 2009, - url = {https://doi.org/10.1007/978-3-642-04244-7_42}, - doi = {10.1007/978-3-642-04244-7_42}, - timestamp = {Tue, 14 May 2019 10:00:45 +0200}, - biburl = {https://dblp.org/rec/conf/cp/LagerkvistS09.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + series = {Lecture Notes in Computer Science}, + volume = 5732, + pages = {524--538}, + publisher = {Springer}, + year = 2009, + url = {https://doi.org/10.1007/978-3-642-04244-7_42}, + doi = {10.1007/978-3-642-04244-7_42}, + timestamp = {Tue, 14 May 2019 10:00:45 +0200}, + biburl = {https://dblp.org/rec/conf/cp/LagerkvistS09.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @inproceedings{leo-2015-multipass, - author = {Kevin Leo and Guido Tack}, - editor = {Qiang Yang and Michael J. Wooldridge}, - title = {Multi-Pass High-Level Presolving}, - booktitle = {Proceedings of the Twenty-Fourth International Joint + author = {Kevin Leo and Guido Tack}, + editor = {Qiang Yang and Michael J. Wooldridge}, + title = {Multi-Pass High-Level Presolving}, + booktitle = {Proceedings of the Twenty-Fourth International Joint Conference on Artificial Intelligence, {IJCAI} 2015, Buenos Aires, Argentina, July 25-31, 2015}, - pages = {346--352}, - publisher = {{AAAI} Press}, - year = 2015, - url = {http://ijcai.org/Abstract/15/055}, - timestamp = {Tue, 20 Aug 2019 16:16:43 +0200}, - biburl = {https://dblp.org/rec/conf/ijcai/LeoT15.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + pages = {346--352}, + publisher = {{AAAI} Press}, + year = 2015, + url = {http://ijcai.org/Abstract/15/055}, + timestamp = {Tue, 20 Aug 2019 16:16:43 +0200}, + biburl = {https://dblp.org/rec/conf/ijcai/LeoT15.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @article{lougee-heimer-2003-coin, - author = {Robin Lougee{-}Heimer}, - title = {The Common Optimization INterface for Operations Research: + author = {Robin Lougee{-}Heimer}, + title = {The Common Optimization INterface for Operations Research: Promoting open-source software in the operations research community}, - journal = {{IBM} J. Res. Dev.}, - volume = 47, - number = 1, - pages = {57--66}, - year = 2003, - url = {https://doi.org/10.1147/rd.471.0057}, - doi = {10.1147/rd.471.0057}, - timestamp = {Fri, 13 Mar 2020 10:54:17 +0100}, - biburl = {https://dblp.org/rec/journals/ibmrd/Lougee-Heimer03.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + journal = {{IBM} J. Res. Dev.}, + volume = 47, + number = 1, + pages = {57--66}, + year = 2003, + url = {https://doi.org/10.1147/rd.471.0057}, + doi = {10.1147/rd.471.0057}, + timestamp = {Fri, 13 Mar 2020 10:54:17 +0100}, + biburl = {https://dblp.org/rec/journals/ibmrd/Lougee-Heimer03.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @inproceedings{marinov-2005-sat-optimisations, - author = {Darko Marinov and Sarfraz Khurshid and Suhabe Bugrara and + author = {Darko Marinov and Sarfraz Khurshid and Suhabe Bugrara and Lintao Zhang and Martin C. Rinard}, - editor = {Fahiem Bacchus and Toby Walsh}, - title = {Optimizations for Compiling Declarative Models into Boolean + editor = {Fahiem Bacchus and Toby Walsh}, + title = {Optimizations for Compiling Declarative Models into Boolean Formulas}, - booktitle = {Theory and Applications of Satisfiability Testing, 8th + booktitle = {Theory and Applications of Satisfiability Testing, 8th International Conference, {SAT} 2005, St. Andrews, UK, June 19-23, 2005, Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 3569, - pages = {187--202}, - publisher = {Springer}, - year = 2005, - url = {https://doi.org/10.1007/11499107_14}, - doi = {10.1007/11499107_14}, - timestamp = {Tue, 14 May 2019 10:00:41 +0200}, - biburl = {https://dblp.org/rec/conf/sat/MarinovKBZR05.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + series = {Lecture Notes in Computer Science}, + volume = 3569, + pages = {187--202}, + publisher = {Springer}, + year = 2005, + url = {https://doi.org/10.1007/11499107_14}, + doi = {10.1007/11499107_14}, + timestamp = {Tue, 14 May 2019 10:00:41 +0200}, + biburl = {https://dblp.org/rec/conf/sat/MarinovKBZR05.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @book{marriott-1998-clp, - location = {Cambridge, Mass}, - title = {Programming with constraints: an introduction}, - isbn = {978-0-262-13341-8}, - shorttitle = {Programming with constraints}, - pagetotal = 467, - publisher = {{MIT} Press}, - author = {Marriott, Kim and Stuckey, Peter J.}, - date = 1998, - keywords = {Constraint programming (Computer science), Logic + location = {Cambridge, Mass}, + title = {Programming with constraints: an introduction}, + isbn = {978-0-262-13341-8}, + shorttitle = {Programming with constraints}, + pagetotal = 467, + publisher = {{MIT} Press}, + author = {Marriott, Kim and Stuckey, Peter J.}, + date = 1998, + keywords = {Constraint programming (Computer science), Logic programming} } @article{marriott-2008-zinc, - author = {Kim Marriott and Nicholas Nethercote and Reza Rafeh and + author = {Kim Marriott and Nicholas Nethercote and Reza Rafeh and Peter J. Stuckey and Maria Garcia de la Banda and Mark Wallace}, - title = {The Design of the Zinc Modelling Language}, - journal = {Constraints An Int. J.}, - volume = 13, - number = 3, - pages = {229--267}, - year = 2008, - url = {https://doi.org/10.1007/s10601-008-9041-4}, - doi = {10.1007/s10601-008-9041-4}, - timestamp = {Fri, 13 Mar 2020 10:58:29 +0100}, - biburl = {https://dblp.org/rec/journals/constraints/MarriottNRSBW08.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + title = {The Design of the Zinc Modelling Language}, + journal = {Constraints An Int. J.}, + volume = 13, + number = 3, + pages = {229--267}, + year = 2008, + url = {https://doi.org/10.1007/s10601-008-9041-4}, + doi = {10.1007/s10601-008-9041-4}, + timestamp = {Fri, 13 Mar 2020 10:58:29 +0100}, + biburl = + {https://dblp.org/rec/journals/constraints/MarriottNRSBW08.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @inproceedings{mears-2014-option, - author = {Christopher Mears and Andreas Schutt and Peter J. Stuckey + author = {Christopher Mears and Andreas Schutt and Peter J. Stuckey and Guido Tack and Kim Marriott and Mark Wallace}, - editor = {Helmut Simonis}, - title = {Modelling with Option Types in MiniZinc}, - booktitle = {Integration of {AI} and {OR} Techniques in Constraint + editor = {Helmut Simonis}, + title = {Modelling with Option Types in MiniZinc}, + booktitle = {Integration of {AI} and {OR} Techniques in Constraint Programming - 11th International Conference, {CPAIOR} 2014, Cork, Ireland, May 19-23, 2014. Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 8451, - pages = {88--103}, - publisher = {Springer}, - year = 2014, - url = {https://doi.org/10.1007/978-3-319-07046-9_7}, - doi = {10.1007/978-3-319-07046-9_7}, - timestamp = {Tue, 14 May 2019 10:00:47 +0200}, - biburl = {https://dblp.org/rec/conf/cpaior/MearsSSTMW14.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} -} - -@inproceedings{michel-2005-comet, - author = {Laurent Michel and Pascal Van Hentenryck}, - editor = {Peter van Beek}, - title = {The Comet Programming Language and System}, - booktitle = {Principles and Practice of Constraint Programming - {CP} - 2005, 11th International Conference, {CP} 2005, Sitges, Spain, - October 1-5, 2005, Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 3709, - pages = {881--881}, - publisher = {Springer}, - year = 2005, - url = {https://doi.org/10.1007/11564751_119}, - doi = {10.1007/11564751_119}, - timestamp = {Tue, 14 May 2019 10:00:45 +0200}, - biburl = {https://dblp.org/rec/conf/cp/MichelH05a.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + series = {Lecture Notes in Computer Science}, + volume = 8451, + pages = {88--103}, + publisher = {Springer}, + year = 2014, + url = {https://doi.org/10.1007/978-3-319-07046-9_7}, + doi = {10.1007/978-3-319-07046-9_7}, + timestamp = {Tue, 14 May 2019 10:00:47 +0200}, + biburl = {https://dblp.org/rec/conf/cpaior/MearsSSTMW14.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @software{minizinc-2021-minizinc, @@ -704,24 +709,23 @@ version = {2.5.5} } -@inproceedings{nethercote-2007-minizinc, - author = {Nicholas Nethercote and Peter J. Stuckey and Ralph Becket - and Sebastian Brand and Gregory J. Duck and Guido Tack}, - editor = {Christian Bessiere}, - title = {MiniZinc: Towards a Standard {CP} Modelling Language}, - booktitle = {Principles and Practice of Constraint Programming - {CP} - 2007, 13th International Conference, {CP} 2007, Providence, - RI, USA, September 23-27, 2007, Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 4741, - pages = {529--543}, - publisher = {Springer}, - year = 2007, - url = {https://doi.org/10.1007/978-3-540-74970-7_38}, - doi = {10.1007/978-3-540-74970-7_38}, - timestamp = {Tue, 14 May 2019 10:00:45 +0200}, - biburl = {https://dblp.org/rec/conf/cp/NethercoteSBBDT07.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} +@inproceedings{michel-2005-comet, + author = {Laurent Michel and Pascal Van Hentenryck}, + editor = {Peter van Beek}, + title = {The Comet Programming Language and System}, + booktitle = {Principles and Practice of Constraint Programming - {CP} + 2005, 11th International Conference, {CP} 2005, Sitges, Spain, + October 1-5, 2005, Proceedings}, + series = {Lecture Notes in Computer Science}, + volume = 3709, + pages = {881--881}, + publisher = {Springer}, + year = 2005, + url = {https://doi.org/10.1007/11564751_119}, + doi = {10.1007/11564751_119}, + timestamp = {Tue, 14 May 2019 10:00:45 +0200}, + biburl = {https://dblp.org/rec/conf/cp/MichelH05a.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @software{perron-2021-ortools, @@ -733,61 +737,64 @@ date = {2021-04-30} } +@inproceedings{nethercote-2007-minizinc, + author = {Nicholas Nethercote and Peter J. Stuckey and Ralph Becket + and Sebastian Brand and Gregory J. Duck and Guido Tack}, + editor = {Christian Bessiere}, + title = {MiniZinc: Towards a Standard {CP} Modelling Language}, + booktitle = {Principles and Practice of Constraint Programming - {CP} + 2007, 13th International Conference, {CP} 2007, Providence, + RI, USA, September 23-27, 2007, Proceedings}, + series = {Lecture Notes in Computer Science}, + volume = 4741, + pages = {529--543}, + publisher = {Springer}, + year = 2007, + url = {https://doi.org/10.1007/978-3-540-74970-7_38}, + doi = {10.1007/978-3-540-74970-7_38}, + timestamp = {Tue, 14 May 2019 10:00:45 +0200}, + biburl = {https://dblp.org/rec/conf/cp/NethercoteSBBDT07.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} + @article{pisinger-2007-heuristic, - author = {David Pisinger and Stefan Ropke}, - title = {A general heuristic for vehicle routing problems}, - journal = {Comput. Oper. Res.}, - volume = 34, - number = 8, - pages = {2403--2435}, - year = 2007, - url = {https://doi.org/10.1016/j.cor.2005.09.012}, - doi = {10.1016/j.cor.2005.09.012}, - timestamp = {Tue, 18 Feb 2020 13:56:22 +0100}, - biburl = {https://dblp.org/rec/journals/cor/PisingerR07.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + author = {David Pisinger and Stefan Ropke}, + title = {A general heuristic for vehicle routing problems}, + journal = {Comput. Oper. Res.}, + volume = 34, + number = 8, + pages = {2403--2435}, + year = 2007, + url = {https://doi.org/10.1016/j.cor.2005.09.012}, + doi = {10.1016/j.cor.2005.09.012}, + timestamp = {Tue, 18 Feb 2020 13:56:22 +0100}, + biburl = {https://dblp.org/rec/journals/cor/PisingerR07.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @article{plaisted-1986-polarity, - author = {David A. Plaisted and Steven Greenbaum}, - title = {A Structure-Preserving Clause Form Translation}, - journal = {J. Symb. Comput.}, - volume = 2, - number = 3, - pages = {293--304}, - year = 1986, - url = {https://doi.org/10.1016/S0747-7171(86)80028-1}, - doi = {10.1016/S0747-7171(86)80028-1}, - timestamp = {Wed, 17 Feb 2021 08:57:26 +0100}, - biburl = {https://dblp.org/rec/journals/jsc/PlaistedG86.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + author = {David A. Plaisted and Steven Greenbaum}, + title = {A Structure-Preserving Clause Form Translation}, + journal = {J. Symb. Comput.}, + volume = 2, + number = 3, + pages = {293--304}, + year = 1986, + url = {https://doi.org/10.1016/S0747-7171(86)80028-1}, + doi = {10.1016/S0747-7171(86)80028-1}, + timestamp = {Wed, 17 Feb 2021 08:57:26 +0100}, + biburl = {https://dblp.org/rec/journals/jsc/PlaistedG86.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @manual{prudhomme-2016-choco, - author = {Charles Prud'homme and Jean-Guillaume Fages and Xavier + author = {Charles Prud'homme and Jean-Guillaume Fages and Xavier Lorca}, - title = {Choco Solver Documentation}, - year = 2016, - organization = {TASC, INRIA Rennes, LINA CNRS UMR 6241, COSLING S.A.S.}, - timestamp = {Tue, 9 Feb 2016}, - url = {http://www.choco-solver.org } -} - -@inproceedings{rendl-2009-enhanced-tailoring, - author = {Andrea Rendl and Ian Miguel and Ian P. Gent and Christopher - Jefferson}, - editor = {Vadim Bulitko and J. Christopher Beck}, - title = {Automatically Enhancing Constraint Model Instances during - Tailoring}, - booktitle = {Eighth Symposium on Abstraction, Reformulation, and - Approximation, {SARA} 2009, Lake Arrowhead, California, USA, - 8-10 August 2009}, - publisher = {{AAAI}}, - year = 2009, - url = {http://www.aaai.org/ocs/index.php/SARA/SARA09/paper/view/824}, - timestamp = {Tue, 09 Feb 2021 08:32:53 +0100}, - biburl = {https://dblp.org/rec/conf/sara/RendlMGJ09.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + title = {Choco Solver Documentation}, + year = 2016, + organization = {TASC, INRIA Rennes, LINA CNRS UMR 6241, COSLING S.A.S.}, + timestamp = {Tue, 9 Feb 2016}, + url = {http://www.choco-solver.org } } @phdthesis{rendl-2010-thesis, @@ -801,309 +808,329 @@ bibsource = {dblp computer science bibliography, https://dblp.org} } +@inproceedings{rendl-2009-enhanced-tailoring, + author = {Andrea Rendl and Ian Miguel and Ian P. Gent and Christopher + Jefferson}, + editor = {Vadim Bulitko and J. Christopher Beck}, + title = {Automatically Enhancing Constraint Model Instances during + Tailoring}, + booktitle = {Eighth Symposium on Abstraction, Reformulation, and + Approximation, {SARA} 2009, Lake Arrowhead, California, USA, + 8-10 August 2009}, + publisher = {{AAAI}}, + year = 2009, + url = + {http://www.aaai.org/ocs/index.php/SARA/SARA09/paper/view/824}, + timestamp = {Tue, 09 Feb 2021 08:32:53 +0100}, + biburl = {https://dblp.org/rec/conf/sara/RendlMGJ09.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} + @inproceedings{rendl-2015-minisearch, - author = {Andrea Rendl and Tias Guns and Peter J. Stuckey and Guido + author = {Andrea Rendl and Tias Guns and Peter J. Stuckey and Guido Tack}, - editor = {Gilles Pesant}, - title = {MiniSearch: {A} Solver-Independent Meta-Search Language for + editor = {Gilles Pesant}, + title = {MiniSearch: {A} Solver-Independent Meta-Search Language for MiniZinc}, - booktitle = {Principles and Practice of Constraint Programming - 21st + booktitle = {Principles and Practice of Constraint Programming - 21st International Conference, {CP} 2015, Cork, Ireland, August 31 - September 4, 2015, Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 9255, - pages = {376--392}, - publisher = {Springer}, - year = 2015, - url = {https://doi.org/10.1007/978-3-319-23219-5_27}, - doi = {10.1007/978-3-319-23219-5_27}, - timestamp = {Sun, 25 Oct 2020 23:13:15 +0100}, - biburl = {https://dblp.org/rec/conf/cp/RendlGST15.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + series = {Lecture Notes in Computer Science}, + volume = 9255, + pages = {376--392}, + publisher = {Springer}, + year = 2015, + url = {https://doi.org/10.1007/978-3-319-23219-5_27}, + doi = {10.1007/978-3-319-23219-5_27}, + timestamp = {Sun, 25 Oct 2020 23:13:15 +0100}, + biburl = {https://dblp.org/rec/conf/cp/RendlGST15.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @article{ropke-2006-adaptive, - author = {Stefan Ropke and David Pisinger}, - title = {An Adaptive Large Neighborhood Search Heuristic for the + author = {Stefan Ropke and David Pisinger}, + title = {An Adaptive Large Neighborhood Search Heuristic for the Pickup and Delivery Problem with Time Windows}, - journal = {Transp. Sci.}, - volume = 40, - number = 4, - pages = {455--472}, - year = 2006, - url = {https://doi.org/10.1287/trsc.1050.0135}, - doi = {10.1287/trsc.1050.0135}, - timestamp = {Tue, 08 Sep 2020 13:28:27 +0200}, - biburl = {https://dblp.org/rec/journals/transci/RopkeP06.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + journal = {Transp. Sci.}, + volume = 40, + number = 4, + pages = {455--472}, + year = 2006, + url = {https://doi.org/10.1287/trsc.1050.0135}, + doi = {10.1287/trsc.1050.0135}, + timestamp = {Tue, 08 Sep 2020 13:28:27 +0200}, + biburl = {https://dblp.org/rec/journals/transci/RopkeP06.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @book{rossi-2006-cp, - title = {Handbook of Constraint Programming}, - author = {Rossi, F. and van Beek, P. and Walsh, T.}, - isbn = 9780080463803, - series = {ISSN}, - year = 2006, - publisher = {Elsevier Science} + title = {Handbook of Constraint Programming}, + author = {Rossi, F. and van Beek, P. and Walsh, T.}, + isbn = 9780080463803, + series = {ISSN}, + year = 2006, + publisher = {Elsevier Science} } @article{schiendorfer-2018-minibrass, - author = {Alexander Schiendorfer and Alexander Knapp and Gerrit + author = {Alexander Schiendorfer and Alexander Knapp and Gerrit Anders and Wolfgang Reif}, - title = {MiniBrass: Soft constraints for MiniZinc}, - journal = {Constraints An Int. J.}, - volume = 23, - number = 4, - pages = {403--450}, - year = 2018, - url = {https://doi.org/10.1007/s10601-018-9289-2}, - doi = {10.1007/s10601-018-9289-2}, - timestamp = {Mon, 26 Oct 2020 09:00:47 +0100}, - biburl = {https://dblp.org/rec/journals/constraints/SchiendorferKAR18.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + title = {MiniBrass: Soft constraints for MiniZinc}, + journal = {Constraints An Int. J.}, + volume = 23, + number = 4, + pages = {403--450}, + year = 2018, + url = {https://doi.org/10.1007/s10601-018-9289-2}, + doi = {10.1007/s10601-018-9289-2}, + timestamp = {Mon, 26 Oct 2020 09:00:47 +0100}, + biburl = + {https://dblp.org/rec/journals/constraints/SchiendorferKAR18.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @book{schrijver-1998-mip, - title = {Theory of Linear and Integer Programming}, - author = {Schrijver, A.}, - isbn = 9780471982326, - lccn = {lc85012314}, - series = {Wiley Series in Discrete Mathematics \& Optimization}, - year = 1998, - publisher = {Wiley} + title = {Theory of Linear and Integer Programming}, + author = {Schrijver, A.}, + isbn = 9780471982326, + lccn = {lc85012314}, + series = {Wiley Series in Discrete Mathematics \& Optimization}, + year = 1998, + publisher = {Wiley} } @article{schrijvers-2013-combinators, - author = {Tom Schrijvers and Guido Tack and Pieter Wuille and Horst + author = {Tom Schrijvers and Guido Tack and Pieter Wuille and Horst Samulowitz and Peter J. Stuckey}, - title = {Search combinators}, - journal = {Constraints An Int. J.}, - volume = 18, - number = 2, - pages = {269--305}, - year = 2013, - url = {https://doi.org/10.1007/s10601-012-9137-8}, - doi = {10.1007/s10601-012-9137-8}, - timestamp = {Fri, 13 Mar 2020 10:58:29 +0100}, - biburl = {https://dblp.org/rec/journals/constraints/SchrijversTWSS13.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + title = {Search combinators}, + journal = {Constraints An Int. J.}, + volume = 18, + number = 2, + pages = {269--305}, + year = 2013, + url = {https://doi.org/10.1007/s10601-012-9137-8}, + doi = {10.1007/s10601-012-9137-8}, + timestamp = {Fri, 13 Mar 2020 10:58:29 +0100}, + biburl = + {https://dblp.org/rec/journals/constraints/SchrijversTWSS13.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @inproceedings{schulte-2000-deep, - author = {Christian Schulte}, - editor = {Enrico Pontelli and V{\'{\i}}tor Santos Costa}, - title = {Programming Deep Concurrent Constraint Combinators}, - booktitle = {Practical Aspects of Declarative Languages, Second + author = {Christian Schulte}, + editor = {Enrico Pontelli and V{\'{\i}}tor Santos Costa}, + title = {Programming Deep Concurrent Constraint Combinators}, + booktitle = {Practical Aspects of Declarative Languages, Second International Workshop, {PADL} 2000, Boston, MA, USA, January 2000, Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 1753, - pages = {215--229}, - publisher = {Springer}, - year = 2000, - url = {https://doi.org/10.1007/3-540-46584-7_15}, - doi = {10.1007/3-540-46584-7_15}, - timestamp = {Tue, 14 May 2019 10:00:42 +0200}, - biburl = {https://dblp.org/rec/conf/padl/Schulte00.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + series = {Lecture Notes in Computer Science}, + volume = 1753, + pages = {215--229}, + publisher = {Springer}, + year = 2000, + url = {https://doi.org/10.1007/3-540-46584-7_15}, + doi = {10.1007/3-540-46584-7_15}, + timestamp = {Tue, 14 May 2019 10:00:42 +0200}, + biburl = {https://dblp.org/rec/conf/padl/Schulte00.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @inproceedings{schulte-2005-views, - author = {Christian Schulte and Guido Tack}, - editor = {Peter van Beek}, - title = {Views and Iterators for Generic Constraint Implementations}, - booktitle = {Principles and Practice of Constraint Programming - {CP} + author = {Christian Schulte and Guido Tack}, + editor = {Peter van Beek}, + title = {Views and Iterators for Generic Constraint Implementations}, + booktitle = {Principles and Practice of Constraint Programming - {CP} 2005, 11th International Conference, {CP} 2005, Sitges, Spain, October 1-5, 2005, Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 3709, - pages = {817--821}, - publisher = {Springer}, - year = 2005, - url = {https://doi.org/10.1007/11564751_71}, - doi = {10.1007/11564751_71}, - timestamp = {Tue, 14 May 2019 10:00:45 +0200}, - biburl = {https://dblp.org/rec/conf/cp/SchulteT05.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + series = {Lecture Notes in Computer Science}, + volume = 3709, + pages = {817--821}, + publisher = {Springer}, + year = 2005, + url = {https://doi.org/10.1007/11564751_71}, + doi = {10.1007/11564751_71}, + timestamp = {Tue, 14 May 2019 10:00:45 +0200}, + biburl = {https://dblp.org/rec/conf/cp/SchulteT05.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @article{schulte-2008-propagation, - author = {Christian Schulte and Peter J. Stuckey}, - title = {Efficient constraint propagation engines}, - journal = {{ACM} Trans. Program. Lang. Syst.}, - volume = 31, - number = 1, - pages = {2:1--2:43}, - year = 2008, - url = {https://doi.org/10.1145/1452044.1452046}, - doi = {10.1145/1452044.1452046}, - timestamp = {Tue, 06 Nov 2018 12:51:29 +0100}, - biburl = {https://dblp.org/rec/journals/toplas/SchulteS08.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + author = {Christian Schulte and Peter J. Stuckey}, + title = {Efficient constraint propagation engines}, + journal = {{ACM} Trans. Program. Lang. Syst.}, + volume = 31, + number = 1, + pages = {2:1--2:43}, + year = 2008, + url = {https://doi.org/10.1145/1452044.1452046}, + doi = {10.1145/1452044.1452046}, + timestamp = {Tue, 06 Nov 2018 12:51:29 +0100}, + biburl = {https://dblp.org/rec/journals/toplas/SchulteS08.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @inproceedings{schutt-2009-cumulative, - author = {Andreas Schutt and Thibaut Feydy and Peter J. Stuckey and + author = {Andreas Schutt and Thibaut Feydy and Peter J. Stuckey and Mark Wallace}, - editor = {Ian P. Gent}, - title = {Why Cumulative Decomposition Is Not as Bad as It Sounds}, - booktitle = {Principles and Practice of Constraint Programming - {CP} + editor = {Ian P. Gent}, + title = {Why Cumulative Decomposition Is Not as Bad as It Sounds}, + booktitle = {Principles and Practice of Constraint Programming - {CP} 2009, 15th International Conference, {CP} 2009, Lisbon, Portugal, September 20-24, 2009, Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 5732, - pages = {746--761}, - publisher = {Springer}, - year = 2009, - url = {https://doi.org/10.1007/978-3-642-04244-7_58}, - doi = {10.1007/978-3-642-04244-7_58}, - timestamp = {Tue, 14 May 2019 10:00:45 +0200}, - biburl = {https://dblp.org/rec/conf/cp/SchuttFSW09.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + series = {Lecture Notes in Computer Science}, + volume = 5732, + pages = {746--761}, + publisher = {Springer}, + year = 2009, + url = {https://doi.org/10.1007/978-3-642-04244-7_58}, + doi = {10.1007/978-3-642-04244-7_58}, + timestamp = {Tue, 14 May 2019 10:00:45 +0200}, + biburl = {https://dblp.org/rec/conf/cp/SchuttFSW09.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @inproceedings{shaw-1998-local-search, - author = {Paul Shaw}, - editor = {Michael J. Maher and Jean{-}Francois Puget}, - title = {Using Constraint Programming and Local Search Methods to + author = {Paul Shaw}, + editor = {Michael J. Maher and Jean{-}Francois Puget}, + title = {Using Constraint Programming and Local Search Methods to Solve Vehicle Routing Problems}, - booktitle = {Principles and Practice of Constraint Programming - CP98, + booktitle = {Principles and Practice of Constraint Programming - CP98, 4th International Conference, Pisa, Italy, October 26-30, 1998, Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 1520, - pages = {417--431}, - publisher = {Springer}, - year = 1998, - url = {https://doi.org/10.1007/3-540-49481-2_30}, - doi = {10.1007/3-540-49481-2_30}, - timestamp = {Tue, 14 May 2019 10:00:45 +0200}, - biburl = {https://dblp.org/rec/conf/cp/Shaw98.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + series = {Lecture Notes in Computer Science}, + volume = 1520, + pages = {417--431}, + publisher = {Springer}, + year = 1998, + url = {https://doi.org/10.1007/3-540-49481-2_30}, + doi = {10.1007/3-540-49481-2_30}, + timestamp = {Tue, 14 May 2019 10:00:45 +0200}, + biburl = {https://dblp.org/rec/conf/cp/Shaw98.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @book{silvano-1990-knapsack, - author = {Martello, Silvano and Toth, Paolo}, - title = {Knapsack Problems: Algorithms and Computer Implementations}, - year = 1990, - isbn = 0471924202, - publisher = {John Wiley \& Sons, Inc.}, - address = {USA} + author = {Martello, Silvano and Toth, Paolo}, + title = {Knapsack Problems: Algorithms and Computer Implementations}, + year = 1990, + isbn = 0471924202, + publisher = {John Wiley \& Sons, Inc.}, + address = {USA} } @article{stuckey-2010-challenge, - author = {Peter J. Stuckey and Ralph Becket and Julien Fischer}, - title = {Philosophy of the MiniZinc challenge}, - journal = {Constraints An Int. J.}, - volume = 15, - number = 3, - pages = {307--316}, - year = 2010, - url = {https://doi.org/10.1007/s10601-010-9093-0}, - doi = {10.1007/s10601-010-9093-0}, - timestamp = {Fri, 13 Mar 2020 10:58:27 +0100}, - biburl = {https://dblp.org/rec/journals/constraints/StuckeyBF10.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + author = {Peter J. Stuckey and Ralph Becket and Julien Fischer}, + title = {Philosophy of the MiniZinc challenge}, + journal = {Constraints An Int. J.}, + volume = 15, + number = 3, + pages = {307--316}, + year = 2010, + url = {https://doi.org/10.1007/s10601-010-9093-0}, + doi = {10.1007/s10601-010-9093-0}, + timestamp = {Fri, 13 Mar 2020 10:58:27 +0100}, + biburl = {https://dblp.org/rec/journals/constraints/StuckeyBF10.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @inproceedings{stuckey-2013-functions, - author = {Peter J. Stuckey and Guido Tack}, - editor = {Carla P. Gomes and Meinolf Sellmann}, - title = {MiniZinc with Functions}, - booktitle = {Integration of {AI} and {OR} Techniques in Constraint + author = {Peter J. Stuckey and Guido Tack}, + editor = {Carla P. Gomes and Meinolf Sellmann}, + title = {MiniZinc with Functions}, + booktitle = {Integration of {AI} and {OR} Techniques in Constraint Programming for Combinatorial Optimization Problems, 10th International Conference, {CPAIOR} 2013, Yorktown Heights, NY, USA, May 18-22, 2013. Proceedings}, - series = {Lecture Notes in Computer Science}, - volume = 7874, - pages = {268--283}, - publisher = {Springer}, - year = 2013, - url = {https://doi.org/10.1007/978-3-642-38171-3_18}, - doi = {10.1007/978-3-642-38171-3_18}, - timestamp = {Tue, 14 May 2019 10:00:47 +0200}, - biburl = {https://dblp.org/rec/conf/cpaior/StuckeyT13.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + series = {Lecture Notes in Computer Science}, + volume = 7874, + pages = {268--283}, + publisher = {Springer}, + year = 2013, + url = {https://doi.org/10.1007/978-3-642-38171-3_18}, + doi = {10.1007/978-3-642-38171-3_18}, + timestamp = {Tue, 14 May 2019 10:00:47 +0200}, + biburl = {https://dblp.org/rec/conf/cpaior/StuckeyT13.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @article{stuckey-2014-challenge, - author = {Peter J. Stuckey and Thibaut Feydy and Andreas Schutt and + author = {Peter J. Stuckey and Thibaut Feydy and Andreas Schutt and Guido Tack and Julien Fischer}, - title = {The MiniZinc Challenge 2008-2013}, - journal = {{AI} Mag.}, - volume = 35, - number = 2, - pages = {55--60}, - year = 2014, - url = {https://doi.org/10.1609/aimag.v35i2.2539}, - doi = {10.1609/aimag.v35i2.2539}, - timestamp = {Tue, 25 Aug 2020 16:50:56 +0200}, - biburl = {https://dblp.org/rec/journals/aim/StuckeyFSTF14.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} + title = {The MiniZinc Challenge 2008-2013}, + journal = {{AI} Mag.}, + volume = 35, + number = 2, + pages = {55--60}, + year = 2014, + url = {https://doi.org/10.1609/aimag.v35i2.2539}, + doi = {10.1609/aimag.v35i2.2539}, + timestamp = {Tue, 25 Aug 2020 16:50:56 +0200}, + biburl = {https://dblp.org/rec/journals/aim/StuckeyFSTF14.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} } @unpublished{van-hentenryck-1992-indexicals, - title = {Constraint processing in cc(FD)}, - author = {Van Hentenryck, P. and Saraswat, V. and Deville, Y.}, - year = 1992, - note = {Manuscript} + title = {Constraint processing in cc(FD)}, + author = {Van Hentenryck, P. and Saraswat, V. and Deville, Y.}, + year = 1992, + note = {Manuscript} } @book{van-hentenryck-1999-opl, - title = {The OPL Optimization Programming Language}, - author = {Van Hentenryck, P. and Lustig, I. and Puget, J.F. and + title = {The OPL Optimization Programming Language}, + author = {Van Hentenryck, P. and Lustig, I. and Puget, J.F. and Michel, L.}, - isbn = 9780262720304, - lccn = 98034698, - series = {Computing in Musicology; 11}, - year = 1999, - publisher = {MIT Press} + isbn = 9780262720304, + lccn = 98034698, + series = {Computing in Musicology; 11}, + year = 1999, + publisher = {MIT Press} } @article{van-hentenryck-2000-opl-search, - author = {Van Hentenryck, Pascal and Perron, Laurent and Puget, + author = {Van Hentenryck, Pascal and Perron, Laurent and Puget, Jean-Fran\c{c}ois}, - title = {Search and Strategies in OPL}, - year = 2000, - issue_date = {Oct. 2000}, - publisher = {Association for Computing Machinery}, - address = {New York, NY, USA}, - volume = 1, - number = 2, - issn = {1529-3785}, - url = {https://doi.org/10.1145/359496.359529}, - doi = {10.1145/359496.359529}, - journal = {ACM Trans. Comput. Logic}, - month = oct, - pages = {285–320}, - numpages = 36, - keywords = {search, modeling languages, constraint programming, + title = {Search and Strategies in OPL}, + year = 2000, + issue_date = {Oct. 2000}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + volume = 1, + number = 2, + issn = {1529-3785}, + url = {https://doi.org/10.1145/359496.359529}, + doi = {10.1145/359496.359529}, + journal = {ACM Trans. Comput. Logic}, + month = oct, + pages = {285–320}, + numpages = 36, + keywords = {search, modeling languages, constraint programming, combinatorial optimization} } @book{wallis-2011-combinatorics, - title = {Introduction to Combinatorics}, - author = {Wallis, W.D. and George, J.}, - isbn = 9781439806234, - series = {Discrete Mathematics and Its Applications}, - year = 2011, - publisher = {Taylor \& Francis} + title = {Introduction to Combinatorics}, + author = {Wallis, W.D. and George, J.}, + isbn = 9781439806234, + series = {Discrete Mathematics and Its Applications}, + year = 2011, + publisher = {Taylor \& Francis} } @article{warren-1983-wam, - title = {An abstract Prolog instruction set}, - author = {Warren, David HD}, - journal = {Technical note 309}, - year = 1983, - publisher = {SRI International} + title = {An abstract Prolog instruction set}, + author = {Warren, David HD}, + journal = {Technical note 309}, + year = 1983, + publisher = {SRI International} } @book{wolsey-1988-mip, - title = {Integer and Combinatorial Optimization}, - author = {Wolsey, L.A. and Nemhauser, G.L.}, - isbn = 9780471828198, - lccn = 87034067, - series = {Wiley Series in Discrete Mathematics and Optimization}, - year = 1988, - publisher = {Wiley} + title = {Integer and Combinatorial Optimization}, + author = {Wolsey, L.A. and Nemhauser, G.L.}, + isbn = 9780471828198, + lccn = 87034067, + series = {Wiley Series in Discrete Mathematics and Optimization}, + year = 1988, + publisher = {Wiley} } diff --git a/chapters/2_background.tex b/chapters/2_background.tex index dd3740c..c6e1b47 100644 --- a/chapters/2_background.tex +++ b/chapters/2_background.tex @@ -29,10 +29,10 @@ the modelling of \gls{cop}, where a \gls{csp} is augmented with a \gls{objective} \(z\). In this case the goal is to find a solution that satisfies all \constraints{} while minimising (or maximising) \(z\). -Although a constraint model does not contain any instructions to find a suitable -solution, these models can generally be given to a dedicated solving program, or -\solver{} for short, that can find a solution that fits the requirements of the -model. +Although a constraint model does not contain any instructions on how to find a +suitable solution, these models can generally be given to a dedicated solving +program, or \solver{} for short, that can find a solution that fits the +requirements of the model. \begin{example}% \label{ex:back-knapsack} @@ -178,16 +178,17 @@ format. In \minizinc\ these items are not constrained to occur in any particular order. We will briefly discuss the most important model items. For a detailed overview of the structure of \minizinc\ models you can consult the full syntactic structure of \minizinc\ 2.5.5 in \cref{ch:minizinc-grammar}. -Nethercote et al.\ and Mariott et al.\ offer a detailed discussion of the +Nethercote et al.\ and Marriott et al.\ offer a detailed discussion of the \minizinc\ and \zinc\ language, its predecessor, respectively \autocite*{nethercote-2007-minizinc,marriott-2008-zinc}. -Values in \minizinc\ are declared in the form \mzninline{@\(T\)@: @\(I\)@ = - @\(E\)@;}. \(T\) is the type of the declared value, \(I\) is a new identifier -used to reference the declared value, and, optionally, the modeller can -functionally define the value using an expression \(E\). The identifier used in -a top-level value definition must be unique. Two declarations with the same -identifier will result in an error during the flattening process. +Values in \minizinc\ are declared in the form \mzninline{@\(T\)@: @\(I\)@;} or +\mzninline{@\(T\)@: @\(I\)@ = @\(E\)@;}. \(T\) is the type of the declared +value, \(I\) is a new identifier used to reference the declared value, and, +optionally, the modeller can functionally define the value using an expression +\(E\). The identifier used in a top-level value definition must be unique. Two +declarations with the same identifier will result in an error during the +flattening process. The main types used in \minizinc\ are Boolean, integer, floating point numbers, sets of integers, and (user-defined) enumerated types. These types can be used @@ -206,16 +207,14 @@ type expression. These expressions constrain a declaration, not just to a certain type, but also to a set of value. This set of values is generally referred to as the \gls{domain} of a \variable{}. In \minizinc\ any expression that has a set type can be used as a type expression. For example, the following -two declarations +two declarations declare two integer \variables{} that can take the values from +three to five and one, three, and five respectively. \begin{mzn} var 3..5: x; var {1,3,5}: y; \end{mzn} -declare two integer \variables{} that can take the values from three to five and -one, three, and five respectively. - If the declaration includes an expression to functionally define the value, then the identifier can be used as a name for this expression. If, however, the type of the declaration is given as a type expression, then this places an implicit @@ -235,7 +234,9 @@ solver to do one of three actions: to find an assignment to the \variables{} that satisfies the constraints, \mzninline{solve satisfy;}, to find an assignment to the \variables{} that satisfies the constraints and minimises the value of a \variable{}, \mzninline{solve minimize x;}, or similarly maximises -the value of a \variable{}, \mzninline{solve maximize x;}. +the value of a \variable{}, \mzninline{solve maximize x;}. If the model does not +contain a goal item, then it then the problem is assumed to be a satisfaction +problem. \jip{TODO:\@ add some information about search in \minizinc{}. It's probably pretty relevant.} @@ -261,7 +262,7 @@ to function calls. A solver can then provide its own implementation for these functions. It is assumed that the implementation of the functions in the \solver{} libraries will ultimately be rewritten into fully relational call. When a relational constraint is directly supported by a solver the function -should be declared within an expression body. Any call to such function is +should be declared within an expression body. Any call to such a function is directly placed in the flattened model. \subsection{MiniZinc Expressions}% @@ -273,10 +274,7 @@ read, but are transformed to fit the structure best suited to the chosen \solver{}. We will now briefly discuss the most important \minizinc\ expressions and the general methods employed when flattening them. A detailed overview of the full syntactic structure of the \minizinc\ expressions in \minizinc\ 2.5.5 -can be found in \cref{sec:mzn-grammar-expressions}. Nethercote et al.\ and -Mariott et al.\ offer a detailed discussion of the expression language of -\minizinc\ and its predecessor \zinc\ respectively -\autocite*{nethercote-2007-minizinc,marriott-2008-zinc}. +can be found in \cref{sec:mzn-grammar-expressions}. \Glspl{global} are the basic building blocks in the \minizinc\ language. These expressions capture common (complex) relations between \variables{}. @@ -340,7 +338,7 @@ expressions. You could, for example, force that the absolute value of \mzninline{a} is bigger than \mzninline{b} using the constraint \begin{mzn} - constraint if b >= 0 then a > b else b < a endif; + constraint if a >= 0 then a > b else b < a endif; \end{mzn} In \minizinc\ the result of a \gls{conditional} expression is, however, not @@ -373,7 +371,7 @@ modellers to provide a custom index set. Like the previous expressions, the selector \mzninline{i} can be both a \parameter{} or a \variable{}. If the expression is a \gls{variable}, then the -expression is flattened as being an \mzninline{element} function. Otherwise, the +expression is flattened to be an \mzninline{element} function. Otherwise, the flattening will replace the \gls{array} access expression by the element referenced by expression. @@ -394,11 +392,11 @@ parts: when the filtering condition succeeds. \end{description} -The following example composes an \gls{array} that contains the doubled even +The following example composes an \gls{array} that contains the tripled even values of an \gls{array} \mzninline{x}. \begin{mzn} - [ xi * 2 | xi in x where x mod 2 == 0] + [ xi * 3 | xi in x where x mod 2 == 0] \end{mzn} The evaluated expression will be added to the new array. This means that the @@ -418,32 +416,32 @@ resulting definition. There are three main purposes for \glspl{let}: \begin{enumerate} \item To name an intermediate expression, so it can be used multiple times or to simplify the expression. For example, the constraint - +% \begin{mzn} - constraint let { var int: tmp = x div 2; } in tmp mod 2 == 0 \/ tmp = 0; + constraint let { var int: tmp = x div 2; } in tmp mod 2 == 0 \/ tmp = 1; \end{mzn} - - constrains that half of \mzninline{x} is even or zero. +% + constrains that half of \mzninline{x} is even or one. \item To introduce a scoped \variable{}. For example, the constraint - +% \begin{mzn} - let {var -2..2: slack;} in x + slack = y; + constraint let {var -2..2: slack;} in x + slack = y; \end{mzn} - +% constrains that \mzninline{x} and \mzninline{y} are at most two apart. \item To constrain the resulting expression. For example, the following function - +% \begin{mzn} function var int: int_times(var int: x, var int: y) = - let { + let { var int: z; constraint pred_int_times(x, y, z); } in z; \end{mzn} - +% returns a new \variable{} \mzninline{z} that is constrained to be the multiplication of \mzninline{x} and \mzninline{y} by the relational multiplication constraint \mzninline{pred_int_times}. @@ -486,14 +484,17 @@ corresponding constraint \mzninline{c(...)} holds. reified variables it can set to \mzninline{true}. \end{example} -We say that the same expression can be used in \emph{root context} as well as in -a \emph{reified context}. In \minizinc{}, almost all expressions can be used in -both contexts. +When an expression occurs in a position where it can be globally enforced, we +say it occurs in \emph{root context}. Contrarily, an expression that occurs in a +\emph{non-root context} will be reified during the flattening process. In +\minizinc{}, almost all expressions can be used in both contexts. \subsection{Handling Undefined Expressions}% \label{subsec:back-mzn-partial} -Some expressions in the \cmls\ do not always have a well-defined result. +Some expressions in the \cmls\ do not always have a well-defined result. Part of +the semantics of a \cmls{} is the choice as to how to treat these partial +functions. \begin{example}\label{ex:back-undef} Consider, for example, the following ``complex constraint'' @@ -512,8 +513,7 @@ Some expressions in the \cmls\ do not always have a well-defined result. the constraint should be trivially true. \end{example} -Part of the semantics of a \cmls{} is the choice as to how to treat these -partial functions. Examples of such expressions in \minizinc\ are: +Other examples of \minizinc{} expressions that result in partial functions are: \begin{itemize} \item Division (or modulus) when the divisor is zero: @@ -522,12 +522,6 @@ partial functions. Examples of such expressions in \minizinc\ are: x div 0 = @??@ \end{mzn} - \item Array access when the index is outside the given index set: - - \begin{mzn} - array1d(1..3, [1,2,3])[0] = @??@ - \end{mzn} - \item Finding the minimum or maximum or an empty set: \begin{mzn} @@ -595,8 +589,7 @@ For example, one might deal with a zero divisor using a disjunction: In this case we expect the undefinedness of the division to be contained within the second part of the disjunction. This corresponds to ``relational'' -semantics. \jip{TODO:\@ This also corresponds to Kleene semantics, maybe I - should use a different example} +semantics. Frisch and Stuckey also show that different \solvers{} often employ different semantics \autocite*{frisch-2009-undefinedness}. It is therefore important that, @@ -642,7 +635,7 @@ targets and their input language. When given a \gls{csp}, one might wonder what the best way is to find a solution to the problem. The simplest solution would be to apply ``brute force'': try -every value in the \gls{domain} all \variables{}. It will not surprise the +every value in the \gls{domain} of all \variables{}. It will not surprise the reader that this is an inefficient approach. Given, for example, the constraint \begin{mzn} @@ -650,22 +643,22 @@ reader that this is an inefficient approach. Given, for example, the constraint \end{mzn} It is clear that when the value \mzninline{a} is known, then the value of -\mzninline{b} can be deduced. \gls{cp} is the idea solving \glspl{csp} by +\mzninline{b} can be deduced. \gls{cp} is the idea of solving \glspl{csp} by performing an intelligent search by inferring which values are still feasible for each \variable{} \autocite{rossi-2006-cp}. To find a solution to a given \gls{csp}, a \gls{cp} \solver{} will perform a -depth first search. At each node, the \solver{} will try and eliminate any +depth first search. At each node, the \solver{} will try to eliminate any impossible value using a process called \gls{propagation}. For each \constraint{} the \solver{} has a chosen algorithm called a \gls{propagator}. Triggered by changes in the \glspl{domain} of its \variables{}, the -\gls{propagator} will analyse and prune the any values that are proven to be +\gls{propagator} will analyse and prune any values that are proven to be inconsistent. -In the best case scenario, \gls{propagation} will eliminate all impossible value -and all \variables{} have been fixed to a single value. In this case we have -arrived at a solution. Often, \gls{propagation} alone will not be enough to find -a solution to the problem. Instead, when no more \glspl{propagator} are +In the best case scenario, \gls{propagation} will eliminate all impossible +values and all \variables{} have been fixed to a single value. In this case we +have arrived at a solution. Often, \gls{propagation} alone will not be enough to +find a solution to the problem. Instead, when no more \glspl{propagator} are triggered (we have reached a \gls{fixpoint}), the \solver{} has to make a search decision. It will fix a \variable{} to a value or add a new \constraint{}. This search decision is an assumption made by the \solver{} in the hope of finding a @@ -673,12 +666,12 @@ solution. If no solution is found using the search decision, then it needs to try making the opposite decision: excluding the chosen value or adding the opposite constraint. -Note that the important difference between values \gls{propagation} and making -search decisions is that value excluded by a \gls{propagator} are guaranteed to -not occur in any solution, but values excluded by a search heuristic are merely -removed locally and might still be part of a solution. A \gls{cp} \solver{} is -only able to prove that the problem is unsatisfiable by exploring the full -search space. +Note that the important difference between values excluded by \gls{propagation} +and making search decisions is that value excluded by a \gls{propagator} are +guaranteed to not occur in any solution, but values excluded by a search +heuristic are merely removed locally and might still be part of a solution. A +\gls{cp} \solver{} is only able to prove that the problem is unsatisfiable by +exploring the full search space. \Gls{propagation} is not only used when starting the search, but also after making each search decision. This means that some \gls{propagation} depends on @@ -718,17 +711,19 @@ constraints otherwise. \begin{mzn} int: n; - array [1..n] of var 1..n: q; + set of int: ROW = 1..n; + set of int: COL = 1..n; + array [ROW] of var COL: q; constraint all_different(q); - constraint all_different([q[i] + i | i in 1..n]); - constraint all_different([q[i] - i | i in 1..n]); + constraint all_different([q[i] + i | i in ROW]); + constraint all_different([q[i] - i | i in ROW]); \end{mzn} - Since we know that there can only be one queen per column, the decision in the - model left to make is, for every queen, where in the column the piece is - placed. The \constraints{} in the model the remaining rules of the problem: no - two queen can be placed in the same row, no two queen can be place in the same + Since we know that there can only be one queen per row, the decision in the + model left to make is, for every queen, where in the row the piece is placed. + The \constraints{} in the model the remaining rules of the problem: no two + queen can be placed in the same row, no two queen can be place in the same upward diagonal, and no two queens can be place in the same downward diagonal. This model can be directly used in most \gls{cp} \solvers{}, since integer \variables{} and an \mzninline{all_different} \gls{propagator} are common. @@ -753,8 +748,8 @@ propagating a constraint and the amount of search that is otherwise required. The golden standard for a \gls{propagator} is to be \gls{domain-con}, meaning that all values left in the \glspl{domain} of its \variables{} there is at least one possible variable assignment that satisfies the constraint. Designing an -algorithm that reaches this level of consistency is, however, an easy task and -might require high complexity. Instead, it can sometimes be better to use a +algorithm that reaches this level of consistency is, however, not an easy task +and might require high complexity. Instead, it can sometimes be better to use a propagator with a lower level of consistency. Although it might not eliminate all possible values of the domain, searching the values that are not eliminated might take less time than achieving \gls{domain-con}. @@ -762,10 +757,11 @@ might take less time than achieving \gls{domain-con}. This is, for example, the case for integer linear constraints: \[ \sum_{i} c_{i} x_{i} = d\] where \(c_{i}\) and \(d\) are integer \parameters{} and \(x_{i}\) are integer \variable{}. For these constraints, no -realistic \gls{domain-con} \gls{propagator} exists. Instead, \solvers{} -generally use a \gls{bounds-con} \gls{propagator}, which guarantee only that the -minimum and maximum values in the \glspl{domain} of the \variables{} are used in -at least one possible assignment that satisfies the constraint. +realistic \gls{domain-con} \gls{propagator} exists because the problem is +\gls{np}-hard \autocite{choi-2006-fin-cons}. Instead, \solvers{} generally use a +\gls{bounds-con} \gls{propagator}, which guarantee only that the minimum and +maximum values in the \glspl{domain} of the \variables{} are used in at least +one possible assignment that satisfies the constraint. Thus far, we have only considered \glspl{csp}. \gls{cp} solving can, however, also be used to solve optimisation problems using a method called \gls{bnb}. The @@ -782,8 +778,8 @@ better solutions than the current incumbent solution. \gls{cp} solvers like Chuffed \autocite{chuffed-2021-chuffed}, Choco \autocite{prudhomme-2016-choco}, \gls{gecode} \autocite{gecode-2021-gecode}, and -OR-Tools \autocite{perron-2021-ortools} have long been one of the leading method -to solve \minizinc\ instances. +OR-Tools \autocite{perron-2021-ortools} have long been one of the leading +methods to solve \minizinc\ instances. \subsection{Mathematical Programming}% \label{subsec:back-mip} @@ -794,14 +790,14 @@ One of the oldest techniques to solve optimisation problems is the use of \gls{lp} \autocite{schrijver-1998-mip}. A linear program describes a problem using a set of linear equations over continuous variables. In general, a linear program can be expressed in the form: - +% \begin{align*} \text{maximise} \hspace{2em} & \sum_{j=1}^{V} c_{j} x_{j} & \\ \text{subject to} \hspace{2em} & l_{i} \leq \sum_{j=0}^{V} a_{ij} x_{j} \leq u_{i} & \forall_{i=1}^{C} \\ & x_{i} \in \mathbb{R} & \forall_{i=1}^{V} \end{align*} - -where \(V\) and \(C\) represent the number of variables and number of +% +\noindent{}where \(V\) and \(C\) represent the number of variables and number of constraints respectively. The vector \(c\) holds the coefficients of the objective function and the matrix \(a\) holds the coefficients for the constraints. The vectors \(l\) and \(u\) respectively contain the lower and @@ -809,10 +805,13 @@ upper bounds of the constraints. Finally, the \variables{} of the linear program held in the \(x\) vector. For problems that are in the form of a linear program, there are proven methods -to find the optimal solution. The most prominent method, the simplex method, can -find the optimal solution of a linear program in polynomial time. +to find the optimal solution. In 1947 Dantzig introduced the simplex method, +that can find the optimal solution of a linear program in worst-case exponential +time. It was questioned whether the same problem could be solved in worst-case +polynomial time, until Khachiyan proved this possible when he introduced the +first of the so-called \emph{interior point} methods. -The same method provides the foundation for a harder problem. In \gls{lp} our +These methods provide the foundation for a harder problem. In \gls{lp} our variables must be continuous. If we require that one or more take a discrete value (\(x_{i} \in \mathbb{N}\)), then the problem suddenly becomes much harder. The problem is referred to as \gls{mip} (or Integer Programming if \textbf{all} @@ -845,15 +844,15 @@ Over the years \gls{lp} and \gls{mip} \solvers{} have developed immensely. often worthwhile to encode problem as a mixed integer program to find a solution. -\glspl{csp} can be often be encoded as mixed integer programs. This does, -however, come with its challenges. Most \constraints{} in a \minizinc\ model are -not linear equations. The translation of a single \constraint{} can introduce -many linear \constraints{} and even new \variables{}. For example, when a -\constraint{} reasons about the value that a variable will take, to encode it we -will need to introduce \glspl{indicator-var}. The \glspl{indicator-var} -\(y_{i}\) for a \variable{} \(x\) take the value 1 if \(x = i\) and 0 otherwise. -\constraints{} reasoning about the value of \(x\) can then be rewritten as -linear \constraints{} using the \variables{} \(y_{i}\). +To solve a \gls{csp}, it can be encoded as a mixed integer program. This +does, however, come with its challenges. Most \constraints{} in a \minizinc\ +model are not linear equations. The translation of a single \constraint{} can +introduce many linear \constraints{} and even new \variables{}. For example, +when a \constraint{} reasons about the value that a variable will take, to +encode it we will need to introduce \glspl{indicator-var}. The +\glspl{indicator-var} \(y_{i}\) for a \variable{} \(x\) take the value 1 if +\(x = i\) and 0 otherwise. \constraints{} reasoning about the value of \(x\) can +then be rewritten as linear \constraints{} using the \variables{} \(y_{i}\). \begin{example} Let us again consider the N-Queens problem from \cref{ex:back-nqueens}. The @@ -878,7 +877,7 @@ linear \constraints{} using the \variables{} \(y_{i}\). The \cref{line:back-mip-channel} is used to connect the \(q\) and \(y\) \variables{} and make sure that their values correspond. \Cref{line:back-mip-row} ensures that only one queen is placed in the same - row. Finally, \cref{line:back-mip-diag1,line:back-mip-diag2} constrain all + column. Finally, \cref{line:back-mip-diag1,line:back-mip-diag2} constrain all diagonals to contain only one queen. \end{example} @@ -887,26 +886,26 @@ linear \constraints{} using the \variables{} \(y_{i}\). \glsreset{sat} \glsreset{maxsat} -\gls{sat} was the first problem to be proven to be \gls{np-comp} +\gls{sat} was the first problem to be proven to be \gls{np}-complete \autocite{cook-1971-sat}. The problem asks if there is an assignment for the variables of a given Boolean formula, such that the formula is satisfied. This problem can be seen as a restriction of the general \gls{csp} where \variables{} can only be of a Boolean type. -There is a field of research dedicated to solving \gls{sat} problems. In this -field a \gls{sat} problem is generally standardised to be in \gls{cnf}. A -\gls{cnf} is formulated in terms of Boolean literals. These are variables \(x\) -or their negations \(\neg x\). These literals are then used in a conjunction of -disjunctive clauses: a Boolean formula in the form -\(\forall_{i \in P} \exists_{b \in C_{i}} b\). To solve the \gls{sat} problem, -the \solver{} has to find an assignment for the \variables{} where at least one -literal is true in every clause. +There is a field of research dedicated to solving \gls{sat} problems +\autocite{biere-2021-sat}. In this field a \gls{sat} problem is generally +standardised to be in \gls{cnf}. A \gls{cnf} is formulated in terms of Boolean +literals. These are variables \(x\) or their negations \(\neg x\). These +literals are then used in a conjunction of disjunctive clauses: a Boolean +formula in the form \(\forall_{i \in P} \exists_{b \in C_{i}} b\). To solve the +\gls{sat} problem, the \solver{} has to find an assignment for the \variables{} +where at least one literal is true in every clause. Even though the problem is proven to be hard to solve, a lot of progress has -been made towards solving even the biggest the most complex \gls{sat} problems -\autocite{biere-2021-sat}. Modern day \gls{sat} solvers, like Kissat -\autocite{biere-2021-kissat} and Clasp \autocite{gebser-2012-clasp}, can solve -instances of the problem with thousands of \variables{} and clauses. +been made towards solving even the biggest the most complex \gls{sat} problems. +Modern day \gls{sat} solvers, like Kissat \autocite{biere-2021-kissat} and Clasp +\autocite{gebser-2012-clasp}, can solve instances of the problem with thousands +of \variables{} and clauses. Many real world problems modelled in \cmls\ directly correspond to \gls{sat}. However, even problems that contain \variables{} with types other than Boolean @@ -932,7 +931,7 @@ efficient way to solve the problem. The encoding of the problem uses a Boolean \variable{} for every position of the chess board. Each \variable{} represents if a queen will be located on this position or not. \Cref{line:back-sat-at-least} forces that a queen is - placed on every column of the chess board. + placed on every row of the chess board. \Cref{line:back-sat-row,line:back-sat-col} ensure that only one queens is place in each row and column respectively. \Cref{line:back-sat-diag1,line:back-sat-diag2} similarly constrain each @@ -1147,8 +1146,8 @@ the solver. Take, for example, the following \gls{opl} search definition: This search strategy will ensure that we first try and find a solution where the \variable{} \mzninline{x} takes a value smaller than \mzninline{y}, if it does -not find a solution, then it will try finding a solution where the oposite is -true. This search specification, like many other imaginable, cannot be enforce +not find a solution, then it will try finding a solution where the opposite is +true. This search specification, like many others imaginable, cannot be enforced using \minizinc\ \gls{search-heuristic} \glspl{annotation}. To support \gls{opl}'s dedicated search language, the language is tightly @@ -1175,7 +1174,7 @@ variable types that are contained in \minizinc{}, \gls{essence} also contains: Since sets, multi-sets, and functions can be defined on any other type, these types can be arbitrary nested and the modeller can define, for example, a \variable{} that is a sets of sets of integers. Partitions can be defined for -finite types. These types in \gls{essence} are restricted to Boolean, +finite types. The base types in \gls{essence} are restricted to Boolean, enumerated types, or a restricted set of integers. \begin{example} @@ -1246,15 +1245,17 @@ the targeted solver. \label{sec:back-term} \glsreset{trs} -At the heart of the flattening process lies a \gls{trs}. A \gls{trs} -\autocite{baader-1998-term-rewriting} describes a computational model the full -process can be described as the application of rules -\(l \rightarrow r_{1}, \ldots r_{n}\), that replace a \gls{term} \(l\) with one -or more \glspl{term} \(r_{1}, \ldots r_{n}\). A \gls{term} is an expression with -nested sub-expressions consisting of \emph{function} and \emph{constant} -symbols. An example of a term is \(F(0 + 1,F(1,0))\), where \(F\) and \(+\) are -function symbols and \(0\) and \(1\) are constant symbols. In a term rewriting -rule, a term can also contain a \emph{term variable} which captures a term +At the heart of the flattening process, the process as described in +\cref{sec:back-minizinc} that translates a \minizinc{} instance into solver +level \flatzinc{}, lies a \gls{trs}. A \gls{trs} describes a computational model +the full process can be described as the application of rules +\(l \rightarrow r_{1}, \ldots, r_{n}\), that replace a \gls{term} \(l\) with one +or more \glspl{term} \(r_{1}, \ldots, r_{n}\) +\autocite{baader-1998-term-rewriting}. A \gls{term} is an expression with nested +sub-expressions consisting of \emph{function} and \emph{constant} symbols. An +example of a term is \(F(0 + 1,F(1,0))\), where \(F\) and \(+\) are function +symbols and \(0\) and \(1\) are constant symbols. In a term rewriting rule, a +term can also contain a \emph{term variable} which captures a term sub-expression. \begin{example} @@ -1323,9 +1324,10 @@ symbol might be replaced or equated with a constant symbol, but, different from \cmls{}, this is not a requirement. A variable can remain a name in the solution of a constraint logic program. This means that the solution of a constraint logic program can be a relationship between different variables. In cases where -an instantiated solution is required, a special \mzninline{labeling} constraint -can be used to force a variable to take a constant value. Similarly, there is a -\mzninline{minimize} that can be used to find the optimal value for a variable. +an instantiated solution is required, a special \mzninline{labeling} +\constraint{} can be used to force a variable to take a constant value. +Similarly, there is a \mzninline{minimize} \constraint{} that can be used to +find the optimal value for a variable. The evaluation of a constraint logic program rewrites the list of constraints, called the goal, in the order given by the programmer. The rewriting of the @@ -1534,17 +1536,17 @@ happens in one of two ways: \begin{itemize} - \item For Boolean expressions in a reified context, the new \variable{} is + \item For Boolean expressions in a non-root context, the new \variable{} is inserted by the flattening process itself. To constrain this - \variable{}, the flattener will then add a new reified constraint. This - constraint contains a call a variation of the call that would have been - generated for the expression in root context. The name of the function - is appended with \mzninline{_reif} and an extra Boolean \variable{} - argument is added to the call. The definition of this constraint should - implement the reification of the original expression: setting the - additional argument to \mzninline{true} if the constraint is satisfied, - and \mzninline{false} otherwise. For example, the constraint in - \minizinc{} + \variable{}, the flattener will then add the \gls{reification} of the + constraint. This constraint contains a call a variation of the call that + would have been generated for the expression in root context. The name + of the function is appended with \mzninline{_reif} and an extra Boolean + \variable{} argument is added to the call. The definition of this + constraint should implement the reification of the original expression: + setting the additional argument to \mzninline{true} if the constraint is + satisfied, and \mzninline{false} otherwise. For example, the constraint + in \minizinc{} \begin{mzn} constraint b \/ this_call(x, y); @@ -1763,9 +1765,8 @@ they directly received the equivalent linear \constraint{}: constraint int_lin_le([1,2,-1], [x,y,z], 0) \end{mzn} -Since many solvers support linear constraints, it is often an -additional burden to have intermediate values that have to be given a value in -the solution. +Since many solvers support linear constraints, it is often an additional burden +to have intermediate values that have to be given a value in the solution. This can be resolved using the \gls{aggregation} of constraints. When we aggregate constraints we collect multiple \minizinc\ expressions, that would @@ -1840,22 +1841,24 @@ the \glspl{domain} of \variables{} used by other delayed \constraints{}. \label{subsec:back-fzn-optimisation} After the compiler is done flattening the \minizinc\ instance, it enters the -optimisation phase. This phase occurs at the same stage as the solver input -language. Depending on the targeted \solver{}, the \minizinc\ flattener might -still understand the meaning of certain constraints. In these cases, -\gls{propagation} methods (as discussed in \cref{subsec:back-cp}) can be used to +optimisation phase. This phase occurs at the level at which the targeted +\solver{} operates. Depending on this \solver{}, the \minizinc\ flattener might +still understand the meaning of certain \constraints{}. In these cases, +\gls{propagation} methods, as discussed in \cref{subsec:back-cp}, can be used to eliminate values from variable \glspl{domain} and simplify \constraints{}. In the current implementation the main focus of the flattener is to propagate -Boolean constraint. The flattener try and reduce the number of Boolean variables -and try and reduce the number of literals in clauses or logical and constraints. -The additional propagation might fix the reification of a constraint. If this -constraint is not yet rewritten, then the \solver{} will know to use a direct -constraint instead of a reified version. +Boolean \constraints{}. The flattener tries to reduce the number of Boolean +\variables{} and tries to reduce the number of literals in clauses and +conjunctions. The additional propagation might fix the result of the +\gls{reification} of a constraint. If this constraint is not yet rewritten, then +the \solver{} will know to use a direct constraint instead of a reified version. -Even more important than the Boolean constraints, are equality \constraints{}. -The flattening is in the unique position to \gls{unify} \variables{} when they -are found to be equal. Since they both have to take the same value, only a -single \variable{} is required in the \flatzinc\ model to represent them both. -Whenever any (recognisable) equality constraint is found during the optimisation -phase, it is removed and the two \variables{} are unified. +Even more important than the Boolean \constraints{}, are equality +\constraints{}. The flattening is in the unique position to \gls{unify} +\variables{} when they are found to be equal. Since they both have to take the +same value, only a single \variable{} is required in the \flatzinc\ model to +represent them both. Whenever any (recognisable) equality constraint is found +during the optimisation phase, it is removed and the two \variables{} are +unified. Once initialised, it is not always possible for \solvers{} to +\gls{unify} \variables{} internally.