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,353 @@
|
|
|
1
|
+
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Patrick Pekczynski <pekczynski@ps.uni-sb.de>
|
|
5
|
+
*
|
|
6
|
+
* Contributing authors:
|
|
7
|
+
* Christian Schulte <schulte@gecode.org>
|
|
8
|
+
*
|
|
9
|
+
* Copyright:
|
|
10
|
+
* Patrick Pekczynski, 2004
|
|
11
|
+
* Christian Schulte, 2007
|
|
12
|
+
*
|
|
13
|
+
* Last modified:
|
|
14
|
+
* $Date: 2011-06-17 00:13:18 +1000 (Fri, 17 Jun 2011) $ by $Author: schulte $
|
|
15
|
+
* $Revision: 12053 $
|
|
16
|
+
*
|
|
17
|
+
* This file is part of Gecode, the generic constraint
|
|
18
|
+
* development environment:
|
|
19
|
+
* http://www.gecode.org
|
|
20
|
+
*
|
|
21
|
+
* Permission is hereby granted, free of charge, to any person obtaining
|
|
22
|
+
* a copy of this software and associated documentation files (the
|
|
23
|
+
* "Software"), to deal in the Software without restriction, including
|
|
24
|
+
* without limitation the rights to use, copy, modify, merge, publish,
|
|
25
|
+
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
26
|
+
* permit persons to whom the Software is furnished to do so, subject to
|
|
27
|
+
* the following conditions:
|
|
28
|
+
*
|
|
29
|
+
* The above copyright notice and this permission notice shall be
|
|
30
|
+
* included in all copies or substantial portions of the Software.
|
|
31
|
+
*
|
|
32
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
33
|
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
34
|
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
35
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
36
|
+
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
37
|
+
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
38
|
+
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
39
|
+
*
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
#include <gecode/driver.hh>
|
|
43
|
+
#include <gecode/int.hh>
|
|
44
|
+
#include <gecode/minimodel.hh>
|
|
45
|
+
|
|
46
|
+
#include <algorithm>
|
|
47
|
+
#include <iomanip>
|
|
48
|
+
|
|
49
|
+
using namespace Gecode;
|
|
50
|
+
|
|
51
|
+
/// Entry in round robin schedule
|
|
52
|
+
class Play {
|
|
53
|
+
public:
|
|
54
|
+
int h; ///< home team
|
|
55
|
+
int a; ///< away team
|
|
56
|
+
int g; ///< game number
|
|
57
|
+
/// Default constructor
|
|
58
|
+
Play(void) : h(0), a(0), g(0) {}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/// Round robin schedule
|
|
62
|
+
class RRS {
|
|
63
|
+
protected:
|
|
64
|
+
/// Number of teams
|
|
65
|
+
const int teams;
|
|
66
|
+
/// Play information
|
|
67
|
+
Play* plays;
|
|
68
|
+
/// Return number of weeks
|
|
69
|
+
int weeks(void) const {
|
|
70
|
+
return teams-1;
|
|
71
|
+
}
|
|
72
|
+
/// Return number of periods
|
|
73
|
+
int periods(void) const {
|
|
74
|
+
return teams/2;
|
|
75
|
+
}
|
|
76
|
+
/// Game number for game between home team \a h and away team \a a
|
|
77
|
+
int gn(int h, int a) const {
|
|
78
|
+
return teams*(h-1) + a;
|
|
79
|
+
}
|
|
80
|
+
/// Play for period \a p and week \a w
|
|
81
|
+
Play& play(int p, int w) {
|
|
82
|
+
return plays[p*weeks() + w];
|
|
83
|
+
}
|
|
84
|
+
public:
|
|
85
|
+
/**
|
|
86
|
+
* \brief Build a feasible schedule
|
|
87
|
+
*
|
|
88
|
+
* The games of the first week are fixed as:
|
|
89
|
+
* \f$ \langle 1,2 \rangle \cup
|
|
90
|
+
* \{\langle p + 2, t - p + 1\rangle | p \geq 1\}\f$. \n
|
|
91
|
+
* The remaining games are computed by transforming a game
|
|
92
|
+
* \f$ \langle h, a, g \rangle \f$ from the previous week
|
|
93
|
+
* in a new game \f$ \langle h', a'\rangle \f$, where: \n
|
|
94
|
+
* \f$ h' = \left\{
|
|
95
|
+
* \begin{tabular}{l c l}
|
|
96
|
+
* 1 & & if $h = 1$ \\
|
|
97
|
+
* 2 & & if $h = t$ \\
|
|
98
|
+
* $h + 1$ & & otherwise
|
|
99
|
+
* \end{tabular}\right.
|
|
100
|
+
* \f$ and
|
|
101
|
+
* \f$ a' = \left\{
|
|
102
|
+
* \begin{tabular}{l c l}
|
|
103
|
+
* 2 & & if $h = t$ \\
|
|
104
|
+
* a + 1 & & otherwise
|
|
105
|
+
* \end{tabular}\right.
|
|
106
|
+
* \f$
|
|
107
|
+
*
|
|
108
|
+
*
|
|
109
|
+
*/
|
|
110
|
+
RRS(int t) : teams(t), plays(new Play[periods()*weeks()]) {
|
|
111
|
+
// Determine the first game (week 0 period 0)
|
|
112
|
+
play(0,0).h = 1;
|
|
113
|
+
play(0,0).a = 2;
|
|
114
|
+
play(0,0).g = 2;
|
|
115
|
+
|
|
116
|
+
// Determine the other games of the first week
|
|
117
|
+
for (int p=1; p<periods(); p++) {
|
|
118
|
+
play(p,0).h = (p + 1) + 1;
|
|
119
|
+
play(p,0).a = teams - (p + 1 - 2);
|
|
120
|
+
play(p,0).g = gn(play(p,0).h,play(p,0).a);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Compute the games for the subsequent weeks
|
|
124
|
+
for (int w=1; w<weeks(); w++) {
|
|
125
|
+
for (int p=0; p<periods(); p++) {
|
|
126
|
+
if (play(p,w-1).h == teams)
|
|
127
|
+
play(p,w).h = 2;
|
|
128
|
+
else if (play(p,w-1).h == 1)
|
|
129
|
+
play(p,w).h = 1;
|
|
130
|
+
else
|
|
131
|
+
play(p,w).h = play(p,w-1).h + 1;
|
|
132
|
+
if (play(p,w-1).a == teams)
|
|
133
|
+
play(p,w).a = 2;
|
|
134
|
+
else
|
|
135
|
+
play(p,w).a = play(p,w-1).a + 1;
|
|
136
|
+
|
|
137
|
+
// maintain symmetry for (h,a): h < a
|
|
138
|
+
if (play(p,w).h > play(p,w).a)
|
|
139
|
+
std::swap(play(p,w).h,play(p,w).a);
|
|
140
|
+
|
|
141
|
+
play(p,w).g = gn(play(p,w).h,play(p,w).a);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
}
|
|
146
|
+
/// Home, away, and game information
|
|
147
|
+
void hag(int w, IntArgs& h, IntArgs& a, IntArgs& g) {
|
|
148
|
+
for (int p=0; p<periods(); p++) {
|
|
149
|
+
h[p] = play(p,w).h;
|
|
150
|
+
a[p] = play(p,w).a;
|
|
151
|
+
g[p] = play(p,w).g;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/// Delete schedule
|
|
155
|
+
~RRS(void) {
|
|
156
|
+
delete [] plays;
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* \brief %Example: %Sports league scheduling
|
|
164
|
+
*
|
|
165
|
+
* -# There are \f$ t \f$ teams (\f$ t \f$ even).
|
|
166
|
+
* -# The season lasts \f$ t - 1 \f$ weeks.
|
|
167
|
+
* -# Each game between two different teams occurs exactly once.
|
|
168
|
+
* -# Every team plays one game in each week of the season.
|
|
169
|
+
* -# There are \f$ \displaystyle\frac{t}{2} \f$ periods and each week
|
|
170
|
+
* every period is scheduled for one game.
|
|
171
|
+
* -# No team plays more than twice in the same period over
|
|
172
|
+
* the course of the season.
|
|
173
|
+
*
|
|
174
|
+
* See also problem 26 at http://www.csplib.org/.
|
|
175
|
+
*
|
|
176
|
+
* \ingroup Example
|
|
177
|
+
*/
|
|
178
|
+
class SportsLeague : public Script {
|
|
179
|
+
protected:
|
|
180
|
+
const int teams; ///< number of teams
|
|
181
|
+
IntVarArray home; ///< home teams
|
|
182
|
+
IntVarArray away; ///< away teams
|
|
183
|
+
IntVarArray game; ///< game numbers
|
|
184
|
+
|
|
185
|
+
/// Return number of weeks
|
|
186
|
+
int weeks(void) const {
|
|
187
|
+
return teams-1;
|
|
188
|
+
}
|
|
189
|
+
/// Return number of periods
|
|
190
|
+
int periods(void) const {
|
|
191
|
+
return teams/2;
|
|
192
|
+
}
|
|
193
|
+
/// Home team in period \a p and week \a w
|
|
194
|
+
IntVar& h(int p, int w) {
|
|
195
|
+
return home[p*teams + w];
|
|
196
|
+
}
|
|
197
|
+
/// Home team in period \a p and week \a w
|
|
198
|
+
const IntVar& h(int p, int w) const {
|
|
199
|
+
return home[p*teams + w];
|
|
200
|
+
}
|
|
201
|
+
/// Away team in period \a p and week \a w
|
|
202
|
+
IntVar& a(int p, int w) {
|
|
203
|
+
return away[p*teams + w];
|
|
204
|
+
}
|
|
205
|
+
/// Away team in period \a p and week \a w
|
|
206
|
+
const IntVar& a(int p, int w) const {
|
|
207
|
+
return away[p*teams + w];
|
|
208
|
+
}
|
|
209
|
+
/// Return game number for game in period \a p and week \a w
|
|
210
|
+
IntVar& g(int p, int w) {
|
|
211
|
+
return game[p*weeks() + w];
|
|
212
|
+
}
|
|
213
|
+
/// Return game number for game in period \a p and week \a w
|
|
214
|
+
const IntVar& g(int p, int w) const {
|
|
215
|
+
return game[p*weeks() + w];
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
public:
|
|
219
|
+
/// Setup model
|
|
220
|
+
SportsLeague(const SizeOptions& opt) :
|
|
221
|
+
teams(opt.size()),
|
|
222
|
+
home(*this, periods() * teams, 1, weeks()),
|
|
223
|
+
away(*this, periods() * teams, 2, weeks()+1),
|
|
224
|
+
game(*this, weeks()*periods(), 2, teams*weeks())
|
|
225
|
+
{
|
|
226
|
+
// Initialize round robin schedule
|
|
227
|
+
RRS r(teams);
|
|
228
|
+
|
|
229
|
+
// Domain for gamenumber of period
|
|
230
|
+
for (int w=0; w<weeks(); w++) {
|
|
231
|
+
IntArgs rh(periods()), ra(periods()), rg(periods());
|
|
232
|
+
IntVarArgs n(*this,periods(),0,periods()-1);
|
|
233
|
+
|
|
234
|
+
distinct(*this, n, opt.icl());
|
|
235
|
+
|
|
236
|
+
r.hag(w,rh,ra,rg);
|
|
237
|
+
|
|
238
|
+
for (int p=0; p<periods(); p++) {
|
|
239
|
+
element(*this, rh, n[p], h(p,w));
|
|
240
|
+
element(*this, ra, n[p], a(p,w));
|
|
241
|
+
element(*this, rg, n[p], g(p,w));
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/// (h,a) and (a,h) are the same game, focus on home (that is, h<a)
|
|
246
|
+
for (int p=0; p<periods(); p++)
|
|
247
|
+
for (int w=0; w<teams; w++)
|
|
248
|
+
rel(*this, h(p,w), IRT_LE, a(p,w));
|
|
249
|
+
|
|
250
|
+
// Home teams in first week are ordered
|
|
251
|
+
{
|
|
252
|
+
IntVarArgs h0(periods());
|
|
253
|
+
for (int p=0; p<periods(); p++)
|
|
254
|
+
h0[p] = h(p,0);
|
|
255
|
+
rel(*this, h0, IRT_LE);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// Fix first pair
|
|
259
|
+
rel(*this, h(0,0), IRT_EQ, 1);
|
|
260
|
+
rel(*this, a(0,0), IRT_EQ, 2);
|
|
261
|
+
|
|
262
|
+
/// Column constraint: each team occurs exactly once
|
|
263
|
+
for (int w=0; w<teams; w++) {
|
|
264
|
+
IntVarArgs c(teams);
|
|
265
|
+
for (int p=0; p<periods(); p++) {
|
|
266
|
+
c[2*p] = h(p,w); c[2*p+1] = a(p,w);
|
|
267
|
+
}
|
|
268
|
+
distinct(*this, c, opt.icl());
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/// Row constraint: no team appears more than twice
|
|
272
|
+
for (int p=0; p<periods(); p++) {
|
|
273
|
+
IntVarArgs r(2*teams);
|
|
274
|
+
for (int t=0; t<teams; t++) {
|
|
275
|
+
r[2*t] = h(p,t);
|
|
276
|
+
r[2*t+1] = a(p,t);
|
|
277
|
+
}
|
|
278
|
+
IntArgs values(teams);
|
|
279
|
+
for (int i=1; i<=teams; i++)
|
|
280
|
+
values[i-1] = i;
|
|
281
|
+
count(*this, r, IntSet(2,2), values, opt.icl());
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// Redundant constraint
|
|
285
|
+
for (int p=0; p<periods(); p++)
|
|
286
|
+
for (int w=0; w<weeks(); w ++)
|
|
287
|
+
rel(*this, teams * h(p,w) + a(p,w) - g(p,w) == teams);
|
|
288
|
+
|
|
289
|
+
distinct(*this, game, opt.icl());
|
|
290
|
+
|
|
291
|
+
branch(*this, game, INT_VAR_NONE, INT_VAL_SPLIT_MIN);
|
|
292
|
+
}
|
|
293
|
+
/// Constructor for cloning \a s
|
|
294
|
+
SportsLeague(bool share, SportsLeague& s)
|
|
295
|
+
: Script(share, s), teams(s.teams) {
|
|
296
|
+
home.update(*this, share, s.home);
|
|
297
|
+
away.update(*this, share, s.away);
|
|
298
|
+
game.update(*this, share, s.game);
|
|
299
|
+
}
|
|
300
|
+
/// Copy during cloning
|
|
301
|
+
virtual Space*
|
|
302
|
+
copy(bool share) {
|
|
303
|
+
return new SportsLeague(share, *this);
|
|
304
|
+
}
|
|
305
|
+
/// Print solution
|
|
306
|
+
virtual void print(std::ostream& os) const {
|
|
307
|
+
// print period index
|
|
308
|
+
os << "\t ";
|
|
309
|
+
for (int p=0; p<periods(); p++) {
|
|
310
|
+
os << "P[";
|
|
311
|
+
os.width(2);
|
|
312
|
+
os << p << "] ";
|
|
313
|
+
}
|
|
314
|
+
os << std::endl;
|
|
315
|
+
// print entries
|
|
316
|
+
for (int w=0; w<weeks(); w++) {
|
|
317
|
+
os << "\tW[";
|
|
318
|
+
os.width(2);
|
|
319
|
+
os << w+1 << "]: ";
|
|
320
|
+
for (int p=0; p<periods(); p++) {
|
|
321
|
+
os.width(2);
|
|
322
|
+
os << h(p,w).val() << '-';
|
|
323
|
+
os.width(2);
|
|
324
|
+
os << a(p,w).val() << " ";
|
|
325
|
+
}
|
|
326
|
+
os << std::endl;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
/** \brief Main-function
|
|
333
|
+
* \relates SportsLeague
|
|
334
|
+
*/
|
|
335
|
+
int
|
|
336
|
+
main(int argc, char* argv[]) {
|
|
337
|
+
SizeOptions opt("Sports League Scheduling");
|
|
338
|
+
opt.icl(ICL_DOM);
|
|
339
|
+
opt.size(18);
|
|
340
|
+
opt.parse(argc,argv);
|
|
341
|
+
if (opt.size() < 5) {
|
|
342
|
+
std::cerr<< "No Solution for less than 5 teams!" << std::endl;
|
|
343
|
+
return 1;
|
|
344
|
+
}
|
|
345
|
+
if (opt.size() % 2 != 0) {
|
|
346
|
+
std::cerr << "Number of teams has to be even!" << std::endl;
|
|
347
|
+
return 1;
|
|
348
|
+
}
|
|
349
|
+
Script::run<SportsLeague, DFS,SizeOptions>(opt);
|
|
350
|
+
return 0;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
// STATISTICS: example-any
|
|
@@ -0,0 +1,654 @@
|
|
|
1
|
+
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Mikael Lagerkvist <lagerkvist@gecode.org>
|
|
5
|
+
*
|
|
6
|
+
* Copyright:
|
|
7
|
+
* Mikael Lagerkvist, 2008
|
|
8
|
+
*
|
|
9
|
+
* Last modified:
|
|
10
|
+
* $Date: 2011-05-11 20:44:17 +1000 (Wed, 11 May 2011) $ by $Author: tack $
|
|
11
|
+
* $Revision: 12001 $
|
|
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
|
+
#include <gecode/driver.hh>
|
|
39
|
+
#include <gecode/int.hh>
|
|
40
|
+
#include <gecode/minimodel.hh>
|
|
41
|
+
|
|
42
|
+
#include <fstream>
|
|
43
|
+
|
|
44
|
+
using namespace Gecode;
|
|
45
|
+
|
|
46
|
+
/** \brief Order-specifications
|
|
47
|
+
*
|
|
48
|
+
* Used in the \ref SteelMill example.
|
|
49
|
+
*
|
|
50
|
+
*/
|
|
51
|
+
//@{
|
|
52
|
+
typedef int (*order_t)[2]; ///< Type of the order-specification
|
|
53
|
+
extern const int order_weight; ///< Weight-position in order-array elements
|
|
54
|
+
extern const int order_color; ///< Color-position in order-array elements
|
|
55
|
+
//@}
|
|
56
|
+
|
|
57
|
+
/** \brief Constants for CSPLib instance of the Steel Mill Slab Design Problem.
|
|
58
|
+
*
|
|
59
|
+
* Used in the \ref SteelMill example.
|
|
60
|
+
*/
|
|
61
|
+
//@{
|
|
62
|
+
extern int csplib_capacities[]; ///< Capacities
|
|
63
|
+
extern unsigned int csplib_ncapacities; ///< Number of capacities
|
|
64
|
+
extern unsigned int csplib_maxcapacity; ///< Maximum capacity
|
|
65
|
+
extern int csplib_loss[]; ///< Loss for all sizes
|
|
66
|
+
extern int csplib_orders[][2]; ///< Orders
|
|
67
|
+
extern unsigned int csplib_ncolors; ///< Number of colors
|
|
68
|
+
extern unsigned int csplib_norders; ///< Number of orders
|
|
69
|
+
//@}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
/** \brief %SteelMillOptions for examples with size option and an additional
|
|
73
|
+
* optional file name parameter.
|
|
74
|
+
*
|
|
75
|
+
* Used in the \ref SteelMill example.
|
|
76
|
+
*/
|
|
77
|
+
class SteelMillOptions : public Options {
|
|
78
|
+
private:
|
|
79
|
+
unsigned int _size; ///< Size value
|
|
80
|
+
int* _capacities; ///< Capacities
|
|
81
|
+
int _ncapacities; ///< Number of capacities
|
|
82
|
+
int _maxcapacity; ///< Maximum capacity
|
|
83
|
+
int* _loss; ///< Loss for all sizes
|
|
84
|
+
order_t _orders; ///< Orders
|
|
85
|
+
int _ncolors; ///< Number of colors
|
|
86
|
+
unsigned int _norders; ///< Number of orders
|
|
87
|
+
public:
|
|
88
|
+
/// Initialize options for example with name \a n
|
|
89
|
+
SteelMillOptions(const char* n)
|
|
90
|
+
: Options(n), _size(csplib_norders),
|
|
91
|
+
_capacities(csplib_capacities), _ncapacities(csplib_ncapacities),
|
|
92
|
+
_maxcapacity(csplib_maxcapacity),
|
|
93
|
+
_loss(csplib_loss), _orders(&(csplib_orders[0])), _ncolors(csplib_ncolors),
|
|
94
|
+
_norders(csplib_norders) {}
|
|
95
|
+
/// Print help text
|
|
96
|
+
virtual void help(void);
|
|
97
|
+
/// Parse options from arguments \a argv (number is \a argc)
|
|
98
|
+
bool parse(int& argc, char* argv[]);
|
|
99
|
+
|
|
100
|
+
/// Return size
|
|
101
|
+
unsigned int size(void) const { return _size; }
|
|
102
|
+
/// Return capacities
|
|
103
|
+
int* capacities(void) const { return _capacities; }
|
|
104
|
+
/// Return number of capacities
|
|
105
|
+
int ncapacities(void) const { return _ncapacities; }
|
|
106
|
+
/// Return maximum of capacities
|
|
107
|
+
int maxcapacity(void) const { return _maxcapacity; }
|
|
108
|
+
/// Return loss values
|
|
109
|
+
int* loss(void) const { return _loss; }
|
|
110
|
+
/// Return orders
|
|
111
|
+
order_t orders(void) const { return _orders; }
|
|
112
|
+
/// Return number of colors
|
|
113
|
+
int ncolors(void) const { return _ncolors; }
|
|
114
|
+
/// Return number of orders
|
|
115
|
+
int norders(void) const { return _norders; }
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* \brief %Example: Steel-mill slab design problem
|
|
121
|
+
*
|
|
122
|
+
* This model solves the Steel Mill Slab Design Problem (Problem 38 in
|
|
123
|
+
* <a href="http://csplib.org">CSPLib</a>). The model is from Gargani
|
|
124
|
+
* and Refalo, "An efficient model and strategy for the steel mill
|
|
125
|
+
* slab design problem.", CP 2007, except that a decomposition of the
|
|
126
|
+
* packing constraint is used. The symmetry-breaking search is from
|
|
127
|
+
* Van Hentenryck and Michel, "The Steel Mill Slab Design Problem
|
|
128
|
+
* Revisited", CPAIOR 2008.
|
|
129
|
+
*
|
|
130
|
+
* The program accepts an optional argument for a data-file containing
|
|
131
|
+
* an instance of the problem. The format for the data-file is the following:
|
|
132
|
+
* <pre>
|
|
133
|
+
* "number of slab capacities" "sequence of capacities in increasing order"
|
|
134
|
+
* "number of colors"
|
|
135
|
+
* "number of orders"
|
|
136
|
+
* "size order 1" "color of order 1"
|
|
137
|
+
* "size order 2" "color of order 2"
|
|
138
|
+
* ...
|
|
139
|
+
* </pre>
|
|
140
|
+
* Hard instances are available from <a href=
|
|
141
|
+
* "http://becool.info.ucl.ac.be/steelmillslab">
|
|
142
|
+
* http://becool.info.ucl.ac.be/steelmillslab</a>.
|
|
143
|
+
*
|
|
144
|
+
* \ingroup Example
|
|
145
|
+
*
|
|
146
|
+
*/
|
|
147
|
+
class SteelMill : public MinimizeScript {
|
|
148
|
+
protected:
|
|
149
|
+
/** \name Instance specification
|
|
150
|
+
*/
|
|
151
|
+
//@{
|
|
152
|
+
int* capacities; ///< Capacities
|
|
153
|
+
int ncapacities; ///< Number of capacities
|
|
154
|
+
int maxcapacity; ///< Maximum capacity
|
|
155
|
+
int* loss; ///< Loss for all sizes
|
|
156
|
+
int ncolors; ///< Number of colors
|
|
157
|
+
order_t orders; ///< Orders
|
|
158
|
+
unsigned int norders; ///< Number of orders
|
|
159
|
+
unsigned int nslabs; ///< Number of slabs
|
|
160
|
+
//@}
|
|
161
|
+
|
|
162
|
+
/** \name Problem variables
|
|
163
|
+
*/
|
|
164
|
+
//@{
|
|
165
|
+
IntVarArray slab, ///< Slab assigned to order i
|
|
166
|
+
slabload, ///< Load of slab j
|
|
167
|
+
slabcost; ///< Cost of slab j
|
|
168
|
+
IntVar total_cost; ///< Total cost
|
|
169
|
+
//@}
|
|
170
|
+
|
|
171
|
+
public:
|
|
172
|
+
/// Branching variants
|
|
173
|
+
enum {
|
|
174
|
+
SYMMETRY_NONE, ///< Simple symmetry
|
|
175
|
+
SYMMETRY_BRANCHING ///< Breaking symmetries with symmetry
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
/// Actual model
|
|
179
|
+
SteelMill(const SteelMillOptions& opt)
|
|
180
|
+
: // Initialize instance data
|
|
181
|
+
capacities(opt.capacities()), ncapacities(opt.ncapacities()),
|
|
182
|
+
maxcapacity(opt.maxcapacity()), loss(opt.loss()),
|
|
183
|
+
ncolors(opt.ncolors()), orders(opt.orders()),
|
|
184
|
+
norders(opt.size()), nslabs(opt.size()),
|
|
185
|
+
// Initialize problem variables
|
|
186
|
+
slab(*this, norders, 0,nslabs-1),
|
|
187
|
+
slabload(*this, nslabs, 0,45),
|
|
188
|
+
slabcost(*this, nslabs, 0, Int::Limits::max),
|
|
189
|
+
total_cost(*this, 0, Int::Limits::max)
|
|
190
|
+
{
|
|
191
|
+
// Boolean variables for slab[o]==s
|
|
192
|
+
BoolVarArgs boolslab(norders*nslabs);
|
|
193
|
+
for (unsigned int i = 0; i < norders; ++i) {
|
|
194
|
+
BoolVarArgs tmp(nslabs);
|
|
195
|
+
for (int j = nslabs; j--; ) {
|
|
196
|
+
boolslab[j + i*nslabs] = tmp[j] = BoolVar(*this, 0, 1);
|
|
197
|
+
}
|
|
198
|
+
channel(*this, tmp, slab[i]);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// Packing constraints
|
|
202
|
+
for (unsigned int s = 0; s < nslabs; ++s) {
|
|
203
|
+
IntArgs c(norders);
|
|
204
|
+
BoolVarArgs x(norders);
|
|
205
|
+
for (int i = norders; i--; ) {
|
|
206
|
+
c[i] = orders[i][order_weight];
|
|
207
|
+
x[i] = boolslab[s + i*nslabs];
|
|
208
|
+
}
|
|
209
|
+
linear(*this, c, x, IRT_EQ, slabload[s]);
|
|
210
|
+
}
|
|
211
|
+
// Redundant packing constraint
|
|
212
|
+
int totalweight = 0;
|
|
213
|
+
for (unsigned int i = norders; i-- ; )
|
|
214
|
+
totalweight += orders[i][order_weight] ;
|
|
215
|
+
linear(*this, slabload, IRT_EQ, totalweight);
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
// Color constraints
|
|
219
|
+
IntArgs nofcolor(ncolors);
|
|
220
|
+
for (int c = ncolors; c--; ) {
|
|
221
|
+
nofcolor[c] = 0;
|
|
222
|
+
for (int o = norders; o--; ) {
|
|
223
|
+
if (orders[o][order_color] == c) nofcolor[c] += 1;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
BoolVar f(*this, 0, 0);
|
|
227
|
+
for (unsigned int s = 0; s < nslabs; ++s) {
|
|
228
|
+
BoolVarArgs hascolor(ncolors);
|
|
229
|
+
for (int c = ncolors; c--; ) {
|
|
230
|
+
if (nofcolor[c]) {
|
|
231
|
+
BoolVarArgs hasc(nofcolor[c]);
|
|
232
|
+
int pos = 0;
|
|
233
|
+
for (int o = norders; o--; ) {
|
|
234
|
+
if (orders[o][order_color] == c)
|
|
235
|
+
hasc[pos++] = boolslab[s + o*nslabs];
|
|
236
|
+
}
|
|
237
|
+
assert(pos == nofcolor[c]);
|
|
238
|
+
hascolor[c] = BoolVar(*this, 0, 1);
|
|
239
|
+
rel(*this, BOT_OR, hasc, hascolor[c]);
|
|
240
|
+
} else {
|
|
241
|
+
hascolor[c] = f;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
linear(*this, hascolor, IRT_LQ, 2);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// Compute slabcost
|
|
248
|
+
IntArgs l(maxcapacity, loss);
|
|
249
|
+
for (int s = nslabs; s--; ) {
|
|
250
|
+
element(*this, l, slabload[s], slabcost[s]);
|
|
251
|
+
}
|
|
252
|
+
linear(*this, slabcost, IRT_EQ, total_cost);
|
|
253
|
+
|
|
254
|
+
// Add branching
|
|
255
|
+
if (opt.symmetry() == SYMMETRY_BRANCHING) {
|
|
256
|
+
// Symmetry breaking branching
|
|
257
|
+
SteelMillBranch::post(*this);
|
|
258
|
+
} else { // opt.symmetry() == SYMMETRY_NONE
|
|
259
|
+
branch(*this, slab, INT_VAR_MAX_MIN, INT_VAL_MIN);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/// Print solution
|
|
264
|
+
virtual void
|
|
265
|
+
print(std::ostream& os) const {
|
|
266
|
+
os << "What slab=" << slab << std::endl;
|
|
267
|
+
os << "Slab load=" << slabload << std::endl;
|
|
268
|
+
os << "Slab cost=" << slabcost << std::endl;
|
|
269
|
+
os << "Total cost=" << total_cost << std::endl;
|
|
270
|
+
int nslabsused = 0;
|
|
271
|
+
int nslabscost = 0;
|
|
272
|
+
bool unassigned = false;
|
|
273
|
+
for (int i = nslabs; i--; ) {
|
|
274
|
+
if (!slabload[i].assigned() || !slabcost[i].assigned()) {
|
|
275
|
+
unassigned = true;
|
|
276
|
+
break;
|
|
277
|
+
}
|
|
278
|
+
if (slabload[i].min()>0) ++nslabsused;
|
|
279
|
+
if (slabcost[i].min()>0) ++nslabscost;
|
|
280
|
+
}
|
|
281
|
+
if (!unassigned)
|
|
282
|
+
os << "Number of slabs used=" << nslabsused
|
|
283
|
+
<< ", slabs with cost=" << nslabscost
|
|
284
|
+
<< std::endl;
|
|
285
|
+
os << std::endl;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/// Constructor for cloning \a s
|
|
289
|
+
SteelMill(bool share, SteelMill& s)
|
|
290
|
+
: MinimizeScript(share,s),
|
|
291
|
+
capacities(s.capacities), ncapacities(s.ncapacities),
|
|
292
|
+
maxcapacity(s.maxcapacity), loss(s.loss),
|
|
293
|
+
ncolors(s.ncolors), orders(s.orders),
|
|
294
|
+
norders(s.norders), nslabs(s.nslabs) {
|
|
295
|
+
slab.update(*this, share, s.slab);
|
|
296
|
+
slabload.update(*this, share, s.slabload);
|
|
297
|
+
slabcost.update(*this, share, s.slabcost);
|
|
298
|
+
total_cost.update(*this, share, s.total_cost);
|
|
299
|
+
}
|
|
300
|
+
/// Copy during cloning
|
|
301
|
+
virtual Space*
|
|
302
|
+
copy(bool share) {
|
|
303
|
+
return new SteelMill(share,*this);
|
|
304
|
+
}
|
|
305
|
+
/// Return solution cost
|
|
306
|
+
virtual IntVar cost(void) const {
|
|
307
|
+
return total_cost;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
/** \brief Custom brancher for steel mill slab design
|
|
312
|
+
*
|
|
313
|
+
* This class implements a custom brancher for SteelMill that
|
|
314
|
+
* considers all slabs with no order assigned to it currently to be
|
|
315
|
+
* symmetric.
|
|
316
|
+
*
|
|
317
|
+
* \relates SteelMill
|
|
318
|
+
*/
|
|
319
|
+
class SteelMillBranch : Brancher {
|
|
320
|
+
protected:
|
|
321
|
+
/// Cache of first unassigned value
|
|
322
|
+
mutable int start;
|
|
323
|
+
/// %Choice
|
|
324
|
+
class Choice : public Gecode::Choice {
|
|
325
|
+
public:
|
|
326
|
+
/// Position of variable
|
|
327
|
+
int pos;
|
|
328
|
+
/// Value of variable
|
|
329
|
+
int val;
|
|
330
|
+
/** Initialize choice for brancher \a b, number of
|
|
331
|
+
* alternatives \a a, position \a pos0, and value \a val0.
|
|
332
|
+
*/
|
|
333
|
+
Choice(const Brancher& b, unsigned int a, int pos0, int val0)
|
|
334
|
+
: Gecode::Choice(b,a), pos(pos0), val(val0) {}
|
|
335
|
+
/// Report size occupied
|
|
336
|
+
virtual size_t size(void) const {
|
|
337
|
+
return sizeof(Choice);
|
|
338
|
+
}
|
|
339
|
+
/// Archive into \a e
|
|
340
|
+
virtual void archive(Archive& e) const {
|
|
341
|
+
Gecode::Choice::archive(e);
|
|
342
|
+
e << alternatives() << pos << val;
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
/// Construct brancher
|
|
347
|
+
SteelMillBranch(Home home)
|
|
348
|
+
: Brancher(home), start(0) {}
|
|
349
|
+
/// Copy constructor
|
|
350
|
+
SteelMillBranch(Space& home, bool share, SteelMillBranch& b)
|
|
351
|
+
: Brancher(home, share, b), start(b.start) {
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
public:
|
|
355
|
+
/// Check status of brancher, return true if alternatives left.
|
|
356
|
+
virtual bool status(const Space& home) const {
|
|
357
|
+
const SteelMill& sm = static_cast<const SteelMill&>(home);
|
|
358
|
+
for (unsigned int i = start; i < sm.norders; ++i)
|
|
359
|
+
if (!sm.slab[i].assigned()) {
|
|
360
|
+
start = i;
|
|
361
|
+
return true;
|
|
362
|
+
}
|
|
363
|
+
// No non-assigned orders left
|
|
364
|
+
return false;
|
|
365
|
+
}
|
|
366
|
+
/// Return choice
|
|
367
|
+
virtual Gecode::Choice* choice(Space& home) {
|
|
368
|
+
SteelMill& sm = static_cast<SteelMill&>(home);
|
|
369
|
+
assert(!sm.slab[start].assigned());
|
|
370
|
+
// Find order with a) minimum size, b) largest weight
|
|
371
|
+
unsigned int size = sm.norders;
|
|
372
|
+
int weight = 0;
|
|
373
|
+
unsigned int pos = start;
|
|
374
|
+
for (unsigned int i = start; i<sm.norders; ++i) {
|
|
375
|
+
if (!sm.slab[i].assigned()) {
|
|
376
|
+
if (sm.slab[i].size() == size &&
|
|
377
|
+
sm.orders[i][order_weight] > weight) {
|
|
378
|
+
weight = sm.orders[i][order_weight];
|
|
379
|
+
pos = i;
|
|
380
|
+
} else if (sm.slab[i].size() < size) {
|
|
381
|
+
size = sm.slab[i].size();
|
|
382
|
+
weight = sm.orders[i][order_weight];
|
|
383
|
+
pos = i;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
unsigned int val = sm.slab[pos].min();
|
|
388
|
+
// Find first still empty slab (all such slabs are symmetric)
|
|
389
|
+
unsigned int firstzero = 0;
|
|
390
|
+
while (firstzero < sm.nslabs && sm.slabload[firstzero].min() > 0)
|
|
391
|
+
++firstzero;
|
|
392
|
+
assert(pos < sm.nslabs &&
|
|
393
|
+
val < sm.norders);
|
|
394
|
+
return new Choice(*this, (val<firstzero) ? 2 : 1, pos, val);
|
|
395
|
+
}
|
|
396
|
+
virtual Choice* choice(const Space&, Archive& e) {
|
|
397
|
+
unsigned int alt; int pos, val;
|
|
398
|
+
e >> alt >> pos >> val;
|
|
399
|
+
return new Choice(*this, alt, pos, val);
|
|
400
|
+
}
|
|
401
|
+
/// Perform commit for choice \a _c and alternative \a a
|
|
402
|
+
virtual ExecStatus commit(Space& home, const Gecode::Choice& _c,
|
|
403
|
+
unsigned int a) {
|
|
404
|
+
SteelMill& sm = static_cast<SteelMill&>(home);
|
|
405
|
+
const Choice& c = static_cast<const Choice&>(_c);
|
|
406
|
+
if (a)
|
|
407
|
+
return me_failed(Int::IntView(sm.slab[c.pos]).nq(home, c.val))
|
|
408
|
+
? ES_FAILED : ES_OK;
|
|
409
|
+
else
|
|
410
|
+
return me_failed(Int::IntView(sm.slab[c.pos]).eq(home, c.val))
|
|
411
|
+
? ES_FAILED : ES_OK;
|
|
412
|
+
}
|
|
413
|
+
/// Copy brancher
|
|
414
|
+
virtual Actor* copy(Space& home, bool share) {
|
|
415
|
+
return new (home) SteelMillBranch(home, share, *this);
|
|
416
|
+
}
|
|
417
|
+
/// Post brancher
|
|
418
|
+
static void post(Home home) {
|
|
419
|
+
(void) new (home) SteelMillBranch(home);
|
|
420
|
+
}
|
|
421
|
+
/// Delete brancher and return its size
|
|
422
|
+
virtual size_t dispose(Space&) {
|
|
423
|
+
return sizeof(*this);
|
|
424
|
+
}
|
|
425
|
+
};
|
|
426
|
+
};
|
|
427
|
+
|
|
428
|
+
/** \brief Main-function
|
|
429
|
+
* \relates SteelMill
|
|
430
|
+
*/
|
|
431
|
+
int
|
|
432
|
+
main(int argc, char* argv[]) {
|
|
433
|
+
SteelMillOptions opt("Steel Mill Slab design");
|
|
434
|
+
opt.symmetry(SteelMill::SYMMETRY_BRANCHING);
|
|
435
|
+
opt.symmetry(SteelMill::SYMMETRY_NONE,"none");
|
|
436
|
+
opt.symmetry(SteelMill::SYMMETRY_BRANCHING,"branching");
|
|
437
|
+
opt.solutions(0);
|
|
438
|
+
if (!opt.parse(argc,argv))
|
|
439
|
+
return 1;
|
|
440
|
+
Script::run<SteelMill,BAB,SteelMillOptions>(opt);
|
|
441
|
+
return 0;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
void
|
|
446
|
+
SteelMillOptions::help(void) {
|
|
447
|
+
Options::help();
|
|
448
|
+
std::cerr << "\t(string), optional" << std::endl
|
|
449
|
+
<< "\t\tBenchmark to load." << std::endl
|
|
450
|
+
<< "\t\tIf none is given, the standard CSPLib instance is used."
|
|
451
|
+
<< std::endl;
|
|
452
|
+
std::cerr << "\t(unsigned int), optional" << std::endl
|
|
453
|
+
<< "\t\tNumber of orders to use, in the interval [0..norders]."
|
|
454
|
+
<< std::endl
|
|
455
|
+
<< "\t\tIf none is given, all orders are used." << std::endl;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
bool
|
|
459
|
+
SteelMillOptions::parse(int& argc, char* argv[]) {
|
|
460
|
+
Options::parse(argc,argv);
|
|
461
|
+
// Check number of arguments
|
|
462
|
+
if (argc >= 4) {
|
|
463
|
+
std::cerr << "Too many arguments given, max two allowed (given={";
|
|
464
|
+
for (int i = 1; i < argc; ++i) {
|
|
465
|
+
std::cerr << "\"" << argv[i] << "\"";
|
|
466
|
+
if (i < argc-1) std::cerr << ",";
|
|
467
|
+
}
|
|
468
|
+
std::cerr << "})." << std::endl;
|
|
469
|
+
return false;
|
|
470
|
+
}
|
|
471
|
+
// Parse options
|
|
472
|
+
while (argc >= 2) {
|
|
473
|
+
bool issize = true;
|
|
474
|
+
for (int i = strlen(argv[argc-1]); i-- && issize; )
|
|
475
|
+
issize &= (isdigit(argv[argc-1][i]) != 0);
|
|
476
|
+
if (issize) {
|
|
477
|
+
_size = atoi(argv[argc-1]);
|
|
478
|
+
} else {
|
|
479
|
+
std::ifstream instance(argv[argc-1]);
|
|
480
|
+
if (instance.fail()) {
|
|
481
|
+
std::cerr << "Argument \"" << argv[argc-1]
|
|
482
|
+
<< "\" is neither an integer nor a readable file"
|
|
483
|
+
<< std::endl;
|
|
484
|
+
return false;
|
|
485
|
+
}
|
|
486
|
+
// Read file instance
|
|
487
|
+
instance >> _ncapacities;
|
|
488
|
+
_capacities = new int[_ncapacities];
|
|
489
|
+
_maxcapacity = -1;
|
|
490
|
+
for (int i = 0; i < _ncapacities; ++i) {
|
|
491
|
+
instance >> _capacities[i];
|
|
492
|
+
_maxcapacity = std::max(_maxcapacity, _capacities[i]);
|
|
493
|
+
}
|
|
494
|
+
instance >> _ncolors >> _norders;
|
|
495
|
+
_orders = new int[_norders][2];
|
|
496
|
+
for (unsigned int i = 0; i < _norders; ++i) {
|
|
497
|
+
instance >> _orders[i][order_weight] >> _orders[i][order_color];
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
--argc;
|
|
502
|
+
}
|
|
503
|
+
// Compute loss
|
|
504
|
+
{
|
|
505
|
+
_loss = new int[_maxcapacity+1];
|
|
506
|
+
_loss[0] = 0;
|
|
507
|
+
int currcap = 0;
|
|
508
|
+
for (int c = 1; c < _maxcapacity; ++c) {
|
|
509
|
+
if (c > _capacities[currcap]) ++currcap;
|
|
510
|
+
_loss[c] = _capacities[currcap] - c;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
// Set size, if none given
|
|
514
|
+
if (_size == 0) {
|
|
515
|
+
_size = _norders;
|
|
516
|
+
}
|
|
517
|
+
// Check size reasonability
|
|
518
|
+
if (_size == 0 || _size > _norders) {
|
|
519
|
+
std::cerr << "Size must be between 1 and " << _norders << std::endl;
|
|
520
|
+
return false;
|
|
521
|
+
}
|
|
522
|
+
return true;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
// Positions in order array
|
|
526
|
+
const int order_weight = 0;
|
|
527
|
+
const int order_color = 1;
|
|
528
|
+
|
|
529
|
+
// CSPLib instance
|
|
530
|
+
int csplib_capacities[] =
|
|
531
|
+
{12, 14, 17, 18, 19,
|
|
532
|
+
20, 23, 24, 25, 26,
|
|
533
|
+
27, 28, 29, 30, 32,
|
|
534
|
+
35, 39, 42, 43, 44};
|
|
535
|
+
unsigned int csplib_ncapacities = 20;
|
|
536
|
+
unsigned int csplib_maxcapacity = 44;
|
|
537
|
+
int csplib_loss[45];
|
|
538
|
+
unsigned int csplib_ncolors = 89;
|
|
539
|
+
unsigned int csplib_norders = 111;
|
|
540
|
+
int csplib_orders[][2] = {
|
|
541
|
+
{4, 1},
|
|
542
|
+
{22, 2},
|
|
543
|
+
{9, 3},
|
|
544
|
+
{5, 4},
|
|
545
|
+
{8, 5},
|
|
546
|
+
{3, 6},
|
|
547
|
+
{3, 4},
|
|
548
|
+
{4, 7},
|
|
549
|
+
{7, 4},
|
|
550
|
+
{7, 8},
|
|
551
|
+
{3, 6},
|
|
552
|
+
{2, 6},
|
|
553
|
+
{2, 4},
|
|
554
|
+
{8, 9},
|
|
555
|
+
{5, 10},
|
|
556
|
+
{7, 11},
|
|
557
|
+
{4, 7},
|
|
558
|
+
{7, 11},
|
|
559
|
+
{5, 10},
|
|
560
|
+
{7, 11},
|
|
561
|
+
{8, 9},
|
|
562
|
+
{3, 1},
|
|
563
|
+
{25, 12},
|
|
564
|
+
{14, 13},
|
|
565
|
+
{3, 6},
|
|
566
|
+
{22, 14},
|
|
567
|
+
{19, 15},
|
|
568
|
+
{19, 15},
|
|
569
|
+
{22, 16},
|
|
570
|
+
{22, 17},
|
|
571
|
+
{22, 18},
|
|
572
|
+
{20, 19},
|
|
573
|
+
{22, 20},
|
|
574
|
+
{5, 21},
|
|
575
|
+
{4, 22},
|
|
576
|
+
{10, 23},
|
|
577
|
+
{26, 24},
|
|
578
|
+
{17, 25},
|
|
579
|
+
{20, 26},
|
|
580
|
+
{16, 27},
|
|
581
|
+
{10, 28},
|
|
582
|
+
{19, 29},
|
|
583
|
+
{10, 30},
|
|
584
|
+
{10, 31},
|
|
585
|
+
{23, 32},
|
|
586
|
+
{22, 33},
|
|
587
|
+
{26, 34},
|
|
588
|
+
{27, 35},
|
|
589
|
+
{22, 36},
|
|
590
|
+
{27, 37},
|
|
591
|
+
{22, 38},
|
|
592
|
+
{22, 39},
|
|
593
|
+
{13, 40},
|
|
594
|
+
{14, 41},
|
|
595
|
+
{16, 27},
|
|
596
|
+
{26, 34},
|
|
597
|
+
{26, 42},
|
|
598
|
+
{27, 35},
|
|
599
|
+
{22, 36},
|
|
600
|
+
{20, 43},
|
|
601
|
+
{26, 24},
|
|
602
|
+
{22, 44},
|
|
603
|
+
{13, 45},
|
|
604
|
+
{19, 46},
|
|
605
|
+
{20, 47},
|
|
606
|
+
{16, 48},
|
|
607
|
+
{15, 49},
|
|
608
|
+
{17, 50},
|
|
609
|
+
{10, 28},
|
|
610
|
+
{20, 51},
|
|
611
|
+
{5, 52},
|
|
612
|
+
{26, 24},
|
|
613
|
+
{19, 53},
|
|
614
|
+
{15, 54},
|
|
615
|
+
{10, 55},
|
|
616
|
+
{10, 56},
|
|
617
|
+
{13, 57},
|
|
618
|
+
{13, 58},
|
|
619
|
+
{13, 59},
|
|
620
|
+
{12, 60},
|
|
621
|
+
{12, 61},
|
|
622
|
+
{18, 62},
|
|
623
|
+
{10, 63},
|
|
624
|
+
{18, 64},
|
|
625
|
+
{16, 65},
|
|
626
|
+
{20, 66},
|
|
627
|
+
{12, 67},
|
|
628
|
+
{6, 68},
|
|
629
|
+
{6, 68},
|
|
630
|
+
{15, 69},
|
|
631
|
+
{15, 70},
|
|
632
|
+
{15, 70},
|
|
633
|
+
{21, 71},
|
|
634
|
+
{30, 72},
|
|
635
|
+
{30, 73},
|
|
636
|
+
{30, 74},
|
|
637
|
+
{30, 75},
|
|
638
|
+
{23, 76},
|
|
639
|
+
{15, 77},
|
|
640
|
+
{15, 78},
|
|
641
|
+
{27, 79},
|
|
642
|
+
{27, 80},
|
|
643
|
+
{27, 81},
|
|
644
|
+
{27, 82},
|
|
645
|
+
{27, 83},
|
|
646
|
+
{27, 84},
|
|
647
|
+
{27, 79},
|
|
648
|
+
{27, 85},
|
|
649
|
+
{27, 86},
|
|
650
|
+
{10, 87},
|
|
651
|
+
{3, 88}
|
|
652
|
+
};
|
|
653
|
+
|
|
654
|
+
// STATISTICS: example-any
|