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,432 @@
|
|
|
1
|
+
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Christian Schulte <schulte@gecode.org>
|
|
5
|
+
* Guido Tack <tack@gecode.org>
|
|
6
|
+
*
|
|
7
|
+
* Copyright:
|
|
8
|
+
* Christian Schulte, 2009
|
|
9
|
+
* Guido Tack, 2010
|
|
10
|
+
*
|
|
11
|
+
* Last modified:
|
|
12
|
+
* $Date: 2011-07-14 02:56:36 +1000 (Thu, 14 Jul 2011) $ by $Author: tack $
|
|
13
|
+
* $Revision: 12195 $
|
|
14
|
+
*
|
|
15
|
+
* This file is part of Gecode, the generic constraint
|
|
16
|
+
* development environment:
|
|
17
|
+
* http://www.gecode.org
|
|
18
|
+
*
|
|
19
|
+
* Permission is hereby granted, free of charge, to any person obtaining
|
|
20
|
+
* a copy of this software and associated documentation files (the
|
|
21
|
+
* "Software"), to deal in the Software without restriction, including
|
|
22
|
+
* without limitation the rights to use, copy, modify, merge, publish,
|
|
23
|
+
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
24
|
+
* permit persons to whom the Software is furnished to do so, subject to
|
|
25
|
+
* the following conditions:
|
|
26
|
+
*
|
|
27
|
+
* The above copyright notice and this permission notice shall be
|
|
28
|
+
* included in all copies or substantial portions of the Software.
|
|
29
|
+
*
|
|
30
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
31
|
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
32
|
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
33
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
34
|
+
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
35
|
+
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
36
|
+
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
#include <gecode/int/cumulative.hh>
|
|
41
|
+
|
|
42
|
+
#include <algorithm>
|
|
43
|
+
|
|
44
|
+
namespace Gecode {
|
|
45
|
+
|
|
46
|
+
template<class Cap>
|
|
47
|
+
void
|
|
48
|
+
cumulative(Home home, Cap c, const TaskTypeArgs& t,
|
|
49
|
+
const IntVarArgs& s, const IntArgs& p, const IntArgs& u,
|
|
50
|
+
IntConLevel icl) {
|
|
51
|
+
using namespace Gecode::Int;
|
|
52
|
+
using namespace Gecode::Int::Cumulative;
|
|
53
|
+
if ((s.size() != p.size()) || (s.size() != u.size()) ||
|
|
54
|
+
(s.size() != t.size()))
|
|
55
|
+
throw Int::ArgumentSizeMismatch("Int::cumulative");
|
|
56
|
+
double w = 0.0;
|
|
57
|
+
for (int i=p.size(); i--; ) {
|
|
58
|
+
Int::Limits::nonnegative(p[i],"Int::cumulative");
|
|
59
|
+
Int::Limits::nonnegative(u[i],"Int::cumulative");
|
|
60
|
+
Int::Limits::check(static_cast<double>(s[i].max()) + p[i],
|
|
61
|
+
"Int::cumulative");
|
|
62
|
+
Int::Limits::double_check(static_cast<double>(p[i]) * u[i],
|
|
63
|
+
"Int::cumulative");
|
|
64
|
+
w += s[i].width();
|
|
65
|
+
}
|
|
66
|
+
Int::Limits::double_check(c.max() * w * s.size(),
|
|
67
|
+
"Int::cumulative");
|
|
68
|
+
if (home.failed()) return;
|
|
69
|
+
|
|
70
|
+
int minU = INT_MAX; int minU2 = INT_MAX; int maxU = INT_MIN;
|
|
71
|
+
for (int i=u.size(); i--;) {
|
|
72
|
+
if (u[i] < minU)
|
|
73
|
+
minU = u[i];
|
|
74
|
+
else if (u[i] < minU2)
|
|
75
|
+
minU2 = u[i];
|
|
76
|
+
if (u[i] > maxU)
|
|
77
|
+
maxU = u[i];
|
|
78
|
+
}
|
|
79
|
+
bool disjunctive =
|
|
80
|
+
(minU > c.max()/2) || (minU2 > c.max()/2 && minU+minU2>c.max());
|
|
81
|
+
if (disjunctive) {
|
|
82
|
+
GECODE_ME_FAIL(c.gq(home,maxU));
|
|
83
|
+
unary(home,t,s,p,icl);
|
|
84
|
+
} else {
|
|
85
|
+
bool fixp = true;
|
|
86
|
+
for (int i=t.size(); i--;)
|
|
87
|
+
if (t[i] != TT_FIXP) {
|
|
88
|
+
fixp = false; break;
|
|
89
|
+
}
|
|
90
|
+
if (fixp) {
|
|
91
|
+
TaskArray<ManFixPTask> tasks(home,s.size());
|
|
92
|
+
for (int i=0; i<s.size(); i++)
|
|
93
|
+
tasks[i].init(s[i],p[i],u[i]);
|
|
94
|
+
GECODE_ES_FAIL((ManProp<ManFixPTask,Cap>::post(home,c,tasks)));
|
|
95
|
+
} else {
|
|
96
|
+
TaskArray<ManFixPSETask> tasks(home,s.size());
|
|
97
|
+
for (int i=s.size(); i--;)
|
|
98
|
+
tasks[i].init(t[i],s[i],p[i],u[i]);
|
|
99
|
+
GECODE_ES_FAIL((ManProp<ManFixPSETask,Cap>::post(home,c,tasks)));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
void
|
|
105
|
+
cumulative(Home home, int c, const TaskTypeArgs& t,
|
|
106
|
+
const IntVarArgs& s, const IntArgs& p, const IntArgs& u,
|
|
107
|
+
IntConLevel icl) {
|
|
108
|
+
Int::Limits::nonnegative(c,"Int::cumulative");
|
|
109
|
+
cumulative(home,Int::ConstIntView(c),t,s,p,u,icl);
|
|
110
|
+
}
|
|
111
|
+
void
|
|
112
|
+
cumulative(Home home, IntVar c, const TaskTypeArgs& t,
|
|
113
|
+
const IntVarArgs& s, const IntArgs& p, const IntArgs& u,
|
|
114
|
+
IntConLevel icl) {
|
|
115
|
+
if (c.assigned())
|
|
116
|
+
cumulative(home,c.val(),t,s,p,u,icl);
|
|
117
|
+
else
|
|
118
|
+
cumulative(home,Int::IntView(c),t,s,p,u,icl);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
template<class Cap>
|
|
122
|
+
void
|
|
123
|
+
cumulative(Home home, Cap c, const TaskTypeArgs& t,
|
|
124
|
+
const IntVarArgs& s, const IntArgs& p, const IntArgs& u,
|
|
125
|
+
const BoolVarArgs& m, IntConLevel icl) {
|
|
126
|
+
using namespace Gecode::Int;
|
|
127
|
+
using namespace Gecode::Int::Cumulative;
|
|
128
|
+
if ((s.size() != p.size()) || (s.size() != u.size()) ||
|
|
129
|
+
(s.size() != t.size()) || (s.size() != m.size()))
|
|
130
|
+
throw Int::ArgumentSizeMismatch("Int::cumulative");
|
|
131
|
+
double w = 0.0;
|
|
132
|
+
for (int i=p.size(); i--; ) {
|
|
133
|
+
Int::Limits::nonnegative(p[i],"Int::cumulative");
|
|
134
|
+
Int::Limits::nonnegative(u[i],"Int::cumulative");
|
|
135
|
+
Int::Limits::check(static_cast<double>(s[i].max()) + p[i],
|
|
136
|
+
"Int::cumulative");
|
|
137
|
+
Int::Limits::double_check(static_cast<double>(p[i]) * u[i],
|
|
138
|
+
"Int::cumulative");
|
|
139
|
+
w += s[i].width();
|
|
140
|
+
}
|
|
141
|
+
Int::Limits::double_check(c.max() * w * s.size(),
|
|
142
|
+
"Int::cumulative");
|
|
143
|
+
if (home.failed()) return;
|
|
144
|
+
|
|
145
|
+
bool allMandatory = true;
|
|
146
|
+
for (int i=m.size(); i--;) {
|
|
147
|
+
if (!m[i].one()) {
|
|
148
|
+
allMandatory = false;
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (allMandatory) {
|
|
153
|
+
cumulative(home,c,t,s,p,u,icl);
|
|
154
|
+
} else {
|
|
155
|
+
bool fixp = true;
|
|
156
|
+
for (int i=t.size(); i--;)
|
|
157
|
+
if (t[i] != TT_FIXP) {
|
|
158
|
+
fixp = false; break;
|
|
159
|
+
}
|
|
160
|
+
if (fixp) {
|
|
161
|
+
TaskArray<OptFixPTask> tasks(home,s.size());
|
|
162
|
+
for (int i=0; i<s.size(); i++)
|
|
163
|
+
tasks[i].init(s[i],p[i],u[i],m[i]);
|
|
164
|
+
GECODE_ES_FAIL((OptProp<OptFixPTask,Cap>::post(home,c,tasks)));
|
|
165
|
+
} else {
|
|
166
|
+
TaskArray<OptFixPSETask> tasks(home,s.size());
|
|
167
|
+
for (int i=s.size(); i--;)
|
|
168
|
+
tasks[i].init(t[i],s[i],p[i],u[i],m[i]);
|
|
169
|
+
GECODE_ES_FAIL((OptProp<OptFixPSETask,Cap>::post(home,c,tasks)));
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
void
|
|
175
|
+
cumulative(Home home, int c, const TaskTypeArgs& t,
|
|
176
|
+
const IntVarArgs& s, const IntArgs& p, const IntArgs& u,
|
|
177
|
+
const BoolVarArgs& m, IntConLevel icl) {
|
|
178
|
+
Int::Limits::nonnegative(c,"Int::cumulative");
|
|
179
|
+
cumulative(home,Int::ConstIntView(c),t,s,p,u,m,icl);
|
|
180
|
+
}
|
|
181
|
+
void
|
|
182
|
+
cumulative(Home home, IntVar c, const TaskTypeArgs& t,
|
|
183
|
+
const IntVarArgs& s, const IntArgs& p, const IntArgs& u,
|
|
184
|
+
const BoolVarArgs& m, IntConLevel icl) {
|
|
185
|
+
if (c.assigned())
|
|
186
|
+
cumulative(home,c.val(),t,s,p,u,m,icl);
|
|
187
|
+
else
|
|
188
|
+
cumulative(home,Int::IntView(c),t,s,p,u,m,icl);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
template<class Cap>
|
|
192
|
+
void
|
|
193
|
+
cumulative(Home home, Cap c, const IntVarArgs& s,
|
|
194
|
+
const IntArgs& p, const IntArgs& u, IntConLevel icl) {
|
|
195
|
+
using namespace Gecode::Int;
|
|
196
|
+
using namespace Gecode::Int::Cumulative;
|
|
197
|
+
if ((s.size() != p.size()) || (s.size() != u.size()))
|
|
198
|
+
throw Int::ArgumentSizeMismatch("Int::cumulative");
|
|
199
|
+
double w = 0.0;
|
|
200
|
+
for (int i=p.size(); i--; ) {
|
|
201
|
+
Int::Limits::nonnegative(p[i],"Int::cumulative");
|
|
202
|
+
Int::Limits::nonnegative(u[i],"Int::cumulative");
|
|
203
|
+
Int::Limits::check(static_cast<double>(s[i].max()) + p[i],
|
|
204
|
+
"Int::cumulative");
|
|
205
|
+
Int::Limits::double_check(static_cast<double>(p[i]) * u[i],
|
|
206
|
+
"Int::cumulative");
|
|
207
|
+
w += s[i].width();
|
|
208
|
+
}
|
|
209
|
+
Int::Limits::double_check(c.max() * w * s.size(),
|
|
210
|
+
"Int::cumulative");
|
|
211
|
+
if (home.failed()) return;
|
|
212
|
+
|
|
213
|
+
int minU = INT_MAX; int minU2 = INT_MAX; int maxU = INT_MIN;
|
|
214
|
+
for (int i=u.size(); i--;) {
|
|
215
|
+
if (u[i] < minU)
|
|
216
|
+
minU = u[i];
|
|
217
|
+
else if (u[i] < minU2)
|
|
218
|
+
minU2 = u[i];
|
|
219
|
+
if (u[i] > maxU)
|
|
220
|
+
maxU = u[i];
|
|
221
|
+
}
|
|
222
|
+
bool disjunctive =
|
|
223
|
+
(minU > c.max()/2) || (minU2 > c.max()/2 && minU+minU2>c.max());
|
|
224
|
+
if (disjunctive) {
|
|
225
|
+
GECODE_ME_FAIL(c.gq(home,maxU));
|
|
226
|
+
unary(home,s,p,icl);
|
|
227
|
+
} else {
|
|
228
|
+
TaskArray<ManFixPTask> t(home,s.size());
|
|
229
|
+
for (int i=0; i<s.size(); i++) {
|
|
230
|
+
t[i].init(s[i],p[i],u[i]);
|
|
231
|
+
}
|
|
232
|
+
GECODE_ES_FAIL((ManProp<ManFixPTask,Cap>::post(home,c,t)));
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
void
|
|
237
|
+
cumulative(Home home, int c, const IntVarArgs& s,
|
|
238
|
+
const IntArgs& p, const IntArgs& u, IntConLevel icl) {
|
|
239
|
+
Int::Limits::nonnegative(c,"Int::cumulative");
|
|
240
|
+
cumulative(home,Int::ConstIntView(c),s,p,u,icl);
|
|
241
|
+
}
|
|
242
|
+
void
|
|
243
|
+
cumulative(Home home, IntVar c, const IntVarArgs& s,
|
|
244
|
+
const IntArgs& p, const IntArgs& u, IntConLevel icl) {
|
|
245
|
+
if (c.assigned())
|
|
246
|
+
cumulative(home,c.val(),s,p,u,icl);
|
|
247
|
+
else
|
|
248
|
+
cumulative(home,Int::IntView(c),s,p,u,icl);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
template<class Cap>
|
|
252
|
+
void
|
|
253
|
+
cumulative(Home home, Cap c, const IntVarArgs& s, const IntArgs& p,
|
|
254
|
+
const IntArgs& u, const BoolVarArgs& m, IntConLevel icl) {
|
|
255
|
+
using namespace Gecode::Int;
|
|
256
|
+
using namespace Gecode::Int::Cumulative;
|
|
257
|
+
if ((s.size() != p.size()) || (s.size() != u.size()) ||
|
|
258
|
+
(s.size() != m.size()))
|
|
259
|
+
throw Int::ArgumentSizeMismatch("Int::cumulative");
|
|
260
|
+
double w = 0.0;
|
|
261
|
+
for (int i=p.size(); i--; ) {
|
|
262
|
+
Int::Limits::nonnegative(p[i],"Int::cumulative");
|
|
263
|
+
Int::Limits::nonnegative(u[i],"Int::cumulative");
|
|
264
|
+
Int::Limits::check(static_cast<double>(s[i].max()) + p[i],
|
|
265
|
+
"Int::cumulative");
|
|
266
|
+
Int::Limits::double_check(static_cast<double>(p[i]) * u[i],
|
|
267
|
+
"Int::cumulative");
|
|
268
|
+
w += s[i].width();
|
|
269
|
+
}
|
|
270
|
+
Int::Limits::double_check(c.max() * w * s.size(),
|
|
271
|
+
"Int::cumulative");
|
|
272
|
+
if (home.failed()) return;
|
|
273
|
+
|
|
274
|
+
bool allMandatory = true;
|
|
275
|
+
for (int i=m.size(); i--;) {
|
|
276
|
+
if (!m[i].one()) {
|
|
277
|
+
allMandatory = false;
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
if (allMandatory) {
|
|
282
|
+
cumulative(home,c,s,p,u,icl);
|
|
283
|
+
} else {
|
|
284
|
+
TaskArray<OptFixPTask> t(home,s.size());
|
|
285
|
+
for (int i=0; i<s.size(); i++) {
|
|
286
|
+
t[i].init(s[i],p[i],u[i],m[i]);
|
|
287
|
+
}
|
|
288
|
+
GECODE_ES_FAIL((OptProp<OptFixPTask,Cap>::post(home,c,t)));
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
void
|
|
293
|
+
cumulative(Home home, int c, const IntVarArgs& s, const IntArgs& p,
|
|
294
|
+
const IntArgs& u, const BoolVarArgs& m, IntConLevel icl) {
|
|
295
|
+
Int::Limits::nonnegative(c,"Int::cumulative");
|
|
296
|
+
cumulative(home,Int::ConstIntView(c),s,p,u,m,icl);
|
|
297
|
+
}
|
|
298
|
+
void
|
|
299
|
+
cumulative(Home home, IntVar c, const IntVarArgs& s, const IntArgs& p,
|
|
300
|
+
const IntArgs& u, const BoolVarArgs& m, IntConLevel icl) {
|
|
301
|
+
if (c.assigned())
|
|
302
|
+
cumulative(home,c.val(),s,p,u,m,icl);
|
|
303
|
+
else
|
|
304
|
+
cumulative(home,Int::IntView(c),s,p,u,m,icl);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
template<class Cap>
|
|
308
|
+
void
|
|
309
|
+
cumulative(Home home, Cap c, const IntVarArgs& s,
|
|
310
|
+
const IntVarArgs& p, const IntVarArgs& e,
|
|
311
|
+
const IntArgs& u, IntConLevel icl) {
|
|
312
|
+
using namespace Gecode::Int;
|
|
313
|
+
using namespace Gecode::Int::Cumulative;
|
|
314
|
+
if ((s.size() != p.size()) || (s.size() != e.size()) ||
|
|
315
|
+
(s.size() != u.size()))
|
|
316
|
+
throw Int::ArgumentSizeMismatch("Int::cumulative");
|
|
317
|
+
double w = 0.0;
|
|
318
|
+
for (int i=p.size(); i--; ) {
|
|
319
|
+
rel(home, p[i], IRT_GQ, 0);
|
|
320
|
+
}
|
|
321
|
+
for (int i=p.size(); i--; ) {
|
|
322
|
+
Int::Limits::nonnegative(u[i],"Int::cumulative");
|
|
323
|
+
Int::Limits::check(static_cast<double>(s[i].max()) + p[i].max(),
|
|
324
|
+
"Int::cumulative");
|
|
325
|
+
Int::Limits::double_check(static_cast<double>(p[i].max()) * u[i],
|
|
326
|
+
"Int::cumulative");
|
|
327
|
+
w += s[i].width();
|
|
328
|
+
}
|
|
329
|
+
Int::Limits::double_check(c.max() * w * s.size(),
|
|
330
|
+
"Int::cumulative");
|
|
331
|
+
if (home.failed()) return;
|
|
332
|
+
|
|
333
|
+
bool fixP = true;
|
|
334
|
+
for (int i=p.size(); i--;) {
|
|
335
|
+
if (!p[i].assigned()) {
|
|
336
|
+
fixP = false;
|
|
337
|
+
break;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
if (fixP) {
|
|
341
|
+
IntArgs pp(p.size());
|
|
342
|
+
for (int i=p.size(); i--;)
|
|
343
|
+
pp[i] = p[i].val();
|
|
344
|
+
cumulative(home,c,s,pp,u,icl);
|
|
345
|
+
} else {
|
|
346
|
+
TaskArray<ManFlexTask> t(home,s.size());
|
|
347
|
+
for (int i=s.size(); i--; )
|
|
348
|
+
t[i].init(s[i],p[i],e[i],u[i]);
|
|
349
|
+
GECODE_ES_FAIL((ManProp<ManFlexTask,Cap>::post(home,c,t)));
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
void
|
|
354
|
+
cumulative(Home home, int c, const IntVarArgs& s,
|
|
355
|
+
const IntVarArgs& p, const IntVarArgs& e,
|
|
356
|
+
const IntArgs& u, IntConLevel icl) {
|
|
357
|
+
Int::Limits::nonnegative(c,"Int::cumulative");
|
|
358
|
+
cumulative(home,Int::ConstIntView(c),s,p,e,u,icl);
|
|
359
|
+
}
|
|
360
|
+
void
|
|
361
|
+
cumulative(Home home, IntVar c, const IntVarArgs& s,
|
|
362
|
+
const IntVarArgs& p, const IntVarArgs& e,
|
|
363
|
+
const IntArgs& u, IntConLevel icl) {
|
|
364
|
+
if (c.assigned())
|
|
365
|
+
cumulative(home,c.val(),s,p,e,u,icl);
|
|
366
|
+
else
|
|
367
|
+
cumulative(home,Int::IntView(c),s,p,e,u,icl);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
template<class Cap>
|
|
371
|
+
void
|
|
372
|
+
cumulative(Home home, Cap c, const IntVarArgs& s, const IntVarArgs& p,
|
|
373
|
+
const IntVarArgs& e, const IntArgs& u, const BoolVarArgs& m,
|
|
374
|
+
IntConLevel icl) {
|
|
375
|
+
using namespace Gecode::Int;
|
|
376
|
+
using namespace Gecode::Int::Cumulative;
|
|
377
|
+
if ((s.size() != p.size()) || (s.size() != u.size()) ||
|
|
378
|
+
(s.size() != e.size()) || (s.size() != m.size()))
|
|
379
|
+
throw Int::ArgumentSizeMismatch("Int::cumulative");
|
|
380
|
+
for (int i=p.size(); i--; ) {
|
|
381
|
+
rel(home, p[i], IRT_GQ, 0);
|
|
382
|
+
}
|
|
383
|
+
double w = 0.0;
|
|
384
|
+
for (int i=p.size(); i--; ) {
|
|
385
|
+
Int::Limits::nonnegative(u[i],"Int::cumulative");
|
|
386
|
+
Int::Limits::check(static_cast<double>(s[i].max()) + p[i].max(),
|
|
387
|
+
"Int::cumulative");
|
|
388
|
+
Int::Limits::double_check(static_cast<double>(p[i].max()) * u[i],
|
|
389
|
+
"Int::cumulative");
|
|
390
|
+
w += s[i].width();
|
|
391
|
+
}
|
|
392
|
+
Int::Limits::double_check(c.max() * w * s.size(),
|
|
393
|
+
"Int::cumulative");
|
|
394
|
+
if (home.failed()) return;
|
|
395
|
+
|
|
396
|
+
bool allMandatory = true;
|
|
397
|
+
for (int i=m.size(); i--;) {
|
|
398
|
+
if (!m[i].one()) {
|
|
399
|
+
allMandatory = false;
|
|
400
|
+
break;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
if (allMandatory) {
|
|
404
|
+
cumulative(home,c,s,p,e,u,icl);
|
|
405
|
+
} else {
|
|
406
|
+
TaskArray<OptFlexTask> t(home,s.size());
|
|
407
|
+
for (int i=s.size(); i--; )
|
|
408
|
+
t[i].init(s[i],p[i],e[i],u[i],m[i]);
|
|
409
|
+
GECODE_ES_FAIL((OptProp<OptFlexTask,Cap>::post(home,c,t)));
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
void
|
|
414
|
+
cumulative(Home home, int c, const IntVarArgs& s, const IntVarArgs& p,
|
|
415
|
+
const IntVarArgs& e, const IntArgs& u, const BoolVarArgs& m,
|
|
416
|
+
IntConLevel icl) {
|
|
417
|
+
Int::Limits::nonnegative(c,"Int::cumulative");
|
|
418
|
+
cumulative(home,Int::ConstIntView(c),s,p,e,u,m,icl);
|
|
419
|
+
}
|
|
420
|
+
void
|
|
421
|
+
cumulative(Home home, IntVar c, const IntVarArgs& s, const IntVarArgs& p,
|
|
422
|
+
const IntVarArgs& e, const IntArgs& u, const BoolVarArgs& m,
|
|
423
|
+
IntConLevel icl) {
|
|
424
|
+
if (c.assigned())
|
|
425
|
+
cumulative(home,c.val(),s,p,e,u,m,icl);
|
|
426
|
+
else
|
|
427
|
+
cumulative(home,Int::IntView(c),s,p,e,u,m,icl);
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
// STATISTICS: int-post
|
|
@@ -0,0 +1,745 @@
|
|
|
1
|
+
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Christian Schulte <schulte@gecode.org>
|
|
5
|
+
* Guido Tack <tack@gecode.org>
|
|
6
|
+
*
|
|
7
|
+
* Copyright:
|
|
8
|
+
* Christian Schulte, 2009
|
|
9
|
+
* Guido Tack, 2010
|
|
10
|
+
*
|
|
11
|
+
* Last modified:
|
|
12
|
+
* $Date: 2011-07-13 20:11:00 +1000 (Wed, 13 Jul 2011) $ by $Author: tack $
|
|
13
|
+
* $Revision: 12181 $
|
|
14
|
+
*
|
|
15
|
+
* This file is part of Gecode, the generic constraint
|
|
16
|
+
* development environment:
|
|
17
|
+
* http://www.gecode.org
|
|
18
|
+
*
|
|
19
|
+
* Permission is hereby granted, free of charge, to any person obtaining
|
|
20
|
+
* a copy of this software and associated documentation files (the
|
|
21
|
+
* "Software"), to deal in the Software without restriction, including
|
|
22
|
+
* without limitation the rights to use, copy, modify, merge, publish,
|
|
23
|
+
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
24
|
+
* permit persons to whom the Software is furnished to do so, subject to
|
|
25
|
+
* the following conditions:
|
|
26
|
+
*
|
|
27
|
+
* The above copyright notice and this permission notice shall be
|
|
28
|
+
* included in all copies or substantial portions of the Software.
|
|
29
|
+
*
|
|
30
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
31
|
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
32
|
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
33
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
34
|
+
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
35
|
+
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
36
|
+
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
#ifndef __GECODE_INT_CUMULATIVE_HH__
|
|
41
|
+
#define __GECODE_INT_CUMULATIVE_HH__
|
|
42
|
+
|
|
43
|
+
#include <gecode/int/task.hh>
|
|
44
|
+
#include <gecode/int/unary.hh>
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* \namespace Gecode::Int::Cumulative
|
|
48
|
+
*
|
|
49
|
+
* The edge-finding and overload-checking algorithms and data structures
|
|
50
|
+
* follow (mostly):
|
|
51
|
+
* Petr Vil�m, Max Energy Filtering Algorithm for Discrete
|
|
52
|
+
* Cumulative Resources, CP-AI-OR, 2009.
|
|
53
|
+
* Petr Vil�m, Edge Finding Filtering Algorithm for Discrete
|
|
54
|
+
* Cumulative Resources in O(kn log n), CP, 2009.
|
|
55
|
+
*
|
|
56
|
+
* \brief %Scheduling for cumulative resources
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
namespace Gecode { namespace Int { namespace Cumulative {
|
|
60
|
+
|
|
61
|
+
/// Cumulative (mandatory) task with fixed processing time
|
|
62
|
+
class ManFixPTask : public Unary::ManFixPTask {
|
|
63
|
+
protected:
|
|
64
|
+
/// Required capacity
|
|
65
|
+
int _c;
|
|
66
|
+
public:
|
|
67
|
+
/// \name Constructors and initialization
|
|
68
|
+
//@{
|
|
69
|
+
/// Default constructor
|
|
70
|
+
ManFixPTask(void);
|
|
71
|
+
/// Initialize task with start time \a s, processing time \a p, and required resource \a c
|
|
72
|
+
ManFixPTask(IntVar s, int p, int c);
|
|
73
|
+
/// Initialize task with start time \a s, processing time \a p, and required resource \a c
|
|
74
|
+
void init(IntVar s, int p, int c);
|
|
75
|
+
/// Initialize from task \a t
|
|
76
|
+
void init(const ManFixPTask& t);
|
|
77
|
+
//@}
|
|
78
|
+
|
|
79
|
+
/// \name Value access
|
|
80
|
+
//@{
|
|
81
|
+
/// Return required capacity
|
|
82
|
+
int c(void) const;
|
|
83
|
+
/// Return required energy
|
|
84
|
+
double e(void) const;
|
|
85
|
+
//@}
|
|
86
|
+
|
|
87
|
+
/// \name Cloning
|
|
88
|
+
//@{
|
|
89
|
+
/// Update this task to be a clone of task \a t
|
|
90
|
+
void update(Space& home, bool share, ManFixPTask& t);
|
|
91
|
+
//@}
|
|
92
|
+
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* \brief Print task in format est:[p,c]:lct
|
|
97
|
+
* \relates ManFixPTask
|
|
98
|
+
*/
|
|
99
|
+
template<class Char, class Traits>
|
|
100
|
+
std::basic_ostream<Char,Traits>&
|
|
101
|
+
operator <<(std::basic_ostream<Char,Traits>& os, const ManFixPTask& t);
|
|
102
|
+
|
|
103
|
+
/// Cumulative (mandatory) task with fixed processing, start or end time
|
|
104
|
+
class ManFixPSETask : public Unary::ManFixPSETask {
|
|
105
|
+
protected:
|
|
106
|
+
/// Required capacity
|
|
107
|
+
int _c;
|
|
108
|
+
public:
|
|
109
|
+
/// \name Constructors and initialization
|
|
110
|
+
//@{
|
|
111
|
+
/// Default constructor
|
|
112
|
+
ManFixPSETask(void);
|
|
113
|
+
/**
|
|
114
|
+
* \brief Initialize task
|
|
115
|
+
*
|
|
116
|
+
* Depending on \a t, \a s is either the end time (if \a t is FIXS)
|
|
117
|
+
* or the start time of the task, \a p is the fixed parameter,
|
|
118
|
+
* and \a c is the required capacity.
|
|
119
|
+
*/
|
|
120
|
+
ManFixPSETask(TaskType t, IntVar s, int p, int c);
|
|
121
|
+
/**
|
|
122
|
+
* \brief Initialize task
|
|
123
|
+
*
|
|
124
|
+
* Depending on \a t, \a s is either the end time (if \a t is FIXS)
|
|
125
|
+
* or the start time of the task, \a p is the fixed parameter,
|
|
126
|
+
* and \a c is the required capacity.
|
|
127
|
+
*/
|
|
128
|
+
void init(TaskType t, IntVar s, int p, int c);
|
|
129
|
+
/// Initialize from task \a t
|
|
130
|
+
void init(const ManFixPSETask& t);
|
|
131
|
+
//@}
|
|
132
|
+
|
|
133
|
+
/// \name Value access
|
|
134
|
+
//@{
|
|
135
|
+
/// Return required capacity
|
|
136
|
+
int c(void) const;
|
|
137
|
+
/// Return required energy
|
|
138
|
+
double e(void) const;
|
|
139
|
+
//@}
|
|
140
|
+
|
|
141
|
+
/// \name Cloning
|
|
142
|
+
//@{
|
|
143
|
+
/// Update this task to be a clone of task \a t
|
|
144
|
+
void update(Space& home, bool share, ManFixPSETask& t);
|
|
145
|
+
//@}
|
|
146
|
+
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* \brief Print task in format est:[p,c]:lct
|
|
151
|
+
* \relates ManFixPSETask
|
|
152
|
+
*/
|
|
153
|
+
template<class Char, class Traits>
|
|
154
|
+
std::basic_ostream<Char,Traits>&
|
|
155
|
+
operator <<(std::basic_ostream<Char,Traits>& os, const ManFixPSETask& t);
|
|
156
|
+
|
|
157
|
+
/// Cumulative (mandatory) task with flexible processing time
|
|
158
|
+
class ManFlexTask : public Unary::ManFlexTask {
|
|
159
|
+
protected:
|
|
160
|
+
/// Required capacity
|
|
161
|
+
int _c;
|
|
162
|
+
public:
|
|
163
|
+
/// \name Constructors and initialization
|
|
164
|
+
//@{
|
|
165
|
+
/// Default constructor
|
|
166
|
+
ManFlexTask(void);
|
|
167
|
+
/// Initialize with start time \a s, processing time \a p, end time \a e
|
|
168
|
+
ManFlexTask(IntVar s, IntVar p, IntVar e, int c);
|
|
169
|
+
/// Initialize with start time \a s, processing time \a p, end time \a e
|
|
170
|
+
void init(IntVar s, IntVar p, IntVar e, int c);
|
|
171
|
+
/// Initialize from task \a t
|
|
172
|
+
void init(const ManFlexTask& t);
|
|
173
|
+
//@}
|
|
174
|
+
|
|
175
|
+
/// \name Value access
|
|
176
|
+
//@{
|
|
177
|
+
/// Return required capacity
|
|
178
|
+
int c(void) const;
|
|
179
|
+
/// Return required energy
|
|
180
|
+
double e(void) const;
|
|
181
|
+
//@}
|
|
182
|
+
|
|
183
|
+
/// \name Cloning
|
|
184
|
+
//@{
|
|
185
|
+
/// Update this task to be a clone of task \a t
|
|
186
|
+
void update(Space& home, bool share, ManFlexTask& t);
|
|
187
|
+
//@}
|
|
188
|
+
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* \brief Print task in format est:[p,c]:lct
|
|
193
|
+
* \relates ManFlexTask
|
|
194
|
+
*/
|
|
195
|
+
template<class Char, class Traits>
|
|
196
|
+
std::basic_ostream<Char,Traits>&
|
|
197
|
+
operator <<(std::basic_ostream<Char,Traits>& os, const ManFlexTask& t);
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
/// Cumulative optional task with fixed processing time
|
|
201
|
+
class OptFixPTask : public ManToOptTask<ManFixPTask> {
|
|
202
|
+
protected:
|
|
203
|
+
using ManToOptTask<ManFixPTask>::_m;
|
|
204
|
+
public:
|
|
205
|
+
/// \name Constructors and initialization
|
|
206
|
+
//@{
|
|
207
|
+
/// Default constructor
|
|
208
|
+
OptFixPTask(void);
|
|
209
|
+
/// Initialize with start time \a s, processing time \a p, required capacity \a c, and mandatory flag \a m
|
|
210
|
+
OptFixPTask(IntVar s, int p, int c, BoolVar m);
|
|
211
|
+
/// Initialize with start time \a s, processing time \a p, required capacity \a c, and mandatory flag \a m
|
|
212
|
+
void init(IntVar s, int p, int c, BoolVar m);
|
|
213
|
+
//@}
|
|
214
|
+
/// Cast to corresponding unary task
|
|
215
|
+
operator Unary::OptFixPTask (void);
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* \brief Print optional task in format est:[p,c]:lct:m
|
|
220
|
+
* \relates OptFixPTask
|
|
221
|
+
*/
|
|
222
|
+
template<class Char, class Traits>
|
|
223
|
+
std::basic_ostream<Char,Traits>&
|
|
224
|
+
operator <<(std::basic_ostream<Char,Traits>& os, const OptFixPTask& t);
|
|
225
|
+
|
|
226
|
+
/// Cumulative optional task with fixed processing, start or end time
|
|
227
|
+
class OptFixPSETask : public ManToOptTask<ManFixPSETask> {
|
|
228
|
+
protected:
|
|
229
|
+
using ManToOptTask<ManFixPSETask>::_m;
|
|
230
|
+
public:
|
|
231
|
+
/// \name Constructors and initialization
|
|
232
|
+
//@{
|
|
233
|
+
/// Default constructor
|
|
234
|
+
OptFixPSETask(void);
|
|
235
|
+
/// Initialize with start time \a s, processing time \a p, required capacity \a c, and mandatory flag \a m
|
|
236
|
+
OptFixPSETask(TaskType t, IntVar s, int p, int c, BoolVar m);
|
|
237
|
+
/// Initialize with start time \a s, processing time \a p, required capacity \a c, and mandatory flag \a m
|
|
238
|
+
void init(TaskType t, IntVar s, int p, int c, BoolVar m);
|
|
239
|
+
//@}
|
|
240
|
+
/// Cast to corresponding unary task
|
|
241
|
+
operator Unary::OptFixPSETask (void);
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* \brief Print optional task in format est:[p,c]:lct:m
|
|
246
|
+
* \relates OptFixPSETask
|
|
247
|
+
*/
|
|
248
|
+
template<class Char, class Traits>
|
|
249
|
+
std::basic_ostream<Char,Traits>&
|
|
250
|
+
operator <<(std::basic_ostream<Char,Traits>& os, const OptFixPSETask& t);
|
|
251
|
+
|
|
252
|
+
/// %Cumulative optional task with flexible processing time
|
|
253
|
+
class OptFlexTask : public ManToOptTask<ManFlexTask> {
|
|
254
|
+
protected:
|
|
255
|
+
using ManToOptTask<ManFlexTask>::_m;
|
|
256
|
+
public:
|
|
257
|
+
/// \name Constructors and initialization
|
|
258
|
+
//@{
|
|
259
|
+
/// Default constructor
|
|
260
|
+
OptFlexTask(void);
|
|
261
|
+
/// Initialize with start time \a s, processing time \a p, end time \a e, and mandatory flag \a m
|
|
262
|
+
OptFlexTask(IntVar s, IntVar p, IntVar e, int c, BoolVar m);
|
|
263
|
+
/// Initialize with start time \a s, processing time \a p, end time \a e, and mandatory flag \a m
|
|
264
|
+
void init(IntVar s, IntVar p, IntVar e, int c, BoolVar m);
|
|
265
|
+
//@}
|
|
266
|
+
/// Cast to corresponding unary task
|
|
267
|
+
operator Unary::OptFlexTask (void);
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* \brief Print optional task in format est:lst:pmin:pmax:c:ect:lct:m
|
|
272
|
+
* \relates OptFlexTask
|
|
273
|
+
*/
|
|
274
|
+
template<class Char, class Traits>
|
|
275
|
+
std::basic_ostream<Char,Traits>&
|
|
276
|
+
operator <<(std::basic_ostream<Char,Traits>& os, const OptFlexTask& t);
|
|
277
|
+
|
|
278
|
+
}}}
|
|
279
|
+
|
|
280
|
+
#include <gecode/int/cumulative/task.hpp>
|
|
281
|
+
|
|
282
|
+
namespace Gecode { namespace Int { namespace Cumulative {
|
|
283
|
+
|
|
284
|
+
/// Forward mandatory fixed task view
|
|
285
|
+
typedef ManFixPTask ManFixPTaskFwd;
|
|
286
|
+
|
|
287
|
+
/// Backward (dual) mandatory fixed task view
|
|
288
|
+
typedef FwdToBwd<ManFixPTaskFwd> ManFixPTaskBwd;
|
|
289
|
+
|
|
290
|
+
/// Forward mandatory fixed task view
|
|
291
|
+
typedef ManFixPSETask ManFixPSETaskFwd;
|
|
292
|
+
|
|
293
|
+
/// Backward (dual) mandatory fixed task view
|
|
294
|
+
typedef FwdToBwd<ManFixPSETaskFwd> ManFixPSETaskBwd;
|
|
295
|
+
|
|
296
|
+
/// Forward optional fixed task view
|
|
297
|
+
typedef OptFixPTask OptFixPTaskFwd;
|
|
298
|
+
|
|
299
|
+
/// Backward (dual) optional fixed task view
|
|
300
|
+
typedef FwdToBwd<OptFixPTaskFwd> OptFixPTaskBwd;
|
|
301
|
+
|
|
302
|
+
/// Forward optional fixed task view
|
|
303
|
+
typedef OptFixPSETask OptFixPSETaskFwd;
|
|
304
|
+
|
|
305
|
+
/// Backward (dual) optional fixed task view
|
|
306
|
+
typedef FwdToBwd<OptFixPSETaskFwd> OptFixPSETaskBwd;
|
|
307
|
+
|
|
308
|
+
/// Forward mandatory flexible task view
|
|
309
|
+
typedef ManFlexTask ManFlexTaskFwd;
|
|
310
|
+
|
|
311
|
+
/// Backward (dual) mandatory flexible task view
|
|
312
|
+
typedef FwdToBwd<ManFlexTaskFwd> ManFlexTaskBwd;
|
|
313
|
+
|
|
314
|
+
/// Forward optional flexible task view
|
|
315
|
+
typedef OptFlexTask OptFlexTaskFwd;
|
|
316
|
+
|
|
317
|
+
/// Backward (dual) optional flexible task view
|
|
318
|
+
typedef FwdToBwd<OptFlexTaskFwd> OptFlexTaskBwd;
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* \brief Print backward task view in format est:p:lct
|
|
323
|
+
* \relates ManFixPTaskBwd
|
|
324
|
+
*/
|
|
325
|
+
template<class Char, class Traits>
|
|
326
|
+
std::basic_ostream<Char,Traits>&
|
|
327
|
+
operator <<(std::basic_ostream<Char,Traits>& os, const ManFixPTaskBwd& t);
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* \brief Print backward task view in format est:p:lct
|
|
331
|
+
* \relates ManFixPSETaskBwd
|
|
332
|
+
*/
|
|
333
|
+
template<class Char, class Traits>
|
|
334
|
+
std::basic_ostream<Char,Traits>&
|
|
335
|
+
operator <<(std::basic_ostream<Char,Traits>& os, const ManFixPSETaskBwd& t);
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* \brief Print optional backward task view in format est:p:lct:m
|
|
339
|
+
* \relates OptFixPTaskBwd
|
|
340
|
+
*/
|
|
341
|
+
template<class Char, class Traits>
|
|
342
|
+
std::basic_ostream<Char,Traits>&
|
|
343
|
+
operator <<(std::basic_ostream<Char,Traits>& os, const OptFixPTaskBwd& t);
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* \brief Print optional backward task view in format est:p:lct:m
|
|
347
|
+
* \relates OptFixPSETaskBwd
|
|
348
|
+
*/
|
|
349
|
+
template<class Char, class Traits>
|
|
350
|
+
std::basic_ostream<Char,Traits>&
|
|
351
|
+
operator <<(std::basic_ostream<Char,Traits>& os, const OptFixPSETaskBwd& t);
|
|
352
|
+
|
|
353
|
+
}}}
|
|
354
|
+
|
|
355
|
+
#include <gecode/int/cumulative/task-view.hpp>
|
|
356
|
+
|
|
357
|
+
namespace Gecode { namespace Int {
|
|
358
|
+
|
|
359
|
+
/// Task view traits for forward task views
|
|
360
|
+
template<>
|
|
361
|
+
class TaskViewTraits<Cumulative::ManFixPTaskFwd> {
|
|
362
|
+
public:
|
|
363
|
+
/// The task type
|
|
364
|
+
typedef Cumulative::ManFixPTask Task;
|
|
365
|
+
};
|
|
366
|
+
|
|
367
|
+
/// Task view traits for backward task views
|
|
368
|
+
template<>
|
|
369
|
+
class TaskViewTraits<Cumulative::ManFixPTaskBwd> {
|
|
370
|
+
public:
|
|
371
|
+
/// The task type
|
|
372
|
+
typedef Cumulative::ManFixPTask Task;
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
/// Task view traits for forward task views
|
|
376
|
+
template<>
|
|
377
|
+
class TaskViewTraits<Cumulative::ManFixPSETaskFwd> {
|
|
378
|
+
public:
|
|
379
|
+
/// The task type
|
|
380
|
+
typedef Cumulative::ManFixPSETask Task;
|
|
381
|
+
};
|
|
382
|
+
|
|
383
|
+
/// Task view traits for backward task views
|
|
384
|
+
template<>
|
|
385
|
+
class TaskViewTraits<Cumulative::ManFixPSETaskBwd> {
|
|
386
|
+
public:
|
|
387
|
+
/// The task type
|
|
388
|
+
typedef Cumulative::ManFixPSETask Task;
|
|
389
|
+
};
|
|
390
|
+
|
|
391
|
+
/// Task view traits for forward optional task views
|
|
392
|
+
template<>
|
|
393
|
+
class TaskViewTraits<Cumulative::OptFixPTaskFwd> {
|
|
394
|
+
public:
|
|
395
|
+
/// The task type
|
|
396
|
+
typedef Cumulative::OptFixPTask Task;
|
|
397
|
+
};
|
|
398
|
+
|
|
399
|
+
/// Task view traits for backward task views
|
|
400
|
+
template<>
|
|
401
|
+
class TaskViewTraits<Cumulative::OptFixPTaskBwd> {
|
|
402
|
+
public:
|
|
403
|
+
/// The task type
|
|
404
|
+
typedef Cumulative::OptFixPTask Task;
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
/// Task view traits for forward optional task views
|
|
408
|
+
template<>
|
|
409
|
+
class TaskViewTraits<Cumulative::OptFixPSETaskFwd> {
|
|
410
|
+
public:
|
|
411
|
+
/// The task type
|
|
412
|
+
typedef Cumulative::OptFixPSETask Task;
|
|
413
|
+
};
|
|
414
|
+
|
|
415
|
+
/// Task view traits for backward task views
|
|
416
|
+
template<>
|
|
417
|
+
class TaskViewTraits<Cumulative::OptFixPSETaskBwd> {
|
|
418
|
+
public:
|
|
419
|
+
/// The task type
|
|
420
|
+
typedef Cumulative::OptFixPSETask Task;
|
|
421
|
+
};
|
|
422
|
+
|
|
423
|
+
/// Task view traits for forward task views
|
|
424
|
+
template<>
|
|
425
|
+
class TaskViewTraits<Cumulative::ManFlexTaskFwd> {
|
|
426
|
+
public:
|
|
427
|
+
/// The task type
|
|
428
|
+
typedef Cumulative::ManFlexTask Task;
|
|
429
|
+
};
|
|
430
|
+
|
|
431
|
+
/// Task view traits for backward task views
|
|
432
|
+
template<>
|
|
433
|
+
class TaskViewTraits<Cumulative::ManFlexTaskBwd> {
|
|
434
|
+
public:
|
|
435
|
+
/// The task type
|
|
436
|
+
typedef Cumulative::ManFlexTask Task;
|
|
437
|
+
};
|
|
438
|
+
|
|
439
|
+
/// Task view traits for forward optional task views
|
|
440
|
+
template<>
|
|
441
|
+
class TaskViewTraits<Cumulative::OptFlexTaskFwd> {
|
|
442
|
+
public:
|
|
443
|
+
/// The task type
|
|
444
|
+
typedef Cumulative::OptFlexTask Task;
|
|
445
|
+
};
|
|
446
|
+
|
|
447
|
+
/// Task view traits for backward task views
|
|
448
|
+
template<>
|
|
449
|
+
class TaskViewTraits<Cumulative::OptFlexTaskBwd> {
|
|
450
|
+
public:
|
|
451
|
+
/// The task type
|
|
452
|
+
typedef Cumulative::OptFlexTask Task;
|
|
453
|
+
};
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
/// Task traits for mandatory fixed tasks
|
|
457
|
+
template<>
|
|
458
|
+
class TaskTraits<Cumulative::ManFixPTask> {
|
|
459
|
+
public:
|
|
460
|
+
/// The forward task view type
|
|
461
|
+
typedef Cumulative::ManFixPTaskFwd TaskViewFwd;
|
|
462
|
+
/// The backward task view type
|
|
463
|
+
typedef Cumulative::ManFixPTaskBwd TaskViewBwd;
|
|
464
|
+
/// The corresponding unary task type
|
|
465
|
+
typedef Unary::ManFixPTask UnaryTask;
|
|
466
|
+
};
|
|
467
|
+
|
|
468
|
+
/// Task traits for mandatory fixed tasks
|
|
469
|
+
template<>
|
|
470
|
+
class TaskTraits<Cumulative::ManFixPSETask> {
|
|
471
|
+
public:
|
|
472
|
+
/// The forward task view type
|
|
473
|
+
typedef Cumulative::ManFixPSETaskFwd TaskViewFwd;
|
|
474
|
+
/// The backward task view type
|
|
475
|
+
typedef Cumulative::ManFixPSETaskBwd TaskViewBwd;
|
|
476
|
+
/// The corresponding unary task type
|
|
477
|
+
typedef Unary::ManFixPSETask UnaryTask;
|
|
478
|
+
};
|
|
479
|
+
|
|
480
|
+
/// Task traits for optional fixed tasks
|
|
481
|
+
template<>
|
|
482
|
+
class TaskTraits<Cumulative::OptFixPTask> {
|
|
483
|
+
public:
|
|
484
|
+
/// The forward task view type
|
|
485
|
+
typedef Cumulative::OptFixPTaskFwd TaskViewFwd;
|
|
486
|
+
/// The backward task view type
|
|
487
|
+
typedef Cumulative::OptFixPTaskBwd TaskViewBwd;
|
|
488
|
+
/// The corresponding mandatory task
|
|
489
|
+
typedef Cumulative::ManFixPTask ManTask;
|
|
490
|
+
/// The corresponding unary task type
|
|
491
|
+
typedef Unary::OptFixPTask UnaryTask;
|
|
492
|
+
};
|
|
493
|
+
|
|
494
|
+
/// Task traits for optional fixed tasks
|
|
495
|
+
template<>
|
|
496
|
+
class TaskTraits<Cumulative::OptFixPSETask> {
|
|
497
|
+
public:
|
|
498
|
+
/// The forward task view type
|
|
499
|
+
typedef Cumulative::OptFixPSETaskFwd TaskViewFwd;
|
|
500
|
+
/// The backward task view type
|
|
501
|
+
typedef Cumulative::OptFixPSETaskBwd TaskViewBwd;
|
|
502
|
+
/// The corresponding mandatory task
|
|
503
|
+
typedef Cumulative::ManFixPSETask ManTask;
|
|
504
|
+
/// The corresponding unary task type
|
|
505
|
+
typedef Unary::OptFixPSETask UnaryTask;
|
|
506
|
+
};
|
|
507
|
+
|
|
508
|
+
/// Task traits for mandatory flexible tasks
|
|
509
|
+
template<>
|
|
510
|
+
class TaskTraits<Cumulative::ManFlexTask> {
|
|
511
|
+
public:
|
|
512
|
+
/// The forward task view type
|
|
513
|
+
typedef Cumulative::ManFlexTaskFwd TaskViewFwd;
|
|
514
|
+
/// The backward task view type
|
|
515
|
+
typedef Cumulative::ManFlexTaskBwd TaskViewBwd;
|
|
516
|
+
/// The corresponding unary task type
|
|
517
|
+
typedef Unary::ManFlexTask UnaryTask;
|
|
518
|
+
};
|
|
519
|
+
|
|
520
|
+
/// Task traits for optional flexible tasks
|
|
521
|
+
template<>
|
|
522
|
+
class TaskTraits<Cumulative::OptFlexTask> {
|
|
523
|
+
public:
|
|
524
|
+
/// The forward task view type
|
|
525
|
+
typedef Cumulative::OptFlexTaskFwd TaskViewFwd;
|
|
526
|
+
/// The backward task view type
|
|
527
|
+
typedef Cumulative::OptFlexTaskBwd TaskViewBwd;
|
|
528
|
+
/// The corresponding mandatory task
|
|
529
|
+
typedef Cumulative::ManFlexTask ManTask;
|
|
530
|
+
/// The corresponding unary task type
|
|
531
|
+
typedef Unary::OptFlexTask UnaryTask;
|
|
532
|
+
};
|
|
533
|
+
|
|
534
|
+
}}
|
|
535
|
+
|
|
536
|
+
namespace Gecode { namespace Int { namespace Cumulative {
|
|
537
|
+
|
|
538
|
+
/// Node for an omega tree
|
|
539
|
+
class OmegaNode {
|
|
540
|
+
public:
|
|
541
|
+
/// Energy for subtree
|
|
542
|
+
double e;
|
|
543
|
+
/// Energy envelope for subtree
|
|
544
|
+
double env;
|
|
545
|
+
/// Initialize node from left child \a l and right child \a r
|
|
546
|
+
void init(const OmegaNode& l, const OmegaNode& r);
|
|
547
|
+
/// Update node from left child \a l and right child \a r
|
|
548
|
+
void update(const OmegaNode& l, const OmegaNode& r);
|
|
549
|
+
};
|
|
550
|
+
|
|
551
|
+
/// Omega trees for computing ect of task sets
|
|
552
|
+
template<class TaskView>
|
|
553
|
+
class OmegaTree : public TaskTree<TaskView,OmegaNode> {
|
|
554
|
+
protected:
|
|
555
|
+
using TaskTree<TaskView,OmegaNode>::tasks;
|
|
556
|
+
using TaskTree<TaskView,OmegaNode>::leaf;
|
|
557
|
+
using TaskTree<TaskView,OmegaNode>::root;
|
|
558
|
+
using TaskTree<TaskView,OmegaNode>::init;
|
|
559
|
+
using TaskTree<TaskView,OmegaNode>::update;
|
|
560
|
+
/// Capacity
|
|
561
|
+
int c;
|
|
562
|
+
public:
|
|
563
|
+
/// Initialize tree for tasks \a t and capacity \a c
|
|
564
|
+
OmegaTree(Region& r, int c, const TaskViewArray<TaskView>& t);
|
|
565
|
+
/// Insert task with index \a i
|
|
566
|
+
void insert(int i);
|
|
567
|
+
/// Remove task with index \a i
|
|
568
|
+
void remove(int i);
|
|
569
|
+
/// Return energy envelope of all tasks
|
|
570
|
+
double env(void) const;
|
|
571
|
+
};
|
|
572
|
+
|
|
573
|
+
/// Node for an extended omega tree
|
|
574
|
+
class ExtOmegaNode : public OmegaNode {
|
|
575
|
+
public:
|
|
576
|
+
/// Energy envelope for subtree
|
|
577
|
+
double cenv;
|
|
578
|
+
/// Initialize node from left child \a l and right child \a r
|
|
579
|
+
void init(const ExtOmegaNode& l, const ExtOmegaNode& r);
|
|
580
|
+
/// Update node from left child \a l and right child \a r
|
|
581
|
+
void update(const ExtOmegaNode& l, const ExtOmegaNode& r);
|
|
582
|
+
};
|
|
583
|
+
|
|
584
|
+
/// Omega trees for computing ect of task sets
|
|
585
|
+
template<class TaskView>
|
|
586
|
+
class ExtOmegaTree : public TaskTree<TaskView,ExtOmegaNode> {
|
|
587
|
+
protected:
|
|
588
|
+
using TaskTree<TaskView,ExtOmegaNode>::tasks;
|
|
589
|
+
using TaskTree<TaskView,ExtOmegaNode>::leaf;
|
|
590
|
+
using TaskTree<TaskView,ExtOmegaNode>::root;
|
|
591
|
+
using TaskTree<TaskView,ExtOmegaNode>::init;
|
|
592
|
+
using TaskTree<TaskView,ExtOmegaNode>::update;
|
|
593
|
+
using TaskTree<TaskView,ExtOmegaNode>::node;
|
|
594
|
+
using TaskTree<TaskView,ExtOmegaNode>::n_leaf;
|
|
595
|
+
using TaskTree<TaskView,ExtOmegaNode>::n_left;
|
|
596
|
+
using TaskTree<TaskView,ExtOmegaNode>::left;
|
|
597
|
+
using TaskTree<TaskView,ExtOmegaNode>::n_right;
|
|
598
|
+
using TaskTree<TaskView,ExtOmegaNode>::right;
|
|
599
|
+
using TaskTree<TaskView,ExtOmegaNode>::n_root;
|
|
600
|
+
using TaskTree<TaskView,ExtOmegaNode>::n_parent;
|
|
601
|
+
using TaskTree<TaskView,ExtOmegaNode>::n_nodes;
|
|
602
|
+
using TaskTree<TaskView,ExtOmegaNode>::_leaf;
|
|
603
|
+
/// Capacity
|
|
604
|
+
int c, ci;
|
|
605
|
+
public:
|
|
606
|
+
/// Initialize tree for tasks \a t and capacity \a c
|
|
607
|
+
template<class Node>
|
|
608
|
+
ExtOmegaTree(Region& r, int c, const TaskTree<TaskView,Node>& t);
|
|
609
|
+
/// Initialize tasks for current capacity \a ci
|
|
610
|
+
void init(int ci);
|
|
611
|
+
/// Compute update for task with index \a i
|
|
612
|
+
double env(int i);
|
|
613
|
+
};
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
/// Node for an omega lambda tree
|
|
617
|
+
class OmegaLambdaNode : public OmegaNode {
|
|
618
|
+
public:
|
|
619
|
+
/// Undefined task
|
|
620
|
+
static const int undef = -1;
|
|
621
|
+
/// Energy for subtree
|
|
622
|
+
double le;
|
|
623
|
+
/// Energy envelope for subtree
|
|
624
|
+
double lenv;
|
|
625
|
+
/// Node which is responsible for le
|
|
626
|
+
int resLe;
|
|
627
|
+
/// Node which is responsible for lenv
|
|
628
|
+
int resLenv;
|
|
629
|
+
/// Initialize node from left child \a l and right child \a r
|
|
630
|
+
void init(const OmegaLambdaNode& l, const OmegaLambdaNode& r);
|
|
631
|
+
/// Update node from left child \a l and right child \a r
|
|
632
|
+
void update(const OmegaLambdaNode& l, const OmegaLambdaNode& r);
|
|
633
|
+
};
|
|
634
|
+
|
|
635
|
+
/// Omega-lambda trees for computing ect of task sets
|
|
636
|
+
template<class TaskView>
|
|
637
|
+
class OmegaLambdaTree : public TaskTree<TaskView,OmegaLambdaNode> {
|
|
638
|
+
protected:
|
|
639
|
+
using TaskTree<TaskView,OmegaLambdaNode>::tasks;
|
|
640
|
+
using TaskTree<TaskView,OmegaLambdaNode>::leaf;
|
|
641
|
+
using TaskTree<TaskView,OmegaLambdaNode>::root;
|
|
642
|
+
using TaskTree<TaskView,OmegaLambdaNode>::init;
|
|
643
|
+
using TaskTree<TaskView,OmegaLambdaNode>::update;
|
|
644
|
+
/// Capacity
|
|
645
|
+
int c;
|
|
646
|
+
public:
|
|
647
|
+
/// Initialize tree for tasks \a t and capcity \a c with all tasks included in omega
|
|
648
|
+
OmegaLambdaTree(Region& r, int c, const TaskViewArray<TaskView>& t);
|
|
649
|
+
/// Shift task with index \a i from omega to lambda
|
|
650
|
+
void shift(int i);
|
|
651
|
+
/// Remove task with index \a i from lambda
|
|
652
|
+
void lremove(int i);
|
|
653
|
+
/// Whether has responsible task
|
|
654
|
+
bool lempty(void) const;
|
|
655
|
+
/// Return responsible task
|
|
656
|
+
int responsible(void) const;
|
|
657
|
+
/// Return energy envelope of all tasks
|
|
658
|
+
double env(void) const;
|
|
659
|
+
/// Return energy envelope of all tasks excluding lambda tasks
|
|
660
|
+
double lenv(void) const;
|
|
661
|
+
};
|
|
662
|
+
|
|
663
|
+
}}}
|
|
664
|
+
|
|
665
|
+
#include <gecode/int/cumulative/tree.hpp>
|
|
666
|
+
|
|
667
|
+
namespace Gecode { namespace Int { namespace Cumulative {
|
|
668
|
+
|
|
669
|
+
/// Perform basic propagation
|
|
670
|
+
template<class Task, class Cap>
|
|
671
|
+
ExecStatus basic(Space& home, bool& subsumed, Cap c, TaskArray<Task>& t);
|
|
672
|
+
|
|
673
|
+
/// Check mandatory tasks \a t for overload
|
|
674
|
+
template<class ManTask>
|
|
675
|
+
ExecStatus overload(Space& home, int c, TaskArray<ManTask>& t);
|
|
676
|
+
|
|
677
|
+
/// Propagate by edge finding
|
|
678
|
+
template<class Task>
|
|
679
|
+
ExecStatus edgefinding(Space& home, int c, TaskArray<Task>& t);
|
|
680
|
+
|
|
681
|
+
/**
|
|
682
|
+
* \brief Scheduling propagator for cumulative resource with mandatory tasks
|
|
683
|
+
*
|
|
684
|
+
* Requires \code #include <gecode/int/cumulative.hh> \endcode
|
|
685
|
+
* \ingroup FuncIntProp
|
|
686
|
+
*/
|
|
687
|
+
template<class ManTask, class Cap>
|
|
688
|
+
class ManProp : public TaskProp<ManTask,Int::PC_INT_DOM> {
|
|
689
|
+
protected:
|
|
690
|
+
using TaskProp<ManTask,Int::PC_INT_DOM>::t;
|
|
691
|
+
/// Resource capacity
|
|
692
|
+
Cap c;
|
|
693
|
+
/// Constructor for creation
|
|
694
|
+
ManProp(Home home, Cap c, TaskArray<ManTask>& t);
|
|
695
|
+
/// Constructor for cloning \a p
|
|
696
|
+
ManProp(Space& home, bool shared, ManProp& p);
|
|
697
|
+
public:
|
|
698
|
+
/// Perform copying during cloning
|
|
699
|
+
virtual Actor* copy(Space& home, bool share);
|
|
700
|
+
/// Perform propagation
|
|
701
|
+
virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
|
|
702
|
+
/// Post propagator that schedules tasks on cumulative resource
|
|
703
|
+
static ExecStatus post(Home home, Cap c, TaskArray<ManTask>& t);
|
|
704
|
+
/// Delete propagator and return its size
|
|
705
|
+
virtual size_t dispose(Space& home);
|
|
706
|
+
};
|
|
707
|
+
|
|
708
|
+
/**
|
|
709
|
+
* \brief Scheduling propagator for cumulative resource with optional tasks
|
|
710
|
+
*
|
|
711
|
+
* Requires \code #include <gecode/int/cumulative.hh> \endcode
|
|
712
|
+
* \ingroup FuncIntProp
|
|
713
|
+
*/
|
|
714
|
+
template<class OptTask, class Cap>
|
|
715
|
+
class OptProp : public TaskProp<OptTask,Int::PC_INT_DOM> {
|
|
716
|
+
protected:
|
|
717
|
+
using TaskProp<OptTask,Int::PC_INT_DOM>::t;
|
|
718
|
+
/// Resource capacity
|
|
719
|
+
Cap c;
|
|
720
|
+
/// Constructor for creation
|
|
721
|
+
OptProp(Home home, Cap c, TaskArray<OptTask>& t);
|
|
722
|
+
/// Constructor for cloning \a p
|
|
723
|
+
OptProp(Space& home, bool shared, OptProp& p);
|
|
724
|
+
public:
|
|
725
|
+
/// Perform copying during cloning
|
|
726
|
+
virtual Actor* copy(Space& home, bool share);
|
|
727
|
+
/// Perform propagation
|
|
728
|
+
virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
|
|
729
|
+
/// Post propagator that schedules tasks on cumulative resource
|
|
730
|
+
static ExecStatus post(Home home, Cap c, TaskArray<OptTask>& t);
|
|
731
|
+
/// Delete propagator and return its size
|
|
732
|
+
virtual size_t dispose(Space& home);
|
|
733
|
+
};
|
|
734
|
+
|
|
735
|
+
}}}
|
|
736
|
+
|
|
737
|
+
#include <gecode/int/cumulative/basic.hpp>
|
|
738
|
+
#include <gecode/int/cumulative/overload.hpp>
|
|
739
|
+
#include <gecode/int/cumulative/edge-finding.hpp>
|
|
740
|
+
#include <gecode/int/cumulative/man-prop.hpp>
|
|
741
|
+
#include <gecode/int/cumulative/opt-prop.hpp>
|
|
742
|
+
|
|
743
|
+
#endif
|
|
744
|
+
|
|
745
|
+
// STATISTICS: int-prop
|