dep-selector-libgecode 1.0.0.alpha.0
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.
- checksums.yaml +7 -0
- data/.gitignore +26 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +20 -0
- data/dep-selector-libgecode.gemspec +25 -0
- data/ext/libgecode3/Makefile +8 -0
- data/ext/libgecode3/extconf.rb +57 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/LICENSE +25 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.contribs +88 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.dep +11307 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.in +1795 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/changelog.in +6132 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/configure +13054 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/configure.ac +356 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/configure.ac.in +352 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/README +26 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/AbstractWorker.hh +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Doxyfile +263 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Makefile.in.in +162 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/OptVar.cc +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/OptVar.hh +124 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCOPPlus.cc +306 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCOPPlus.hh +166 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCSPPlusUnblockable.cc +239 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCSPPlusUnblockable.hh +140 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/README +6 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Strategy.cc +253 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Strategy.hh +112 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/StrategyNode.cc +59 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/StrategyNode.hh +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableBranching.hh +34 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableViewValBranching.cc +61 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableViewValBranching.hh +45 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Work.cc +48 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Work.hh +64 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkComparators.hh +67 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkManager.cc +376 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkManager.hh +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Worker.cc +285 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Worker.hh +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/clean +5 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/configure +2637 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/configure.ac +44 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myDom.cc +59 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myspace.cc +119 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myspace.hh +79 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qecode.hh +56 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_parallel.cc +41 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_parallel.hh +43 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcop.cc +268 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcop.hh +56 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcsp.cc +163 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcsp.hh +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_unblockable.cc +423 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_unblockable.hh +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/shortdesc.ac +1 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/vartype.hh +31 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/doxygen/doxygen.conf.in +1245 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/doxygen/doxygen.hh.in +594 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/all-interval.cpp +136 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/alpha.cpp +151 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/bacp.cpp +596 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/bibd.cpp +182 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/bin-packing.cpp +25363 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/black-hole.cpp +413 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/car-sequencing.cpp +653 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/crew.cpp +269 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/crossword.cpp +3954 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/crowded-chess.cpp +424 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/dominating-queens.cpp +170 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/domino.cpp +346 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/donald.cpp +135 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/efpa.cpp +323 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/eq20.cpp +128 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/golf.cpp +190 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/golomb-ruler.cpp +157 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/graph-color.cpp +425 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/grocery.cpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/hamming.cpp +144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/ind-set.cpp +144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/kakuro.cpp +627 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/knights.cpp +430 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/langford-number.cpp +218 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/magic-sequence.cpp +133 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/magic-square.cpp +141 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/minesweeper.cpp +311 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/money.cpp +132 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/nonogram.cpp +1215 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/open-shop.cpp +412 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/ortho-latin.cpp +183 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/partition.cpp +145 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/pentominoes.cpp +952 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/perfect-square.cpp +317 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/photo.cpp +166 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/queen-armies.cpp +335 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/queens.cpp +214 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/radiotherapy.cpp +943 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/sat.cpp +260 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/schurs-lemma.cpp +142 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/scowl.hpp +14149 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/sports-league.cpp +353 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/steel-mill.cpp +654 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/steiner.cpp +170 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/sudoku.cpp +2294 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/tsp.cpp +339 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/warehouses.cpp +185 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/word-square.cpp +168 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode.m4 +1272 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver.hh +602 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/options.cpp +435 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/options.hpp +418 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/script.cpp +104 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/script.hpp +388 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc.hh +417 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/CHANGES +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/ast.hh +492 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/conexpr.hh +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.cpp +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.hh +47 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.pro +51 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/test_myplugin.fzn +1 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/flatzinc.cpp +1056 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/lexer.lxx +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/lexer.yy.cpp +2458 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/all_different_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/all_equal_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/among.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_least_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_least_set.mzn +38 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_most_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_most_set.mzn +38 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing.mzn +44 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing_capa.mzn +45 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing_load.mzn +45 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/circuit.mzn +40 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/count.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/cumulative.mzn +53 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/decreasing_bool.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/decreasing_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/diffn.mzn +44 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/disjoint.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/distribute.mzn +46 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/exactly_int.mzn +40 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/exactly_set.mzn +38 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/gecode.mzn +98 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality.mzn +43 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_closed.mzn +39 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_low_up.mzn +40 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_low_up_closed.mzn +40 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/increasing_bool.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/increasing_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/int_set_channel.mzn +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/inverse.mzn +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/lex_less_int.mzn +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/lex_lesseq_int.mzn +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/link_set_to_booleans.mzn +47 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/maximum_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/member_bool.mzn +41 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/member_int.mzn +41 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/minimum_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/nvalue.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/partition_set.mzn +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/precedence.mzn +41 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/range.mzn +51 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/redefinitions.mzn +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/regular.mzn +38 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/roots.mzn +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/sort.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/sum_pred.mzn +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/table_bool.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/table_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/option.hh +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.hh +265 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.tab.cpp +3571 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.tab.hh +164 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.yxx +1604 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/plugin.hh +83 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/registry.cpp +1812 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/registry.hh +71 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/symboltable.hh +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/varspec.hh +163 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist.hh +298 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.cpp +288 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.hh +110 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gecodelogo.cpp +673 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gecodelogo.hh +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gist.cpp +120 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gist.hpp +207 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/layoutcursor.hh +69 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/layoutcursor.hpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/mainwindow.cpp +341 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/mainwindow.hh +129 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.cpp +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.hh +160 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.hpp +210 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodecursor.hh +215 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodecursor.hpp +271 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodestats.cpp +138 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodestats.hh +81 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodevisitor.hh +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodevisitor.hpp +126 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodewidget.cpp +90 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodewidget.hh +59 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/preferences.cpp +190 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/preferences.hh +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/qtgist.cpp +809 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/qtgist.hh +294 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.cpp +369 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.hh +221 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.hpp +191 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/standalone-example/mygist.cpp +80 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/standalone-example/standalone_example.pro +18 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/stopbrancher.cpp +90 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/stopbrancher.hh +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/textoutput.cpp +175 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/textoutput.hh +75 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/treecanvas.cpp +1430 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/treecanvas.hh +369 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.cpp +473 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.hh +237 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.hpp +220 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/zoomToFitIcon.hpp +114 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int.hh +3477 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic.cpp +185 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic.hh +666 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/abs.hpp +236 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/divmod.hpp +350 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/max.hpp +398 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/mult.hpp +750 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/sqr.hpp +377 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/sqrt.hpp +217 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array-traits.hpp +147 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array.cpp +113 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array.hpp +111 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing.cpp +71 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing.hh +184 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing/propagate.cpp +388 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing/propagate.hpp +219 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool.cpp +755 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool.hh +581 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/base.hpp +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/clause.hpp +353 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eq.hpp +196 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eqv.cpp +104 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eqv.hpp +202 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/lq.hpp +241 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/or.hpp +850 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch.cpp +152 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch.hh +607 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-val-bool.hpp +81 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-val-int.hpp +107 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-bool.bs +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-bool.cpp +438 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-int.bs +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-int.cpp +438 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-val.hpp +229 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-values.hpp +213 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-view.hpp +364 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel.cpp +172 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel.hh +249 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/base.hpp +78 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/dom.hpp +332 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-multi.cpp +241 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-multi.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-single.cpp +77 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-single.hpp +71 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/val.hpp +256 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit.cpp +229 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit.hh +160 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/base.hpp +270 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/dom.hpp +128 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/val.hpp +105 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count.cpp +417 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count.hh +410 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-base.hpp +80 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-eq.hpp +143 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-gq.hpp +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-lq.hpp +136 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/rel.hpp +281 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-base.hpp +131 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-eq.hpp +117 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-gq.hpp +109 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-lq.hpp +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative.cpp +432 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative.hh +745 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/basic.hpp +211 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/edge-finding.hpp +185 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/man-prop.hpp +127 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/opt-prop.hpp +171 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/overload.hpp +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/task-view.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/task.hpp +256 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/tree.hpp +272 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives.cpp +187 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives.hh +133 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives/val.hpp +380 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct.cpp +97 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct.hh +314 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/bnd.hpp +444 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/dom-ctrl.hpp +81 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/dom.hpp +123 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/graph.hpp +266 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/ter-dom.hpp +113 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/val.hpp +185 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom.cpp +135 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom.hh +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom/range.hpp +105 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom/spec.hpp +124 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element.cpp +190 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element.hh +384 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/int.hpp +443 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/pair.cpp +151 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/pair.hpp +74 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/view.hpp +559 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exception.hpp +196 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec.cpp +83 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec.hh +87 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec/when.cpp +77 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec/when.hpp +51 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional.cpp +124 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional.hh +508 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/base.hpp +163 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/basic.hpp +148 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/dfa.cpp +535 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/dfa.hpp +282 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/incremental.hpp +454 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/layered-graph.hpp +982 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/tuple-set.cpp +222 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/tuple-set.hpp +184 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc.cpp +172 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc.hh +268 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/bnd-sup.hpp +608 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/bnd.hpp +829 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/dom-sup.hpp +1777 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/dom.hpp +315 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/post.hpp +169 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/val.hpp +299 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/view.hpp +410 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set-1.hpp +249 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set-2.hpp +51 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set.cpp +167 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/limits.hpp +94 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear-bool.cpp +196 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear-int.cpp +194 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear.hh +1560 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-int.hpp +743 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-post.cpp +602 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-scale.hpp +695 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-view.hpp +319 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-bin.hpp +439 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-dom.hpp +484 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-nary.hpp +864 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-noview.hpp +251 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-post.cpp +561 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-ter.hpp +273 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/post.hpp +152 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member.cpp +85 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member.hh +125 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member/prop.hpp +175 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member/re-prop.hpp +178 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap.cpp +226 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap.hh +318 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/base.hpp +88 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/box.hpp +198 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/dim.hpp +197 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/man.hpp +119 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/opt.hpp +153 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues.cpp +244 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues.hh +429 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-base.hpp +98 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-eq.hpp +174 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-gq.hpp +149 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-lq.hpp +151 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/graph.hpp +283 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-base.hpp +347 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-eq.hpp +167 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-gq.hpp +130 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-lq.hpp +154 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/range-event.hpp +51 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/sym-bit-matrix.hpp +69 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede.cpp +73 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede.hh +113 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede/single.hpp +232 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/propagator.hpp +311 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel.cpp +381 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel.hh +665 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/eq.hpp +676 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/lex.hpp +414 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/lq-le.hpp +537 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/nq.hpp +196 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence.cpp +197 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence.hh +154 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/int.hpp +168 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/set-op.hpp +154 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/view.hpp +499 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/violations.hpp +101 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted.cpp +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted.hh +107 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/matching.hpp +173 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/narrowing.hpp +250 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/order.hpp +213 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/propagate.hpp +646 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/sortsup.hpp +564 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/support-values.hh +154 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/support-values.hpp +187 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task.hh +454 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/array.hpp +179 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/fwd-to-bwd.hpp +102 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/iter.hpp +92 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/man-to-opt.hpp +100 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/prop.hpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/purge.hpp +74 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/sort.hpp +234 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/tree.hpp +189 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary.cpp +258 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary.hh +839 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/detectable.hpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/edge-finding.hpp +78 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/man-prop.hpp +78 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/not-first-not-last.hpp +133 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/opt-prop.hpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/overload.hpp +93 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/subsumption.hpp +55 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/task-view.hpp +105 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/task.hpp +532 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/tree.hpp +229 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unshare.cpp +146 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/val-set.hh +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/val-set.hpp +186 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp.hpp +710 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.cpp +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.hpp +431 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.vis +75 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/delta.hpp +64 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.cpp +361 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.hpp +1029 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.vis +117 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/bool.cpp +53 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/bool.hpp +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/int.cpp +61 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/int.hpp +145 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/print.hpp +56 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph.hh +334 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/bi-link.hpp +89 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/comb-ptr-flag.hpp +78 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/edge.hpp +124 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/graph.hpp +202 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/iter-prune-val.hpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/node.hpp +171 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view.hpp +1690 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/bool-test.hpp +64 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/bool.hpp +314 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/cached.hpp +402 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/constint.hpp +324 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/int.hpp +264 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/iter.hpp +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/minus.hpp +300 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/neg-bool.hpp +177 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/offset.hpp +303 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/print.hpp +162 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/rel-test.hpp +231 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/scale.hpp +368 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/zero.hpp +305 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter.hh +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-add.hpp +144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-append.hpp +222 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-array.hpp +139 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-cache.hpp +106 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-compl.hpp +220 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-diff.hpp +142 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-empty.hpp +111 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-inter.hpp +309 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-list.hpp +263 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-map.hpp +260 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-minmax.hpp +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-minus.hpp +107 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-negative.hpp +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-offset.hpp +127 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-operations.hpp +157 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-positive.hpp +139 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-rangelist.hpp +115 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-scale.hpp +238 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-singleton-append.hpp +111 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-singleton.hpp +86 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-size.hpp +146 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-union.hpp +361 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-values.hpp +140 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-array.hpp +120 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-bitset.hpp +114 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-inter.hpp +130 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-list.hpp +186 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-map.hpp +136 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-minus.hpp +105 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-negative.hpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-offset.hpp +113 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-positive.hpp +123 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-ranges.hpp +106 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-singleton.hpp +109 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-union.hpp +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-unique.hpp +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel.hh +194 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/advisor.hpp +102 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/allocators.hpp +476 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/archive.cpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/archive.hpp +298 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/array.hpp +2133 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/branch.cpp +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/branch.hpp +254 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-tiebreak.hpp +615 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-val.hpp +126 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-view.hpp +455 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher.hpp +431 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/core.cpp +563 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/core.hpp +3668 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/exception.hpp +124 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/global-prop-info.hpp +258 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/macros.hpp +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-config.hpp +154 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-manager.cpp +53 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-manager.hpp +511 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/modevent.hpp +69 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/propagator.hpp +699 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/range-list.hpp +184 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/region.cpp +85 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/region.hpp +459 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/shared-array.hpp +345 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var-imp.hpp +332 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var-type.hpp +767 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var.hpp +144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/view.hpp +715 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/wait.hh +244 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel.hh +1870 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/arithmetic.cpp +408 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/bool-expr.cpp +522 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/bool-expr.hpp +87 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/exception.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-expr.cpp +594 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-expr.hpp +297 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-rel.cpp +414 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-rel.hpp +85 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/matrix.hpp +247 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/optimize.hpp +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/reg.cpp +817 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/reg.hpp +94 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-expr.cpp +704 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-expr.hpp +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-rel.cpp +81 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-rel.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search.hh +458 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/bab.cpp +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/bab.hpp +91 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/dfs.cpp +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/dfs.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/options.cpp +72 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/options.hpp +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/bab.cpp +178 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/bab.hh +203 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/dfs.cpp +176 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/dfs.hh +195 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/engine.cpp +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/engine.hh +418 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/path.hh +477 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/restart.cpp +167 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/restart.hh +73 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/restart.cpp +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/restart.hpp +88 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/bab.hh +177 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/dfs.hh +176 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/path.hh +411 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/restart.hh +89 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/statistics.hpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/stop.cpp +83 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/stop.hpp +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/support.hh +91 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/worker.hh +202 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set.hh +1144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array-traits.hpp +86 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array.cpp +219 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array.hpp +64 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch.cpp +128 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch.hh +438 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-val.hpp +107 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-view.bs +109 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-view.cpp +370 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/select-val.hpp +204 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/select-view.hpp +306 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/cardinality.cpp +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex.cpp +60 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex.hh +107 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/conv.cpp +97 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/conv.hpp +67 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/hull.cpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/hull.hpp +68 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct.cpp +56 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct.hh +79 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct/atmostOne.cpp +162 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct/atmostOne.hpp +66 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/dom.cpp +300 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element.cpp +255 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element.hh +218 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/disjoint.hpp +324 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/inter.hpp +308 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/union.hpp +342 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/unionConst.hpp +293 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/exception.hpp +146 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/exec.cpp +58 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int.cpp +191 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int.hh +459 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/card.hpp +93 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/channel-bool.hpp +282 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/channel-int.hpp +158 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/match.hpp +199 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/minmax.hpp +645 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/weights.hpp +353 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/limits.hpp +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede.cpp +74 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede.hh +115 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede/single.hpp +255 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-cvc.cpp +66 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-cvv.cpp +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vcc.cpp +168 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vcv.cpp +166 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vvc.cpp +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-singleton.cpp +115 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-ternary.cpp +60 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op.cpp +105 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op.hh +297 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/common.hpp +619 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/inter.hpp +389 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/partition.hpp +164 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-cvc.cpp +58 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-cvv.cpp +54 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-vvc.cpp +57 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl.cpp +54 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-cvc.cpp +55 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-cvv.cpp +54 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-vvc.cpp +54 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl.cpp +54 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post.hpp +266 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/subofunion.hpp +166 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/superofinter.hpp +167 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/union.hpp +319 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel.cpp +232 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel.hh +322 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/common.hpp +125 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/eq.hpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/lq.hpp +417 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/nosubset.hpp +104 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/nq.hpp +160 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-eq.hpp +152 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-lq.hpp +182 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-subset.hpp +146 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/subset.hpp +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence.cpp +64 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence.hh +115 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/common.hpp +100 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq-u.cpp +145 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq-u.hpp +79 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq.cpp +76 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq.hpp +69 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp.hpp +634 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/delta.hpp +78 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/integerset.cpp +348 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/integerset.hpp +426 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/iter.hpp +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.cpp +142 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.hpp +531 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.vis +197 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/print.hpp +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/set.cpp +111 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/set.hpp +254 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view.hpp +1142 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/cached.hpp +399 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/complement.hpp +556 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/const.hpp +723 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/print.hpp +140 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/set.hpp +263 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/singleton.hpp +402 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support.hh +135 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/auto-link.hpp +73 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/bitset-base.hpp +379 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/bitset.hpp +81 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/block-allocator.hpp +169 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/cast.hpp +52 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/config.hpp.in +109 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-array.hpp +140 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-queue.hpp +156 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-stack.hpp +186 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/exception.cpp +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/exception.hpp +102 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/heap.cpp +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/heap.hpp +593 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/int-type.hpp +172 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/macros.hpp +103 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/marked-pointer.hpp +79 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/random.hpp +128 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/sort.hpp +268 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/static-stack.hpp +148 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread.hpp +272 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/none.hpp +87 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/pthreads.cpp +66 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/pthreads.hpp +142 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/thread.cpp +72 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/thread.hpp +114 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/windows.cpp +68 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/windows.hpp +108 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/timer.hpp +103 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/install-sh +323 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/allexamples.perl +60 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/back.png +0 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/footer.html +3 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/gecode-logo-100.png +0 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/header.html +66 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/stylesheet.css +468 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixautoheader.perl +55 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixmanifest.perl +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixproperties.sh +98 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/gecode-logo.ico +0 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genbranch.perl +310 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genchangelog.perl +249 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/gencurrentchangelog.perl +191 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genlcovmakefile.perl +148 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genlicense.perl +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genrc.perl +236 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genstatistics.perl +178 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/gentxtchangelog.perl +198 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genvarimp.perl +877 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genxcodeproj.perl +144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/getrevision.perl +47 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/makedepend.perl +85 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/svn-ignore-root.txt +43 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/svn-ignore.txt +18 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/afc.cpp +143 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/array.cpp +277 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/assign.cpp +278 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/assign.hh +119 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/bool.cpp +61 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/int.cpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/set.cpp +72 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/branch.cpp +504 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/branch.hh +119 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/bool.cpp +61 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/int.cpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/set.cpp +72 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int.cpp +655 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int.hh +353 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int.hpp +314 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/arithmetic.cpp +772 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/basic.cpp +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/bin-packing.cpp +237 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/bool.cpp +500 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/channel.cpp +234 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/circuit.cpp +359 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/count.cpp +410 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/cumulative.cpp +560 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/cumulatives.cpp +276 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/distinct.cpp +248 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/dom.cpp +174 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/element.cpp +602 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/exec.cpp +150 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/extensional.cpp +571 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/gcc.cpp +320 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/linear.cpp +394 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/member.cpp +138 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-arithmetic.cpp +368 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-bool.cpp +4344 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-count.cpp +295 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-lin.cpp +2179 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-rel.cpp +136 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/no-overlap.cpp +259 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/nvalues.cpp +241 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/precede.cpp +115 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/rel.cpp +568 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/sequence.cpp +168 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/sorted.cpp +165 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/unary.cpp +327 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/unshare.cpp +109 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/search.cpp +487 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set.cpp +638 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set.hh +362 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set.hpp +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/construct.cpp +225 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/convex.cpp +139 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/distinct.cpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/dom.cpp +346 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/element.cpp +397 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/exec.cpp +86 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/int.cpp +532 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/mm-set.cpp +4532 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/precede.cpp +136 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel-op-const.cpp +368 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel-op.cpp +504 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel.cpp +157 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/sequence.cpp +133 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/test.cpp +281 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/test.hh +161 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/test.hpp +76 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/fz.cpp +93 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/mzn-gecode.bat.in +41 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/mzn-gecode.in +41 -0
- data/lib/dep-selector-libgecode.rb +15 -0
- data/lib/dep-selector-libgecode/version.rb +3 -0
- metadata +878 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Christian Schulte <schulte@gecode.org>
|
|
5
|
+
*
|
|
6
|
+
* Copyright:
|
|
7
|
+
* Christian Schulte, 2004
|
|
8
|
+
*
|
|
9
|
+
* Last modified:
|
|
10
|
+
* $Date: 2009-08-26 23:58:07 +1000 (Wed, 26 Aug 2009) $ by $Author: schulte $
|
|
11
|
+
* $Revision: 9628 $
|
|
12
|
+
*
|
|
13
|
+
* This file is part of Gecode, the generic constraint
|
|
14
|
+
* development environment:
|
|
15
|
+
* http://www.gecode.org
|
|
16
|
+
*
|
|
17
|
+
* Permission is hereby granted, free of charge, to any person obtaining
|
|
18
|
+
* a copy of this software and associated documentation files (the
|
|
19
|
+
* "Software"), to deal in the Software without restriction, including
|
|
20
|
+
* without limitation the rights to use, copy, modify, merge, publish,
|
|
21
|
+
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
22
|
+
* permit persons to whom the Software is furnished to do so, subject to
|
|
23
|
+
* the following conditions:
|
|
24
|
+
*
|
|
25
|
+
* The above copyright notice and this permission notice shall be
|
|
26
|
+
* included in all copies or substantial portions of the Software.
|
|
27
|
+
*
|
|
28
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
29
|
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
30
|
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
31
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
32
|
+
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
33
|
+
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
34
|
+
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
35
|
+
*
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
#ifndef __GECODE_SEARCH_WORKER_HH__
|
|
39
|
+
#define __GECODE_SEARCH_WORKER_HH__
|
|
40
|
+
|
|
41
|
+
#include <gecode/search.hh>
|
|
42
|
+
|
|
43
|
+
namespace Gecode { namespace Search {
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* \brief %Search worker control including memory information
|
|
47
|
+
*/
|
|
48
|
+
class Worker : public Statistics {
|
|
49
|
+
protected:
|
|
50
|
+
/// Whether engine has been stopped
|
|
51
|
+
bool _stopped;
|
|
52
|
+
/// Memory required for a single space
|
|
53
|
+
size_t mem_space;
|
|
54
|
+
/// Memory for the current space (including memory for caching)
|
|
55
|
+
size_t mem_cur;
|
|
56
|
+
/// Current total memory
|
|
57
|
+
size_t mem_total;
|
|
58
|
+
/// Depth of root node (for work stealing)
|
|
59
|
+
unsigned long int root_depth;
|
|
60
|
+
public:
|
|
61
|
+
/// Initialize with space size \a sz
|
|
62
|
+
Worker(size_t sz);
|
|
63
|
+
/// Reset stop information
|
|
64
|
+
void start(void);
|
|
65
|
+
/// Check whether engine must be stopped (with additional stackspace \a sz)
|
|
66
|
+
bool stop(const Options& o, size_t sz);
|
|
67
|
+
/// Check whether engine has been stopped
|
|
68
|
+
bool stopped(void) const;
|
|
69
|
+
/// New space \a s and choice \a c get pushed on stack
|
|
70
|
+
void push(const Space* s, const Choice* c);
|
|
71
|
+
/// Space \a s1 is replaced by space \a s2 due to constraining
|
|
72
|
+
void constrained(const Space* s1, const Space* s2);
|
|
73
|
+
/// New space \a s is added for adaptive recomputation
|
|
74
|
+
void adapt(const Space* s);
|
|
75
|
+
/// Space \a s and choice \a c get popped from stack
|
|
76
|
+
void pop(const Space* s, const Choice* c);
|
|
77
|
+
/// Space \a s gets used for LAO (removed from stack)
|
|
78
|
+
void lao(const Space* s);
|
|
79
|
+
/// Space \a s becomes current space (\a s = NULL: current space deleted)
|
|
80
|
+
void current(const Space* s);
|
|
81
|
+
/// Reset statistics for space \a s with root depth \a d
|
|
82
|
+
void reset(const Space* s, unsigned long int d=0);
|
|
83
|
+
/// Reset statistics for failed space
|
|
84
|
+
void reset(void);
|
|
85
|
+
/// Record stack depth \a d
|
|
86
|
+
void stack_depth(unsigned long int d);
|
|
87
|
+
/// Return steal depth
|
|
88
|
+
unsigned long int steal_depth(unsigned long int d) const;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
forceinline
|
|
94
|
+
Worker::Worker(size_t sz)
|
|
95
|
+
: _stopped(false), mem_space(sz), mem_cur(0), mem_total(0),
|
|
96
|
+
root_depth(0) {
|
|
97
|
+
memory = 0;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
forceinline void
|
|
101
|
+
Worker::start(void) {
|
|
102
|
+
_stopped = false;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
forceinline bool
|
|
106
|
+
Worker::stop(const Options& o, size_t sz) {
|
|
107
|
+
if (o.stop == NULL)
|
|
108
|
+
return false;
|
|
109
|
+
memory += sz;
|
|
110
|
+
_stopped |= o.stop->stop(*this,o);
|
|
111
|
+
memory -= sz;
|
|
112
|
+
return _stopped;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
forceinline bool
|
|
116
|
+
Worker::stopped(void) const {
|
|
117
|
+
return _stopped;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
forceinline void
|
|
121
|
+
Worker::push(const Space* s, const Choice* c) {
|
|
122
|
+
if (s != NULL)
|
|
123
|
+
mem_total += mem_space + s->allocated();
|
|
124
|
+
mem_total += c->size();
|
|
125
|
+
if (mem_total > memory)
|
|
126
|
+
memory = mem_total;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
forceinline void
|
|
130
|
+
Worker::adapt(const Space* s) {
|
|
131
|
+
mem_total += mem_space + s->allocated();
|
|
132
|
+
if (mem_total > memory)
|
|
133
|
+
memory = mem_total;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
forceinline void
|
|
137
|
+
Worker::constrained(const Space* s1, const Space* s2) {
|
|
138
|
+
mem_total -= s1->allocated();
|
|
139
|
+
mem_total += s2->allocated();
|
|
140
|
+
if (mem_total > memory)
|
|
141
|
+
memory = mem_total;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
forceinline void
|
|
145
|
+
Worker::lao(const Space* s) {
|
|
146
|
+
mem_total -= mem_space + s->allocated();
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
forceinline void
|
|
150
|
+
Worker::pop(const Space* s, const Choice* c) {
|
|
151
|
+
if (s != NULL)
|
|
152
|
+
mem_total -= mem_space + s->allocated();
|
|
153
|
+
mem_total -= c->size();
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
forceinline void
|
|
157
|
+
Worker::current(const Space* s) {
|
|
158
|
+
if (s == NULL) {
|
|
159
|
+
mem_total -= mem_cur;
|
|
160
|
+
mem_cur = 0;
|
|
161
|
+
} else {
|
|
162
|
+
mem_cur = mem_space + s->allocated();
|
|
163
|
+
mem_total += mem_cur;
|
|
164
|
+
if (mem_total > memory)
|
|
165
|
+
memory = mem_total;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
forceinline void
|
|
170
|
+
Worker::reset(const Space* s, unsigned long int d) {
|
|
171
|
+
mem_cur = mem_space + s->allocated();
|
|
172
|
+
mem_total = mem_cur;
|
|
173
|
+
if (mem_total > memory)
|
|
174
|
+
memory = mem_total;
|
|
175
|
+
root_depth = d;
|
|
176
|
+
if (depth < d)
|
|
177
|
+
depth = d;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
forceinline void
|
|
181
|
+
Worker::reset(void) {
|
|
182
|
+
mem_cur = 0;
|
|
183
|
+
mem_total = 0;
|
|
184
|
+
root_depth = 0;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
forceinline void
|
|
188
|
+
Worker::stack_depth(unsigned long int d) {
|
|
189
|
+
if (depth < root_depth + d)
|
|
190
|
+
depth = root_depth + d;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
forceinline unsigned long int
|
|
194
|
+
Worker::steal_depth(unsigned long int d) const {
|
|
195
|
+
return root_depth + d;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
}}
|
|
199
|
+
|
|
200
|
+
#endif
|
|
201
|
+
|
|
202
|
+
// STATISTICS: search-other
|
|
@@ -0,0 +1,1144 @@
|
|
|
1
|
+
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Guido Tack <tack@gecode.org>
|
|
5
|
+
* Christian Schulte <schulte@gecode.org>
|
|
6
|
+
*
|
|
7
|
+
* Contributing authors:
|
|
8
|
+
* Gabor Szokoli <szokoli@gecode.org>
|
|
9
|
+
*
|
|
10
|
+
* Copyright:
|
|
11
|
+
* Guido Tack, 2004
|
|
12
|
+
* Christian Schulte, 2004
|
|
13
|
+
* Gabor Szokoli, 2004
|
|
14
|
+
*
|
|
15
|
+
* Last modified:
|
|
16
|
+
* $Date: 2011-08-25 00:34:16 +1000 (Thu, 25 Aug 2011) $ by $Author: tack $
|
|
17
|
+
* $Revision: 12346 $
|
|
18
|
+
*
|
|
19
|
+
* This file is part of Gecode, the generic constraint
|
|
20
|
+
* development environment:
|
|
21
|
+
* http://www.gecode.org
|
|
22
|
+
*
|
|
23
|
+
* Permission is hereby granted, free of charge, to any person obtaining
|
|
24
|
+
* a copy of this software and associated documentation files (the
|
|
25
|
+
* "Software"), to deal in the Software without restriction, including
|
|
26
|
+
* without limitation the rights to use, copy, modify, merge, publish,
|
|
27
|
+
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
28
|
+
* permit persons to whom the Software is furnished to do so, subject to
|
|
29
|
+
* the following conditions:
|
|
30
|
+
*
|
|
31
|
+
* The above copyright notice and this permission notice shall be
|
|
32
|
+
* included in all copies or substantial portions of the Software.
|
|
33
|
+
*
|
|
34
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
35
|
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
36
|
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
37
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
38
|
+
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
39
|
+
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
40
|
+
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
41
|
+
*
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
#ifndef __GECODE_SET_HH__
|
|
45
|
+
#define __GECODE_SET_HH__
|
|
46
|
+
|
|
47
|
+
#include <gecode/kernel.hh>
|
|
48
|
+
#include <gecode/int.hh>
|
|
49
|
+
#include <gecode/iter.hh>
|
|
50
|
+
|
|
51
|
+
/*
|
|
52
|
+
* Configure linking
|
|
53
|
+
*
|
|
54
|
+
*/
|
|
55
|
+
#if !defined(GECODE_STATIC_LIBS) && \
|
|
56
|
+
(defined(__CYGWIN__) || defined(__MINGW32__) || defined(_MSC_VER))
|
|
57
|
+
|
|
58
|
+
#ifdef GECODE_BUILD_SET
|
|
59
|
+
#define GECODE_SET_EXPORT __declspec( dllexport )
|
|
60
|
+
#else
|
|
61
|
+
#define GECODE_SET_EXPORT __declspec( dllimport )
|
|
62
|
+
#endif
|
|
63
|
+
|
|
64
|
+
#else
|
|
65
|
+
|
|
66
|
+
#ifdef GECODE_GCC_HAS_CLASS_VISIBILITY
|
|
67
|
+
#define GECODE_SET_EXPORT __attribute__ ((visibility("default")))
|
|
68
|
+
#else
|
|
69
|
+
#define GECODE_SET_EXPORT
|
|
70
|
+
#endif
|
|
71
|
+
|
|
72
|
+
#endif
|
|
73
|
+
|
|
74
|
+
// Configure auto-linking
|
|
75
|
+
#ifndef GECODE_BUILD_SET
|
|
76
|
+
#define GECODE_LIBRARY_NAME "Set"
|
|
77
|
+
#include <gecode/support/auto-link.hpp>
|
|
78
|
+
#endif
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* \namespace Gecode::Set
|
|
83
|
+
* \brief Finite integer sets
|
|
84
|
+
*
|
|
85
|
+
* The Gecode::Set namespace contains all functionality required
|
|
86
|
+
* to program propagators and branchers for finite integer sets.
|
|
87
|
+
* In addition, all propagators and branchers for finite integer
|
|
88
|
+
* sets provided by %Gecode are contained as nested namespaces.
|
|
89
|
+
*
|
|
90
|
+
*/
|
|
91
|
+
|
|
92
|
+
#include <gecode/set/exception.hpp>
|
|
93
|
+
|
|
94
|
+
namespace Gecode { namespace Set {
|
|
95
|
+
|
|
96
|
+
/// Numerical limits for set variables
|
|
97
|
+
namespace Limits {
|
|
98
|
+
/// Largest allowed integer in integer set
|
|
99
|
+
const int max = (Gecode::Int::Limits::max / 2) - 1;
|
|
100
|
+
/// Smallest allowed integer in integer set
|
|
101
|
+
const int min = -max;
|
|
102
|
+
/// Maximum cardinality of an integer set
|
|
103
|
+
const unsigned int card = max-min+1;
|
|
104
|
+
/// Check whether integer \a n is in range, otherwise throw overflow exception with information \a l
|
|
105
|
+
void check(int n, const char* l);
|
|
106
|
+
/// Check whether unsigned int \a n is in range for cardinality, otherwise throw overflow exception with information \a l
|
|
107
|
+
void check(unsigned int n, const char* l);
|
|
108
|
+
/// Check whether minimum and maximum of IntSet \a s is in range, otherwise throw overflow exception with information \a l
|
|
109
|
+
void check(const IntSet& s, const char* l);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
}}
|
|
113
|
+
|
|
114
|
+
#include <gecode/set/limits.hpp>
|
|
115
|
+
|
|
116
|
+
#include <gecode/set/var-imp.hpp>
|
|
117
|
+
|
|
118
|
+
namespace Gecode {
|
|
119
|
+
|
|
120
|
+
namespace Set {
|
|
121
|
+
class SetView;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* \brief %Set variables
|
|
126
|
+
*
|
|
127
|
+
* \ingroup TaskModelSetVars
|
|
128
|
+
*/
|
|
129
|
+
class SetVar : public VarImpVar<Set::SetVarImp> {
|
|
130
|
+
friend class SetVarArray;
|
|
131
|
+
friend class SetVarArgs;
|
|
132
|
+
using VarImpVar<Set::SetVarImp>::x;
|
|
133
|
+
public:
|
|
134
|
+
/// \name Constructors and initialization
|
|
135
|
+
//@{
|
|
136
|
+
/// Default constructor
|
|
137
|
+
SetVar(void);
|
|
138
|
+
/// Initialize from set variable \a y
|
|
139
|
+
SetVar(const SetVar& y);
|
|
140
|
+
/// Initialize from set view \a y
|
|
141
|
+
SetVar(const Set::SetView& y);
|
|
142
|
+
|
|
143
|
+
/// Initialize variable with empty greatest lower and full least upper bound
|
|
144
|
+
GECODE_SET_EXPORT SetVar(Space& home);
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* \brief Initialize variable with given bounds and cardinality
|
|
148
|
+
*
|
|
149
|
+
* The variable is created with
|
|
150
|
+
* greatest lower bound \f$\{\mathit{glbMin},\dots,\mathit{glbMax}\}\f$,
|
|
151
|
+
* least upper bound \f$\{\mathit{lubMin},\dots,\mathit{lubMax}\}\f$, and
|
|
152
|
+
* cardinality minimum \a cardMin and maximum \a cardMax.
|
|
153
|
+
* The following exceptions might be thrown:
|
|
154
|
+
* - If the bounds are no legal set bounds (between Set::Limits::min
|
|
155
|
+
* and Set::Limits::max), an exception of type
|
|
156
|
+
* Gecode::Set::OutOfLimits is thrown.
|
|
157
|
+
* - If the cardinality is greater than Set::Limits::max_set_size, an
|
|
158
|
+
* exception of type Gecode::Set::OutOfLimits is
|
|
159
|
+
* thrown.
|
|
160
|
+
* - If \a cardMin > \a cardMax, an exception of type
|
|
161
|
+
* Gecode::Set::VariableEmptyDomain is thrown.
|
|
162
|
+
*/
|
|
163
|
+
GECODE_SET_EXPORT
|
|
164
|
+
SetVar(Space& home,int glbMin,int glbMax,int lubMin,int lubMax,
|
|
165
|
+
unsigned int cardMin = 0,
|
|
166
|
+
unsigned int cardMax = Set::Limits::card);
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* \brief Initialize variable with given bounds and cardinality
|
|
170
|
+
*
|
|
171
|
+
* The variable is created with greatest lower bound \a glbD,
|
|
172
|
+
* least upper bound \f$\{\mathit{lubMin},\dots,\mathit{lubMax}\}\f$, and
|
|
173
|
+
* cardinality minimum \a cardMin and maximum \a cardMax.
|
|
174
|
+
* The following exceptions might be thrown:
|
|
175
|
+
* - If the bounds are no legal set bounds (between Set::Limits::min
|
|
176
|
+
* and Set::Limits::max), an exception of type
|
|
177
|
+
* Gecode::Set::OutOfLimits is thrown.
|
|
178
|
+
* - If the cardinality is greater than Set::Limits::max_set_size, an
|
|
179
|
+
* exception of type Gecode::Set::OutOfLimits is
|
|
180
|
+
* thrown.
|
|
181
|
+
* - If \a cardMin > \a cardMax, an exception of type
|
|
182
|
+
* Gecode::Set::VariableEmptyDomain is thrown.
|
|
183
|
+
*/
|
|
184
|
+
GECODE_SET_EXPORT
|
|
185
|
+
SetVar(Space& home,const IntSet& glbD,int lubMin,int lubMax,
|
|
186
|
+
unsigned int cardMin = 0,
|
|
187
|
+
unsigned int cardMax = Set::Limits::card);
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* \brief Initialize variable with given bounds and cardinality
|
|
191
|
+
*
|
|
192
|
+
* The variable is created with
|
|
193
|
+
* greatest lower bound \f$\{\mathit{glbMin},\dots,\mathit{glbMax}\}\f$,
|
|
194
|
+
* least upper bound \a lubD, and
|
|
195
|
+
* cardinality minimum \a cardMin and maximum \a cardMax.
|
|
196
|
+
* The following exceptions might be thrown:
|
|
197
|
+
* - If the bounds are no legal set bounds (between Set::Limits::min
|
|
198
|
+
* and Set::Limits::max), an exception of type
|
|
199
|
+
* Gecode::Set::OutOfLimits is thrown.
|
|
200
|
+
* - If the cardinality is greater than Set::Limits::max_set_size, an
|
|
201
|
+
* exception of type Gecode::Set::OutOfLimits is
|
|
202
|
+
* thrown.
|
|
203
|
+
* - If \a minCard > \a maxCard, an exception of type
|
|
204
|
+
* Gecode::Set::VariableEmptyDomain is thrown.
|
|
205
|
+
*/
|
|
206
|
+
GECODE_SET_EXPORT
|
|
207
|
+
SetVar(Space& home,int glbMin,int glbMax,const IntSet& lubD,
|
|
208
|
+
unsigned int cardMin = 0,
|
|
209
|
+
unsigned int cardMax = Set::Limits::card);
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* \brief Initialize variable with given bounds and cardinality
|
|
213
|
+
*
|
|
214
|
+
* The variable is created with
|
|
215
|
+
* greatest lower bound \a glbD,
|
|
216
|
+
* least upper bound \a lubD, and
|
|
217
|
+
* cardinality minimum \a cardMin and maximum \a cardMax.
|
|
218
|
+
* The following exceptions might be thrown:
|
|
219
|
+
* - If the bounds are no legal set bounds (between Set::Limits::min
|
|
220
|
+
* and Set::Limits::max), an exception of type
|
|
221
|
+
* Gecode::Set::OutOfLimits is thrown.
|
|
222
|
+
* - If the cardinality is greater than Set::Limits::max_set_size, an
|
|
223
|
+
* exception of type Gecode::Set::OutOfLimits is
|
|
224
|
+
* thrown.
|
|
225
|
+
* - If \a minCard > \a maxCard, an exception of type
|
|
226
|
+
* Gecode::Set::VariableEmptyDomain is thrown.
|
|
227
|
+
*/
|
|
228
|
+
GECODE_SET_EXPORT
|
|
229
|
+
SetVar(Space& home,const IntSet& glbD,const IntSet& lubD,
|
|
230
|
+
unsigned int cardMin = 0,
|
|
231
|
+
unsigned int cardMax = Set::Limits::card);
|
|
232
|
+
//@}
|
|
233
|
+
|
|
234
|
+
/// \name Value access
|
|
235
|
+
//@{
|
|
236
|
+
/// Return number of elements in the greatest lower bound
|
|
237
|
+
unsigned int glbSize(void) const;
|
|
238
|
+
/// Return number of elements in the least upper bound
|
|
239
|
+
unsigned int lubSize(void) const;
|
|
240
|
+
/// Return number of unknown elements (elements in lub but not in glb)
|
|
241
|
+
unsigned int unknownSize(void) const;
|
|
242
|
+
/// Return cardinality minimum
|
|
243
|
+
unsigned int cardMin(void) const;
|
|
244
|
+
/// Return cardinality maximum
|
|
245
|
+
unsigned int cardMax(void) const;
|
|
246
|
+
/// Return minimum element of least upper bound
|
|
247
|
+
int lubMin(void) const;
|
|
248
|
+
/// Return maximum element of least upper bound
|
|
249
|
+
int lubMax(void) const;
|
|
250
|
+
/// Return minimum element of greatest lower bound
|
|
251
|
+
int glbMin(void) const;
|
|
252
|
+
/// Return maximum of greatest lower bound
|
|
253
|
+
int glbMax(void) const;
|
|
254
|
+
//@}
|
|
255
|
+
|
|
256
|
+
/// \name Domain tests
|
|
257
|
+
//@{
|
|
258
|
+
/// Test whether \a i is in greatest lower bound
|
|
259
|
+
bool contains(int i) const;
|
|
260
|
+
/// Test whether \a i is not in the least upper bound
|
|
261
|
+
bool notContains(int i) const;
|
|
262
|
+
//@}
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* \defgroup TaskModelSetIter Range and value iterators for set variables
|
|
267
|
+
* \ingroup TaskModelSet
|
|
268
|
+
*/
|
|
269
|
+
//@{
|
|
270
|
+
|
|
271
|
+
/// Iterator for the greatest lower bound ranges of a set variable
|
|
272
|
+
class SetVarGlbRanges {
|
|
273
|
+
private:
|
|
274
|
+
Set::GlbRanges<Set::SetVarImp*> iter;
|
|
275
|
+
public:
|
|
276
|
+
/// \name Constructors and initialization
|
|
277
|
+
//@{
|
|
278
|
+
/// Default constructor
|
|
279
|
+
SetVarGlbRanges(void);
|
|
280
|
+
/// Initialize to iterate ranges of variable \a x
|
|
281
|
+
SetVarGlbRanges(const SetVar& x);
|
|
282
|
+
//@}
|
|
283
|
+
|
|
284
|
+
/// \name Iteration control
|
|
285
|
+
//@{
|
|
286
|
+
/// Test whether iterator is still at a range or done
|
|
287
|
+
bool operator ()(void) const;
|
|
288
|
+
/// Move iterator to next range (if possible)
|
|
289
|
+
void operator ++(void);
|
|
290
|
+
//@}
|
|
291
|
+
|
|
292
|
+
/// \name Range access
|
|
293
|
+
//@{
|
|
294
|
+
/// Return smallest value of range
|
|
295
|
+
int min(void) const;
|
|
296
|
+
/// Return largest value of range
|
|
297
|
+
int max(void) const;
|
|
298
|
+
/// Return width of range (distance between minimum and maximum)
|
|
299
|
+
unsigned int width(void) const;
|
|
300
|
+
//@}
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
/// Iterator for the least upper bound ranges of a set variable
|
|
304
|
+
class SetVarLubRanges {
|
|
305
|
+
private:
|
|
306
|
+
Set::LubRanges<Set::SetVarImp*> iter;
|
|
307
|
+
public:
|
|
308
|
+
/// \name Constructors and initialization
|
|
309
|
+
//@{
|
|
310
|
+
/// Default constructor
|
|
311
|
+
SetVarLubRanges(void);
|
|
312
|
+
/// Initialize to iterate ranges of variable \a x
|
|
313
|
+
SetVarLubRanges(const SetVar& x);
|
|
314
|
+
//@}
|
|
315
|
+
|
|
316
|
+
/// \name Iteration control
|
|
317
|
+
//@{
|
|
318
|
+
/// Test whether iterator is still at a range or done
|
|
319
|
+
bool operator ()(void) const;
|
|
320
|
+
/// Move iterator to next range (if possible)
|
|
321
|
+
void operator ++(void);
|
|
322
|
+
//@}
|
|
323
|
+
|
|
324
|
+
/// \name Range access
|
|
325
|
+
//@{
|
|
326
|
+
/// Return smallest value of range
|
|
327
|
+
int min(void) const;
|
|
328
|
+
/// Return largest value of range
|
|
329
|
+
int max(void) const;
|
|
330
|
+
/// Return width of range (distance between minimum and maximum)
|
|
331
|
+
unsigned int width(void) const;
|
|
332
|
+
//@}
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
/// Iterator for the unknown ranges of a set variable
|
|
336
|
+
class SetVarUnknownRanges {
|
|
337
|
+
private:
|
|
338
|
+
Set::UnknownRanges<Set::SetVarImp*> iter;
|
|
339
|
+
public:
|
|
340
|
+
/// \name Constructors and initialization
|
|
341
|
+
//@{
|
|
342
|
+
/// Default constructor
|
|
343
|
+
SetVarUnknownRanges(void);
|
|
344
|
+
/// Initialize to iterate ranges of variable \a x
|
|
345
|
+
SetVarUnknownRanges(const SetVar& x);
|
|
346
|
+
//@}
|
|
347
|
+
|
|
348
|
+
/// \name Iteration control
|
|
349
|
+
//@{
|
|
350
|
+
/// Test whether iterator is still at a range or done
|
|
351
|
+
bool operator ()(void) const;
|
|
352
|
+
/// Move iterator to next range (if possible)
|
|
353
|
+
void operator ++(void);
|
|
354
|
+
//@}
|
|
355
|
+
|
|
356
|
+
/// \name Range access
|
|
357
|
+
//@{
|
|
358
|
+
/// Return smallest value of range
|
|
359
|
+
int min(void) const;
|
|
360
|
+
/// Return largest value of range
|
|
361
|
+
int max(void) const;
|
|
362
|
+
/// Return width of range (distance between minimum and maximum)
|
|
363
|
+
unsigned int width(void) const;
|
|
364
|
+
//@}
|
|
365
|
+
};
|
|
366
|
+
|
|
367
|
+
/// Iterator for the values in the greatest lower bound of a set variable
|
|
368
|
+
class SetVarGlbValues {
|
|
369
|
+
private:
|
|
370
|
+
Iter::Ranges::ToValues<SetVarGlbRanges> iter;
|
|
371
|
+
public:
|
|
372
|
+
/// \name Constructors and initialization
|
|
373
|
+
//@{
|
|
374
|
+
/// Default constructor
|
|
375
|
+
SetVarGlbValues(void);
|
|
376
|
+
/// Initialize to iterate values of variable \a x
|
|
377
|
+
SetVarGlbValues(const SetVar& x);
|
|
378
|
+
//@}
|
|
379
|
+
|
|
380
|
+
/// \name Iteration control
|
|
381
|
+
//@{
|
|
382
|
+
/// Test whether iterator is still at a value or done
|
|
383
|
+
bool operator ()(void) const;
|
|
384
|
+
/// Move iterator to next value (if possible)
|
|
385
|
+
void operator ++(void);
|
|
386
|
+
//@}
|
|
387
|
+
|
|
388
|
+
/// \name Value access
|
|
389
|
+
//@{
|
|
390
|
+
/// Return current value
|
|
391
|
+
int val(void) const;
|
|
392
|
+
//@}
|
|
393
|
+
};
|
|
394
|
+
|
|
395
|
+
/// Iterator for the values in the least upper bound of a set variable
|
|
396
|
+
class SetVarLubValues {
|
|
397
|
+
private:
|
|
398
|
+
Iter::Ranges::ToValues<SetVarLubRanges> iter;
|
|
399
|
+
public:
|
|
400
|
+
/// \name Constructors and initialization
|
|
401
|
+
//@{
|
|
402
|
+
/// Default constructor
|
|
403
|
+
SetVarLubValues(void);
|
|
404
|
+
/// Initialize to iterate values of variable \a x
|
|
405
|
+
SetVarLubValues(const SetVar& x);
|
|
406
|
+
//@}
|
|
407
|
+
|
|
408
|
+
/// \name Iteration control
|
|
409
|
+
//@{
|
|
410
|
+
/// Test whether iterator is still at a value or done
|
|
411
|
+
bool operator ()(void) const;
|
|
412
|
+
/// Move iterator to next value (if possible)
|
|
413
|
+
void operator ++(void);
|
|
414
|
+
//@}
|
|
415
|
+
|
|
416
|
+
/// \name Value access
|
|
417
|
+
//@{
|
|
418
|
+
/// Return current value
|
|
419
|
+
int val(void) const;
|
|
420
|
+
//@}
|
|
421
|
+
};
|
|
422
|
+
|
|
423
|
+
/// Iterator for the values in the unknown set of a set variable
|
|
424
|
+
class SetVarUnknownValues {
|
|
425
|
+
private:
|
|
426
|
+
Iter::Ranges::ToValues<SetVarUnknownRanges> iter;
|
|
427
|
+
public:
|
|
428
|
+
/// \name Constructors and initialization
|
|
429
|
+
//@{
|
|
430
|
+
/// Default constructor
|
|
431
|
+
SetVarUnknownValues(void);
|
|
432
|
+
/// Initialize to iterate values of variable \a x
|
|
433
|
+
SetVarUnknownValues(const SetVar& x);
|
|
434
|
+
//@}
|
|
435
|
+
|
|
436
|
+
/// \name Iteration control
|
|
437
|
+
//@{
|
|
438
|
+
/// Test whether iterator is still at a value or done
|
|
439
|
+
bool operator ()(void) const;
|
|
440
|
+
/// Move iterator to next value (if possible)
|
|
441
|
+
void operator ++(void);
|
|
442
|
+
//@}
|
|
443
|
+
|
|
444
|
+
/// \name Value access
|
|
445
|
+
//@{
|
|
446
|
+
/// Return current value
|
|
447
|
+
int val(void) const;
|
|
448
|
+
//@}
|
|
449
|
+
};
|
|
450
|
+
|
|
451
|
+
//@}
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
* \brief Print set variable \a x
|
|
455
|
+
* \relates Gecode::SetVar
|
|
456
|
+
*/
|
|
457
|
+
template<class Char, class Traits>
|
|
458
|
+
std::basic_ostream<Char,Traits>&
|
|
459
|
+
operator <<(std::basic_ostream<Char,Traits>& os, const SetVar& x);
|
|
460
|
+
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
#include <gecode/set/view.hpp>
|
|
464
|
+
|
|
465
|
+
namespace Gecode {
|
|
466
|
+
/**
|
|
467
|
+
* \defgroup TaskModelSetArgs Argument arrays
|
|
468
|
+
*
|
|
469
|
+
* Argument arrays are just good enough for passing arguments
|
|
470
|
+
* with automatic memory management.
|
|
471
|
+
* \ingroup TaskModelSet
|
|
472
|
+
*/
|
|
473
|
+
|
|
474
|
+
//@{
|
|
475
|
+
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
#include <gecode/set/array-traits.hpp>
|
|
479
|
+
|
|
480
|
+
namespace Gecode {
|
|
481
|
+
|
|
482
|
+
/** \brief Passing set variables
|
|
483
|
+
*
|
|
484
|
+
* We could have used a simple typedef instead, but doxygen cannot
|
|
485
|
+
* resolve some overloading then, leading to unusable documentation for
|
|
486
|
+
* important parts of the library. As long as there is no fix for this,
|
|
487
|
+
* we will keep this workaround.
|
|
488
|
+
*
|
|
489
|
+
*/
|
|
490
|
+
class SetVarArgs : public VarArgArray<SetVar> {
|
|
491
|
+
public:
|
|
492
|
+
/// \name Constructors and initialization
|
|
493
|
+
//@{
|
|
494
|
+
/// Allocate empty array
|
|
495
|
+
SetVarArgs(void) {}
|
|
496
|
+
/// Allocate array with \a n elements
|
|
497
|
+
explicit SetVarArgs(int n) : VarArgArray<SetVar>(n) {}
|
|
498
|
+
/// Initialize from variable argument array \a a (copy elements)
|
|
499
|
+
SetVarArgs(const SetVarArgs& a) : VarArgArray<SetVar>(a) {}
|
|
500
|
+
/// Initialize from variable array \a a (copy elements)
|
|
501
|
+
SetVarArgs(const VarArray<SetVar>& a) : VarArgArray<SetVar>(a) {}
|
|
502
|
+
/**
|
|
503
|
+
* \brief Create an array of size \a n.
|
|
504
|
+
*
|
|
505
|
+
* Each variable is initialized with the bounds and cardinality as
|
|
506
|
+
* given by the arguments.
|
|
507
|
+
*/
|
|
508
|
+
GECODE_SET_EXPORT
|
|
509
|
+
SetVarArgs(Space& home,int n,int glbMin,int glbMax,
|
|
510
|
+
int lubMin,int lubMax,
|
|
511
|
+
unsigned int minCard = 0,
|
|
512
|
+
unsigned int maxCard = Set::Limits::card);
|
|
513
|
+
/**
|
|
514
|
+
* \brief Create an array of size \a n.
|
|
515
|
+
*
|
|
516
|
+
* Each variable is initialized with the bounds and cardinality as
|
|
517
|
+
* given by the arguments.
|
|
518
|
+
*/
|
|
519
|
+
GECODE_SET_EXPORT
|
|
520
|
+
SetVarArgs(Space& home,int n,const IntSet& glb,
|
|
521
|
+
int lubMin, int lubMax,
|
|
522
|
+
unsigned int minCard = 0,
|
|
523
|
+
unsigned int maxCard = Set::Limits::card);
|
|
524
|
+
/**
|
|
525
|
+
* \brief Create an array of size \a n.
|
|
526
|
+
*
|
|
527
|
+
* Each variable is initialized with the bounds and cardinality as
|
|
528
|
+
* given by the arguments.
|
|
529
|
+
*/
|
|
530
|
+
GECODE_SET_EXPORT
|
|
531
|
+
SetVarArgs(Space& home,int n,int glbMin,int glbMax,
|
|
532
|
+
const IntSet& lub,
|
|
533
|
+
unsigned int minCard = 0,
|
|
534
|
+
unsigned int maxCard = Set::Limits::card);
|
|
535
|
+
/**
|
|
536
|
+
* \brief Create an array of size \a n.
|
|
537
|
+
*
|
|
538
|
+
* Each variable is initialized with the bounds and cardinality as
|
|
539
|
+
* given by the arguments.
|
|
540
|
+
*/
|
|
541
|
+
GECODE_SET_EXPORT
|
|
542
|
+
SetVarArgs(Space& home,int n,
|
|
543
|
+
const IntSet& glb,const IntSet& lub,
|
|
544
|
+
unsigned int minCard = 0,
|
|
545
|
+
unsigned int maxCard = Set::Limits::card);
|
|
546
|
+
//@}
|
|
547
|
+
};
|
|
548
|
+
//@}
|
|
549
|
+
|
|
550
|
+
/**
|
|
551
|
+
* \defgroup TaskModelSetVarArrays Variable arrays
|
|
552
|
+
*
|
|
553
|
+
* Variable arrays can store variables. They are typically used
|
|
554
|
+
* for storing the variables being part of a solution. However,
|
|
555
|
+
* they can also be used for temporary purposes (even though
|
|
556
|
+
* memory is not reclaimed until the space it is created for
|
|
557
|
+
* is deleted).
|
|
558
|
+
* \ingroup TaskModelSet
|
|
559
|
+
*/
|
|
560
|
+
|
|
561
|
+
/**
|
|
562
|
+
* \brief %Set variable array
|
|
563
|
+
* \ingroup TaskModelSetVarArrays
|
|
564
|
+
*/
|
|
565
|
+
class SetVarArray : public VarArray<SetVar> {
|
|
566
|
+
public:
|
|
567
|
+
/// \name Creation and initialization
|
|
568
|
+
//@{
|
|
569
|
+
/// Default constructor (array of size 0)
|
|
570
|
+
SetVarArray(void);
|
|
571
|
+
/// Initialize from set variable array \a a (share elements)
|
|
572
|
+
SetVarArray(const SetVarArray&);
|
|
573
|
+
/// Initialize from set variable argument array \a a (copy elements)
|
|
574
|
+
SetVarArray(Space& home, const SetVarArgs&);
|
|
575
|
+
/// Allocate array for \a n set variables (variables are uninitialized)
|
|
576
|
+
GECODE_SET_EXPORT SetVarArray(Space& home, int n);
|
|
577
|
+
/**
|
|
578
|
+
* \brief Create an array of size \a n.
|
|
579
|
+
*
|
|
580
|
+
* Each variable is initialized with the bounds and cardinality as
|
|
581
|
+
* given by the arguments.
|
|
582
|
+
*/
|
|
583
|
+
GECODE_SET_EXPORT
|
|
584
|
+
SetVarArray(Space& home,int n,int glbMin,int glbMax,int lubMin,int lubMax,
|
|
585
|
+
unsigned int minCard = 0,
|
|
586
|
+
unsigned int maxCard = Set::Limits::card);
|
|
587
|
+
/**
|
|
588
|
+
* \brief Create an array of size \a n.
|
|
589
|
+
*
|
|
590
|
+
* Each variable is initialized with the bounds and cardinality as
|
|
591
|
+
* given by the arguments.
|
|
592
|
+
*/
|
|
593
|
+
GECODE_SET_EXPORT
|
|
594
|
+
SetVarArray(Space& home,int n,const IntSet& glb, int lubMin, int lubMax,
|
|
595
|
+
unsigned int minCard = 0,
|
|
596
|
+
unsigned int maxCard = Set::Limits::card);
|
|
597
|
+
/**
|
|
598
|
+
* \brief Create an array of size \a n.
|
|
599
|
+
*
|
|
600
|
+
* Each variable is initialized with the bounds and cardinality as
|
|
601
|
+
* given by the arguments.
|
|
602
|
+
*/
|
|
603
|
+
GECODE_SET_EXPORT
|
|
604
|
+
SetVarArray(Space& home,int n,int glbMin,int glbMax,const IntSet& lub,
|
|
605
|
+
unsigned int minCard = 0,
|
|
606
|
+
unsigned int maxCard = Set::Limits::card);
|
|
607
|
+
/**
|
|
608
|
+
* \brief Create an array of size \a n.
|
|
609
|
+
*
|
|
610
|
+
* Each variable is initialized with the bounds and cardinality as
|
|
611
|
+
* given by the arguments.
|
|
612
|
+
*/
|
|
613
|
+
GECODE_SET_EXPORT
|
|
614
|
+
SetVarArray(Space& home,int n,
|
|
615
|
+
const IntSet& glb,const IntSet& lub,
|
|
616
|
+
unsigned int minCard = 0,
|
|
617
|
+
unsigned int maxCard = Set::Limits::card);
|
|
618
|
+
//@}
|
|
619
|
+
};
|
|
620
|
+
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
#include <gecode/set/array.hpp>
|
|
624
|
+
|
|
625
|
+
namespace Gecode {
|
|
626
|
+
|
|
627
|
+
/**
|
|
628
|
+
* \brief Common relation types for sets
|
|
629
|
+
*
|
|
630
|
+
* The total order on sets is defined as the lexicographic
|
|
631
|
+
* order on their characteristic functions, e.g.,
|
|
632
|
+
* \f$x\leq y\f$ means that either \f$x\f$ is empty or
|
|
633
|
+
* the minimal element of the symmetric difference
|
|
634
|
+
* \f$x\ominus y\f$ is in \f$y\f$.
|
|
635
|
+
*
|
|
636
|
+
* \ingroup TaskModelSet
|
|
637
|
+
*/
|
|
638
|
+
enum SetRelType {
|
|
639
|
+
SRT_EQ, ///< Equality (\f$=\f$)
|
|
640
|
+
SRT_NQ, ///< Disequality (\f$\neq\f$)
|
|
641
|
+
SRT_SUB, ///< Subset (\f$\subseteq\f$)
|
|
642
|
+
SRT_SUP, ///< Superset (\f$\supseteq\f$)
|
|
643
|
+
SRT_DISJ, ///< Disjoint (\f$\parallel\f$)
|
|
644
|
+
SRT_CMPL, ///< Complement
|
|
645
|
+
SRT_LQ, ///< Less or equal (\f$\leq\f$)
|
|
646
|
+
SRT_LE, ///< Less (\f$<\f$)
|
|
647
|
+
SRT_GQ, ///< Greater or equal (\f$\geq\f$)
|
|
648
|
+
SRT_GR ///< Greater (\f$>\f$)
|
|
649
|
+
};
|
|
650
|
+
|
|
651
|
+
/**
|
|
652
|
+
* \brief Common operations for sets
|
|
653
|
+
* \ingroup TaskModelSet
|
|
654
|
+
*/
|
|
655
|
+
enum SetOpType {
|
|
656
|
+
SOT_UNION, ///< Union
|
|
657
|
+
SOT_DUNION, ///< Disjoint union
|
|
658
|
+
SOT_INTER, ///< %Intersection
|
|
659
|
+
SOT_MINUS ///< Difference
|
|
660
|
+
};
|
|
661
|
+
|
|
662
|
+
/**
|
|
663
|
+
* \defgroup TaskModelSetDom Domain constraints
|
|
664
|
+
* \ingroup TaskModelSet
|
|
665
|
+
*
|
|
666
|
+
*/
|
|
667
|
+
|
|
668
|
+
//@{
|
|
669
|
+
|
|
670
|
+
/// Propagates \f$ x \sim_r \{i\}\f$
|
|
671
|
+
GECODE_SET_EXPORT void
|
|
672
|
+
dom(Home home, SetVar x, SetRelType r, int i);
|
|
673
|
+
|
|
674
|
+
/// Propagates \f$ x \sim_r \{i,\dots,j\}\f$
|
|
675
|
+
GECODE_SET_EXPORT void
|
|
676
|
+
dom(Home home, SetVar x, SetRelType r, int i, int j);
|
|
677
|
+
|
|
678
|
+
/// Propagates \f$ x \sim_r s\f$
|
|
679
|
+
GECODE_SET_EXPORT void
|
|
680
|
+
dom(Home home, SetVar x, SetRelType r, const IntSet& s);
|
|
681
|
+
|
|
682
|
+
/// Post propagator for \f$ (x \sim_r \{i\}) \Leftrightarrow b \f$
|
|
683
|
+
GECODE_SET_EXPORT void
|
|
684
|
+
dom(Home home, SetVar x, SetRelType r, int i, BoolVar b);
|
|
685
|
+
|
|
686
|
+
/// Post propagator for \f$ (x \sim_r \{i,\dots,j\}) \Leftrightarrow b \f$
|
|
687
|
+
GECODE_SET_EXPORT void
|
|
688
|
+
dom(Home home, SetVar x, SetRelType r, int i, int j, BoolVar b);
|
|
689
|
+
|
|
690
|
+
/// Post propagator for \f$ (x \sim_r s) \Leftrightarrow b \f$
|
|
691
|
+
GECODE_SET_EXPORT void
|
|
692
|
+
dom(Home home, SetVar x, SetRelType r, const IntSet& s, BoolVar b);
|
|
693
|
+
|
|
694
|
+
/// Propagates \f$ i \leq |s| \leq j \f$
|
|
695
|
+
GECODE_SET_EXPORT void
|
|
696
|
+
cardinality(Home home, SetVar x, unsigned int i, unsigned int j);
|
|
697
|
+
|
|
698
|
+
//@}
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
/**
|
|
702
|
+
* \defgroup TaskModelSetRel Relation constraints
|
|
703
|
+
* \ingroup TaskModelSet
|
|
704
|
+
*
|
|
705
|
+
*/
|
|
706
|
+
|
|
707
|
+
//@{
|
|
708
|
+
|
|
709
|
+
/// Post propagator for \f$ x \sim_r y\f$
|
|
710
|
+
GECODE_SET_EXPORT void
|
|
711
|
+
rel(Home home, SetVar x, SetRelType r, SetVar y);
|
|
712
|
+
|
|
713
|
+
/// Post propagator for \f$ (x \sim_r y) \Leftrightarrow b \f$
|
|
714
|
+
GECODE_SET_EXPORT void
|
|
715
|
+
rel(Home home, SetVar x, SetRelType r, SetVar y, BoolVar b);
|
|
716
|
+
|
|
717
|
+
/// Post propagator for \f$ s \sim_r \{x\}\f$
|
|
718
|
+
GECODE_SET_EXPORT void
|
|
719
|
+
rel(Home home, SetVar s, SetRelType r, IntVar x);
|
|
720
|
+
|
|
721
|
+
/// Post propagator for \f$ \{x\} \sim_r s\f$
|
|
722
|
+
GECODE_SET_EXPORT void
|
|
723
|
+
rel(Home home, IntVar x, SetRelType r, SetVar s);
|
|
724
|
+
|
|
725
|
+
/// Post propagator for \f$ (s \sim_r \{x\}) \Leftrightarrow b \f$
|
|
726
|
+
GECODE_SET_EXPORT void
|
|
727
|
+
rel(Home home, SetVar s, SetRelType r, IntVar x, BoolVar b);
|
|
728
|
+
|
|
729
|
+
/// Post propagator for \f$ (\{x\} \sim_r s) \Leftrightarrow b \f$
|
|
730
|
+
GECODE_SET_EXPORT void
|
|
731
|
+
rel(Home home, IntVar x, SetRelType r, SetVar s, BoolVar b);
|
|
732
|
+
|
|
733
|
+
/// Post propagator for \f$|s|\geq 1 \land \forall i\in s:\ i \sim_r x\f$
|
|
734
|
+
GECODE_SET_EXPORT void
|
|
735
|
+
rel(Home home, SetVar s, IntRelType r, IntVar x);
|
|
736
|
+
|
|
737
|
+
/// Post propagator for \f$|s|\geq 1 \land \forall i\in s:\ x \sim_r i\f$
|
|
738
|
+
GECODE_SET_EXPORT void
|
|
739
|
+
rel(Home home, IntVar x, IntRelType r, SetVar s);
|
|
740
|
+
|
|
741
|
+
//@}
|
|
742
|
+
|
|
743
|
+
/**
|
|
744
|
+
* \defgroup TaskModelSetRelOp Set operation/relation constraints
|
|
745
|
+
* \ingroup TaskModelSet
|
|
746
|
+
*
|
|
747
|
+
*/
|
|
748
|
+
|
|
749
|
+
//@{
|
|
750
|
+
|
|
751
|
+
/// Post propagator for \f$ (x \diamond_{\mathit{op}} y) \sim_r z \f$
|
|
752
|
+
GECODE_SET_EXPORT void
|
|
753
|
+
rel(Home home, SetVar x, SetOpType op, SetVar y, SetRelType r, SetVar z);
|
|
754
|
+
|
|
755
|
+
/// Post propagator for \f$ y = \diamond_{\mathit{op}} x\f$
|
|
756
|
+
GECODE_SET_EXPORT void
|
|
757
|
+
rel(Home home, SetOpType op, const SetVarArgs& x, SetVar y);
|
|
758
|
+
|
|
759
|
+
/// Post propagator for \f$ y = \diamond_{\mathit{op}} x \diamond_{\mathit{op}} z\f$
|
|
760
|
+
GECODE_SET_EXPORT void
|
|
761
|
+
rel(Home home, SetOpType op, const SetVarArgs& x, const IntSet& z, SetVar y);
|
|
762
|
+
|
|
763
|
+
/// Post propagator for \f$ y = \diamond_{\mathit{op}} x \diamond_{\mathit{op}} z\f$
|
|
764
|
+
GECODE_SET_EXPORT void
|
|
765
|
+
rel(Home home, SetOpType op, const IntVarArgs& x, const IntSet& z, SetVar y);
|
|
766
|
+
|
|
767
|
+
/// Post propagator for \f$ y = \diamond_{\mathit{op}} x\f$
|
|
768
|
+
GECODE_SET_EXPORT void
|
|
769
|
+
rel(Home home, SetOpType op, const IntVarArgs& x, SetVar y);
|
|
770
|
+
|
|
771
|
+
/// Post propagator for \f$ (x \diamond_{\mathit{op}} y) \sim_r z \f$
|
|
772
|
+
GECODE_SET_EXPORT void
|
|
773
|
+
rel(Home home, const IntSet& x, SetOpType op, SetVar y,
|
|
774
|
+
SetRelType r, SetVar z);
|
|
775
|
+
|
|
776
|
+
/// Post propagator for \f$ (x \diamond_{\mathit{op}} y) \sim_r z \f$
|
|
777
|
+
GECODE_SET_EXPORT void
|
|
778
|
+
rel(Home home, SetVar x, SetOpType op, const IntSet& y,
|
|
779
|
+
SetRelType r, SetVar z);
|
|
780
|
+
|
|
781
|
+
/// Post propagator for \f$ (x \diamond_{\mathit{op}} y) \sim_r z \f$
|
|
782
|
+
GECODE_SET_EXPORT void
|
|
783
|
+
rel(Home home, SetVar x, SetOpType op, SetVar y,
|
|
784
|
+
SetRelType r, const IntSet& z);
|
|
785
|
+
|
|
786
|
+
/// Post propagator for \f$ (x \diamond_{\mathit{op}} y) \sim_r z \f$
|
|
787
|
+
GECODE_SET_EXPORT void
|
|
788
|
+
rel(Home home, const IntSet& x, SetOpType op, SetVar y, SetRelType r,
|
|
789
|
+
const IntSet& z);
|
|
790
|
+
|
|
791
|
+
/// Post propagator for \f$ (x \diamond_{\mathit{op}} y) \sim_r z \f$
|
|
792
|
+
GECODE_SET_EXPORT void
|
|
793
|
+
rel(Home home, SetVar x, SetOpType op, const IntSet& y, SetRelType r,
|
|
794
|
+
const IntSet& z);
|
|
795
|
+
|
|
796
|
+
//@}
|
|
797
|
+
|
|
798
|
+
|
|
799
|
+
/**
|
|
800
|
+
* \defgroup TaskModelSetConvex Convexity constraints
|
|
801
|
+
* \ingroup TaskModelSet
|
|
802
|
+
*
|
|
803
|
+
*/
|
|
804
|
+
//@{
|
|
805
|
+
|
|
806
|
+
/// Post propagator that propagates that \a x is convex
|
|
807
|
+
GECODE_SET_EXPORT void
|
|
808
|
+
convex(Home home, SetVar x);
|
|
809
|
+
|
|
810
|
+
/// Post propagator that propagates that \a y is the convex hull of \a x
|
|
811
|
+
GECODE_SET_EXPORT void
|
|
812
|
+
convex(Home home, SetVar x, SetVar y);
|
|
813
|
+
|
|
814
|
+
//@}
|
|
815
|
+
|
|
816
|
+
/**
|
|
817
|
+
* \defgroup TaskModelSetSequence Sequence constraints
|
|
818
|
+
* \ingroup TaskModelSet
|
|
819
|
+
*
|
|
820
|
+
*/
|
|
821
|
+
//@{
|
|
822
|
+
|
|
823
|
+
/// Post propagator for \f$\forall 0\leq i< |x|-1 : \max(x_i)<\min(x_{i+1})\f$
|
|
824
|
+
GECODE_SET_EXPORT void
|
|
825
|
+
sequence(Home home, const SetVarArgs& x);
|
|
826
|
+
|
|
827
|
+
/// Post propagator for \f$\forall 0\leq i< |x|-1 : \max(x_i)<\min(x_{i+1})\f$ and \f$ x = \bigcup_{i\in\{0,\dots,n-1\}} y_i \f$
|
|
828
|
+
GECODE_SET_EXPORT void
|
|
829
|
+
sequence(Home home, const SetVarArgs& y, SetVar x);
|
|
830
|
+
|
|
831
|
+
//@}
|
|
832
|
+
|
|
833
|
+
/**
|
|
834
|
+
* \defgroup TaskModelSetDistinct Distinctness constraints
|
|
835
|
+
* \ingroup TaskModelSet
|
|
836
|
+
*
|
|
837
|
+
*/
|
|
838
|
+
//@{
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
/// Post propagator for \f$\forall 0\leq i\leq |x| : |x_i|=c\f$ and \f$\forall 0\leq i<j\leq |x| : |x_i\cap x_j|\leq 1\f$
|
|
842
|
+
GECODE_SET_EXPORT void
|
|
843
|
+
atmostOne(Home home, const SetVarArgs& x, unsigned int c);
|
|
844
|
+
|
|
845
|
+
//@}
|
|
846
|
+
|
|
847
|
+
/**
|
|
848
|
+
* \defgroup TaskModelSetConnect Connection constraints to integer variables
|
|
849
|
+
* \ingroup TaskModelSet
|
|
850
|
+
*
|
|
851
|
+
*/
|
|
852
|
+
|
|
853
|
+
//@{
|
|
854
|
+
|
|
855
|
+
/** \brief Post propagator that propagates that \a x is the
|
|
856
|
+
* minimal element of \a s, and that \a s is not empty */
|
|
857
|
+
GECODE_SET_EXPORT void
|
|
858
|
+
min(Home home, SetVar s, IntVar x);
|
|
859
|
+
|
|
860
|
+
/** \brief Post propagator that propagates that \a x is not the
|
|
861
|
+
* minimal element of \a s */
|
|
862
|
+
GECODE_SET_EXPORT void
|
|
863
|
+
notMin(Home home, SetVar s, IntVar x);
|
|
864
|
+
|
|
865
|
+
/** \brief Post reified propagator for \a b iff \a x is the
|
|
866
|
+
* minimal element of \a s */
|
|
867
|
+
GECODE_SET_EXPORT void
|
|
868
|
+
min(Home home, SetVar s, IntVar x, BoolVar b);
|
|
869
|
+
|
|
870
|
+
/** \brief Post propagator that propagates that \a x is the
|
|
871
|
+
* maximal element of \a s, and that \a s is not empty */
|
|
872
|
+
GECODE_SET_EXPORT void
|
|
873
|
+
max(Home home, SetVar s, IntVar x);
|
|
874
|
+
|
|
875
|
+
/** \brief Post propagator that propagates that \a x is not the
|
|
876
|
+
* maximal element of \a s */
|
|
877
|
+
GECODE_SET_EXPORT void
|
|
878
|
+
notMax(Home home, SetVar s, IntVar x);
|
|
879
|
+
|
|
880
|
+
/** \brief Post reified propagator for \a b iff \a x is the
|
|
881
|
+
* maximal element of \a s */
|
|
882
|
+
GECODE_SET_EXPORT void
|
|
883
|
+
max(Home home, SetVar s, IntVar x, BoolVar b);
|
|
884
|
+
|
|
885
|
+
/// Post propagator for \f$\{x_0,\dots,x_{n-1}\}=y\f$ and \f$x_i<x_{i+1}\f$
|
|
886
|
+
GECODE_SET_EXPORT void
|
|
887
|
+
channelSorted(Home home, const IntVarArgs& x, SetVar y);
|
|
888
|
+
|
|
889
|
+
/// Post propagator for \f$x_i=j \Leftrightarrow i\in y_j\f$
|
|
890
|
+
GECODE_SET_EXPORT void
|
|
891
|
+
channel(Home home, const IntVarArgs& x,const SetVarArgs& y);
|
|
892
|
+
|
|
893
|
+
/// Post propagator for \f$x_i=1 \Leftrightarrow i\in y\f$
|
|
894
|
+
GECODE_SET_EXPORT void
|
|
895
|
+
channel(Home home, const BoolVarArgs& x, SetVar y);
|
|
896
|
+
|
|
897
|
+
/// Post propagator for \f$ |s|=x \f$
|
|
898
|
+
GECODE_SET_EXPORT void
|
|
899
|
+
cardinality(Home home, SetVar s, IntVar x);
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
/**
|
|
903
|
+
* \brief Post propagator for \f$y = \mathrm{weight}(x)\f$
|
|
904
|
+
*
|
|
905
|
+
* The weights are given as pairs of elements and their weight:
|
|
906
|
+
* \f$\mathrm{weight}(\mathrm{elements}_i) = \mathrm{weights}_i\f$
|
|
907
|
+
*
|
|
908
|
+
* The upper bound of \a x is constrained to contain only elements from
|
|
909
|
+
* \a elements. The weight of a set is the sum of the weights of its
|
|
910
|
+
* elements.
|
|
911
|
+
*/
|
|
912
|
+
GECODE_SET_EXPORT void
|
|
913
|
+
weights(Home home, IntSharedArray elements, IntSharedArray weights,
|
|
914
|
+
SetVar x, IntVar y);
|
|
915
|
+
|
|
916
|
+
//@}
|
|
917
|
+
|
|
918
|
+
/**
|
|
919
|
+
* \defgroup TaskModelSetPrecede Value precedence constraints over set variables
|
|
920
|
+
* \ingroup TaskModelSet
|
|
921
|
+
*/
|
|
922
|
+
/** \brief Post propagator that \a s precedes \a t in \a x
|
|
923
|
+
*
|
|
924
|
+
* This constraint enforces that if there exists \f$j\f$ such that
|
|
925
|
+
* \f$s\notin x_j\land t\in x_j\f$, then there exists \f$i<j\f$ such that
|
|
926
|
+
* \f$s\in x_i\land t\notin x_i\f$.
|
|
927
|
+
* \ingroup TaskModelSetPrecede
|
|
928
|
+
*/
|
|
929
|
+
GECODE_SET_EXPORT void
|
|
930
|
+
precede(Home home, const SetVarArgs& x, int s, int t);
|
|
931
|
+
/** \brief Post propagator that successive values in \a c precede each other in \a x
|
|
932
|
+
* \ingroup TaskModelSetPrecede
|
|
933
|
+
*/
|
|
934
|
+
GECODE_SET_EXPORT void
|
|
935
|
+
precede(Home home, const SetVarArgs& x, const IntArgs& c);
|
|
936
|
+
|
|
937
|
+
/**
|
|
938
|
+
* \defgroup TaskModelSetElement Element constraints
|
|
939
|
+
* \ingroup TaskModelSet
|
|
940
|
+
*
|
|
941
|
+
* An element constraint selects zero, one or more elements out of a
|
|
942
|
+
* sequence. We write \f$ \langle x_0,\dots, x_{n-1} \rangle \f$ for the
|
|
943
|
+
* sequence, and \f$ [y] \f$ for the index variable.
|
|
944
|
+
*
|
|
945
|
+
* Set element constraints are closely related to the ::element constraint
|
|
946
|
+
* on integer variables.
|
|
947
|
+
*/
|
|
948
|
+
|
|
949
|
+
//@{
|
|
950
|
+
|
|
951
|
+
/**
|
|
952
|
+
* \brief Post propagator for \f$ z=\diamond_{\mathit{op}}\langle x_0,\dots,x_{n-1}\rangle[y] \f$
|
|
953
|
+
*
|
|
954
|
+
* If \a y is the empty set, the usual conventions for set operations apply:
|
|
955
|
+
* an empty union is empty, while an empty intersection is the universe,
|
|
956
|
+
* which can be given as the optional parameter \a u.
|
|
957
|
+
*
|
|
958
|
+
* The indices for \a y start at 0.
|
|
959
|
+
*/
|
|
960
|
+
GECODE_SET_EXPORT void
|
|
961
|
+
element(Home home, SetOpType op, const SetVarArgs& x, SetVar y, SetVar z,
|
|
962
|
+
const IntSet& u = IntSet(Set::Limits::min,Set::Limits::max));
|
|
963
|
+
|
|
964
|
+
/**
|
|
965
|
+
* \brief Post propagator for \f$ z=\diamond_{\mathit{op}}\langle \{x_0\},\dots,\{x_{n-1}\}\rangle[y] \f$
|
|
966
|
+
*
|
|
967
|
+
* If \a y is the empty set, the usual conventions for set operations apply:
|
|
968
|
+
* an empty union is empty, while an empty intersection is the universe,
|
|
969
|
+
* which can be given as the optional parameter \a u.
|
|
970
|
+
*
|
|
971
|
+
* The indices for \a y start at 0.
|
|
972
|
+
*/
|
|
973
|
+
GECODE_SET_EXPORT void
|
|
974
|
+
element(Home home, SetOpType op, const IntVarArgs& x, SetVar y, SetVar z,
|
|
975
|
+
const IntSet& u = IntSet(Set::Limits::min,Set::Limits::max));
|
|
976
|
+
|
|
977
|
+
/**
|
|
978
|
+
* \brief Post propagator for \f$ z=\diamond_{\mathit{op}}\langle x_0,\dots,x_{n-1}\rangle[y] \f$
|
|
979
|
+
*
|
|
980
|
+
* If \a y is the empty set, the usual conventions for set operations apply:
|
|
981
|
+
* an empty union is empty, while an empty intersection is the universe,
|
|
982
|
+
* which can be given as the optional parameter \a u.
|
|
983
|
+
*
|
|
984
|
+
* The indices for \a y start at 0.
|
|
985
|
+
*/
|
|
986
|
+
GECODE_SET_EXPORT void
|
|
987
|
+
element(Home home, SetOpType op, const IntSetArgs& x, SetVar y, SetVar z,
|
|
988
|
+
const IntSet& u = IntSet(Set::Limits::min,Set::Limits::max));
|
|
989
|
+
|
|
990
|
+
/**
|
|
991
|
+
* \brief Post propagator for \f$ z=\diamond_{\mathit{op}}\langle \{x_0\},\dots,\{x_{n-1}\}\rangle[y] \f$
|
|
992
|
+
*
|
|
993
|
+
* If \a y is the empty set, the usual conventions for set operations apply:
|
|
994
|
+
* an empty union is empty, while an empty intersection is the universe,
|
|
995
|
+
* which can be given as the optional parameter \a u.
|
|
996
|
+
*
|
|
997
|
+
* The indices for \a y start at 0.
|
|
998
|
+
*/
|
|
999
|
+
GECODE_SET_EXPORT void
|
|
1000
|
+
element(Home home, SetOpType op, const IntArgs& x, SetVar y, SetVar z,
|
|
1001
|
+
const IntSet& u = IntSet(Set::Limits::min,Set::Limits::max));
|
|
1002
|
+
|
|
1003
|
+
/**
|
|
1004
|
+
* \brief Post propagator for \f$ z=\langle x_0,\dots,x_{n-1}\rangle[y] \f$
|
|
1005
|
+
*
|
|
1006
|
+
* The indices for \a y start at 0.
|
|
1007
|
+
*/
|
|
1008
|
+
GECODE_SET_EXPORT void
|
|
1009
|
+
element(Home home, const SetVarArgs& x, IntVar y, SetVar z);
|
|
1010
|
+
|
|
1011
|
+
/**
|
|
1012
|
+
* \brief Post propagator for \f$ z=\langle s_0,\dots,s_{n-1}\rangle[y] \f$
|
|
1013
|
+
*
|
|
1014
|
+
* The indices for \a y start at 0.
|
|
1015
|
+
*/
|
|
1016
|
+
GECODE_SET_EXPORT void
|
|
1017
|
+
element(Home home, const IntSetArgs& s, IntVar y, SetVar z);
|
|
1018
|
+
|
|
1019
|
+
/** \brief Post propagator for \f$ a_{x+w\cdot y}=z\f$
|
|
1020
|
+
*
|
|
1021
|
+
* Throws an exception of type Set::ArgumentSizeMismatch, if
|
|
1022
|
+
* \f$ w\cdot h\neq|a|\f$.
|
|
1023
|
+
*/
|
|
1024
|
+
GECODE_SET_EXPORT void
|
|
1025
|
+
element(Home home, const IntSetArgs& a,
|
|
1026
|
+
IntVar x, int w, IntVar y, int h, SetVar z);
|
|
1027
|
+
/** \brief Post propagator for \f$ a_{x+w\cdot y}=z\f$
|
|
1028
|
+
*
|
|
1029
|
+
* Throws an exception of type Set::ArgumentSizeMismatch, if
|
|
1030
|
+
* \f$ w\cdot h\neq|a|\f$.
|
|
1031
|
+
*/
|
|
1032
|
+
GECODE_SET_EXPORT void
|
|
1033
|
+
element(Home home, const SetVarArgs& a,
|
|
1034
|
+
IntVar x, int w, IntVar y, int h, SetVar z);
|
|
1035
|
+
//@}
|
|
1036
|
+
|
|
1037
|
+
/**
|
|
1038
|
+
* \defgroup TaskModelSetExec Synchronized execution
|
|
1039
|
+
* \ingroup TaskModelSet
|
|
1040
|
+
*
|
|
1041
|
+
* Synchronized execution executes a function or a static member function
|
|
1042
|
+
* when a certain event happends.
|
|
1043
|
+
*
|
|
1044
|
+
* \ingroup TaskModelSet
|
|
1045
|
+
*/
|
|
1046
|
+
//@{
|
|
1047
|
+
/// Execute \a c when \a x becomes assigned
|
|
1048
|
+
GECODE_SET_EXPORT void
|
|
1049
|
+
wait(Home home, SetVar x, void (*c)(Space& home));
|
|
1050
|
+
/// Execute \a c when all variables in \a x become assigned
|
|
1051
|
+
GECODE_SET_EXPORT void
|
|
1052
|
+
wait(Home home, const SetVarArgs& x, void (*c)(Space& home));
|
|
1053
|
+
//@}
|
|
1054
|
+
|
|
1055
|
+
/**
|
|
1056
|
+
* \defgroup TaskModelSetBranch Branching
|
|
1057
|
+
* \ingroup TaskModelSet
|
|
1058
|
+
*/
|
|
1059
|
+
|
|
1060
|
+
//@{
|
|
1061
|
+
/// Which variable to select for branching
|
|
1062
|
+
enum SetVarBranch {
|
|
1063
|
+
SET_VAR_NONE = 0, ///< First unassigned
|
|
1064
|
+
SET_VAR_RND, ///< Random (uniform, for tie breaking)
|
|
1065
|
+
SET_VAR_DEGREE_MIN, ///< With smallest degree
|
|
1066
|
+
SET_VAR_DEGREE_MAX, ///< With largest degree
|
|
1067
|
+
SET_VAR_AFC_MIN, ///< With smallest accumulated failure count
|
|
1068
|
+
SET_VAR_AFC_MAX, ///< With largest accumulated failure count
|
|
1069
|
+
SET_VAR_MIN_MIN, ///< With smallest minimum unknown element
|
|
1070
|
+
SET_VAR_MIN_MAX, ///< With largest minimum unknown element
|
|
1071
|
+
SET_VAR_MAX_MIN, ///< With smallest maximum unknown element
|
|
1072
|
+
SET_VAR_MAX_MAX, ///< With largest maximum unknown element
|
|
1073
|
+
SET_VAR_SIZE_MIN, ///< With smallest unknown set
|
|
1074
|
+
SET_VAR_SIZE_MAX, ///< With largest unknown set
|
|
1075
|
+
SET_VAR_SIZE_DEGREE_MIN, ///< With smallest domain size divided by degree
|
|
1076
|
+
SET_VAR_SIZE_DEGREE_MAX, ///< With largest domain size divided by degree
|
|
1077
|
+
SET_VAR_SIZE_AFC_MIN, ///< With smallest domain size divided by accumulated failure count
|
|
1078
|
+
SET_VAR_SIZE_AFC_MAX ///< With largest domain size divided by accumulated failure count
|
|
1079
|
+
};
|
|
1080
|
+
|
|
1081
|
+
/// Which values to select first for branching
|
|
1082
|
+
enum SetValBranch {
|
|
1083
|
+
SET_VAL_MIN_INC, ///< Include smallest element
|
|
1084
|
+
SET_VAL_MIN_EXC, ///< Exclude smallest element
|
|
1085
|
+
SET_VAL_MED_INC, ///< Include median element (rounding downwards)
|
|
1086
|
+
SET_VAL_MED_EXC, ///< Exclude median element (rounding downwards)
|
|
1087
|
+
SET_VAL_MAX_INC, ///< Include largest element
|
|
1088
|
+
SET_VAL_MAX_EXC, ///< Exclude largest element
|
|
1089
|
+
SET_VAL_RND_INC, ///< Include random element
|
|
1090
|
+
SET_VAL_RND_EXC ///< Exclude random element
|
|
1091
|
+
};
|
|
1092
|
+
|
|
1093
|
+
/// Branch over \a x with variable selection \a vars and value selection \a vals
|
|
1094
|
+
GECODE_SET_EXPORT void
|
|
1095
|
+
branch(Home home, const SetVarArgs& x,
|
|
1096
|
+
SetVarBranch vars, SetValBranch vals,
|
|
1097
|
+
const VarBranchOptions& o_vars = VarBranchOptions::def,
|
|
1098
|
+
const ValBranchOptions& o_vals = ValBranchOptions::def);
|
|
1099
|
+
/// Branch over \a x with tie-breaking variable selection \a vars and value selection \a vals
|
|
1100
|
+
GECODE_SET_EXPORT void
|
|
1101
|
+
branch(Home home, const SetVarArgs& x,
|
|
1102
|
+
const TieBreakVarBranch<SetVarBranch>& vars, SetValBranch vals,
|
|
1103
|
+
const TieBreakVarBranchOptions& o_vars = TieBreakVarBranchOptions::def,
|
|
1104
|
+
const ValBranchOptions& o_vals = ValBranchOptions::def);
|
|
1105
|
+
/// Branch over \a x with value selection \a vals
|
|
1106
|
+
GECODE_SET_EXPORT void
|
|
1107
|
+
branch(Home home, SetVar x, SetValBranch vals,
|
|
1108
|
+
const ValBranchOptions& o_vals = ValBranchOptions::def);
|
|
1109
|
+
//@}
|
|
1110
|
+
|
|
1111
|
+
/**
|
|
1112
|
+
* \defgroup TaskModelSetAssign Assigning
|
|
1113
|
+
* \ingroup TaskModelSet
|
|
1114
|
+
*/
|
|
1115
|
+
//@{
|
|
1116
|
+
/// Which value to select for assignment
|
|
1117
|
+
enum SetAssign {
|
|
1118
|
+
SET_ASSIGN_MIN_INC, ///< Include smallest element
|
|
1119
|
+
SET_ASSIGN_MIN_EXC, ///< Exclude smallest element
|
|
1120
|
+
SET_ASSIGN_MED_INC, ///< Include median element (rounding downwards)
|
|
1121
|
+
SET_ASSIGN_MED_EXC, ///< Exclude median element (rounding downwards)
|
|
1122
|
+
SET_ASSIGN_MAX_INC, ///< Include largest element
|
|
1123
|
+
SET_ASSIGN_MAX_EXC, ///< Exclude largest element
|
|
1124
|
+
SET_ASSIGN_RND_INC, ///< Include random element
|
|
1125
|
+
SET_ASSIGN_RND_EXC ///< Exclude random element
|
|
1126
|
+
};
|
|
1127
|
+
|
|
1128
|
+
/// Assign all \a x with value selection \a vals
|
|
1129
|
+
GECODE_SET_EXPORT void
|
|
1130
|
+
assign(Home home, const SetVarArgs& x, SetAssign vals,
|
|
1131
|
+
const ValBranchOptions& o_vals = ValBranchOptions::def);
|
|
1132
|
+
/// Assign \a x with value selection \a vals
|
|
1133
|
+
GECODE_SET_EXPORT void
|
|
1134
|
+
assign(Home home, SetVar x, SetAssign vals,
|
|
1135
|
+
const ValBranchOptions& o_vals = ValBranchOptions::def);
|
|
1136
|
+
|
|
1137
|
+
//@}
|
|
1138
|
+
|
|
1139
|
+
}
|
|
1140
|
+
|
|
1141
|
+
#endif
|
|
1142
|
+
|
|
1143
|
+
// IFDEF: GECODE_HAS_SET_VARS
|
|
1144
|
+
// STATISTICS: set-post
|