gecoder-with-gecode 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +6 -0
- data/README +1 -1
- data/THANKS +18 -0
- data/example/equation_system.rb +3 -1
- data/example/magic_sequence.rb +3 -1
- data/example/queens.rb +3 -1
- data/example/send_more_money.rb +24 -30
- data/example/send_most_money.rb +15 -26
- data/example/square_tiling.rb +3 -1
- data/example/sudoku-set.rb +3 -1
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/LICENSE +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/Makefile.contribs +0 -0
- data/ext/gecode-2.2.0/Makefile.dep +8056 -0
- data/ext/gecode-2.2.0/Makefile.in +1590 -0
- data/ext/gecode-2.2.0/changelog.in +2698 -0
- data/ext/gecode-2.2.0/configure +13112 -0
- data/ext/gecode-2.2.0/configure.ac +273 -0
- data/ext/gecode-2.2.0/configure.ac.in +269 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/README +0 -0
- data/ext/gecode-2.2.0/contribs/qecode/Doxyfile +263 -0
- data/ext/gecode-2.2.0/contribs/qecode/Implicative.cc +267 -0
- data/ext/gecode-2.2.0/contribs/qecode/Implicative.hh +164 -0
- data/ext/gecode-2.2.0/contribs/qecode/Makefile.in.in +163 -0
- data/ext/gecode-2.2.0/contribs/qecode/OptVar.cc +82 -0
- data/ext/gecode-2.2.0/contribs/qecode/OptVar.hh +123 -0
- data/ext/gecode-2.2.0/contribs/qecode/Strategy.cc +131 -0
- data/ext/gecode-2.2.0/contribs/qecode/Strategy.hh +91 -0
- data/ext/gecode-2.2.0/contribs/qecode/StrategyNode.cc +62 -0
- data/ext/gecode-2.2.0/contribs/qecode/StrategyNode.hh +47 -0
- data/ext/gecode-2.2.0/contribs/qecode/autom4te.cache/output.0 +2264 -0
- data/ext/gecode-2.2.0/contribs/qecode/autom4te.cache/requests +115 -0
- data/ext/gecode-2.2.0/contribs/qecode/autom4te.cache/traces.0 +57 -0
- data/ext/gecode-2.2.0/contribs/qecode/config.log +147 -0
- data/ext/gecode-2.2.0/contribs/qecode/config.status +817 -0
- data/ext/gecode-2.2.0/contribs/qecode/configure +2264 -0
- data/ext/gecode-2.2.0/contribs/qecode/configure.ac +23 -0
- data/ext/gecode-2.2.0/contribs/qecode/examples/COMPILING +13 -0
- data/ext/gecode-2.2.0/contribs/qecode/examples/MatrixGame.cpp +140 -0
- data/ext/gecode-2.2.0/contribs/qecode/examples/NimFibo.cpp +73 -0
- data/ext/gecode-2.2.0/contribs/qecode/examples/connect-5-3-3-3.cpp +842 -0
- data/ext/gecode-2.2.0/contribs/qecode/examples/network-pricing.cc +146 -0
- data/ext/gecode-2.2.0/contribs/qecode/examples/optim2.cc +149 -0
- data/ext/gecode-2.2.0/contribs/qecode/examples/stress_test.cpp +240 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/heap.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/myDom.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/myspace.cc +0 -0
- data/ext/gecode-2.2.0/contribs/qecode/myspace.hh +68 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/qecode.hh +0 -0
- data/ext/gecode-2.2.0/contribs/qecode/qsolver.cc +268 -0
- data/ext/gecode-2.2.0/contribs/qecode/qsolver.hh +46 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/shortdesc.ac +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/vartype.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/doxygen/doxygen.conf.in +0 -0
- data/ext/gecode-2.2.0/doxygen/doxygen.hh.in +1112 -0
- data/ext/gecode-2.2.0/doxygen/reflection.hh +417 -0
- data/ext/gecode-2.2.0/examples/all-interval.cc +133 -0
- data/ext/gecode-2.2.0/examples/alpha.cc +137 -0
- data/ext/gecode-2.2.0/examples/bacp.cc +521 -0
- data/ext/gecode-2.2.0/examples/baseline.cc +87 -0
- data/ext/gecode-2.2.0/examples/bibd.cc +203 -0
- data/ext/gecode-2.2.0/examples/black-hole.cc +389 -0
- data/ext/gecode-2.2.0/examples/crew.cc +286 -0
- data/ext/gecode-2.2.0/examples/crowded-chess.cc +424 -0
- data/ext/gecode-2.2.0/examples/domino.cc +297 -0
- data/ext/gecode-2.2.0/examples/donald.cc +107 -0
- data/ext/gecode-2.2.0/examples/eq20.cc +125 -0
- data/ext/gecode-2.2.0/examples/golf.cc +297 -0
- data/ext/gecode-2.2.0/examples/golomb-ruler.cc +199 -0
- data/ext/gecode-2.2.0/examples/graph-color.cc +407 -0
- data/ext/gecode-2.2.0/examples/grocery.cc +113 -0
- data/ext/gecode-2.2.0/examples/hamming.cc +129 -0
- data/ext/gecode-2.2.0/examples/ind-set.cc +143 -0
- data/ext/gecode-2.2.0/examples/javascript.cc +163 -0
- data/ext/gecode-2.2.0/examples/kakuro.cc +686 -0
- data/ext/gecode-2.2.0/examples/knights.cc +220 -0
- data/ext/gecode-2.2.0/examples/langford-number.cc +225 -0
- data/ext/gecode-2.2.0/examples/magic-sequence.cc +146 -0
- data/ext/gecode-2.2.0/examples/magic-square.cc +138 -0
- data/ext/gecode-2.2.0/examples/minesweeper.cc +304 -0
- data/ext/gecode-2.2.0/examples/money.cc +105 -0
- data/ext/gecode-2.2.0/examples/nonogram.cc +492 -0
- data/ext/gecode-2.2.0/examples/ortho-latin.cc +172 -0
- data/ext/gecode-2.2.0/examples/partition.cc +141 -0
- data/ext/gecode-2.2.0/examples/pentominoes.cc +949 -0
- data/ext/gecode-2.2.0/examples/perfect-square.cc +311 -0
- data/ext/gecode-2.2.0/examples/photo.cc +170 -0
- data/ext/gecode-2.2.0/examples/queen-armies.cc +284 -0
- data/ext/gecode-2.2.0/examples/queens.cc +147 -0
- data/ext/gecode-2.2.0/examples/queens.js +57 -0
- data/ext/gecode-2.2.0/examples/sports-league.cc +342 -0
- data/ext/gecode-2.2.0/examples/steiner.cc +192 -0
- data/ext/gecode-2.2.0/examples/stress-distinct.cc +90 -0
- data/ext/gecode-2.2.0/examples/stress-domain.cc +99 -0
- data/ext/gecode-2.2.0/examples/stress-element.cc +112 -0
- data/ext/gecode-2.2.0/examples/stress-exec.cc +97 -0
- data/ext/gecode-2.2.0/examples/stress-extensional.cc +134 -0
- data/ext/gecode-2.2.0/examples/stress-linear-bool.cc +97 -0
- data/ext/gecode-2.2.0/examples/stress-min.cc +98 -0
- data/ext/gecode-2.2.0/examples/stress-search.cc +88 -0
- data/ext/gecode-2.2.0/examples/sudoku.cc +2341 -0
- data/ext/gecode-2.2.0/examples/support.hh +338 -0
- data/ext/gecode-2.2.0/examples/support/example.cc +64 -0
- data/ext/gecode-2.2.0/examples/support/example.icc +321 -0
- data/ext/gecode-2.2.0/examples/support/options.cc +226 -0
- data/ext/gecode-2.2.0/examples/support/options.icc +276 -0
- data/ext/gecode-2.2.0/examples/tsp.cc +317 -0
- data/ext/gecode-2.2.0/examples/warehouses.cc +191 -0
- data/ext/gecode-2.2.0/gecode.m4 +1046 -0
- data/ext/gecode-2.2.0/gecode/cpltset.hh +797 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/array.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/array.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/bddmanager.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/bddmanager.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch/select-val.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch/select-view.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/atmost.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/cardinality.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/distinct.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/dom.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/partition.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/rangeroots.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/rel.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/select.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/singleton.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/exception.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/binary.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/nary.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/naryone.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/narytwo.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/singleton.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/unary.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/support.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/support.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp/cpltset.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp/cpltset.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp/cpltset.vis +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var/cpltset.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var/cpltset.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/view.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/view/cpltset.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/view/print.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addchild.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addchild.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addvisualisationdialog.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addvisualisationdialog.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/better.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/config.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/config.hh +0 -0
- data/ext/gecode-2.2.0/gecode/gist/drawingcursor.cc +281 -0
- data/ext/gecode-2.2.0/gecode/gist/drawingcursor.hh +103 -0
- data/ext/gecode-2.2.0/gecode/gist/drawingcursor.icc +70 -0
- data/ext/gecode-2.2.0/gecode/gist/gecodelogo.cc +672 -0
- data/ext/gecode-2.2.0/gecode/gist/gecodelogo.hh +64 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/gist.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/gist.icc +0 -0
- data/ext/gecode-2.2.0/gecode/gist/layoutcursor.cc +115 -0
- data/ext/gecode-2.2.0/gecode/gist/layoutcursor.hh +75 -0
- data/ext/gecode-2.2.0/gecode/gist/layoutcursor.icc +48 -0
- data/ext/gecode-2.2.0/gecode/gist/mainwindow.cc +274 -0
- data/ext/gecode-2.2.0/gecode/gist/mainwindow.hh +86 -0
- data/ext/gecode-2.2.0/gecode/gist/node.cc +148 -0
- data/ext/gecode-2.2.0/gecode/gist/node.hh +117 -0
- data/ext/gecode-2.2.0/gecode/gist/node.icc +99 -0
- data/ext/gecode-2.2.0/gecode/gist/nodecursor.cc +123 -0
- data/ext/gecode-2.2.0/gecode/gist/nodecursor.hh +147 -0
- data/ext/gecode-2.2.0/gecode/gist/nodecursor.icc +122 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/nodevisitor.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/nodevisitor.icc +0 -0
- data/ext/gecode-2.2.0/gecode/gist/preferences.cc +120 -0
- data/ext/gecode-2.2.0/gecode/gist/preferences.hh +79 -0
- data/ext/gecode-2.2.0/gecode/gist/spacenode.cc +468 -0
- data/ext/gecode-2.2.0/gecode/gist/spacenode.hh +227 -0
- data/ext/gecode-2.2.0/gecode/gist/spacenode.icc +170 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/test.cc +0 -0
- data/ext/gecode-2.2.0/gecode/gist/textoutput.cc +134 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/textoutput.hh +0 -0
- data/ext/gecode-2.2.0/gecode/gist/treecanvas.cc +1343 -0
- data/ext/gecode-2.2.0/gecode/gist/treecanvas.hh +361 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/ui_addchild.hh +0 -0
- data/ext/gecode-2.2.0/gecode/gist/ui_addvisualisationdialog.hh +165 -0
- data/ext/gecode-2.2.0/gecode/gist/visualisation/intvaritem.cc +192 -0
- data/ext/gecode-2.2.0/gecode/gist/visualisation/intvaritem.hh +75 -0
- data/ext/gecode-2.2.0/gecode/gist/visualisation/setvaritem.cc +235 -0
- data/ext/gecode-2.2.0/gecode/gist/visualisation/setvaritem.hh +77 -0
- data/ext/gecode-2.2.0/gecode/gist/visualisation/vararrayitem.hh +125 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/vararrayview.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/vararrayview.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/vararrayviewt.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/varitem.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/varitem.hh +0 -0
- data/ext/gecode-2.2.0/gecode/gist/visualnode.cc +474 -0
- data/ext/gecode-2.2.0/gecode/gist/visualnode.hh +226 -0
- data/ext/gecode-2.2.0/gecode/gist/visualnode.icc +198 -0
- data/ext/gecode-2.2.0/gecode/gist/zoomToFitIcon.icc +113 -0
- data/ext/gecode-2.2.0/gecode/int.hh +2116 -0
- data/ext/gecode-2.2.0/gecode/int/arithmetic.cc +237 -0
- data/ext/gecode-2.2.0/gecode/int/arithmetic.hh +827 -0
- data/ext/gecode-2.2.0/gecode/int/arithmetic/abs.icc +278 -0
- data/ext/gecode-2.2.0/gecode/int/arithmetic/divmod.icc +496 -0
- data/ext/gecode-2.2.0/gecode/int/arithmetic/max.icc +474 -0
- data/ext/gecode-2.2.0/gecode/int/arithmetic/mult.icc +858 -0
- data/ext/gecode-2.2.0/gecode/int/arithmetic/sqr.icc +464 -0
- data/ext/gecode-2.2.0/gecode/int/arithmetic/sqrt.icc +260 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/array.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/array.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/bool.cc +734 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/base.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/eq.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/eqv.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/lq.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/bool/or.icc +1000 -0
- data/ext/gecode-2.2.0/gecode/int/branch.cc +167 -0
- data/ext/gecode-2.2.0/gecode/int/branch.hh +587 -0
- data/ext/gecode-2.2.0/gecode/int/branch/create-branch.icc +190 -0
- data/ext/gecode-2.2.0/gecode/int/branch/select-val.icc +340 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/branch/select-view.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/channel.cc +165 -0
- data/ext/gecode-2.2.0/gecode/int/channel.hh +259 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/base.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/channel/dom.icc +348 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-multi.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-multi.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-single.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-single.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/channel/val.icc +278 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/circuit.cc +0 -0
- data/ext/gecode-2.2.0/gecode/int/circuit.hh +175 -0
- data/ext/gecode-2.2.0/gecode/int/circuit/base.icc +266 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/circuit/dom.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/circuit/val.icc +126 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/count.cc +0 -0
- data/ext/gecode-2.2.0/gecode/int/count.hh +487 -0
- data/ext/gecode-2.2.0/gecode/int/count/int.icc +620 -0
- data/ext/gecode-2.2.0/gecode/int/count/rel.icc +144 -0
- data/ext/gecode-2.2.0/gecode/int/count/view.icc +449 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/cumulatives.cc +0 -0
- data/ext/gecode-2.2.0/gecode/int/cumulatives.hh +138 -0
- data/ext/gecode-2.2.0/gecode/int/cumulatives/val.icc +455 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct.cc +0 -0
- data/ext/gecode-2.2.0/gecode/int/distinct.hh +341 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/bilink.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/bnd.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/combptr.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/distinct/dom.icc +752 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/edge.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/node.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/distinct/ter-dom.icc +136 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/val.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom/range.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom/spec.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/element.cc +0 -0
- data/ext/gecode-2.2.0/gecode/int/element.hh +239 -0
- data/ext/gecode-2.2.0/gecode/int/element/int.icc +444 -0
- data/ext/gecode-2.2.0/gecode/int/element/view.icc +584 -0
- data/ext/gecode-2.2.0/gecode/int/exception.icc +174 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional.cc +0 -0
- data/ext/gecode-2.2.0/gecode/int/extensional.hh +415 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/base.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/basic.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/bitset.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/extensional/dfa.cc +565 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/dfa.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/incremental.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/layered-graph.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/extensional/tuple-set.cc +285 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/tuple-set.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc.cc +0 -0
- data/ext/gecode-2.2.0/gecode/int/gcc.hh +329 -0
- data/ext/gecode-2.2.0/gecode/int/gcc/bnd.icc +660 -0
- data/ext/gecode-2.2.0/gecode/int/gcc/dom.icc +531 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/gccbndsup.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/graphsup.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/lbc.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/occur.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/ubc.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/gcc/val.icc +400 -0
- data/ext/gecode-2.2.0/gecode/int/int-set.cc +157 -0
- data/ext/gecode-2.2.0/gecode/int/int-set.icc +195 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/limits.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/linear-bool.cc +235 -0
- data/ext/gecode-2.2.0/gecode/int/linear-int.cc +272 -0
- data/ext/gecode-2.2.0/gecode/int/linear.hh +1849 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/bool-int.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/linear/bool-post.cc +433 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/bool-scale.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/bool-view.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/linear/int-bin.icc +605 -0
- data/ext/gecode-2.2.0/gecode/int/linear/int-dom.icc +539 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/int-nary.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/int-noview.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/linear/int-post.cc +493 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/int-ter.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/post.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/propagator.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/rel.cc +420 -0
- data/ext/gecode-2.2.0/gecode/int/rel.hh +627 -0
- data/ext/gecode-2.2.0/gecode/int/rel/eq.icc +885 -0
- data/ext/gecode-2.2.0/gecode/int/rel/lex.icc +275 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/rel/lq-le.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/rel/nq.icc +118 -0
- data/ext/gecode-2.2.0/gecode/int/sorted.cc +81 -0
- data/ext/gecode-2.2.0/gecode/int/sorted.hh +118 -0
- data/ext/gecode-2.2.0/gecode/int/sorted/matching.icc +173 -0
- data/ext/gecode-2.2.0/gecode/int/sorted/narrowing.icc +249 -0
- data/ext/gecode-2.2.0/gecode/int/sorted/order.icc +212 -0
- data/ext/gecode-2.2.0/gecode/int/sorted/propagate.icc +702 -0
- data/ext/gecode-2.2.0/gecode/int/sorted/sortsup.icc +563 -0
- data/ext/gecode-2.2.0/gecode/int/support-values.hh +158 -0
- data/ext/gecode-2.2.0/gecode/int/support-values.icc +203 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/unshare.cc +0 -0
- data/ext/gecode-2.2.0/gecode/int/var-imp.icc +745 -0
- data/ext/gecode-2.2.0/gecode/int/var-imp/bool.cc +105 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/bool.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/bool.vis +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/delta.icc +0 -0
- data/ext/gecode-2.2.0/gecode/int/var-imp/int.cc +408 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/int.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/int.vis +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var/bool.cc +0 -0
- data/ext/gecode-2.2.0/gecode/int/var/bool.icc +128 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var/int.cc +0 -0
- data/ext/gecode-2.2.0/gecode/int/var/int.icc +153 -0
- data/ext/gecode-2.2.0/gecode/int/view.icc +1918 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/bool.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/constint.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/int.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/iter.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/minus.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/offset.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/print.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/rtest.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/scale.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/zero.icc +0 -0
- data/ext/gecode-2.2.0/gecode/iter.hh +98 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-add.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-append.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-array.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-cache.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-compl.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-diff.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-empty.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-inter.icc +0 -0
- data/ext/gecode-2.2.0/gecode/iter/ranges-map.icc +260 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-minmax.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-minus.icc +0 -0
- data/ext/gecode-2.2.0/gecode/iter/ranges-negative.icc +137 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-offset.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-operations.icc +0 -0
- data/ext/gecode-2.2.0/gecode/iter/ranges-positive.icc +139 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-scale.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-singleton-append.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-singleton.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-size.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-union.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-values.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-array.icc +0 -0
- data/ext/gecode-2.2.0/gecode/iter/values-inter.icc +130 -0
- data/ext/gecode-2.2.0/gecode/iter/values-map.icc +136 -0
- data/ext/gecode-2.2.0/gecode/iter/values-minus.icc +130 -0
- data/ext/gecode-2.2.0/gecode/iter/values-negative.icc +116 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-offset.icc +0 -0
- data/ext/gecode-2.2.0/gecode/iter/values-positive.icc +123 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-ranges.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-singleton.icc +0 -0
- data/ext/gecode-2.2.0/gecode/iter/values-union.icc +137 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-unique.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges-compl.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges-inter.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges-union.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges.icc +0 -0
- data/ext/gecode-2.2.0/gecode/kernel.hh +188 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/advisor.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/array.icc +0 -0
- data/ext/gecode-2.2.0/gecode/kernel/branching.icc +433 -0
- data/ext/gecode-2.2.0/gecode/kernel/core.cc +474 -0
- data/ext/gecode-2.2.0/gecode/kernel/core.icc +2311 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/exception.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/macros.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/memory-manager.cc +0 -0
- data/ext/gecode-2.2.0/gecode/kernel/memory-manager.icc +454 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/modevent.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/propagator.icc +0 -0
- data/ext/gecode-2.2.0/gecode/kernel/reflection.cc +951 -0
- data/ext/gecode-2.2.0/gecode/kernel/reflection.icc +1213 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/shared-array.icc +0 -0
- data/ext/gecode-2.2.0/gecode/kernel/var-imp.icc +433 -0
- data/ext/gecode-2.2.0/gecode/kernel/var-map.cc +269 -0
- data/ext/gecode-2.2.0/gecode/kernel/var-map.icc +230 -0
- data/ext/gecode-2.2.0/gecode/kernel/var-traits.icc +79 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/var-type.cc +0 -0
- data/ext/gecode-2.2.0/gecode/kernel/var-type.icc +915 -0
- data/ext/gecode-2.2.0/gecode/kernel/var.icc +114 -0
- data/ext/gecode-2.2.0/gecode/kernel/view.icc +413 -0
- data/ext/gecode-2.2.0/gecode/minimodel.hh +1206 -0
- data/ext/gecode-2.2.0/gecode/minimodel/arithmetic.icc +118 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/bool-expr.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/bool-expr.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/bool-rel.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/exception.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/lin-expr.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/lin-rel.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/matrix.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/reg.cc +0 -0
- data/ext/gecode-2.2.0/gecode/search.hh +759 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/bab.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/bab.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/dfs.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/dfs.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/engine-ctrl.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/lds.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/lds.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/options.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/options.icc +0 -0
- data/ext/gecode-2.2.0/gecode/search/reco-stack.icc +277 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/restart.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/statistics.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/stop.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/stop.icc +0 -0
- data/ext/gecode-2.2.0/gecode/serialization.hh +149 -0
- data/ext/gecode-2.2.0/gecode/serialization/boost.cc +78 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/serialization/boost.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/serialization/flatzinc.cc +0 -0
- data/ext/gecode-2.2.0/gecode/serialization/javascript.cc +343 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/serialization/javascript.hh +0 -0
- data/ext/gecode-2.2.0/gecode/serialization/register.cc +8498 -0
- data/ext/gecode-2.2.0/gecode/set.hh +970 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/array.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/array.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch/select-val.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch/select-view.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/cardinality.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/conv.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/conv.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/hull.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/hull.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct/atmostOne.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct/atmostOne.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/dom.cc +0 -0
- data/ext/gecode-2.2.0/gecode/set/element.cc +135 -0
- data/ext/gecode-2.2.0/gecode/set/element.hh +233 -0
- data/ext/gecode-2.2.0/gecode/set/element/disjoint.cc +308 -0
- data/ext/gecode-2.2.0/gecode/set/element/disjoint.icc +75 -0
- data/ext/gecode-2.2.0/gecode/set/element/idxarray.hh +113 -0
- data/ext/gecode-2.2.0/gecode/set/element/idxarray.icc +155 -0
- data/ext/gecode-2.2.0/gecode/set/element/inter.icc +348 -0
- data/ext/gecode-2.2.0/gecode/set/element/union.icc +371 -0
- data/ext/gecode-2.2.0/gecode/set/element/unionConst.icc +334 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/exception.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/card.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/channel-bool.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/channel-int.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/match.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/minmax.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/weights.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/limits.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors-compiler.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors.cc +0 -0
- data/ext/gecode-2.2.0/gecode/set/projectors.hh +438 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/compiler.cc +0 -0
- data/ext/gecode-2.2.0/gecode/set/projectors/formula.cc +312 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/formula.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector-set.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector-set.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/card.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/nary.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/re-nary.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/re-nary.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/set-expr.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/set-expr.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/propagator.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op-const.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op.hh +0 -0
- data/ext/gecode-2.2.0/gecode/set/rel-op/common.icc +613 -0
- data/ext/gecode-2.2.0/gecode/set/rel-op/inter.icc +452 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/partition.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/post.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/subofunion.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/superofinter.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/union.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/common.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/eq.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/nosubset.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/nq.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/re-eq.icc +0 -0
- data/ext/gecode-2.2.0/gecode/set/rel/re-subset.icc +174 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/subset.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence.hh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/common.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq-u.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq-u.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/delta.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/integerset.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/integerset.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/iter.icc +0 -0
- data/ext/gecode-2.2.0/gecode/set/var-imp/set.cc +215 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/set.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/set.vis +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var/set.cc +0 -0
- data/ext/gecode-2.2.0/gecode/set/var/set.icc +303 -0
- data/ext/gecode-2.2.0/gecode/set/view.icc +1451 -0
- data/ext/gecode-2.2.0/gecode/set/view/complement.icc +614 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/const.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/offset.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/print.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/set.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/singleton.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support.hh +0 -0
- data/ext/gecode-2.2.0/gecode/support/block-allocator.icc +159 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/AUTHORS +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/ChangeLog +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/NEWS +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/README +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bdd.h +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bddio.c +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bddop.c +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bddtree.h +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bvec.c +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bvec.h +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/cache.c +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/cache.h +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/config.h +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/cppext.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/fdd.c +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/fdd.h +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/imatrix.c +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/imatrix.h +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/kernel.c +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/kernel.h +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/pairs.c +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/prime.c +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/prime.h +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/reorder.c +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/tree.c +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/cast.icc +0 -0
- data/ext/gecode-2.2.0/gecode/support/config.icc.in +83 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/dynamic-array.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/dynamic-stack.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/exception.cc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/exception.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/macros.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/map.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/marked-pointer.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/memory.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/random.icc +0 -0
- data/ext/gecode-2.2.0/gecode/support/sentinel-stack.icc +138 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/sort.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/static-pqueue.icc +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/static-stack.icc +0 -0
- data/ext/gecode-2.2.0/gecode/support/symbol.cc +241 -0
- data/ext/gecode-2.2.0/gecode/support/symbol.icc +134 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/install-sh +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/AppleHelpbookInfo.plist +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/allexamples.perl +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/Makefile.am +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/changelog +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/control +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/copyright +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/gecode.info +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/gecode.install +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/gecode.spec +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/rules +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/back.png +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/footer.html +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/gecode-logo-100.png +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/header.html +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/stylesheet.css +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/fixproperties.sh +0 -0
- data/ext/gecode-2.2.0/misc/gecode-gist.pc.in +45 -0
- data/ext/gecode-2.2.0/misc/gecode-minimodel.pc.in +45 -0
- data/ext/gecode-2.2.0/misc/gecode-search.pc.in +45 -0
- data/ext/gecode-2.2.0/misc/gecode-serialization.pc.in +45 -0
- data/ext/gecode-2.2.0/misc/gecode.pc.in +45 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genchangelog.perl +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genlcovmakefile.perl +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genlicense.perl +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genregistry.perl +0 -0
- data/ext/gecode-2.2.0/misc/genstatistics.perl +179 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/gentxtchangelog.perl +0 -0
- data/ext/gecode-2.2.0/misc/genvariables.perl +905 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/getrevision.perl +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/makedepend.perl +0 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/svn-ignore.txt +0 -0
- data/ext/gecode-2.2.0/test/assign.cc +181 -0
- data/ext/gecode-2.2.0/test/assign.hh +93 -0
- data/ext/gecode-2.2.0/test/assign/bool.cc +61 -0
- data/ext/gecode-2.2.0/test/assign/int.cc +70 -0
- data/ext/gecode-2.2.0/test/branch.cc +563 -0
- data/ext/gecode-2.2.0/test/branch.hh +144 -0
- data/ext/gecode-2.2.0/test/branch/bool.cc +61 -0
- data/ext/gecode-2.2.0/test/branch/cpltset.cc +71 -0
- data/ext/gecode-2.2.0/test/branch/int.cc +70 -0
- data/ext/gecode-2.2.0/test/branch/set.cc +74 -0
- data/ext/gecode-2.2.0/test/cpltset.cc +568 -0
- data/ext/gecode-2.2.0/test/cpltset.hh +125 -0
- data/ext/gecode-2.2.0/test/cpltset/atmost.cc +155 -0
- data/ext/gecode-2.2.0/test/cpltset/cardinality.cc +138 -0
- data/ext/gecode-2.2.0/test/cpltset/dom.cc +137 -0
- data/ext/gecode-2.2.0/test/cpltset/partition.cc +210 -0
- data/ext/gecode-2.2.0/test/cpltset/rel.cc +158 -0
- data/ext/gecode-2.2.0/test/cpltset/select.cc +216 -0
- data/ext/gecode-2.2.0/test/int.cc +688 -0
- data/ext/gecode-2.2.0/test/int.hh +267 -0
- data/ext/gecode-2.2.0/test/int.icc +266 -0
- data/ext/gecode-2.2.0/test/int/arithmetic.cc +766 -0
- data/ext/gecode-2.2.0/test/int/basic.cc +77 -0
- data/ext/gecode-2.2.0/test/int/bool.cc +340 -0
- data/ext/gecode-2.2.0/test/int/channel.cc +238 -0
- data/ext/gecode-2.2.0/test/int/circuit.cc +100 -0
- data/ext/gecode-2.2.0/test/int/count.cc +357 -0
- data/ext/gecode-2.2.0/test/int/distinct.cc +248 -0
- data/ext/gecode-2.2.0/test/int/dom.cc +123 -0
- data/ext/gecode-2.2.0/test/int/element.cc +333 -0
- data/ext/gecode-2.2.0/test/int/extensional.cc +475 -0
- data/ext/gecode-2.2.0/test/int/gcc.cc +293 -0
- data/ext/gecode-2.2.0/test/int/linear.cc +383 -0
- data/ext/gecode-2.2.0/test/int/mm-arithmetic.cc +302 -0
- data/ext/gecode-2.2.0/test/int/mm-bool.cc +4342 -0
- data/ext/gecode-2.2.0/test/int/mm-count.cc +295 -0
- data/ext/gecode-2.2.0/test/int/mm-lin.cc +2035 -0
- data/ext/gecode-2.2.0/test/int/mm-rel.cc +136 -0
- data/ext/gecode-2.2.0/test/int/rel.cc +416 -0
- data/ext/gecode-2.2.0/test/int/scheduling.cc +276 -0
- data/ext/gecode-2.2.0/test/int/sorted.cc +165 -0
- data/ext/gecode-2.2.0/test/int/unshare.cc +109 -0
- data/ext/gecode-2.2.0/test/search.cc +618 -0
- data/ext/gecode-2.2.0/test/set.cc +753 -0
- data/ext/gecode-2.2.0/test/set.hh +286 -0
- data/ext/gecode-2.2.0/test/set.icc +108 -0
- data/ext/gecode-2.2.0/test/set/convex.cc +139 -0
- data/ext/gecode-2.2.0/test/set/distinct.cc +116 -0
- data/ext/gecode-2.2.0/test/set/dom.cc +292 -0
- data/ext/gecode-2.2.0/test/set/int.cc +473 -0
- data/ext/gecode-2.2.0/test/set/projection.cc +436 -0
- data/ext/gecode-2.2.0/test/set/rel-op-const.cc +368 -0
- data/ext/gecode-2.2.0/test/set/rel-op.cc +465 -0
- data/ext/gecode-2.2.0/test/set/rel.cc +125 -0
- data/ext/gecode-2.2.0/test/set/select.cc +299 -0
- data/ext/gecode-2.2.0/test/set/sequence.cc +125 -0
- data/ext/gecode-2.2.0/test/test.cc +287 -0
- data/ext/gecode-2.2.0/test/test.hh +175 -0
- data/ext/gecode-2.2.0/test/test.icc +93 -0
- data/ext/{gecode-2.1.1 → gecode-2.2.0}/variables.vsl +0 -0
- data/lib/gecoder/bindings.rb +7 -5
- data/lib/gecoder/bindings/bindings.rb +8 -8
- data/lib/gecoder/interface.rb +4 -2
- data/lib/gecoder/interface/binding_changes.rb +1 -1
- data/lib/gecoder/interface/branch.rb +1 -1
- data/lib/gecoder/interface/constraints/bool_enum_constraints.rb +4 -4
- data/lib/gecoder/interface/constraints/bool_var_constraints.rb +2 -2
- data/lib/gecoder/interface/constraints/extensional_regexp.rb +1 -1
- data/lib/gecoder/interface/constraints/fixnum_enum_constraints.rb +2 -2
- data/lib/gecoder/interface/constraints/int_enum/extensional.rb +5 -5
- data/lib/gecoder/interface/constraints/int_enum_constraints.rb +4 -4
- data/lib/gecoder/interface/constraints/int_var_constraints.rb +2 -2
- data/lib/gecoder/interface/constraints/selected_set/select.rb +8 -8
- data/lib/gecoder/interface/constraints/set_enum/element.rb +79 -0
- data/lib/gecoder/interface/constraints/set_enum_constraints.rb +5 -5
- data/lib/gecoder/interface/constraints/set_var_constraints.rb +2 -2
- data/lib/gecoder/interface/convenience.rb +99 -0
- data/lib/gecoder/interface/enum_wrapper.rb +1 -1
- data/lib/gecoder/interface/mixin.rb +486 -0
- data/lib/gecoder/interface/search.rb +23 -22
- data/lib/gecoder/version.rb +1 -1
- data/specs/branch.rb +5 -3
- data/specs/constraints/bool/boolean.rb +3 -1
- data/specs/constraints/bool/linear.rb +3 -1
- data/specs/constraints/bool_enum/bool_enum_relation.rb +3 -1
- data/specs/constraints/bool_enum/channel.rb +3 -1
- data/specs/constraints/fixnum_enum/element.rb +3 -1
- data/specs/constraints/int/arithmetic.rb +3 -1
- data/specs/constraints/int/channel.rb +3 -1
- data/specs/constraints/int/linear.rb +3 -1
- data/specs/constraints/int/linear_properties.rb +3 -1
- data/specs/constraints/int_enum/arithmetic.rb +3 -1
- data/specs/constraints/int_enum/channel.rb +3 -1
- data/specs/constraints/int_enum/count.rb +3 -1
- data/specs/constraints/int_enum/distinct.rb +3 -1
- data/specs/constraints/int_enum/element.rb +3 -1
- data/specs/constraints/int_enum/sort.rb +3 -1
- data/specs/constraints/property_helper.rb +10 -10
- data/specs/constraints/reification_sugar.rb +3 -1
- data/specs/constraints/selected_set/select.rb +6 -5
- data/specs/constraints/selected_set/select_properties.rb +12 -10
- data/specs/constraints/set/channel.rb +3 -1
- data/specs/constraints/set/domain.rb +4 -4
- data/specs/constraints/set/relation.rb +4 -4
- data/specs/constraints/set_enum/channel.rb +3 -1
- data/specs/constraints/set_enum/distinct.rb +3 -1
- data/specs/constraints/set_enum/element.rb +77 -0
- data/specs/enum_wrapper.rb +1 -1
- data/specs/mixin.rb +78 -0
- data/specs/model.rb +5 -5
- data/specs/search.rb +20 -14
- data/specs/selected_set.rb +3 -3
- data/specs/set_elements.rb +2 -2
- data/tasks/distribution.rake +25 -4
- metadata +739 -602
- data/example/money.rb +0 -36
- data/ext/gecode-2.1.1/Makefile.dep +0 -7622
- data/ext/gecode-2.1.1/Makefile.in +0 -1568
- data/ext/gecode-2.1.1/changelog.in +0 -2459
- data/ext/gecode-2.1.1/configure +0 -11631
- data/ext/gecode-2.1.1/configure.ac +0 -249
- data/ext/gecode-2.1.1/configure.ac.in +0 -245
- data/ext/gecode-2.1.1/contribs/qecode/Doxyfile +0 -263
- data/ext/gecode-2.1.1/contribs/qecode/FirstFailValueHeuristic.cc +0 -82
- data/ext/gecode-2.1.1/contribs/qecode/FirstFailValueHeuristic.hh +0 -37
- data/ext/gecode-2.1.1/contribs/qecode/Makefile.in.in +0 -162
- data/ext/gecode-2.1.1/contribs/qecode/NaiveValueHeuristics.cc +0 -172
- data/ext/gecode-2.1.1/contribs/qecode/NaiveValueHeuristics.hh +0 -63
- data/ext/gecode-2.1.1/contribs/qecode/SDFVariableHeuristic.cc +0 -37
- data/ext/gecode-2.1.1/contribs/qecode/SDFVariableHeuristic.hh +0 -35
- data/ext/gecode-2.1.1/contribs/qecode/configure +0 -2264
- data/ext/gecode-2.1.1/contribs/qecode/configure.ac +0 -23
- data/ext/gecode-2.1.1/contribs/qecode/examples/COMPILING +0 -13
- data/ext/gecode-2.1.1/contribs/qecode/examples/MatrixGame.cpp +0 -144
- data/ext/gecode-2.1.1/contribs/qecode/examples/NimFibo.cpp +0 -73
- data/ext/gecode-2.1.1/contribs/qecode/examples/stress_test.cpp +0 -179
- data/ext/gecode-2.1.1/contribs/qecode/extensivecomparator.cc +0 -34
- data/ext/gecode-2.1.1/contribs/qecode/extensivecomparator.hh +0 -46
- data/ext/gecode-2.1.1/contribs/qecode/implicative.cc +0 -595
- data/ext/gecode-2.1.1/contribs/qecode/implicative.hh +0 -184
- data/ext/gecode-2.1.1/contribs/qecode/myspace.hh +0 -69
- data/ext/gecode-2.1.1/contribs/qecode/qecore.cc +0 -145
- data/ext/gecode-2.1.1/contribs/qecode/qecore.hh +0 -247
- data/ext/gecode-2.1.1/contribs/qecode/qsolver.cc +0 -168
- data/ext/gecode-2.1.1/contribs/qecode/qsolver.hh +0 -73
- data/ext/gecode-2.1.1/contribs/qecode/valueHeuristic.hh +0 -91
- data/ext/gecode-2.1.1/contribs/qecode/warner.cc +0 -101
- data/ext/gecode-2.1.1/contribs/qecode/warner.hh +0 -83
- data/ext/gecode-2.1.1/doxygen/doxygen.hh.in +0 -1111
- data/ext/gecode-2.1.1/doxygen/reflection.hh +0 -417
- data/ext/gecode-2.1.1/gecode.m4 +0 -956
- data/ext/gecode-2.1.1/gecode/cpltset.hh +0 -797
- data/ext/gecode-2.1.1/gecode/gist/analysiscursor.cc +0 -115
- data/ext/gecode-2.1.1/gecode/gist/analysiscursor.hh +0 -77
- data/ext/gecode-2.1.1/gecode/gist/drawingcursor.cc +0 -245
- data/ext/gecode-2.1.1/gecode/gist/drawingcursor.hh +0 -101
- data/ext/gecode-2.1.1/gecode/gist/gecodelogo.icc +0 -522
- data/ext/gecode-2.1.1/gecode/gist/mainwindow.cc +0 -254
- data/ext/gecode-2.1.1/gecode/gist/mainwindow.hh +0 -86
- data/ext/gecode-2.1.1/gecode/gist/node.cc +0 -100
- data/ext/gecode-2.1.1/gecode/gist/node.hh +0 -89
- data/ext/gecode-2.1.1/gecode/gist/nodecursor.cc +0 -124
- data/ext/gecode-2.1.1/gecode/gist/nodecursor.hh +0 -122
- data/ext/gecode-2.1.1/gecode/gist/nodecursor.icc +0 -79
- data/ext/gecode-2.1.1/gecode/gist/postscript.cc +0 -543
- data/ext/gecode-2.1.1/gecode/gist/postscript.hh +0 -56
- data/ext/gecode-2.1.1/gecode/gist/preferences.cc +0 -110
- data/ext/gecode-2.1.1/gecode/gist/preferences.hh +0 -76
- data/ext/gecode-2.1.1/gecode/gist/reflectionhelpers.cc +0 -55
- data/ext/gecode-2.1.1/gecode/gist/reflectionhelpers.hh +0 -58
- data/ext/gecode-2.1.1/gecode/gist/shapelist.cc +0 -331
- data/ext/gecode-2.1.1/gecode/gist/shapelist.hh +0 -140
- data/ext/gecode-2.1.1/gecode/gist/spacenode.cc +0 -531
- data/ext/gecode-2.1.1/gecode/gist/spacenode.hh +0 -224
- data/ext/gecode-2.1.1/gecode/gist/textoutput.cc +0 -114
- data/ext/gecode-2.1.1/gecode/gist/treecanvas.cc +0 -1140
- data/ext/gecode-2.1.1/gecode/gist/treecanvas.hh +0 -324
- data/ext/gecode-2.1.1/gecode/gist/ui_addvisualisationdialog.hh +0 -163
- data/ext/gecode-2.1.1/gecode/gist/visualisation/intvaritem.cc +0 -175
- data/ext/gecode-2.1.1/gecode/gist/visualisation/intvaritem.hh +0 -71
- data/ext/gecode-2.1.1/gecode/gist/visualisation/setvaritem.cc +0 -219
- data/ext/gecode-2.1.1/gecode/gist/visualisation/setvaritem.hh +0 -73
- data/ext/gecode-2.1.1/gecode/gist/visualisation/vararrayitem.hh +0 -123
- data/ext/gecode-2.1.1/gecode/gist/visualnode.cc +0 -303
- data/ext/gecode-2.1.1/gecode/gist/visualnode.hh +0 -166
- data/ext/gecode-2.1.1/gecode/int.hh +0 -2035
- data/ext/gecode-2.1.1/gecode/int/arithmetic.cc +0 -136
- data/ext/gecode-2.1.1/gecode/int/arithmetic.hh +0 -440
- data/ext/gecode-2.1.1/gecode/int/arithmetic/abs.icc +0 -279
- data/ext/gecode-2.1.1/gecode/int/arithmetic/max.icc +0 -253
- data/ext/gecode-2.1.1/gecode/int/arithmetic/mult.icc +0 -522
- data/ext/gecode-2.1.1/gecode/int/arithmetic/sqr.icc +0 -218
- data/ext/gecode-2.1.1/gecode/int/arithmetic/sqrt.icc +0 -138
- data/ext/gecode-2.1.1/gecode/int/bool.cc +0 -642
- data/ext/gecode-2.1.1/gecode/int/bool/or.icc +0 -1000
- data/ext/gecode-2.1.1/gecode/int/branch.cc +0 -301
- data/ext/gecode-2.1.1/gecode/int/branch.hh +0 -576
- data/ext/gecode-2.1.1/gecode/int/branch/select-val.icc +0 -338
- data/ext/gecode-2.1.1/gecode/int/channel.cc +0 -114
- data/ext/gecode-2.1.1/gecode/int/channel.hh +0 -259
- data/ext/gecode-2.1.1/gecode/int/channel/dom.icc +0 -347
- data/ext/gecode-2.1.1/gecode/int/channel/val.icc +0 -276
- data/ext/gecode-2.1.1/gecode/int/circuit.hh +0 -175
- data/ext/gecode-2.1.1/gecode/int/circuit/base.icc +0 -271
- data/ext/gecode-2.1.1/gecode/int/circuit/val.icc +0 -122
- data/ext/gecode-2.1.1/gecode/int/count.hh +0 -487
- data/ext/gecode-2.1.1/gecode/int/count/int.icc +0 -619
- data/ext/gecode-2.1.1/gecode/int/count/rel.icc +0 -144
- data/ext/gecode-2.1.1/gecode/int/count/view.icc +0 -449
- data/ext/gecode-2.1.1/gecode/int/cumulatives.hh +0 -141
- data/ext/gecode-2.1.1/gecode/int/cumulatives/val.icc +0 -429
- data/ext/gecode-2.1.1/gecode/int/distinct.hh +0 -341
- data/ext/gecode-2.1.1/gecode/int/distinct/dom.icc +0 -750
- data/ext/gecode-2.1.1/gecode/int/distinct/ter-dom.icc +0 -136
- data/ext/gecode-2.1.1/gecode/int/element.hh +0 -239
- data/ext/gecode-2.1.1/gecode/int/element/int.icc +0 -441
- data/ext/gecode-2.1.1/gecode/int/element/view.icc +0 -584
- data/ext/gecode-2.1.1/gecode/int/exception.icc +0 -163
- data/ext/gecode-2.1.1/gecode/int/extensional.hh +0 -415
- data/ext/gecode-2.1.1/gecode/int/extensional/dfa.cc +0 -565
- data/ext/gecode-2.1.1/gecode/int/extensional/tuple-set.cc +0 -311
- data/ext/gecode-2.1.1/gecode/int/gcc.hh +0 -329
- data/ext/gecode-2.1.1/gecode/int/gcc/bnd.icc +0 -660
- data/ext/gecode-2.1.1/gecode/int/gcc/dom.icc +0 -531
- data/ext/gecode-2.1.1/gecode/int/gcc/val.icc +0 -400
- data/ext/gecode-2.1.1/gecode/int/int-set.cc +0 -153
- data/ext/gecode-2.1.1/gecode/int/int-set.icc +0 -191
- data/ext/gecode-2.1.1/gecode/int/linear-bool.cc +0 -220
- data/ext/gecode-2.1.1/gecode/int/linear-int.cc +0 -240
- data/ext/gecode-2.1.1/gecode/int/linear.hh +0 -1849
- data/ext/gecode-2.1.1/gecode/int/linear/bool-post.cc +0 -433
- data/ext/gecode-2.1.1/gecode/int/linear/int-bin.icc +0 -605
- data/ext/gecode-2.1.1/gecode/int/linear/int-dom.icc +0 -539
- data/ext/gecode-2.1.1/gecode/int/linear/int-post.cc +0 -493
- data/ext/gecode-2.1.1/gecode/int/rel.cc +0 -431
- data/ext/gecode-2.1.1/gecode/int/rel.hh +0 -657
- data/ext/gecode-2.1.1/gecode/int/rel/eq.icc +0 -848
- data/ext/gecode-2.1.1/gecode/int/rel/lex.icc +0 -248
- data/ext/gecode-2.1.1/gecode/int/rel/nq.icc +0 -269
- data/ext/gecode-2.1.1/gecode/int/sorted.cc +0 -91
- data/ext/gecode-2.1.1/gecode/int/sorted.hh +0 -117
- data/ext/gecode-2.1.1/gecode/int/sorted/matching.icc +0 -182
- data/ext/gecode-2.1.1/gecode/int/sorted/narrowing.icc +0 -257
- data/ext/gecode-2.1.1/gecode/int/sorted/order.icc +0 -208
- data/ext/gecode-2.1.1/gecode/int/sorted/propagate.icc +0 -669
- data/ext/gecode-2.1.1/gecode/int/sorted/sortsup.icc +0 -596
- data/ext/gecode-2.1.1/gecode/int/var-imp.icc +0 -745
- data/ext/gecode-2.1.1/gecode/int/var-imp/bool.cc +0 -104
- data/ext/gecode-2.1.1/gecode/int/var-imp/int.cc +0 -407
- data/ext/gecode-2.1.1/gecode/int/var/bool.icc +0 -126
- data/ext/gecode-2.1.1/gecode/int/var/int.icc +0 -151
- data/ext/gecode-2.1.1/gecode/int/view.icc +0 -1894
- data/ext/gecode-2.1.1/gecode/iter.hh +0 -90
- data/ext/gecode-2.1.1/gecode/iter/values-minus.icc +0 -130
- data/ext/gecode-2.1.1/gecode/kernel.hh +0 -182
- data/ext/gecode-2.1.1/gecode/kernel/branching.icc +0 -447
- data/ext/gecode-2.1.1/gecode/kernel/core.cc +0 -473
- data/ext/gecode-2.1.1/gecode/kernel/core.icc +0 -2295
- data/ext/gecode-2.1.1/gecode/kernel/memory-manager.icc +0 -458
- data/ext/gecode-2.1.1/gecode/kernel/reflection.cc +0 -921
- data/ext/gecode-2.1.1/gecode/kernel/reflection.icc +0 -1012
- data/ext/gecode-2.1.1/gecode/kernel/var-imp.icc +0 -433
- data/ext/gecode-2.1.1/gecode/kernel/var-map.cc +0 -269
- data/ext/gecode-2.1.1/gecode/kernel/var-map.icc +0 -227
- data/ext/gecode-2.1.1/gecode/kernel/var-traits.icc +0 -72
- data/ext/gecode-2.1.1/gecode/kernel/var-type.icc +0 -915
- data/ext/gecode-2.1.1/gecode/kernel/var.icc +0 -120
- data/ext/gecode-2.1.1/gecode/kernel/view.icc +0 -611
- data/ext/gecode-2.1.1/gecode/minimodel.hh +0 -1165
- data/ext/gecode-2.1.1/gecode/minimodel/arithmetic.cc +0 -179
- data/ext/gecode-2.1.1/gecode/search.hh +0 -752
- data/ext/gecode-2.1.1/gecode/search/reco-stack.icc +0 -237
- data/ext/gecode-2.1.1/gecode/serialization.hh +0 -149
- data/ext/gecode-2.1.1/gecode/serialization/boost.cc +0 -78
- data/ext/gecode-2.1.1/gecode/serialization/javascript.cc +0 -340
- data/ext/gecode-2.1.1/gecode/serialization/register.cc +0 -8142
- data/ext/gecode-2.1.1/gecode/set.hh +0 -970
- data/ext/gecode-2.1.1/gecode/set/projectors.hh +0 -438
- data/ext/gecode-2.1.1/gecode/set/projectors/formula.cc +0 -312
- data/ext/gecode-2.1.1/gecode/set/rel-op/common.icc +0 -557
- data/ext/gecode-2.1.1/gecode/set/rel-op/inter.icc +0 -409
- data/ext/gecode-2.1.1/gecode/set/rel/re-subset.icc +0 -172
- data/ext/gecode-2.1.1/gecode/set/select.cc +0 -135
- data/ext/gecode-2.1.1/gecode/set/select.hh +0 -233
- data/ext/gecode-2.1.1/gecode/set/select/disjoint.cc +0 -308
- data/ext/gecode-2.1.1/gecode/set/select/disjoint.icc +0 -75
- data/ext/gecode-2.1.1/gecode/set/select/idxarray.hh +0 -113
- data/ext/gecode-2.1.1/gecode/set/select/idxarray.icc +0 -155
- data/ext/gecode-2.1.1/gecode/set/select/inter.icc +0 -349
- data/ext/gecode-2.1.1/gecode/set/select/union.icc +0 -371
- data/ext/gecode-2.1.1/gecode/set/select/unionConst.icc +0 -334
- data/ext/gecode-2.1.1/gecode/set/var-imp/set.cc +0 -214
- data/ext/gecode-2.1.1/gecode/set/var/set.icc +0 -303
- data/ext/gecode-2.1.1/gecode/set/view.icc +0 -1503
- data/ext/gecode-2.1.1/gecode/set/view/complement.icc +0 -629
- data/ext/gecode-2.1.1/gecode/support/block-allocator.icc +0 -158
- data/ext/gecode-2.1.1/gecode/support/config.icc.in +0 -80
- data/ext/gecode-2.1.1/gecode/support/sentinel-stack.icc +0 -122
- data/ext/gecode-2.1.1/gecode/support/symbol.cc +0 -226
- data/ext/gecode-2.1.1/gecode/support/symbol.icc +0 -130
- data/ext/gecode-2.1.1/misc/gecode-gist.pc.in +0 -45
- data/ext/gecode-2.1.1/misc/gecode-minimodel.pc.in +0 -45
- data/ext/gecode-2.1.1/misc/gecode-search.pc.in +0 -45
- data/ext/gecode-2.1.1/misc/gecode-serialization.pc.in +0 -45
- data/ext/gecode-2.1.1/misc/gecode.pc.in +0 -45
- data/ext/gecode-2.1.1/misc/genstatistics.perl +0 -178
- data/ext/gecode-2.1.1/misc/genvariables.perl +0 -905
- data/lib/gecoder/interface/constraints/set_enum/select.rb +0 -79
- data/lib/gecoder/interface/model.rb +0 -453
- data/lib/gecoder/interface/model_sugar.rb +0 -84
- data/specs/constraints/set_enum/select.rb +0 -73
@@ -1,166 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* Main authors:
|
3
|
-
* Guido Tack <tack@gecode.org>
|
4
|
-
*
|
5
|
-
* Copyright:
|
6
|
-
* Guido Tack, 2006
|
7
|
-
*
|
8
|
-
* Last modified:
|
9
|
-
* $Date: 2008-02-19 11:05:15 +0100 (Tue, 19 Feb 2008) $ by $Author: tack $
|
10
|
-
* $Revision: 6231 $
|
11
|
-
*
|
12
|
-
* This file is part of Gecode, the generic constraint
|
13
|
-
* development environment:
|
14
|
-
* http://www.gecode.org
|
15
|
-
*
|
16
|
-
* Permission is hereby granted, free of charge, to any person obtaining
|
17
|
-
* a copy of this software and associated documentation files (the
|
18
|
-
* "Software"), to deal in the Software without restriction, including
|
19
|
-
* without limitation the rights to use, copy, modify, merge, publish,
|
20
|
-
* distribute, sublicense, and/or sell copies of the Software, and to
|
21
|
-
* permit persons to whom the Software is furnished to do so, subject to
|
22
|
-
* the following conditions:
|
23
|
-
*
|
24
|
-
* The above copyright notice and this permission notice shall be
|
25
|
-
* included in all copies or substantial portions of the Software.
|
26
|
-
*
|
27
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
28
|
-
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
29
|
-
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
30
|
-
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
31
|
-
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
32
|
-
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
33
|
-
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
34
|
-
*
|
35
|
-
*/
|
36
|
-
|
37
|
-
#ifndef GECODE_GIST_VISUALNODE_HH
|
38
|
-
#define GECODE_GIST_VISUALNODE_HH
|
39
|
-
|
40
|
-
#include "gecode/gist/spacenode.hh"
|
41
|
-
#include "gecode/gist/shapelist.hh"
|
42
|
-
#include "gecode/kernel.hh"
|
43
|
-
#include <vector>
|
44
|
-
#include <string>
|
45
|
-
|
46
|
-
namespace Gecode { namespace Gist {
|
47
|
-
|
48
|
-
/// \brief Node class that supports visual layout
|
49
|
-
class VisualNode : public SpaceNode {
|
50
|
-
protected:
|
51
|
-
/// Relative offset from the parent node
|
52
|
-
int offset;
|
53
|
-
/// Whether the node needs re-layout
|
54
|
-
bool dirty;
|
55
|
-
/// Whether the layout of the node's children is completed
|
56
|
-
bool childrenLayoutDone;
|
57
|
-
/// Whether the node is hidden
|
58
|
-
bool hidden;
|
59
|
-
/// Whether the node is marked
|
60
|
-
bool marked;
|
61
|
-
|
62
|
-
/// Whether the node is on the selected path
|
63
|
-
bool onPath;
|
64
|
-
/// Whether the node is the head of the selected path
|
65
|
-
bool lastOnPath;
|
66
|
-
/// The alternative that is next on the path
|
67
|
-
int pathAlternative;
|
68
|
-
|
69
|
-
/// Heat value
|
70
|
-
unsigned char heat;
|
71
|
-
|
72
|
-
/// Shape of this node
|
73
|
-
Shape* shape;
|
74
|
-
/// Bounding box of this node
|
75
|
-
BoundingBox box;
|
76
|
-
/// Check if the \a x at depth \a depth lies in this subtree
|
77
|
-
bool containsCoordinateAtDepth(int x, int depth);
|
78
|
-
public:
|
79
|
-
/// Constructor
|
80
|
-
VisualNode(int alternative, BestNode* b);
|
81
|
-
/// Constructor for root node from \a root and \a b
|
82
|
-
VisualNode(Space* root, Better* b);
|
83
|
-
/// Destructor
|
84
|
-
virtual ~VisualNode(void);
|
85
|
-
|
86
|
-
/// Shape of a single node
|
87
|
-
static const Shape singletonShape;
|
88
|
-
/// Unit shape
|
89
|
-
static const Shape unitShape;
|
90
|
-
|
91
|
-
/// Return if node is hidden
|
92
|
-
bool isHidden(void);
|
93
|
-
/// Set hidden state to \a h
|
94
|
-
void setHidden(bool h);
|
95
|
-
/// Mark all nodes up the path to the parent as dirty
|
96
|
-
void dirtyUp(void);
|
97
|
-
/// Compute layout for the subtree of this node
|
98
|
-
void layout(void);
|
99
|
-
/// Return offset off this node from its parent
|
100
|
-
int getOffset(void);
|
101
|
-
/// Set offset of this node, relative to its parent
|
102
|
-
void setOffset(int n);
|
103
|
-
/// Return whether node is marked as dirty
|
104
|
-
bool isDirty(void);
|
105
|
-
/// Mark node as dirty
|
106
|
-
void setDirty(bool d);
|
107
|
-
/// Return whether the layout of the node's children has been completed
|
108
|
-
bool childrenLayoutIsDone(void);
|
109
|
-
/// Mark node whether the layout of the node's children has been completed
|
110
|
-
void setChildrenLayoutDone(bool d);
|
111
|
-
/// Return whether node is marked
|
112
|
-
bool isMarked(void);
|
113
|
-
/// Set mark of this node
|
114
|
-
void setMarked(bool m);
|
115
|
-
/// Set all nodes from the node to the root to be on the path
|
116
|
-
void pathUp(void);
|
117
|
-
/// Set all nodes from the node to the root not to be on the path
|
118
|
-
void unPathUp(void);
|
119
|
-
/// Return whether node is on the path
|
120
|
-
bool isOnPath(void);
|
121
|
-
/// Return whether node is the head of the path
|
122
|
-
bool isLastOnPath(void);
|
123
|
-
/// Return the alternative of the child that is on the path (-1 if none)
|
124
|
-
int getPathAlternative(void);
|
125
|
-
/// Set the path attributes of the node
|
126
|
-
void setPathInfos(bool onPath0, int pathAlternative0 = -1, bool lastOnPath0 = false);
|
127
|
-
|
128
|
-
/// Return heat value
|
129
|
-
unsigned char getHeat(void) const;
|
130
|
-
/// Set heat value to \a h
|
131
|
-
void setHeat(unsigned char h);
|
132
|
-
|
133
|
-
/// Toggle whether this node is hidden
|
134
|
-
void toggleHidden(void);
|
135
|
-
/// Hide all failed subtrees of this node
|
136
|
-
void hideFailed(void);
|
137
|
-
/// Unhide all nodes in the subtree of this node
|
138
|
-
void unhideAll(void);
|
139
|
-
|
140
|
-
/// Return the shape of this node
|
141
|
-
Shape* getShape(void);
|
142
|
-
/// Set the shape of this node
|
143
|
-
void setShape(Shape* s);
|
144
|
-
/// Set the bounding box
|
145
|
-
void setBoundingBox(BoundingBox b);
|
146
|
-
/// Return the bounding box
|
147
|
-
BoundingBox getBoundingBox(void);
|
148
|
-
/// Create a child for alternative \a alternative
|
149
|
-
virtual VisualNode* createChild(int alternative);
|
150
|
-
/// Signal that the status has changed
|
151
|
-
virtual void changedStatus();
|
152
|
-
/// Return the parent
|
153
|
-
VisualNode* getParent(void);
|
154
|
-
/// Return child \a i
|
155
|
-
VisualNode* getChild(int i);
|
156
|
-
/// Find a node in this subtree at coordinates \a x, \a y
|
157
|
-
VisualNode* findNode(int x, int y);
|
158
|
-
|
159
|
-
std::string toolTip(void);
|
160
|
-
};
|
161
|
-
|
162
|
-
}}
|
163
|
-
|
164
|
-
#endif
|
165
|
-
|
166
|
-
// STATISTICS: gist-any
|
@@ -1,2035 +0,0 @@
|
|
1
|
-
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
2
|
-
/*
|
3
|
-
* Main authors:
|
4
|
-
* Christian Schulte <schulte@gecode.org>
|
5
|
-
* Guido Tack <tack@gecode.org>
|
6
|
-
*
|
7
|
-
* Contributing authors:
|
8
|
-
* Mikael Lagerkvist <lagerkvist@gecode.org>
|
9
|
-
*
|
10
|
-
* Copyright:
|
11
|
-
* Christian Schulte, 2002
|
12
|
-
* Guido Tack, 2004
|
13
|
-
*
|
14
|
-
* Last modified:
|
15
|
-
* $Date: 2008-02-29 01:09:17 +0100 (Fri, 29 Feb 2008) $ by $Author: schulte $
|
16
|
-
* $Revision: 6355 $
|
17
|
-
*
|
18
|
-
* This file is part of Gecode, the generic constraint
|
19
|
-
* development environment:
|
20
|
-
* http://www.gecode.org
|
21
|
-
*
|
22
|
-
* Permission is hereby granted, free of charge, to any person obtaining
|
23
|
-
* a copy of this software and associated documentation files (the
|
24
|
-
* "Software"), to deal in the Software without restriction, including
|
25
|
-
* without limitation the rights to use, copy, modify, merge, publish,
|
26
|
-
* distribute, sublicense, and/or sell copies of the Software, and to
|
27
|
-
* permit persons to whom the Software is furnished to do so, subject to
|
28
|
-
* the following conditions:
|
29
|
-
*
|
30
|
-
* The above copyright notice and this permission notice shall be
|
31
|
-
* included in all copies or substantial portions of the Software.
|
32
|
-
*
|
33
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
34
|
-
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
35
|
-
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
36
|
-
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
37
|
-
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
38
|
-
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
39
|
-
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
40
|
-
*
|
41
|
-
*/
|
42
|
-
|
43
|
-
#ifndef __GECODE_INT_HH__
|
44
|
-
#define __GECODE_INT_HH__
|
45
|
-
|
46
|
-
#include <climits>
|
47
|
-
#include <iostream>
|
48
|
-
|
49
|
-
#include "gecode/kernel.hh"
|
50
|
-
#include "gecode/iter.hh"
|
51
|
-
|
52
|
-
/*
|
53
|
-
* Configure linking
|
54
|
-
*
|
55
|
-
*/
|
56
|
-
#if !defined(GECODE_STATIC_LIBS) && \
|
57
|
-
(defined(__CYGWIN__) || defined(__MINGW32__) || defined(_MSC_VER))
|
58
|
-
|
59
|
-
#ifdef GECODE_BUILD_INT
|
60
|
-
#define GECODE_INT_EXPORT __declspec( dllexport )
|
61
|
-
#else
|
62
|
-
#define GECODE_INT_EXPORT __declspec( dllimport )
|
63
|
-
#endif
|
64
|
-
|
65
|
-
#else
|
66
|
-
|
67
|
-
#ifdef GECODE_GCC_HAS_CLASS_VISIBILITY
|
68
|
-
#define GECODE_INT_EXPORT __attribute__ ((visibility("default")))
|
69
|
-
#else
|
70
|
-
#define GECODE_INT_EXPORT
|
71
|
-
#endif
|
72
|
-
|
73
|
-
#endif
|
74
|
-
|
75
|
-
/**
|
76
|
-
* \namespace Gecode::Int
|
77
|
-
* \brief Finite domain integers
|
78
|
-
*
|
79
|
-
* The Gecode::Int namespace contains all functionality required
|
80
|
-
* to program propagators and branchings for finite domain integers.
|
81
|
-
* In addition, all propagators and branchings for finite domain
|
82
|
-
* integers provided by %Gecode are contained as nested namespaces.
|
83
|
-
*
|
84
|
-
*/
|
85
|
-
|
86
|
-
#include "gecode/int/exception.icc"
|
87
|
-
|
88
|
-
namespace Gecode { namespace Int {
|
89
|
-
|
90
|
-
/**
|
91
|
-
* \brief Numerical limits for integer variables
|
92
|
-
*
|
93
|
-
* The integer limits are chosen such changing the sign is always possible
|
94
|
-
* without overflow.
|
95
|
-
* \ingroup TaskModelIntVars
|
96
|
-
*/
|
97
|
-
namespace Limits {
|
98
|
-
/// Largest allowed integer value
|
99
|
-
const int max = INT_MAX - 1;
|
100
|
-
/// Smallest allowed integer value
|
101
|
-
const int min = -max;
|
102
|
-
/// Check whether integer \a n is in range, otherwise throw out of limits with information \a l
|
103
|
-
void check(int n, const char* l);
|
104
|
-
/// Check whether double \a n is in integer range, otherwise throw out of limits exception with information \a l
|
105
|
-
void check(double n, const char* l);
|
106
|
-
}
|
107
|
-
|
108
|
-
}}
|
109
|
-
|
110
|
-
#include "gecode/int/limits.icc"
|
111
|
-
|
112
|
-
namespace Gecode {
|
113
|
-
|
114
|
-
class IntSetRanges;
|
115
|
-
|
116
|
-
/**
|
117
|
-
* \brief Integer sets
|
118
|
-
*
|
119
|
-
* Integer sets are the means to specify arbitrary sets
|
120
|
-
* of integers to be used as domains for integer variables.
|
121
|
-
* \ingroup TaskModelIntVars TaskModelSetVars
|
122
|
-
*/
|
123
|
-
class IntSet : public SharedHandle {
|
124
|
-
friend class IntSetRanges;
|
125
|
-
private:
|
126
|
-
/// %Range (intervals) of integers
|
127
|
-
class Range {
|
128
|
-
public:
|
129
|
-
int min, max;
|
130
|
-
};
|
131
|
-
class IntSetObject : public SharedHandle::Object {
|
132
|
-
public:
|
133
|
-
/// Number of ranges
|
134
|
-
int n;
|
135
|
-
/// Array of ranges
|
136
|
-
Range* r;
|
137
|
-
/// Allocate object with \a m elements
|
138
|
-
GECODE_INT_EXPORT static IntSetObject* allocate(int m);
|
139
|
-
/// Return copy of object
|
140
|
-
GECODE_INT_EXPORT SharedHandle::Object* copy(void) const;
|
141
|
-
/// Delete object
|
142
|
-
GECODE_INT_EXPORT virtual ~IntSetObject(void);
|
143
|
-
};
|
144
|
-
/// Sort ranges according to increasing minimum
|
145
|
-
class MinInc;
|
146
|
-
/// Normalize the first \a n elements of \a r
|
147
|
-
GECODE_INT_EXPORT void normalize(Range* r, int n);
|
148
|
-
/// Initialize as range with minimum \a n and maximum \a m
|
149
|
-
GECODE_INT_EXPORT void init(int n, int m);
|
150
|
-
/// Initialize with \a n integers from array \a r
|
151
|
-
GECODE_INT_EXPORT void init(const int r[], int n);
|
152
|
-
/// Initialize with \a n ranges from array \a r
|
153
|
-
GECODE_INT_EXPORT void init(const int r[][2], int n);
|
154
|
-
public:
|
155
|
-
/// \name Constructors and initialization
|
156
|
-
//@{
|
157
|
-
/// Initialize as empty set
|
158
|
-
IntSet(void);
|
159
|
-
/** \brief Initialize as range with minimum \a n and maximum \a m
|
160
|
-
*
|
161
|
-
* Note that the set is empty if \a n is larger than \a m
|
162
|
-
*/
|
163
|
-
IntSet(int n, int m);
|
164
|
-
/// Initialize with \a n integers from array \a r
|
165
|
-
IntSet(const int r[], int n);
|
166
|
-
/** \brief Initialize with \a n ranges from array \a r
|
167
|
-
*
|
168
|
-
* For position \a i in the array \a r, the minimum is \a r[\a i][0]
|
169
|
-
* and the maximum is \a r[\a i][1].
|
170
|
-
*/
|
171
|
-
IntSet(const int r[][2], int n);
|
172
|
-
/// Initialize with range iterator \a i
|
173
|
-
template <class I>
|
174
|
-
explicit IntSet(I& i);
|
175
|
-
//@}
|
176
|
-
|
177
|
-
/// \name Range length
|
178
|
-
//@{
|
179
|
-
/// Return number of ranges of the specification
|
180
|
-
int size(void) const;
|
181
|
-
//@}
|
182
|
-
|
183
|
-
/// \name Range access
|
184
|
-
//@{
|
185
|
-
/// Return minimum of range at position \a i
|
186
|
-
int min(int i) const;
|
187
|
-
/// Return maximum of range at position \a i
|
188
|
-
int max(int i) const;
|
189
|
-
/// Return width of range at position \a i
|
190
|
-
unsigned int width(int i) const;
|
191
|
-
//@}
|
192
|
-
|
193
|
-
/// \name Entire set access
|
194
|
-
//@{
|
195
|
-
/// Return minimum of entire set
|
196
|
-
int min(void) const;
|
197
|
-
/// Return maximum of entire set
|
198
|
-
int max(void) const;
|
199
|
-
//@}
|
200
|
-
|
201
|
-
/// \name Predefined value
|
202
|
-
//@{
|
203
|
-
/// Empty set
|
204
|
-
GECODE_INT_EXPORT static const IntSet empty;
|
205
|
-
//@}
|
206
|
-
};
|
207
|
-
|
208
|
-
/**
|
209
|
-
* \brief Range iterator for integer sets
|
210
|
-
*
|
211
|
-
* \ingroup TaskModelIntVars TaskModelSetVars
|
212
|
-
*/
|
213
|
-
class IntSetRanges {
|
214
|
-
private:
|
215
|
-
/// Current range
|
216
|
-
const IntSet::Range* i;
|
217
|
-
/// End range
|
218
|
-
const IntSet::Range* e;
|
219
|
-
public:
|
220
|
-
/// \name Constructors and initialization
|
221
|
-
//@{
|
222
|
-
/// Default constructor
|
223
|
-
IntSetRanges(void);
|
224
|
-
/// Initialize with ranges for set \a s
|
225
|
-
IntSetRanges(const IntSet& s);
|
226
|
-
/// Initialize with ranges for set \a s
|
227
|
-
void init(const IntSet& s);
|
228
|
-
//@}
|
229
|
-
|
230
|
-
/// \name Iteration control
|
231
|
-
//@{
|
232
|
-
/// Test whether iterator is still at a range or done
|
233
|
-
bool operator()(void) const;
|
234
|
-
/// Move iterator to next range (if possible)
|
235
|
-
void operator++(void);
|
236
|
-
//@}
|
237
|
-
|
238
|
-
/// \name Range access
|
239
|
-
//@{
|
240
|
-
/// Return smallest value of range
|
241
|
-
int min(void) const;
|
242
|
-
/// Return largest value of range
|
243
|
-
int max(void) const;
|
244
|
-
/// Return width of range (distance between minimum and maximum)
|
245
|
-
unsigned int width(void) const;
|
246
|
-
//@}
|
247
|
-
};
|
248
|
-
|
249
|
-
/**
|
250
|
-
* \brief Value iterator for integer sets
|
251
|
-
*
|
252
|
-
* \ingroup TaskModelIntVars TaskModelSetVars
|
253
|
-
*/
|
254
|
-
class IntSetValues : public Iter::Ranges::ToValues<IntSetRanges> {
|
255
|
-
public:
|
256
|
-
/// \name Constructors and initialization
|
257
|
-
//@{
|
258
|
-
/// Default constructor
|
259
|
-
IntSetValues(void);
|
260
|
-
/// Initialize with values for \a s
|
261
|
-
IntSetValues(const IntSet& s);
|
262
|
-
/// Initialize with values for \a s
|
263
|
-
void init(const IntSet& s);
|
264
|
-
//@}
|
265
|
-
};
|
266
|
-
|
267
|
-
}
|
268
|
-
|
269
|
-
/**
|
270
|
-
* \brief Print integer set \a s
|
271
|
-
* \relates Gecode::IntSet
|
272
|
-
*/
|
273
|
-
GECODE_INT_EXPORT std::ostream&
|
274
|
-
operator<<(std::ostream&, const Gecode::IntSet& s);
|
275
|
-
|
276
|
-
#include "gecode/int/int-set.icc"
|
277
|
-
|
278
|
-
#include "gecode/int/var-imp.icc"
|
279
|
-
|
280
|
-
namespace Gecode {
|
281
|
-
|
282
|
-
namespace Int {
|
283
|
-
class IntView;
|
284
|
-
}
|
285
|
-
|
286
|
-
/**
|
287
|
-
* \brief Integer variables
|
288
|
-
*
|
289
|
-
* \ingroup TaskModelIntVars
|
290
|
-
*/
|
291
|
-
class IntVar : public VarBase<Int::IntVarImp> {
|
292
|
-
friend class IntVarArray;
|
293
|
-
private:
|
294
|
-
using VarBase<Int::IntVarImp>::varimp;
|
295
|
-
/**
|
296
|
-
* \brief Initialize variable with range domain
|
297
|
-
*
|
298
|
-
* The variable is created with a domain ranging from \a min
|
299
|
-
* to \a max. No exceptions are thrown.
|
300
|
-
*/
|
301
|
-
void _init(Space* home, int min, int max);
|
302
|
-
/**
|
303
|
-
* \brief Initialize variable with arbitrary domain
|
304
|
-
*
|
305
|
-
* The variable is created with a domain described by \a d.
|
306
|
-
* No exceptions are thrown.
|
307
|
-
*/
|
308
|
-
void _init(Space* home, const IntSet& d);
|
309
|
-
public:
|
310
|
-
/// \name Constructors and initialization
|
311
|
-
//@{
|
312
|
-
/// Default constructor
|
313
|
-
IntVar(void);
|
314
|
-
/// Initialize from integer variable \a x
|
315
|
-
IntVar(const IntVar& x);
|
316
|
-
/// Initialize from integer view \a x
|
317
|
-
IntVar(const Int::IntView& x);
|
318
|
-
/// Initialize from reflection variable \a x
|
319
|
-
IntVar(const Reflection::Var& x);
|
320
|
-
/**
|
321
|
-
* \brief Initialize variable with range domain
|
322
|
-
*
|
323
|
-
* The variable is created with a domain ranging from \a min
|
324
|
-
* to \a max. The following exceptions might be thrown:
|
325
|
-
* - If \a min is greater than \a max, an exception of type
|
326
|
-
* Gecode::Int::VariableEmptyDomain is thrown.
|
327
|
-
* - If \a min or \a max exceed the limits for integers as defined
|
328
|
-
* in Gecode::Int::Limits, an exception of type
|
329
|
-
* Gecode::Int::OutOfLimits is thrown.
|
330
|
-
*/
|
331
|
-
GECODE_INT_EXPORT IntVar(Space* home, int min ,int max);
|
332
|
-
/**
|
333
|
-
* \brief Initialize variable with arbitrary domain
|
334
|
-
*
|
335
|
-
* The variable is created with a domain described by \a d.
|
336
|
-
* The following exceptions might be thrown:
|
337
|
-
* - If \a d is empty, an exception of type
|
338
|
-
* Gecode::Int::VariableEmptyDomain is thrown.
|
339
|
-
* - If \a d contains values that exceed the limits for integers
|
340
|
-
* as defined in Gecode::Int::Limits, an exception of type
|
341
|
-
* Gecode::Int::OutOfLimits is thrown.
|
342
|
-
*/
|
343
|
-
GECODE_INT_EXPORT IntVar(Space* home, const IntSet& d);
|
344
|
-
/**
|
345
|
-
* \brief Initialize variable with range domain
|
346
|
-
*
|
347
|
-
* The variable is created with a domain ranging from \a min
|
348
|
-
* to \a max. The following exceptions might be thrown:
|
349
|
-
* - If \a min is greater than \a max, an exception of type
|
350
|
-
* Gecode::Int::VariableEmptyDomain is thrown.
|
351
|
-
* - If \a min or \a max exceed the limits for integers as defined
|
352
|
-
* in Gecode::Int::Limits, an exception of type
|
353
|
-
* Gecode::Int::OutOfLimits is thrown.
|
354
|
-
*/
|
355
|
-
GECODE_INT_EXPORT void init(Space* home, int min, int max);
|
356
|
-
/**
|
357
|
-
* \brief Initialize variable with arbitrary domain
|
358
|
-
*
|
359
|
-
* The variable is created with a domain described by \a d.
|
360
|
-
* The following exceptions might be thrown:
|
361
|
-
* - If \a d is empty, an exception of type
|
362
|
-
* Gecode::Int::VariableEmptyDomain is thrown.
|
363
|
-
* - If \a d contains values that exceed the limits for integers
|
364
|
-
* as defined in Gecode::Int::Limits, an exception of type
|
365
|
-
* Gecode::Int::OutOfLimits is thrown.
|
366
|
-
*/
|
367
|
-
GECODE_INT_EXPORT void init(Space* home, const IntSet& d);
|
368
|
-
//@}
|
369
|
-
|
370
|
-
/// \name Value access
|
371
|
-
//@{
|
372
|
-
/// Return minimum of domain
|
373
|
-
int min(void) const;
|
374
|
-
/// Return maximum of domain
|
375
|
-
int max(void) const;
|
376
|
-
/// Return median of domain
|
377
|
-
int med(void) const;
|
378
|
-
/// Return assigned value (only if assigned)
|
379
|
-
int val(void) const;
|
380
|
-
|
381
|
-
/// Return size (cardinality) of domain
|
382
|
-
unsigned int size(void) const;
|
383
|
-
/// Return width of domain (distance between maximum and minimum)
|
384
|
-
unsigned int width(void) const;
|
385
|
-
//@}
|
386
|
-
|
387
|
-
/// \name Domain tests
|
388
|
-
//@{
|
389
|
-
/// Test whether domain is a range
|
390
|
-
bool range(void) const;
|
391
|
-
/// Test whether view is assigned
|
392
|
-
bool assigned(void) const;
|
393
|
-
|
394
|
-
/// Test whether \a n is contained in domain
|
395
|
-
bool in(int n) const;
|
396
|
-
//@}
|
397
|
-
|
398
|
-
/// \name Cloning
|
399
|
-
//@{
|
400
|
-
/// Update this variable to be a clone of variable \a x
|
401
|
-
void update(Space* home, bool share, IntVar& x);
|
402
|
-
//@}
|
403
|
-
};
|
404
|
-
|
405
|
-
|
406
|
-
/**
|
407
|
-
* \brief %Range iterator for integer variables
|
408
|
-
* \ingroup TaskModelIntVars
|
409
|
-
*/
|
410
|
-
class IntVarRanges : public Int::IntVarImpFwd {
|
411
|
-
public:
|
412
|
-
/// \name Constructors and initialization
|
413
|
-
//@{
|
414
|
-
/// Default constructor
|
415
|
-
IntVarRanges(void);
|
416
|
-
/// Initialize with ranges for integer variable \a x
|
417
|
-
IntVarRanges(const IntVar& x);
|
418
|
-
/// Initialize with ranges for integer variable \a x
|
419
|
-
void init(const IntVar& x);
|
420
|
-
//@}
|
421
|
-
};
|
422
|
-
|
423
|
-
/**
|
424
|
-
* \brief Value iterator for integer variables
|
425
|
-
* \ingroup TaskModelIntVars
|
426
|
-
*/
|
427
|
-
class IntVarValues : public Iter::Ranges::ToValues<IntVarRanges> {
|
428
|
-
public:
|
429
|
-
/// \name Constructors and initialization
|
430
|
-
//@{
|
431
|
-
/// Default constructor
|
432
|
-
IntVarValues(void);
|
433
|
-
/// Initialize with values for \a x
|
434
|
-
IntVarValues(const IntVar& x);
|
435
|
-
/// Initialize with values \a x
|
436
|
-
void init(const IntVar& x);
|
437
|
-
//@}
|
438
|
-
};
|
439
|
-
|
440
|
-
namespace Int {
|
441
|
-
class BoolView;
|
442
|
-
}
|
443
|
-
|
444
|
-
/**
|
445
|
-
* \brief Boolean integer variables
|
446
|
-
*
|
447
|
-
* \ingroup TaskModelIntVars
|
448
|
-
*/
|
449
|
-
class BoolVar : public VarBase<Int::BoolVarImp> {
|
450
|
-
friend class BoolVarArray;
|
451
|
-
private:
|
452
|
-
using VarBase<Int::BoolVarImp>::varimp;
|
453
|
-
/**
|
454
|
-
* \brief Initialize Boolean variable with range domain
|
455
|
-
*
|
456
|
-
* The variable is created with a domain ranging from \a min
|
457
|
-
* to \a max. No exceptions are thrown.
|
458
|
-
*/
|
459
|
-
void _init(Space* home, int min, int max);
|
460
|
-
public:
|
461
|
-
/// \name Constructors and initialization
|
462
|
-
//@{
|
463
|
-
/// Default constructor
|
464
|
-
BoolVar(void);
|
465
|
-
/// Initialize from Boolean variable \a x
|
466
|
-
BoolVar(const BoolVar& x);
|
467
|
-
/// Initialize from Boolean view \a x
|
468
|
-
BoolVar(const Int::BoolView& x);
|
469
|
-
/// Initialize from reflection variable \a x
|
470
|
-
BoolVar(const Reflection::Var& x);
|
471
|
-
/**
|
472
|
-
* \brief Initialize Boolean variable with range domain
|
473
|
-
*
|
474
|
-
* The variable is created with a domain ranging from \a min
|
475
|
-
* to \a max. The following exceptions might be thrown:
|
476
|
-
* - If \a min is greater than \a max, an exception of type
|
477
|
-
* Gecode::Int::VariableEmptyDomain is thrown.
|
478
|
-
* - If \a min is less than 0 or \a max is greater than 1,
|
479
|
-
* an exception of type
|
480
|
-
* Gecode::Int::NotZeroOne is thrown.
|
481
|
-
*/
|
482
|
-
GECODE_INT_EXPORT BoolVar(Space* home, int min, int max);
|
483
|
-
/**
|
484
|
-
* \brief Initialize Boolean variable with range domain
|
485
|
-
*
|
486
|
-
* The variable is created with a domain ranging from \a min
|
487
|
-
* to \a max. The following exceptions might be thrown:
|
488
|
-
* - If \a min is greater than \a max, an exception of type
|
489
|
-
* Gecode::Int::VariableEmptyDomain is thrown.
|
490
|
-
* - If \a min is less than 0 or \a max is greater than 1,
|
491
|
-
* an exception of type
|
492
|
-
* Gecode::Int::NotZerOne is thrown.
|
493
|
-
*/
|
494
|
-
GECODE_INT_EXPORT void init(Space* home, int min, int max);
|
495
|
-
//@}
|
496
|
-
|
497
|
-
/// \name Value access
|
498
|
-
//@{
|
499
|
-
/// Return minimum of domain
|
500
|
-
int min(void) const;
|
501
|
-
/// Return maximum of domain
|
502
|
-
int max(void) const;
|
503
|
-
/// Return median of domain
|
504
|
-
int med(void) const;
|
505
|
-
/// Return assigned value (only if assigned)
|
506
|
-
int val(void) const;
|
507
|
-
|
508
|
-
/// Return size (cardinality) of domain
|
509
|
-
unsigned int size(void) const;
|
510
|
-
/// Return width of domain (distance between maximum and minimum)
|
511
|
-
unsigned int width(void) const;
|
512
|
-
//@}
|
513
|
-
|
514
|
-
/// \name Domain tests
|
515
|
-
//@{
|
516
|
-
/// Test whether domain is a range
|
517
|
-
bool range(void) const;
|
518
|
-
/// Test whether view is assigned
|
519
|
-
bool assigned(void) const;
|
520
|
-
|
521
|
-
/// Test whether \a n is contained in domain
|
522
|
-
bool in(int n) const;
|
523
|
-
//@}
|
524
|
-
|
525
|
-
/// \name Boolean domain tests
|
526
|
-
//@{
|
527
|
-
/// Test whether domain is zero
|
528
|
-
bool zero(void) const;
|
529
|
-
/// Test whether domain is one
|
530
|
-
bool one(void) const;
|
531
|
-
/// Test whether domain is neither zero nor one
|
532
|
-
bool none(void) const;
|
533
|
-
//@}
|
534
|
-
|
535
|
-
/// \name Cloning
|
536
|
-
//@{
|
537
|
-
/// Update this variable to be a clone of variable \a x
|
538
|
-
void update(Space* home, bool share, BoolVar& x);
|
539
|
-
//@}
|
540
|
-
|
541
|
-
};
|
542
|
-
|
543
|
-
}
|
544
|
-
|
545
|
-
/**
|
546
|
-
* \brief Print integer variable \a x
|
547
|
-
* \relates Gecode::IntVar
|
548
|
-
*/
|
549
|
-
std::ostream&
|
550
|
-
operator<<(std::ostream&, const Gecode::IntVar& x);
|
551
|
-
/**
|
552
|
-
* \brief Print Boolean variable \a x
|
553
|
-
* \relates Gecode::BoolVar
|
554
|
-
*/
|
555
|
-
std::ostream&
|
556
|
-
operator<<(std::ostream&, const Gecode::BoolVar& x);
|
557
|
-
|
558
|
-
#include "gecode/int/view.icc"
|
559
|
-
#include "gecode/int/propagator.icc"
|
560
|
-
|
561
|
-
namespace Gecode {
|
562
|
-
|
563
|
-
/**
|
564
|
-
* \defgroup TaskModelIntArgs Argument arrays
|
565
|
-
*
|
566
|
-
* Argument arrays are just good enough for passing arguments
|
567
|
-
* with automatic memory management.
|
568
|
-
* \ingroup TaskModelInt
|
569
|
-
*/
|
570
|
-
|
571
|
-
//@{
|
572
|
-
/// Passing integer arguments
|
573
|
-
typedef PrimArgArray<int> IntArgs;
|
574
|
-
/// Passing integer variables
|
575
|
-
typedef VarArgArray<IntVar> IntVarArgs;
|
576
|
-
/// Passing Boolean variables
|
577
|
-
typedef VarArgArray<BoolVar> BoolVarArgs;
|
578
|
-
/// Passing set arguments
|
579
|
-
typedef PrimArgArray<IntSet> IntSetArgs;
|
580
|
-
//@}
|
581
|
-
|
582
|
-
/**
|
583
|
-
* \defgroup TaskModelIntVarArrays Variable arrays
|
584
|
-
*
|
585
|
-
* Variable arrays can store variables. They are typically used
|
586
|
-
* for storing the variables being part of a solution (script). However,
|
587
|
-
* they can also be used for temporary purposes (even though
|
588
|
-
* memory is not reclaimed until the space it is created for
|
589
|
-
* is deleted).
|
590
|
-
* \ingroup TaskModelInt
|
591
|
-
*/
|
592
|
-
|
593
|
-
/**
|
594
|
-
* \brief Integer variable array
|
595
|
-
* \ingroup TaskModelIntVarArrays
|
596
|
-
*/
|
597
|
-
class IntVarArray : public VarArray<IntVar> {
|
598
|
-
public:
|
599
|
-
/// \name Creation and initialization
|
600
|
-
//@{
|
601
|
-
/// Default constructor (array of size 0)
|
602
|
-
IntVarArray(void);
|
603
|
-
/// Allocate array for \a n integer variables (variables are uninitialized)
|
604
|
-
IntVarArray(Space* home, int n);
|
605
|
-
/// Initialize from integer variable array \a a (share elements)
|
606
|
-
IntVarArray(const IntVarArray& a);
|
607
|
-
/**
|
608
|
-
* \brief Initialize array with \a n new variables
|
609
|
-
*
|
610
|
-
* The variables are created with a domain ranging from \a min
|
611
|
-
* to \a max. The following execptions might be thrown:
|
612
|
-
* - If \a min is greater than \a max, an exception of type
|
613
|
-
* Gecode::Int::VariableEmptyDomain is thrown.
|
614
|
-
* - If \a min or \a max exceed the limits for integers as defined
|
615
|
-
* in Gecode::Int::Limits, an exception of type
|
616
|
-
* Gecode::Int::OutOfLimits is thrown.
|
617
|
-
*/
|
618
|
-
GECODE_INT_EXPORT
|
619
|
-
IntVarArray(Space* home, int n, int min, int max);
|
620
|
-
/**
|
621
|
-
* \brief Initialize array with \a n new variables
|
622
|
-
*
|
623
|
-
* The variables are created with a domain described by \a s.
|
624
|
-
* The following execptions might be thrown:
|
625
|
-
* - If \a s is empty, an exception of type
|
626
|
-
* Gecode::Int::VariableEmptyDomain is thrown.
|
627
|
-
* - If \a s contains values that exceed the limits for integers
|
628
|
-
* as defined in Gecode::Int::Limits, an exception of type
|
629
|
-
* Gecode::Int::OutOfLimits is thrown.
|
630
|
-
*/
|
631
|
-
GECODE_INT_EXPORT
|
632
|
-
IntVarArray(Space* home, int n, const IntSet& s);
|
633
|
-
//@}
|
634
|
-
};
|
635
|
-
|
636
|
-
/**
|
637
|
-
* \brief Boolean variable array
|
638
|
-
* \ingroup TaskModelIntVarArrays
|
639
|
-
*/
|
640
|
-
class BoolVarArray : public VarArray<BoolVar> {
|
641
|
-
public:
|
642
|
-
/// \name Creation and initialization
|
643
|
-
//@{
|
644
|
-
/// Default constructor (array of size 0)
|
645
|
-
BoolVarArray(void);
|
646
|
-
/// Allocate array for \a n Boolean variables (variables are uninitialized)
|
647
|
-
BoolVarArray(Space* home, int n);
|
648
|
-
/// Initialize from Boolean variable array \a a (share elements)
|
649
|
-
BoolVarArray(const BoolVarArray& a);
|
650
|
-
/**
|
651
|
-
* \brief Initialize array with \a n new variables
|
652
|
-
*
|
653
|
-
* The variables are created with a domain ranging from \a min
|
654
|
-
* to \a max. The following execptions might be thrown:
|
655
|
-
* - If \a min is greater than \a max, an exception of type
|
656
|
-
* Gecode::Int::VariableEmptyDomain is thrown.
|
657
|
-
* - If \a min is less than 0 or \a max is greater than 1,
|
658
|
-
* an exception of type
|
659
|
-
* Gecode::Int::NotZeroOne is thrown.
|
660
|
-
*/
|
661
|
-
GECODE_INT_EXPORT
|
662
|
-
BoolVarArray(Space* home, int n, int min, int max);
|
663
|
-
//@}
|
664
|
-
};
|
665
|
-
|
666
|
-
}
|
667
|
-
|
668
|
-
#include "gecode/int/array.icc"
|
669
|
-
|
670
|
-
namespace Gecode {
|
671
|
-
|
672
|
-
/**
|
673
|
-
* \brief Relation types for integers
|
674
|
-
* \ingroup TaskModelInt
|
675
|
-
*/
|
676
|
-
enum IntRelType {
|
677
|
-
IRT_EQ, ///< Equality (\f$=\f$)
|
678
|
-
IRT_NQ, ///< Disequality (\f$\neq\f$)
|
679
|
-
IRT_LQ, ///< Less or equal (\f$\leq\f$)
|
680
|
-
IRT_LE, ///< Less (\f$<\f$)
|
681
|
-
IRT_GQ, ///< Greater or equal (\f$\geq\f$)
|
682
|
-
IRT_GR ///< Greater (\f$>\f$)
|
683
|
-
};
|
684
|
-
|
685
|
-
/**
|
686
|
-
* \brief Operation types for Booleans
|
687
|
-
* \ingroup TaskModelInt
|
688
|
-
*/
|
689
|
-
enum BoolOpType {
|
690
|
-
BOT_AND, ///< Conjunction
|
691
|
-
BOT_OR, ///< Disjunction
|
692
|
-
BOT_IMP, ///< Implication
|
693
|
-
BOT_EQV, ///< Equivalence
|
694
|
-
BOT_XOR ///< Exclusive or
|
695
|
-
};
|
696
|
-
|
697
|
-
/**
|
698
|
-
* \brief Consistency levels for integer propagators
|
699
|
-
*
|
700
|
-
* The descriptions are meant to be suggestions. It is not
|
701
|
-
* required that a propagator achieves full domain-consistency or
|
702
|
-
* full bounds-consistency. It is more like: which level
|
703
|
-
* of consistency comes closest.
|
704
|
-
*
|
705
|
-
* If in the description of a constraint below no consistency level
|
706
|
-
* is mentioned, the propagator for the constraint implements
|
707
|
-
* domain-consistency.
|
708
|
-
* \ingroup TaskModelInt
|
709
|
-
*/
|
710
|
-
enum IntConLevel {
|
711
|
-
ICL_VAL, ///< Value consistency (naive)
|
712
|
-
ICL_BND, ///< Bounds consistency
|
713
|
-
ICL_DOM, ///< Domain consistency
|
714
|
-
ICL_DEF ///< The default consistency for a constraint
|
715
|
-
};
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
/**
|
720
|
-
* \defgroup TaskModelIntDomain Domain constraints
|
721
|
-
* \ingroup TaskModelInt
|
722
|
-
*
|
723
|
-
*/
|
724
|
-
|
725
|
-
//@{
|
726
|
-
/// Propagates \f$ l\leq x\leq m\f$
|
727
|
-
GECODE_INT_EXPORT void
|
728
|
-
dom(Space* home, IntVar x, int l, int m,
|
729
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
730
|
-
/// Propagates \f$ l\leq x_i\leq m\f$ for all \f$0\leq i<|x|\f$
|
731
|
-
GECODE_INT_EXPORT void
|
732
|
-
dom(Space* home, const IntVarArgs& x, int l, int m,
|
733
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
734
|
-
|
735
|
-
/// Propagates \f$ x\in s \f$
|
736
|
-
GECODE_INT_EXPORT void
|
737
|
-
dom(Space* home, IntVar x, const IntSet& s,
|
738
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
739
|
-
/// Propagates \f$ x_i\in s\f$ for all \f$0\leq i<|x|\f$
|
740
|
-
GECODE_INT_EXPORT void
|
741
|
-
dom(Space* home, const IntVarArgs& x, const IntSet& s,
|
742
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
743
|
-
|
744
|
-
/// Post propagator for \f$ (l\leq x \leq m) \Leftrightarrow b\f$
|
745
|
-
GECODE_INT_EXPORT void
|
746
|
-
dom(Space* home, IntVar x, int l, int m, BoolVar b,
|
747
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
748
|
-
/// Post propagator for \f$ (x \in s) \Leftrightarrow b\f$
|
749
|
-
GECODE_INT_EXPORT void
|
750
|
-
dom(Space* home, IntVar x, const IntSet& s, BoolVar b,
|
751
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
752
|
-
//@}
|
753
|
-
|
754
|
-
|
755
|
-
/**
|
756
|
-
* \defgroup TaskModelIntRelInt Simple relation constraints over integer variables
|
757
|
-
* \ingroup TaskModelInt
|
758
|
-
*/
|
759
|
-
//@{
|
760
|
-
/** \brief Post propagator for \f$ x_0 \sim_r x_1\f$
|
761
|
-
*
|
762
|
-
* Supports both bounds (\a icl = ICL_BND) and
|
763
|
-
* domain-consistency (\a icl = ICL_DOM, default).
|
764
|
-
*/
|
765
|
-
GECODE_INT_EXPORT void
|
766
|
-
rel(Space* home, IntVar x0, IntRelType r, IntVar x1,
|
767
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
768
|
-
/** \brief Post propagators for \f$ x_i \sim_r y \f$ for all \f$0\leq i<|x|\f$
|
769
|
-
*
|
770
|
-
* Supports both bounds (\a icl = ICL_BND) and
|
771
|
-
* domain-consistency (\a icl = ICL_DOM, default).
|
772
|
-
*/
|
773
|
-
GECODE_INT_EXPORT void
|
774
|
-
rel(Space* home, const IntVarArgs& x, IntRelType r, IntVar y,
|
775
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
776
|
-
/// Propagates \f$ x \sim_r c\f$
|
777
|
-
GECODE_INT_EXPORT void
|
778
|
-
rel(Space* home, IntVar x, IntRelType r, int c,
|
779
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
780
|
-
/// Propagates \f$ x_i \sim_r c \f$ for all \f$0\leq i<|x|\f$
|
781
|
-
GECODE_INT_EXPORT void
|
782
|
-
rel(Space* home, const IntVarArgs& x, IntRelType r, int c,
|
783
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
784
|
-
/** \brief Post propagator for \f$ (x_0 \sim_r x_1)\Leftrightarrow b\f$
|
785
|
-
*
|
786
|
-
* Supports both bounds (\a icl = ICL_BND) and
|
787
|
-
* domain-consistency (\a icl = ICL_DOM, default).
|
788
|
-
*/
|
789
|
-
GECODE_INT_EXPORT void
|
790
|
-
rel(Space* home, IntVar x0, IntRelType r, IntVar x1, BoolVar b,
|
791
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
792
|
-
/** \brief Post propagator for \f$(x \sim_r c)\Leftrightarrow b\f$
|
793
|
-
*
|
794
|
-
* Supports both bounds (\a icl = ICL_BND) and
|
795
|
-
* domain-consistency (\a icl = ICL_DOM, default).
|
796
|
-
*/
|
797
|
-
GECODE_INT_EXPORT void
|
798
|
-
rel(Space* home, IntVar x, IntRelType r, int c, BoolVar b,
|
799
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
800
|
-
/** \brief Post propagator for pairwise relation on \a x.
|
801
|
-
*
|
802
|
-
* States that the elements of \a x are in the following relation:
|
803
|
-
* - if \a r = IRT_EQ, then all elements of \a x must be equal.
|
804
|
-
* Supports both bounds (\a icl = ICL_BND) and
|
805
|
-
* domain-consistency (\a icl = ICL_DOM, default).
|
806
|
-
* - if \a r = IRT_LE, \a r = IRT_LQ, \a r = IRT_GR, or \a r = IRT_GQ,
|
807
|
-
* then the elements of \a x are ordered with respt to \a r.
|
808
|
-
* Supports domain-consistency (\a icl = ICL_DOM, default).
|
809
|
-
* - if \a r = IRT_NQ, then all elements of \a x must be pairwise
|
810
|
-
* distinct (corresponds to the distinct constraint).
|
811
|
-
* Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
812
|
-
* and domain-consistency (\a icl = ICL_DOM).
|
813
|
-
* Throws an exception of type Int::ArgumentSame, if \a x contains
|
814
|
-
* the same unassigned variable multiply.
|
815
|
-
*
|
816
|
-
*/
|
817
|
-
GECODE_INT_EXPORT void
|
818
|
-
rel(Space* home, const IntVarArgs& x, IntRelType r,
|
819
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
820
|
-
/** \brief Post propagator for relation between \a x and \a y.
|
821
|
-
*
|
822
|
-
* Note that for the inequality relations this corresponds to
|
823
|
-
* the lexical order between \a x and \a y.
|
824
|
-
*
|
825
|
-
* Supports both bounds (\a icl = ICL_BND) and
|
826
|
-
* domain-consistency (\a icl = ICL_DOM, default).
|
827
|
-
*
|
828
|
-
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
829
|
-
* \a x and \a y are of different size.
|
830
|
-
*/
|
831
|
-
GECODE_INT_EXPORT void
|
832
|
-
rel(Space* home, const IntVarArgs& x, IntRelType r, const IntVarArgs& y,
|
833
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
834
|
-
//@}
|
835
|
-
|
836
|
-
|
837
|
-
/**
|
838
|
-
* \defgroup TaskModelIntRelBool Simple relation constraints over Boolean variables
|
839
|
-
* \ingroup TaskModelInt
|
840
|
-
*/
|
841
|
-
//@{
|
842
|
-
/// Post propagator for \f$ x_0 \sim_r x_1\f$
|
843
|
-
GECODE_INT_EXPORT void
|
844
|
-
rel(Space* home, BoolVar x0, IntRelType r, BoolVar x1,
|
845
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
846
|
-
/// Post propagator for \f$ x_i \sim_r y \f$ for all \f$0\leq i<|x|\f$
|
847
|
-
GECODE_INT_EXPORT void
|
848
|
-
rel(Space* home, const BoolVarArgs& x, IntRelType r, BoolVar y,
|
849
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
850
|
-
/**
|
851
|
-
* \brief Propagates \f$ x \sim_r n\f$
|
852
|
-
*
|
853
|
-
* Throws an exception of type Int::NotZeroOne, if \a n is neither
|
854
|
-
* 0 or 1.
|
855
|
-
*/
|
856
|
-
GECODE_INT_EXPORT void
|
857
|
-
rel(Space* home, BoolVar x, IntRelType r, int n,
|
858
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
859
|
-
/**
|
860
|
-
* \brief Propagates \f$ x_i \sim_r n \f$ for all \f$0\leq i<|x|\f$
|
861
|
-
*
|
862
|
-
* Throws an exception of type Int::NotZeroOne, if \a n is neither
|
863
|
-
* 0 or 1.
|
864
|
-
*/
|
865
|
-
GECODE_INT_EXPORT void
|
866
|
-
rel(Space* home, const BoolVarArgs& x, IntRelType r, int n,
|
867
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
868
|
-
/** \brief Post propagator for relation between \a x and \a y.
|
869
|
-
*
|
870
|
-
* Note that for the inequality relations this corresponds to
|
871
|
-
* the lexical order between \a x and \a y.
|
872
|
-
*
|
873
|
-
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
874
|
-
* \a x and \a y are of different size.
|
875
|
-
*/
|
876
|
-
GECODE_INT_EXPORT void
|
877
|
-
rel(Space* home, const BoolVarArgs& x, IntRelType r, const BoolVarArgs& y,
|
878
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
879
|
-
/** \brief Post propagator for pairwise relation on \a x.
|
880
|
-
*
|
881
|
-
* States that the elements of \a x are in the following relation:
|
882
|
-
* - if \a r = IRT_EQ, then all elements of \a x must be equal.
|
883
|
-
* - if \a r = IRT_LE, \a r = IRT_LQ, \a r = IRT_GR, or \a r = IRT_GQ,
|
884
|
-
* then the elements of \a x are ordered with respt to \a r.
|
885
|
-
* - if \a r = IRT_NQ, then all elements of \a x must be pairwise
|
886
|
-
* distinct (corresponds to the distinct constraint).
|
887
|
-
*
|
888
|
-
*/
|
889
|
-
GECODE_INT_EXPORT void
|
890
|
-
rel(Space* home, const BoolVarArgs& x, IntRelType r,
|
891
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
892
|
-
/** \brief Post propagator for Boolean operation on \a x0 and \a x1
|
893
|
-
*
|
894
|
-
* Posts propagator for \f$ x_0 \diamond_{\mathit{o}} x_1 = x_2\f$
|
895
|
-
*/
|
896
|
-
GECODE_INT_EXPORT void
|
897
|
-
rel(Space* home, BoolVar x0, BoolOpType o, BoolVar x1, BoolVar x2,
|
898
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
899
|
-
/** \brief Post propagator for Boolean operation on \a x0 and \a x1
|
900
|
-
*
|
901
|
-
* Posts propagator for \f$ x_0 \diamond_{\mathit{o}} x_1 = n\f$
|
902
|
-
*
|
903
|
-
* Throws an exception of type Int::NotZeroOne, if \a n is neither
|
904
|
-
* 0 or 1.
|
905
|
-
*/
|
906
|
-
GECODE_INT_EXPORT void
|
907
|
-
rel(Space* home, BoolVar x0, BoolOpType o, BoolVar x1, int n,
|
908
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
909
|
-
/** \brief Post propagator for Boolean operation on \a x
|
910
|
-
*
|
911
|
-
* Posts propagator for \f$ x_0 \diamond_{\mathit{o}} \cdots
|
912
|
-
* \diamond_{\mathit{op}} x_{|x|-1}= y\f$
|
913
|
-
*
|
914
|
-
* Throws an exception of type Int::TooFewArguments, if \f$|x|<2\f$
|
915
|
-
* and \a o is BOT_IMP, BOT_EQV, or BOT_XOR.
|
916
|
-
*/
|
917
|
-
GECODE_INT_EXPORT void
|
918
|
-
rel(Space* home, BoolOpType o, const BoolVarArgs& x, BoolVar y,
|
919
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
920
|
-
/** \brief Post propagator for Boolean operation on \a x
|
921
|
-
*
|
922
|
-
* Posts propagator for \f$ x_0 \diamond_{\mathit{o}} \cdots
|
923
|
-
* \diamond_{\mathit{op}} x_{|x|-1}= n\f$
|
924
|
-
*
|
925
|
-
* Throws an exception of type Int::NotZeroOne, if \a n is neither
|
926
|
-
* 0 or 1.
|
927
|
-
*
|
928
|
-
* Throws an exception of type Int::TooFewArguments, if \f$|x|<2\f$
|
929
|
-
* and \a o is BOT_IMP, BOT_EQV, or BOT_XOR.
|
930
|
-
*/
|
931
|
-
GECODE_INT_EXPORT void
|
932
|
-
rel(Space* home, BoolOpType o, const BoolVarArgs& x, int n,
|
933
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
934
|
-
//@}
|
935
|
-
|
936
|
-
|
937
|
-
/**
|
938
|
-
* \defgroup TaskModelIntElement Element constraints
|
939
|
-
* \ingroup TaskModelInt
|
940
|
-
*/
|
941
|
-
|
942
|
-
//@{
|
943
|
-
/** \brief Post propagator for \f$ n_{x_0}=x_1\f$
|
944
|
-
*
|
945
|
-
* Throws an exception of type Int::OutOfLimits, if
|
946
|
-
* the integers in \a n exceed the limits in Int::Limits.
|
947
|
-
*/
|
948
|
-
GECODE_INT_EXPORT void
|
949
|
-
element(Space* home, const IntArgs& n, IntVar x0, IntVar x1,
|
950
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
951
|
-
/** \brief Post propagator for \f$ n_{x_0}=x_1\f$
|
952
|
-
*
|
953
|
-
* Throws an exception of type Int::OutOfLimits, if
|
954
|
-
* the integers in \a n exceed the limits in Int::Limits.
|
955
|
-
*/
|
956
|
-
GECODE_INT_EXPORT void
|
957
|
-
element(Space* home, const IntArgs& n, IntVar x0, BoolVar x1,
|
958
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
959
|
-
/** \brief Post propagator for \f$ n_{x_0}=x_1\f$
|
960
|
-
*
|
961
|
-
* Throws an exception of type Int::OutOfLimits, if
|
962
|
-
* the integers in \a n exceed the limits in Int::Limits.
|
963
|
-
*/
|
964
|
-
GECODE_INT_EXPORT void
|
965
|
-
element(Space* home, const IntArgs& n, IntVar x0, int x1,
|
966
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
967
|
-
/** \brief Post propagator for \f$ x_{y_0}=y_1\f$
|
968
|
-
*
|
969
|
-
* Supports both bounds (\a icl = ICL_BND) and
|
970
|
-
* domain-consistency (\a icl = ICL_DOM, default).
|
971
|
-
*/
|
972
|
-
GECODE_INT_EXPORT void
|
973
|
-
element(Space* home, const IntVarArgs& x, IntVar y0, IntVar y1,
|
974
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
975
|
-
/** \brief Post propagator for \f$ x_{y_0}=y_1\f$
|
976
|
-
*
|
977
|
-
* Supports both bounds (\a icl = ICL_BND) and
|
978
|
-
* domain-consistency (\a icl = ICL_DOM, default).
|
979
|
-
*/
|
980
|
-
GECODE_INT_EXPORT void
|
981
|
-
element(Space* home, const IntVarArgs& x, IntVar y0, int y1,
|
982
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
983
|
-
/// Post propagator for \f$ x_{y_0}=y_1\f$
|
984
|
-
GECODE_INT_EXPORT void
|
985
|
-
element(Space* home, const BoolVarArgs& x, IntVar y0, BoolVar y1,
|
986
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
987
|
-
/// Post propagator for \f$ x_{y_0}=y_1\f$
|
988
|
-
GECODE_INT_EXPORT void
|
989
|
-
element(Space* home, const BoolVarArgs& x, IntVar y0, int y1,
|
990
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
991
|
-
//@}
|
992
|
-
|
993
|
-
|
994
|
-
/**
|
995
|
-
* \defgroup TaskModelIntDistinct Distinct constraints
|
996
|
-
* \ingroup TaskModelInt
|
997
|
-
*/
|
998
|
-
|
999
|
-
//@{
|
1000
|
-
/** \brief Post propagator for \f$ x_i\neq x_j\f$ for all \f$0\leq i\neq j<|x|\f$
|
1001
|
-
*
|
1002
|
-
* Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
1003
|
-
* and domain-consistency (\a icl = ICL_DOM).
|
1004
|
-
*
|
1005
|
-
* Throws an exception of type Int::ArgumentSame, if \a x contains
|
1006
|
-
* the same unassigned variable multiply.
|
1007
|
-
*/
|
1008
|
-
GECODE_INT_EXPORT void
|
1009
|
-
distinct(Space* home, const IntVarArgs& x,
|
1010
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1011
|
-
/** \brief Post propagator for \f$ x_i+n_i\neq x_j+n_j\f$ for all \f$0\leq i\neq j<|x|\f$
|
1012
|
-
*
|
1013
|
-
* \li Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
1014
|
-
* and domain-consistency (\a icl = ICL_DOM).
|
1015
|
-
* \li Throws an exception of type Int::OutOfLimits, if
|
1016
|
-
* the integers in \a n exceed the limits in Int::Limits
|
1017
|
-
* or if the sum of \a n and \a x exceed the limits.
|
1018
|
-
* \li Throws an exception of type Int::ArgumentSizeMismatch, if
|
1019
|
-
* \a x and \a n are of different size.
|
1020
|
-
* \li Throws an exception of type Int::ArgumentSame, if \a x contains
|
1021
|
-
* the same unassigned variable multiply.
|
1022
|
-
*/
|
1023
|
-
GECODE_INT_EXPORT void
|
1024
|
-
distinct(Space* home, const IntArgs& n, const IntVarArgs& x,
|
1025
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1026
|
-
//@}
|
1027
|
-
|
1028
|
-
|
1029
|
-
/**
|
1030
|
-
* \defgroup TaskModelIntChannel Channel constraints
|
1031
|
-
* \ingroup TaskModelInt
|
1032
|
-
*/
|
1033
|
-
|
1034
|
-
//@{
|
1035
|
-
/** \brief Post propagator for \f$ x_i = j\leftrightarrow y_j=i\f$ for all \f$0\leq i<|x|\f$
|
1036
|
-
*
|
1037
|
-
* \li Supports domain (\a icl = ICL_DOM) and value propagation (all other
|
1038
|
-
* values for \a icl).
|
1039
|
-
* \li Throws an exception of type Int::ArgumentSizeMismatch, if
|
1040
|
-
* \a x and \a y are of different size.
|
1041
|
-
* \li Throws an exception of type Int::ArgumentSame, if \a x or
|
1042
|
-
* \a y contain the same unassigned variable multiply. Note that a
|
1043
|
-
* variable can occur in both \a x and \a y, but not more than
|
1044
|
-
* once in either \a x or \a y.
|
1045
|
-
*/
|
1046
|
-
GECODE_INT_EXPORT void
|
1047
|
-
channel(Space* home, const IntVarArgs& x, const IntVarArgs& y,
|
1048
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1049
|
-
|
1050
|
-
/// Post propagator for channeling a Boolean and an integer variable \f$ x_0 = x_1\f$
|
1051
|
-
GECODE_INT_EXPORT void
|
1052
|
-
channel(Space* home, BoolVar x0, IntVar x1,
|
1053
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1054
|
-
/// Post propagator for channeling an integer and a Boolean variable \f$ x_0 = x_1\f$
|
1055
|
-
forceinline void
|
1056
|
-
channel(Space* home, IntVar x0, BoolVar x1,
|
1057
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF) {
|
1058
|
-
channel(home,x1,x0,icl,pk);
|
1059
|
-
}
|
1060
|
-
/** \brief Post propagator for channeling Boolean and integer variables \f$ x_i = 1\leftrightarrow y=i+o\f$
|
1061
|
-
*
|
1062
|
-
* Throws an exception of type Int::ArgumentSame, if \a x
|
1063
|
-
* contains the same unassigned variable multiply.
|
1064
|
-
*/
|
1065
|
-
GECODE_INT_EXPORT void
|
1066
|
-
channel(Space* home, const BoolVarArgs& x, IntVar y, int o=0,
|
1067
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1068
|
-
//@}
|
1069
|
-
|
1070
|
-
|
1071
|
-
/**
|
1072
|
-
* \defgroup TaskModelIntGraph Graph constraints
|
1073
|
-
* \ingroup TaskModelInt
|
1074
|
-
*/
|
1075
|
-
|
1076
|
-
//@{
|
1077
|
-
/** \brief Post propagator such that \a x forms a circuit
|
1078
|
-
*
|
1079
|
-
* \a x forms a circuit if the graph with edges \f$i\to j\f$ where
|
1080
|
-
* \f$x_i=j\f$ has a single cycle covering all nodes.
|
1081
|
-
*
|
1082
|
-
* Supports domain (\a icl = ICL_DOM) and value propagation (all
|
1083
|
-
* other values for \a icl), where this refers to whether value or
|
1084
|
-
* domain-consistent distinct in enforced on \a x.
|
1085
|
-
*
|
1086
|
-
* Throws an exception of type Int::ArgumentSame, if \a x
|
1087
|
-
* contains the same unassigned variable multiply.
|
1088
|
-
*/
|
1089
|
-
GECODE_INT_EXPORT void
|
1090
|
-
circuit(Space* home, const IntVarArgs& x,
|
1091
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1092
|
-
//@}
|
1093
|
-
|
1094
|
-
|
1095
|
-
/**
|
1096
|
-
* \defgroup TaskModelIntScheduling Scheduling constraints
|
1097
|
-
* \ingroup TaskModelInt
|
1098
|
-
*/
|
1099
|
-
//@{
|
1100
|
-
/**
|
1101
|
-
* \brief Post propagators for the cumulatives constraint.
|
1102
|
-
*
|
1103
|
-
* This function creates propagators for the cumulatives constraint
|
1104
|
-
* presented in <em> "A new multi-resource cumulatives constraint
|
1105
|
-
* with negative heights"</em>, Nicolas Beldiceanu and Mats
|
1106
|
-
* Carlsson, Principles and Practice of Constraint Programming 2002.
|
1107
|
-
*
|
1108
|
-
* The constraint models a set of machines and a set of tasks that
|
1109
|
-
* should be assigned to the machines. The machines have a positive
|
1110
|
-
* resource limit and the tasks each have a resource usage that can
|
1111
|
-
* be either positive, negative, or zero. The constraint is enforced
|
1112
|
-
* over each point in time for a machine where there is at least one
|
1113
|
-
* task assigned.
|
1114
|
-
*
|
1115
|
-
* The limit for a machine is either the maximum amount available at
|
1116
|
-
* any given time (\a at_most = true), or else the least amount to
|
1117
|
-
* be used (\a at_most = false).
|
1118
|
-
*
|
1119
|
-
* \param machine \f$ machine_i \f$ is the machine assigned to task \f$ i \f$
|
1120
|
-
* \param start \f$ start_i \f$ is the start date assigned to task \f$ i \f$
|
1121
|
-
* \param duration \f$ duration_i \f$ is the duration of task \f$ i \f$
|
1122
|
-
* \param end \f$ end_i \f$ is the end date assigned to task \f$ i \f$
|
1123
|
-
* \param height \f$ height_i \f$ is the height is the amount of
|
1124
|
-
* resources consumed by task \f$ i \f$
|
1125
|
-
* \param limit \f$ limit_r \f$ is the amount of resource available
|
1126
|
-
* for machine \f$ r \f$
|
1127
|
-
* \param at_most \a at_most tells if the amount of resources used
|
1128
|
-
* for a machine should be less than the limit (\a at_most
|
1129
|
-
* = true) or greater than the limit (\a at_most = false)
|
1130
|
-
* \param icl Supports value-consistency only (\a icl = ICL_VAL, default).
|
1131
|
-
*
|
1132
|
-
* \exception Int::ArgumentSizeMismatch thrown if the sizes of the arguments
|
1133
|
-
* representing tasks does not match.
|
1134
|
-
* \exception Int::OutOfLimits thrown if any numerical argument is
|
1135
|
-
* larger than Int::Limits::max or less than
|
1136
|
-
* Int::Limits::min.
|
1137
|
-
*/
|
1138
|
-
GECODE_INT_EXPORT void
|
1139
|
-
cumulatives(Space* home, const IntVarArgs& machine,
|
1140
|
-
const IntVarArgs& start, const IntVarArgs& duration,
|
1141
|
-
const IntVarArgs& end, const IntVarArgs& height,
|
1142
|
-
const IntArgs& limit, bool at_most,
|
1143
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1144
|
-
/** \brief Post propagators for the cumulatives constraint.
|
1145
|
-
*
|
1146
|
-
* \copydoc cumulatives()
|
1147
|
-
*/
|
1148
|
-
GECODE_INT_EXPORT void
|
1149
|
-
cumulatives(Space* home, const IntArgs& machine,
|
1150
|
-
const IntVarArgs& start, const IntVarArgs& duration,
|
1151
|
-
const IntVarArgs& end, const IntVarArgs& height,
|
1152
|
-
const IntArgs& limit, bool at_most,
|
1153
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1154
|
-
/** \brief Post propagators for the cumulatives constraint.
|
1155
|
-
*
|
1156
|
-
* \copydoc cumulatives()
|
1157
|
-
*/
|
1158
|
-
GECODE_INT_EXPORT void
|
1159
|
-
cumulatives(Space* home, const IntVarArgs& machine,
|
1160
|
-
const IntVarArgs& start, const IntArgs& duration,
|
1161
|
-
const IntVarArgs& end, const IntVarArgs& height,
|
1162
|
-
const IntArgs& limit, bool at_most,
|
1163
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1164
|
-
/** \brief Post propagators for the cumulatives constraint.
|
1165
|
-
*
|
1166
|
-
* \copydoc cumulatives()
|
1167
|
-
*/
|
1168
|
-
GECODE_INT_EXPORT void
|
1169
|
-
cumulatives(Space* home, const IntArgs& machine,
|
1170
|
-
const IntVarArgs& start, const IntArgs& duration,
|
1171
|
-
const IntVarArgs& end, const IntVarArgs& height,
|
1172
|
-
const IntArgs& limit, bool at_most,
|
1173
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1174
|
-
/** \brief Post propagators for the cumulatives constraint.
|
1175
|
-
*
|
1176
|
-
* \copydoc cumulatives()
|
1177
|
-
*/
|
1178
|
-
GECODE_INT_EXPORT void
|
1179
|
-
cumulatives(Space* home, const IntVarArgs& machine,
|
1180
|
-
const IntVarArgs& start, const IntVarArgs& duration,
|
1181
|
-
const IntVarArgs& end, const IntArgs& height,
|
1182
|
-
const IntArgs& limit, bool at_most,
|
1183
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1184
|
-
/** \brief Post propagators for the cumulatives constraint.
|
1185
|
-
*
|
1186
|
-
* \copydoc cumulatives()
|
1187
|
-
*/
|
1188
|
-
GECODE_INT_EXPORT void
|
1189
|
-
cumulatives(Space* home, const IntArgs& machine,
|
1190
|
-
const IntVarArgs& start, const IntVarArgs& duration,
|
1191
|
-
const IntVarArgs& end, const IntArgs& height,
|
1192
|
-
const IntArgs& limit, bool at_most,
|
1193
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1194
|
-
/** \brief Post propagators for the cumulatives constraint.
|
1195
|
-
*
|
1196
|
-
* \copydoc cumulatives()
|
1197
|
-
*/
|
1198
|
-
GECODE_INT_EXPORT void
|
1199
|
-
cumulatives(Space* home, const IntVarArgs& machine,
|
1200
|
-
const IntVarArgs& start, const IntArgs& duration,
|
1201
|
-
const IntVarArgs& end, const IntArgs& height,
|
1202
|
-
const IntArgs& limit, bool at_most,
|
1203
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1204
|
-
/** \brief Post propagators for the cumulatives constraint.
|
1205
|
-
*
|
1206
|
-
* \copydoc cumulatives()
|
1207
|
-
*/
|
1208
|
-
GECODE_INT_EXPORT void
|
1209
|
-
cumulatives(Space* home, const IntArgs& machine,
|
1210
|
-
const IntVarArgs& start, const IntArgs& duration,
|
1211
|
-
const IntVarArgs& end, const IntArgs& height,
|
1212
|
-
const IntArgs& limit, bool at_most,
|
1213
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1214
|
-
//@}
|
1215
|
-
|
1216
|
-
|
1217
|
-
/**
|
1218
|
-
* \defgroup TaskModelIntSorted Sorted constraints
|
1219
|
-
*
|
1220
|
-
* All sorted constraints support bounds-consistency.
|
1221
|
-
*
|
1222
|
-
* \ingroup TaskModelInt
|
1223
|
-
*/
|
1224
|
-
//@{
|
1225
|
-
/**
|
1226
|
-
* \brief Post propagator that \a y is \a x sorted in increasing order
|
1227
|
-
*
|
1228
|
-
* Might throw the following exceptions:
|
1229
|
-
* - Int::ArgumentSizeMismatch, if \a x and \a y differ in size.
|
1230
|
-
* - Int::ArgumentSame, if \a x or \a y contain
|
1231
|
-
* shared unassigned variables.
|
1232
|
-
*/
|
1233
|
-
GECODE_INT_EXPORT void
|
1234
|
-
sorted(Space* home, const IntVarArgs& x, const IntVarArgs& y,
|
1235
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1236
|
-
|
1237
|
-
/**
|
1238
|
-
* \brief Post propagator that \a y is \a x sorted in increasing order
|
1239
|
-
*
|
1240
|
-
* The values in \a z describe the sorting permutation, that is
|
1241
|
-
* \f$\forall i\in\{0,\dots,|x|-1\}: x_i=y_{z_i} \f$.
|
1242
|
-
*
|
1243
|
-
* Might throw the following exceptions:
|
1244
|
-
* - Int::ArgumentSizeMismatch, if \a x and \a y differ in size.
|
1245
|
-
* - Int::ArgumentSame, if \a x or \a y contain
|
1246
|
-
* shared unassigned variables.
|
1247
|
-
*/
|
1248
|
-
GECODE_INT_EXPORT void
|
1249
|
-
sorted(Space*, const IntVarArgs& x, const IntVarArgs& y,
|
1250
|
-
const IntVarArgs& z,
|
1251
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1252
|
-
//@}
|
1253
|
-
|
1254
|
-
|
1255
|
-
/**
|
1256
|
-
* \defgroup TaskModelIntCard Cardinality constraints
|
1257
|
-
* \ingroup TaskModelInt
|
1258
|
-
*
|
1259
|
-
* \note
|
1260
|
-
* Domain consistency on the extended cardinality variables of
|
1261
|
-
* the Global Cardinality Propagator is only obtained if they are bounds
|
1262
|
-
* consistent, otherwise the problem of enforcing domain consistency
|
1263
|
-
* on the cardinality variables is NP-complete as proved by
|
1264
|
-
* \ref CardVarNPCompl "Qumiper et. al. in
|
1265
|
-
* Improved Algorithms for the Global Cardinality Constraint"
|
1266
|
-
*/
|
1267
|
-
|
1268
|
-
//@{
|
1269
|
-
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}\sim_r m\f$
|
1270
|
-
*
|
1271
|
-
* Supports domain-consistent propagation only.
|
1272
|
-
*/
|
1273
|
-
GECODE_INT_EXPORT void
|
1274
|
-
count(Space* home, const IntVarArgs& x, int n, IntRelType r, int m,
|
1275
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1276
|
-
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}\sim_r m\f$
|
1277
|
-
*
|
1278
|
-
* Supports domain-consistent propagation only.
|
1279
|
-
*/
|
1280
|
-
GECODE_INT_EXPORT void
|
1281
|
-
count(Space* home, const IntVarArgs& x, IntVar y, IntRelType r, int m,
|
1282
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1283
|
-
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y_i\}\sim_r m\f$
|
1284
|
-
*
|
1285
|
-
* Supports domain-consistent propagation only.
|
1286
|
-
*
|
1287
|
-
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
1288
|
-
* \a x and \a y are of different size.
|
1289
|
-
*/
|
1290
|
-
GECODE_INT_EXPORT void
|
1291
|
-
count(Space* home, const IntVarArgs& x, const IntArgs& y, IntRelType r, int m,
|
1292
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1293
|
-
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}\sim_r z\f$
|
1294
|
-
*
|
1295
|
-
* Supports domain-consistent propagation only.
|
1296
|
-
*/
|
1297
|
-
GECODE_INT_EXPORT void
|
1298
|
-
count(Space* home, const IntVarArgs& x, int n, IntRelType r, IntVar z,
|
1299
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1300
|
-
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}\sim_r z\f$
|
1301
|
-
*
|
1302
|
-
* Supports domain-consistent propagation only.
|
1303
|
-
*/
|
1304
|
-
GECODE_INT_EXPORT void
|
1305
|
-
count(Space* home, const IntVarArgs& x, IntVar y, IntRelType r, IntVar z,
|
1306
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1307
|
-
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y_i\}\sim_r z\f$
|
1308
|
-
*
|
1309
|
-
* Supports domain-consistent propagation only.
|
1310
|
-
*
|
1311
|
-
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
1312
|
-
* \a x and \a y are of different size.
|
1313
|
-
*/
|
1314
|
-
GECODE_INT_EXPORT void
|
1315
|
-
count(Space* home, const IntVarArgs& x, const IntArgs& y, IntRelType r, IntVar z,
|
1316
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1317
|
-
|
1318
|
-
/** \brief Posts a global count (cardinality) constraint
|
1319
|
-
*
|
1320
|
-
* Posts the constraint that
|
1321
|
-
* \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=j\}=c_j\f$ and
|
1322
|
-
* \f$ \bigcup_i \{x_i\} \subseteq \{0,\ldots,|c|-1\}\f$
|
1323
|
-
* (no other value occurs).
|
1324
|
-
*
|
1325
|
-
* Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
1326
|
-
* and domain-consistency (\a icl = ICL_DOM).
|
1327
|
-
*
|
1328
|
-
* Throws an exception of type Int::ArgumentSame, if \a x contains
|
1329
|
-
* the same unassigned variable multiply.
|
1330
|
-
*/
|
1331
|
-
GECODE_INT_EXPORT void
|
1332
|
-
count(Space* home, const IntVarArgs& x, const IntVarArgs& c,
|
1333
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1334
|
-
|
1335
|
-
/** \brief Posts a global count (cardinality) constraint
|
1336
|
-
*
|
1337
|
-
* Posts the constraint that
|
1338
|
-
* \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=j\}\in c_j\f$ and
|
1339
|
-
* \f$ \bigcup_i \{x_i\} \subseteq \{0,\ldots,|c|-1\}\f$
|
1340
|
-
* (no other value occurs).
|
1341
|
-
*
|
1342
|
-
* Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
1343
|
-
* and domain-consistency (\a icl = ICL_DOM).
|
1344
|
-
*
|
1345
|
-
* Throws an exception of type Int::ArgumentSame, if \a x contains
|
1346
|
-
* the same unassigned variable multiply.
|
1347
|
-
*/
|
1348
|
-
GECODE_INT_EXPORT void
|
1349
|
-
count(Space* home, const IntVarArgs& x, const IntSetArgs& c,
|
1350
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1351
|
-
|
1352
|
-
/** \brief Posts a global count (cardinality) constraint
|
1353
|
-
*
|
1354
|
-
* Posts the constraint that
|
1355
|
-
* \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=v_j\}=c_j\f$ and
|
1356
|
-
* \f$ \bigcup_i \{x_i\} \subseteq \bigcup_j \{v_j\}\f$
|
1357
|
-
* (no other value occurs).
|
1358
|
-
*
|
1359
|
-
* Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
1360
|
-
* and domain-consistency (\a icl = ICL_DOM).
|
1361
|
-
*
|
1362
|
-
* Throws an exception of type Int::ArgumentSame, if \a x contains
|
1363
|
-
* the same unassigned variable multiply.
|
1364
|
-
*
|
1365
|
-
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
1366
|
-
* \a cards and \a values are of different size.
|
1367
|
-
*/
|
1368
|
-
GECODE_INT_EXPORT void
|
1369
|
-
count(Space* home, const IntVarArgs& x,
|
1370
|
-
const IntVarArgs& c, const IntArgs& v,
|
1371
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1372
|
-
|
1373
|
-
/** \brief Posts a global count (cardinality) constraint
|
1374
|
-
*
|
1375
|
-
* Posts the constraint that
|
1376
|
-
* \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=v_j\}\in c_j\f$ and
|
1377
|
-
* \f$ \bigcup_i \{x_i\} \subseteq \bigcup_j \{v_j\}\f$
|
1378
|
-
* (no other value occurs).
|
1379
|
-
*
|
1380
|
-
* Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
1381
|
-
* and domain-consistency (\a icl = ICL_DOM).
|
1382
|
-
*
|
1383
|
-
* Throws an exception of type Int::ArgumentSame, if \a x contains
|
1384
|
-
* the same unassigned variable multiply.
|
1385
|
-
*
|
1386
|
-
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
1387
|
-
* \a cards and \a values are of different size.
|
1388
|
-
*/
|
1389
|
-
GECODE_INT_EXPORT void
|
1390
|
-
count(Space* home, const IntVarArgs& x,
|
1391
|
-
const IntSetArgs& c, const IntArgs& v,
|
1392
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1393
|
-
|
1394
|
-
/** \brief Posts a global count (cardinality) constraint
|
1395
|
-
*
|
1396
|
-
* Posts the constraint that
|
1397
|
-
* \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=v_j\}\in c\f$ and
|
1398
|
-
* \f$ \bigcup_i \{x_i\} \subseteq \bigcup_j \{v_j\}\f$
|
1399
|
-
* (no other value occurs).
|
1400
|
-
*
|
1401
|
-
* Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
1402
|
-
* and domain-consistency (\a icl = ICL_DOM).
|
1403
|
-
*
|
1404
|
-
* Throws an exception of type Int::ArgumentSame, if \a x contains
|
1405
|
-
* the same unassigned variable multiply.
|
1406
|
-
*
|
1407
|
-
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
1408
|
-
* \a cards and \a values are of different size.
|
1409
|
-
*/
|
1410
|
-
GECODE_INT_EXPORT void
|
1411
|
-
count(Space* home, const IntVarArgs& x,
|
1412
|
-
const IntSet& c, const IntArgs& v,
|
1413
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1414
|
-
|
1415
|
-
//@}
|
1416
|
-
|
1417
|
-
/**
|
1418
|
-
* \defgroup TaskModelIntExt Extensional constraints
|
1419
|
-
* \ingroup TaskModelInt
|
1420
|
-
*
|
1421
|
-
* Extensional constraints support different ways of how the
|
1422
|
-
* extensionally defined relation between the variables is defined.
|
1423
|
-
* Examples include specification by a %DFA or a table.
|
1424
|
-
*
|
1425
|
-
* A %DFA can be defined by a regular expression, for regular expressions
|
1426
|
-
* see the module MiniModel.
|
1427
|
-
*/
|
1428
|
-
//@{
|
1429
|
-
|
1430
|
-
/**
|
1431
|
-
* \brief Deterministic finite automaton (%DFA)
|
1432
|
-
*
|
1433
|
-
* After initialization, the start state is always zero.
|
1434
|
-
* The final states are contiguous ranging from the first to the
|
1435
|
-
* last final state.
|
1436
|
-
*/
|
1437
|
-
class DFA : public SharedHandle {
|
1438
|
-
private:
|
1439
|
-
/// Implementation of DFA
|
1440
|
-
class DFAI;
|
1441
|
-
public:
|
1442
|
-
/// Specification of a %DFA transition
|
1443
|
-
class Transition {
|
1444
|
-
public:
|
1445
|
-
int i_state; ///< input state
|
1446
|
-
int symbol; ///< symbol
|
1447
|
-
int o_state; ///< output state
|
1448
|
-
};
|
1449
|
-
/// Iterator for %DFA transitions (sorted by symbols)
|
1450
|
-
class Transitions {
|
1451
|
-
private:
|
1452
|
-
/// Current transition
|
1453
|
-
const Transition* c_trans;
|
1454
|
-
/// End of transitions
|
1455
|
-
const Transition* e_trans;
|
1456
|
-
public:
|
1457
|
-
/// Initialize to all transitions of DFA \a d
|
1458
|
-
Transitions(const DFA& d);
|
1459
|
-
/// Initialize to transitions of DFA \a d for symbol \a n
|
1460
|
-
Transitions(const DFA& d, int n);
|
1461
|
-
/// Test whether iterator still at a transition
|
1462
|
-
bool operator()(void) const;
|
1463
|
-
/// Move iterator to next transition
|
1464
|
-
void operator++(void);
|
1465
|
-
/// Return in-state of current transition
|
1466
|
-
int i_state(void) const;
|
1467
|
-
/// Return symbol of current transition
|
1468
|
-
int symbol(void) const;
|
1469
|
-
/// Return out-state of current transition
|
1470
|
-
int o_state(void) const;
|
1471
|
-
};
|
1472
|
-
/// Iterator for %DFA symbols
|
1473
|
-
class Symbols {
|
1474
|
-
private:
|
1475
|
-
/// Current transition
|
1476
|
-
const Transition* c_trans;
|
1477
|
-
/// End of transitions
|
1478
|
-
const Transition* e_trans;
|
1479
|
-
public:
|
1480
|
-
/// Initialize to symbols of DFA \a d
|
1481
|
-
Symbols(const DFA& d);
|
1482
|
-
/// Test whether iterator still at a symbol
|
1483
|
-
bool operator()(void) const;
|
1484
|
-
/// Move iterator to next symbol
|
1485
|
-
void operator++(void);
|
1486
|
-
/// Return current symbol
|
1487
|
-
int val(void) const;
|
1488
|
-
};
|
1489
|
-
public:
|
1490
|
-
friend class Transitions;
|
1491
|
-
/// Initialize for DFA accepting the empty word
|
1492
|
-
DFA(void);
|
1493
|
-
/**
|
1494
|
-
* \brief Initialize DFA
|
1495
|
-
*
|
1496
|
-
* - Start state is given by \a s.
|
1497
|
-
* - %Transitions are described by \a t, where the last element
|
1498
|
-
* must have -1 as value for \c i_state.
|
1499
|
-
* - Final states are given by \a f, where the last final element
|
1500
|
-
* must be -1.
|
1501
|
-
* - Minimizes the DFA, if \a minimize is true.
|
1502
|
-
* - Note that the transitions must be deterministic.
|
1503
|
-
*/
|
1504
|
-
GECODE_INT_EXPORT
|
1505
|
-
DFA(int s, Transition t[], int f[], bool minimize=true);
|
1506
|
-
/// Initialize by DFA \a d (DFA is shared)
|
1507
|
-
DFA(const DFA& d);
|
1508
|
-
/// Return the number of states
|
1509
|
-
unsigned int n_states(void) const;
|
1510
|
-
/// Return the number of symbols
|
1511
|
-
unsigned int n_symbols(void) const;
|
1512
|
-
/// Return the number of transitions
|
1513
|
-
unsigned int n_transitions(void) const;
|
1514
|
-
/// Return the number of the first final state
|
1515
|
-
int final_fst(void) const;
|
1516
|
-
/// Return the number of the last final state
|
1517
|
-
int final_lst(void) const;
|
1518
|
-
/// Return smallest symbol in DFA
|
1519
|
-
int symbol_min(void) const;
|
1520
|
-
/// Return largest symbol in DFA
|
1521
|
-
int symbol_max(void) const;
|
1522
|
-
|
1523
|
-
/// Initialize DFA from reflection specification
|
1524
|
-
GECODE_INT_EXPORT DFA(Reflection::VarMap& vm, Reflection::Arg* arg);
|
1525
|
-
/// Create reflection specification for the DFA
|
1526
|
-
GECODE_INT_EXPORT Reflection::Arg* spec(Reflection::VarMap& vm) const;
|
1527
|
-
};
|
1528
|
-
|
1529
|
-
/**
|
1530
|
-
* \brief Post propagator for extensional constraint described by a DFA
|
1531
|
-
*
|
1532
|
-
* The elements of \a x must be a word of the language described by
|
1533
|
-
* the DFA \a d.
|
1534
|
-
*
|
1535
|
-
* Throws an exception of type Int::ArgumentSame, if \a x contains
|
1536
|
-
* the same unassigned variable multiply. If shared occurences of variables
|
1537
|
-
* are required, unshare should be used.
|
1538
|
-
*/
|
1539
|
-
GECODE_INT_EXPORT void
|
1540
|
-
extensional(Space* home, const IntVarArgs& x, DFA d,
|
1541
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1542
|
-
|
1543
|
-
/**
|
1544
|
-
* \brief Post propagator for extensional constraint described by a DFA
|
1545
|
-
*
|
1546
|
-
* The elements of \a x must be a word of the language described by
|
1547
|
-
* the DFA \a d.
|
1548
|
-
*
|
1549
|
-
* Throws an exception of type Int::ArgumentSame, if \a x contains
|
1550
|
-
* the same unassigned variable multiply. If shared occurences of variables
|
1551
|
-
* are required, unshare should be used.
|
1552
|
-
*/
|
1553
|
-
GECODE_INT_EXPORT void
|
1554
|
-
extensional(Space* home, const BoolVarArgs& x, DFA d,
|
1555
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1556
|
-
|
1557
|
-
/** \brief Class represeting a set of tuples.
|
1558
|
-
*
|
1559
|
-
* A TupleSet is used for storing an extensional representation of a
|
1560
|
-
* constraint. After a TupleSet is finalized, no more tuples may be
|
1561
|
-
* added to it.
|
1562
|
-
*/
|
1563
|
-
class TupleSet : public SharedHandle {
|
1564
|
-
public:
|
1565
|
-
/** \brief Type of a tuple
|
1566
|
-
*
|
1567
|
-
* The arity of the tuple is left implicit.
|
1568
|
-
*/
|
1569
|
-
typedef int* Tuple;
|
1570
|
-
|
1571
|
-
/// Class for table data
|
1572
|
-
class TupleSetI;
|
1573
|
-
/// Get implementation
|
1574
|
-
TupleSetI* implementation(void);
|
1575
|
-
|
1576
|
-
/// Construct empty tuple
|
1577
|
-
TupleSet(void);
|
1578
|
-
/// Initialize by TupleSet \a d (tuple set is shared)
|
1579
|
-
TupleSet(const TupleSet& d);
|
1580
|
-
|
1581
|
-
/// Add tuple to tuple set
|
1582
|
-
void add(const IntArgs& tuple);
|
1583
|
-
/// Finalize tuple set
|
1584
|
-
void finalize(void);
|
1585
|
-
/// Is tuple set finalized
|
1586
|
-
bool finalized(void) const;
|
1587
|
-
/// Arity of tuple set
|
1588
|
-
int arity(void) const;
|
1589
|
-
/// Number of tuples
|
1590
|
-
int tuples(void) const;
|
1591
|
-
/// Get tuple i
|
1592
|
-
Tuple operator[](int i) const;
|
1593
|
-
/// Minimum domain size
|
1594
|
-
int min(void) const;
|
1595
|
-
/// Maximum domain size
|
1596
|
-
int max(void) const;
|
1597
|
-
|
1598
|
-
/// Initialize TupleSet from reflection specification
|
1599
|
-
GECODE_INT_EXPORT TupleSet(Reflection::VarMap& vm, Reflection::Arg* arg);
|
1600
|
-
/// Create reflection specification for the TupleSet
|
1601
|
-
GECODE_INT_EXPORT Reflection::Arg* spec(Reflection::VarMap& vm) const;
|
1602
|
-
};
|
1603
|
-
|
1604
|
-
/** \brief Post propagator for \f$x\in T\f$.
|
1605
|
-
*
|
1606
|
-
* \li Supports implementations optimized for memory (\a pk = \a
|
1607
|
-
* PK_MEMORY, default) and speed (\a pk = \a PK_SPEED).
|
1608
|
-
* \li Supports domain-consistency (\a icl = ICL_DOM, default) only.
|
1609
|
-
* \li Throws an exception of type Int::ArgumentSizeMismatch, if
|
1610
|
-
* \a x and \a t are of different size.
|
1611
|
-
*
|
1612
|
-
* \warning If the domains for the \f$x_i\f$ are not dense and
|
1613
|
-
* have similar bounds, lots of memory will be wasted (memory
|
1614
|
-
* consumption is in \f$
|
1615
|
-
* O\left(|x|\cdot\min_i(\underline{x_i})\cdot\max_i(\overline{x_i})\right)\f$
|
1616
|
-
* for the basic algorithm (\a pk = \a PK_MEMORY) and additionally \f$
|
1617
|
-
* O\left(|x|^2\cdot\min_i(\underline{x_i})\cdot\max_i(\overline{x_i})\right)\f$
|
1618
|
-
* for the incremental algorithm (\a pk = \a PK_SPEED).
|
1619
|
-
*/
|
1620
|
-
GECODE_INT_EXPORT void
|
1621
|
-
extensional(Space* home, const IntVarArgs& x, const TupleSet& t,
|
1622
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1623
|
-
|
1624
|
-
/** \brief Post propagator for \f$x\in T\f$.
|
1625
|
-
*
|
1626
|
-
* \li Supports implementations optimized for memory (\a pk = \a
|
1627
|
-
* PK_MEMORY, default) and speed (\a pk = \a PK_SPEED).
|
1628
|
-
* \li Supports domain-consistency (\a icl = ICL_DOM, default) only.
|
1629
|
-
* \li Throws an exception of type Int::ArgumentSizeMismatch, if
|
1630
|
-
* \a x and \a t are of different size.
|
1631
|
-
*/
|
1632
|
-
GECODE_INT_EXPORT void
|
1633
|
-
extensional(Space* home, const BoolVarArgs& x, const TupleSet& t,
|
1634
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1635
|
-
//@}
|
1636
|
-
}
|
1637
|
-
|
1638
|
-
#include "gecode/int/extensional/dfa.icc"
|
1639
|
-
#include "gecode/int/extensional/tuple-set.icc"
|
1640
|
-
|
1641
|
-
namespace Gecode {
|
1642
|
-
|
1643
|
-
/**
|
1644
|
-
* \defgroup TaskModelIntArith Arithmetic constraints
|
1645
|
-
* \ingroup TaskModelInt
|
1646
|
-
*/
|
1647
|
-
|
1648
|
-
//@{
|
1649
|
-
/** \brief Post propagator for \f$ \min\{x_0,x_1\}=x_2\f$
|
1650
|
-
*
|
1651
|
-
* Only bounds-consistency is supported.
|
1652
|
-
*/
|
1653
|
-
GECODE_INT_EXPORT void
|
1654
|
-
min(Space* home, IntVar x0, IntVar x1, IntVar x2,
|
1655
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1656
|
-
/** \brief Post propagator for \f$ \min x=y\f$
|
1657
|
-
*
|
1658
|
-
* Only bounds-consistency is supported.
|
1659
|
-
*/
|
1660
|
-
GECODE_INT_EXPORT void
|
1661
|
-
min(Space* home, const IntVarArgs& x, IntVar y,
|
1662
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1663
|
-
/** \brief Post propagator for \f$ \max\{x_0,x_1\}=x_2\f$
|
1664
|
-
*
|
1665
|
-
* Only bounds-consistency is supported. If \a x is empty,
|
1666
|
-
* an exception of type Int::TooFewArguments is thrown.
|
1667
|
-
*/
|
1668
|
-
GECODE_INT_EXPORT void
|
1669
|
-
max(Space* home, IntVar x0, IntVar x1, IntVar x2,
|
1670
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1671
|
-
/** \brief Post propagator for \f$ \max x=y\f$
|
1672
|
-
*
|
1673
|
-
* Only bounds-consistency is supported. If \a x is empty,
|
1674
|
-
* an exception of type Int::TooFewArguments is thrown.
|
1675
|
-
*/
|
1676
|
-
GECODE_INT_EXPORT void
|
1677
|
-
max(Space* home, const IntVarArgs& x, IntVar y,
|
1678
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1679
|
-
|
1680
|
-
/** \brief Post propagator for \f$ |x_0|=x_1\f$
|
1681
|
-
*
|
1682
|
-
* Only bounds-consistency is supported.
|
1683
|
-
*/
|
1684
|
-
GECODE_INT_EXPORT void
|
1685
|
-
abs(Space* home, IntVar x0, IntVar x1,
|
1686
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1687
|
-
|
1688
|
-
/** \brief Post propagator for \f$x_0\cdot x_1=x_2\f$
|
1689
|
-
*
|
1690
|
-
* Only bounds-consistency is supported.
|
1691
|
-
*/
|
1692
|
-
GECODE_INT_EXPORT void
|
1693
|
-
mult(Space* home, IntVar x0, IntVar x1, IntVar x2,
|
1694
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1695
|
-
|
1696
|
-
/** \brief Post propagator for \f$x_0\cdot x_0=x_1\f$
|
1697
|
-
*
|
1698
|
-
* Only bounds-consistency is supported.
|
1699
|
-
*/
|
1700
|
-
GECODE_INT_EXPORT void
|
1701
|
-
sqr(Space* home, IntVar x0, IntVar x1,
|
1702
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1703
|
-
|
1704
|
-
/** \brief Post propagator for \f$\lfloor\sqrt{x_0}\rfloor=x_1\f$
|
1705
|
-
*
|
1706
|
-
* Only bounds-consistency is supported.
|
1707
|
-
*/
|
1708
|
-
GECODE_INT_EXPORT void
|
1709
|
-
sqrt(Space* home, IntVar x0, IntVar x1,
|
1710
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1711
|
-
//@}
|
1712
|
-
|
1713
|
-
/**
|
1714
|
-
* \defgroup TaskModelIntLinearInt Linear constraints over integer variables
|
1715
|
-
* \ingroup TaskModelInt
|
1716
|
-
*
|
1717
|
-
* All variants for linear constraints over integer variables share
|
1718
|
-
* the following properties:
|
1719
|
-
* - Bounds-consistency (over the real numbers) is supported for
|
1720
|
-
* all constraints (actually, for disequlities always domain-consistency
|
1721
|
-
* is used as it is cheaper). Domain-consistency is supported for all
|
1722
|
-
* non-reified constraint. As bounds-consistency for inequalities
|
1723
|
-
* coincides with domain-consistency, the only
|
1724
|
-
* real variation is for linear equations. Domain-consistent
|
1725
|
-
* linear equations have exponential complexity, so use with care!
|
1726
|
-
* - Variables occurring multiply in the argument arrays are replaced
|
1727
|
-
* by a single occurrence: for example, \f$ax+bx\f$ becomes
|
1728
|
-
* \f$(a+b)x\f$.
|
1729
|
-
* - If in the above simplification the value for \f$(a+b)\f$ (or for
|
1730
|
-
* \f$a\f$ and \f$b\f$) exceeds the limits for integers as
|
1731
|
-
* defined in Int::Limits, an exception of type
|
1732
|
-
* Int::OutOfLimits is thrown.
|
1733
|
-
* - Assume the constraint
|
1734
|
-
* \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\f$.
|
1735
|
-
* If \f$|c|+\sum_{i=0}^{|x|-1}a_i\cdot x_i\f$ exceeds the maximal
|
1736
|
-
* available precision (at least \f$2^{48}\f$), an exception of
|
1737
|
-
* type Int::OutOfLimits is thrown.
|
1738
|
-
* - In all other cases, the created propagators are accurate (that
|
1739
|
-
* is, they will not silently overflow during propagation).
|
1740
|
-
*/
|
1741
|
-
|
1742
|
-
//@{
|
1743
|
-
/// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i\sim_r c\f$
|
1744
|
-
GECODE_INT_EXPORT void
|
1745
|
-
linear(Space* home, const IntVarArgs& x,
|
1746
|
-
IntRelType r, int c,
|
1747
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1748
|
-
/// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i\sim_r y\f$
|
1749
|
-
GECODE_INT_EXPORT void
|
1750
|
-
linear(Space* home, const IntVarArgs& x,
|
1751
|
-
IntRelType r, IntVar y,
|
1752
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1753
|
-
/// Post propagator for \f$\left(\sum_{i=0}^{|x|-1}x_i\sim_r c\right)\Leftrightarrow b\f$
|
1754
|
-
GECODE_INT_EXPORT void
|
1755
|
-
linear(Space* home, const IntVarArgs& x,
|
1756
|
-
IntRelType r, int c, BoolVar b,
|
1757
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1758
|
-
/// Post propagator for \f$\left(\sum_{i=0}^{|x|-1}x_i\sim_r y\right)\Leftrightarrow b\f$
|
1759
|
-
GECODE_INT_EXPORT void
|
1760
|
-
linear(Space* home, const IntVarArgs& x,
|
1761
|
-
IntRelType r, IntVar y, BoolVar b,
|
1762
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1763
|
-
/** \brief Post propagator for \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\f$
|
1764
|
-
*
|
1765
|
-
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
1766
|
-
* \a a and \a x are of different size.
|
1767
|
-
*/
|
1768
|
-
GECODE_INT_EXPORT void
|
1769
|
-
linear(Space* home, const IntArgs& a, const IntVarArgs& x,
|
1770
|
-
IntRelType r, int c,
|
1771
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1772
|
-
/** \brief Post propagator for \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r y\f$
|
1773
|
-
*
|
1774
|
-
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
1775
|
-
* \a a and \a x are of different size.
|
1776
|
-
*/
|
1777
|
-
GECODE_INT_EXPORT void
|
1778
|
-
linear(Space* home, const IntArgs& a, const IntVarArgs& x,
|
1779
|
-
IntRelType r, IntVar y,
|
1780
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1781
|
-
/** \brief Post propagator for \f$\left(\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\right)\Leftrightarrow b\f$
|
1782
|
-
*
|
1783
|
-
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
1784
|
-
* \a a and \a x are of different size.
|
1785
|
-
*/
|
1786
|
-
GECODE_INT_EXPORT void
|
1787
|
-
linear(Space* home, const IntArgs& a, const IntVarArgs& x,
|
1788
|
-
IntRelType r, int c, BoolVar b,
|
1789
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1790
|
-
/** \brief Post propagator for \f$\left(\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r y\right)\Leftrightarrow b\f$
|
1791
|
-
*
|
1792
|
-
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
1793
|
-
* \a a and \a x are of different size.
|
1794
|
-
*/
|
1795
|
-
GECODE_INT_EXPORT void
|
1796
|
-
linear(Space* home, const IntArgs& a, const IntVarArgs& x,
|
1797
|
-
IntRelType r, IntVar y, BoolVar b,
|
1798
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1799
|
-
//@}
|
1800
|
-
|
1801
|
-
|
1802
|
-
/**
|
1803
|
-
* \defgroup TaskModelIntLinearBool Linear constraints over Boolean variables
|
1804
|
-
* \ingroup TaskModelInt
|
1805
|
-
*
|
1806
|
-
* All variants for linear constraints over Boolean variables share
|
1807
|
-
* the following properties:
|
1808
|
-
* - Bounds-consistency (over the real numbers) is supported for
|
1809
|
-
* all constraints (actually, for disequlities always domain-consistency
|
1810
|
-
* is used as it is cheaper).
|
1811
|
-
* - Variables occurring multiply in the argument arrays are replaced
|
1812
|
-
* by a single occurrence: for example, \f$ax+bx\f$ becomes
|
1813
|
-
* \f$(a+b)x\f$.
|
1814
|
-
* - If in the above simplification the value for \f$(a+b)\f$ (or for
|
1815
|
-
* \f$a\f$ and \f$b\f$) exceeds the limits for integers as
|
1816
|
-
* defined in Int::Limits, an exception of type
|
1817
|
-
* Int::OutOfLimits is thrown.
|
1818
|
-
* - Assume the constraint
|
1819
|
-
* \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\f$.
|
1820
|
-
* If \f$|c|+\sum_{i=0}^{|x|-1}a_i\cdot x_i\f$ exceeds the limits
|
1821
|
-
* for integers as defined in Int::Limits, an exception of
|
1822
|
-
* type Int::OutOfLimits is thrown.
|
1823
|
-
* - In all other cases, the created propagators are accurate (that
|
1824
|
-
* is, they will not silently overflow during propagation).
|
1825
|
-
*/
|
1826
|
-
//@{
|
1827
|
-
/// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i\sim_r c\f$
|
1828
|
-
GECODE_INT_EXPORT void
|
1829
|
-
linear(Space* home, const BoolVarArgs& x,
|
1830
|
-
IntRelType r, int c,
|
1831
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1832
|
-
/// Post propagator for \f$\left(\sum_{i=0}^{|x|-1}x_i\sim_r c\right)\Leftrightarrow b\f$
|
1833
|
-
GECODE_INT_EXPORT void
|
1834
|
-
linear(Space* home, const BoolVarArgs& x,
|
1835
|
-
IntRelType r, int c, BoolVar b,
|
1836
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1837
|
-
/// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i\sim_r y\f$
|
1838
|
-
GECODE_INT_EXPORT void
|
1839
|
-
linear(Space* home, const BoolVarArgs& x,
|
1840
|
-
IntRelType r, IntVar y,
|
1841
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1842
|
-
/// Post propagator for \f$\left(\sum_{i=0}^{|x|-1}x_i\sim_r y\right)\Leftrightarrow b\f$
|
1843
|
-
GECODE_INT_EXPORT void
|
1844
|
-
linear(Space* home, const BoolVarArgs& x,
|
1845
|
-
IntRelType r, IntVar y, BoolVar b,
|
1846
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1847
|
-
/** \brief Post propagator for \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\f$
|
1848
|
-
*
|
1849
|
-
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
1850
|
-
* \a a and \a x are of different size.
|
1851
|
-
*/
|
1852
|
-
GECODE_INT_EXPORT void
|
1853
|
-
linear(Space* home, const IntArgs& a, const BoolVarArgs& x,
|
1854
|
-
IntRelType r, int c,
|
1855
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1856
|
-
/** \brief Post propagator for \f$\left(\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\right)\Leftrightarrow b\f$
|
1857
|
-
*
|
1858
|
-
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
1859
|
-
* \a a and \a x are of different size.
|
1860
|
-
*/
|
1861
|
-
GECODE_INT_EXPORT void
|
1862
|
-
linear(Space* home, const IntArgs& a, const BoolVarArgs& x,
|
1863
|
-
IntRelType r, int c, BoolVar b,
|
1864
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1865
|
-
/** \brief Post propagator for \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r y\f$
|
1866
|
-
*
|
1867
|
-
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
1868
|
-
* \a a and \a x are of different size.
|
1869
|
-
*/
|
1870
|
-
GECODE_INT_EXPORT void
|
1871
|
-
linear(Space* home, const IntArgs& a, const BoolVarArgs& x,
|
1872
|
-
IntRelType r, IntVar y,
|
1873
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1874
|
-
/** \brief Post propagator for \f$\left(\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r y\f\right)\Leftrightarrow b$
|
1875
|
-
*
|
1876
|
-
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
1877
|
-
* \a a and \a x are of different size.
|
1878
|
-
*/
|
1879
|
-
GECODE_INT_EXPORT void
|
1880
|
-
linear(Space* home, const IntArgs& a, const BoolVarArgs& x,
|
1881
|
-
IntRelType r, IntVar y, BoolVar b,
|
1882
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1883
|
-
//@}
|
1884
|
-
|
1885
|
-
|
1886
|
-
/**
|
1887
|
-
* \defgroup TaskModelIntUnshare Unsharing variables
|
1888
|
-
*
|
1889
|
-
* Unsharing replaces multiple occurences of the same variable by
|
1890
|
-
* fresh yet equal (enforced through propagators for equality)
|
1891
|
-
* variables: after unsharing a variable appears at most once. Note
|
1892
|
-
* that this is only done for not yet assigned variables (as all
|
1893
|
-
* propagators can handle multiple occurences of the same variable
|
1894
|
-
* provided it is already assigned).
|
1895
|
-
*
|
1896
|
-
* Unsharing is useful for constraints that only accept variable
|
1897
|
-
* arrays without multiple occurences of the same variable, for
|
1898
|
-
* example extensional.
|
1899
|
-
*
|
1900
|
-
* \ingroup TaskModelInt
|
1901
|
-
*/
|
1902
|
-
//@{
|
1903
|
-
/**
|
1904
|
-
* \brief Replace multiple variable occurences in \a x by fresh variables
|
1905
|
-
*
|
1906
|
-
* Supports domain-consistency (\a icl = ICL_DOM, default) and
|
1907
|
-
* bounds-consistency (\a icl = ICL_BND).
|
1908
|
-
*
|
1909
|
-
*/
|
1910
|
-
GECODE_INT_EXPORT void
|
1911
|
-
unshare(Space* home, IntVarArgs& x,
|
1912
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1913
|
-
/// Replace multiple variable occurences in \a x by fresh variables
|
1914
|
-
GECODE_INT_EXPORT void
|
1915
|
-
unshare(Space* home, BoolVarArgs& x,
|
1916
|
-
IntConLevel icl=ICL_DEF, PropKind pk=PK_DEF);
|
1917
|
-
//@}
|
1918
|
-
|
1919
|
-
|
1920
|
-
/**
|
1921
|
-
* \defgroup TaskModelIntBranch Branching
|
1922
|
-
* \ingroup TaskModelInt
|
1923
|
-
*/
|
1924
|
-
|
1925
|
-
//@{
|
1926
|
-
/// Which variable to select for branching
|
1927
|
-
enum IntVarBranch {
|
1928
|
-
INT_VAR_NONE, ///< First unassigned
|
1929
|
-
INT_VAR_MIN_MIN, ///< With smallest min
|
1930
|
-
INT_VAR_MIN_MAX, ///< With largest min
|
1931
|
-
INT_VAR_MAX_MIN, ///< With smallest max
|
1932
|
-
INT_VAR_MAX_MAX, ///< With largest max
|
1933
|
-
INT_VAR_SIZE_MIN, ///< With smallest domain size
|
1934
|
-
INT_VAR_SIZE_MAX, ///< With largest domain size
|
1935
|
-
/** \brief With smallest degree
|
1936
|
-
*
|
1937
|
-
* The degree of a variable is defined as the number of dependant
|
1938
|
-
* propagators. In case of ties, choose the variable with smallest
|
1939
|
-
* domain.
|
1940
|
-
*/
|
1941
|
-
INT_VAR_DEGREE_MIN,
|
1942
|
-
/** \brief With largest degree
|
1943
|
-
*
|
1944
|
-
* The degree of a variable is defined as the number of dependant
|
1945
|
-
* propagators. In case of ties, choose the variable with smallest
|
1946
|
-
* domain.
|
1947
|
-
*/
|
1948
|
-
INT_VAR_DEGREE_MAX,
|
1949
|
-
INT_VAR_SIZE_DEGREE_MIN, ///< With smallest domain size divided by degree
|
1950
|
-
INT_VAR_SIZE_DEGREE_MAX, ///< With largest domain size divided by degree
|
1951
|
-
/** \brief With smallest min-regret
|
1952
|
-
*
|
1953
|
-
* The min-regret of a variable is the difference between the
|
1954
|
-
* smallest and second-smallest value still in the domain.
|
1955
|
-
*/
|
1956
|
-
INT_VAR_REGRET_MIN_MIN,
|
1957
|
-
/** \brief With largest min-regret
|
1958
|
-
*
|
1959
|
-
* The min-regret of a variable is the difference between the
|
1960
|
-
* smallest and second-smallest value still in the domain.
|
1961
|
-
*/
|
1962
|
-
INT_VAR_REGRET_MIN_MAX,
|
1963
|
-
/** \brief With smallest max-regret
|
1964
|
-
*
|
1965
|
-
* The max-regret of a variable is the difference between the
|
1966
|
-
* largest and second-largest value still in the domain.
|
1967
|
-
*/
|
1968
|
-
INT_VAR_REGRET_MAX_MIN,
|
1969
|
-
/** \brief With largest max-regret
|
1970
|
-
*
|
1971
|
-
* The max-regret of a variable is the difference between the
|
1972
|
-
* largest and second-largest value still in the domain.
|
1973
|
-
*/
|
1974
|
-
INT_VAR_REGRET_MAX_MAX
|
1975
|
-
};
|
1976
|
-
|
1977
|
-
/// Which values to select first for branching
|
1978
|
-
enum IntValBranch {
|
1979
|
-
INT_VAL_MIN, ///< Select smallest value
|
1980
|
-
INT_VAL_MED, ///< Select median value
|
1981
|
-
INT_VAL_MAX, ///< Select maximal value
|
1982
|
-
INT_VAL_SPLIT_MIN, ///< Select lower half of domain
|
1983
|
-
INT_VAL_SPLIT_MAX ///< Select upper half of domain
|
1984
|
-
};
|
1985
|
-
|
1986
|
-
/// Branch over \a x with variable selection \a vars and value selection \a vals
|
1987
|
-
GECODE_INT_EXPORT void
|
1988
|
-
branch(Space* home, const IntVarArgs& x,
|
1989
|
-
IntVarBranch vars, IntValBranch vals);
|
1990
|
-
/// Branch over \a x with variable selection \a vars and value selection \a vals
|
1991
|
-
GECODE_INT_EXPORT void
|
1992
|
-
branch(Space* home, const BoolVarArgs& x,
|
1993
|
-
IntVarBranch vars, IntValBranch vals);
|
1994
|
-
//@}
|
1995
|
-
|
1996
|
-
/**
|
1997
|
-
* \defgroup TaskModelIntAssign Assigning
|
1998
|
-
* \ingroup TaskModelInt
|
1999
|
-
*/
|
2000
|
-
//@{
|
2001
|
-
/// Which value to select for assignment
|
2002
|
-
enum IntAssign {
|
2003
|
-
INT_ASSIGN_MIN, ///< Select smallest value
|
2004
|
-
INT_ASSIGN_MED, ///< Select median value
|
2005
|
-
INT_ASSIGN_MAX ///< Select maximum value
|
2006
|
-
};
|
2007
|
-
|
2008
|
-
/// Assign all \a x with value selection \a vals
|
2009
|
-
GECODE_INT_EXPORT void
|
2010
|
-
assign(Space* home, const IntVarArgs& x, IntAssign vals);
|
2011
|
-
/// Assign all \a x with value selection \a vals
|
2012
|
-
GECODE_INT_EXPORT void
|
2013
|
-
assign(Space* home, const BoolVarArgs& x, IntAssign vals);
|
2014
|
-
|
2015
|
-
//@}
|
2016
|
-
|
2017
|
-
}
|
2018
|
-
|
2019
|
-
/** \relates Gecode::DFA
|
2020
|
-
* Print DFA \a d
|
2021
|
-
*/
|
2022
|
-
GECODE_INT_EXPORT std::ostream&
|
2023
|
-
operator<<(std::ostream&, const Gecode::DFA& d);
|
2024
|
-
|
2025
|
-
/** \relates Gecode::TupleSet
|
2026
|
-
* Print TupleSet \a ts
|
2027
|
-
*/
|
2028
|
-
GECODE_INT_EXPORT std::ostream&
|
2029
|
-
operator<<(std::ostream&, const Gecode::TupleSet& ts);
|
2030
|
-
|
2031
|
-
#endif
|
2032
|
-
|
2033
|
-
// IFDEF: GECODE_HAS_INT_VARS
|
2034
|
-
// STATISTICS: int-post
|
2035
|
-
|