From 95fdd6df5bbed923a31631c8311b81a3ff6a436d Mon Sep 17 00:00:00 2001 From: thomasWeise Date: Fri, 15 Nov 2024 11:58:36 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20thomasWe?= =?UTF-8?q?ise/moptipyapps@f2582b2cc9289e2d733f4b9d50cf180154720f59=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .buildinfo | 4 + .doctrees/.nojekyll | 0 .doctrees/README.doctree | Bin 0 -> 111516 bytes .doctrees/environment.pickle | Bin 0 -> 10212762 bytes .doctrees/index.doctree | Bin 0 -> 9021893 bytes .doctrees/modules.doctree | Bin 0 -> 2839 bytes .doctrees/moptipyapps.binpacking2d.doctree | Bin 0 -> 1017972 bytes ...moptipyapps.binpacking2d.encodings.doctree | Bin 0 -> 62386 bytes .../moptipyapps.binpacking2d.instgen.doctree | Bin 0 -> 283418 bytes ...optipyapps.binpacking2d.objectives.doctree | Bin 0 -> 205493 bytes .doctrees/moptipyapps.doctree | Bin 0 -> 28503 bytes ...pyapps.dynamic_control.controllers.doctree | Bin 0 -> 118591 bytes .doctrees/moptipyapps.dynamic_control.doctree | Bin 0 -> 575808 bytes ...optipyapps.dynamic_control.systems.doctree | Bin 0 -> 52025 bytes .doctrees/moptipyapps.order1d.doctree | Bin 0 -> 110619 bytes .doctrees/moptipyapps.qap.doctree | Bin 0 -> 111438 bytes .doctrees/moptipyapps.qap.qaplib.doctree | Bin 0 -> 10050 bytes .doctrees/moptipyapps.tests.doctree | Bin 0 -> 135623 bytes .doctrees/moptipyapps.tsp.doctree | Bin 0 -> 225631 bytes .doctrees/moptipyapps.tsp.tsplib.doctree | Bin 0 -> 12456 bytes .doctrees/moptipyapps.ttp.doctree | Bin 0 -> 298987 bytes .doctrees/moptipyapps.ttp.robinx.doctree | Bin 0 -> 10205 bytes .nojekyll | 0 CONTRIBUTING_md.html | 1 + LICENSE.html | 676 ++++++++++ README.html | 12 + SECURITY_md.html | 1 + _modules/.nojekyll | 0 _modules/index.html | 1 + _modules/moptipyapps/.nojekyll | 0 _modules/moptipyapps/binpacking2d/.nojekyll | 0 _modules/moptipyapps/binpacking2d/bks.html | 1137 ++++++++++++++++ .../binpacking2d/encodings/.nojekyll | 0 .../encodings/ibl_encoding_1.html | 434 +++++++ .../encodings/ibl_encoding_2.html | 503 +++++++ .../moptipyapps/binpacking2d/experiment.html | 150 +++ .../moptipyapps/binpacking2d/instance.html | 967 ++++++++++++++ .../binpacking2d/instgen/.nojekyll | 0 .../binpacking2d/instgen/errors.html | 261 ++++ .../instgen/errors_and_hardness.html | 156 +++ .../binpacking2d/instgen/experiment.html | 101 ++ .../binpacking2d/instgen/hardness.html | 315 +++++ .../binpacking2d/instgen/inst_decoding.html | 563 ++++++++ .../binpacking2d/instgen/instance_space.html | 188 +++ .../binpacking2d/instgen/problem.html | 46 + .../binpacking2d/make_instances.html | 241 ++++ .../binpacking2d/objectives/.nojekyll | 0 .../binpacking2d/objectives/bin_count.html | 141 ++ .../objectives/bin_count_and_empty.html | 111 ++ .../objectives/bin_count_and_last_empty.html | 196 +++ .../bin_count_and_last_skyline.html | 190 +++ .../objectives/bin_count_and_last_small.html | 240 ++++ .../bin_count_and_lowest_skyline.html | 176 +++ .../objectives/bin_count_and_small.html | 135 ++ .../moptipyapps/binpacking2d/packing.html | 167 +++ .../binpacking2d/packing_result.html | 760 +++++++++++ .../binpacking2d/packing_space.html | 373 ++++++ .../binpacking2d/packing_statistics.html | 653 ++++++++++ .../binpacking2d/plot_packing.html | 219 ++++ .../moptipyapps/dynamic_control/.nojekyll | 0 .../dynamic_control/controller.html | 118 ++ .../dynamic_control/controllers/.nojekyll | 0 .../dynamic_control/controllers/ann.html | 140 ++ .../dynamic_control/controllers/codegen.html | 121 ++ .../dynamic_control/controllers/cubic.html | 89 ++ .../dynamic_control/controllers/linear.html | 66 + .../dynamic_control/controllers/min_ann.html | 730 +++++++++++ .../controllers/partially_linear.html | 217 ++++ .../dynamic_control/controllers/peaks.html | 169 +++ .../controllers/predefined.html | 103 ++ .../controllers/quadratic.html | 76 ++ .../dynamic_control/experiment_raw.html | 153 +++ .../dynamic_control/experiment_surrogate.html | 250 ++++ .../moptipyapps/dynamic_control/instance.html | 133 ++ .../dynamic_control/model_objective.html | 206 +++ .../dynamic_control/objective.html | 348 +++++ _modules/moptipyapps/dynamic_control/ode.html | 647 +++++++++ .../dynamic_control/results_log.html | 120 ++ .../dynamic_control/results_plot.html | 370 ++++++ .../dynamic_control/starting_points.html | 205 +++ .../dynamic_control/surrogate_optimizer.html | 491 +++++++ .../moptipyapps/dynamic_control/system.html | 379 ++++++ .../dynamic_control/system_model.html | 121 ++ .../dynamic_control/systems/.nojekyll | 0 .../dynamic_control/systems/lorenz.html | 204 +++ .../systems/stuart_landau.html | 196 +++ .../systems/three_coupled_oscillators.html | 157 +++ _modules/moptipyapps/order1d/.nojekyll | 0 _modules/moptipyapps/order1d/distances.html | 70 + _modules/moptipyapps/order1d/instance.html | 357 +++++ _modules/moptipyapps/order1d/space.html | 102 ++ _modules/moptipyapps/qap/.nojekyll | 0 _modules/moptipyapps/qap/instance.html | 500 +++++++ _modules/moptipyapps/qap/objective.html | 145 +++ _modules/moptipyapps/qap/qaplib.html | 32 + _modules/moptipyapps/shared.html | 73 ++ _modules/moptipyapps/tests/.nojekyll | 0 .../moptipyapps/tests/on_binpacking2d.html | 336 +++++ _modules/moptipyapps/tests/on_tsp.html | 229 ++++ _modules/moptipyapps/tsp/.nojekyll | 0 _modules/moptipyapps/tsp/ea1p1_revn.html | 168 +++ _modules/moptipyapps/tsp/fea1p1_revn.html | 180 +++ _modules/moptipyapps/tsp/instance.html | 1156 +++++++++++++++++ _modules/moptipyapps/tsp/known_optima.html | 141 ++ _modules/moptipyapps/tsp/tour_length.html | 176 +++ _modules/moptipyapps/tsp/tsplib.html | 43 + _modules/moptipyapps/ttp/.nojekyll | 0 _modules/moptipyapps/ttp/errors.html | 388 ++++++ _modules/moptipyapps/ttp/game_encoding.html | 245 ++++ _modules/moptipyapps/ttp/game_plan.html | 125 ++ _modules/moptipyapps/ttp/game_plan_space.html | 231 ++++ _modules/moptipyapps/ttp/instance.html | 568 ++++++++ _modules/moptipyapps/ttp/plan_length.html | 224 ++++ _modules/moptipyapps/ttp/robinx.html | 37 + _sources/.nojekyll | 0 _sources/README.md.txt | 326 +++++ _sources/index.rst.txt | 17 + _sources/modules.rst.txt | 7 + ...moptipyapps.binpacking2d.encodings.rst.txt | 26 + .../moptipyapps.binpacking2d.instgen.rst.txt | 66 + ...optipyapps.binpacking2d.objectives.rst.txt | 66 + _sources/moptipyapps.binpacking2d.rst.txt | 92 ++ ...pyapps.dynamic_control.controllers.rst.txt | 82 ++ _sources/moptipyapps.dynamic_control.rst.txt | 123 ++ ...optipyapps.dynamic_control.systems.rst.txt | 34 + _sources/moptipyapps.order1d.rst.txt | 34 + _sources/moptipyapps.qap.qaplib.rst.txt | 7 + _sources/moptipyapps.qap.rst.txt | 34 + _sources/moptipyapps.rst.txt | 40 + _sources/moptipyapps.tests.rst.txt | 26 + _sources/moptipyapps.tsp.rst.txt | 58 + _sources/moptipyapps.tsp.tsplib.rst.txt | 7 + _sources/moptipyapps.ttp.robinx.rst.txt | 7 + _sources/moptipyapps.ttp.rst.txt | 66 + _static/.nojekyll | 0 _static/background_b01.png | Bin 0 -> 78 bytes _static/basic.css | 914 +++++++++++++ _static/bizstyle.css | 505 +++++++ _static/bizstyle.js | 24 + _static/css3-mediaqueries.js | 1 + _static/css3-mediaqueries_src.js | 1104 ++++++++++++++++ _static/doctools.js | 149 +++ _static/documentation_options.js | 13 + _static/file.png | Bin 0 -> 286 bytes _static/language_data.js | 192 +++ _static/minus.png | Bin 0 -> 90 bytes _static/plus.png | Bin 0 -> 90 bytes _static/pygments.css | 75 ++ _static/searchtools.js | 632 +++++++++ _static/sphinx_highlight.js | 154 +++ conftest_py.html | 3 + examples/.nojekyll | 0 examples/binpacking2d_plot_py.html | 113 ++ examples/binpacking2d_rls_py.html | 94 ++ examples/binpacking2d_timing_py.html | 88 ++ examples/order1_from_dat_py.html | 255 ++++ .../qap_example_experiment_rls_rs_py.html | 92 ++ examples/tsp_rls_py.html | 35 + examples/tsp_special_algorithms_py.html | 30 + examples/ttp_example_experiment_mo_py.html | 116 ++ .../ttp_example_experiment_rls_rs_py.html | 134 ++ genindex.html | 1 + index.html | 12 + make_sh.html | 87 ++ modules.html | 1 + moptipyapps.binpacking2d.encodings.html | 1 + moptipyapps.binpacking2d.html | 133 ++ moptipyapps.binpacking2d.instgen.html | 260 ++++ moptipyapps.binpacking2d.objectives.html | 288 ++++ moptipyapps.dynamic_control.controllers.html | 1 + moptipyapps.dynamic_control.html | 153 +++ moptipyapps.dynamic_control.systems.html | 1 + moptipyapps.html | 16 + moptipyapps.order1d.html | 211 +++ moptipyapps.qap.html | 55 + moptipyapps.qap.qaplib.html | 1 + moptipyapps.tests.html | 1 + moptipyapps.tsp.html | 117 ++ moptipyapps.tsp.tsplib.html | 1 + moptipyapps.ttp.html | 250 ++++ moptipyapps.ttp.robinx.html | 1 + objects.inv | Bin 0 -> 5170 bytes py-modindex.html | 1 + pyproject_toml.html | 5 + requirements-dev_txt.html | 38 + requirements_txt.html | 51 + search.html | 1 + searchindex.js | 1 + setup_cfg.html | 76 ++ setup_py.html | 51 + tc/.nojekyll | 0 tc/badge.svg | 21 + tc/index.html | 706 ++++++++++ tc/status.json | 1 + 194 files changed, 28837 insertions(+) create mode 100644 .buildinfo create mode 100755 .doctrees/.nojekyll create mode 100644 .doctrees/README.doctree create mode 100644 .doctrees/environment.pickle create mode 100644 .doctrees/index.doctree create mode 100644 .doctrees/modules.doctree create mode 100644 .doctrees/moptipyapps.binpacking2d.doctree create mode 100644 .doctrees/moptipyapps.binpacking2d.encodings.doctree create mode 100644 .doctrees/moptipyapps.binpacking2d.instgen.doctree create mode 100644 .doctrees/moptipyapps.binpacking2d.objectives.doctree create mode 100644 .doctrees/moptipyapps.doctree create mode 100644 .doctrees/moptipyapps.dynamic_control.controllers.doctree create mode 100644 .doctrees/moptipyapps.dynamic_control.doctree create mode 100644 .doctrees/moptipyapps.dynamic_control.systems.doctree create mode 100644 .doctrees/moptipyapps.order1d.doctree create mode 100644 .doctrees/moptipyapps.qap.doctree create mode 100644 .doctrees/moptipyapps.qap.qaplib.doctree create mode 100644 .doctrees/moptipyapps.tests.doctree create mode 100644 .doctrees/moptipyapps.tsp.doctree create mode 100644 .doctrees/moptipyapps.tsp.tsplib.doctree create mode 100644 .doctrees/moptipyapps.ttp.doctree create mode 100644 .doctrees/moptipyapps.ttp.robinx.doctree create mode 100755 .nojekyll create mode 100755 CONTRIBUTING_md.html create mode 100644 LICENSE.html create mode 100644 README.html create mode 100755 SECURITY_md.html create mode 100755 _modules/.nojekyll create mode 100644 _modules/index.html create mode 100755 _modules/moptipyapps/.nojekyll create mode 100755 _modules/moptipyapps/binpacking2d/.nojekyll create mode 100644 _modules/moptipyapps/binpacking2d/bks.html create mode 100755 _modules/moptipyapps/binpacking2d/encodings/.nojekyll create mode 100644 _modules/moptipyapps/binpacking2d/encodings/ibl_encoding_1.html create mode 100644 _modules/moptipyapps/binpacking2d/encodings/ibl_encoding_2.html create mode 100644 _modules/moptipyapps/binpacking2d/experiment.html create mode 100644 _modules/moptipyapps/binpacking2d/instance.html create mode 100755 _modules/moptipyapps/binpacking2d/instgen/.nojekyll create mode 100644 _modules/moptipyapps/binpacking2d/instgen/errors.html create mode 100644 _modules/moptipyapps/binpacking2d/instgen/errors_and_hardness.html create mode 100644 _modules/moptipyapps/binpacking2d/instgen/experiment.html create mode 100644 _modules/moptipyapps/binpacking2d/instgen/hardness.html create mode 100644 _modules/moptipyapps/binpacking2d/instgen/inst_decoding.html create mode 100644 _modules/moptipyapps/binpacking2d/instgen/instance_space.html create mode 100644 _modules/moptipyapps/binpacking2d/instgen/problem.html create mode 100644 _modules/moptipyapps/binpacking2d/make_instances.html create mode 100755 _modules/moptipyapps/binpacking2d/objectives/.nojekyll create mode 100644 _modules/moptipyapps/binpacking2d/objectives/bin_count.html create mode 100644 _modules/moptipyapps/binpacking2d/objectives/bin_count_and_empty.html create mode 100644 _modules/moptipyapps/binpacking2d/objectives/bin_count_and_last_empty.html create mode 100644 _modules/moptipyapps/binpacking2d/objectives/bin_count_and_last_skyline.html create mode 100644 _modules/moptipyapps/binpacking2d/objectives/bin_count_and_last_small.html create mode 100644 _modules/moptipyapps/binpacking2d/objectives/bin_count_and_lowest_skyline.html create mode 100644 _modules/moptipyapps/binpacking2d/objectives/bin_count_and_small.html create mode 100644 _modules/moptipyapps/binpacking2d/packing.html create mode 100644 _modules/moptipyapps/binpacking2d/packing_result.html create mode 100644 _modules/moptipyapps/binpacking2d/packing_space.html create mode 100644 _modules/moptipyapps/binpacking2d/packing_statistics.html create mode 100644 _modules/moptipyapps/binpacking2d/plot_packing.html create mode 100755 _modules/moptipyapps/dynamic_control/.nojekyll create mode 100644 _modules/moptipyapps/dynamic_control/controller.html create mode 100755 _modules/moptipyapps/dynamic_control/controllers/.nojekyll create mode 100644 _modules/moptipyapps/dynamic_control/controllers/ann.html create mode 100644 _modules/moptipyapps/dynamic_control/controllers/codegen.html create mode 100644 _modules/moptipyapps/dynamic_control/controllers/cubic.html create mode 100644 _modules/moptipyapps/dynamic_control/controllers/linear.html create mode 100644 _modules/moptipyapps/dynamic_control/controllers/min_ann.html create mode 100644 _modules/moptipyapps/dynamic_control/controllers/partially_linear.html create mode 100644 _modules/moptipyapps/dynamic_control/controllers/peaks.html create mode 100644 _modules/moptipyapps/dynamic_control/controllers/predefined.html create mode 100644 _modules/moptipyapps/dynamic_control/controllers/quadratic.html create mode 100644 _modules/moptipyapps/dynamic_control/experiment_raw.html create mode 100644 _modules/moptipyapps/dynamic_control/experiment_surrogate.html create mode 100644 _modules/moptipyapps/dynamic_control/instance.html create mode 100644 _modules/moptipyapps/dynamic_control/model_objective.html create mode 100644 _modules/moptipyapps/dynamic_control/objective.html create mode 100644 _modules/moptipyapps/dynamic_control/ode.html create mode 100644 _modules/moptipyapps/dynamic_control/results_log.html create mode 100644 _modules/moptipyapps/dynamic_control/results_plot.html create mode 100644 _modules/moptipyapps/dynamic_control/starting_points.html create mode 100644 _modules/moptipyapps/dynamic_control/surrogate_optimizer.html create mode 100644 _modules/moptipyapps/dynamic_control/system.html create mode 100644 _modules/moptipyapps/dynamic_control/system_model.html create mode 100755 _modules/moptipyapps/dynamic_control/systems/.nojekyll create mode 100644 _modules/moptipyapps/dynamic_control/systems/lorenz.html create mode 100644 _modules/moptipyapps/dynamic_control/systems/stuart_landau.html create mode 100644 _modules/moptipyapps/dynamic_control/systems/three_coupled_oscillators.html create mode 100755 _modules/moptipyapps/order1d/.nojekyll create mode 100644 _modules/moptipyapps/order1d/distances.html create mode 100644 _modules/moptipyapps/order1d/instance.html create mode 100644 _modules/moptipyapps/order1d/space.html create mode 100755 _modules/moptipyapps/qap/.nojekyll create mode 100644 _modules/moptipyapps/qap/instance.html create mode 100644 _modules/moptipyapps/qap/objective.html create mode 100644 _modules/moptipyapps/qap/qaplib.html create mode 100644 _modules/moptipyapps/shared.html create mode 100755 _modules/moptipyapps/tests/.nojekyll create mode 100644 _modules/moptipyapps/tests/on_binpacking2d.html create mode 100644 _modules/moptipyapps/tests/on_tsp.html create mode 100755 _modules/moptipyapps/tsp/.nojekyll create mode 100644 _modules/moptipyapps/tsp/ea1p1_revn.html create mode 100644 _modules/moptipyapps/tsp/fea1p1_revn.html create mode 100644 _modules/moptipyapps/tsp/instance.html create mode 100644 _modules/moptipyapps/tsp/known_optima.html create mode 100644 _modules/moptipyapps/tsp/tour_length.html create mode 100644 _modules/moptipyapps/tsp/tsplib.html create mode 100755 _modules/moptipyapps/ttp/.nojekyll create mode 100644 _modules/moptipyapps/ttp/errors.html create mode 100644 _modules/moptipyapps/ttp/game_encoding.html create mode 100644 _modules/moptipyapps/ttp/game_plan.html create mode 100644 _modules/moptipyapps/ttp/game_plan_space.html create mode 100644 _modules/moptipyapps/ttp/instance.html create mode 100644 _modules/moptipyapps/ttp/plan_length.html create mode 100644 _modules/moptipyapps/ttp/robinx.html create mode 100755 _sources/.nojekyll create mode 100644 _sources/README.md.txt create mode 100644 _sources/index.rst.txt create mode 100644 _sources/modules.rst.txt create mode 100644 _sources/moptipyapps.binpacking2d.encodings.rst.txt create mode 100644 _sources/moptipyapps.binpacking2d.instgen.rst.txt create mode 100644 _sources/moptipyapps.binpacking2d.objectives.rst.txt create mode 100644 _sources/moptipyapps.binpacking2d.rst.txt create mode 100644 _sources/moptipyapps.dynamic_control.controllers.rst.txt create mode 100644 _sources/moptipyapps.dynamic_control.rst.txt create mode 100644 _sources/moptipyapps.dynamic_control.systems.rst.txt create mode 100644 _sources/moptipyapps.order1d.rst.txt create mode 100644 _sources/moptipyapps.qap.qaplib.rst.txt create mode 100644 _sources/moptipyapps.qap.rst.txt create mode 100644 _sources/moptipyapps.rst.txt create mode 100644 _sources/moptipyapps.tests.rst.txt create mode 100644 _sources/moptipyapps.tsp.rst.txt create mode 100644 _sources/moptipyapps.tsp.tsplib.rst.txt create mode 100644 _sources/moptipyapps.ttp.robinx.rst.txt create mode 100644 _sources/moptipyapps.ttp.rst.txt create mode 100755 _static/.nojekyll create mode 100644 _static/background_b01.png create mode 100644 _static/basic.css create mode 100644 _static/bizstyle.css create mode 100644 _static/bizstyle.js create mode 100644 _static/css3-mediaqueries.js create mode 100644 _static/css3-mediaqueries_src.js create mode 100644 _static/doctools.js create mode 100644 _static/documentation_options.js create mode 100644 _static/file.png create mode 100644 _static/language_data.js create mode 100644 _static/minus.png create mode 100644 _static/plus.png create mode 100644 _static/pygments.css create mode 100644 _static/searchtools.js create mode 100644 _static/sphinx_highlight.js create mode 100644 conftest_py.html create mode 100755 examples/.nojekyll create mode 100644 examples/binpacking2d_plot_py.html create mode 100644 examples/binpacking2d_rls_py.html create mode 100644 examples/binpacking2d_timing_py.html create mode 100644 examples/order1_from_dat_py.html create mode 100644 examples/qap_example_experiment_rls_rs_py.html create mode 100644 examples/tsp_rls_py.html create mode 100644 examples/tsp_special_algorithms_py.html create mode 100644 examples/ttp_example_experiment_mo_py.html create mode 100644 examples/ttp_example_experiment_rls_rs_py.html create mode 100644 genindex.html create mode 100644 index.html create mode 100644 make_sh.html create mode 100644 modules.html create mode 100644 moptipyapps.binpacking2d.encodings.html create mode 100644 moptipyapps.binpacking2d.html create mode 100644 moptipyapps.binpacking2d.instgen.html create mode 100644 moptipyapps.binpacking2d.objectives.html create mode 100644 moptipyapps.dynamic_control.controllers.html create mode 100644 moptipyapps.dynamic_control.html create mode 100644 moptipyapps.dynamic_control.systems.html create mode 100644 moptipyapps.html create mode 100644 moptipyapps.order1d.html create mode 100644 moptipyapps.qap.html create mode 100644 moptipyapps.qap.qaplib.html create mode 100644 moptipyapps.tests.html create mode 100644 moptipyapps.tsp.html create mode 100644 moptipyapps.tsp.tsplib.html create mode 100644 moptipyapps.ttp.html create mode 100644 moptipyapps.ttp.robinx.html create mode 100644 objects.inv create mode 100644 py-modindex.html create mode 100644 pyproject_toml.html create mode 100644 requirements-dev_txt.html create mode 100644 requirements_txt.html create mode 100644 search.html create mode 100644 searchindex.js create mode 100644 setup_cfg.html create mode 100644 setup_py.html create mode 100755 tc/.nojekyll create mode 100644 tc/badge.svg create mode 100644 tc/index.html create mode 100644 tc/status.json diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 00000000..b96efb79 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. +config: ec667ad656319d7e1c76aa3eee6f64e0 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.doctrees/.nojekyll b/.doctrees/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/.doctrees/README.doctree b/.doctrees/README.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9311e9cbc4abc959f9562edef6e9fa1ad089d63e GIT binary patch literal 111516 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

?DK{!=TpsGvTpq4b0tldl_rqSRyUxr^tLe5= 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

>)s#{G2wtn&xK? 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%0Dvm-4 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

Jc^L1wk$ONdxe@MV)Zv)M*TQG)iM&i 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

L;BTCb{{YsK- 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

VS>A&~Rf|4$6F+U)P@9{F$Q;c+Q!g+{ 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 P^p=6KTn2oT0kHsHG3;N$mg*Ou2`jI= z{9Fbrr8D>|8vNwZX#SVWfp-_aZg{%{*9vCH*ED4D>|#2>&3aGAb!YJpI-Bf8U4q84FxWNSQ ziACv+>U!B_uu3X}u`hZA8^SZ&CvF}pgD>)=GdO!*@PEY&rh1{`44&7>Wk4Q8;{ojt z3%m@2h{ZA-w{JYf^3UEF%FsR|mjQXy!UvP-42nUB7G@Z=R&WFoE{}}75?Og5wP1$i z`Q#kmP>amj8RipLG{fH1_~m36D*Epd1u08@CMDNNyH%VaSdjQcitaXnz& zrQb3ZF$^a1dPqbDEp^x6^$6Jbg{PW`v&b;jXsO&v2D^Zub0KR7WdPGs8H_zWoL8LB zy#OMEr)RMY$2|yz%0^_(F!c!Eo1q7VYzF4}+x_s~T>+h8{`RCV1JA#Zalt`4gTJT; z&BgSomyFC1dn=&~#q;=Va5XMQXODz>GtA>gE(5-$+lKcyhlAO$e=@i{d2}Uk>)w)B z;uC!F49||yeC{r!0x_kJ zswjC%s(W((c}O{n$6qg_1&g}=sjscNm3C5z88Ft^Z|YFJ=W%%qY57}g9MB_u}& zle5e5K<R^%EPV8}(&aKe1Sb;|Tl7baFnLdr71W z5w?-bfUL-;gR$IS%%Dh;$v~{gr^V>ur57V+P$Y|GIBwVXqYIfr$j~m5sevwkc=_ay zcxV}~(Zeg4gY&=s>tApF@NW0u+kWf#8!VdH-`w5rw$}%j&xZbO*1Bmyb=yeX77PH) zfPBaO2+Pk#q3aq`1vHhnWuh-tUz0Je*;ljUXRX2PofscTg z_WxtZ0@?KL@9%E4x2V)XKX|6CuGg-`$AL4fUPe}1M}2rv<*+zimwBJMEAPSXSy7(f^Xx4Rcuv#eN*&WpZ&@`L~Ti_eax{O?da=<;L%79!mEE*uzMK9y5?7`Z{7oUM`$Q*rhdJe&B z8AtfD>okrK-H=XH^z|9X63%~&7&O$6gCTwduEZLK60r`oQ^r^Q#rIgNtzj2Z&SI&; z%YU{$efZt~|2Q}9LCO_o^qgoUVAybeYQBJQyJ`1VgZyt@3x_h;JQa3&`(J)>`wkfP zZZTPhdu;MV`ony4Vi~B>??2U|2oE=STkF@!@z*ZLJ$SrH>yOnLYOrqFw?sUv;-qRa^x3U1x*EbjEiHB0$DxydU{+J?6xkqwsEw z!fEiDU~>dMj1fR3&L0iD>Ql{;csoX7;uRci4nArJ(?NeS9LbHu<|w=s)4<HG?UV!_S{_~#Aafo_^=?w0YiD0xj0@^ey$ICG=`&Nol(~WgTb{OrQOdb<>^< zz>3=NIK~Xl(qlQpkVV?wS{aKFDP#kAt=6;ATp4w12IooF2k_sbd-AXek!rEQ#$7L) z_qeBk@dkx|z0vm(Q>lA`XSvf6AVwp`>BGm6of{l1W~y@nb<{n?Q^~@GF+5ydPz}-& z7TI)RK@0~oazGdGzk7IhrvuktpRGgn&GWe|u~7GlU!^((lHp<^f`CiVF%2_$$FWk< z2AD|bNb=0c&{&2rn!t=u2gYWfK7^|agRyHtA(gtvnk##zGYQZPD_mY$R`6oO_UKtL zbiG^9PidJd{CRB3CM`tp3^Pm`EN6y!jo9pXO$66`f;csy=ZhLv-J_c|dK0wfKpBMv ze3tfNUOo<#;bUT8>}s$A<$?lpN;{^r%$yj*Ffa)Um%$+%A%w{ZUfL3~WZhG~)&0XX z2*_{|y(7M|4i{DjGnu7sn$0rJ0J&?`j5}qbophn>QEaBl=bAN$=^HUMFoVEQuMa;S zK4ry62-E&IT~7w>|9S+8ypb@1tl%i$fcwf<;K1UV@ZWG6--Xxy!il)<`Ql2~fZ|QN zUw3i$BWs$plbcH%V|V|;pt^DLKGY$AOK&9+YPLApg)uzb$>FdV47V{k6RJMj3~9dO?Z zH-&920cinhNvxPj`7VfQzg;!EAJb4A1)b0&5wnqj9pNnA(ZdT%sCzxG+7c{^QO8Hd zJxUf-Ap`DH`exZE8PhlS2lK6BJh&=`kZ5X+;lxhpEAwRELL{RaGl#-=mZv52%%L8P z;bGX_MzCkwQ6+W@H6Lv+OVIn{b2jeU|bCq-~h9QAG*=dVl&`s3ZnQxC~ z^TpRt*Lbl$@;3YO1Pv~PAz-F%_tQ`T4Ki?4urr%J?Mxsq5faF=aOlhpgwcS(Ckw>0 z2eDoMJR^W147iys`IGf9RA>m=ELaS*zscSZuvxJfV9(qe!ZqH;!HsPxHw14+nhSqz zy&W1_xQ*OU!%csejjg)1gq8;&Al(crvu%x#;g!CI0mDws5BL(tRoFsr{NzUy`V0*x zKcJbF4~ugs~}m*v^(@^OqFOnUdQ_{-&J zR_F)`E(C-Vbe>dm0A#qB>FTh6v)Hl3ZrVLz?9bSS5{WmcukkQbsDTkQfoYaZgt-Bi zYYy-US2%@7_e3rh-b1drG!JTZ!Hf>fmP5!VvJu=g8^ zIjGH{h<4H{elN9AAI`9n_Tzso+_Jh3P8FJpY+YRkt13(a=ry+vrCd_fU$nXxqW2m36 ze%v@Z&J`~D<>Y$t9laxPvwBAaqj!v3bjt}Du2VFjZGq|ZHDTgE8trR=j;l1t=fFdwetzr}Um7!N!GrgbqZ;Fa!q z;Y?g+o)BGP z%|`_|bT9FecGMzD!N@jx_?3q3Vjbg$)7hixbchQLsLuokoPrf;+WITTAqr&ZaJK~C zDp?_~ZYOahL+BN)pFZs4g*l?MH>P9iK)D9&Wfu%~_k{&!#u5#i7v6ivje$)fHxY7x zP3#>Xt3?27LW>TT)goXuqD2RcT|~bHC!*kZXm}zsEmaz~N0Mz!@^xd9j9FX=v%C&S z&k^Q_e9LPk&PS6=c_TAF>e~`^|KWG*;SzjxudmGo#G77?Acw}(2(qVXZ1a5Knbh?G zdxq5rurq?r_6EfcFBG(F#J(FziZFv#R- zT2?3CR4v@J)edQf^)C5b52!cwH34dSm0JqCi(&*ffoca3qhd4{23E~t!;u1A>=(|P z1$VF0(qwVFauJMiS?BG39Msor4BxDWHd;NXw>^{HUAN}AI*Jo*Hp(@veU(S>#7(BY`-h6UB zB&ei<9TWbRP}&jSc(+Ih(<@dH@(Y32Ymft{QTrQLi-L}@SyjL#UU(5i%zJ4^?&I1B zfQ&+ZVazo6PN0)!nY`mNnLi!C1;R=A(r$*C7}bvQjSj4%(w~G&rzT)c$g_F>tL@#^ zPBeSX%K#-T`GvTTp*a%n*r`Ih+Qpcj)hsNdn^{yU^}ll622;WgVSPswSEd)ivf!a zQIT${LNWbeq7(7)dPEV8QSglt>@li?4AGfx58z`X zA)oFQh-toWgPKEB|BaFGZBUbl^h0A5c=NW87BVenCq)nH;tyu)lLFS?;YEoI@tB7c z?-G~FoEV8@FmE+NC~ zqzl-!zXo)(W1{py=s4`I0a_S196z_~?i0`w{6TQYkPE>kx;Ul_oEcbtBUp4d$-;X2 z*cq}6DN#C`W*Ti$qV(t1;FuwK?>5Jt95;mf{f4V(|2!S#=eMfMHis18avjPMG|b#busjoS~N z5jNEcHoSAeOUGbSG^FE;yWO-q_wg_n8>yt5VIZA89?OUA)%9TaJXgy#fPps&f3i=8 zFUG;8jHU=k^J4KU#4N%3^9{#C>~O_8u^7eV6k{2`{>uZ4os3DfBu z)_LR6#ks$>%CV?`Bk}M8A;0ZxS26T=f9A^%Xjd@`aOS-gmLJiaP}x+7!C{>IkTzO_)%QYyrqMedwWi3(?$Y)?%=2fiiQ$*#(gv5Ozfb@o8})Bc&WGejmr^*?I~8 zE9-D(L3DAWJZ#uDJwKmL=mwH1+;T^d$T3}71fzy>_`BBuZyhDRb}}n=A@w+4AIqla zm?#|artKx*vf)jE+Yrg2wk{JQO<~(r5@64YIa~;YC8Fr>99yzlxY4(3YYGsO`*M^0j9U{e4iz1^*d}1@p4W5&>cz^bD7~ z3kkTM?&{ta`^B!FeG$B5R%TRHOlM}~5h z&CdK`=5A&lk&zMZH6*~@-ik>3{mk6l+}!*TMSyA77YwBP`s&aecHJ}Y9AlY;A~STc zNzTEGvI!*_NmwSvMQMa7xuRjp&~o*uD3{-%`5EH^C!HYoGO2B%PBQ*j?UXyGLnEg- z!YS!Dr8$LpY|2iemQ$L{Z*?|W%7;ob`t69(>uS5d=Tqo&sP$Ix9n*=K>+*c!dnbLS zE?wA3}3Vd~>73aim}W?+}bcm{gfHG5sn7K2ce zg?ep*iRfm9sf4cN8k5s}`8W%nlwca=8j4z*q zXGu?;a8ftQ#Xan9%Wt$Ofg0tdn;SpkDRpx!4#77)#Sj;zhxlwFRW6Rag*#A8LageL zSzOCYr#6mU8iAV)pVr?VE}zjC!HvAj>w8CAI!ha)crtb5UHA+VTyE>zMCR5mgB(Tc z!+QU;S^uEgHoAV9rGOFu$mAh{9ahh`4csdy>n9n`gx+(q2{e?xJ*b@87QhVM*kf+h z)|mpR%DieaT>vyT@A+Y+n>5GD!eIrXsYS!`iT%5(RpdvEEo+q2&6yul8df!Cen?tG zxqtWNUA4WdnOU+1&DEH6K@4ZlP8TK_s_U^L2f^Fz_J_{2Ky-6p- zWG4YcY^c7Gcu7q?3Ui_D(Frbh5~j&e+(;pjZD@@$^_DfxkN%f;zVMFuzj%vqX)9aIfVr(Nfq zTu->4M52}tiTz=$j zBs(Sr;IpT9KYDzYzV{=;?xRRNH7OOPqlbx`KMJAK)ZnaM!?m^b+SK<_=L~b;2Z)6B z;bCI>UI;z3dxX9gOUQ+=L%T=V%?7^l%!d72Mc*#Ox2_AJC+#j5CJJHG>?`*8-QfZX zZ1AxmzHVQL0*zB=tIhtV%&=i3Q!k@px(75tm3di?h{_N{6t^mt8mJg%7^o~}fq{y_ zQHpc6-W|5pU3=kbf!GnGQ+v`@-81;&*=s;HlWN$H&8J8iX6;P=QFuO6Dh5v_9LtVo z%ka5Ju78FSjzAy_v{T?VC`cj1G2;Wq0ibHL!@EhiC2}fBf)!v>k50Y z2e(0nGPm^xE1wL|hRszkgH18^!K25IzhiEURWs)dyH-dz>72loho6ez(iAqGpJy1u ztYFfUM$HE=o;|ty^n2!=rKM~wS3t96n zfJ=Fw!JR%+y*0y@1}8b~PSa-(6l5kXK{R2qrZt$Qn>Ge#eRlfnWjTdklETcL3}!)h z0`Y`PizlwpU+UJ)P`pLigi6a5_@upkOTg2BOYkXcmq4cVkq5JS`SE%Qo4jq|dUmm_ zChOUX&!{r&e@Ng^E6{Rk;w9ztg}G2N{GeVgzfKPVHUig?BEsSCv*HGm!sS{6H2Ji8>dS6=s zRI0w3#b8ICO_-_HokPCXqqPd{MAkX4$Y|C@7y~CsnEH>qs zs~ThjK-eKV;UgI>iojAm#=5mtxz*xD2!!kq^}f5`Z8wU*Q-=zb~> zYxC-s_e|&xff}7fQjfmV`=ZN$vkqr&!CYS@VredHE1wi+QQTw8&~|&sGQ5>RW^+!j z^KM!39WZ5}xu3bFHusH+>($GEvosy_KFs$Ner0&iQM`jNB2dWf$mJiNy}bAA>B~nC zKYsS{xg?PxRb}!Co^l9y{OIMGKAD(dQtCw$CV3rV*82)}cJN|l0bE+Y1l;E@U%Wr5 zSyr3}(Fi6@W9wSPMjR+8fGM=RQ%cJ_q@_aShbFS=7!ZYB@2HA<0ZgIg2c_)#L7QDa zm=v;W2jZ(TJtQECmi(YxO9o8Qk{_08$q(CF^21Us*@0N7B|8xLd5Ua3G9U`y`LLYt z1Wc;0J*@WktIOG83I7FKS10xgVAfkQ>^&18c$r&cZD4lS_$c?y( zB1;KinhGK%eQQh!*jV4^+q&7-X1j28$=W%?CS}kH#V2iz50!@(!VWzPh(Y;yCi9jI zJ7tW{QPG$dN8I1xTV4xh<@|``Q{TFK{@~HsAv}m1r zWH@fBFo*_4GWCkO(WWR5x|UM$cnK>-$(4)mjK7vL2}ZV|1Io$Q62Z1OBij6uW+cjD z#p%$+C@pjje8HhOA4=&SJ-zqh3^ro%LU@MY;RKV1Q1Ezke)sXChfmM$tIZ}Ef(Hpt z;eK@Xt-IeYh3kbAE|n=Bo%=`A7tfT+8FskD@(G;=2YCAI*<%%_bF{COOo%k{10rnf zKL5_$=g+~`D>f!&sLC+$giebrkIwJieevS%_mrhGWIHIEP$QikYO0AdWE=<#;t4zI zPxqcZdH(q9yQ-11^d~Qza4D01bbj{TmuFA!LnF&9AVUo@NGIf|jUNC3Z+XD^hIv*3E+gd4T)(`PT!0W-_^5Tp}!)R&%q{N$sA%30#2lbu3+_R+sP zyQkeM3#yY%sL@FL?CIJ0*~2GiPhTq6%3|ptpU@*qpS!e2M$0TZJK0IpmoFYYeW+YI z52}?-sF6p1{Io^eEMo&oC*&x0e0+ZP;=ajf^G{75oqOSg8;uU%c>&8o<}wE5T3Ipx z5>ME)YwXea^xiaD3X|K|Gt|`tM3TdU@*H9a;t+ZmEXSQc`o3;}9KP;l6Dn zQvUt>rutR!FBazLb;j@p`~CZ*Iu)ZBdaC6M5#Y9e3Q72+sO=2`Y0n)G5{vsV!`RjGHH8--u zJ`6L^@q^=8-~+&Mcz$;L7U1`raI3H!=X2B;))7ET{pc~Qt9+Wh#*xIQiYAo5H)bny z_zuzREu3fPH^F4M?oi^8B|;38Or$YNvIwzAvba@agn+PvV>!6}ke5?)3t_8FzWxjsZHr=VhC_sp7(hFLwE7tdH~=CLa=+d8;nNuR>y=bKNB)Dd2{srW zHeyYE30-g9&(Z7wfY8IFBRrhQ?O=tlL-t{?zkC18t{!OBa|{9z0_h$m^U+hKd@1x; zd$`?x`O#s27e0xiW_&pu9#YDHK>CO5hdtMy@hC?j)CPe9+`6l@&#-glkrPd7Q$K%P zy*+QXd#!HsvADimPCFsgB`waqf9S%s=)wAbMkZcSZA6UaxI2% zgn-_*n8C{#fv{teIvRhjZBULvx)s0(VzIa!13J+CWcF5fxeQ-M0lC!XbX47dNgXp| zF~!t5{LEmq*8ZfLt+g35oQpSt$&Nuc11Alc8;w?)t#bN9OS$p5F;&y$h6~256HS-H zQQ*2P{6J>t0RSc&E;ANWOqnq=7>%S);J#jaHp*^Ql7;FV!$}N4hNZ0W32Z;DeR468 zhm|s9jj{X=bYCxKgL#f9j@nuIgiq6TV(0Kz=Jn5!gZThfX%6wnu;>>5UF8)Ey7CJi59U;3R{D5pd($}8p&FEhBA&sA@6MGp{-Gp2bGfo(?_to<+}+N&9I;* zK*$;?7Epvvb(Fj;3<$AE_~%peWjx&?S^J2==;UA)J4$nimpj6^MUmAkht%Q#OxBjL z0Az)PKR5>339l$y- za7dUSSBB}Olm0xvMQphkQwp7?fKTntUsVsxu-Vv2CVgr0Vn-!8jmR(uWFryfjZdrk z>iVMDUN_AGClMELSZw!{XJ_IJeCC$k34j1Y&!_4|IKQUla zS>?$L7%S+$1-RtrFf%LdsArL-QDZvNmsryQ(8q!K}NVfre39jLHm6XDd zBjE0O24~IJ)f@W{mO*6LZ4X9va&cvhCfE2R(ex#7td`13z=kZQS^og`wdu<{ za%2@wHn}*t*E4%_rd^>+ed|8MzUqKL=w#{eOm5{X15DZXvvs9P7a5X85KBr16PpiL zw(nuiP^){!5QqVdW&C-fJC)-=HQZ;1{pPR_W|%D&Tlh!`izXQ=b^?ZMK~+QXf|`RB z1F~ z3P!ha4!;7y)Vx$#Gg~p$)|}jEq1PC+B73Tg9;6*NrgEL!>QMn3NUWNDWp9F`!z^|$ z`A&XS`rG4gFiN433Frc&)LRp{;rD9Ky}C4^5Kx?vOgiR1mYV&rmsi;$kU`qH8WCx_3Ixng#*p>nl@7em^4ECq!@@0mZo&X`Wse&k8nC$e&B0diq z`$iQq3(}zb5Q8;#d;1B>Ike0r9I9t?hzuJ)B~Vwxcq-aIO7ftxh-5lRG)+k&%2V&d zz6Dzj)aN`i@<0@77)n83RIBE7b-tP{;TyL5$*Sg;WoD>UaRg!zf@8I*W{FdW8MZdP zu%Zc)=3?&eaumo9D0NivI6ou}?Jug9qI!l*&C4dk(%?>@W(k8unF6RZvI8pYSeabH z5z;Lj){1LFSqyCV!{BlW)nzswMh8lcc9uvN^YQMaLa$fK+MVGD(B@%8d7{o6>Uh7Q5ZYs0nq>bGUi*zP{-(L(FrM6Z$#C?5Uf;3qE7<&Q(~?;WJJ&=@>9=DPnRl+wsIW zhgn^f12a?!skV{khYSJFX{jf(`7voK?M}Vl-Q6?U!DMd!QwE?6r{5V0H81V?V2@LE zr(zT+b8r;?1WMM*u`?v6K{_c=77xzOTp9rp4c|2g@jTBsG{cx>_G9b*-7RC8BRqdV8|8dh*sjI ziDAZ?q%fJtFZUn8VB_}usfdsx990nj8KVVXHc2u35DxLPaC$Jxu&?yoODDZUB8<3Y zK1Zj3srZIZ^a5fDeZ!EC`oc0IbMz9ZR2%|jMPbM|yK?gk#i2A3wL9%@Nx!EPzVehp z7pPa8Wd-}XCkuI&CdUL6rIRg!Pv9eYysrps2ss3sN<)fZhb$Da?fETO)zL>%Gu)YQ zE>Xz#T|{K#7bOx>V#!rHLs1&E3aU(&%u$PS2?+u-iTzfqUI=|TzM#!@w&(b8b{G<; z1Q+QjWvS5S0ZmuBN?9VI&|=n+WU7**&|*$hV+({bQu4Od9B?4G1@0A057{VP7EaBF za>E550-cR=?X!R!U0i~Yl|%TIuT0FZUdYwNqoff{4H>#h<5qT5Ak5KKylg^^eAc6?h07AKR4jYhoWq?>>#M{* z{XDo)dmWQctZ zQhY`tJDxDA&T_LOhRA0%RL+_mFk~sPsdu+&pt^4scMp5MoR*=g3;yZ=$Y(=Pz(+c@ zF9J-}xtFkx?w0OMUTFT8EnBiWLWZK4h9Mi!g4V|y2*lL`a}A*y2r_&MD-uuGR6~v) z+KUj?8OuTh$oalKThWdUw7UBLn6?akzRzgqt0e3C*U-63f= zJYJfC?C#@751*breVMq3VAPaB0T4QDiKU14rccgZ-o1bK<=q7SsI89)2x0)4E)2Vroop?g_9nH4+gU5Ft-uu>{Bu3poJ84Ue z8MJrrg8RM;7ZD%ka83^v+L!~zaGg~2CDOM-#rH@{^I^5WyWN`mA5!_qw1j0MNU{zb z79j8W*4^_~FB!FATq6*E+&LbdfAs9x<6cVv`nkyo zQl6g+-2t?r!_mN}4-*Za4c!6|I`8)%KW)`MSHDLHV!%D$JpO*t{JA2ZM`*)8KYMZi z>_MUdvf(=f!jF4iM?#pV{SkoBVNOXg>8UyYp3r>M5+j#RxbaB);_N{>Bl~`dyu+ap zk+=iE`SEFMPMoI$1PEdfcYyF1&V-2%EEOXVd*J!UAKiWN;_mknZji?V5rEW(O8@Gj4PaVhPMt6&wee;fspxxJpJOn=no7B>KCW+~-Gxea%mr z#bF6E>cs*sZG`RByZsCEL^jztN>AuD7q=s=I)Fu$?6#>;8 z<=`Q$SMa(K%HhKyqk!+W4|R2r?xTMvwF3vE_JI8Zt%Ov&l&1p+pIYhYb}G*YVz#M? zJUy(Yz6Kyy^hYH`TsAcdbdvA{=l>FT)DW!16E^ga@Q~*I5`0twtmUWCaZ)}hgpTqF z9aeGzH#g^((4%USLO9{F_Qv_XM9$RSaXkg-}k~iPfLf0v4uNW_SyvzIx13i+WY9ckm@2 ze$U`7Q2Xs;)Zi}h&8@S78HR0cGuL?x?qs%Jo^Pu8WC#DjT5r_#-AN2`C74|#Uzk|O zye$@xND>SG5s~f0eobb&Kft9DjK`>+u3*R#adQxdjr(Q`-vd&J08FnGyF@b-LWjFf z2>metnJYF9OGjn=!z zX_-;smRZ51Fl{W`fv56%fr8BjUxP|Bd1KtETHLZ1K{?RTxqp9pUk}r#ZTw9Q(^Dgu zoEDOl2(D$U%MHqPG^qrOl)2%cAQj2i$ewiVe zeya5{g9Tp!W9qgmh4$dV^g)r{X9VlsXW?2}FN1qBP_n26RqdA>j(VSk(=C`AkMa?N zH@&;F@lH48Y1N!$H;e(ONhv3cpPEh8sYygB5@{Q#rY;2!D|#*_F&pTnFNIG5D%puM zgp9ZkQvfz#E$y5clIf>fH8WTU7oeYR!^~)uk6`Cb4WXyi=F)xF$A)Mmr8#8;-O`?A z2&8mZty=~fDrLUMl3fyQT?U(Gu%?pm0FuGG>xJ1h5#J5?qr2~X;T`jT?kmQpO$X8r zz`-bf!+r>F3I4)l(eNy_Act0qC~qi80+yxHhJd?z*YIs?etxbXkydM{wYq{NTHRt@ z^BegKa%eY%yez693E1n9c8m4i>u8uom6)R#~(fYQD9mpfSGE(k2i{ z&+Du8%xun&qp1s`e?Ge6KNS%>#-o7xyS>PX;Cf5kdKpdy-CH8}2Yn2e492%au$T2z zkiI2yz1&U)?_1*5&u}uR-x4`o5bNsPlSHt;C3;lO?ub3GchpBcHXPj&!{6)EZ}l*B zOYC|zZ({hmC3+w9Fdhsuk9-cQN44vsqgn(_1KgccDT}f0_8FgQWHkcbKIK0?(a6bh z@%Cx|+kv#FdgI^ilRwo>)KGu>luzx8G6A@K#wQzDrUkc8`HxO?>O`_|`=q~qBI$Gr zar?YKJdw9fEN-9ksSc7zH*TLa)wv%&oIcd+MH!Z^frkJd$!Etp}YB5puh_c35C?Uxyn>8DyRGg$By&`-BrW;B|XJcKP$50=er z4;#5QO}*ZqZMV&K2Nxw*)5`vn&FN0th6z_`&7x~kTp_ask$NibrJc6CsE=0N0x4>p zXV0e3ibN|Tm~24N%EGmHdxq}JK)H^}-*dxJw6Z#CkI#)qYi z>8F}BGgt@{pr3BS%xEDJc68bd3*{juP@knWukfs`J8@J040H$N{R4tnw@Mm#u`^@U8+cP^NtqQ%UuHb79 z)z+S1X}0(6X9l5VQ@g#tJ-(!zf}`f9z3{2GbcMS#9Xxh4P0}%5p>BpQO^Hr z0VBVr9Yl$jv|AS@L$kOPnWR$}Ce+sJZF^~#F3hIWJm%5`<2|g86($sQvCR@bm0|+* zM>kcxeHCb3|LDVml=}jr+hIp7)`y5emZ?ChL&u*4E32s+;}wGF@J4qz1*O| zq6Sp8Uv4-``K^w+1#{z(cS13@Nbdu=y7w8da=kBxWcsPr%g`TUF!B|npKiO%Xw)45 z%^a&r_Q4Dj@F1QVk_sQ;SzCLSA&}BtwQd<`ss%*4>$Wa~E!Do9Ug}Pp4;sX`Ho1Xr z>B40Qq;xOX@x2F$MfhH+F{cpaQ|v%)!bAuBCxI{c3V*qMWIsh9#ZEM<6B+@oeOyW4Ki!6z(P&Tvw33;25KldqGVSoJtvxfOT>*p$q;yxUTLzlau0Si%)@87Rg8{e> z)EQC)794_=4O~ly%?-+RRE?S&j?%7{z?&P7#v6lIH0_E3sN+!D6+dlj+6-fE3_~Q+ zHc(An3ZBN?m|UU{m%^tp>1ukVJ8_0l0_2jdY0NcXEnPS>B-2l|YGyDB7e>D#V{UBC zfM(!Srko*IT*Yt{fX!dqS}!*!*HN`!Za50SR!7}}x$(X@pY8TWtH~wY3BcAWyP@Jc ze&@bAr!w*Zsg1a`CincGM+n(Am(hbnc=oZjI#^>U$zf1Bsrl0s0O}olQA(hm_EnEmz_tC)icUh>PRSI_1_`1G^2?EyKd83w z-7JQATD_)2O(UB?g9j~3^+mWo{*(XjAK!Ur|HIEXS`mMZ&_aZRl&NHFMe(F(3Ylx0 zsjDdD$ik)K&oV>=j>a|26k8*-$g2CY?dip*+LMsEwz=9Dh!Qv!$R9U-|53DA1ei9TI&J=}$YW*Ba@) zaMC$~-OT22D!CA>6Hc(9m0{NE=C1-clc`BOL5G9|p4n-gK+e=_Q91$J3A1rMoW(i4 z&HoY%#!r~jFhs@9TjO`E9TH5&&s&oyMC7N8*N5K5=d7oFh%e>xB)JWcckdE_Uo;x- zeBa{wjSrq)E@}5g_!i5eSxql0xL}xnY^uAQ7ETX13GPtL#8(I-scEPSmXzj(`lSee z0#14bUzvd~(C+z(jbf?n;B_O+hFkSn)OqW?vE+)jkiuwlR7M)9=e_5jQvh1xu zZi?IZH&DywuwKAta1L-6$Jah=_pa^_$oA_#42n9^FQ=KTX1iC+3gsC5i!_7gk{3~L zoxpZ|bxRib^|S?GF=J}lLELp*&Jh37^O#@PyH5`@xYxKf-1V(CIEl%4PAKGyKdbN; z+y{!F{+dUv-fo(;xqaOR+m?{mHxKU6JHjE&ag2$cO?LCyz^~k$2>$cl0GI8}eXnOp zy8}7wVEhu{EiU1zQP#dO(x$T%V6kK3EM920aj!Q`rGZp#)Jgam`# zY$ZRtT+Rx}0p`Wk7VhhAZ;1>Q0R$m$z#f1PCaW2*os|H^RA)J}_c^p{oFM`57^E;J zl87yXOaVyDt`Jg(nF65bR?EiRP}P;^WN2XoAuFR>;e&}Za|uwK-4UoZbO~5YDFJrf zY*$@9I74REwUWm&c{#E ztm0kh)H&Yk&3E1`;Tm!loNtxsANFRtPGrHiO7(;OR1Yg~htJor{aqI7v+!LW>(ig3 zBTRZ*ci-%1%g@ha-|tQI^Ec`@dT?FAsjzxITXtkES7l=tF`)R>r>oJgCW)?g>x@4< z$DN z$u_<fa$iZ<}k$fRxl9Du3cI}HKt;uZ8>{=9tu)I$uanHLV zQih_oLL;A5qYd)u91L@2`w<|q`qwhUiC%)WQrM-!64ugmaHEzoqcM^UeWl5$Q6sWV zmmB4r2{A}&wU&Nn6BaX!sdg(*smqaol5D&3gmAfrT&bh9*7t&}K6BS_#SvCGA_iia zs0^+enhxvw5(@LTGcMm5@-KAtpqCj_LxLklzb9iJz0w(q``)+G$4O#D;)Ug4 z@|XB6HP8H<>BtUUoX+oewOW@meXoQwfu}_2m&%OemNNla45R-9D9QG_1xgr^;pFOU zeRWvQw(SuqLu3pv)WdLBaCkIXR+l`*xiw@}?=FLk+rJ~7w@~cA4W)5S+FYB`-qabc zljOh zWgG+{JL9n-d@y-6+idtUT?trRBPQ6@f!VnPCU&AXv*n`Qmos!C13(7;X+PRpRCOdP zHyUo@uxNTmMQ%7!uBtB%FtOy0lcBS`ae~R37?S+o+nccfHs1F3gL(sBRbuX%!LCLs zsfn&?p;~J`nNbg){n&i7`R05%+wFe%S3msh$L=?8ZywjH3;z9v?n>aIdi~yY^Jd?? zyJ+y67t?#spTGX_(H~Bqp6|c5tA7CBPB=UJMv(3=V%vT8lLp^>bYl;9QUHaoeD-tn z);GUN|751`-ptWX=V>4i{&n`6n&77h?wj9S%=Wy!yS=Ly=!ZsVz&m{Q=HI9^HAldH?AdT4m>0?khMM4~Mak`UFbXVF_{hwyh>5=*lg=&Tkmg5 z@`x~y$1g~(Z??0I;Lu&ZKhYLmKH~obY*yXCUYMp?@&@P|vTZBw?3HMt!jHJ{ZMI`!hcq|AxEoHY3eqr+#K4P0iyPq$@YV`R3l zv2bXcpOIwO{FHFt%^B^6SufH&00>F^oF-B8?T~%fnY(Dzt2QD4hE#r0Q8}#O`w@Ir zRdo&};o{8>Hcn~_ArFb1l*j0m$MGIxWv2N!IAo(5%Ooo-fR1l0BeI2y0YfVP(l^#& zx0v0SixEvkn_M@`8vZx$QlAcOvb1bQF8#_8mT#)+mAX$g6HAoc!4h8~mcQU^Ill%A zn*VS^O7Z1uo~6}U!j2Q3SWZucumX7fEd2poYM_3UotsFV(4;{N&WFI3L=K(%x6OvYZ z@EV%5DXAUI01_>i4t48`n|+x>9ZmfyuRrh$xqDam-V=k=DpN6wFAPaw8~p8-W$=_cM*;);??O>E?L z5VNqzEIrQZX-%e~OwDaXpXL*swAs`wCzILaR7X;a<6L^c*g=tNA%aS#0mF;#XjTNr zmi<@0E13E?722ZWQ@l>tcN2iG^Vpg@Ed50_7W=0Z4AS{&Pp2`rl)ioc&evIR>wEiL zd!cC_1h+tbgMXYXA0!A)L*DtLua(i#2u8@CVuppYjB&$u7j#2?9-fD5>x z^RTbsN}##1eZ8!<(`K`u+`H%h*E9GZ^JWbn9iDCgNnFDAe-9iiPKS-%^z>hooxd?u zZC+CSZ?~rRbe!T-(){0^todwyT}>}%^S!(_?*A>XeT+TO0o3O!r{=XL2-lGmv94TX0|D)4& zh5?^x{D0np#wN*#GSB`)`noZ6QQMP8wLRQ{Sna1*+vc$0b-wbW8p9r@JrhAzIC)gt zuQockmyd7=J5YBdjg9XY@?6;$wjNxqS8(ANbLF86c|s;5Y^unU0EcY++{pb>t*i9i zVK1u{L7e8mR#BKS(xsho#vqvqB2-CA8pF)NS*wgQhMm&KvBNfq1wr^P`ygnaz+`^T z@%zq{(~V)}X(KooWZ*XfxaPa8tL1`6o1q&4Vu6~22SO6e3_6V+X9g=TLBVFr$bfm} z^=#K%d{WJGc2Sb4nb0GOlfH=TY*_DXAFdWqb2$i3L)Xiak~K34owQcHyExS5#(max z#`R&6nc{?S$j0wXK%Lh1o=rw(=*|Q#GR4J%rKy-j6}en8l8P6Zpn_mXg@yT7u=R;q zWL#u3;xq*dg7BUc z>JQI%nn3THDUKT;03ZXurNA?|_qbVK-ER&T%Y-5N_R8Z8pc@kp&*wy+uKe2TVMN7Q|a4Fdf3HLK@eoZt#ThWJin}06}}aB*nC!zD9FVx z$NCm}uxw`g_rIoX(l>%0w+VyjVDZ77;w%uNgGH)QGTQ^|6ZN?yY;kcZy}<#{}_l@sk0y>DAN zI*!H&$brYE^Xq1t@XLIWAp$@KykDH}x7q~x`UQzcblwK=xQ6sf^^AON5F;Q5p5d9y z;eNH;&oF?+E}1XGQ!vPed&I{dQA!;1$mbCe05afh@-f7+R05N)O=5(04mhI4X2{C{ z5!yMVTp}+AL_iM08^W*_n<1k&1OQ~fM=sM=x_{;yw}X7d7Zykl6&WoM0FVKn=X}fu zleiu7&2t0@G7&v9ismtmj2;;wAP4Rb-)`zfNq-3P5&vi1(vvw-VGcS@)JkCAdz@uu zj!BFwL+k<7sQkD|59bZ+_2wngp=$|3W|E7CL#z0T8U0cp86H|O<06w>92iph5;l;T z`HCH^k9ua?m?SvY{BHR~aIKGp#@5f(`p@nUvG1v!ur)(xLkebp=>{!hN7VTG! zHTy;pGlEpq%-5D}4}|a6zhtG|zSRKPe@R;Gqx46@_Qy5w0bZ_9uOXPgW=wgz!c9+) zZDW&=pW>HzjTryB^Ki+yWtaM!OoW5@F23O{qU*QROS(I|3M}qx*kvM%!n>&AJ4DoP zAwZ&PAQ`%aAQqS+#I}_P5^A+^ED0kpMZyAMfAnK261OvA)+dLKsZ3&$23zeAJYeV% zXGO>Iuo6=|92D9^G>RDlnK{NbiV@htB5b`AB-9Deu_WZtPi!l8=F?|;^bA+)<9u`I zF?%UAWf3~M+0r!X0N_}w$di9alC2Djrcp=K#*&a{(~tx^lqNchUL+pdS=2Hy(%=il z!We4j$XH{@6KBLCK5FK(ae9_GV>UD!7cx^`3PX!M(uPjzuL^>k;(eY^~@C7b9pNg4Hsbeq1P-h;Yh159W3jM$$E2B zH$!zyZm7n`oeQl(OZrh6F#VSXCCPjTPj~PdB(|^sD71th@8e&o zym;t%FNLkDD7dWNemm(jPuBtWs@e3_KJVRP#^ zQ>${YGE&=`&dnS;IJrDKHzzB#jgx~!P6>Z9**J?XIsC~8?O+tr`~)GD>gOON)BV^} zSjz7=u(0PQ?H6~v482bvA-By={{9yVPJZE7NsxP$hhD>w65Pox&Oj4!A#r<3j<}$& zPKk+&ds7nbrRGdI+)K`z7^V2S6ki@<&*Mu<;@B{>Jk%zm-;$DOP&NO|(V%h;8dGKS(8S22=b|}A9yK40De*aJ!boaf zn!`wPZps+N(IF93ancw&e2$>%<+k|}!lHNouA6Xq=GEdZyK^|I@5Vg;c3dLSj*?*A z{xS^=+`9M!mAHw2LLUE7@bCcHj6N_B)wtI4gfQv;lLs%0#=lMO)H4 zWG_GM6Ypib5i%*c!)EClA%zr`_xG(VooXKNOqX-WB zEl-Bfvs|(pd)3Hfhzag!L7rv%Emfic;h5^eXwH)DzU$JbnvB5EU};WNV2*9}X`b+g zvOCO%uTa-ahcacgQm$`-&|>K@k;rO?R)>Utv?jLbgd(?1+e)RknZkZchD+SyBsU#2 zw$&W=h^V$K6*M9^Y|%6?$ep&;?eU7>kXO1TRmzsBC0nvKY)K1?%>2e_;i;HJ#X)1} z9d>Ea9WevJkz$yixESd^7r}yTUl&W1qhgtYRQ!knSQwY$$9kLAh;c~??%?Hs(Nv)| znT$l{Gom#UqPqx++^2QK>+#pp(c2 zIK4O-_zjvt@ORp(UVk|}`)md1YH(KlLho#`s2Y-USu`;wGiBJI98!7yPGZ$RR|ij5 zRg&;%LRwV>T5t6LIDA!+Ao>yl4;6_lXJn{IB{$YUBB$Z*sZyDd z?x`~v$01H!XjbkXwdE_rXXQ$6qGgiV3Ac?}{~Bo?vQ;l0L*43A+;K<7P%AKD z4F`msmYYH4W+Tm@Q!;A?mWlBQhLwrf5F;a4GVgLc;6KfG1kf1%+!1`nb2ZzD-BW$f z2dXgYg|U`E00hQXaDP{;PJ>$^$VD_>x!Ry9&QyTGr@)6 z&{6!wKM-h)Rp8?#(?zwM-BgR|#o=8los7WE(S-NQ8=*bX=1~}K@gar!|mj^c6nvY58<-9 zX1%W9V>q)-&HQZW)~+_;DRPPcT8n#_A*wAl(!)q-3o&jvO=vq?U-3g083$-Zw?;ISSD8?d_TpSo0#-DffZWwpPI71tH z-c^fDP>Mm37G-Bv9T1bJn(Fx&c?lvG1{u&?!ZB$0MH<8B5-2W(4{(~J zm(m*nWhRK=BVxnDu}%_4hT}wzXwB4;BHCyA)YeE6R$#&y4hY-jJ+}*V(=2b+&8nU) zC-5QEiyO#@UQh1Pzo61q@22)UOmR2*(ZFP+H(E@;_m8NRf4`S*i)J+wUt9Z!GI}|r z6Lj*_u&v(hrO#^icGJA6_?MCXV;PMQ>ja(fCnvVj8yJwAH!MXd)JhKN1dTj3Y$fe= z*VT3feSGpQ|KBaWDT6-kNGeL5KuaTkCZEq^swspB3sk zEjYckIo@*=0=Z}Ip3{odTN|R*(Q_0^p`O!%(_0tObKX}uL6opR4>g3A-t(WwCkDsx zS~NTMGwMZpR89Xh(UUTas$EzoX(oDsuwpId zuujrT^fbRLXsV>mYVuLNe^{-}dQG#P%x9b3VaXRC`lj4Y-g_7Ie(JZMHrw5MawlpB zYOGVoYt*0onp5)C%S*oI)HhWap#(r4)xgj~=kgypNzyla%lIls-^^`<0v7bB3XU2o z(a{F5yv*;tD&GbM@|Xga7Si_@6{Ol=2TPaJUG*ue3-;~R!&?DikEwz0kvsW|j*_bE z;fijiN8efJ2t5quQ6(%fY>eM>8GzRy1SJ+xm>U0k&q3d-(GrVVkP_ru-lR70#|pd# zPhP(NjcweV~*b|Cs^;4 zlmGjYq%B;BogE!?ZGU5|r~Lfh!>@g)-Qq7x@C{fAvf&}Q1b1Qof_8`^E*zt^v*pg< z7v-5{wJZEpIn%Z|f>VaO0q<}2jr-p{f1+KXNPpvaZ3Yg6(0TpcGqH)?OWG~|Loqu? zh~3P&d-(lZio14^z6%*nRL?Xwn7q?Xta98{gkN9R%jT{2lQMoCz*43TPbp~di2U5Y zq1~fML}qXugt=pgIOiy9uP77eBD8kG+#mP|a{l1nt&Jc7E5S89Bxm53^)F~&C}Pq7T$xbk zol<=C*dJIReZ<-0p~p!hc}X78>0=pM63356hZcSQm5thlRP^3CJrSBvxrm4{(eSy z4j(}g$?f^@K4gUnb2tEu`XR!azpJ!%M1)0o33!&$at11e9LXS&KpJ8!eGFb{ALY9j z(Klx@b&Q~}Eke|?4^`SYB5IMqL~HPrk&|#aTpZCylCT03BpeW0g8PI?>{zNe(kG0( zG=-2Rat10%9LXS&BAOOr31SG__E91|91*r7kqJx4)G#DL^gEdtj!1%HnQdg^q>y*l zL_#)V5HVbm=~#F`Nd|Wjm5PmYkwhY9ImBrg*3aFj!7`z^%huxtkXUY_ed5Ptn^3MX zq-FXwqFm#}C3wWC7jGJsc#UkDMA~I&v80QKQJr#)45O)p%W&Z77B_=RwnmyEk!o2A zabM*@ER|-B3}Wdd%kmH@)`zY>y{~rrdVMvSFRR&h3L6`z^VxoWJ$*CVuHo-Hcre@T zrmJQFyBqn&y8kk;ADspnyY^|nq~7PPez-iW=M%UGe7&#tyjnff>Re<@l|LaW-UZ#$ z^=x~^O*+&CBYB#HgTY+F-%06zA!dA0ohG<^VxE?-7!2T6qSvjKDbi=3WO%0zV=}OC=iNJKM@T0 zb%yjHi~YWy0^;|SZ$JUEY z170I;YUtMRu&cK3&EKupm(65zv%hZE@6LAbUcm>Sy)%+bY_lJ8Z3Z`qG5sF(Y%#eI z0&-%vH)0XVS5n|l^JOCz>4sKPP?*4U00{i!UPU+>!gTzTp*n&f251B;FfpDD2dmc{ zEE>hUd%|5);=IR`p{f~449<#1<!1f(8dfLVkR9zinPukQBcaiSN+yS;*9M0vxiz z7J*G4;%2kKEn-D6Y$senUdgUI9MXv5kXCpCQgq-kkfIB3uU1hf_PHQr;G5YN<^yH` zh>HY6bHP}k&^Q30-e2@F5~cyomM6o1I<&(%SpwRMM^qdVwpVZ9P7t1Y4jvM`FoEj; z5SW~~Iphj2TO*2tTHy$Zv3k3m@#r}?RvSqi(1=Dnax3`b9Wxmh8O(6E3IY{60wD>X z)Z4sx3Y#2fJj)oG)JO6Z1rO84pnlCd*JuXy>m&n!K?Z)R={Rqz4ZnG7=u|U^)A$wy z;aL;xHp`m#?r{dN@-zVlgADvU-!TSHWDPKMo=?&e=m3G(X#Cx5ePe&Zzy}+j#4&XG zE5Tz}-D&K>Vb#eJz&5I&(tg9p%)JR)abKBhg~jo~p&Le&)C7|VQgNC$Q1rSwG>3#u zhI0~9IVbUuTE|!8X1hxm^C0!mjWo0x$3=2B3=GYKBjL_{?vr`x;E~V^g9h~r3Q5@6?M@a0Gdnoko_S5%yem}TRk~juUf2CFz@OSdU-{CochX;@r?LWv1 z|3MNSKoA}y5=FKP%ZHyVBD$Q#LH_z?^;K(p8DIpm_5%w9CnM@%~bci z!6YJqj70QzBH{O9T)1b=<>jv89y)X{29ube;i1qNJ_OBYaJ~v$mbJ#vNPxm(bo?6` zzz_5D>)Cdq6T6{VMi9rq0|@HvJ<+|NNOgxgK`c;H@IXkyR}k%Q;98)1KU?P79wcNc zDiIvA@#CTUB`kf5m5rg}VI)tpa4^WgpMrP4XjV`Lt6-`!+a}`Zrvs~AEwVK;4Ua5i z&(+aml;>J;2`(l%K=`sKdQGI*psuLUGU+3=n8~01j*Dy z=n*-l&*kkep`gJhPD68flBO6~2(&~T&aYrUnG9Z|!nqfy7$6Xm@Tc4@W&bQuR2};9 z5-qlkkSMXnPU^mk6E9zka#AZ!(QqJWmDnvlffaMsPe-|hk*2^cL<$==rSYyY3fo9i z*cJk@)^HAlV$N!v@eYC$skGj$5iAaAtZ+OVwcz@v5S5ZVNzdPLd+4g{MZ zb_n}qS+6tgEVA|vGL<31BWe!DW)DjQdb%~rJ>eo1FH^IjN5qCTjq;6gO=H9*IGA(+ zn%&eI zhqb~H(yyt^mm-TEx~5_TF*qX_!7xE;mWLHwR(JS1Iuu0lRORXV2}Y>d;PjuzUJ`5t?h&fYzKhA*tO&xgM+&k2;zWnc_D&P)51vv zz6>|KX^kie7%jb#VYl0PQ(ZED8g5u8jKg{W)D??R4SZiq4ON2+K`2c^I|#(al))_V zPuI=*2i2CFdvMASOXM74DCFT!2h1D3#d7HB0Fc8m!2mUGZ!J*%Z5|~CfLgFm)042lO zzJ6UzmBNE(kzA%A!QhY$&R@bWr6C5-Uzo@iF0o;J@PdnVs(rnxrVv(4F+v;%7`ket z#m1EMQ)(|iYSA0;j~NT6eFKL)g2*H$$yg|CDetO_3N|M4Ol+vDI#CSS2}ekug)QnC zKU6w23p0WkoDqy*eu87(nL<^vo{K_H-*BkR90`=*1cW5~j`Wzs^m5zq&@goOx02dM z$3Y?|pDUVQt9y)w=87mxGOz#%;ASmO#Ebzp!X&T-Kw$E_OP(1I_q)qW4hVt~jLdrl zN7{bCd)9C*oiGmS0TB52-BGqhz1u^cwS+Wl4inLO35$65?)iVgt~~oE7I6NdXWpcH zLJuTPxyKL4kni@=2UY=^m9+DJETa)(ouCu`gtU79B(0|N6<^Z)&t)|;cmuSvG|>_5rfJrde)60m;xcV%=m-vK#6E%SOG zO<*)O)BI_(F^$C|OioP%&M{5I>!iu=v^yc(*Owj({w8CC#309Xh~FgzzS6FM-}fK#bJ&q!QUn|ChcnM>eXghVKAS<37k3K{QI9Wwnqx=m`bVNkYeqF zmFXfA+oqTho4>HGpK-8Cqa9H#{Ug#%1vHadm_7q%%odaQe=x1ahk;l$!%6GY`Z{Uy zZ>0ONpO}GmGuvO=3F~xsxPVd?%-eTUs2pz&yvhFOXlFbHx`)2U$YXx|2S-f6GDp^) z|Cn242GvVN_6urNl}vHdHe0yMaxuNQf!iae`v%Hz3wiV4_?);8WFHk<$YSe#wX^k1 zrs?h<13Ikj{yuNpF`yo5vG=LnRLOuD5iWS%*xYw&l3%9H_>w^fQV(?mHEbOJg}IRU zEt{(e8~`+9+C{UIcaGkSZWARx&0W1lE%4jYomTa3J~j253Ec7K3)Vcj>su})E4&wE zM(b_#coH7RkgYalubXJiJfrVg1Hqrf&cY!x|IKZZ6f0t{I8)>nJsX@voz%fyNj~|B`xRSkeOd{B{d_#l!3Y>bBE#QkkI@S_aG}m#T@*AV;vqLxYz^&gM_4$q;*x2&7(!QdHszSMpd)WJ zn-07okA_o*(_M4e$~C*|a(o3U@>I!s;E7Xq>`>zKwaao`6UfN7!yilvcyWNQ)4~=W z_)6^_Dx31!>w^B!f{wg9#!B-`xeQWptVB3u*5Rq#Lj z=4Ep+HcQhBj!}e%+*Ik8xAqb));-8Oxh~7LGGQXeBOYlA?QTH2eUDVw$oYs}p?-S} zzvXeMuw4lgId+bpuxt0Q@?+8`jbK`I{8Y%u_sIBZGePK0^W|YtK?=R))-61KCeV@h z5ntH6GMk`83@GdigozxFj8MBdoCkA@t=y`GM<|AiTz|bi=ZEX6_t%`^Ulfd14h?yA z)I8v33|JCWljDLlj|dU@sg;Tl>#t!0<{WlZq!RnOoB<^)GX3557B)Y*O!DlzTXaAj zgo7f>jy_XEQ3obnaOQQr zJGfvD7XXo6#~cXm&A)mh>PiLYKnRD-I-(A|3MYSVv(g$NBEMg2@5^gdp6R;*eLx>} zV92T?C*M{J9jOcEzXNOWZV%AZ>lBS)uSDtU^I*&k)i6tl30yLbJH|gwcM%heH}s9MTF$$S*oAt3`czDQ;UIdIrqPia}94 zqI%m_^;#Z%8mg!h#W0<4g!Cu7-Fs6t7!N(!9m&(+4h9+c(>9eU0Km1gaP)xBkcOVN zi3KtaF;E+cowyWlGzk!xBw>J%gg@U!#32yz74o6yyO_iz4GV=l{K;(hE7*X*LdwvS z*(6Ql8wkWkf3%GR58nSnhCbLIgS;d@z#xO4_FW%;afcD;dtzCRW2F9_B!2k#q=e^} zGmeH&cp+Fh_#m_YMqLXy&i+=O*5AP-?Z5j}d|GRq0gO0}Z$S{=AC!j;OyV=cPX>;q zRuTs_q7jeU8~zA8J6`dWW4O8~P9ZxGgva)_cgI34V8w&);Pwvk7=iF-G5`*>Z{da^ zv9Dn8Q0ruIWG5c=_6bvU!|gpZVFEb}4a6dn{{+G19k}d#5~KlAuJ z^qeFLOW=ms>^qBp_i|f(%2XcOSt5A}cngzOosSJ8Rc9lErxeBopQZV~@2+dn+(Q$j zSYSeV2b9qM8h*%(KSp~aOoCg01Tahp@&OxR64(MDuusLzYv%9V*N3KJBrOFUyj@^( zXB&&Hyv?W=+zn%x*IWDB&{P<8w-QtObB~K{pj>X04N^W=GpCEOx4@gZ`zUN9P3dkS z(C>U!Vy$H!aK{^(l>~7~^x%3Dp8MWtc

f$KZX@0AsBZS2@PS86!+;ZUNBjQIng$ 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�r6k4SPBKUku%;{M0M-qV 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 z zsng@>F8+~bvqwQxf+b;RPnkYYI@ zG*ULp@#bc`8^derY0C^Ii>z5P_I*Hy67xjN7GT!#8ec7|?Rr9>2k@>dn!x-)EhWOr0J< z=<&+p+9J*(eKa#HM?Bf};}$NlKnWjmjJk3581ixAuzk$%~g7u!80qe$iBV*{N?>^KfKmsT!KgroD)Rk4kQ6p4x|%A zt zRN7^7XL)jf++C*VOS#KDIY91?Qvi}Np(h8(jSLllHblJa$pPAMLRB}Dl}u#*JSJ#)9+x`kMs&4>W9|>2n(1rHL_Z|)pQOKe* zX>&4<$KL_AvAESvR^#=>j-S{+hx8S$Erm=CmrDtIslD%ty{ord?Rc|`gYeFBE~9aV zC_T18+3j0+kJp_(qlFhYs6hYida;F9}80!oT=`DOMn;Ss2C7G6>k^OW+XtHj5 zf3($IUrE;2Fs2}z7B0C>MxFRIhPzl42K5Klw6R{wo2BL98x1GpB$>Qf+S-(M#tGmP zycyqZDL?u~0TjZU!IG{jyo@m;yF7|l5c$$<}`l zj~r?zhR3z&V+4IIu3~N7Onh(d3`aK7-NNNZxvs9q(@`E5j8vYJ0V6bLqqEpXisTwx z|DG>*hIz-Hh}#_EvG3)GC1V!P4U{e4M2h0l2L8K@tAb#7OS^G~V=bP1;?DQ9eeaM{ z3YYXa1rCasGqgJr+U}&4j1IAs$Q|Oi{!({Lcn$!D_`ZaQHueVn3iu_VZPa$*LrtMaA3@k&S$D1z&xnhojH#XREz5lo~OVN+z-%6)CKbq@j^Ls zT$X{#1ANC&+1<~T)3@!Q(*a6~M?>@A%Z0?f&mTQD_aS9>Jx2+yUYXeXhtPNzsB>4W zdmqH}sv?>O(4mdny2YimR}Bj6tW24A(L=$za#)vhWZ3GUHZ~mU>D6ylyK&u@<%nvK zzsM25CAF|(aGwNxf`c*LeIk%mKC#RZE0=XVNJ}xsg#$KYlelM3Tx;^sVk# zGWN!ijnN`hA81s)KfCua;}X_*gewDGb$?YA+Rmtl#YGWtr9~XFOPO&so8plEOhco$ zk=6g`8${Uc^Sxd`c`-wI(2fPJud3pbVHD0}LA;4-dI!a`q6u9QXQnEJ>g9J2NlZLaKdjnki#JOmxJ4cq)?I9ZhmyNKHCvSVEs%SW=%(8kW#17nanjlZGX93n>_#)s1*_DOYZA z24%PNH)lZR=O@Y6(W6bE*?lm_Wqs!pSXAZk|W9P!$(GaARoUIOsH*I(s%`))(xNQWwCENkn?qUjL!$hkC|agO^XPT# zW0^k3$M*3j{|h?)>hJ#O-@P~9nNgXMSs3Yf%|UnPef;7^#El#G-Z;4KG1d~juslEw z#OTVES1(=0(IIR(xSe~{NHtH5vla@jC5q~H2QiTVT}R|J4y3@`Js|T)-|O zhrcL2cR9RO$i>57g`T?{cG>yR^5C$LyXUminLZ)u0g%Jd!C|h5oqy=z8@Ds{4?d9@ zMg<=2SyoRye*0ZbKqx8_Q?yp1t|bBUTroKR!b7~RiN}H87_FwO>^AaV>Cdyb%jKe+ z(c$!`mj`|frt@Q^ixN*$&d^|%S~WagA*XhAiU)1arYnx%TQ+yucHlAQoL=shDsl!>sKzPUkO+$-16U2ZZy4A$6Z&jF%`Y*wQg9&DXZ zW1O+Fu(2yRRLfOTe|up?m|@TeC^pYmwSEIrcd_BB7z#mEH1cIldfPRp-fO zt*RQW!ftAKg3e{&a>mPj2M1ShYaV9I47ejgOX8#BgKD|Dz}4D#R%Heoy3Ku^_3(^5 z#*Rdj%R2{fU`CgB!n^4KS7?ZXqgld*JD5(ek+bp+|69L~hXb9(!@YNRGW}1i!Jk=9c5$m&V)pKgug5ab23*xSi4_sgDJFnM<>SlA ztEkW(?V@q-Yhl0O0V}duW02*Jf)H$v(%@R*7BG!S<6H6jB#kxW7nYOj<<)ED;q_Oq z?p)3f@OGCQfgg~jH(hWFH~ARY-0?aIBjjAYX_!L(4p2C&;H9+PE8}b7+A{zsj_;Ul zp|&ebe5Q^x<@NFS%H_$WNo{Q&AdMF$zdKs3s=Ihz?~cwPocK&5(rnF$Qlzm)gbC(~ z>3ihw6E@Z_|M(K`BfzGwymmOQ71<2v4&z_u+=VN+Sl^t&K|RI;4mZ%3ZOj&~%sP<4 z4xIN3f8hSr22xrF( z=Tj1(0Ml8mN46t_D|aXLfP zf}Z&E_-mTyA5*-mnlF% zE5!N*J%$4KPI1Xox-~4};JtIjfX>6}H zkL^{D?Nu6ExI`z&;ziElW26(${Kv>T-+hdi*cA$-{!Zb2Q*1;n??O6%j4Wc1KL7Yb z#VmU}zfC`Z03XCIjJ?TU*#BJHg5|HM-qq;ElUcPcke&cH3<8;s(2C9ZNAEAEcs2$O zHJua$gTtMjtGkoK!z-6+2gCt4$l5J*oAt<1Lg5pz)tlbOm)CD!NvWBkIQqHBZ`N=EIoHQ+>p@W<=4h|X#|nZ zZ5H30uBXVZEuXG&nR*McjwAZd3AJYoX@9Y&pjP* z0qq;vqtWuHT;D?Tu!*&>kh2yFyU6vO@#tW8GQP4KCM6EAF>_z_kShV?vZ{ub&pIO0 z*6coACeQA#A6!GhhgsBqW|R7YX%2UkoEewoJ|Qm)PKU=wUBwd9mvMlUVUx% z`jwp#?vnj8+klSVS}1x+bbPuz(+#u_eQpsk{E>U!V%Q=2>E)q+8QZx)vVPwprwq`e ztSUgTLe52|{w%`~p~i)eBg)A?yoB=Y%ah5gyJ1h+0cjTcy5Yin^tdc^4YxjS9{N0; zv2cIkkHz~Vj2)3rpv(;ZH==z_!Pf70oiz>NJ)-LsMt$`m{Rr0?npK81JL6e3JyiE2 zG*~~goMCVE`$BzhfFMFmqyNEWHJYG-pSLMqX(O*bQp=;FaQ?xE>c1fM3(M*NW#M?$ z@eEPZ(PHcy`kgio+PAacYi2|?w?BRld5p{oC1sjbb_?NI$$lgRKc?RoKENDUKJ!#< zy+YH1L_*iqILFJyxuSgj;WwB?Hb%sbSih)Q&rQtPV?Q)Ldcx-6lKWGQ;k{&E{Ly{%lV(GiH{$GJoP{KYrR1r0r}jP=(v+8V^H+Yzl4&J#RM0x*jSiFhDv(;H@ZkYfzSlPhgB@FSe*Ll-L1(fex%W+e@U3p z-Sn{T!||Msr|_mx*pGRK(~{(eDWD`CnUf6XUwHswu`|lCygawC; zO$=>(T+JR=Cx<)Nulsv<=Nas0Bk{yqc~tfM`l$Qk*SxvanVEl>tucGe^!E4^=RBT=r7u25?rUQp3-~G0gP9w8XKHKl$ zz4L32j!T#%Ly;M#uV)jj08?^0kz~tLHJyH@p&i33Z2~$S7_gA+bGrp}SU6&5=Y}lWG*NGf%gnCZYbD@6z&D*N$iu{f)W2Mu=K1*^Ne|nEn4rEI5&)^r- zx-DF5Q~PlAW3@ndG|u1p;qkK!xf5h3*$Rt;{xu~k(ZyyqnjK+q*2nV||IKuP);5z8 z?Q1Y<)5p_wj?3!h;+M35ht&OqP0xd_^TA_P&ZqSJpI2)GsSc^jiO|KSgnv_q6ZtnL z)5n9)Jl>r>Yir&mY*4RhP4KETw5Ag=yccSfg##lyFCOHbuee_MRvCYo+l+{8bm8%Z(S>YZM9RLA?Xy%6^JA;&(Y!*dCsiBkdUtzW z$3h2##fue!rtAra`2_|BHA>c2LW+fHypmfiVe{^2?RNbG#p6F4Z zJf?U4#UCuDe5703&@}&2)*^`TnbqU+3C_o;09Gc@R1f{6_3p$V4^^r~egNiQM#S1GO9C5<3TbpMR zUCwlkJ0nreU8?7QhB;lBR>bySU(L$IIPeiQ9$rv%S8Yf{;rxrY7RU56+S6%AJ*ifs z*(!T!|L&~^D~`JT^lCoybn3kIv{#lB>GN+mo8rCE)9L(lp4~N9Ri4lJkySM&cWI8U zR(=z>>uo~{zxJeBs$TR$1{usm=KLf3Of|d5{{*_9RnJT5E{9G8+g;>ZgJF8ZvEM7` zar#4+sBUU#e+}0A{5$wJ7_AirFLa=shW%4YFv)EpPhmOj*?vHgz>urnlAdVtTk;o( z0S*EpmHe3OL^q^_P#+ed_%huyl-4w7jZahbgc%CW^H&sm{F9u*Cpe>JBS=w7Xomua zXiNY{kZueh(Z3-Qg^dC`M@pmeaFf6{l{6=CM8?w-guX}&xr{~tL~f%ogIEJ` z`yv4#v=Zn*EP?rH^Y)K<<(y7{?nLMuD{(1U;o#uUa4TbXMKC3)=;zrR?$064CyhAH z-@C%R-3FAlI{SSfiv0!H89|(%LJTYswHJ|!qvhzt@0rj#%|A%Ffk zBhsGvU53-d$uY;Z?0AhU`|;Mt%Oeg?MUU5B1&3XWO!o7lR>ij4@`UNKMY79gx_HTs ztQfl8PG2-qcpXl^x;i<2S{%)mg%@lfZ^ab1c_K~QOvs}XEs`U)IoRUXab1~s1vxL4 zZ9>)DTOHIWIEi@tY)l+%SfN}XbGSsH9$CdF{-x?44$!ronHs8A9C9L+Yq?F7!jU_N z+~?V&>6~unxemr=Ojzy6;J(utrwJ0OQ9pw2qScgcGeT_slcCtu7^LALpXWwC!Qc*E zh#_jMgjP{hai25nH)$9gj>eQjF|LjlxE`SP0KR<;#-PR^4FmcdBW~nl3@)Qv3T_*m zA7`qs6A))m~XG;QS>hFV9W-TGr0++ir zEBf0*tti4K86}bxD~^&iCs`SxuK^+Y9Tpz-JGwU+VGgQ_6kMoq4D-94k%0rR{Puzt z^u_pDXg_~*C@Kvs(h#u(awQ|9@!|s`dv;f3C#$&AS$A@ZYJNXY;D&wZ9}I{v58k2Hbe>S{Yh#}8j@N&bO>p|i+klR|4{pHD^7c%kFbQ$NA&L!S$T8=M0j;~ zeAm^y;!_e@{O+(=W@QuNYY>SV+Lhwpc{z3K$L18}R0V>ky_uy3u8i^cq~m`z3@ zntwFd{5G>o#gk;mkxR>teQbT4L-ri9Gon9yL=53J>OT?8-l-P(qC7&78$jbu4B@W~ z&L&a})ngPK&EX{IyrJf+A;DjQMNY7D$q=MbnGq?%WG6Z;to7u*y zGq{Ej@_&@fxg#?J`{f^M#mM?pgv|LP0w{}Ep$P(c$MJERZ5bk7_CWJl-25$~z+t56 z7u$rC!?qzoeF#=Zcu^4Pe!&^xy}lao3A>TQrZF=g$g$e~(@Mxg^}RQo;F|SsWhT(o zJ8k3~g+o-w#*%EJ42@;X-!ohVCUP5yRAGMJ;OHd!dxn%GH8!(I07?_^f{~0=egl5* zyyCNfi;D-K$sg(iiyKc1&1Xxncr5zB;u2t3E<|AQf`Goc{Cs3qAzY;|WWC9s*rdcE z(_#8Me~o*LJx2r>_O*6NRk+Q57mnP2kT&rhdBmihALt-;V=T@2JDKy|58!isB{G&hSDSFwTtHg5YO%E#y)D@&nvHm}O9)p-XO+;m&u;dz}W?hY3+XipGllgf{of7&?;!7UH2ZdTx13bScmH99d7ASJTiaeq4_${QFx$gemty1rqVt-&EQY z80Ia72o{{4V)J%T&^<#17!oB3k}pLe;X8BB^(|6$XA+%u1z~pnA^)mAKCAifWpOia zNW(oq?jI$OAs=hBLU6No?oD3fL<2tcZsfChESZX|{F(}7JJX}ukQQlQA}x>X>o>Sr zEa$(G!y|t~`Q^@m7m0ZI9TE`6rBk0nJ#Aj*Lse34kyWcwG^`Z#AGnw67X4QsD2s7vJNW2&>~Q-`jQ%TL;zb}B z-#8YA*KoX4mN(;eaWig{>ER)s2E*o}Ys4|jde{{5BPL6_448*lZO^709z8L#6bPH& z`Hc_!)CcJQoqv-((zkFVr$>^xzIM+{5>$+6-DnBw1kS+}bc!>6KX-aCT91z(V;Nl3 zR_r0*M0s=uhbiP|E3|%ExKgs=d_~S;W%kCMhkI}NS(R_!BV`DUD_xeK13Yep;>TtP z{=ETfj!!s2Z;~e$d05%+yul)3Nkq>{R*n@$e<jx04A@T?SJW`BJR)bO(FsYsQCGxu3??MrT}jA= z3u7x6YkFy4enR6)ml3$GqZ@RJ!=MdM`4~r1v^5}44YfepMRe)Em}y&Lbi4yRf5IgR(dlTWf<}%HyxpT&BmD$8D6o`!(lH{R z)`i;MuSn~7%!RiLIbJBKP|*7rxy0eZmmG6p%CZXtlv6cT60wfoc^84x>U5R)2ZlYf z?@0pU?#-;6(<8aO(j7X%xK6GhPXh9PD7z*^Vu&l~6YdNI8^4x^arpeZ@D0NSO}({4 zBmSt%Ql^XCJ$s?^z^N(oglC|N{zDl4*8wYD8sqLTNi&gPYT)Ex^}*Ju^kEn;G)|f9 zY;_^C-{`I&;zM8Pg6whgE^#&hGflEH8tMbq^J{vac&lZj=(IlK%_mBqJEKf*?Qe$W zF(h==NWZh*=Ibyx^Qk*p?!Zs(bS#o{Sb?Ou)AuL+b5SOQcdS`{z3DJ?vjya|O zv42LpAaYarl;Hd&treY?L?xgs<>6otSrUE1sY;7HtnV*aA6TD`t$Fgv59bBCqVaEN zOv|rmYKPdkY?4aa6a0++7Xp!*+99N6mkdd#LZM}1FurjEy$I!f9~yZD$SbelWQ2+y z+*pg(PQxEfY-rHiHYF%@QELc6YGOkJ1WjC0(XcdfEhz)@j_P8g&W~tShX)1;B4sNp zNp!QHSJ*^ zBx0y*g(h-7vr)bfjl`M&#Y$X|HddX%ktn5+nQm`RRV50dwG+nbHSZ?N;`O?{8lB)I zhJ%<@HY37>Tr_0@hxQ7syWM=c)RYM!aS`W;^6BQZ8O7}U=O3VI18cgfET-+CT20X; z$+Uys99k7RGTh^8b~;~B8_C6r@(b`7Nsv04y4xvzRJ6ZFedD0Yw<=+dC8I`^S~4ET zU4&L4F*T&rKNlbBEfj^~wiWFt`qR_++Zr zv>6zW(-4qY;+!Rx#W4ohJyI=uM5=Av5q*RxmyoLURo}zVT2gmJAC!=I0uKBs>eiH8 ztojY>eZ!Nak~Q?_K|{M|xUNxuC$^&}6kl+@iANozRqfup1k7%1*KmPRLB|u!%n*`) zH*v#oA#ure21B1xAq&HBMX84a#Ost?1V@1GDXCEdD?G~d6SZ`W#U*|ce2N~`UCniL z4H2w*+&cBB?&|In?ySA~jG}NTq@#1g&R(@ZMr}zinm}>RJx5OkUHs`5;3*H8hCO;% zaFw^K6BY@6(kUGMAka$Dq_Wd4FcA#YLsOkZazJIJ_bngIDq zbRL-gVD3IxrkcH`(rGKye~dm&d!|2`-T*Q1Bycn<#eAUmKut}*=FnitsaYw8hrXI_ z;<0%&^%r_SH2+rnyteOKXyGZ>D7cT-f8=2Cx=NGNl6^<|_8-cQa zqh}h!72h&7Nr6k+0}?_ZG|5}0CM;9PA)Eq(d`6nH%3qTnfek$%wYF-F{Z?#K;Af4! zE{5JIsr9|Ppz5ejuFEz-Um<{~Pe>&5`6u`2r>LcMe+ol?r@JP4+YonE8XbG|!ZH0P ziRRv*tvXM|S#BKdIuLqO5x-e_E_*t#9eh<{N@xOF2Tg|)X_biPJk>Q3@J_}{S}RWQ zT5fROOwD)W>K*fTT>KWDfv-1 zMGe(VT(LD_QPU&bT|-XBRFqh`PmpqVAf>BY?2=K7Ai7CQ-I#WXmyDXUXcv&~uAh9U zd&IJa7amZFr2Jy`EK~1yA%x*qed%;tnr*SmMlGbLKc5Tv{ka$viIRt z$%oVSKTF$`Jz6rPO-wcprYnxDR7}EmQP|kOaGN_vDiiX(6<(raez_;6TD!)h;sEjD zNwMO9D6*^&#B0o>P4vq>W`YT>XQRv#u>q-^<<3QJWK(Im8KbYiK}z8vC5rOmwnP6? zrP|)c>VHRik;X25JoznHpW%t5)TP~VYwc$}21@6EL8{`sdm{%x+T*hJFE_WJb&_#)mM-l9DPSzd zOMZp`J%SnxAhDN76Bq%5R50x4#uPq&$No^a-c2xf_2fl^w!_Wcp`ECxd}(z2(A#)6 z0)1muXW>|Wu?M)AH}opVRSMVs#Qb89ve>nuoTwVU%h`FOdHf{`!Ry2+uGusm92Pt7 zWg5G*^+dADVtF|n$!mJ?WZJ|_TaT61zL`}IIIytc#d(f12MM#kbdUQ5n=D#&TZ5Pl z=QZ&oR{9nL8z!YF-_ZF}FWtUD?FLU@I!~AmG^)_6p)bPl>EO`r2a@iQ@Twfjbw`-H zH{}|KfS}F5yo^D~P;5`ii=fr;_3kc|i6l{4dpLo9Yq0a=lTSp%gsVt4-V{$%k9|#CF4nnh9`6Q~b44RZ9i~XiBma$}u0l~{BSZr9BjeeP2X|=p$D&V^ zVmZgd$wQ(~nns5K)qjfU(=El>4JO8_0`zCH+l?lpgQ`O4iBGp20|*B$u_{2*mo2V| z{-z<*U(2~pf1O+Dc(A^Hk9xGJj%GI|qc=ze#4v86T{WdAAg`sAe2hdC?9Ki2LBXNl z0|ooFn5?I+6C#xjUgJV08@q8)B{s6)O$dnzhwYkeDs9c znL^OaRW|0?YH>u_gXw5h=v$vq(L~QyQx-*i%H5Tu@9<*da!R*`tl)R{u`DCULfyQ= zF{8)CkeGFV@-O^~o z4qv=~|BdX{a*3^zJ5)Wy#XDXDzm4|dt2J*{u_lI^lqjl`VNB9SWB4YqiJ@j8Do0p! zS6*k{_%bpK7jLVVxBcI#@&_#k7tgNs0(dv#m*~G%z%Y`bHv@vBL}n*up46#8rK zd-p%2`7N5Ef~gC`1kjjVPV&?1T9aJMANHO2CFS+Q+wqNvZ}Q*5_uOiRp5c;5eR*pk z=ZH^MY-=&^Uu)<=ii!%nR>&y<;nYg>{xx|IK$m1Pq$I^q97@03qk_2wnS8uoO<9#N1)cN#NPcsXJhrjc68i5OgH?Kpc@U>Q3(!KxJ^mUuIvnZ*zbm<<7qN#$B@#_g-O zNEcKVh%Qm6Vrdgv`WRFV-cDlLgys;#C(Z4tTaxyFzELxg46iuRJ6Lawj!My^IW{dI%qc2gr?ZdPOgz2 z6}uwYV^}!7{;MG_(MCo?;Ii^EU|*=?V*g^u(gP~g(=5_lXv<4az-%Bsj@*nK?_Wccz2xmQ*>k2axo^<{qz83r?_I& zKUYS@e-6{@KHbhLs>PxNEk2piHiPJQP5(jDEykle3_^j@vsg;nc1TJ_W4C_1Jg80= z6Sxtmp}+xil)cMJ?opVR-?kxmx`lX^=(x*0s2AA`3i0}slc5la7=T}303?XbKR%eE zwvv>`fp-j#gYGpBo^fee6B6BKh>}-L)%v4!gJwvLcrqSFE{0@>Awg2w^lUo8Q=A-{ z6DCe+rJg@zN@NnTr|8P3`R?H6}YBVaZ z|496%@fixHMhB?KuFdGwsJtdDJE%)|<5=m>R^V;u)aEL59oYuxYevDyrP+oFt?oo%xiF^cCf_sSY@|`S()ldb+0N7_ZUO8yYm@ zX;Q}`PBnQIB7&+N>JXO1h*OP?f~Cf$4>m%?S_K32g&&w!n>L)QTT~JvZ+Erw2qFbF zK%mwnAvFJJ=tSVPqlTE}w;ha>^bFRErYppackaJ?Bg2Y75XJH`8f2s8Zh46GYJQw4 zgd{OLrAA+@#i8E=0(^~~kvsg-WziS$zSQY*MGp@vc6d67Us}>rCiZx9O*%0Ul8*Aw z3MrDb8*T{3A8o}x;_P~2L$c>m9BE}|>$toTD!F3|KkPBXB=xm8Tvl_H)vMi<5W(%t zunqirKq%C5l3wNaYUvrnZ*zJtI+?9-QlO3mtMbRExI!bhQ`?`APz&}qBg@m#=oCjR zG^fKk1QqPQ!~Ekk(+X*I*n;&Z^n4MsKmYohN}}w6{D_l3?v3z}3eL|c5M5Fa7P5y} zbV}3ID#?5rb52899GxtS$IDu;ro`iN$U|0?kjJKR*A%qo%H0+zb4Zy(N*?Ri{k>T- z{4=!LIVySR4PXjG=e$HP#V(|^06t7dC*yE>Bwk2|bOjosn+^xQVhC=+7M#R&6-A*_ zpez?P2z-Y;d+E&wdz8{1jV*;ji_L(2V+};&$vGr$5E0`2U}49b)0aCbPscR+#J!!5 zIdP%94j8KnMy6lZ3=JjGi3`~{u=s3x0^|{4GrEB|Kg~C-Kqjr=;MrydL|7UvL==nh z4{XMUVpl++J{Gp8_25h56;MdqVnww30fa9ZmACH9sJE|eKW(r8RD?w%5<2DM&)$FN z+Egky^vLRNXh>TEM`-r}haOYiWpEzRjnEkNkaRtO(B$6z-3&cmko$uPg^QC>cDKT7 z7Ao#>x}ra;;ip1f6fJ=jJ>-=rmYo}pw6>yUL4|y^o|=i-xgm9JN1A#+uvjvN>&^`h zWj-UQT4A8V3LHaGA%YH!1Yt&m%AE0~)jC#<5NZ)%r22`~0%(cV2qBjME5l_7W~y-* zV|U#EX4fEVIY|2*t)^of#MjG;TJTlNXYM^^tlBNq!eUjSBeCiH$%XsjJWQ;13t3sf z8d&v14SngX%v{3H&|NUlsU?f<5hyN+=WY>772`4=a_BhrTxzI<#p?tQnk)-63`M>P z{woCQ_Xax4d`u_rH009{DW;MeX&I*Phbuk*5j&CQ59`yGwnzJ3o4B70;TI!k3S>;4 zuKkLbzmNuwQ0Q=eP^`{Bb8m`c4A$OvN3&CO^B@UKuqqask&k77(F9h#XDUBMj~!0R zU#~V~Lnj^_g|f_wZu~Y4y-<^5gQ13=ErdP#?5QyY|AO~)EJ;z_m>^oFFfwtL}}*vQdR>0Qe&L7 zQLm33rCj1j)%>bp;=$PRkU?wav2pB-F6v0kQs%ytJdBrbkES#As9+c%Am0KpYdjet z5@aQJ@8ossmt*Ue;Vk&j>0q=}!J}~n3ez#?Df_a7CjLJqu62g1Al8*@3Wh>c1(F<1 znozxsa08Ns@M7co5cw{g7)DtezS6WpIE47xUbr|#6R`#o)<^_sAV*1bkEX| zYoga-&y&w`UySoly)8XXZg|pRAH0*Gjm$E<7>YJ#Gd!$Wp`b$8)m)f=umxS&*>C2y z$v&C@kX=&Kg2z95mMh8GGOq0_r4YA};JNsE^oNUTPB#Yf=b4Wy0Q_nMK(Qm)7(It) zng)$ar^E2epUW=x-uY+W#DfK>!jWk;YU?iz`RgIOj`Tt#Ph2=Arn$9t0TXEx|5(2fa{vOh%NarwLM7#XP&m z1lc|Mp+Yd*7X)dbV&%22mC1BHKE*q5)M<$ABQ)aQ8j5~EJ`Ga-n6hfbcIkHJ)wf7q zWtCLR4`+uBmBLdhYRs4+I#t1@krh3|L*P8cV7bM3B-{{lj$IMOD(I@F!c&KnLYXzJI>aH-Id+){ z4vkFG;9wGX=x~x-IT@9ozq_Mu^QGpTZ@pD3@%`x$&JS!7F_*>_)`YsJOFDA~~L+eN^3hqkm;=@lQ z(rTi5YSEMo!AXpQyR2Mr8d>#0h6&Lsqgr{9%nZwy1QuFZsCtI+k-y=khVY4Hnz}-} z_@K0}w!If4lx?;X*4nE2@nU1L{3KM$^&W!@BEZ8 zy1yuCOL<7~w+KcFi>emC$=4XZsCv|UqGEiB3orzy#+&*(9#e1|{#Xo%SPubrUdw{P zC?io|^|+9&U?m+uLW4={A>cBS1tiKS4IU+~7P){$FGoSr5 z<5ieu)uqnI@5Q42oXJmyp5>Tm8UXYOEBm>3kZQ0fj}Yoa!~u~r%!?IzP#{1}nspB^ zRdvM%hnI+EnqK&V)%xsR36$B@57!cW3@5E(?=`yiCWZ}q#pPPuEb+ZYm#mnvBAc$; zWr?0$GE2SE>U9$=sun2SR;kgeY$xMYZv1J7BlOh=_S!^zOBy|OIj;VY;E5F{xMMAgif(M=*jI?m-x|6THt|RU zMN@Dsh~k@{{N>XT%1+R)bm>LjyKg0E60sW9j^2Z}5=AymOZkWg`jv8vm~)Z~!v1BN*zNXLe*cwj2@2SZ*1 zZMdKt4u&P22nK&hozr=0eA%BGCPOa6AJD}djehqFoz>A~LyG0#3!Q*`n&S94OrS*S z1UJWpH$e_og~rTqEol!x4=L)@OxkyMDM>tB%Wr7kIM}6ZV3Cdj%jmai%y0Rv8nGDc zuPeNg&X+r;;oMD$-V-d{BW)xzT^)rx;owM{A)F2YUuDsr_mYjEsB5eJH*e~C82T%H zvzKlPIUhu|wz% z-EhLe9~?RIsi$jhBx9vN#!5?|5z^9N$NJs6`?Pp{B#M4_4c(lMpCNhd1W#tyG9MHB z-MXB_BZzZK2f#|4TZtKrml=$EBV>o2&hb9_60PdZ!*WC0KM@P%)B}#mnfiXD`Du;qVh;HHC~;~>7tVVBb*tDT}50D#z+DV$?Eg> z6hoH(poQ`#MV0wVpISiZcMSX=iXYvwaqM?Ktjm2TPUVtg;2f%o-Ajw|$?9lXou1T| zmj7kw39BpLL|Bn|Oa*aD8~5<#YQr<|$~}4?g^N}*kp?TV%CxX&Guo#3Q^A4kFxJ1& zwGw5AEKVc1^96D`LbFWlU+6MaX4%GYYjCps3deWu>^}-?Ud2o~$gPql4Y;r1u7Ggt z?%m+bG@Y%=MTpm6@5T^L!$p6_`hV&XNtf@J3nxK`^oyllyTc}SvVKyc&0*J>ZX)gzTCu>D<|4Y|^@m7rqQtsOkK9f~ca3_uwG#DUjmHR9K0#v08q-?Z7QK$^O=O1SR^+bS3Ei3>loKj@ z`*wyt3G>m(zx=h|?`{oR5hM;Am&=+PJIESB+TF3yUm`((q+)Bx4M5@e)3hDIYsE1h zIpy*RArLEz(A32y=Jh#nlD4X8dSVPjFG16Zy5VCt00uEf4ww`kQEh+<%j~o)K%&X& z32r==s22%0s9zbPkEPmOEAtJH+*kKWucXb9voDWrsU|K;v9J(*Y-TGGaNxo>BrF8YCd-@T{l~eguYve&v+wyTZAj zm?P|Q69_kQO9WHV%0=?rlU&w{ch!@vtcC#RU35z0XfTbrTBNYqUc=8KUn1b>e zf<1VK=9Cz;@t6omO-vH;(Ii|SpKmqqCmS*9JFBYf7mn+Zs#7j)G@ECbG)fn}Iiphi%F!xVvqMGV? zXjS9fl>K)fl7kbArh4)VQ1s*k6-^Wf1=4+GXi16DRF8uoRO65cjs8AY60!w-;+~Ql z4lv72YDbUi?joVoruZPro6DM8pL#fRX)A>-?Nn9Gm#pMx`S`+81|c}oHevncP#thW zQ6oPK$CSCy_n=?fG*&*`Vv=dv_aDkb;Tu%pdVGS z+c}|@u!ev!l^>#5OnIQi0orlY>cxhyAu&dYXelx%5mWN!EH5MVty^>!V)u{EO6pG? z-`Phg))mH^-ZGOA_6quy_^vZHs#@ds#I7(NSD9m-xF+JKXu6$Ed{-KpFqkjjn4D4g zc9PNMH&UwR5 zSfbEfQ>yXXt!MZWwTW3GARr}m`N6SE+e-HE{$3`f`dr%Voy4*m5AGyxTr1S%WAjC7ph(2J2;tNf){@NN2ZjW$+Z^rc8W6EKNRaTj5B z{&S{h;yvN-bkB%oZ_VW|Wfera2Ne`c-&pBd7>-Y3_Ld?q%Uu)s%|pbB>01CtHncZD zzeXOVx6qKu3XK-y_(k>z$rp$xB7(F+?hdvJ&VT34)pVB#!6Fm>*5>gPl#b@}5S2y0 zu|1(j5r|x86!6Ea^;bgaWvJ1(VKzNkRnrNtT(N{rZ_q&!o)pC$8=p5%%u)0PJS3f@ zrXv%p{P8#M-Gi581f}tcl`_;6oG$9^Q4&iTYML?4B$en3*5z}g%N_g+y?WF`s~OG$ zbm>NFUFc|r#mVF_G{v)FrpP3dl!6Sb)5|yMdIB|>x1<3ud9u`KbY%OFDhNr%*wuP% zDv7Ny`;-{V zt^ld_jhLlU+a_Ce?rnrsqJ{dTx@?H_g)Jn1@BHKU=qLW5L@y(Jc4lKdM7{`uf6_)L z9HrFD2%m@99eo}fhs{^fY>`4iH~S&C_7m72<)_HuqozkRY_X;qK^ebR9#3B(G>*xQ z%E?0CL5CRp{;*-?y>N_H%uTF%K!L}wjLhgiF8AgJ=sBd zJUS!iiqb&G)5qA#7*?{UR6KBVL65wKCX|>C9K%CX?}LZ>mht$SIT-IPsh;j#Y}SY} z(urB*$AZB7bu`1opXV~25ZDOyPR%g!$%-8i*<^+Bk!X5TM_aOTxx^Ub3@|CH!^7;Q zo3|dloN>=K8t7<*-xoaLg3jnBF~;+GIc8GVAp68b~}cHx8}xS|)gz9MzFm}5c7Jk-20w3pP2Tc2AU zwt(9p_?T9%C1>l}eFHr>aY$1ocj_vVTt%w4^l+mjoiTdG5_r+uNnf2hczA)i{#1MF z?WE77j+rnS1QnAIg!bv)nW}8iyOZ$2X-uWI@glcU#fgs55ke2Ud0%ye*5y;g(AC?D z`0wS2FY!V<`=7V4rMuHJ#&!^jL^M~r;N4QK3*-8_G$b^)-n_5V2fA+n-rLY0urZb< zz)bi?Z=ihR5PY?dApyV;%G98z&q2&D;E;@({$7Rp$UEdJNRIv9RW6eF_L4NPcU+Di zlQVFS#995zU;EumTF=ts*3XjX=xq8JFDM>Y)uiAMQ!T-C8*{YIBpoLsXD)KGE&bvi zHBdonrB(txt`SjMQD6EwIxtY%dgKN3^XBSBU?g$j1dKE?X}pl+b@S~HW#TT;!_=B( zXjj|tx?`-8fs-36kvX?AGkkY%mgqsxdniQ)5R-HNI76W;&{_{mh=$S)aJp;mu;)6_4%{0{4< z>v6cbgZ#wXT>(5H7puJqG!f)r!=~*zJu!@8M!cEh8+vGziM2NYUqP@F-((~ms{A1G zDu*^w@@bwZXLG&r2)c@6=X`_7PAQn^-pPMWJ`D_c6wZ6&!XyP5aP+_n_Y`Enf57t# zQQbz6p~fQ}K`kW`JV;7L>k~K-iR|b%Mn6s78ziBKI)AGZL#X{W_J%r>Wc4ixeO{n# z^v<66Y}hL8AL!EoIk}GG#y*G?Pma(>83(VWPS#WNGwC>qtGf`YZ5$_wY&tl&MkF|P z@7cmN*h7i1(K5S_d4vrU5bYg9@iBF@4kI*$uD-q!8uD(;nr`f)YRoM8I+6iE~a9HKuNT1&z^(jS`! z63NgZQ5gp*=|odh*h|!ZKM&}lypo}FDdmpT4BZ!g;OK-W1TJLvtzHCBlILhQissQ@7Z)oLbltBWTx~lbAV^~ z=)M5S4e;%N#wf=kN>56ucWr)t(-=w?m^X-cjAebYdi~->_m=5GwLH3rfGMKk7e}Y- zswkz&>FOejDrCBjqGEdf$$O->{L8Hvj^1+EKbL{j$6(~wqDvAsz-QEoGaSp*TMo-b z1~bB?bv#8ebvLXcQ+P;}CCyn<9#iqwn-a8D)Y+bI>G4I^VZX3N4G54^X7 z=X4He?A?bm$7zFVh;$fI^S3B|e+K~~I=H`Mgn*>6;WQsQWhf=&XA)MAfx~IIT(qxo zHF4QAoQ8%|hEk%LF-wa7s}Sem{JMQLt<2P);Qy*Wq1)R>s5_+*e4}jym64CQ)oMF1 zf4lD(%iVvJO*dqS2=1L&)(AA8-IHI}VIeqTg%<`pf6hycH#CmK{8dBSpXrKrisD}6 znGFGxAeaoH4F-zGlTunXVW|%_PkhkRFc8g~7$m4KpXZQIS~WpF z#^AGW%S(dw+%!@?mOf}?6Xi+kom!1wV)~$=Df%j!2`Z9qJ5sUt)qOm~i4yspo7qPF zVoeK;ETZ46Iz;c|vl6c>*fNoDcoRF-85W{$Gm8Z6K>)ptSw^QcgwAL?@5qmxG7!#D z=Uy1ueJOv*P-6psBzx)Z{o5RCN`MC2s9!;|eQ4?|5}{E9LTI%1$n#L;=N+Jlh2hMQ ziq$N}qn2xc#4wzpFDBDKKLHec-4xcpX9KnM)seBG022KN5H(%|U0HIM&}xD7_?5{l zr!^#&SZ}nkXrY4#Li?(#MQB97HE8oBuzd1~Sm9#?^p$M9bbj}yZ8$=?8V~hvB}Dm- z@+dZ86H5zgz-Bs|A=ielTWdM6iD_Ymy0s&ZdLlCJw+u|)rh0bAQHE@!D-O!@8N4ea21`ZKRi)eF?te+!xt1 z)W{(r;Q+yj@Nj?R7Y%C%nn_k#xA`)?w zep;`I4^XyTmJ<4UciYX4W-UA6l>yBYLF~KSjJj; zAzK3-R`?LRYj6JeJki~`Iem!K6xOjTR zWdgXwH;t_KsVtq8yQ1Xcar{NSEKrIMUd+IOiLbAw_|GLg93&=>W|+q`3#iwKxWVe+ z#bp4ogOkTxKtbX8c!_QgKjC>6x&w&^Cy&1163|bC#{ZhpdF=}|=pwwUqw z6GpM*P*3PajQH489%0K0?IyJ zmikA$O~szH@GMzoi!ZEApAKP3?2qVik~tIQGz=h<{>)Il>;r^)hE;|pAGjhw+07m$ z6S@x`y&Umym#FO?t&muUE43N^xAsrBr)dssomvO~OnsC)BAmbYP~^(qvU0)nV`=hr zzB1$uKfhG$?iQEAG5<${_2g^6IKNFJufB2s5T~x;=a=%`-TV@d|4R>R5b-I`O*F_Z zUD)MEM7IOn<@Xsl;GaKWwrU zOKaE@o+oI;Zfl_F9iby=ydi7_w1)lQd4jgZ?O-R@yFo|Lcr(}vXbpS8^8{^+Tft7Q zcY=q z)KN2+he(v>F3wNs8d3D6mFb-n!$g0%!$MzMq6D5VbmQeh|6~jH*v2v$Ln4@K9de~Z z?iUZ`x6Bob`h%eTmPdqOj1@ozHX$Y${xJSfWMTniKv*m=_#x6B%(Ij|!1J~YWHD%3 zY=4*b{VgTfK;*%zN7UlvCIZN4Y1_jBy$!QK#mDM&Rjlw@Y10GF+p)mSEC+)qI^@tH zH%$}n-&AF7^2`Nh8byz3D4iYK+}6^~pHShKPjLxIw-k4Rx1m25o9btC@Ba3OiPQFM z-o@Dflk=a0Z$UBq>|I=7BI8wEM04c#Qd~NjHDm5~RmkHE;ZpsRbeScw-y^zlC^0;e z#?PPRA_trO&(d?VoS-Q(suwlLxL;}0ibfpfTdR{l>8X&R*GU()H*jY)b|0Wh!MWQa zt@J%1Sr{^P$gJoa{Q?xJ7|S}LImsB~b{#2t;6k1*4L@cr4S(%QFfr={4AdSQWzY!( zBOgsIk}p^CF)CkYR7i34Tg)_;p76knG*E5--Mvm@jSOAJGc?}5V{PblQd9pmYxS-B zc=U~h;T408mpZcu7RrFLm+(9cXQam-@-t(+JUA@S7))A5)CTrfdKz;;wUe6oCbyEX zvMJpO9KAAp5xrgX8RgT#TVdT&BcSva#(q$}wB7x)u1tYxaRORTZC zoemI5cD>pJPwWJ3CxJtD2aKzt*jZuud)D`pq`^IwXqDZPGGkiHS{GxrSJ5b*RI-uHF zBP$7OwHNq>56dG|%2K?J(7^|GqdRAZdFi{eyJbVXpUmT+IrMi!5ZC83hJ+l}WZAe`BW$%jN=_7r|rp@II!VZzrc7(?$M*spPI!_x5>y+$pd@C>Xx zreIn<5o_fb5^o(Ar!rFYw=`fekKY2rk(SB2=13%Z{1ypAu$$@}y8(aJ^-U9{FnXft z?;$07cVCM@NVgjh^i}wx>t{SuM}4q% zC~0hCDcQ`PmybY@!s+7^Dw~*+O_as(H}UAFxFaPS#n+{<4rL&C%ntXH(kLx^1Q7y6 zVnx6#BO`LUI4h?!T>fBPFc(N67Kuf`L`<+~rrr$&`4(3?umU3)>;E!0GDBk~yd$DB z_caLg=l)HYeUWogJz31E(IjXdgcdn?QkgHZS88p1Hm0A`A}&Ea_WABzVqTF=PpgPd@7o@N4-^mApFsv{`C)h05is>Woy!{*r=u{c(A)d z$0Y$XS1T0H+SKzfF*K31KsqSnmAnbRoDV|{23=#QzL+vEOrau}awA03hgm&%2 zCP#Hf0@WsTyudn9%n+GfjGu)l{GFjFG_dH2fTe_DeHPZ$-ah!!S$o|a!YvLfcrG?< z82@-E5SzL6#6&l$a8<~)3NAdh(O-9X*46kiUiDi(u0PB5+k???iT72WXy8FV642H4 zLHhQArkrpr;W?oR$!v6VgxH?0(hXSQ`zq1`G@ zw6cg&G_zRD4~yBPb`|$e2iwhNcD?Z-CEVAcNQoRutmVV_NOI1DM#y_rQP z12B|Cc}*!dKZmee(SBShgLr=0dn^WN?^1HLw?QmzOTm$xD$Eb0X`PBz*dK(G|F5Un zyF*&VCLGe8v~?(`NQ9-}YS|iia0u13Y;HK8cmQ`8)O1x0hHK1kn7Vq~l=dE@E8)t< zRI~qfdjsuq8IAzQE?Hz3hSmkn867qJ{MZo=+t!{!V^3V*97@Un8d&rMKq%3RqYIbn0l$eD;*jVq`pgs*ac12R@xE6pLGUxHfQyZNF()=bJTg8u z)DoYer-w{KSpI(E6!G}@u=soiBSQW0jo5?1Q1MfLSf2wJ&3t-;p~AJk*e)2h>1~2# zG#nRxeYhPE)!vE*&cD4@PgAS-as4Fp*S4Y>Qy!!qL~}>3!<^rpyWBtd}K0jbRx%|7Sqwa#xM8Ajfii}rY>D)8ftfQ!rvrx(cj*e#4oL}xkRb0BSXYrObIZC$yE; z>kWoX&^qxR3Q~$PC-f)*U0u^o66&~)J523c*Fz*jP7;mu`)EvES8`8GSLqJNW#=TJ zghGMQ>Qi|%Doj;qPZ%jIYex}`afp1v=?b#hYQbFn{zB4n zqp}4G&mzbJwsnu#a#X!zsQ>>pU{y+E+yftJ%N>|Hd}XT`HYlZ-i=Qn*>EdA>H?P-! zX#g^sWV+7kOIMq;RcyN8=b|=-1%|9*jr7y?G-M*-fHVg~&J@LHwK|=jP<}{lo)2*_ z8mOl$td2d7i0&Att!PRhSz*H&J!D1m3HMe~1atLkzq54{6_gk!_!<2#)G+nVR!GaC zASB&eM=hMIW&7P_gO;o54A0t?>vf4b`qAv!s(#K(y}N8sxQR<|-7PVc-iydC47RgY zm*rQD2)!cBmvwlO<_W)=hiK5M=8^pO16Ji0PW|D~qT@xHCn%bmQ%e2HOOQ=l&Xmiu z;i_)Pa@IgSU3Kl1*(i)_0Ud6l93Pb8a|H?`4{L99C*MRl{-;AVT|N3ZXOUdB(#}p4 z(JMFt841P>IXl&f_fQf7<}6@CP%iDrTVdB7*B0s_M_xrST`T#}9k%Z!xzlcRrdU_C zwDkXYzzS5Oovxls0uPZqa}{k(lk@^o5-HLx5hrqDFm+_L7B`7$l3rx0ja51f5}h)_ zQw04~W!K_9ksoB%smJYWFV2P)o{mr<$=T_ALA@RqE9zrfFU?L}dxg4=N!F-$(_M(D zJduisP%B3*qH6^0yYFUoadGk#cgyQ%C-rDg>h8N)b&u0lU|`X67TtxUeckpUnWL`( zm9j-11x{VJeH23CeH3RJ{>#AH+HGBX%=vP4RY95)wH%@c}}) zqu72%ay8Sz3B(HOVZ78clB=6fI9)sSJq0n)cFwsvNn5Av?8jW?7ly(C9I{R|P*2y? zA(D%TuDb2ly6EDCu3ePfqE=?}Z@ld|oi|<>rQT~B9(sLl;?Yrc{i$B1&A+XaAsO-( zX1yR0nq&(`0o;IVzAiQ$R&xEBU?Yu&2#yekyoENljNj+w(rQ2h*!& z1)7ua#=_O|dW{qJfL}=S{~*--UnE*Uouyv#;w-yiLX;8maFo$2p!g~B+*|Mmw#7pG zHF{liLF;6^r1^3(t1T3%*XVT)0*=FB7#1KzGXtW!hSIv_(`%CG7OuK(D7OlE*K529 z*>GQ%xaDi=qHCRcCzUl38FS^kk%&2q=&IW~?=>wMUdk=uXF-8LX#I)vUK18gJ;FVd z7!YD;)_kw@3ofb(R1Ep=i zpts6IhwgKvm(yUq7kHzcvmIwmqnucw*`#;Cpts(ZPB`9u3|l%^H>o__upQccwG|Sf zqOF-!9{yt3m>Z4nu_R_vd6dPX4duQ{(zIpI#hJUUHwK;{Rz)l%ha+iN6VEM5yfN@t zS)H3%4FLg5*x^W8)imc1^|5do9*EjdPB+}b9ohr+4od6nI|$u<7;|K%)`Fq;@}Ca& zUVQR>)ivjG64G6?`wT6G4CbS!u=r5j;X~`t?yIXJK{oBo>~=4`JS%7D>w84PSckKt%-go)ioJ8Wot6I6>}R(#~a&jM`?%t5Tz{{SLxPR ziiR*4>GcydML}9#IL?W&6iq!CXG496!kUPyZmV;m1rl`+rlS?TTgdk*p{j|_iKZ;7 z`jmU9Nd)LQLKe+cu{B(z1rZg^zpCmW)G#qzq)CZ}`d7e2JFmqiOOUDlYl{ z7&ug1%V>?PX^~eg`_o-ss)Wf zg4Y;l&(NU0Iw6-nL?tnjs+q-537BmK7^aCn_M(7`P3r}r7B_}XgF}#bL8v*z0O{!& z)XgJs5n5YJYr$fwOGWFfmfe-uVp_9_>2KI<#S}C(*9h*VxeFRuyJpx^LpVA9yCH7E zMn+pf!wT-=F?hiM+0z-k?&gB*EiV`Wvu)wxDBxn#8syRDEVJhL=wQ9!iNM4lkEShC zC8XU$b0QJE@}iSHTN7KgFrp}$zM*|N(hjL}6ujwhBK-D{iBKcnLsdhAdPG4$cTf{| zfqAv4*41J<#`%B}!$(uR?-nXNXcuVa&_ioO2qyp|s;hcyGMzun>hfP8L^jz$IcbX3 zCMMHq9%9!q9zE1onFeaajkqoViDyM$IJMYfyir2A;DQ z_0K{a60-(1nU&z+lkTH7Cm3j|u9mItn~pu3jvitLhXo9r)8gmTP}xNHt;Ru=_BeFX zSqHa`sABksIf+VXzVoT8dg~#+CYVxP`k%xTED{g#H8x8B8k<2NsHQCrHa1`IQQIND zCSnAMf-2UKL|BV!{PVPRpvEr(iRHItY?K~ zC=UH0Ab{p67t3|A?{An^^H8asvW$lHa#6v;ILrh1mDJ_pqU}#d*Hk!m$9+rrkL);wVx&XA^ z8)=F@07oaa*PIiJ3PZZ0G|?TPC_Z)UlpgQcbro$*)e2G9Bf2ao55LxuB{5Yiq^`$QQy-`-i|DG`nu-|; z6sW7}`)h7pVk&0HB~aUN*^2s7@9)K{T64`q0WA!O*V)E2Tt60Cdt$D6$jV~Tz-k~M zC=0T}b0wK;9Ia1(grZth@IWBiDx-DH8qaUmSGvTfKSDkhl910pJeXW=#CE}G^>L9g zbc#lK8~~d_ZMgdAbSXbYEifk$qFOed5|-%W3T1(!8^2EA2w8FF3|Z96l5(gMR%%2N z!de4`LPtQFPvPz&?u|3W>EJ-2i$*{=S#9+_lqJDjBWU&Erwe`|k)rq#358FOW(m09 zE0?${XznDR=)+qcGWg?09^JGy;wtZ*N#(w{E&zYNElOgA696a>GFqzB-MA|8*36g_ zrhFdZn)$z_#Y!w!fut+fULXl^b<%TG+5lT?9iml0V8fAbJ%!;+$`ibkf+xsp(WJzB zJj*~3YGBX{3`GaGL0VAPTw2p5tyoI$aydVhSwc&v$`cK(BQaglGEurWGwG+lrA3RR z64=Gy&!$e96HC&;K$U$|Gcmsql0O|bVY>0$CPGpkqSbK$Ykjj`RaK5oaFl$ink|X> z;Bf=g@l(Z2g^WY_yP9wMkJF%P;wE;~%&ikhs;bjdL6%@m6kf>eS*}!Y;d!mip1j3R zN{5!UTB*OB27*gdl*bbs-OiZaa!KOk^m>OAUu|_WUFI^*2cu^thsu`I35vD(rB)PJ zg_9!D&2;&Qk}*D=#<;GyCYQ6=xfa_60~_-3)8c5hEFxu(u8;yoNgYj)OtdK1lrTXK zCVaICl_DUlI$AHMPYVtVKfz<&$Ml=kXnr!QyIlY8P@Cv4Nl!o(!yKwpDuz~_iWd-y zWz}=LUOT=HUe0r{TbFcrG;6Kiv3Tx*cS z6-kVYuU}`?5lTa*wRmh|ki(@e3j5T1>dRqDEuuTXtzL*Lkf=*lcNLnRPYPvXu&{8L z6TJ|ZiD=!(q^I&s3oXwlxfR&OpmkGq#d9$jSJe_JdMFKmGrAg6tplF3IS#={+*Dm| zE*LRxgHW+V;ij?*IjP{n(;5JB1$N=#cIvbesN!&H{S#u77yxovx!5$a8Uzeeq!mKd zq?7P2Dy``suBa|5NZziwU5V)*E@>A9COt@NqTp)TV>OhSON5H&up0W*hwD1^ZmL>C zzAp0apvn!cNuCI;JTc_!a&gBu}L~onp2tD;l0J4hMR$R~_RsRQuUZKHHVG3}U-r^zi@`rgH9HRC9!5LL`QJ z08LDW!oVkM5!l6`&oZaQYufP#JAK9snEFty!yUb~D9fFOGQSx(+%>Hp7qSGePERPJ z6ApV~QI^X{=6jS;PY{?M`dF_X=i&z{!QJ7%o_?@gEb84$|H{xaA`|VYCw=Sc)FTv9 z)m0iC3L%<3HNvN^LaiP0U0V{P1%={rExhv^Lx)L`9iY}_FUZr{P@-8giSOtR9N|Pv zY$)NfkcmiI1}p|>Eaz-3tUIoK40V1Isyp0JL9?%Z^AlI0);7{E)?%n9NRL=abql?A zNmpbG{@-$ri;fu@HHZ2pwvl#O%J6nz*%J;$*{ywqGWi0pvW#YUYm3t1Y;JLny@;Z} zvWKh7LscFbVl;R!iZberj22wohbh5bJX)_&-Julg(RJ4wiedlm&^51#M^6+qDc3+8 zgXpo&qmFMiszu%guk(s*Pc`LhcW7JlAnQXb3ou`#)|P<8JV=+gECC+zzFN{H12P_P zdF@T>9^nxYr^%fj93F8<57IMqr2A+o??p7+$PCxglJ2V|Q=oo)uHE*y1XvwSHe~Y* zz61!!_tX|tBDp#}JTej~=&yoB?WG@`|9}752Y&R|@c%m>?2$FF7@&E)aZ8Wz4~a&1 z4B-|$IQ(M>573k^Kb#$==jf8>QXHNx#*Hr(Z)J1?76Wu_BoYMdp ztmwHF-G!t_#E%5k_r$R)^1%_mMkWJ*&;mDIY`506x`SoRq8hKx=5(XQ{}C>BiFK_m z2V)KahyL0#A-cbk|8SPSe=9xOr7rMHR8m#K(>Znb(xQB_I$BnzC$-i8{~UVi=*qV* zOvuo~gU?zm_dw#R<<6bfmL~3~D!XAWIK@kXfOASK<_qKugl3f3(!^z`%&3jw_Tgeh zT%3CN5bNV|I$M>s641dugdyBhZ~eWiUu))~J1k-c>n9}|qR<1SM>@!Z?8{S}6Y-h~ z8V*e7wF&g6Lnlxdo_$dfb=*l~)X7C17qHfHu=!{)J*;N%G>`|U4i9B9FW1M_qy|i4 zm6WC}^Fx<(YTBIu&?HncxGLpTBwR&X;}@EeC^|z%W^?&>V*Emr6&)S2J=DY34aMGx zL#PG9W$AIbtT|7EhA^bvLq|;lm!c$|JA_x-c1ZoL4B@PDUKhy5g|*tf&rtRF2VsX1Y2>cZue9nTeTs9yftvBe%YwD5ANjkb5e) z_R)H_^#m4p(CUWD0#JdtERhxrf2+ChD)DUVaS~{voch9I2*T%ZMRy@-J==PM3M6P> zDJ>_hXBIAkiDz4niJ;NMq%RPfmg{>t2fWrEvz~Z@!H=rr1>HcxZKcddG~PtR4Rql> zUDWQ+|0Hoka3{TBv58qm|*fdqSga(qB;pcG?P#U@PMWeZf zCgIlA6HrV<2`G0d@u`w{>*_J`kf<>l2nN%OOqtejkSC_#0pA}F`m9FeainmC}}WZ*>g`SJ6JpB4>|D z!&ZJcg59cF+0?0O__DZ(*&rxX$60!c4Py8ff#}dYWL_ zL_;E%t`WX+HE7M@@x}}v!w1lLthKmwVh)ctULomznmNL`TDE4{*0h{1>P6#;S++Ix zm}Wn{=u=mrS5pnIIGG%V#`l+o86T7Erw)X1wQ0RBs|`=I)-3V5tTslLa6iq=_pW~F zqlNZI+a4_<*;A+K!quidE?Z5?nQZ`Vmixm~&h3`!`%t~qxUA2^toc5VZu$}_w-k^% zQDFNJQo31yn6Q#XgxfynL9LSrt%M24SfW(ESYg>MY_`)J5zT#A9045j5$mqH(YPGUpDyy)?rwd$eb?FXNemvh2x%j+2nJp!x3=X4lGPG*DAPH(tfkz z3tWc>&jQt(+^62G_)O}k2$SuA!L$g2-}%G`e(D4C|MUxP|7NTA>C0IMV_iO77rI?N z{(Cv%7+PpF|N9m;LwBae*lq_fqMj?I@Mwxw$~B|*5K$9ydb^cyNeEJEh{)$4HWYB^ zkB26t0wa#s)NcmOrjPMt#&K0m3XT-i&YatrL3Jhr05AgQBCtFB{X9o03db!5-VQEG z>OI={Sj09w#~7>rcre9WgwL(;E-I}JbOYZ`mXif8#L=-Vd_tqK5F@dHZop5b$VPts z@e#6l?GcTzY@;=AIS^Vva=SOuJ3lDlK<^Fu8Y-91QGwBb3rKKHRX9MbYgh7x$)Os677$Q4BPux5>nzcT@6wFas8~93OiLx&2 zD4~kKy9LL~qd!bnUL7H(t8~8u%j$GYPts5W_T$m)jJk{;zCQhFb;6D&peQo)_W!%QAQ1+fNro zxm;p5ML`t5_Q(GUCsOLorO!+-iZknv57W$9WGa*5Hvr{d&bre2`eiVr3Y*gfHVpj; zY_UE@p5-x08$xLQcnfRHI>u`NGDH%0{^|`|Bfe`i{eVF-Ub#e!gx~b7&dh&54`8Ca z`UB&V%pLJvVEQ>)SlQJBc+Dr=Z8%yr9{qu^r0S>K_5(g;XR)U$vxUz`@^8ZQY+61E z?IHDmZ#c;E(Zr#f@`jLHhFd~B{3NP7_U(aGq9rUms`iH6mo`l*3b z%SH5$aOn<#&UD~=A$7*Uizh5{&LStlu%Kq!2Y479DN(vleTg33c*_shHs-ejVK8(q zZsyVn216`&h@rPOi;VxP6mnr`eG1NerEFm|J|=Ih6^Flsuy97*SLT|BAJS~<&dS;Pnazg{4L7kxh+!f6HM8iWE-0ZJ8w=~?z&c)UAMLS4_}ReQ*S^l8ul9;k zv-YjA1T!!)_KWeTC7zfVOEC0h;2Y@o(Hmqo#0Oh57mZL>>B)4CBC^S8sWz%9|35K(!BDpfd(`{t>k=8HuJXn>g|wR1 z7VClPhSYnhtGq8QqN{G}gUSYf8Qpk2(_bCrZ8>!NsAxZTm21rw43wjH_t3eC{ETo_ zPRtfGgvDxI!hO_J-{-UeJNr*-jrXEN+l(2#>hq*pK30{_^Vvx;nw=ci-kA99)DiTE zi>8)%M?HxKy}iQ%s?+1_BxeC#T|1l-JaNQaNgNJf(Sd>AN~&E8C!Z2LHdgD9%`p8n zHHjN|4GTIr&z^`132LEJ98PC=MY4uLvh(aQP#Aa&253)o&{~lNbuD1OEtjOx+Ls4& z+fqm$@S6`z|8xuXzlmLcOhDCkU-Ff35o%ozaEFLE0$*!jK5%gbuKx;pFRtN8mAD>w z#Kk6D;+?ejXsFHyxSv!4y1KS{pB^dE73D}{JfIqBa**hKdh|uzfPP<%eKM}nty91g zs!8b<4?J-ScLg=1pgjK``G9f#GHkg*h9yJ-!! zd!h;|xaj1k$cuG_BRlmZ4}GGh=L> z;L#TVy+$^_AlqlTlt=Ch6f5JdaTzK|6W3cqS=k?+ay<#zOTI z`@VRb#Q39}wgiMp6mubI&7fPBNX%Rz=K+!W8NKzXP7Mt|zf|n*7MDU`{&|`gRi`WH z)PG(mex2Y^pXXK$@g^F6ektGG%`ZJikS@Q^AQ8Xk0Mg~>3euJL86@KO96-9_gVgG< zHJCZO>NLcr--oT%4W7~Z-{ z1_;UVwbo|1?*zjS$5lm%TRTFfz~(k0+9tFw3;}y*C1%h@{F!SOulM} z(!bb(g|)Hlj}%eP&Gm>O)nd5$Cx&=+#XP(Ob%u8u&l22@moTGx4bcOAF6pFeL%y> z^;Z%n*V$a`#3$NKV`xDF;SP}m%2l&d=V;N|z}@IXXkd(M6;983s$=M-X~Kg7F}?$XgTmoV*lzmAN=WM@Hn=hJ%!N9|{I)ZJrHI1O;kC33b64ceZ``}fJ zl5b2xHTw>pp_itW{>)XPwfnvqyyd}Rfj)~P6bLumVE=kgI}E6%DTI%6E0U{L>rJdt z%f3Rj;Q_70n^NjbU}r;CFTTJw*~TJF@}?>VTge71pr z726&7tKGo>D(LEeR!hVAi+!~=1QXT6Ho=0pdbBnovjz;dva{5d(ZsfK)@&V;>AEOk zTy3r;jmmtqJgRq9`_%!%q9~^8A|JY{bYC!Oglt}1xc2v5FaxUTDp`?SwbJa3?mF=n zRH)Msd($M-72+>*&n0Qis`O?LUW+UamgVSiLk>=2R;4$EJi6(6;qzRJAl0&B42I{#BTni8lTS5mo~_8+4$05Vv#Q~6VI{}vraH@?;$=G zXqsWVd+bfW*7BrAY;g7{mkpMkSf11fg`wSFb4|jv@YcExtLX7)#l>hS?WSIR>Og@; z7`1$fzmv9qSbaCJNK{)^n6A>Tew$UAkFJw-ZTCs^+pLy`V4_-l7=|FO z9<7VB)r0@b?#AI}nz%Sybwav{TG8i`*GF2jxR^CB&VdjGS0qb$Zm4Kt8XHj->)ga+ zpwf=G?&!AG;#dGq7iV}T6j5KyRTD}MRZlEVv8p#yPgGinAeM^(HzK;~e%`q4tD~ZP zT8{C44BlSC!(8Rcdoq5%ZEdZ8AKaI%j?jlsG026%`3rkk*-quzuS|Zne((H6yuN@i z55?0LD>RdumrGBUdu_6y6~^hTTwU~1!n8OQ)nl6sXWAvDR zw<~jW7cS=qvr_TZw9bEapZ>F)WJl$qL}`Y~m3|K#KLw6>@DlfWr^p#!mOnm46}rd$ zm)p2cN>o!;xFB3zMB8L^sXLGtfy8ixd`{%C00{Z>PeUN$n$eFl_2U)E^AQ9!$Bzpf zksg=69RGHk9HUbtwU$puv~jJd?0u$MfnikWRaKX=MhLvn;hA}zf9@{Ae6-VLqwHuo zIyuga{gPxK!uKZyDq1GKnSQ@bE^QhO{Vo+m)k!XN&p+`4^yxkV6#&NM9B`2RXEA2MaH4Xj4xJs z9Dh#B4AbKGv5Uv(JvWKZZQ&J-)A1??&jv^=B=?|3|#g~7{^yFQrj9nqVZ@(P4uCs zBvbDNMusU0Ye>tlOwg*q%4V0A;Yw>*^Vp+9Lb&K|dCD*D7(sSkf5Bzum?Vq6%3=m_(xFkgl5?Mp-zSJ5j2B#3j5) zfeTieg2@vQv`hPXCLl{R&_hg`zmaay18+Nh8l`yP@dn}z0{7dhhKLvW`$EF;709P; zj_8@%kBK%^wG2%1z*xkeI!kN;xq1>vXUU6!b5#_pAmGykY$gc-xn2e-=NHJiLDxmT zN;QVBq352k>eq+?^7)4`#Thtz2Dj7|)j8!`b^vW)m z(BBqKRY6nH$5%HjRO+7TPiTX4iWZd)(pD*${OLsPpuBx;lK(iqwn4J>zw}(0P3M5W zMDV!^4}!$~6OqW(dicljXKU&bilYdQ9$khD=lko3D`JpY=v%J&jYz0DF7-vU9M%+n4j~ zN!{z0OIjAZS=H|&9fFK73e&Jh+MSvnjc2$a02gHn%}Q!>m6bds1Y_F4CQm$z z?&-r#1pWRD){ZKTQ!FQNSA!m$xbl|Z@$XezMu^}J#I2;DmNb+}%+M9H;FF5sXN|{Y zFg#7g7YCzcJm}V)0qi$#*#9tmEWyXuemqE`!8F1xJhZ~-4W8ppDb-E?NDZ~1-lqfg zREMs+FFmF@2Af|5vS>u>SoHBHJESytpu}*5Ict(oE!K$sFiQUltj?&QY&x-C|LOSu z``>={)BnW(IWCBI$ZPqln~}aKeUutZGAf zIp&LbuMmJku|tgbwFv*sHzw$AzBlO0LHb@}B1$A+_x|fY{vSxkmzj)sfI}-0>}d=* zOXhY-(F`xk(B+pIjHwa^%|m*fuJdF%==Zors+YujSojWTOJ*zR{^R&JAce=< z@z_kc$>dHJioxo2ge!r%<0ZYAR-*ykQBRG0o+4CWJE00D`6Xh*1uF>$T@r5AhUa(i zEZSDjvPIz;`b%cfdm%n{X*V>@8eL6q)G!w*81o#d z&8Yv;?H!@oK{Am;*3+urQ5#xzHvxZ31ZAEt8TlwyK=O|-?$G1NJjO6ek5z9-Q2b2K zz0!{_b==HbH)fd#!{JCx@R-l1=x{s9k(u7LFP%jX`yHNQ*{ESXwoRAD@Y0Wj;Ak@C z0HP&+iKp63{P8b#Oh8kO+~1{(_*Q?8%*IeeIjCqt$Phzr+9iZuzE~z*bkD z?vN2&P;_J+1EG86ahU{Vx>s4)>ZZuH?F8;go5B)ze2N0+dP|UWy{dFI5$Dd!?qq}r zYZrd6ZFrkizkv~CDQzAtk!0?XGn$iGhTB9+hbcKH zksy0{Pye>O1&=9ysIcwjXW`1W@~BNBtp>4$*I3(L)651~V8Ok^&^pJA!fO<}iAuvu zW{_}cX~`5co?|*;$;X#B^z-N$J)cG#4I z2>vCuMKC@9{A~s9E^A8{f%dZ20agp!(`I2yKN8NO!GYb-dXU^EySX2hsToGJq#nO> zFGT?G`4pJ8J#x4Y8serxkKf)h@`0+yA8YWpbv^0$V~KOu^4C=D_w;~xlVP~CeK30A^khU)G|igTdF zqGAnDo2BFE@gHS+$N@|{HR*Mi(#xV@SamAhwcB$37+pq-Mg)7E@7vyw{1=A!2p5D(m*}R+ z(lUmosVr5~-~Ms@kzli_%T1<%9zB%K4-pNDyK=jr)XA}eTlrW)D$?9Gcy>P7MJDsh zLGSOkZ{GS&=v;Zq(%r%J@g2zq@l?UK(Vfyyjzx;zZsMlJzs=UrslVbM(F3&?1q(Z? zFw}N9h6CximImo~jS73>AluPN31x_G#XG@gZ(4ECg$#|(dnRJgN{pV#?QBJ=)@bQ-`=8v;|70fl= z88#agOWKTQmQe3EnR@+L)dO6j0N0Y*oKTaJS=r%|Z!-hBA86cI!+O}qOKX~|4#s6% zBfScZu*$T#LeDQPJy8#k;*9XOuxihuoJ+~>PY5%~kJoLkS{dANw3hveh`UCH5fr$d zDKHqrWyRqQ)MPg&qwIOq_NzLL>6d^Vf3!|))Qq08vBERdG*g|K!mn zHwl#bt)=|R(2hTT!ubg{A09`{)bT;ap1wblwuWj<&o^jkx?U+^55V!_7Ne>$T%$^x z)0h6GH!}$Tpt;St(vQzQRktEWQ`+;RH67U8$QnuS0V1nq+^1i4OqXU3J=k)Bl--B- z8u#I9n8%;}NSkysq?~AO#mQSATKed15j|_DtT@@Lcbc>JARJ#1+cAubmcCWMYzo_% z#?-NJNiL$VtOK22hVb7aHil#MXr7r^eH4mR`u>-MXH&FyhKiu1VtITeQ@= zHIuB1P9yk&cnn{+6{+IcWWkGSS%%}9*}7M7C><@$;-X+ZX2fSD9sY6r$qWeK`{vE>MLSeZN$AmC3Cao4KC=-frQf>QqI3u|(trK}%k)I{)bGn|AJGZK2K46I zlv!&r$3K6j{{xot3CaM?(-dNB6V1AsS}0ZOVj0u%uh9gYwXbGfCjF1&Up-T#qHKW| zVc#f=9z{yFTC<)N0%a4GMjqw6rj4xjz&6cU&4qKU6=r1K!;GL#)+AG;)piOTrRrI+ z_GXO*p(bbrVf$joks$^a5e4(rpG5a4Nr3hn71i@E5^|N&+&m`_zBG7fKBfuYa~mn4 z)&c`j%4h0Xw3^UT)}|IkEaD0xo6aF42BBYkCEM{w5_bb z4;HJGf=6S#HW4ZI_=}Zjs&W~#%{QbO(d_yBPDFo;-pv&7>CU}8IO+^$pW}XWp%Y2G~#D~{`pHRF?+HhTKJkQ)wKEo{riy8 z1dyQzBmIr|u$yH=yU`H;A2}7-D9KIl%Fd&XdcE5>Z{KoNXA!<9+&ngV6xt zlyUSU(uKf-#)i``>2wh9)C)ePV-mkK&2R6MOtZg_olU^SuXUK(U*0jQHThuQxbG=ePg<_sK!dXD;1ZHR{UGmC9o2bL1n>`gf3(_mBVUAJ>oH?Cv6} zBfj02r7F@ZYGA-N@Cy9{*^sJxQEZ}*1lt(9f3ZBI^i8Q$@h*$M@HD2IxrRs4S|%3X z<{d&(X^4V4-kKdw@7%ayM=Y0<$^H!tX4tyMaW;O9<)5Lj_S4ubh9LP}E50IR->f3r z#PMliM48_@OPkte!IHa7DQZIacXfo*+sr@RE>{u(bH#?Ct7~@kHlskRm3(dqF(1Wf zY5hbhUJ%%N*5zBBrJ|q4ZjhW z#RRkSLezXTlFm(OwqWjcMoxDo`%0$!;murg@(*t$xF6m;CtDL8FMidF5pb`)+iPo> z$za&D<7K}P@KyN|JU!&lBDOOW`j$FUMN%02qWQYWaLNz>|B?No2?<(R>-NA?dekp0 zi>X{QR6J-P^r25kmhxfqDGdSzMKPWCTsj#R*nD7%*vCp_ieM*|)22(@#1|?}oC--| zE>{hg91^H3+5)iP#=#yz;5T&!W&J+Go;9#66=0$}WNH5bu+}`3$zag5J7mA)#{9uF znc=iePr%k1^Nj=sO~-umoFF5+VSP~>0bd%UD3iuiJ}`~$MFcG|Fz_Eu27TwaPpyH$ zmclgBfx-SQH!j(04AC03;B6@`y!~6w4$KiZ0bR=uj0D#X%yWViz9n|B5y6sOyq0gt z0vIs$Esfk9p5E>d8rH+J_DkrLEFa$FZ4}b)ecLkif;AiK>~XbLwvi)<^}Ukft2kDM z10G^*$x=py>b1s}Oa`N;V@vi6HGo*SsGqQ|#5gLDYb{(XAq;&XRou#PcCp7@x?y0q zd*sy7sfBF`aj~tRNbgJbhtKi`?N45sFy|G)xaW<|nQWk5ldsrU)`|u%jpG!{Vf@P( zzCZy9v4luZm)V-v8b*u+22Q6F^PE~+EFlo5U}pibIiYr~C4>;e;OP=V{74Lh3#HQ{ z$Yr6ND)_X5MJ*R9CyJS*E>!Lhh>aL_oO1huORZtY5yVW=VaNHIc$~BC2xr*^c4^@Z z=Viuo&&Z1ij5=Omn_8_1486@LX#_?|geqbsrt&O=GPPD>>U9Q6S7KTwkRlmt6s4N- zv9WUBsJQS`cHkF<5AN~7pe*qPxywVUvxF>td%gZcfS)QQ)jR4@aVZq9h`W?efa^3- zTsT(y{i4xIH@}-8ar;I)SleM|95pnsqrr?Kn-QA)W*Lyazz5-(aWbHTLPCwwE$O<_ z4fXXAPMYJ;1cUP7bnP`pTdOP7#Y(B~b&Gs6@eSnN%oNMfc|09b@kyI@qrpEQjEijeEkIZw8;Heh@8ic{l|F?^#2_o!qVm3Bju_BrD8qT_8Fil9WvXDF zr?Rn_!m+o5Vi`Rde=FTwtS_HcSlmjHqsNR4!oM#QNW}u^G<;f#gs3ZHc1Nw7#N5K-%NkV(7+}?y=Dpr;NRHXQ$#dLs#mnl|wPza~+#`|}o>_s&VW&HHH ziO08a;BbIuxc->7ZdE0oKa_sbM;%=(ye-^EQhels|YhP(%3lhPEERMT$$kj2BIzpL)iDqaG3BM z1S1GdVQIn*7CD1)Z*T~2Pfh9i(jGC^H<`jpaJUsd{?X*<&^Og|BAX7h`A~k_-2rbz zdbXR(7igkGI-;1<>AMDj2fABD1eCv#3bAfO6RlWUm9e&XCi*9vXjayTOZ{L7q#+#k zPQDIu6iwo8mU-rxNKSsOChP$_dD4^_EuP1&oja0$0XXMrfUuu&AL+ zFUcB1e5sanvE{Qa%LTgN!>ks3n2)7dSX=uZ!!O@s7KWb_#x&nuwGtH2^}a0Tpx2Am zpWAEq(n=83_K@tD1daLLX@k()F!8Nm?g6y+!FspF8NComqzR_9G>Bq=sBga+GW5NgM z(poC}E<&f8z0wlH-#ag#6}nFD2a-mnNQ#6Vt!4z&Khq3u^>u#fd>ygg@^s14l=5Xtl#zc{{uNwzx%7-uC6UbW(IzF&55JBc$NdCZ>OUsKJ>~H}S=o*r zBNow}sAI<_%_mY7wUOqNRU;7vXuqfg-uaue1lVkDM`$Jz%X+ObceHx+mwC5OIe@(a zO;n{u9QEdGwkRGB2Zz&Spent;?<%CcI?wP^zCR#60_}xpK}`Bo=9+kITtlm_+3o*C z|H3*MHAzuC6;VB;ba$tSAtLquv%T6wWH$T4N`;%LHiTGz2iHrfLaS_?wU>`}@NL zH-V@{CPJ7-g3#u_)$IcIhbjPIjlNm2f45aorcZr@{sV!+VBCg@>)8%b60c6M!hC8% z&A3f1AlC6lSjYZgPo+4|BEt{XSN)q|W1&BxFpk`pYww$70IbjFTQr3~L}*rB1OO)s zC)|wTAQwF4Q=-T20QU%VZ~+;Wf8On)cJXtJ6HcL+CVCVBupYnAE?*qoU4OdzP)#ix zU~-q3Jlar9puzP(@7Wzpv8wKPXqQ$hsw$Pa{%}`8(UA3MNpVwrakvk4wV3>6S5} zN9iH+ib7d~#YZS=3v;!MpXLoG6fOpgUNRUXn7p6fiXiya426d!Gs&CV8jYHiA}5G5 z(q=BLX;8v6eh%LiX@oQ>;^-*CzRL4+f?RnZ98T;P>rpevRY5!}b3com=r}br=|?|; zOmtw6Ml6wZrb7XmL#L6XSNQ-Q8YY*|cZrw40WhzPe;m?K9&X zBC1o#uGz%&bCQ|$ttVs3jZBNo(f99Suu8 zg_9K2#O?D5XH72M*C`m0L>JI;)vm zKpio-S^$BP47uOB2<0OQpAMH(cu%9^}dCt-_nSS!3 z?N+AERjdPb02FryD(A+gQPNLYI(KS&%52h4g;b{dyUYc{S0h90K$>XGpd@r?dgm`UBejDTF$f;Gb2jxa}MzS9}NcBFbu2y!@bcV?Z0CsoE4rR z)yd_?*&uA%)4xog%75F?c)%0*>sX!TMYBSG@~zHS~gGtMdz?ilVyVz$NbY}!;`I@_0?@JL2C7{0=?W`EO!tE z5RG15`mlI`;|gZZU#58y)`UWPntBOozeUuY>>7SYPb7Mgtn#U7ovK~IY~3m}shM3< z2Zt5=t%%oU%H7H0s(rYC@BlN4RD{U8(*R!_H>l_h0-;CUod#PF6aD2DiU47B;hbXf z`*jg7)Izd~c)24cOHvW^UNW4IaNRaeRroHtuIoXCMKkT&Sil1m_qL>vR=1P+gqNG{3>U^ir1TXmX?Aqzte@-7aMfX0y-$kN+aN~Kj$-5)K_!sh z+(&2dPv1{pHV0Ol`}rs z$h;b+V@#qWl-9qgCX@B}mifUgx`Wc*T}(w3BBj#H|NJogr@MXbUC6gfY-z2iyiI40~5cg0I&$_m`6-u;z zlOCQI&075W9`QB1Xe(VZZul*{0L=bRPm^7E*ZvQoT74sW_<(kwT! z8rB+57egjxgch|&)*`9Q_|t7fu%}pKj&U0R{(qhHzD-K{jyo-{#$J><%8!B`j$tp~QSLxMOI23{O2iMFvT zhS|;f8|vjB$PZ|anR+a0rQWBJl9==Y`OrA}W#VSO{k-%=WjJQb0vg~}dUrFVrn68Y znn|ADfmg6bxpd0q=aXvApdm%kezmv!X3asPSgL72;K(&Ph>0Xm^kFNpFw)!hW%My?qetq8#?eOaVZM#@&l z3D}5X#nY*325daynC6)^djO+`{nqK(_V0S4QyZs&ig*83v&UCLV7?#RS4WTeTgc&8 zjS7zYAvIS+17fzFT|^s@&Y%|M*rLOXs$=f1h|jk zYh51~cOqs5Xf%`bG&3@Kx0c0FgA%IHQ<;l-3+ z>?D>9o-ZY2vo>Gx>a3TjD@1ihGqg~19I6naB1@W$L>iQT30e*!*a5>6^qYT)OfYl* zE@v)^{v^?tr+k5w%=F3+Ra+iWZk<|}>*z1yAV>17JD zdfK<<(o0HWVhi`MwLU_vZnN!66r9AH^hM=g;i@=Q+`j0LV$H;xQsGSWvkfXD$Hx#? z`rW%!U?2T$&0Jl)gXCA`pHyRSMb+&Az8&_NaP$2IO>42Ohj*h7HNF!hFKD0HOB{1X zCXX02YOZ@rL^JipotJdJ99WS}(-{+_tldF(iaXmq1-m!vjR^s!> zZiaoiU8L>dr#lgm!Bv!+j9gMsdpj$5iD>@SNs?XB)HPS|Mvh)#nSYT~R^!7bPwqzQ zk`H~@?J0ub$tb#y`XAGoGHd6ct&zcNHm>NEZe!%vJ2em5R*}!#ZuiO$(UMvzL% zrK)X8n?K2^-TV=2qqOcEAOhXNF_?Zw4LCI4P&5u-68RJ2Ys5{g3b_Di<1iX)`bTzV zuty|6kcyr^1YdP*Cwc(V1B$$1oNWqThyP(G_5{` zP~1K$&>+`M7+cK@gc>lc@Xgf>IWji5JwK!`N9R{^y@-ZuCjeB2iX+9tqYnDzA^EF9 zznTG{dPuC|C-(@Ss#PicLam(bgfc95HmbRuP(eKN|5ffAM5y6LW$EsA_syKEM|7wB zTp5Nwj5Cxu7B$PyRmEUszO!n#t&g#~!8N0Lw#{pqZJChK{WdgP<$F}-{t1Ko_a?Jc z2!-|gAg_kSq<-JQ%XAdcBrMx*a?5>3BC$I8{!gheHY2FyEU=|T9PIDTth+wN$Edl$ z4hm+%OFV|Dq>+#_kS{JN?F9)>^F%8hMdrZQDe$Cvfuw>?cW!)fZx6{Pbs0RcG zs8KT3mlME0Q%4REFqSKmMgx>rJafLZVX$%DF2e?6Co4v_0B?V>>zAHj5=~q)6QdFU zv;O{J7ir6I3-|aKnDm@^dte8VnIUEmb~RJ03Hr`bv#kH?vBuk@kqW(CQg3901putU?YzH<%jL#>jQGe0fXCU5^o6sl zXd**Lha=m=G(piJ+>}X{<9I>V{AXr82oCm5hW)PkK>2R!{~x zTH_Rxdn|@{JEdY%oiuOGF;NzlmK{QkQQgMEB5IZ#F*2rAfLObaRO$(pCO{-Er4!le zI0+vP3at|T>}w``gyb^W)2JIRs5u9Rc-qTO&w32D=E0!?kxb}3yJiumkLz4&$EnGS zI7C^L&Rz$Wt5O)^1)Pi4p2ckb=;47}_0 zdXHZs)BWrL<3(HgoL;cQ)Crw?pF>Cja~(l~1-1C)qn zMb}rjNH>(seLPnIN+^QkN=JOLr$xtPiDkT`T874aCu^sKLWhs!iH}(`Yo{UvYx{kw zV%E%%(+&6E(fo+F+(5DHTYg5o?B(!yHzoG7t?(8adaE3hIqm z1%93Il1+leK~EAVjH_mNsaPuO@NJO}yD>~Aj&|pRp-KuxbwVEXblm!aV>jb|{7NwW zZB2tA0Zi&`E@h?+)H#!!T_)`@(wb+IU0Do&YJE(%O_?>M?L?{fP21>UJ=mpr@G(!M3AiaeXL!ufrc`nvpwu4sl7=GiA#Re^(^)({I6BBGMAh~ z6K?AxzlN5fIQMagg2B0~|7sqZD3{I({&9=XGp?n$YKTXnHWN$7&R}1i;6&)`-YYU# zHJV0S2=A$n?4&g1u;a;yM_?LRIk8Ce;hHH;)eu<2KcNP&!KcZ9@#!olZw-?Bi3s6+ z-c7Xr=K99ky7DAf!*-0S=?215k#l?#)Tk#j7aAWlv*JpC+yE;D4WMQZl^2ZqFl?@v zy;qZoxmT21M15pu8sXC|xW;voydobJi($_|S#ugGmdd(Ze5B9Ntk}5ZE;?5TdIhOr z6jfny=y4dssX}U#{yRDK)x1KmCKN03>uu(dm19-kgIJA|5p5D_!I5ZUQq{Rh*B(PX zU!dkqx_N0#_`L_}+$jq1A$0aw88p^rxGYpz$0xFX2q~)Bsc@1#S3Rs}|6YO2>{E^} z!9QYNcj-R#0X&JPI+8>?+Gse(>(0wm_o(B&jtWlc3y^TuK@hL$byo&qWxigWPjI{4 zeVni$hfmo=rp};`N+7HhhsXY{tmSb>Fdcis4Qw;o;in)V9krpRYUoa6^pi6 zG1!8WN1Xpm2Xj4)UX2B)vhc}|a4o^BJz(ypuRpEz~~a+9NR*A=3f>9THC zW$szcYaDIt+WY1x@Iv8|L6=l;0+B_{p+sg$3&LD#1|lm$uu8YQD&2`z)>oJAuCGQn zbh#S2(dnk;cp!O<6N=Pyc#EYn_w(sUx;G!Ep@LFR#tijzkMZ!f?xiU6C#W{|WC}o1 zL%J1hp~T$~)dgu5R--1B8pPRzRHySM?(%?8c8xGmaz8ML~U2#!l1Fe)L0fw`_o1t*0+Z?-D? z6nhNQ=eSayChVy`i6XvE%@qFXD6H7hpA!UT(zM`oCto{>Izg5w;_i7+B#U$Q_w$J3 zu~U1h=Kj84BJ;f_ZnQ>)4cO3BSCk@hrHiV>;nsLj1%XWMy~lcqmvvCYew6!6%$y3K zc_ksJ^Nn2b)vN$oB$N5wOotPubthdjC1YfLb2i5`x)rI>=Qh!H4uSe1^xDsycop_r z^AKni`K->jPn2VbEihSEj7FHJ&Z-al8hkXkl8uZGg$~VaWOT@+-+wYet@C{fENX7%(T0dznbgbz3QK18-|GQJY+#_Y22L-t$4R~cZF)Su zO|d7-b0A$x*H~JYoM+Q`jg`q|J@k==s>;BIYHOmav$_$%=9;8(S(A^YJ*E4h5uhn7 zNbO!4z?$y&i}tM>2e71UW{sT#RbBv-0L`9M-5pag4Kp|xM`b05cIgyMqOn<0bnLkC z6r7jO^q20*!^SZB?OB52;;Lv=dN_1V2X06gXGijuTt~V)YdVbUy^U7`K5eT;~H3_mV1K2y|2{dnhrn8Zc5is)GF9H#c~se zm_&m&UPB4dO!us!tJk*#2y<`>2l&mwR53&~jsx5gFgZj$Yngsuvv5ES7^eP(qQ23^ zw%vS$QsEO6dP%D*qVrn3pjGLboLVQibt$EXO@@OzqjF~XLu5*aD zmhz)9D$R(GUGorceY8~F&GqdaH`!Q!Z55s1xKi2%Um+$_X{LdDHW*H0S=XoWOk<=n z{fj$_qr>10Rb+h_JN#?j)~HbLZY%;7}$=nBH_U?k13W_HAh09mPD?PzX} zy`}W%YY{ydol{$G)Ey7@l40Mo>0Yz8oRq}G&Tp{%G(&(mICH?)2o;Y`7(d-z}f@&A^73PT2=_k(yMXZS{+!V%2MEv3r2 zjZaE;F}=e9N8$#vfgyb?rw=1m=jDwY<5{aWE#!nT%lFi9zhqrK6j3@3uV|c8u2RVK zB|=3LYp&-n@4w!r07-m$Y0r3$Tm`9;uvRm;;9OXnN4a4NcI-sjZHb z;9fi=rxfcq&&XD@wz@|g^FFg-BM}oP_9S0b;~TDiL16HxXjxk`_EZUg**?zJwoC%M z&NH36n_Zcx(*rm$!}?oYt!yckSzcG*`=sAk4M zO(@ejp4s@EdcLM9Mo$z)-y+BZmPRw+4Im#0PKzg%x#l9M1`O--6?3PMb;?K=Q=wTD zofkR3eD59^r?U+50HWZ~EEyxw%8E|f8E-Y0LDdjgn+uqj6u6Td=9GK$$owfe7*hxy zgD|C0;B?s>i+@$gM2xgGOIFoGVlD2`81`pPXbF>VMkrE*)alo>+K}GVg9}NOK9Pk= zy#)TKvO*^#!NbOvwJ8*?nUPQtf;GL3JnA7*-Lt()xD_(fQz`rO?tM-JRcbkV4aJx` zHd(JXs_XWJ1T#VHP$?*9RY}cS-uu;}6RII2R23Rk zGwU!`CsOPdZr=L?NUX~;3arzGT{QR-0h8IO-ZXWsvZ0z3Ebk9I7bD${C+p5Gj#kKw zyXO6&0EHF%@*cTf`pg7eGyY@CJ&;N{M`k?MiZz~dR783Qo$jG5wNmrQ%n2b`-7i-9 z>bkqWIv}F5n14jgi}d2G?4U`tu5YGctPqt$B>GhIuJ4LxEiPLAfhkm?#^CZ!g~Ql7 zb-d)OH1AXaBvvDO`eZfIDdj46Sa@-!W`6mIhI>FddYBNc-+V;N1T*1}*7-azIc931 zl0qB0?>j5k!K)cgrg_#XH7{SrUBa0lrgJ4d+lzaB=~wH_gR=u?Ugt;*B3sZz^?Ib; zyJvT6?!cAFX0{J;R4ao;(Gb9@tBA8pPA~we^bs|}rUwgLEvaWZ=OG1!{n1DmLe2A# zt}Lei3zvp&Y^3`S2Zz&Spf6BzHk@5qn8IlBo4*>g<~D6eF7rM2U}FOlRtASwb8@zF zQgBnTj6K)P$MFheKG%rPIskBbh!=_xJQx)U1hrrK`;D?!e9+Eee@}eW2Q`B}+&M} zG^_NT@m5GBw-#Bn8y|FE&;&=j*S*2>!3?EQ5ZI^BR#6kK<0QUR&1``pO;|K*^63^* z$CWFrt86~Q0FC7=0`gnB=B^1`xZ5N?`^8#DFs{2zQXtb%T{BCiD4tBvyl`Urak94; zU0=Jm^F@S0crR4o*p0FH#O`C&kFL?3^bUL*JauC%)gV}rA68K;38A4$jI1f#Apl=2 z-an$?csC+m*b^aMdYS237a5ToqAf#LKpomTqVvV#6V(mT)`Mb&Z{MZM(XobBHpwe# z+JjK3t3pHC3F_h0JE`eLHp{S4pm`>@7VAbfD7rpu`01Xi6ngMmXL< z3rOS>*d>UuLkCwFTYWv%8>=`RDk4Uk{J3?dV|{izV%LVlQGmm`K3ej}n9H)P zS(>Rf7&pQfn~IQ0<5K4X^b;}O(og~oos=yvDC{9EB|?RZk%^h0Se`H%(N$}vY@HaC zHD1{PDLrXgRAJ$?sf-iRs<<}ILTaLwyt7HC%0d7xl)lIbJ8Cqm3a#5%2)F>O;R1Xz z4UAKL3b^99qxYhyKnD9ff^i$OWDbETuk)4*M$YU{jDtfPE!Om?CK8?Fi7UO(TT!?P zpOkC3keOC-LJ@it+O^??LMH2TdxN%6l<{CkvlnAsHHn_U-q72j?#T!+wen+p;+VZto=XSTY&Vsv9Ld~$4m$^uoPd?)XD1fHgWc5swo%l zb1(m>nblbzjrIL-J8k^vp;pEe;^XaTchA7*Ey0%?j5}({MH$JeXukTF_<(iy3~C{< zKJV=i6<+rt04-3G0+4cI%xnxs8aLRhgv|a$*)yRq*onbz7|D8FhlAPkMKLCv#ljGIM91Vs+tv*uRfAyO z+7Q+H@FJ?n5oPzV&tJ+A^l?eMK z4O+9{d{qqQ{obl3k#9}n@9eR=vWu5@HTT$qf|)5=R@q(F!p^-&MA#`;>d58Wou2n& zT`dj+jj-LCp$i<6p6F5-Q`FnvbSVSikjP9UV+T)lWo*CMXLC%wJ6BZ zIf3bj9431xe}K~Wv!g6$NwjRu6PQ)xvj(>|HL#VLq;f{oaR|D&b~wNYhb%3WYLBiz zesW)}xytpym``uMHhpsPjXs8Qn*62LSYdsfHKfyi<6buui>bMWEEUe0Y-G#(eAiXq zh}Kl}A83oTS5p8~oyktdNJW{ZIUv+ioZJ-;5ggJ$+=UAByK(TExhrL|S;s%D4Mwyp zN!3JX&mui?p+DLtPX-~SoLxT;@W8r3L-eYeyM862S*4{i(ve+apFT^82J9}V6d$C+ zw5fq3nl<>?nA<8PGXc^wQG8zHAE=qRAP2eT{X9;4XF{3h2ZpCB%xZOtJ<-XY@pyGS?Y;6ZLu!?DRBRdaorOrHCW=+vIn zJOY{Uxy_h<#E_!V$VQ#xPh<5L86UkG8Xk7K!@~nv6SC&SHy<<|g6`}MhKQm{#cI25Wzt!t&rCLl+OeV4Du_qAa)7!p zWrGe!6MyG2J+B>1c1PLCcD3S7Z}k*ixaMVgb+K5tKT!EU?8Z?>$K7N&`#bjYV1Rs4 zTUv{Za^95ZoGuxAsxe4u=NumPCipfP7`JDsRr4I4M;uc>gWZk{iI_MYT)wLM1~y}` zkB52M@%n3a@UUd&_j}V5XoE@LETMvS16(pO!K|cCkiv#(myu40Xm^2qLKQ-CJUS05 zGRx_z9^c`*njT%LaMtR#e^ocsJi3c><{0rcI>ssN6Q^Y8Fa)k99M7qejm7yBvTsd8p`$9cQh%;avxZmAGSVcw@pLd(3V+%2<(g zy5E()niGWe5WsGYy1%M}x*od9oY1gl5VjHktM-cx96wXN2L?zNjZpzUvc%LCsipxB z3f3JMEo+bmU=2RBZtcJaF!n~-BQ#2({mX{|eM4FY2ZXR~BCqRcJ`70V%=+tWVYh=i zJSb;>PlM}G>_G4acC|{| zuXZgnXTurSk08d2olM04hWOu^&&#d3;ant>`7S=yn9;)&lWfLGN%08bMUG3jbF*{% zcIT#O^qMItwZT}G>v>g_n`r0AMmLvltBR#~FZk_0Q$c{$RPb9; z&~cV)Sj{aMskG3V&Olu(R`2sF26}7xW>f8;pXh(DQ#)YQ(@vFjYVz&e(dBh&2dsM9 zsj;PrcJ9#fIebUeIxdFythQ^0)Vui?&lVPej$pJ#nQemqTqx<6voW*xgraDc|{unz<*n zfLNVx9(Q+fQS(+tL`OKLcOto5LhIUj&W~i&xE6GWlJkpBS{>HggKh-OZE(G)4I)ic z9I|r8jf(hKh+!uN>Elgiw7OWV9&UtjKXDq0MDhby%gGp`gE^Joy}&rexz|Y}tT;qV zVcddTv6_|NPlCtFF5Od?m(n7hDLLooi1w19O@oP(o>_n`Mi@lPz125srf1fKVhwL@ zV*pyphC62f()HqY=%C4(zIBY0toA{rlE_P%&T&H&O04G6^V|8LK|EIX$r>kf>l#8Z zGy1mFbaoq<2r>l{HE&g&6){B$^Q#h)ZAk9h-20ls1I(aI`dQe7OA4~0g{S}D4ukDkRqAasx!qtO|Kz}u5Ukk`UNNW z^5{k>R=L4WwQI;8Xu|>}u0_K(u?LpN8Z7bthMM7=42X2lQ=Ja8hT`gE>xhqrn-e;_ zlekMKa0TI-**b+nne|n&hn+zj-DNP_D2fOMuNXKfL02dfyrf1j->m{yrRPWIu|2Ne z@9VjKnH0u<|3{?u;3Me%tPXwmlinQpaWnN1o%2NMeH9fjf934>7T5c)d7h{q5^MA8 zRgv9H?zdEl`x##VVDEH0S<_y4_@Fol=vZvctm&X&R^#*4p@H)Af4+nx-n#y%lN6hY z$89onOB$WKc41g;||V7il~AN!hrwT|1*!l#Q!$I~;XDq9|fus^*Otuxf7CmI`N@ zzoqkJs5PsL?4;+$=yjfZiJS?EP!_8phn934oD5Sfj`}k>N7Qt1^3s^{gLFZW(nS@5 zJu0<{ewaSfDyXmqQkZzz>n@p`p*h2(|0Do>ZDi{ z%F@@zB1Z^yPlesoOtGj0z{Ee(>4+K>u~B`(Jla9iIa)YLz!}IKcOwmkh?$|avv8Z8 z1XDAOxkNNG|3V!vMA;YAeKL73hCWH4d_)dT;v1Yp*F;^2&f#FThdeRq34dEQF*+|B z2CGUYYN2SEYS_XdeLRhE^s$d_Mv+!3N(Bas^c-DOyT>?5+m*!%e^Z5oe4lxo`eB?z zv%zc_|ABzs&jWSh5hkPAT&i7Kh%z9^5B(0_fbqK19{zZCIK6Y@hP~OpoJ{s_;Pas< z(T(&q7W@9Hk)wSL`#nH`qrCtU4xv z7W*LMMZP*s_UIo}d&CU7SL|Ry_McUt=i; zj}a;4I7y_M;n6sGIgI=Js?yk^MTY-V*l4Mnlz*S;{Blk6B-5}R3R7l?s}L+$0_d`j zR|5XK8jYdeX7CFP9#2%#>4W(Ihq}=Amn^gq4(ZSEzs{<=)L-z5VBE_asZeCPDo@3@ z1RvV(p#U^pZmtep;B=)!q4WfOP!v;HUY&IJROG!IjWiw{803m5yj(IUwa#TrZjo#E zyBc4_lEI|jdzic=7bQ7FsVM{+G>t>t3rP4EY<#YjD$JpLp2+$Jg$YP~M#f@G4NYW@ zDnL%#YqTs@O|-JLP6W zvuWI(q{?TC3_6v-_*egGJOkC(85>ggU1ay;QtlpwqlB_IOFwh=A_Kjo#De_E#x22J*x{Sn?MSSPIR# zST|t>j=D|oX_djj#!*CHty+}Xo!ZAqf2875%}HCW8)dDRy~ns;ZCmqul>Mw=O>}8# zq_-5H?VI_5{>w5@dvt$uT}>2_bP660j?Cu#n^GOJ_gIHh@MMf62!0EHK(3Q$nXk)9 zs+U;g6^JAmH00PbAa#ywEMK{36gVM^!>tA5zTDz0bx(`s7{z3`;^Ii3M@%b}qrkc> z4_7+a_#`mc2dg-muMV}*@H(Mm8`*rX2Apixm7{CvfMdN_sF|72r~XxB1DQz?_E@-Zj1XigLto+`T(;x%4XnNb6kbiJ3>avE(WL>#(5f~?4Da1O9)Bw>v_?6 zMFo%qXnCVb`bvTy?7S}TMr#-xI-_WWKq~c&bFVYZ`3H(zWd>CVuHksgJNB5SdDoV=N89G`ad2~Hanl*G?hjnN*)*Y&3 zoQnp07j-qwMwU>#{BtsWTLM!!eb<%>T`w3oih=ENc+9rgQiskXfWfXH+jzITt7<|= zwtV1H@pIKkGD)H!ue5YATqcbf-QLk#LNxT5SXXFw3MxS&rnN(?mlRrzXG{ZJ4n z-8e0h!sxdZ`cfwSPFi>yu1ESMXaE$!b0b#LwwtDOG3*t=v{u$klam94s?goxlrk9A zchJ>{uIo!yB5Xy%RLpfnSfpZ`Vl-7lR%*3$5h&GvxA|4JT7H?CE&3~mEf{Tpgd0Yk z>l?}^b?#o~Z3cUAkEP)>!~Xe5mQy(QbF2LSbJ= zFB1I+@F7(>eCop23`5S3K;RxB=Dhz~>NXb3F->F+Pg@8e@Sgi(I@O8q@`o}{xljzl zpEvNCe7igC(*?D--iyw@P|0HfUb#EDQjF>kSUMeOA?Z4({tLsIBgr@;)ZfKk%Xn#T zKF)uF(!{w^aZKmu8ihXpFZ1v0p$;ZCIsF_;bIi)+F^RVrhgf`+e=F%u{R~#C8ba2n zwk$?}1J4Ng>pb%GxjKfjyo)`R<-7Pl_sqm2Y@#%2w~l0HbwRFZN4^At-H*=h)8ey7+zEEk8R=@(TbGNm`Qco{EAUyXfl%B*oAqZ1HpGODt?*c+~ zWN>+9Z;vi2KEf)<)E5wKURrVgL=epSf)5?Mzpo&4ANyj+z{I}ci`WW**+ySl`|89n z%>T+t0SoBxdAabr1Kdg}TDvrbx}s3#_ohYwn}Bb{G2-RBsEC0T?s)&vhC19}w`2p~ zsz5w5Jm;c<>-BOa*Y0kwu55~?E3M#LRVp+4Ib(p(ughO$C(p76C;nJkMD}DDO!lG| zAJo4n7yHoDn41koS{_(fEE9aopj7+59usWg`)aA?`!WUy1$+Qwz0@VP4+eYk5J3YU zASak6Y0Tk{^AM_}5E`Co{1jrLwm z*#2K*d)pXpd)vQNq~2vm$*#oIwyF3q40YdcL_Or4@=(le-JyiM9yZBTKwEHc;+=*- znEWL_1F#PSQTUx@=iOHW!Ms5br4WEwpU)##vvS(|n$Kd>-usj8p>*?F7*%{2##DU2 zRUB1#9}%a+v19de(4R@-EsQF81g5>1|Ak0b@L-)x=zj&b7N%uKJaatfJf`*w1Yk@DAgUdlR(8Cb2HPol$;|MSg#~gI7N}F6 zq7f$YW=^!QK=nW{-3y+ds8K6;j4!*BzB<4uK79)wV=9_oSW?cKa+H@M271Wyqxk`~(hid^YP$uL9F$7X%Q6@xv z16&?W#b%tyVw2e+fWZnNH`Id<>Y<>EM=acCed^6Q*U%*B5{6*~uGk9LETBVZ4Wf>3 zQuZy?P!M+0WN9g+GQ+a~!BNo^3&cVLU7Fjpd=GiVC0I5Y=!zkj@k?1LkrNl;rxvd-ZFv47m1P7^`A(MVVT zU@XLet!yFkJtxTDj)k}o#zNfZG}{EW!+P1bdmQ(Z!R*ImxF_1T!FHHeI1@c(!GU5R zYrv9%cm~XOEtUgAgRB9cY$o_l1_pk?AuF|_CoAoRO|lOIsm$pO0;p_-+XpC&@*EA; z#nDSQ&9faVbRmoty3dJpaON@`mt!+bU|cp2g*`T!xr{_F43od;r2qv&;hvQ1^1d0W zI#gvzj#W(-W`zh$`gtMU z@+NC!zj$W*1|gN$hDX5G~j1VBCz2yo@%jPppkPz?eB zUg1pkG?UeUAQ{LncH~TYFK&r`)*!#wBbo`G(gYP4=mkz~I5KEg0#(3JSQZ86(i_C> z?XL!>HmYE;0`F@D{B)pEl|dNwGYb5tHU?oKomrm|4{5BZ;yY21HB~bkmucfXm|M=L z4JRZI!HgI4zYy&z&8yz*4{)!~%o!@$XkH=RG_QC_JOd%P)Y$l?{lQEQXbnPeKH1Fi zT^kMztBefl74n%S!8S&QOf>U5l|7*b4D8`bC8>_D7`Gbi;pQbXxpx#f1y#ogQ6dFp zxaQLHZOsUcbYX<%A+=#(*(o*U5`Z|^?nHqaEIW%4nD2SjrUDwAE00U|i_!pE8KX>-1x{iba029dT91{1%KSE=mCtd#l^mGEBA z_&}1Gr5+y?6k4^)szL4OrnN?7i?*?9aO5-3bIxP3fhrS$er=fSN}_E{1es{&cq)5R zbr4f;^bX=4E~wc}kcA>XcpHOQ4uQ#@&;3B0t1J!li#QJ9&aQ1N4Q%1e^tAn~YTwuI zh#M|M)3(v~Js3>+g6Ah$Xy4YU-u6;e zHyYP&)o)%e)o;91zoAwQY;vW8zxozwC5*q#yC@awcC`i@8D%(3UT5xjXh4f9;Toj{ z?p2}Ni*DWQNb6`LT;l>T?*;ccHG7qCje2jGyzC%X3hAR=EY@Y|+cv^AJ`g6ZbG=*w zAYXZ!8zpZ2xz?sRC7OxqX-9>IAHtC7(%SSCvAzpJ^v1mw!s}r;R^y}a zUy<2Vc8B=XvAbp0nmd%qXY$$|${rKj%5yhPanC0&q;J{U+|9z7r=GhFAV^l(vrr#K zUps|Oa$F?R(Y30CowTuMQ3S-~uNM7ItsTf?ks~ZCGCl1329*YREG00k#ARCvi^K`O z1&S&qlSz!~^|AC*+x`|dkndaAzt`%gmi~4CwzYnm$!FTSpJtEiv3-dG`6y@V6uoVa zZ7N@~O&=56kjG-G$x-3NWxB5n{~sljA7h(+?Cvo(@mNZ5nEj%M0Tc*D3WVVMs^r}Y zisBui+Nl_9nyeNA7)<=EgACH4vD^_jovq7sod5jzXaDju`k&(_gSroe`Mz}@ZXJQv zY2Ed4Z=yswk~zD?FPe(_B8oeU2wLynaY^B4p2 zc(z7~-3P;XwlW+hEjw1#;8=_IiupjR)quMwVA4~|o^EXq-UkgF#;Sm<+4~_*&@B|U z_CsxM+!q5)lZa0t0<%AzvL{r~tvs}+FK**Pu4(M{ht`JnJPuP|%>P0P1WtB|3aZO) zGdDQdl@rVq-{3~A%*k!V);K}1;Y1i{r_g#`SdIR^tMIvH{iG)A^&$Y~_^yo!u9e4T zzb&>lHmBm5=R4^GYSGF)eFv$&7>wh7i+PdK1Z@Q7dfI+QbVHjw;`>k)?DQf6F)}sT zn<|E2!e=Bd7zYj-O7+E?on(w{M7gqUaL}+EiTPjjvVa2m4#21)bZO0^1cb3D@sRq!p94)ZnD!>P{s>pE z%sRM9QY`?MAH$Nm6Vx_KfAg*lk_Ml|l3fMYe3}3=D7sNs(Z9^QeX7mXE7f(%2IvYF*s z#WF(#$-rEZ)=^*SckfcY^nxaB(6a*&OnK1*4%&ekIVUsI*Ir08@V$!>nDlu=I)kpr z`L3=$U(nKRaLyqZ&bc3`uLXR`v=#WpOjo;^8~Boi0L*wH2Mof2y`NOxJu2G2gG;lg z1?}8m?^92ZT}7Y(Q+hK<~>)Lj0$uK1eQ{ShsaiTg%o_A20L~Y z;aIDWN=QMqz)_zdR@OfDr)qH2ry3e7_MuO)j1u$;>_nzW>(gYYZf3l%ZY~i{PJ=yz zBKgeyoC^!KfxWR*+EaDQil$m%SPk~ZN?@4#0y7#D{q1$lhTmWXg;65k9RYpSnp1+CP7zrKu zO!u7gnAnE8;j3PZ`aww9L6I-i5Srk^onHK-XX~^{Hw=LoYxcl{dSG`T&ZMs4#!dbH z6sq{xH`pC0!(jz3`AI;Bz$q<9_SyiKGLi~7DLXsz>CxbnRuwGPYG?=r>ryQ~_f}t_A2orO@I%L)lDbXb7pWe|I)Y8yH$Ckm)CD*rT)HK|e56d!+L90}s2?1BZQs zsk#h@$)Azn;2sD@cx0-Be#=`_LSMz5a`iYH1S2ZKna|*mfGYQjCyYYbvA!-86&Ror zPKn=^nUz1CeA=i1$to>+$UvfSem2&Jp%K2q2$46 z->*i4QL7RdYjIi-fD)T0u(1jD-^VCEFvs5h-Xs|n8Qb(V7+V0FReV42Cp0$K8z87& zEY?%=u{}iEOYC+B2p=5lb{B(9;;BoX_$sLU=8@THVu;BDg&}U=krXUQ6Ryg z2w-P#(BIpc_$v}ONN}i%$NDVfc%01Gl$e6g^BRoJfiuSDJf@CQ!PwHfoR=TOIPX8` z{dGK0B?M>jwyJh5T+bGatrU>;xl+UjdIfg-jR|BhPw(FoIyBhr_X=meZx9Z+1+v$? zuRBG78)UB)h-ZFpf*-KJFt8NQi_k`Jzb`%Z221e(1T%dn!#p9|!`ILDaN@89CfHV3 zMr4-BdSX7_KxULIved#dq7aCgpL6j~*xD~!OX@1LjhAV$0_F@%unojki$p!Ti+fAN zc+eoW8U*21epfTrxZoVvMlKS!6;FDI54iOo8*C$&BQg60&E8@F6#|=kMS^{o05{m& zD}iD1XEb?(4dxZrXHzxnA%?fS9sg}k&E6f}*AW0CPMA*%>$3`wtkHYLoSTHm3Q2~mzIiKeMEdph-@}heOgWKYBG^kMIm(E=ORUv_1t=V(W zoO2c&Tb(^q2qyYY`hZ5rz$SKH-92-6GOS+^Zm@|RMq$pU1u|$?Sg2>6W;CD8yTi_4 zyq9>JyM={%5R8?$;Nt;ZDy)zE;wSndYxiTcus$loV~sA`8d+@W+STNrVplebu`Bx- zb%(X$*hyOF;&76nOy_j@L3ci#;=Tl2wM_pm*!&)xJYrHEk=1#xm=bggEcVKf{QKk$ z7JHQeS+lE-W*H$U76||3a8N{P91m$feRPNrP+uRX6oXlV6?sKCR_d%n;>4;Ta))CH z|1?!>xJ(uMDRrfQvr*VgYsn0~sgEe6_#zFQjS5h#!YK>x;r}{R zk#I&8`IJ-%ERqV1*3-osERsrKnEKBd^n{c*aI$eC4d``H)-Z-LgPzd#w@~UF1ukMw zYrhVIk#NRf_$9Q+0@-(dj3p|lx_Ncg@~-h`8<^qw*K~fB(!)Ptq%;-`UD52fjqpzZ}{T@ zQZ+oiv_T$T6)a}{t_=?jJ`JoLP!t^-thhu{wCs9=wLvP8*_@&(=!^j}fn5fjVY9q$ zQf}5g88;1f84AQR&4nB+$OZ}`u(U^;n?9Ni3L@kLn|8FIDz)PVDllR9b$yHj-d*?Z z*XHf$iZ|`(KBqnuI6TVgZsY$CV_#D?I6Uf;%{0$QKyVC%w+CZ&Ju`(?*Ki>M6kjI{j1|@kJW!lmtOofkh8Is0X&xY^m`C(JD1vQ;uOW!IHTrH>MhF zsg(k;3YW1I@zH=9fw=Ktn#|~`x@8=sQvbo>4|iqOAZ{FhFs<(a2kk(lh2|W ztn5o*Sc6j*FlYzzPQCKb{x9QxQGaNVcUldNl{lZL0bK&8)>t|cX7}UeM{4Q$l>S>7 zQiD@#Me>>NyEY`41`aV&X(e2siIq@1TwZy)RxnXDIK)_tz--S**cyEAc8_A((8;%L zTYLqA;VT}}I3HNM3GMIU?gEtL*>r9>Z?NVl5YJ3cS%9D!nE4CjIH_z6X8u9|rg}P~ zTAI@)WIgDPM%`?8$xftg;9UhEnDAK#80{Ny2!*_d^WAvzdMQf?Ls>p0%MC2#1?9)6 z5h(_*1`GL|V5ax43IwDA#qo3RIu_cXIKD?T6Z<(4(^eU{2+Voky&%59MPPZ!Ozh3a z>K=MDSs;**f7@xZ27v^hZ07cs;-*_IkN}jIkTbOg2|#}7%&=_4{Hup<$TCu@w zUL>D+zMJyYty!Dt`l{%uPuv!R$Fz1EGE;xt>ylW{l z*~cm2L9c*%1Mj*7hRH8J&JzIrK!Bx0u4B{<0xYFKtir{-3fjyAyJtf723x?||O{dk{8hKn0roG@kC*pwxviOouCbNTNpGsR`>l~S^|WRt?4ZE)Bw9Rq~!%Rk$$0$zxbIq$W9NVF!l3!cyJHwGYF|qS2nj-R{hKy z>@$QgnD;ps8mz0XNb@nWwpOG{GBbQr!+=-S6{&i`8Q|Mmk+N*&_LhOF^Q|drTQFF+ z_N^sG`mN>TI=xFPI;2TwZxBzM)@`eIi0y=n}4`@vd4d$$$S6$s4vjCe?V zt2(`S@yS@5$o8`hvGQmu{wN`s@mcwlC|8Z|;!XeP)mD7h24K3U?PqmtdFLP=47cNg zIj${R&Y>7v&iz2#tHw2UUdAzsA^RJO1L!Ivj@x%Dz61sdU3JeLx(m4i4!{R5V9!g10p|NC;+oRz4-lRXtytHIjV0w&nR| z;+g8H>0+T%>9unWGkwWoe-WuA96y{-=`C|STqF;3+ zn~*bNCBBFjZ)+rTL74i2`<#e>QJlMrE7k{lIQ~q@SEH^pj?I%N@H%3d+|L;#YzpbS zk8z9NaCr1s#hm>Gnj4rx2@F%dTtEUU{Hj8$ZmeyKum7lpCWTBU_XddvlfXETYPo%g zf_;;a_e(Vdd8#ttt% zV{gIm273UdKur2-ArUB2rKe9v-CnXM%yP4ZcGY5;gV};aniWIqcHQ!t2ia%;Q$2!9+wfl7SC4c+IAoF1|C;|c+=P}D!2v~2B|RY zbW#TPhH8A#*BUGg{L-1}S+t9dSkmxK=RhZm&0=bbCjgX%APdv~AW> zx-o0{l!yklicJsc_J6|A9QQkR4UatO23y7DNUXrM02e3|njU%NP6eQ3WZ%>DO{T|U z2&R9*hYsGK1^hQ7blwvt^5+I#MkbPZz0rkq@Cd9a(@%uECAwIV9h$Mu(}qnJ5{8=} zhWTFU`hTvd!)|v-^GUzsbO$?cpamTYV2ln0Ka&n2e~BAtcY^r3Zu`zKY0+OQkk70a za=6vZ2J;~fK0P0x9{r@d+nxUX^_WcojA`mx!m@FD3zbjAjCK)u45 z?-_|$v85@jg@x7gcsMvnl75G(XdW6;~!LBc6n_#%k@ z&>=k0;te7{K@jGDNvW4(0QME;%ifTt%gHj1SkGW7bahGx=d7?!5Gu4VUlt>=9*Z6h zP$EzhEo&XE#33qNsKerFso~S3K~1zuVCIwfnLwMs?o$eo9K_?!a~yi>dIp{byHAAx z%=&yUhYZG{7!!}bJye|ZGNZ|1gLH*SiHZso+DVf|d`el$XTl3P zT+pqsTEJ^l+|xAoHE;`yU`ITYJ?A{8A+f@0p_j1B6X&kcX<-p8r8CpB@+lFm;2`#I zce=Z{JaRt6H7CT?W4$fRKLs#M{Yt^lq(g<_0&fqKedSkq*talTi0xI)jv zdxwKDT*{$`a0@-pmCt+^+~?Kl&h!@bYojaVTXe;9q8rG*GNXIH`(l9WRCbg35Z79I zC^yK+31Kkpi(Y(C4;-RO#rAObQ!c>J;1E?#Fq3?zpCVOcMpbAi1}VIvHkcW~DKqnc zK6fCy->4S9LIn{-q5B^d1yar9yc&@ndaN( z-_*K+6Ld!Fz1?``^THaOp!0}ka_`z`;8$Vsv6s9YK1XjKVK7Zz`h0^H79U;^=6uQf zBeiZI<cDaHc13bRy3t}{lBMY$+#VU}{`GtmY2IkjaV zP1I<7fD^u0z~$pB4bnt?vYF;-fmiKw)A@@yPq2m0ok=#IJ9|Ry7pQNM>X?iYEPrF% zfr=%hwWfH{8KJxjF2WN-e}noK)e%{lUmlcmgOU||MO#pQqHV!f%mJ_p=W{>MXQ>d! z`Uzpr?!*`TZXu2(gfr7K;vunoP(FJNySwoa!K?9e>Vic9Upr(wY(BMB0%ff}tMtdD zZH48&l$8tUwy@mKBd{Ke`Co{11qZ{dkwh(OR^?dFJVq9SnG3vh3YkBddTX5A= z!OZZT^Z_xeu$_l_WbDKn1jiP(^E?pD_JZdp;vG0jX(lT9CQ7~0tvs}^mJjbVI7(R! zjkWoxgj0sjZWzTFz55C*#$CM zy23g|zo*aP`P;gMb&3~+nP2k$NbOx=!c*@~b@_Xb(YG++Vw6B%hudvw=|QMpp2pr247)YSvM&Q-?%1Do2ta`fi4?8^)4>P>=mg;;VLUA)QWPVx3fRY2Dp(Y1egxC{ z2z{v>a-l+-AHfAOAHjWIaa>B9CZ6|(gFbn&Mv^q77RIFz7OQc=M+2Xt!U&s6KcHxm zW0CfR(55CHETf6%C;BE8_SjQRxE!m`q*~ZxFMwhGXC3gG{bAU}CR>mEInR91W`A&j zOn-2nQ`=Wq1Eh_@XO}$eTUZ15QJDG}30>3raU$jb5vYGkKlWf5>-YRbUm#G}$apVl z+l--uZ#b~~a)ZJ~Rqmnk8+#Nm4sp1XXR6B=?Xzr(+mY3dJ93-JOUHOjXU})Ti767V~WUL z>~tslNW6GmE2JC{tMFc41;YfI)QETF06MNVEyg>%V64%Hg&HYF(5l7|WC8UK=Huti zwY4n{L3t$BN6mL?6ixjIgp@QFC{x9IPmitPKPX!^pMlth_wGeuB`#-2=L82R5U72b zItQ-kJr#THOy`HWLoy9&Usi-;l|Ig?jDfxJE3;Fntc;8bhd0Jc-nqO6f5LL zO_E**hhaV6wuRg%A)HB`5f6!Fg?tQpCqHntkdKiHW_ItS4~SU>=V_88GfM75l6>Lb zZVS#+0SvRgQt&hBP+_Ak|F(atw}p+m02J%;e&A0?p9)^#bTB+f=J5;%a;EBTH@W(0 z!7I!oF#E;)FGRXRs<8cH?)X9rslu*&CcNN2C%P4Ohi1uP=XvNnc?-KkJ`ARP(f1os zuQ2PT$+(_DuZ3CH5zmCrIgg2Jh2i<{@g(Ua*vrag=(I3A3*pT3jCe>aLxbSp)eK3^ z%jTM{2i-Z2F?Yus`ng!oG#LcLFwFc)5sMP5VBsO|O{~H%-dKf;3a+7mFx?&3nZ`p@ zW5YS|<@9P!R)AQ6HlcainX}lV*x!vffK**rzp*njJzh_ zByds%jCHxhx;RXrO=yyG0P^j_hIyY;ye)Ka4<##lg}SVpq<0qqFyD7HUvA}4imoGQ3x$#p zg^MRNs*72)Ns?;_gc+Za$o0Bn`mXQJ=N7x7i^JR(+~+k-dkZ`7@g5!h&N~7vnzjRD zOxt-(+(Yqs=UeKziV{e@GiQ_dd?^xZu;}3cC2Cmx)A%s%qSj!3?rhQO1&FbF@sOH6 z6pVKpgjsK+DD;eOKJoBx5{$0~$C_L*nz(GBQ;k)Ja7S%tvc*-0jlt|s+t27T)NpAs zg{`%KO}#~z#)ri!T=e}`b0Eq@Eu6Zg=WHpe`(x5c-#KSYx=ZI#ei zlgkBMpim8mXJ;^qw__AsoW9ms!GSR!!+A^}BXsuOX`Y=qCNob=#0e!dIeT9jku|y& z;8f4jp5eemU)2aKT*b6#X?`?gY5rg7YlWiSPTT2%kG&Vd-)j=>E|AZp-%jyBvqr?E zH$lZw6vr7-8Ca^;EcmtcvEV+hNgpE*kNX}|YLUK+W9YljiGFC2 zLuV~jMcHLUsh&;EwSDT2L}5iu7C9jhCcfx_FX_UL)Tglif{m3XT{wusQ-A`YP$5Z9)O*Vr@6`kJUST&)LWRW;O#GaS z49+2E!4jx08fU$^rgJQdvNUlP%7B=^zF$7a0$PMdOuumdjfzc%oDv*kJXT9)9H2sI zQ_d2dzLU3|CYy4F2u%B|gA2lejD&F)7nFB)yGQYK`EEQJqul0juz6QldV{^^0`W}s zT^kWR13_h5&?;Q8eN==;GO5F~K~T96fVrNLs9+mdV+diY3fl;^W*o8&))+RE%}Zu}Z>LD07D%Pd1Uy>H5o=IJ%$3Wue$FT$6CKEfMS*2E9L@i0(-!P5ZRb(Z@Vqx-iH<=ytJ^n4eA$uGFiOX6%P z&*h2g9G&!mhj@cUZz{F`hv{D~U{SSCOmSP(WCv}G}O%8s|vCyJ0vpD6mB zzDFSZGmddXwY(tnvwx3ZW2l7l02Zy-ZZ5%J(N2(0Y8~k;QM_!&w>8jt!PN1>%|J zI~g8W24c}t%>DUT9Tc(WaJz>$h((tIG4l&P4$vVGk&vPvLG|g{VA`9+vs{BWh)9G{ znEgTy9n=HUfg@C{iD|tSPaI2WFdc+2nD$w{GER}}kbX?p5M<_Nn@ek?C59m_pVDX% za5iNts8{ced)V!gJ+gtbS&YDhPYcvKbT_)MR(7Y`2%*0&x;BELYd@>ix*LNr-hHif zErgV=^^E9N9`#hT*fA#Cj9VM^JU~qTg6AjFA+T#9&27^Z$Cc*XVArBZJ~KXLA%bYY zN0)-INBuCF`MO>M_b~v$bk9g!Fs?i*Kbhc4yYA3OxwQdKVld~k@+sLvU_Vy2!B$!g zi(OI~jB2nnEyH2*iyj70pz<`nmAs56MSe(Y)3}SmoWJU@{Rl_$uj$u6!pew{g?&b zfLM#QW+XWn&HO+AeS!oAF>@c}Pev~6o^0vmw|pSGXXqdOSm-PcOjLP+Ua z&xmg207!aUf@s>-0wAe)Ci+hLfLI3d0ptLGNM1*0X720ULJ?pFXn%#Wz7@iZ@f-xwh@dq+s}w@DB37S$^0PEB-)r4%>>`nIA9hy z&;(;eF$f$qNq*uoFD6s#srqFr{Xv*>g9A;~5m}F`g^ZwDV52<`w0+o}Oyi(p4K~`V z;;~wn3)n!Z_2TXP+e@q_e}IUzl7vE75dJh=5cc0^e6DL5fbK1wL{%n7NV zjU6PO%;=nRi|ig9J3KfUjY*izr9}%>B=-e!2`W_L!kbLI_tVFX9Uc?j z>TUn`t>J8mp~TXk{luQ2bTY||bf4V&QR2piUsdUlf_#z|8cHcsFiTgGNEgX!@|a2; zf^*=g3Eg`&4_h}=l2y_|Ls_Le8|Bh7>h}L4qi*MB)XkDBp3IU9s?%xGx$V;?1xqcl zz)&WsPnUjaS%kOA|3Mas?U9g0LR*wgzAb`lq6tqQbng}Zv_z+rwMdd;L+z3w$w!t^ z(d6?wcL}vhSw2B=p**fo@}oEjVj_PB6+r{KoUg~|`*oa20WruRhd``q5$z=MN(*;FMm=HB>c+h6?m7Hvjiwi%TO+g=Xq4Gn?rb!HUDNPv_ zA2~cWE^1=%s*xbwu+=TaO&MNxVpE2HY7d!A=NGDKe0+4!op@nJFgsezIkQfrp!2&x z@u5_+Mg1#okZm%DeW!~%J*!Ed$ne(el+tbGOtGQt(w+H08z%ECWYVnuy_8e%Eablm z4rLa+EH-**Fdccq8WrT0%mw14MFi)d!LW{r!2?>6vC(5kObqX9QgDGd*&v~u^PJB4 z-#G;NUvyJH{oT+tp!i^>j_`gv#hd!S%MWFp{ons%Wk_Z~X41BB{WB{3k(Lw;$ozN7 zp(Hb&PBIiNNH3YG?LvjPj1oD;P^F2Lh6W>lCIv4K7@Fk6uzo59Q`=o)xKKrMo;Q`C zLdjfYO(w$Ww;_b88CIhdTx7k}c%drgN~}_NGC`e^Ie0o9V_5J6ZtxPLV7A1t+*5Gy zbZ)t!9MdO>6eO0+jsH*q!Q-iM!6l?=mFzHrS2YE1dYu-&^G(5h(&Strt8o^FUUl?-0r73`_vE1mA4&U_rULZ{&3?WIKv)g#NfNdz@%bFpLc zGbtz5B)EfP-d<0`M^1^EI5PBkSdGS{^ibqdqlRjh=R!#ZHB4r#?YXTta^jfSNO$wX zDwBe-wigT#$~(u|dY+9PNe;sZB%q z4UY;Y6ARuhG%Py&1UThw`tJatJToMX8RVMG^!(w~J$-a#e&NXA#}U!a1kQcFJO$J9 zUsABd_4z`%1ogS--YK})kg#qfDIyi>f?sG*t_yM+9L z%3kzpL&8^ay>f+2bxLmzaD z9v=*W4(~Zqe1vteXo)M+xk&^yx#<4q!es|FJ7>U9iuXSk2^OkH<}>v;okCEJWM(!v z-A$dZcxX3mM0xXqmNv8_Luv0rCbfHTL= z@s*+`N5uq>4hNla%Si-ZYfp81^M|FOw~ z!Qa6SA~K=H!;dijFPl6pN@A0TeP}&T<}PPqTLcp`PZ${$KeBpc^=e`5oZ_1&LBUDN zPHf!pPbGQLn6ScGO7Kd>U;@tY z^PvozzlK8nLe$mV4r%&)IC0^1E zt^x(e39g*PMh%TN`)1f0kmAed7Y!GxO#WmN3aWL{4sJs92)BnO1c&ga*XT2ilJrrC z6nAhJ3=^tGz6<_=g_F#k{nP7WFlk)ETad$+K??5dhnE`4G3}WsK}r`rg-AHF9upNm zIxMG7DLryJQ*0=ybZ0)eq=q_uzCS+vYF~;QDzVhWhD!WhO36Hydb*Y4Prs!zteH~q z0BBgDp@h;T#t8Chez61M(^q0nKVuLxcIbrDuRfm~%!Lv)HaO>vntIMGc_UN2NP|r; zK04Wep?c)GP(DGuE_(JDUay31D|kXVcG8&O(!;+7kfr!Y_+rsQHOd(?_B@#c)k$Xb zNN5R%wOXi<_z4%TQVK?oTzbS%wep^+*0~u4RZC_j!wUy8)7iflQwnA>yo6Ap%4AEd z%-I}*T3qxT|9ope{FJD1p(PZyy{Gsb|02OcHOY}!lcaeBbxCG6#tS!7LK#7mgjFO3 zGtXT-Qm7VL!)hUepb8hgR*|%Y#zaSr4d%_eP>+`4YZb}I3RNTfd9ny9((ym^&yntX zR7z})p~1Fh6+JVKGBUPm*ut6cf7nxBJanj<1(Qwh|GL8A=S%;;R=C3?1 z=K?`Od50bj3I+b3nmm5mnBXE^@D7BqE$IKg$0VkBSr?7)+SVR2AWX&_=vdS5m93!&Rp%( zo|zMKiAi{JEo`-{eyM4k{%$CPf^C(QFsxI+F)<1A9!3PMWj@&;WY#kwMzK3_?p zEOMTnKQE$bSd<`*oadwwEVvQjcX#Xl$M6Xygu>{g2qqXB=3Tx+BNFCXj0v9T4yGW8I5YKmQ2E?vQn>JI?do50 zCShfS5~|tj%zMrvhEAF=IXb>xgb@So=S3vEw=h0pVq8SDwJ>-LFd|4OIyPZ#JhNbe zG1o!K33uJYub*G?f=OCJD6dSRhU$1G-kG(3Ow`zz;c>Cy-RUK-{fXZW#mUw&R9Zyh z+xx8hXBPeGeNOl_>Pueqp)ZFbmFW@{Ghs?FiaR3od4-6k!xNr#4_^A3utJ<(7d7sr zGD%X1nQ8{!|84CXbNb7n6!IiaA`o;g356zEoOu&hwS*-cJOYrgz|Y;(8(!+lc5W%5 z4C;4G*omL6uhlD9&FV#*p7~<r$(G=Ifz2*+TDYi0E|YRS`k7VrQczo&P$R z(dWzz1YzM@UwZfpl^4pVSf_+($Rk42kcZaGh%#pbm(?6+2Dpb$DIOm=Y3$j*3`_Bn z2e>C!VkpTH7f3Q`@Pst;CAMR*{&?p}Wbo|W>4`6g&bQ8*C_c zC!J5nifC~rR?uMi6Eg`8W+n!2kP0#x7u?r~4z3)ArPBCPQ~7r}pj{Qx-+Ftlfwn<)w8XO}9PxZLg8J2PL zOV0SbWreaX+~w^5Mug@xi%1eNXu>o5ox~}v!_v6q{Z8VyLxIyb7#kNcF=k?HbR#Qv zt}``HI+IOUq6}1ar#|L ziCz8K{ypOKjqHdr)55o*(|4YdOwJS5Dwn(s{i~QzO4+(4Oz{)ZOu?ESA2fJEmlwWiRl8X2!@e4dT%zUF;KW>4+AaF@ zeaMdF!c636cWStP)01vKJC2m3Cu`k+xo%`)j_^jPdmzucUB!o&c zAuejzn5c1K4PD`4wF`YIRB)PZp)!It%N{=>GJ0zC(BSe|Ft<}MUM5(~Nl!d4dbIcN z?}wsf^Qx)DlkL+52k~;8-57(XN24aVAP^StqDOY;DIgRvN3dapW^oGJ(9;B8vB8AJ zxoDe(zLeNzLD>mq1a-*g0oa%^!R3Ld*!apxe+i3l(S9@OH^Yhv#mwJ(WL!i{e8eP= zxCUp6F{5K9R!nHL#tA#Lu+8SYjd{@>+Ifozh0hhX;hiZzXn^#Sf^o!=BPIo#LRgI} zUu-=*`@K+%^gV-;B3dVu6cn5}n1aiR$@KGV!WX^b6aL*$fXuzZOALafn=&$LVtnvA zp78rP!51cui?3I?a?*yb6gOc+8b zN0rS56 zqf}7WEN8zmxk{y~)x%bWi=M%s^W{*OjG+J#2?hQ;NR5;Psd1hlH7vDrYEm;LL28~S zNX_#Esg;r-waycy)_H=|PDzm3=Lu5#JVENDBuJg}1gUeLAazp`r0#iw)ctpmYE@DY zq*|4K2MG%N*VWMizBa2qdtJE@kEExuay z^VFpJd1{i9Exy`$w)koZTYTmu-A~m@;miG^JDTwChU$?avFB1;u++mNgfH~}79nw& zCy9`-$ipLqFY*5tA#s5xiIA|o!y|+*?*A4cacL)skg%}BBZM#O{}v%}Q74ITo+TaL zwg0yWi9LIg2s-vjlNK(Uv^ZCc_aViP3(mx*1~cjeqq`Cg31$U7O8(TTF7t1};NMXZ zD2n1Jfl?@qvM7fNsEEp_f@-Lany7_3sEhh&fJSJHrf7y1Xo=QngLY_-j_8Cg=!)*> zfnMm1zUYSm7>Gy=#t;leG=^g&VlW!97>hWJ#{^8oBuv3nOven&!fedNJj}-eT#JRc z9*eLTH{xb2!L3+|+prvWUZ(hsUrUPhbO{!bUuUO?VEQ z@dCEsC2Ykj*oN1z9dBR<-oj42gI#zJyYT_`;3MqCC)kJ2upeLG0KUROe1k*y4u|mr zj^HO8#VrjwkRWp2E|3 z2G8O-JdYRfB3{DFcm=QGHN1{D@Fw2E+js}>;yt{N5AY#A!pHaopW-uojxX>fzQWh| z2H)a4e2*XSBYwiq_yxb>H~fx2@F)Jl-}ncYr3ttkSKvxqg)~Tq^vH-z$bziMjvUB^ z+{lZ3D1d?}j3OwCVkm)uY=#4(;hyECdK^TlE48<@E#|Xq=6k;(3aTtdQh{q&M##Bth49vuA z%)vZdjRm*{3vnG5;Rf7@o3I48U@4YiIc~=a+=-RA8>?_HR^xuG!GlkLY{84zikGnsuVOo1#}2%Sop>9&@Gf@aeeA)9*o%*`51(Q`KF0xk ziG%nWhwv>9<9i&zk2s2-aSXrWIDW?o{E3tJ8>ett+JIEJ0;zEo(jpx)AR{s(3$h_Q zav~Spqpif9bSNW@??VlftR7>@~b`oSb|%z6t`hH?!XG%g_XDmt8gDy;{mL}Ls*MPunv!5 zJ)Xb@JcW&T2Al94Hsb|s!AsbRSFjDQVLRTy4!nh(cn7=i9(Lmc?7>Iai%+l*pJ6|~ zzyW-PgZKuA@Es202OPmqIEr6z48P$x{=fifX8Vny8IBsE7J!h(>6Frf7~9 zXoc2ji+1RMj_8ao=!Wj-iC*Y~zUYqu7=%bfVF-pH8Y3_gqc9p{Fc#x59`Trn$(Vv^ zn2wp4g*ljut1%zf;96XV>v01X<0jmUTW~9u;WpfkJ8&oN!rizB_u@X>j|cD|9>T+T z1drk|JdP*uB%Z?4cm~hnIXsUS@FHHq%XkH^;x)XEH}EFj!rOQU@8UhYj}P!6KElWN z1fSwFe2y>hCBDMf_y*tNJA98H@FRZ0&-ewu;y3(`Kkz61!r%A@m!%K599Q5QbD2MW>h)Sq}s;G_{sD;|7i+X5) zhG>i?Xolu!iB@QXwrGzI=!DMbif-tEp6HD}=!gCoh(Q>PC=A6g495t>U=(6825}gN z35dreOvY49!wk&CY|OztT#W^|1`BZ=7U2fmh?}qkw_qujVL5Kc3fzg6xErf*FIMAz ztigj=i-)lek77L@#|Au!jd&WH@GLgtd2GRp*ov324XGyYMb{<9+PG zhuDjcu@9eOKR(9+e2Ihj8i(*L4&!?q!H+nKpK%Po;y8ZC3H*tZ_#3BiS%!dAxB{th z71AOdG9V)|BMY)2J8~iy@*pqrqW}t_Fd|SC#ZdyKP#R@X4i!)ll~D!NP#rZ<3w2Nz z_0a&0&=^h83@y+StkJp30=??-O&TR&>MZx4+Ag|kr<327>Z~N$4JCrG-5Fp zaTt#Yn21T3f~lB}8JLCHn2ULsj|I3E3voRbVKHvR%~*n4u@tvqIqtv;+=Z362di)& zR^tJz!9!S!N3af$VLhI}20Vq0cm|vB95&+xY{5&|idV1=uVFjhzz)2Hop=Yk@E&&K z1MI;^*o#lF51(N_zQ6%|g@gD8hwvQ^;|CnUPdJKSa16iUIR3y1{DqVF2d8j(#(-3~ z5~+~}X^|cokO`TQ71@vjIguNAkPrD$5QR_#5h#Y@D2Y-igR&@(3aEt2sETT+ftsj| zI;e;GXoy>GyDV6Junfy_J67OMti;_|g?q6Y_hStn#9BOzb$Ar(@i;c%No>T^*o0@X z8P8)2Uc^?sjBR)o+wnSf;7#nr+t`J7u^aDW4?e_Re2jhg6#MZx4&X~1#Md~4Z*dsk z;|PAlQT&W!_!Y5u^#kr`Q#4cU)=!M?si+&h@fr!Ll48c%DV>m`42BQ&+v53QXOu$4;!W2x!bj-jk%*I^I!+b2j zwOEMju?UNCBW}hL+=`{R4a;!{R^TqI#64Jr`>+}hU=1F^T0DYvcns_D1UBF)Y{WCz zgy*msFJKE^!dAS3ZFmja@dkF_E$qZQ*oF778y{c~KEhsnf_?Z5`|$-1;42)&H#mgv za2P+}2!6s*{DNcn4ae~ZPT((`#6LKN%Wn@zg)5O7X^I8Cj7HIgk^%kq7yZ z9|cheMG%2vD2|dSg)%6M@~D7HsEn$ph8n1e+NgtisE>wdgeGW;=4gRdXpOdLhYsk7 z&gg<}=#HM~g+Azu{uqEkh(r{IU>Kq?0wXaBqcH|!F%IJqkBOL!DVT=on2A}KgSogG z^KlKX#dWwIH()Vt!p*n^w_+J?!|k{Ocj7MGjeBq}?!*0f01x6JJd6$-gI!=JbVgTn zLl5*sZ}dSw^v6I9!eB&UD28D;Mj!^G5Q{O0!#GSpJSJf>reYdqU?yf`4(8!%EWkBb zi0iNjH{eFxgeABIOR)^gaXVJvPOQY;ScQAB8uw!j9>iKajCFVv>+v`?;7M%6)7XS( zu^G=}3tq%lyo_yl72EMTcHm9y#M{_~cd;AqV-G&WUVMyw_!Rr`IS$}U9K_c+gl};e z-{S~=#8Lc=WB3)v@jFi7Pn^WxIEBle4oHP7kQ!GZEz%(aG9ojwARDqHCvqVV@*+P9 zpb!cp0!2|AB~S{bQ5NM;0TodhRZtDpQ4_UL2X#>&4bTXU(G<s zwu(Ek5_e-2?!{`{k2QD@YwFu@O&W6Q0FpJdZ7S5nJ&xw&7K5$LrXE zH?b3MV;A1VZoH2@_z-*XG4|n8?8oOgfG=?nU*izI#bJDpBlruo2H-6Q09nynrou30v_B zw&68w#~avzx3ClMU>DxQZhU|}_y~LP3HISL?8g^4fUj^6-{26w!(se@BlrnN@e7XO zHyp7E-w<03RfaE(jYC;BLgxaGqNHZav&#iBMC&g4js@DozVr|&>cO|3w_WR z{V@Q85Q!)Z!7xN)1V&;MMq>=dVjRXJ9uqMcQ!owFF%z>e2Xk>X=HnV%i|cSbZop#P zgqv{-ZpAX(hTCxm?!;ZV8~5N|+=u(|03O6cco>i1Q9Opn@dTd4Q+OKB;8{F}=kWqw z#7lS?ui#a@hS%{1-o#sY8}Hy_!ytyQ+$Tc@ddubSNIy=;9Go$@9_hE z#83Dczu;H=hTriA{={GS8~@<4h=9v+1+K(ZNP~1pkBrEKEXa!N$bnqQjl9T*0w{>W zD1xFWh7u@=(kO#+D36M$ges_t>ZpNQsExX)hX!bf#%O|OXpWX>g*Ir5_UM34=!~xD zh92mN-sppV=#POIgu#fyPz=Lxj6e)VAr@m0hjEyIcuc}%OvN9L&SjSb%G= z5Z7T5ZorMW2}^JbmSP!}<94jTomh#xu?qKMHSWh6JczY;80+vT*5h$(z?0aBr?Cmo zVl$q{7QBe9cp2O9Dz@Ww?7*AYiMO!}?_xLJ#~yr$z4#dW@G17=a~!~zIEb%t2;br` zzQ+;#h@G6kQ!GZEz%(aG9ojwARDqHCvqVV@*+P9 zpb!cp0!2|AB~S{bQ5NM;0TodhRZtDpQ4_UL2X#>&4bTXU(G<5wrgtd4C>+l%X;|XlQQ`m@S zunEs$GhV5i%w&M-#z+2dfcd!fZVK+X&9(;to_yqg#8TR7~9KcsNh;MKR z-{CNRz!Cg}qxc2K@EeZf51hbXIEjC73YQlPNQEnr8flOg>5&1MkQrH#4LOh#xseC? zkRJt62t^QqVknN1D1|a8i}I*|N~nygsD>J-iQ1@xdZ>?vXoMzcisop6R%ng3Xon8y zh|cJOZs?Al=!HJ$i~bmZL5M^YhF}6nRGn1i{v z8uM`tuElk@9yeeyZoLv1FYd$rcmNOLAv}yn@F*U`<9Gs3 z;we0hXYeeZ!}E9nFXAP8n18?Fjyp4D8F5biY_y8Z`BYccc@F_mS=lB9& z;wyZOZ}2U?!}s_BKjJ6+j9>68e#7th1ApQ#{EdHbS@D3&aRsi#RY-$$NRN!jge=I4 z?8t#!$c?w!YG2GD25U!iP9*8aww0AsDvu0it4C=TBwb>sD}nSZt#}#R@G7?Bb?m^K*on8X3-4k#-p3w%h`sn2`|v6D z<8vIqmpF*8aR}eyFuunT{D`CY8OQJ|j^lTnz@IpYzi|qel?X_ME07vjAuZA&12Q5r zvLG9>BPVhp5Aq^E3ZM`QBLYQH93@Z+rBN2;PyrQD8C6gX)ln0*PzQBU9}Un5jnNd% z&;l*d8g0-H?a>jP&;?!59X-$sz0nu_FaQG)iNP3xp@_zCj6@7ZBNk&3hw+$ziI{{b zn2PC`fmxW1xtNFfSb%G>5Z7Z77UM?Tj3u}gOK}^P;|{FAU08{GunPBKH6FkkJcPA) z1nck^*5e6mz*E?WXRry+VKZL97QBS5cm><=8n)vN?7&;tiFdFI?_oDSz#e>rz4!$C z@EP{w3mm{#IEZg>2;bo_e!vm@groQc$M74D;}4v`UpR?>a0-`~3`m75ks4``7U_`z znUEP-kqtSJ6S2TD2wu_fJ&&0s;GtK) zXo}`&fmUdZOcMgy`KbdsqBFXn8@i(>dZ7>cqCW;;5F!zUAsB{ejKD~Y!f1@aSd7DX z#A6~RV+y8WI%Z-P=3p+a#(Z3ZYjGW}#|>DFn{YF3!L3+^+i*MXz@4}YcjF%1i~Ddt z9>9Zm2oK{CJc`HgIG(_hcnVMB89a;U@H}3?i+Bky;}yJ$*YG;tz?*mrZ{r=ji}&z8 zKEQ|g2p{7Ue2UNTIljP`_zGX+8+?oJ@I8LOkN62c;}`sj-|##Bz@PXFf8!rqRx03f zT!AZb71AIb(jy}>Aq%o1J8~cwaw9MDp#Tb^Fp8ikilGEbqBP2&9Ll32DxnIhqB?4z z7HXp|>Y)J|qA{AF8JeRdTA>ZvqCGmG6FQ?Sx}gVpqBr`WANpe;24OIwFciZu93v2e zQHaGD#9zL6iuHIL8}KAH;%RKcv)GL1u>~(;D_+Jnyo&939Xs$QcH(X9 z!n@dw_pt{bVlO_%K75M(_#6lDB@W_i9KyFajPG#-KjJ8U#xeYgkMio>; zb<{*H)InX;M*}oMV>CrGv_MO=MjNz4dvru6bU{~iM-TKuZ}de!48TA{VlakaD55bO zBN2nqh{agMVLT>aA|_!9reZo~U>0U$F6LoA7T{Ve#PwK&#kdhSV+n4>Qrw2+xC1M2 z7gpjPtipX*jR&v>4`D4H!8$yK^>_js@Dw)U8EnFH*o+sj1utPMUcolJhV6I*JMb2E z;vMY5d)SQ+um>MuFFwIOe1`q_0tfIF4&oae!gn}~A8-Ue;V6E=G5m((_yZ^K7f#|I zoWkX00#e~hq(&N~MS5gFCS*odWJ3<*L~i6kKIBJ16haY1pcsmyBub$S%A!0fpb{#h zDypFdYN9skpdRX@AsV3xnxZ*cpcPu9E!v?2I-)bWpc}fQCwid|`l3GuU=Sh^g&`P* zXpF!}jKXM)!B~vLc*J8OCSwYwVLE1F7UtleNdc)Q2V8;FxC&{J4jGUUnUMwAkR3UZ z3we+i`B4CcP#6&?isC4NQYekGD2EEDh{~vfYN(EysD(PHi~4AQMre$tXoePOiPmU? zc4&`|=!7olitgxvUg(X!=!XFqh)4{^5DY~$hGQgRFdDHKi#UwO1Wd#vOu@d5VWBkaW|*oV)sA79`A zzQRF#gG2ZZhw%fB;3pi#FF1zZa2$W&1pdNF{DV`td`dtnT#3|3gS1GG49JAc$ck*p zft<*VJjjRqD2PHRf(R5tag;w< zYqUi>bU;URMi+ELcl1Or^g&Q9BjWHODaTt$yOvGeN!8A-exUdJ1F6K~;dyn}b~9^S_X_z)lAV|;>7 z@fkkH7x)ri;cI+@Zv%oS;=c3q_xJ%n;wSu!U+^n_!|(V5f8sCvjel_2)PT!z1+K(Z zNP~1pkBrEKEXa!N$bnqQjl9T*0w{>WD1xFWh7u@=(kO#+D36M$ges_t>ZpNQsExX) zhX!bf#%O|OXpWX>g*Ir5_UM34=!~xDh92mN-sppV=#POIgu#fyPz=Lxj6e)VAr@m0 zhjEyIcuc}%OvN9L&SjSb%G=5Z7T5ZorMW2}^JbmSP!}<94jTomh#xu?qKM zHSWh6JczY;80+vT*5h$(z?0aBr?CmoVl$q{7QBe9cp2O9Dz@Ww?7*AYiMO!}?_xLJ z#~yr$z4#dW@G17=a~!~zIEb%t2;br`zQ+;#h@&4bTXU(G<;31OotCq7~YpE!v|4I-xVVq8oakCwij~`k_AtVh{!+3PUjr!!ZIe z7=>7jK^(?m0^%_VlQ9+3Fat9&8*?xZS7QOL!9rYzMYsVs;wCJ?Em(?WSdQDV0(W91 z?#3$Ii`BRvYw#e};$f`Aqgao}u>ntFBc8@4Jd4eE9$WAtw&G=M!>ibi*Rca{Vkh3l zF1(A~cprQ4A@<^9?8B$nkI!)cU*aIX#vy!*!}uOY@FR}mXB@+?IF8?O0)OHp{>CX> z_GdsUT!GZM3TcrJ8ITc~kpQd7!fFn;wXVqD2=ixhYF~O%BX^B zsE(Sbg*vE<`e=YgXpE+4h8Adv)@XxvXpfHQgf8fc?&yJD=#9SUhXELfNDRgh3`I1C zVxOvEHi!BkAg49vo8%*8y+#{yi7g}5GzuoySuW-P(2Sc==Q9Cu&^ z?!rpkgH^Z>tMLHV;32HVBUp#WupUof1D?W0JcCVm4x8};w%{df#Vgo`*RUOLUh{=!N8 zgHyQtuYgpz5~+~}X^|cokO`TQ71@vjIguNAkPrD$5QR_#5h#Y@D2Y-igR&@(3aEt2 zsETT+ftsj|I;e;GXoyB=f~IJW7HEamXp45}fR5;lF6f5t=!stFgTCmG0T_fxL}3Vq zAsQnv5~DC0V=xxuFdp%kh{>3OX_$_gn1wl*i>omo*Wg-QhwE_z7UL$|j9YLkmf<$s zjyrHC?!w);2lwJW+>ZzFARfZQcm$8)F+7eZ@FbqX(|88Y;yFBz7w{rp!pnFCui`bl zjyLco-oo2>2k+uNypIp?AwI&#_ynKgGklIO@Fl*&*Z2nC;yZkgAMhi7!q4~xzv4Ii zjz91x{=(n*2bY};xExpDN?e6BNQd;uh)l?WtjLZW$c5aGd_j3^AnFbu~C#9$O+F$QrMhY5(sBuvIsOv4P!#B9vLJY0)eeiH&#~oA4|)<9Tesi`a^n zu???cJ6^{QyosH78@uo>cH@2Q!H3w3kFgJ*Vn05|0ep#r_!@`sEe_**9Knw`il1=| zzv4K4#|iw2llU8_aM|Ahsc;2S<0_;@I%GgbWJVTbLw4juF62R8<#M!Dz%{EaEU86EG2zFa=XF9WyWsvoRO*FdqwWEf(T>EW%>k zh?}tlw_+)7!*bk#6}Ss4aSvAEKCH$ASc8YK7LQ;Z9>aP(fem;H8}SS_;W=!^3)q5} zuobUh8(zb9yn!8f3p?=+cHuqj#s}DgkFXb?U>`oietdxg_zDN{4G!Tu9L5hgf}d~{ zzu*{t!*Tq96Zi`!@efYn@_zzS;Yy@N8l**fWI!flMpk4)4&+2`Z2hVp$VFzIa;6 zJYK+ycnL4#6}*bq@H*bWn|KRv;~l(<_wYVGz=!ww}qB~c1xP!{D;0hLf0RZ$H!P!qLL z2lY@N4bccq&=k$l0MjcJ<$t&&=>tN0D};TC=9_cL}LU-ViZPW z48~#{#v?vp(x^tkYr+F$jYZ zg`pUR;TVA!j6y8NAP(a&0r8lG$(V|1n1Pv?jX9WytFZvrU?Hx?ip2cQ7k1co+Tk$fs;Z)3%eu@i4&7v9BgypKKj5PR`4_Tf|P$LBbJFL4lG;}E{ZVSJAx_z_3(Gmha`9LMiC zfj@B)f8!J`%M_3bS0FX6LRzFl24qBLWI;A$M^5BI9^^%S6hI*qMg)qYI7*-tN~0{w zp#mzRGOC~&s-q@qp$_VzJ{q7A8lx$ip#@r^HQJyZ+M^>np$odAJ9?lOdZRD;VE_gq z5`!@WLlKSP7>O8+Ml8l64&yNa6EO)>Fcs4=1G6w2b1@I|u>jX%A+E$k7)qcdN}~+Qp*$+05~`pos-p&Kp*HHG9vYw_8lwrCp*dQj722RJ+M@$H zp)}%Sc+v>j@z*UcVZ>(#wy&4)wmyP@F3RWVXVWWSdYiC0Z(Eh zp2j9Ti_Lf*Tks;b;$>{ZtJsd$u>)^nC*H;`yo=p8Df&v5`>;vl}p zA$*I&_#Q{_BaY%{9K)|Tj^A+tf8r$m#wlF3EFcxGKx$ltv`B{x$cW6yf^5i+oXCYd z$cy|afI=vY2oyzelt3wzMp=|Y1yn?3R6#XVM@`g19n?jAG(aOXMpHCH3$#RQv_U(x zM@Mu*7j#8;^gu84Mql*901QMV24e_@A{xUn5-}K!Sd2v+#$y5|ViKlcDyCxwW??qw zVjkvW0j|YDT#rRqj2m$?mf%(_#cf!QJFo(GVI}UtD%^+FcmQkg5Z2-mtixkik0-DJ zPhlgT!6rP1&3FM@@DjG-6>P(6*p4@_18-p`-oY-shu!!9d+-tV;uGw{XV{M~Z~$N7 zAilvNe22sM0Y~r?j^Y;_!*4i_KX3wn;UxaSDO_%HifX8Vny8IBsE7J!h(>6Frf7~9Xoc2j zi+1RMj_8ao=!Wj-iC*Y~zUYqu7=%bfVF-pH8Y3_gqc9p{Fc#x59`Trn$(Vv^n2wp4 zg*ljut1%zf;96XV>v01X<0kBWDmaAr0DJHe_Tm%l!)Mr!FK_@~;UK=jA$*6!_yI@o z6OQ5+9K&xojz4e$f8iwl!6{sBy3SO%5~+~}X^|cokO`TQ71@vjIguNAkPrD$5QR_# z5h#Y@D2Y-igR&@(3aEt2sETT+ftsj|I;e;GXoyB=f~IJW7HEamXp1d32MgsDY{P5V zjyJFaZ(%3i!7jXq-S_}|@DcXn6YRrh*pDx80AJxCzQG}Uhr{>*NAMGl;ujplZ#a%W zZ~}kfB>urETyC<=RJanUkp^jz9vP4cnUNLQkOMi98+niq`B4ysPy`VuhTC&g4js@D zozVr|&>cO|3w_WR{V@Q85Q!)Z!7xN)1V&;MMq>=dVjRXJ9uqMcQ!owFF%z>e2Xk>X z=HnV%i|cSbZop#Pgqv{-ZpAX(hTCxm?!;ZV8~5N|+=u(|03O6cco>i1Q9Opn@dTd4 zQ+OKB;8{F}=kWqw#7lS?ui#a@hS%{1-o#sY8}Hy_!ytyQ+$Tc@ddub zSNIy=;9Go$@9_hE#83Dczu;H=hTriA{={GS8~@<40s)uf3S5b+kOt|H9vP7dS&$Xk zkpsDq8+nlr1yB%$Q3OR%3?)z!rBMduP#zUg2~|)P)lmbrP#bko4-L=|jnM?n&>St% z3T@C9?a=|9&>3CP4L#5kz0n8#&>sUa2!j!Yp%{kY7=aj!LM+B04&yKZ@tB0kn2Kqb zfti?%Ihcp5u>jX#A+EzB+<+T#6PDl>EX6V`$L&~wJFyaXV-@bjYTS=Cco1vxFxKHw ztjFWnfG4pLPh%6F#b!K@EqD=I@iMmIRcy!W*nu~(6K`V|-oe2*je5l8Vej^S4v$L~0SKXDR&;}k9{7?28AAT_Q+TBJh;WJG3U zK{jMZPUJ!!TvoITTF%R>x0M}w6uE!!Q#*MfcOK>Ze;x;VD9aw?8uoCxR74E}oJb*QL2y5{O z*5NU%#}n9qr?3&vU=yChX1stccnMqa3bx@jY{whefw!;|?_d|+!)|8L@AU(S(HZwR6=D`MK#nwP1Hsm)I)tVL?bjo zQ#3~lv_fmNMLTprM|4IPbVGOaL@)F~U-ZWS3_>KLFa*O8jS(1$Q5cOe7>jWjk9bVP zWK6*{Ovg;j!W_)S)tHZKa4oLG^|%3xaT9LFEw~lSkY##6He^RmY_dxpb;9QDVm`LTB0@DpdH$yBRZiAx}rOJ zpci_hFZy8s1|kxJF$6;qjo}!H7>q_N#v%^mF#!`X2~#i?(=h|HFdK6*5A(4A*J2^A z$097o4Sxiur8i>$b)>y zkAf(KB8WgS6h}#vLK&1rc~n3pR7O=)Lk-kKZPY@fE(tH~1Fc;d}gmAMq1@#xM94zu|ZMfj{vV{>DGJEOWr+xB^$=Dx^U= zq(??%LKb92cH}@V-VH8186hjG=L}`>kIh035R6-S0MRn9bE!0L`)I$R_ zL}N5TGc-p_v_c!SMSFBWCv-+vbVCpHL~ry#KlH~y48mYUVJL=SI7T1_qY#TRh{HHc zKs+X4GNxi0W?&{}V-DuwYAnDtScvPe2shwH+=L~#1xv9E%W*qa;7+W>-B^Wtu^RVd z4Iac=JdAaC6zlOgHsDG8e-zx)5*Sz%MZws%ZQHhO+qR9##J25ZV%xTD+nV%!=vsBY zVb|S=P1u61*p408h27YTeK>%FIE*7WhT}MiQ#gaOIFAdsgv+>!Yq)`%xQ#owhx>Sl zM|gs#c#ao%h1YnCcldyh_>3?3hVS@^U-*Ln;r|i{fe{qJ5CS0)8etF);Smv$5Cu^Y z9Wf9Ku@M*XkN^ph7)g)}$&nJNkOpay9vP4cnUNLQkOMi98+niq`B4ysPy|I$93@Z+ zrBN2;PyrQD8C6gX)ln0*PzQBU9}Un5jnNd%&;l*d8g0-H?a>jP&;?!59X-$sz0nu_ zFaQHF7(*}&!!ZK?ViZPWEXH91CSo$CU>c@lCT3v{=3+h;U=bE$DVAXcR$?{QU>(+D z12$qawqP5!V<&cD5B6d|4&V?D<0y{d1Ww{K&fpx*<03BM3a;WhZr~Pf<1X&u0UqKp zp5Pgt<0W3<4c_8CKHw8R<14=52Y%u={vcq4zXU=M1VwO!Kq!PpScF3aL_}mnK{P~1 zOvFMQ#6^50Kq4eYQY1qPq(o|@K{}*IMr1-3WJPx5KrZA)UgSdo6hvVZK`|6ZNt8kv zltp<|KqXX0Ra8R_)I@F6K|Rz*Lo`AYG(~f?Kr6IHTeL$5bVO%#K{s?qPxL|`^hJLR zz#t69Pz=LA7=e)(g)tb5@tA-~n2f2Ih8dWN*_eZQn2&{6ge6#t-DeaR^6n6vuG_r*Il)aSj)75tnfV*Ki#-aSL~F7x(c1kMI~z z@eD8U60h+F@9-WU@d;n>72oj#zwjFYBK{>H0wV~5Avi)J6v7}Z!XpAAAu^&O8e$+O zVj~XXAwCi!5t1M&k|PCDAvMw>9Wo#zG9wGJAvp)iV~7)qcdN}~+Q zp*$+05~`pos-p&Kp*HHG9vYw_8lwrCp*dQj722RJ+M@$Hp)fQ49$C0K^#Scz3wgSA+X|F998 zumxMO9XqfKyRjGhZ~zB!7)Njn$8i#;a0X{_9v5&4mvI%>a054S8+ULI_wf*q@B~ls z953(+ukjY|@Btt38DH=X-|-W_@CN}R{Us0rBPfC)1VSP-!XO;NBO)Rp3Zf!9Vjvb` zBQD}00TLoHk{}t9BPCKH4bmb#G9VK&BP+5Y2XZ1e@*p4bqaX^Q2#TUON}v=#AHmtG)%`#%)%VZ#e6KlA}q#IEW-+{#A>X;I;_VAY{X`4 z!8UBiPVB-S?8SZ@z#$yQQ5?ewoWyCI!8x4AMO?xaT*Y!81I^ zOT5Axyv2Kbz$bjhSA4?{{KRkkLBPm=34|aBir@%=Pza5%2!{xWh{%Y7Xo!xOh=n+a zi}*-@L`aOJNQM+hiPT7gbV!ek$b>A&itNaNT*!^Q$cF+bh{7m>VknN1D1|a8i}I*| zN~nygsD>J-iQ1@xdZ>?vXoMzcisop6R%ng3Xon8yh|cJOZs?Al=!HJ$i~bmZK^Tmo z7>0i^0wXaBV=xxuF#(e>8B;M0GcXggF$eQ79}BSvORyBnu>z~G8f&o*|6v0*VKcU3 z8+KqPc4H6rVLuMy5RTv|j^hMQ;WWO7Vh9K?&AR-;W3`#8D8Ke zUgHhk;XOX$6TaXpzT*de;Wq+A`Aa|qMi2x;aD+rCgh5z@M+8JdWJEBFV=wmM01o0Xj^G%M<0MYu49?;_F5nU_<0`J<25#au?%*Eo;~^g537+CPUf>m8 z<1OCd13uz2zTg|a<0pRM4+2E}OCSVBPy|B=ghXhBK{$j*L_|UqL`8JOKrF;YT*N~H zBt&8)K{6yqN~A&>q(ypUKqh2HR%AmCs}6h(2AKq-_)S(HNsR77P| zK{ZrIP1Hgi)J1(XKqE9pQ#3;hv_xyPK|8cZM|46LbVYacKri%0U-ZKO48&jz!7vQR z2>gpt7>%(QhY6U7$(Vv^n2wp4g*lju`B;EOSd67uh80+e)mVddSdR_Zh|So7ZP<>T z*o8gVi~Tr&LpY41IEE8AiPJcPb2yKSxP&XXitD(6Teyw8xQ7RLh{t$>XLyd6c!f83 zi}(0|Pxy?l_=X?&iQo8xfYJUE2tg1O!4U$X5E@|-4iOOXFOvfY2pGU?71=2Yq9HnB zA{OExF5)8r5+N~?A{kO3B~l{|(jh%EA``M8E3zX8av?YJA|DE%APS=hilI14q7=%Y zEXtz-Dxor}q8e(TCTgP&>Y+Xwq7j;)DVn1NTA?-Cq8&P*BRZoCx}iIIq8Iw0FZyEu z24OIUVi^9x2#mxijKNrp#{^8mWK6|0%)m^{#vIJUd@RHwEWuJN#|o^%YOKXN{D%$L zgw5EBZPVATeyR}xQ_>TgvWS_ zXLx~^c#SuBhxho1Pxykb_>Ld=h2IDe{VxF#7(oyW!4VRn5C&lp9uW`;kr5Tq5Cbt0 z8*va1@sSXTkOWDQ94U|rsgV}xkO3Ky8Cj4G*^v{ukOz5@9|cedg;5m6Py!`U8f8!p zfti^i#hmF{T zE!c|f*nwTxjlI~112~AoID%t1j*~crGdPR$xPVKzjH|eY8@P$vxPyDRkB4}KCwPkI zc!5`VjkkD*5BP}B_=0cvj-U92KL`-xFM$vkK@kig5E7vg2H_AM5fKSd5Eao81F;Yr zaS;y*kPwNH1j&#bDUk|kkQV8Y0hy2)S&c0;NzIWl;_l zP!W|;1=Ua;HBk$7P#5*l0FBTXP0R;u5alDz4)OZs9iW;vOF0As*uip5ZxO z;uYTDE#Bh;KH)RI;v0V8Cw}7(0>=DHAOt~B1V;#jLTH3VI7C21L`D=uLv+MMEW|-v z#76=oLSiIEGNeFCq(&N~LwaOHCS*ZYWJeC&)J7fDLwz(vBQ!x%G)D`xLTj`|J9I!tbVe6+`^(=?{=4g*=!HJ$i~bmZ zK^Tmo7>0i^0wXaBV=xxuF#(e>8B;M0GcXggF$eQ79}BSvORyBnu>z~G8f&o*|6v0* zVKcU38+KqPc4H6rVLuMy5RTv|j^hMQ;WWO7Vh9K?&AR-;W3`# z8D8KeUgHhk;XOX$6TaXpzT*de;Wq-r`b$6rMi2x;aD+rCgh5z@M+8JdWJEBFV=wmM01o0Xj^G%M<0MYu49?;_F5nU_<0`J<25#au?%*Eo;~^g537+CP zUf>m8<1OCd13uz2zTg|a<0pRM4+6ygOCSVBPy|B=ghXhBK{$j*L_|UqL`8JOKrF;Y zT*N~HBt&8)K{6yqN~A&>q(ypUKqh2HR%AmCs}6h(2AKq-_)S(HNs zR77P|K{ZrIP1Hgi)J1(XKqE9pQ#3;hv_xyPK|8cZM|46LbVYacKri%0U-ZKO48&jz z!7vQR2>gpt7>%(QhY6U7$(Vv^n2wp4g*lju`B;EOSd67uh80+e)mVddSdR_Zh|So7 zZP<>T*o8gVi~Tr&LpY41IEE8AiPJcPb2yKSxP&XXitD(6Teyw8xQ7RLh{t$>XLyd6 zc!f83i}(0|Pxy?l_=X?&iQo8xfN}m32tg1O!4U$X5E@|-4iOL$kr4&a5FIfQ3vmz^ z@sR+DkQhmk3@MNjsgVZhkRBP430aU8*^vXekQ;fC4+T&Vg;4~>P#h&u3T03hC&g4js@DozVr|&>cO|3w_WR{V@Q8Fc?EI z4F6yRMq(7kU@XRC0w!THreYdqU?yf`4(4G#7Ge>WU@4Yk1y*4-)?yw0!v<`^W^Bba z?7&X!#vbg$ejLOh9Klf>#|fOmX`ID5T);(K#uZ${b=<@)+`(Pk#{)dVV?4z(yueGm z#v8oDdwj$ve8E?I#}E9%Zv=?@mw*V2AP9!w2#HV#gRlsX2#AEph>B>4ftZMmIEaV% zNQgv8f}}`}6i9{CNQ-pHfQ-nDEXaoJ$cbFYgS^O(0w{#SD2iezfs!bVGAM`gsEA6a zf~u&F8mNWZsEc}NfQD#{CTND{Xo*&6gSKdo4(No==!$OWfu87%KIn)37>Gd_f}t3W zfAB9xVl>8J9L8fJCSeMuVmfAE7G`5E=3xOAVlkFr8J1%uR$&d+VmN9!7&`iNu0tNoW*%uz$IM9Rb0aj+{A6%!9Co^Lp;J0JjHXoz$?7Q zTfD;ue8gvb!8d%zPyE6k1c>*SKnRSW2!;>{iO>jxa0rixh=eGJis*=eScr|dh=&A7 zh{Q;OWJr#bNQE>=i}c8VOvsF^$c7xqiQLG8e8`W2D1;&?isC4NQYekGD2EEDh{~vf zYN(EysD(PHi~4AQMre$tXoePOiPmU?c4&`|=!7olitgxvUg(X!=!XFqh`|_wVHl1P z_!pxv8e=gI6EG2zF$L2w9WyZtb1)b4u>gy(7)!AXE3gu)u?Fj~9viR`o3RDkupK+G z3wy8^`*8q=a2Q8%3@30Br*Q`7a2^+N30H6x*Kq^4a2t1V4-fDVkMRW0@EkAk3UBZh z@9_bj@EKq64L|S`zwrkFe@BLqSrG{PbrA|N6nBMPD+I$|Og;vg>KBLNa2 zF_Iz~QXnN#BMs6aJu)H_vLGw6BL{LJH}WDM3ZNhgqX>$jI7*@v%AhRDqXH_SGOD5) zYM>@+qYmn!J{qDCnxH9~qXk-_HQJ&bI-nyuqYJvBJ9?rQ`k*iRV*mzWFot3n{=o>0 z#3+oxSd7O6Ou}SL#Wc*oOw7g{%)@*v#3C%gQY^;`tio!n#X9_l4cLUu*otk~ft}cm zJ=ll+IEX_yf}=Q&6F7y_IE!<*fQz_{E4YU1xQSc1gS)to2Y7_Xc#3CuftPrVH+YBl z_=r#Vg0J|FANYme2$0|}0TCEM5DdW)5}^iB~cn>P!8o$5tUE{RZ$%^ zPz$wD7xmBp4bd1)&phJIE6Dfi}SdEOSp`yxP}|JiQBk?d$^B>c!Vc-isyKNS9p!Lc!v-8 zh|l5&1MkQrH#4LOh#xseC?kRJt62t`m7#ZdyKP#R@X4i!)ll~D!NP#rZ< z3w2Nz_0a&0&=^h83@y+StkJp30=??-O&TR&>MZx4+Ag|gE0idFdQTBFGgWB z#$p^MU?L`C3Z`K?W?~lRU@qok0Ty8~mSP!JU?o;#4c1{jHee$*V+*!nJ9c6h_Fyme z;{XofFplCFPT(X?;|$K>JTBrAuHY)J;|6ZwHtymc9^fG!;|ZSOIbPxw-rz0X;{!h7 zGrr;*e&8p5;|~HR`b!`LK~Mxo2!ujtghe<+Ktx1F6huRG#6&E_L0rT~0wh9WBt@~5+Wliq9F!iA~xb69^xY*5+MnaA~{kZ z6;dND(jfyfA~Uie8?qxOav=}$B0mbC5DKFxilGEbqBP2&9Ll32DxnIhqB?4z7HXp| z>Y)J|qA{AF8JeRdTA>ZvqCGmG6FQ?Sx}gVpqBr`WANpe;24M(>VmSW6zZi+p7=v*b zkBOLsDVU1sn1NZCjk%bI1z3p1Sb}9(j+I!2HCT)F_zxSg30trg+pzYy&_ zqX8PBF`A+oTA(FbqYc`jJvyQjx}Yn%qX&ASH~OL<24EltV+e*}I7Z-KjKXM)#W+mB zL`=pMOv7}{#4OCgT+GJ;EW%TK!CSn?2YkY3e8o5X zz)$?f9|TPLmp}-Dpa_l-2!+rHi*Sg5h=`0Rh=%BhiCBn(xQLGgNQA^lieyNElt_&< zNcWe&i@5YUBQhZivLZWjAQy5YFY=)P3ZgKIpcsmyBub$S%A!0fpb{#hDypFdYN9sk zpdRX@AsV3xnxZ*cpcPu9E!v?2I-)bWpc}fQCwid|`l3GuU=RjlD2Cx5jKD~Y!WfLj zcuc?~OvY49!wk&CY|Ozt%*R43!V)aSa;(5Atj1cb!++R-P1uaB*oGb0iQU+Peb|qK zID{iOisLweQ#g&YIEM?kh|9QwYq*Y^xP?2oi~D$hM|g~$&mu7 zkQ!-`4jGUUnUMwAkR3UZ3we+i`B4CcP#8r~3?)z!rBMduP#zUg2~|)P)lmbrP#bko z4-L=|jnM?n&>St%3T@C9?a=|9&>3CP4L#5kz0n8#&>sUa2tzOw!|@OP#Yl|C7>vVs zOvEHi!BkAg49vo8%*8w`z(Op>5-h`Vti&p;!CI`xf7pmk*n+Ltjvd&A-PntLIDmsV zj3YRP<2Z>^ID@k|j|;ej%eabbxPhCvjXSu9`*?^)c!H;Rju&`^*LaI}_<)c2j4$|x z@A!#d_=5n+{}Kp+5fs4?0wEC^VGs`C5fPCP1yK& z4bTXU(G<n##$f^` zVlt*+8m40=W?>HIVm=mN5f)=9mSF`}Vl~!a9oAz5HexfjU>mk$Cw5^E_F_K{;1CYu zD30L-PU1Aq;2h55A}-+yuHrgw;1+JghK>GL}WxkG(<;C#6ldzMSLVcA|ysqBtr_ML~5i# zI;2NNWI`5XMRw#sF62gDMSl#yAPmM(48uPdfsq)6F&K;Sn1D%` zjH#H08JLOLn1gwkkA+x-C0L5(SbZ|F8j@uo+vi4Lh(CyRirRupb9;2uE-f z$8iFua2jWE4i|6{mvIHxa2+>s3wLlA_wfLa@EA|=3@`8!uki-&@E#xW319FP-|+*# z@EZYA{v{v+BM5>aI6@*6!XPZdBLX5JGNK|HVjw1BBM#yrJ`y4kk{~IPBLz|+HPRv- zG9V)|BMY)2J8~iy@*pqrqW}t_Fp8oWN}wc4qYTQSJSw6Rs-P;WqXufBHtM1t8lWK> zqY0X!Ia;C>+Mq4kqXRmjGrFQ1dY~tIqYwI_KL%nDhF~a$;~)Hskr<6J7>Dtgh)I}& zshEx#n1$Jxi+Napg;`(jq-F zAQLhpE3zR6aw0eKARqFhAPS)filR75pcG1@EXtt*Dxxx~pc<;9CTgJ$>Y_dxpb;9Q zDVm`LTB0@DpdH$yBRZiAx}rOJpci_hFZy8s24XOVU>JsD1pdV+jK)}u!vsvkWK6*{ zOvg;j!W_)Sd@R5sEXGnS!wRg#YOKLJtj7jy#Aa;4Hf+aE?7|-G#eN*XAsoh09K#8m z#A%$tIh@BuT*4Jx#dX}kE!@Uk+`|Jr#A7_cGd#yjyuus2#e00fCw#_Ne8Ug?#BcmT zz|?;Ugdhlt;0S?G2#v4^hX{y>$cTbyh>nw!YG1bD2|dSg)%6M@~D7HsEn$ph8n1e+NgtisE>wdgeGW; z=4gRdXpOdLhYsk7&gg<}=#HM~g+Azu{uqEk7>uD9hJP>uBQXkNFc#x60h2HpQ!x!Q zFcY&e2lFr=3$X}GuoTO&0;{kZYq1XhVFNZ{Gqz$Ic3>xVV-NOWKMvv$j^HSc;{;CO zG|u82F5n_A;|i|fI&R_??%*!&;{hJwF`nWXUf?BO;|<>7JwDHv**j zOF#rh5ClVTghVKWL0E)G1Vln)L`5{jKup9&9K=I>Bt#-4K~f|~3Zz16q(wSpKt^On z7Gy(qo4b(zy)I~isKtnV}6Es6} zv_vbkL0hy(2XsPbbVWDxKu`2WAM`_i48$M|!B7mxKlm3TF&bkq4&yNqlQ0ESF9 z3$rm7^RNI5u^3CR49l?+tFQ)Zu^#_nBQ{|RwqiSWU>9~{FZSU84&pG5;24hMBu?QB z&f+{S;1Vw5Dz4!MZsIoX;2!SdAs*ogp5i%P;1youE#Bb+KH@XJ;2XZh7&l6(>Q~3 zIFF0Cge$m;>$rhixQ)BGhX;6w$9RHgc#fBNg*SMM_xONM_>8akh9CHe-}r-o>HZQ3 zK@b$d5dxtQ8etI*5fBlP5e3l@9WfCLaS#{rkpPL17)g-~DUcGWkp}6I9vP7dS&$Xk zkpsDq8+nlr1yB%$Q3SPVjcd&25iD+Y{fS0z)tMO9_+(@9K<0U!BHH?37o=doW(g@ zz(rif6385B$P!1W5mvfC!8r z2!`MYiBJfGun3O`h=j<9ifD*|n23!yh==${h(t(&q)3hwNQKl$i*(3QbD2MW>h)Sq}s;G_{sD;|7i+X5)hG>i?Xolu!iB@QX zwrGzI=!DMbif-tEp6HD}=!gCoh(Q>Fp%{*T@GnMUG{#^Y#$zHTVG5>VI%Z%NW@9eq zVF4CmF_vH%mSZJWVGY(|J^sT+Y{C|7#dhq#F6_o$?85;Z#917bJi-$^#dEyCE4;>Ayu$~4#AkfLH+;uW{K6ju$ncjy2#lZz zh7bse&h>f_2hXhE7#7Kf*J67o#v5V=)dBFcFh61=BDcGcgNuFcBA#vcUC_?JKk zf}jYF5D10P2#autfQX2UD2RsWh>2K;gSd!~1W1I$NQz`gfs{y%G)RZ^$cRkHf~?4n z9LR;-$cua^fPyHDA}EI9D2Y-igR&@(3aEt2sETT+ftsj|I;e;GXoyB=f~IJW7HEam zXp45}fR5;lF6f5t=!stFgTCmG0T_hA7>Z%|2O}^Nqc8?zF&+~z36n7u(=Y=wF&lF* z5A(4Qi?9Ssu^cO~3ahae>+l~oU=ucDE4E<=c49a7U?2A5AP(UOj^a2@;1o{dEY9Hq zF5)t-;2N&uCT`&l?&3Zk;1M3kIh035R6-S0MRn9bE!0L`)I$R_L}N5TGc-p_v_c!S zMSFBWCv-+vbVCpHL~ry#KlH~y48jl$#c=$Ce=!oHF$Uu>9uqMMQ!o|NF$1$O8*?!a z3$PH2u>{Mo94oO3Yp@pU@gFu~6SiP0wqpl&VK??-9}eIk4&w-p;W$p>6wcr*&f@|u z;WDn`8gAewZsQK_;XWSX5uV^Fp5p~x;Wggk9X{YAKI03%;X8if7yckX=D!3&U<5@l zgg{7yMi_)cctk`bL_t(UM-0S5Y{W%8BtSwWMiL}La->8mq(NGwM+RgkMio>;b<{*H)InX;M*}oMV>CrGv_MO=MjNz4 zdvru6bU{~iM-TKuZ}de!48TAP#t;m{aE!pe7=_Uoi*cBMiI|Kjn1<bRDUlj!kPhjQ5t)z$S&C1yLA9Pz=RU5~WZEWlWO+h8T#6*ocF8h>wIwgd|9cgh7u@=(kO#+D36M$ges_t>ZpNQsExX)hX!bf#%O|OXpWX>g*Ir5_UM34 z=!~xDh92mN-sppV=#POIgdrG;;rIvtVkAam48~zRCSnq%U@E3#24-P4=3*WeU?CP` z36^0wR$>*_U@g|;KWxM%Y{6D+#}4emZtTTA9Kb;w#t|IDah${{oWWU~#|2!%Wn9HI z+`vuT#vRI?~h>LhgfP_elBuIwjNQqQPgS1GG49JAc$ck*pft<*VJjjRq zD2PHRf}$vn5-5ezD2sBafQqP$DyW9)sEJyrgSx1X255xFXo_ZNftF~EHfV?T=!j0} zg0AR}9_WSM=!6T7end$At}a0rKS6vuD^Cvh5Qa1Q5j5tncUS8*LT za0|C_7x(Z05AhgJ@C?uK60h(EZ}A=<@Cl#s72og!Kk*xX5HR~+0wD;3A~-@I6hb2` z!XW}8A~K>N8lod6Vj&LVB0drz5fURQk|70BA~n(=9nvEsG9e4HB0F**7jh#n@}U3< zqA-e}7>c7LN}&wOqC6^~5-OuAs-XsIqBiQF9_phZ8lefAqB&Zi6dZ7>cqCW;;5C&r?hT$KKz(|b37>vbuOu!^e##Bth49vuA%)va&$3iT^5-i1X ztiUR)##*eyf7pOc*o>{%h8@_6-PnVD*pGuagd;eL<2Zp+IE}M7hYPrf%eaDTxQ?5+ zg*&*5`*?syc#Nlbh8K8=*LZ_>c#n_xgfIAt@A!dV_>BNL{t^&@5d^^y93c@3VGtJK z5do198Bq}pF%T265eM-Q9|@5NNstuDkpiiZ8flRZ8ITc~kpQd z7)4PGB~TKjQ3mBu9u-juRZtbxQ3JJ58+B0+4bTvc(FD!V94*lbZO|6&(E**%8C}s0 zJ@elsRNQ}l9jKg?L#3W3?R7}SV%))HU#XKy)LM+A-EW>iF z#44=8TCB%^*oaNog00w&9oU84*o%EQfP*-UBRGcRIEhm@gR?k~3%G>KxQc7Ift$FE zJGh7Yc!)=Mf~RzZMq@0-VFD&%GNxb}reh{%VGibEJ{DjR7Go)vVFgxV zHP&Dq)?))UVl%d28@6L7c3}_pVm}Vx5Dw!gj^PAO;xx|S9M0n+F5wEU;yP~N7H;D% z?%@F*;xV4!8J^=MUf~Vi;ypg#6F%cBzTpRc;y3;vV6MLeLJ$N+aD+f8ghp6|Lj*)b zWJEzUL`O`-LL9_Jd?Y|3Bt}vsLkgrsYNSCrq(??%LKb92cH}@V-VH80z z6h}#vLK&1rc~n3pR7O=)Lk-kKZPYn_kfJvB)shEZtn2Fh#gL#;bg;<0oSc>IXfmK+I zwOEJ$umPK}8C$UpJFpYGu?PFG9|v&=M{pF!aRR4s8fS417jO}maRt|K9XD|ccW@W? z@c@tT7*FvGFYpqt@doek9v|@uU+@**@dLl`8v%0vB_IML2!bIvLLwBxAS}Wo0wN(Y zq9Ph%ASPlX4&os`5+V_jASsd~1yUh3(jpx)AR{s(3$h_Qav~SY^SRpdlKg37VlfTA~%&pe@>?13IBIx}qC;peK5x z5Bi}$24WC~U?_&;AN-4v7>zL)hw+$*NtlAEn2s5kh1r;kd02pjSd1lDhUHj^Rak?y zSdag(5u30DTd^HGunW7f7yEDk2XPoja16(B5~pwmXK@}Ea0!=j71wYBH*p(xa1ZzK z5RdQ#Pw^Zt@CvW-7Vq!@AMqJq@D1Pb6Tk2W0rLDM5CS78f*}M#A~eDv9Ks_aA|VQ* zB06Fq7GfhV;voSNA~BL68ImI3Pa##oHQ1Wd$aOu;lv$4tz^oWJ~C#Ld<7u>gy(7)!AXE3gu) zu?Fj~9viR`o3RDkupK+G3wy8^`*8q=a2Q8%3@30Br*Q`7a2^+N30H6x*Kq^4a2t1V z4-fDVkMRW0@EkAk3UBZh@9_bj@EKq64L|S`zwrkF^Zq3ef*>e@BLqSrG{PbrA|N6n zBMPD+I$|Og;vg>KBLNa2F_Iz~QXnN#BMs6aJu)H_vLGw6BL{LJH}WDM3ZNhgqX>$j zI7*@v%AhRDqXH_SGOD5)YM>@+qYmn!J{qDCnxH9~qXk-_HQJ&bI-nyuqYJvBJ9?rQ z`k*iRV*mzWFot3n{=o>0#3+oxSd7O6Ou}SL#Wc*oOw7g{%)@*v#3C%gQY^;`tio!n z#X9_l4cLUu*otk~ft}cmJ=ll+IEX_yf}=Q&6F7y_IE!<*fQz_{E4YU1xQSc1gS)to z2Y7_Xc#3CuftPrVH+YBl_=r#Vg0J|FANYme2$1hD0TCEM5DdW)5}^i zB~cn>P!8o$5tUE{RZ$%^Pz$wD7xmBp4bd1)&4F%b)K5Et>00Ev(o zNs$aGkP@kp2I-I<8IcKDkQLdH1G$hJd65qVP!NSt1jSGsB~c1xP!{D;0hLf0RZ$H! zP!qLL2lY@N4bccq&=k$l0MjcJ<$t&&=>tN0D~|XLoo~^FcPCN z2IDXu6EO)>Fcs4=1G6w2b1@GKun>!}1k11-E3pb|uommF0h_QHTd@s0uoJtn2m7!e z2XP2Ta1_UJ0;g~qXK@Y}a1obr1=nyLH}Mz##%5+Wliq9F!iA~xb69^xY*5+Mna zA~{kZ6;dND(jfyfA~Uie8?qxOav=}$B0mbC5DKFxilGEbqBP2&9Ll32DxnIhqB?4z z7HXp|>Y)J|qA{AF8JeRdTA>ZvqCGmG6FQ?Sx}gVpqBr`WANpe;24M(>VmL-%6h>n# z#$f^`Vlt*+8m40=W?>HIVm=mN5f)=9mSF`}Vl~!a9oAzbHen04Vmo$V7j|PW_Tc~y z;xLZj7>?s4PT>sB;yfI8Cj7HIgk^%kq7yZ9|cheMNkyQQ39n<8f8%q6;KhCQ3cgd9W_x4 zbx;@e(EyFm7){X(EzlCJ(FX0%9v#sMUC8B;M0GcXggF$eQ79}BSvORyBnu>z~G8f&o*8?X_Zu?5?(9XqiLd$1S#aR7&K z7)NmoCvXy{aR%pb9v5*5S8x^AaRYzh7H;DX?%_WE!9zU86FkFnyu>TK!CSn?2YkY3 ze8o5Xz)$?bZ~Q@^A^`+JPy|N^ghFV9ML0x2L_|guL_>7ML@dNXT*OBLBtl{&MKYv7 zN~A^_q(gdSL?&cGR%AyG(26hm>8L@AU(S(HZwR6=D`MK#nwP1Hsm z)I)tVL?bjoQ#3~lv_fmNMLTprM|4IPbVGOaL@)F~U-ZWS48mXx#W0M(NQ}l9jKg?L z#3W3?R7}SV%))HU#XKy)LM+A-EW>iF#44=8TCB$gY{F)2#Ww7~PVB}W?8AN>#33BP zQ5?q!oWg0G#W`HSMO?-eT*GzT#9#Ouw{aKu@Bshd5gy|yp5X;v;x*pj9p2+3KH&?# z;yZreU;M&<_=CVj0|WO+h8T#6*ocF8h>wIwgd|9cgh7u@=(kO#+D36M$ges_t>ZpNQsExX) zhX!bf#%O|OXpWX>g*Ir5_UM34=!~xDh92mN-sppV=#POIgdrG;;TVBY7>%(QhY6U7 z$(Vv^n2wp4g*lju`B;EOSd67uh80+e)mVddSdWd^ge};L?bv}`*p0o|hXXi>!#ILt zIF6Gzg)=yd^SFRZxQwf~h8wtvTlgDya2NOS01xp9Pw*7a@dB^#8gKCqAMg>M@de-T z9Y66ee&as`Di%Os1Vu1}KuCl}7=%N3L_{P+K~zLX48%fg#6>(LKtd!&5+p-%q(myD zL0Y6o24q5JWJNaQKu+XF9^^xQ6ht8uK~WS(36w%9L&RfEX1!lfdU=~{vhz&0D>SGf+HkCAq>JIJR%?xA|ooIAqHY1HsT;2 z;v*pvAqkQqIZ_}MQX?(WApQKK@kig5E7vg2H_AM5fKSd5Eao81F;YraS;y* zkPwNH1j&#bDUk|kkQV8Y0hy2)S&c0;NzIWl;_lP!W|; z1=Ua;HBk$7P#5*l0FBTXP03M4JFyFU zuowGr0EciGM{x`%a1y6+2Ip`d7jX$!a23~a1ApNbZsQK_;XeMsLp;V4Ji~Lm#4EhP zTfD~ye8OjZ#W(!GPyE7f{6V1k0R%x%1V;#jLTH3VI7C21L`D=uLv+MMEW|-v#76=o zLSiIEGNeFCq(&N~LwaOHCS*ZYWJeC&)J7fDLwz(vBQ!x%G)D`xLTj`|J9I!tbVe6+LwEEJ43h=X{DkAz5s zBuI+nNP$#HjkHLI49JMg$bxLhj-1GaJjjduD1bsJjG`!p5-5q%D1&k+kBX>-DyWL; zsDWCjjk>6Z255-JXo6;Fj+SVJHfW3X=zvb>jIQX09_WeQ=!1UfkAWD3AsC9`7=ck3 zjjf);Kk+Yq<39vi7(ieIMKFXwNQ6chghO~lL?lE(R76J%#6oPuMLZ-x zLL^2KBtvqfL@J~~TBJt?WI|?SMKPUJ=&5&nckOf(h9XXH-xsez7Pyhu{7)4MF#ZeNaPzGgD9u-gtl~EPd zPy;nl8+A|*_0bTG&;(7<94*iat17Xc!A&itNaNT*!^Q$cF+bh{7m>VknN1D1|a8i}I*|N~nygsD>J-iQ1@xdZ>?v zXoMzcisop6R%ng3Xon8yh|cJOZs?Al=!HJ$i~bmZK^Tmo7={rTiP0E?aTt$@n1m^q zis_hvS(uHvn1=;eh{affWmt}tScNrMi}l!mP1uaB*oGb0iQU+Peb|qKID{iOisLwe zQ#g&YIEM?kh|9QwYq*Y^_zQpIHtymc9^fB5!eczeGrYh{yv7^6!+U(hCw#$Ie8&&` zi(mK;e-L#-4=umxMO9XqfKyRjGhZ~zB!7)Njn$8i#; za0X{_9v5&4mvI%>a054S3xDGd?&3Zk;2|F237+CPUf>m8<1OCd13uz2zTg|a<0t;b zZ~TWqy8{S}pa_N#2#L@LgK!9sh=_zJh>GZlfmn!*xQK@YNQlHpf@DaJlt_g%NQ?By zfK14YtjLBO$cfy@gM7%3f+&O{D2n1Jfl?@qvM7fNsEEp_f@-Lany7_3sEhh&fJSJH zrf7y1Xo=QngLY_-j_8Cg=!)*>fnMm1zUYSm7>L0bf?*hrkr;(B7>n_kfJvB)shEZt zn2Fh#gL#;bg;<0oSc>IXfmK+IwOEG@*oe*8f^FE2o!Esv*o*x*fI~Qpqd0~WIEm9Z zgL62Ki@1aSWf+GY%AvD4w93mhhA|nc-Av$6r7UCc-;v)ePAu*C78B!o6QX>u0Aw4o8 z6S5#HvLgp_Avf|O9}1u#3Zn>$p*TvS6w071%A*1*p)#tX8fu^>YNHP7p*|X-5t^VW znxh3;p*7l~9Xg;RI-?7^p*wn_7y6(t`eOhFVK9bb7)D?uMq>=dVLT>c5~g4(reg+X zVK(Ms9u{CB7GnvPVL4V}71m%a)?))UVKcU38+KqPc4H6rVLuMy5RTv|j^hMQ;WWOFZ_+$xQlyufPe4^kMR`G@B%OK8gK9p@9`0z@C9G-9Y63de&Ij- zLEyas1VJzaM@WQ17=%T5L_j1&MpQ&Y48%li#6dj7M?xe*5+p@(q(Ca9Mp~pp24qBL zWI;A$M^5BI9^^%S6hI*qMo|<)36w->ltDR^M@3XZ6;wra)IcrNMqSiH12jZqG(j^o zM@zIq8?;4xbU-I`Mptx05A;ND^g%!L$3P6i5Ddj|jKC<2##oHQ1Wd$aOu;lv$4tz^ z9L&XhEWjcx#!@W93arFxtid|0$3|?z7Hq|K?7%MU#$N2h0UX3(9KkUh$4Q*R8Jxv= zT)-t<##LOy4cx>n{Ea)fi~D$hhj@f1c#7wEfme8qw|IvS_=wN=f^YbapZFKQ@gD;1 z3m`CpA{as-Btjz$!XZ2&A`+q?DxxC>Vj(u-A|4VTArd1Ak|8-#A{EjgEz%RyhG95HVid+;EXHF3CSfwBVj5;(CT3#} z=3zb-ViA^LDVAdeR$(>PVjVVMBQ|3TwqZMVVi)#cFZSaA4&gA4;uucgBu?WD&fz>R z;u5alDz4)O{=zNX#vRRNBxPXhe zj4QZ?>$r)(@HcMbF7Dw0{=p+W##21Q3%tZ@yumxX$47j^7ktHc{J_8Xh5zsefe!=_ z1i=s-ArT5;5EkJP0g(_HQ4tL>5EHQx2k{Ue36Tg%kQB+00;!N1X^{>YkP(@Y1=)}t zIgtx_kQez;0EJK(MNteTP!gq42IWv56;TOQP!-it1GP{abx{uu&=8H$1kKPKEzt^X z&=&2{0iDnpUC|9a&=bAU2mR0=12G6gFciZv0;4b*V=)dBFcFh61=BDcGcgNuFcjSDh1iITcu0VRNQ@*%hU7?zR7iugNRJH2gv`i_Y{-F} z$c;S6hx{mrLMVcwD2@^+h0-XCa;SicsEjJ8hU%z^TBw7%sE-C{gvMx!W@v$yXpJ^# zhxX`*PUwQJ=pH~o5!b`+h2H3kei(p(7>pqphT#~AQ5b`<7>@~p46IE^znhx53I zOSpooxQ-k63%76^cW@8)@edy2F`nQVp5rB6;SJv6JwD(QKI1FC;Rk-=7k=Xp0v!q< z2!bLwLLd}EBP_xp0wN+Zq97WgBPL=Y4&ov{5+D&0BPo(01yUk4(jXnuBO@{)3$h|R zav&FSBQNry01Bcoil7*Zqa;e949cQBDxeZ7qbjPQ25O=<>YyI#qahlh37VogTA&qL zqb=H@13IEJx}Y1nqbGWy5Bj1%24D~dVMLJ|aMr1}7WJ7l3 zL@wk(UgSps6hdJXMKP2>Nt8wzltXz`L?u)~Ra8d})Ix34MLje?Lo`McG(&T=L@TsG zTeL?9bV6rzMK|<7PxM9~^h19P#2^g8Pz=Wij6&ea0pVa!1VadfL}-LTID|(;L_!oq zMRdeKEW}1!#6tokL}DaCG9*Vzq(T~`MS5gFCS*odWJ3<*L~i6kKIBJ16haXcMRAls zDU?Q8ltTqnL}gS#HB?7U)IuH9MSV0tBQ!=+G(!utL~FD`JG4hfbV3(&MR)W-FZ4!V z#D5e(LL@>GBt>$hKq{n0TBJh;WJG3UK{jMZPUJ!!N9!7&`iNu0tNoW*%uz$IM9Rb0aj+{7*XjXSuD`*?tdc!Vc-isyKN zS9p!Lc!v-8h|lZ1V~p)s1G8CswvTB8lxp*=dH6S|-)x}yhrp*Q-X9|m9`24e_@ zVK_!&6vkjI#$y5|VKSy-8fIW7W@8TKVLldO5td*nmSY80VKvrb9X4PiHe(C6VLNtW z7xrK;_TvB!;V_Qk7*60MPU8&D;XE$l60YDXuHy#&!Y$m!9o)lx{DX&hj3;=8=Xi-% zc!Rfij}Q2S&-jXO_<^7Jh2QvtKu-b)f}jYF5D10P2#autfQX2UD2RsWh>2K;gSd!~ z1W1I$NQz`gfs{y%G)RZ^$cRkHf~?4n9LR;-$cua^fPyHDA}EI9D2Y-igR&@(3aEt2 zsETT+ftsj|I;e;GXoyB=f~IJW7HEamXp45}fR5;lF6f5t=!stFgTCmG0T_hA7>Z#S zfsq)EF&KyOn21T3f~lB}8JLCHn2UK>fQ49$C0K^#Scz3wgSA+X4cLUu*otk~ft}cm zJ=ll+IEX_yf}=Q&6F7y_IE!<*fQz_{E4YU1xQV~;H*VuD?%@Ic!6Q7zQ#`{9yu@p~ z!8^RiM|{E;e8qSCz`yu~|L_Nap9T;F!4MoF5ei`t7U2;Akq{YC5e+dA6R{Bo@em&g zkqAkU6v>eSsgN3Jkq#M<5t)$%*^nJMkqdc{7x_^Dg-{qpQ4A$e5~WcFr+F$hC26vHtB zqc9p{F%A#!ahu?btS72B}`yRaL3 zu@47u5QlLD$8a1caSCT}7UyvRmv9+ZaSb=h=Qnyju?oA*ocdGNPvV$ zj3h{g5jXcPQ{3wV*D1xFWjuI$^(kP2^sDO&7j4G&x z>ZplYsDrwwj|OOj#%PLWXn~e!jW%e9_UMRC=z^~3jvnZR-sp>d7=VEoj3F3?;TVZg z7=y7Gj|rHB$(V|1n1Pv?jX9Wy`B;cWSc0Wkjulvi)mV#l*no}Lj4jxP?bwN3*n_>; zj{`V_!#Ij#IDwNmjWalh^SFphxPq&=jvM$3w{RPGa1ZzK4<6z%p5Pgt<0W3<4c_8C zKHw8R<14=52Y%uge&Y`UJr5uVf+9FVAQVC)EW#lIA|f)PAR3}0CSoBD;vzm0AQ2KH zDUu-tQX)0dARW>pBQhZivLZWjAQy5YFY=)P3ZgKIpcsmyBub$S%A!0fpb{#hDypFd zYN9skpdRX@AsV3xnxZ*cpcPu9E!v?2I-)bWpc}fQCwid|`l3GuU=RjlD28DKMq)I^ zU>wF{A|_!9reZo~U>0U$F6LnY7Gg1$U>TNUC01b#)?z(2U=ucDE4E<=c49a7U?2A5 zAP(UOj^a2@;1o{dEY9HqF5)t-;2N&uCjP?TxQ)BGhX?ovkMI~z@eD8U60h+F@9-WU z@d;n>72oj#|Kb<^!yg2G5kL?GLvVydD1<>+ghvEKLS#fmG{itm#6}#%LwqDeA|ydl zBu5IQLTaQ%I%GgbWJVTbLw4juF62R817Xc!A&itNaNT*!^Q$cF+bh{7m>VknN1D1|a8i}I*|N~nygsD>J-iQ1@x zdZ>?vXoMzcisop6R%ng3Xon8yh|cJOZs?Al=!HJ$i~bmZK^Tmo7={rTiP0E?aTt$@ zn1m^qis_hvS(uHvn1=;eh{affWmt}tScNrMi}l!mP1uaB*oGb0iQU+Peb|qKID{iO zisLweQ#g&YIEM?kh|9QwYq*Y^_zQpIHtymc9^fB5!eczeGrYh{yv7^6!+U(hCw#$I ze8&&`i(mK;e-QX}06`E8!4VRn5C&lp9uW`;kr5Tq5Cbt08*va1@sSXTkOWDQ94U|r zsgV}xkO3Ky8Cj4G*^v{ukOz5@9|cedg;5m6P$GbUBCe!e8f8!p#-4=umxMO9XqfKyRjGhZ~zB! z7)Njn$8i#;a0X{_9v5&4mvI%>a054S3xDGd?&3Zk;2|F237+CPUf>m8<1OCd13uz2 zzTg|a<0t;bZ~TWqZvqI6pa_N#2#L@LgK!9sh=_zJh>GZlfmn!*xQK@YNQlHpf@DaJ zlt_g%NQ?ByfK14YtjLBO$cfy@gM7%3f+&O{D2n1Jfl?@qvM7fNsEEp_f@-Lany7_3 zsEhh&fJSJHrf7y1Xo=QngLY_-j_8Cg=!)*>fnMm1zUYSm7>L0bf?*hrkr;(B7>n_k zfJvB)shEZtn2Fh#gL#;bg;<0oSc>IXfmK+IwOEG@*oe*8f^FE2o!Esv*o*x*fI~Qp zqd0~WIEm9ZgL62Ki@1aSWf+GY%AvD4w93mhhA|nc-Av$6r7UCc-;v)ePAu*C78B!o6 zQX>u0Aw4o86S5#HvLgp_Avf|O9}1u#3Zn>$p*TvS6w071%A*1*p)#tX8fu^>YNHP7 zp*|X-5t^VWnxh3;p*7l~9Xg;RI-?7^p*wn_7y6(t`eOhFVK9bb7)D?uMq>=dVLT>c z5~g4(reg+XVK(Ms9u{CB7GnvPVL4V}71m%a)?))UVKcU38+KqPc4H6rVLuMy5RTv| zj^hMQ;WWOFZ_+$xQlyufPe4^kMR`G@B%OK8gK9p@9`0z@C9G- z9Y63de&Ij-LEv`*1VJzaM@WQ17=%T5L_j1&MpQ&Y48%li#6dj7M?xe*5+p@(q(Ca9 zMp~pp24qBLWI;A$M^5BI9^^%S6hI*qMo|<)36w->ltDR^M@3XZ6;wra)IcrNM%@6W z2MQE8kkh7~s|IL@#%O|OXpWX>g*Ir5_UM34=!~xDh92mN-sppV=#POIgdrG;;TVBY z7>%(QhY6U7$(Vv^n2wp4g*lju`B;EOSd67uh80+e)mVddSdWd^ge};L?bv}`*p0o| zhXXi>!#ILtIF6Gzg)=yd^SFRZxQwf~h8wtvTlgDya2NOS01xp9Pw*7a@dB^#8gKCq zAMg>M@de-T9Y66ee&as`dLKYw1Vu1}KuCl}7=%N3L_{P+K~zLX48%fg#6>(LKtd!& z5+p-%q(myDL0Y6o24q5JWJNaQKu+XF9^^xQ6ht8uK~WS(36w%9L&RfEW{!#!BQ;83ar9vti?KPz(#Dw7Hq?I?8GkY!Cvgg z0UW|%9K|u5z)76O8Jxp;T*M_@!Bt$x4g7^$xQ#owhx_;k5AhgJ@C?uK60h(EZ}A=< z@Cl#s72og!Kk*B{@dtrE1P}y45gZ{93ZW4e;Sd245gAbs4bc%3u@DDw5g!SV2#Jvt z$&dmmks4``4(X8*nUDopksUdZ3%QXO`A`4_Q5Z!~48>6rrBDWCQ63dg36)V5)ldU9 zQ5$to5B1RyjnD*5(Ht$%3a!x=?a%=o(HULP4c*Zbz0e1J(H{da2!k;c!!QCPF&bkq z4&yNqlQ0ESFȽ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�ss^2JO%u9nlG0&=uX$ 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

vf>3lt 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 z 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 z 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

  • k8|_(M+0n_;+uz#Z)_ObDaFg`@kGXZ?Gkl!r1Hs1>NoDmFySk;C(fY%gt9P_VAeVYjS_Y z{vv;=u%?AAkw!8=)Zm&Ab6&-DI^w>Qwxm@YA|0ANkL`vfz2b)*0n9qaG zqV&u~Jgt}spR48`PV5-dg-LQK{<|gm;EBq5_eX!Ri9kWH|MvaX|M<(<;zCoz-fW>* MJNf15>C?`C1i~yASO5S3 literal 0 HcmV?d00001 diff --git a/.doctrees/index.doctree b/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bf81cf3ce301edc0ccb51d1de31880bd6144099d GIT binary patch literal 9021893 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

    x#YT7%pJ1i3heSvgy;a>D_$hnMP|H*%l-?g@uZ9 zGEIE^F>Im616$SlvK)8x*0%Mn(7;s1ivEl*N9m+pl89iWsi-nmivJN*(cUZI#1aY| zwCzc76jN;;N5-=-e>Ya33s`W|wd6r=PkR)-TzTG9fz>8eJzOEjV}08mP5{F0s#cmG zTP=UvT4_Oolja19Pcrihr}>*aapX9!b8_Li0u{{P4l{cSdDODCcdW9?m=3>r>>sV3 zEmqb#R&-XRfd_yKA5;-WBZSq|mnOE2FaZcYS_d31Z}NAZN%`p5V5t^bjC9lh0zPHd zoR(z|s=?(xTeM9zu}d4-sGp@f0{-Nh*5mkJOeP5lHg0*B^h&^TmKPTZd(4Vvgbz7i zbZe4%5W&dVnPkMIi?B1Aokd7BD0n$Llf3Fpnyb;#WOzOj+|leT!YzQo&waP#w}*ex z>?A^K4hDHV!>1_Mo1Fex&T2TfKt)Sdj>Q9ruuzq(#YxwSk^te|nh2i#@pL`^lL%=E z304)s7Ay7nf->sa2qoizk6U}&v-G)>uf)fSVrzX66TH3>CEnq&u=LOpEfB%Uy{T>M z3;XO?ymhTNQ~}m8p3!~7!pK7z6(AUW@snILBk^O_OrKAkD>o0dP+Y&MT0X0W6cd6@ zS;jNb`m!`&;a{5Fri&ZP8}CFhMlTDT)9;L4r9uHV%>gQG$A8i5A3e~*XFwiPk19mB zK~^BpO!))9BbxQqe2Ku0ZVO(}4=ab5FhHlN^5W0i$$o9EwnbOieefj?@ToKvzPr{P zElm%)T;rz9r^0q;UZbP35P_U~)fPCtVJi#7b%-e2Vt(S_vMpiYdm6JU|8ROSoD9wc zel+*=ct->I7{FBPrnZS80}3ptpq1KA;uAQ)*A}3_&E=UkkwXMU2!ernE>*VaS0Z}~S6qp#k!ihIv<%Tc z(TB_+(9B+6E${fO#Oe9yxd4yH4gJ#S6ipo9v)9$%ak3%J>mC9Cfq{FKf`Jldp+DZM z_~01@*xVKr*!({NJl+=gz!eP8X6oRCj6LzTBM`9ak(uL?$9Qxs|RgQgX}^ ziMP@rG6e+|nwPRzOf4p1bWg{kj?hE}H;wj7?h$R6dy_wVzq8g}qO<2-P7@7WRdjQ8 z&1Cq++Z3N^B@h^BNxZaXymcv}dn3G-00|s4k5_VBEw^+rc7DVEDWW~P71c{5;J`+6 z6&^N+F*;WfWmJ%0rIA>G^=!J8TmGXXu|~`a7VLhT9p=Mr7OYk5yj;z1E_QNbcDvXC z5-daO+h$bahQB*1q3;y)qHRVc0RlNHL5s)-#yls}+O&uU6#RsifTFo!bJop&97+>il*OmV|0Ek z;6?!mMq20fGV&iq{}o-+XuzsK!Auv!I?QJ5nkGlr-Xi2CF8Ix8MVoALwvAR`fd}IQ z9*Qq->?j$Bi4fk;dCu&}M_bDh)818%NKI7HieI*!ZXb;iZ zbhEvu`?)S@X_rq57daZISbQamur0b#?4iIiJHuLV$e?9)A%k)!uYl;dxL$w>3u>At zGO25NR`m$ zzCF6JJWDg|{Jf$Sg~m)l^RF9eKHxAqWe(2d8sWv#L_FeGbTc-Uo0m33bW0*^>|EO2Brv+0S>lG9Y;d6wOcIN*=VN zB~O539⁡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%0Dg14IahG7k_pD-#x+y;Q5 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

    6Ngc>*B1UsQ$? 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 z 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∈hr0nkc@K> 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 JSnJo(Y(&z8nhWkW-WFjwKyUmB7U% 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�p(Mr8b}~#5xuz@V0M<2-LlU7H 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Ƚ$rm7^RNI5u^3CR49l?+ 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Ƚ$rm7^RNI5u^3CR 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 literal 0 HcmV?d00001 diff --git a/.doctrees/modules.doctree b/.doctrees/modules.doctree new file mode 100644 index 0000000000000000000000000000000000000000..66da6f6e68827c8b2850954d150d4d20c521b836 GIT binary patch literal 2839 zcmZ8j%WfMt6m@LtWlQoSNf97%i=ar8ps`gHT@+ol=+dYcMG+v2fS_h5kuZmx@)1jm z0PP}y4R9Cse|tDH8c8-FczAhvpXXfipU!{7!=36c9NCf!wYZ>pu5`|94ELk*+^*X8==}s9U|npm&{%mi#)!*-1SqW-OqGUYOnH* z`qZW4J8-WvXV_-#n!Rt37JrVyeT&}<{9fYs8o#HZ*Z4uYsF)E|l2_Yh{Tyi+3YAHp zvzb6p$d>;~L%*PloRyBp%Y9UfqDyEhYCD&D8t+1vi#!Jg?!u@!-3t237gJ_f9xr#o zLDh1rm0Uvi08m>I5C*oB4#JChhYZ1B5UW>1K-Q{Q0^Y$qt&% zS`*uu(p81-i<^QaYX`8lSNFDx3Z2=GXw!X*IQ}L)a)v4^X{r(_jh-83Ys7V&c2w4- zXmqN|_~h?F7-!xjJd+l^!I!Hm+5ZEW6#QJMmP0a?tnDdKGyTi~xGfOwiM76zZz5++$CAveNtvSKCt zH3u4+UWK7yr8bU8_JN_CyWxOS*)BWbge?TB=&18{rPK+XoK5{4?#4INC{z&|hS36& z0a})^lv0XMDAbHFmFXN>F$}z$o&S7p1-_qcZxUvVHiT1^OF$AZKyI0f;i#_shLuib zC5E$mJNHcR&tY5}T?eo_`fPjS-pO#B5&-ZlM|~s`ieV(FntM8DD0hzaE@&Da8kT93 z6L1=^ftxf9u0l7{YK9z94w0|Wz`J2gz0+hZ3cCVW8|A(zNsC8RwGs$G(I_gD!J|r2 zu_3j7Eh;VZxh9Juq3M_{N^Ke0JXt{`bL4}tqQ>hH$%Um;nG$KD?5%hL&JB@_1v4tr z!RV+_Bda+UzDi$kVwtIk$yBnIqu+-ZMCen!ynGN&64?M7H3tf%D1?iD9KQ_Xl9dD$ z!8B7@Rj^@_Oetbdya-RYbEW-dGJ)7$luO68y3l40Iz3LBRRGW=jumK+Lp%DApTGFw zC)9InX4yUSNwPNo-O4xIl3TR%(=u5;N6!x;eKcf3YPutL1~LZJ*?LCl1QD=`icl=8K;N`jjzdu zDpw`M>1$uYMS2-jv%i@ExF{eIY6c86L*X<{3G1i#)I^c6D>bc|m~Qjy2*}`4$wA*G zBH)ZU_;{Q_>zc5F3Q6#WNkg}a`lNY<0IPCV545|m$J7VF_3#1PfnA|;0X8|}sF^biGrS>AkOr{m@D{=afU7hO|8Tk`tzQ-p!`iG} zbkhXJqXhC^64u}R9e-=XAPL;EL{1+ge|Km3bNqkHhc=8hyIY+eWdayU?qRW(BoeRm z>M%DYwH|^88j7iwZA~iGNB4xS_F&86VCA(sbh>39!x;4gyB^=S)$HJTfDx17(E}Xe z0?M?MC@gZo4b%I*k$*w*pW>gO3!Z);9v*8J2&o;mlV(eN*ov!`9X3xCfNGw)b&#iF M*vyS|-TUdq|KnG2ng9R* literal 0 HcmV?d00001 diff --git a/.doctrees/moptipyapps.binpacking2d.doctree b/.doctrees/moptipyapps.binpacking2d.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8a4dcfb55b8c071c5da28aacd0b75be1b1352e49 GIT binary patch literal 1017972 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 HF5UkN67qp! literal 0 HcmV?d00001 diff --git a/.doctrees/moptipyapps.binpacking2d.encodings.doctree b/.doctrees/moptipyapps.binpacking2d.encodings.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7fef2c499851a1ceb8c406cad1847cf73e5f7a1b GIT binary patch literal 62386 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 VxPc&_Bng=-lK~=hHRsU6{|7jcIQjqp literal 0 HcmV?d00001 diff --git a/.doctrees/moptipyapps.binpacking2d.instgen.doctree b/.doctrees/moptipyapps.binpacking2d.instgen.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f28d21525ea7aea56d5022891b043a7a12fd5542 GIT binary patch literal 283418 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

    QYG6fwGN(t9H4Lq=~w89IY{iOGY6^j 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 PMMUyl*zn`9K{NQ@5KC|0 literal 0 HcmV?d00001 diff --git a/.doctrees/moptipyapps.binpacking2d.objectives.doctree b/.doctrees/moptipyapps.binpacking2d.objectives.doctree new file mode 100644 index 0000000000000000000000000000000000000000..49ac42f180f950e3e0ad1fd81d4503437e80e00c GIT binary patch literal 205493 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�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 DEUz(n literal 0 HcmV?d00001 diff --git a/.doctrees/moptipyapps.dynamic_control.controllers.doctree b/.doctrees/moptipyapps.dynamic_control.controllers.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1f7e319ac5883fe52e7ed5f80306f81d87603adf GIT binary patch literal 118591 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%0DfWF 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 literal 0 HcmV?d00001 diff --git a/.doctrees/moptipyapps.order1d.doctree b/.doctrees/moptipyapps.order1d.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2f3d15992316bf3e94520505a041d9d8dfbf5ee0 GIT binary patch literal 110619 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 KX=Vr>EdBpkVw>dv literal 0 HcmV?d00001 diff --git a/.doctrees/moptipyapps.qap.doctree b/.doctrees/moptipyapps.qap.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f355e417a9891881b3726a580751a1cfa294df1b GIT binary patch literal 111438 zcmeIb378yLbuT{JrPeOl@*>MF%NVufnbxdY23clgd66y2#*#OL7}a#wOn0fLyXi&J z7-LLWY(0wPpSTHe2nk7m_wwfp%VRM+Nl3^7WPyYb@*pq9HcLptdqBeDLGpg*E_Ls% zuBxu?8A%4rhg&_>b?-gr+;h%7_ndRjeR$Cum-fu-q5pZSYn6PVbS7ixa;0+4sWrW& zxpKBK?Ud@x$C_JT)qF)W?JcX?r)%X#HS09J9=wsw7mB&6Q)(V>daLO5dZAd$i1tfr zPPSesm;C1WMft_~CC8iT{4#G*y-+VY+E3mk)8$INP?@nSm0IRycEzgL*^~B^)1)S7 zvGAyKhCqpa@wH73<>HDBnCi{^T5s97k3@cfw^+b_*jrdEl$_?_#)R#q?0UUgm}u02 zGvTMPlUsSTE`M0IHMn(NG0T8RsB)!w{melPj`l*>;o!^*Wk-s9p zAiv2wusvU%cD7d=rIJ(Ke!5&exm`ol_zqBO+c}8(b0S8jS_3{;-afxEk?-*q6-qhh zj7B_8*Zft0KYul-bq)Tz7XNL*e_II`kfT~)7^J<06}wPnWXv^+&I>FJ92%qQMaSGDVftTk4v6{bqWxYnK3@@w$d*eyK`%XbJB+7 z?+bLgQNJ0~BZpd%S@5NNjlQaV4FXZx*Uv%G&`8_=Z?#p~|!DJHLiU7Cj zRH{x52-Ga~YmEpqX=e+?LLF0S)yt`3ISY)-rCP??=hRO-PRVlYY#x$RsG4v0TJ^kB zb*utaAWDAVz^^)f#}P zp111+f>l1{RPACBPp1h4dIYRng*Xt7ankO8S5rOuu$T# zaI7ZFz)Vrhnzq46XROnOdOkHu(mi_OA&vEzJjot12SisHIdts=8{F2rVW8AH=!{5Q zJHbem8ihE8Kv14=Nk5))PB1#=F?k@S#MG+Ug`6Y}QHyhLI=|t*A~ZHl!E-Ehepslf z)W99O8h|2RQE^H+=&bQGSOs*IG~5l}$(3#iB%Gu~>o9+et%4i8Wj>o~V2$fwnc4~J zp26nLugqW_sLb?{Kr|hFc_6KI9NOxBEQgV*&07oVPaYVHVI&({`cM%)8za z{8gW+z(iQc#`2cqfpex(EMyDy=2`apX}em&*JV)re6b1Zb}4>ki*WNW8=`Jkp$(ee zbpZe}F~Zy=$2T1L}B#cUh#2Yh*QN`#!0|z5e8r%k==C*q6!<@{fqgT*Q9X zMm!rck@-TBIecxRIn19j=IpT!<}CkU{uTL$4(DI#ZD~IZ9KY}>Sj@GfhJ6&huWqYB zg9Lu3lonsfYQy|)0wOPlpnx&M<>Ys|q45(MjTcbY(PE)Ud|8mh3ZHPIK0o1F5~0$Z zNb#rPq-8^5#LQb}ldX12*d@U9a&qHE*a*7T^3DBa^vgKZ+O+obeQU6i-Bc{tCC55s zR|~dvuv{n??Oy9J88H0OAsf$gjx{z>bsD|aopz&Gw(h8%wu`xPYG2tt1v9Bpwfhb` z^?DhoEZx?0~rsgII|JPMx$D;ICjap z4V#`4EFPFBcT@;jSY7z@E?8-HHJi_*26pa94{jaZF|xC7$L{`&b(>vk*wq&_0mD=d`?YVLxQ?5>JAL!2v^bhRV?q(dfT+QI6kxc*YO#jfJFjAGl_#BNQXarNp zd-`XBdo*w&{WaY!HCX_v}1>re(?syVw@t}*43I_Q*3g`8cpj^LL<9b0#(Ile!N z*DD7~)_$0ceJ{>8to@DNR7n30wr0IhWTo6hxqOlo&yD5ji9*S)m!T<(P(yXv5;0BG zo2tN3QnLnj4h;1T?CRg$YYpt)y{p$cQlT9+P&@3Lw(f`T0jl->UhD27W0_PakM!@{ zzI*4czJb2s9q6imsDG$$_xRw>Op5b~QcIhkBb%nmqsYdnMvChDKa(t`gxg&Xe$kah z{_9c#z1~hZQR=JC8u=Q_T_1oWfzom>MjN5G7#=OEs|CAc+G|aIqq~Iqj@fqU3JmW{ z1r|Mkx0LKLzW-VbZ`nivTeijUj!YKLH1mt$18q#wR}Z?EI{yMX6~0R5wpsz~l$gIA z;2q7w&x8MG;TEQU;e)G7-wnB`$N;j)u}KdPRbl%S>=_%5yc@}pkNwKi z-Yb~%%uY&0@Xu93->wn_+(Wb@@RGu+0i^};0fpirI% zN_D4LEKJeD$;`xkg(+*lUAI%|r#|wLr=NKHGmn4d8?XNOQy=>Ir{DHppLyeZo_WK& zp8nl;eDm?&+Dh==iZ!=j-Cct3rdli1X8_v&_vkl%?(KLNZ*7Hlioeopjg|6^LN5pb zy^XFv^t(^L`QuN&>+I8?`1sdj*`qK|VP2jp)L>r%gA^Q?lNoD2 zhIJD+*@Ezi91@n?SiQQ_MpP4k=QV7i`s`0+WMFik65 zACN{(D{LUG&^oVD{-b_Yl73U5?2bFnbdd|lJ_RuoFvB9z`_p~xaJ z?yCTz?Jb?Q&*Yp+J>R^2A%ade+9PI$5Y<$%JOLls;(Q?oO^I(SMF;+arO@;fF#mJS z+k3nei>TGgrQ!_UO(9YT^(ulsAc|Wjf^1^MfFY13-USXA(_2u;y+r6juu@Mx|AY?D`9lLFUppP|n*`Xj|NZzWJ! z5H3mBhIr;JehWsXbvk{#6ws36Dy+<>F-W1aAW~@!tE+;HBYm2Pg;6k0%17Jx6#gIf zu}O;m2mKZd|BC@~MoMcNQP9O8ogeiC*e%gT-&fo8fJ#`HQN3Zr8(jq)M@LyHUjJB0 zg@j-~P*f>)11722c|%3szwwEcguGCV-pTGGrIH)kMM^c|u?VD3HB6gFK`i7jZI z3_Csvz1C?Kh&xq)jYs5Tes_zz-x0hb^NfOjC-5UIAlOZIrPe6I>4$(~v6w29;7~){ zjhiiqG0IS;1YDY9anmBgv?&U1Az*9Sg=rRGWbsHx4=@4*KS&9aNe?iR%ehYmNm3%V zNC7n1ue5)r2s00XvVbFtfm#zHdMcrwx+B%HX;3C3LA-SpdR zr)LD6bTd6SqFuMs(`o!QbZT@De9IIlqdurVNtMB*(YuuP8PwTdn?_?=bGJVi&WZ?U zY3A8;G>V|n&tk~WoebzF%}3Tr&`zkoPMWB_PALF`X_VORR2|qss~EzP;mIYA9+lF0cS3D*pF87+ybdu z3{sU*6Q#;Zz`Dq(bLEov8I)zj$a-ob)JN3Ng zRmx0O%hThCC9Jpa1o9hN~R->IEQQ6DUSo!mwK&>_R(M;rm5AqcR82ln;C0R*Rf zmGZOTEyP3kueg5;i5;i&1^AP)Ncx(9&xwKs6!Y67)g^c6XQrnLnM%1hGhHucvi4pI zBBuOzvSnoNW)P^$6rFrwDo-)V?Ky-O`)bH$r=t%Tey^X=?HxG>G}hMHPXt(A+gV-J zLS}O+g3g;ip|1EwYPIoZdaE|zp9KaqS=-q0(kzB%S-PKYBNcu^a=?Z2*J!72sn`f{ z9vp4QyFognOpcUE#8Ltg-*SnlOb;w#0b~vP7;?9Aet@fk^!_$clGA&Q`Km$if1%fs z?O~${{w;=)Iae*F9c6$A2>t`K>z3e`_yjkxi=}wwe9L~^f ziCmf|gG4)#C&T+TUrek%Yb-X{WF6#74bKa_*O@@dh*MLGMd*UEeXo^nRIp?q3udr? zU>EXEI$mG`eGDM~h6j)l0%4JikhQYcLf#3bpYVYPkxtm(H#iW?O8yx{o_r5C%yP;# z1|19Vy=D$yDJ3wRGo;A1drb+$fxuX8R6Nrpw`(#+u(G9YLpWC^Ln|ZEN~Bn}OEf!e zrqFihmU4DH)Zv}Y$s3cerlK;pS{zgN&PDWlBOxM zEmG=@qc5$qD8)VT`$~=;35*^s6v{bymc&Qw=m~nJ-VEnt5U0e_X+hLp&bo{SBp{vC zL`i4#NL}sduK;dcW$_?Y7?uK3kGx)KrCVv97lI7esHpeWrgwGJZ~kFxBqATK`=tbY zgDbyDr1tc93sHh1+mfZ1#+lny^vgJ%nYVH9OV8Hx4oEoDejK)!AKmUn+Qw<8IzB=B z`RfmtOHQxVpbR(T2~}@kKW=60NTaQ0quHfWxz4g%G?2W(V|%WtqbS9wwS|#o%idmV zkA!Z#hSWx9)bd}kw(Q-DtOso7NU%j_f#Tvn32?EFDep@kdY&Z(2H#XCpAU3ma-cWw zbZbK2Us98eE)B0|@dX2Z-m){(#ZiV6>VB}p_BcmJ+cfvnyoW#V$M)*yG0{omDP%l> z*KsPF&lw7tP&E$iTvW?(%7SqFh&2S~f+Ja1qw=?XOv5t2(#UiyO!a|8YbRC0~YIVTd;8baAuTR4bvy@I>IJqkD$I-{o&dD>n^zeBgy)hmnVesAX zQ}*r^3*(6B%`3GE*X7h?qq_nB#Ko#iHn@m4TEiN-7vmopPWMFe0%7ECjQD|+OW<6& zJ3?JX&cC|_KeuH13fKqm+nm6@Ca8h=G@5uU*Itqu&UmJH`cU^c9bh;?Q>12W72_`R78gpa0FkDf7Sf_5$K!vfAxrT? zLd8ttTy%Z>lwE8%=J4Kn94V=ktM&03yz%vyHOf@z=q%}*q7GGz)nO>9817sXTv0=3 zSbIsLyIg;!uzoZa>sYRR4VpG4+?U`VUw9&>^OxgC$>Zl1*%0$7Mw!+}iJix{#g8=; z9IO50aS-NU@|KZSWX4a}tSw|ZQ>-xj4>eC8kH;!byL=c;6VB6T;zx;_CoxL$dHTEf zvAUQi4nkM+l%x?17s!7B1sF=sxW6FsdJIg~R}n@LwgtG1*M5U7n>kf*PSZ(06l9TK z$C3G+H&kQ0!vJ(FT~=$kdR&~E&}*8p@?X;WLVYzlo|tR8J%Cb+>yVQAw;eg#b zchw?TZUpb^Q2&Pgpxz|7e~(P0O}+&O+J9UaVVaGaE#n|!NjHu-Wz#AK>kaL*QH5^Q z8kN;>R4u8DT`6SPk){%Q$=pbXo9NpKF2b+`mWamM@^u*i*KGkU8ra+M7o5b#`(My~;qH&L2;>O*Mc3O}sL1H(X;rv5vj#2GK9=wU7 zxr|s{z|9YMj3zg38wbv0(T*{i41Pjn1AT>U2)6VC{}<*&&8-3w=>{-4M2~n0G%hTy zHNth}UvZy+Lh$-0PS(;}t#stZQ~ES4irkiS@UL9k_T3CR4ft3jw34{)$1u9IjfB>5 ze_wm%t&$^CZwNP&aHriL>#r~%!TkQ zaB8w`xVst?=PB@zLe1Xrocf8X?qQLVFdzY|8<}2+VW8zv+9jX(c#DF zY-C`u%C0zESV9ek89IYUd0;%>OCAkmn^zWTvMu&Kg-9V1zF^Z(jYX=CNsU5gZB%X~ z&-=J)>fY1o)Vc4b7W^2PM#N>_@(GxoPCcranu^_3Poy{Bap%#^z1EpCXSSXgW#nl& zc$r7lhzTkU3m!j(bOMl(akY&qlQSs_?43Y!S%lQ`E6njZkdq?>ffHKU2^R_kDj~g^ z9e79DU`Pe5RVHa9f2>JA`S7oSWKTZ)7EUzHKK)!L6X<@1-rnf`G5&$!w87imHT5+R zs5jj-cRz~4pqFI>+s(dW_aLZhKNgG}NRv~r`(jY- zQ;ce{AhLv4t;z2R{6K6a058WZAKa(-zvL94A$TDb!LU{dn%fRj8WxI#r|eU9p=hH< zv?vHjm2N~#pceu|r=qJ4!c25nnvVV=hQwEZU_QL}z=eZ_u|(QrmX!uLl4({G{~z2J z#{P>Io4gl0JCcFsp%G*M=~3%E5?|wcfh_?K8zm8Tg){$YAp4! z2-zoyc{fRgPZFRhe5FjwN5Ny1CQMb9Ca~+zQ8tzgpoeDz_4?UbnGcYJl@HBssonQZVx3(1A57Ul*XV7T|A}h9q19?Os!wWhgLK zG$X2T{s{4*25j3@WZiZ%+MAo9@@A5e94=15Jn`$=$tROZqu^>x{OV@S2%eDlpn zeHpst)|-zazh?6&3P;&h6pOKLE;5ypYNe;#<~n$Zlh07Hn((fkR_A9zmbgleK)g(z^}yU8y`OvI|+Y!l8^`#E@zj zBL4?n&_M%Ko#?ghI>4$Hj#^_VHCv$M{6jW0GF6<&B9-V!Ia_e*Gr?4#=ZHFIL?t!x z+gLmd4#hh1Y~xW)X&nhD5~}~?OjlqJ7ixN#@9^C6wOnft&ZV?yXdMrr6|Em>pL~qo z-slo7m{L4?PQ*?r%OKGcE6Y`Y@(u=NEJC_nNKFn3Y8ZCmUu`~wlFCD4hmMSmNmV*l zoWw;L*b5!PxtvplKYT->0W~#d9V+Kg6%b495p49i78}D=E!Z7l*&HiQq1tLakK;qU zUUa-dO>H|M>)>SVZPvhWdU)&T@a~;`BLl-mNoXiLxvcAXaU(;!c5T- z%UPGPq}P=TH3?NNpJ&QtWbEjXSlvRk=8xJF4eJOmkZPzBcKjlAeGnE@Cbf-XXbqlp z7)X|8Rv@d9Dz5+8W)1bH2eyvx9_bqx7|2l3`H^r9gKG5KYXkiwyLR{Coxb6b9fN&m zTC~egD~hCET%lgn1V(C?*-oJ*nI8*quBlA=I+|=LoY!^0AsQ%u7yufg<@3BVR0~ zb=^ZvVsy{0u>*G;JF=)6dyWW%gF2%D)vH*buJM_RSy6pmaUb+Y+VxmccR*|K?D_xu#1xWW6P zP(3Dcaq8zMV+NJz{h!357jTtq1jm2BGa;cS5khi=4iFtWG?nV){vyaq2^|AT` zMciO_XzaeeLkA9{K6l+ZGQ;Zwz`*x8KI9}5?sd3J7CXPop@d3n?7;r9K3MntFz)%0 zrTunw8ifRM_1@Gi4(ef+W=5_34rL6n>j=U5TxY|JjJo6n?%VJiX+lE9CS!%Chnas@#7?8)@gM?;t)*+g(IWvKHQ9e%E2$;#uL(|q*6Fc8r->M!AYqKZK5RA>zXu^s%cPg1>SIr z?)%gSi*+ZHLMe6Z8W4KXU7|3Q61YS|tfs&|fusP&(w#Q0JDDg~k#6OiN&KD`+8pd_ z;M^%nOZ5g!C%8uFo?t35PBAC{9=@7ynDwT#OIgs9KTc5ao+DK|Qf;_zBe;olK!Bf^ z7I==M^kOrw=tQ%y^lM?AZG|MybSC`NBux0dCpI6w1=6*1?2u{DX{wru&A~?2?&DW$ z-eONrz|_M{NH*j?M>mh0!cCmcG-4i!*F73D!}lsI6f5>d2lgL1FxH2~k19DFY)s(- zJzPhJE4d%wA?s0#z0q>9ocF<>Og!WY^bryneImkF&1d6OXlvygyXEK%*z*@V<7jH4 zI68XabhpAk;BF%)0pglwN)1HjDP!QHolwvHFujeUQ}hqNo`)G)5C9O=o#%f!CLg3=y{3N^OBxpfgjNke(JRXkI^+A%lZZC!iTlmks;PE zKYOH|3;Gfv#*YXrVsB`C_T^YgB|Q`LMf4K4C)N_(jWa<{pllk9ADLmY(amYTC)G)fyQw11&`S5j7R(EbzP5>3;+|HO<W)* z*=(yHxQQa+(xtN`;R3=Yl7RDjjp`NwR3qpIR&Al51vn-B@ViF8&Gbv;(fFkFyAr*0 z!-BoDrXOJwNxyl=HB5u-XR2Cn6F&qxZa3;>oC+DIDg}4<~W=Ce*WrvS+DK~@Q)1A3!UzMM0@5f;dF<}uvV<-c1gg;A$EcC7zuiC6#^i8lIvW|D0j;g>8w$_APidzf(m0|5&oU*6`svH4 z?MDg9`f(NdTT58xTOium&$o4sd#X>DFLb5g>`<@PXs2?;&J00jUmL+5= zaS#pwnmr#>QPUoTz?6@`v@=dF0?|0B*EpHjqa#j^9o>C5*h{l{WR6OFql;+qQU|5N z8>PMZl^L83vCWpQG#w zOS={&rDkzNbEjXgCdn~PyN<(76S&D1Cp9~|LC36#rOs=5yP%G-Oj5KJPL1}5KYehU z`73cXWBZey>-=+pTGQ6ko(b#Z`~{dHW<~AfnqgysyId1r`c~0fhQ^CaWgLcEuMIZ^^#-ykGQh4GLxY?=~a8?gfysoyo>x&G?hjv zTW_>f8=L2!a>F;JwVv`x6jqGNn^!T*!H`ONlA3IEzlwjr9e<@`6j4{~yRn0~UqKfw z_JJrY#z)aiwaavB7^LFcDpgTn!7{)pb`Fe~8rqBKw^^HQ^UzD20*^9#SEF5rI|r&4 zp>_@{bi`ZiH$gL8m!fYU=&6pfM$^l6nwlIIB^`eCn7*)Dho{MSdZ%S7k$KW~##~Oyr zQToS%qJZzkqH&zO5@y26k?0^6&O0$KDW*e;!qQphFW9EBv4&kxZj!PH`uD44pd&B<#=46!Om1iV9*r7dXZ%4dL`mI4 zpI{`2R(DZ$#%Iy)9NHOzW&t~cp6Xg!qiF|r##7V_Cu)eD@l0S0lQc=m`XqXZTMnYg z`W>{J67`**%wOnL&0lLlr3>N2GY6I%_jE|K{dc~iD(?h zJen;bL5D5DJL%4r7{I99mKdaO%$8u^W@$_KFwMr6xS3tEN|!`tB4)5*$GA>S2; za8-4x;r0%S)}bPcRe6tGm}QqPBr}MS)R%IX?@MXLGR^7QT`_WV^&e8T$N27aV zW@L3_xGGw?dFqvWuZ-$tBVBPL!z68%r3OEdzFUgO#a3bL?gJikxs`JFV`};K=^(!8F4{1IK-Rt76oV8hk80bjJP{sC zJhnDBi8%;$Sa&3#Q_9{&D;n)M5yL3#HukIp;dV|+_L#17h z#`1XBu5G_U?M0$7PPL!B#;_Yn{Ok|?k%BVc36wGc#Gyu;Tmdh6yjpWW z;%h*)7JCze4CZ+tUy+{cQ>Hlr+vO|%J~ibOWf^{or#=DOupMTlY_){_rE zrl)g-ywhG+sM!fNH(}N(jMazbKt0%ICg{B{K`qR%_f+xD7G-y%cJ+^yM&hCMpv5n0 z6Sv!pvOj(8N4aivCB2^HCN`(9!B~Dk!?-?3+Wy*DnxHRTVKRI)f6>}2^xZ-<3ek7; zSQj2s-(45bcR;u2gw^w)NV`U26(wpD`aN7*r6Yt74O`TiMMDeW!|xh`n*%_Z2qqQ2 zD;dUSTb(tcG+8g&%})3T8)7Iu+xl__4QVehjD{;c*C#+D;3`@iK;uzH;THPsrb~!6)G2$_!mVVg{56@Z*q#eGFi;WfJn;iFO+K7SI5(_u8Aw07oU9dZw7i zswSV^m-kw}U}|I!^1V6<;4MAD=`9Gp!3$Ei7)xE9Mv|63G=`#VfgwauhP-nrSx}*B zMJdQ&Gm~;b5GmbxUYqGARFWx3&C}75f@JM@+2T+IsrAc#hb%=nM;`BFf~10cBO?Gh zH4Q>~tjp(lRFLnbp+gnq`vO3jQtHchn@eim%`i6G>Z}o^AU}?FnuI60q{fu-1z`&E zoeY{*1xe5K2}rIW|AtzIE6BeMbZQd8Ct$3C`~m~mY?*|7|A=-P`Q}DJa_X649;+aI zc8^eyLB8)qLH;TD3D3=gB7Ce2+aL&AobN4FODFlbtp zAwAb8Ah|M}q?X~zFdyjDB!W-CSY?=F0Gln7kgtk%8u{i%8FK2GA|0y?eRhvfhC#mX zL>c~kEOm7nNoD9mV<^KG7($d`$UB#jwHU5Rlr{{uGf5YOk+k78ZRXq5hOzzeL(&`F zQ|-6t^1vNAG2`O$q{+mAy9xGcd#|f;NLmPr@k~+cPdk}W>397!HEQE`)zX($dNjde z>e=DIuDs`=wz(`~d#*k28SHCE?**(Z^3#v@xRT7Qx}k=*@l$S?u#A~=AkvFqa##d7wf79zRt1@n7)_U_$FG_kJ7eHolGnbriK z^s!VXldi7PsG(KQ{t80UCziu%R>j?vv6gM;{Q2>%W1KaAkP z4*Z9fgS+$}(8W+c{zJ>5!Q;o_L_&DNxgHzWfgK74mjCIGZ{cMN!&n%`(uc7yjD=w= z3}flTSQusi!wjJ1z@Rq%0J<0$#(!uzup@GO%|DzP+`W6yCywSTNe%7TseT|!AhiW4 zgTv$0V4Qy3B1GspHnL})W20HH5m&lcrS61UtOZsxZ;4P}=1EU8{p~O*>nm?xjXnZO zu$`6_=c!~~fv!4Dof~&@oFAsj0|=e~U7&9)0h)cAWdbyhxsxuR#VPMGrqprYWVunz zI^E?y>sOp-pbIi`EzOuqha4q3?fK^}T-vh&F4^hvE5dP0lSY)c1{)`r<~Vox)x_G` zQQ$5u0xgVR1!qe(-3+jw(`>r`fev{#-Bb9cXVV3kRVLD18jgyYLnk>8E98Ud zmNZJ+9J(~mp`(Q&k1_sO;4A%c%uV2mGdw zisl13eUt*7)xs22sNgqFT6Cx01YLvLKy6jKZtanmb?{R#ndzxQrcy4>OxKH{#hRI1jaIQ1N7cMc~;p1hr+yw?CV+T;q!!W4&OcWM&0 zi8+QT6y@hDu_t&ym5RvAlXi_XrPu}QKt~{p#H5>O!su>lGwx204RguJP`@bP0tLXW zF3xt@e>M%leVBplzieP|Q@oP8FUJ{XW?P-RqTH9$XxE|pl2#a%N*S8{cPs>&SO=v) zF-907I4_vEmh8TecUJph2*F!Q9D{GS6Gx;bg`lDnmIOkS<|BcKvx4bW5h=*9SLZZR z@D6mTGjTL8XfpiU)F`Lbfn-@u_Q_=YM(?earSPMsC^FYW+iG} zL<&9{0&A=wKH-x{DE35=g7=3E6CotTadRvreq=yQz5ln8`ycvfh3(9Opo#_V->Fe@ z;V^>&0v7Y30%-Y~4y2Vu3YMZp9NTG%hyd@1#<6NpR#ueOh))u*hII>rI3__R8$$6RYLNMFIhd|0NeNL-090xDy)=nZ1rxR#onnQcNW!T6f1>SF-{oI8)=9|lG;^{_78%A@#c zv;osGk0L=DPGbmXkPjfL%&NY)0X&ll(^Ps+Py6~wfAd;#GBeOa4Z=im*6}n z4HSN$^WHA$=$Ld|$VMquDT7DM&bxeJj^v zpLi`kwda#ht>~1}5gUv2)~%_5A>XT&^mR@(SOk9zyt?!&r8I*=AkdCN!mlLv2|C&) zz1sVgz6!v(U+Ev{8}lo%Z?p6(acgOoex<#|^3*u)P=@morDkg5^>Q-T62D>w*Q5+3 z@F@j{h;%D)Np64X$!5i4!M@W#Xv(Qd*N#!#acv8-(u)xCixSr#VA^yuz+81ZawL4u z@5+1Kh4G*T>4n;;%-3R+mt4$=$f#rHY#F~8SzG!qFs0<5ij1q*#gQ>Kb89)8#u<#J zZ$)HoElJ#{C38znle?Ip<|H~FZkfxYIXl8LqhM|E%=|03ZB9KiBOnI%%v_Iex@RUt zfTVLq<(RgJpP9uaNeylNzl5B$&End5usp?_GD?S$o5naDOb(fo&P?AayV!87ie0GI ze7{WB?G<0&L>v;iCkm{mw9kE3i9U$EPaptdpWE7OFYbg=a;JSSHA;9n-yW{Ftn}^9 z%sn*Q;Ep2>yLa5r_bGDZUZG03)+UYB6Dk%0JcQmpej9WcQpzqmb+#daN^& z=^q#k_y_z0j+sWiP^@J*UYS!oF5_6R}Ccev|X2i5jzX9H*jmd|{F z-&)t^*yC#%&CIsCY(;H&A49tiH@u|Vl+Qq3xzdh6EgQL4g+Ls;QS;ft$Sn$TMObc8 z$UB>8>k`fDii3k~P4iYKG4@exGm;NMEbyM(8j|p~GquIm@F;t={npU%;t2*co+;Em zi!OD6isl||i}gxms7q4KcrEkWfNL^z8>~J9Wj1-t9QNJgZ9xkwg+Y3X153B7UyhEZtd1G zV>-PIt1rpc^R!bPpPotfV-)Yy_qIOX6@D|Kuw07%g zTY974mG|%k+Lmfm;kzy4*xAm`Z|g+9mb{`f(Jfgo_Gu92PmH}K>mD?P@tou~&V2kR zakpggQM45#`7K#zXjHzKEDGMn`9Lg0{%X?3JUhim5WT=gttYQRJ8eBlQk9~U+c*Wy z0=Hz*Q(ba2n(A>K;vnuIQumtv8a3sVWCh!lvGMDHPEA@QrQ@%nmu}YO|Auz6qGM?J zIYmDGGOQr^qL(t$FC&tTl(KQ}CYmvESADqGmq%$;&w<%5aJEPT+x7vzPdC&TnE=?iK$QePb30 z`!+j^M8Py0t7LnrQ(NSk_O?hV+5+kC&;mhM$xF5=`j#WoPcsFrc12)`)=4#DUbl#TEPB26b@ z3in3@9=8$xi)b9jNra>DTS&xUBk)eTvk~5gQMrxqcKXI_1omx~Hi8e+Y;1%=xCwctmqh;V5-Qc+YLeTb!ayzE#rQUCL(Azd;kyU)NTkUSZ+G(BZ4W@ zLFia%Jlsgrpo|9zCya*=3EqLcU%W`2ZOt!c^7TUhtZPiIVTF05 z_|STfHYPd^d>EZ3vniDC&1l?eS{S#M2*xy?DOP+imK8fPG|u>4U7)~+L6r;Rr}zb* z1|8cQuSe5__QqS{M~SmH_$b=inA}hCyEJNqz47i?h?1_8?_?zC+}`*w+RbX6jJG!g z%>woYJ=K-CMpND12n&4t6*c9Q3U?cY{Q!4d$dGqlNjVOB|9P#!oe6piE9PP0lR%CJg!C*4^kS7KCdm0U&Nm{r2Q z&C)7~fGI!&>7n`f0+VniD~rq$5sh{9K14o=k3^r31pC%45+9rgcsB6`Xf|fm2z)K4 z3b-)_-I}8|83~aX7@*X&!j*1{q$&4|} zY?k(`#rIm1NNTCcLlgf5=1}{GD5_=nmUM%6S@au9Qf~pDL`!Pg{dbJ%{s12)w|$)+ ze*+&Rh~L7$klP#mt}ZaqLyA zMzc3?@{8RyaCk5fxGnQu^vnKyUDI8UpS(4uyqU*Lq;No!ybui|t(dfyzcFxQdAb4@ zJ`28x&bdKT3s2?nm17qz6)Qd=;FBw3d-LW7Y5~aya_{$%(-8UGm|O%b-Oj>Ydbo;y zx>2kbD#aOwWznuq;a(NCGN{w9;%Q3ih+g(?&B>NaxxVlwfgg>QDIC*z1PZ?H<0sg342A~=mp$zbsiUC+2t1!zGGe9k0uF`!wU2uSGYN@G2EHeQM zgfwjBfuBCa6dQb@TQ*o?u)#S#-u3lPpp?hEo}xxbC8K|?yq&yBf3`$fpWK`6ezL{E zosPMUew*a4nw2i)*hNVG=`Z<{HElzUpAq(tapp@iXoSNHcyj?DlgfhU8_-!J{t zVvn5oGiMym3Qk95gkQEhc1zRW+Dp*twb{9L|@_!j$#hV9oQTY!z|NWiZ z-L*uEHZyCuRc`2UjLft#sgK9zoK2fsrDzrOSvQiF#DOOhenKNW1IB{XJ67mi!lCHC#l9S-u?d9a25L9&X zk~}FniS19`(E9!Mq9;$5(OMTwmJWw*)_WF&;5&e^A^QJdvi z+g^w|X9ytl;zE^rSe>)m0_T`x>zttvtaq}`nZE+^$K4b+`$xh@1ccbg+G_W;SOO)L z;D10b-K=*1jCNg1a71CVzh|&O&;o_c=()}c9mIhaUFs7s5C>X9zsx%CWC42VhJ0($ zu50pz#(;d{nMKWJLA$Myw7YIjXt$+H+Krq$+8IU6f}}I`YwVKpw?4;;tpb8Cu?mct zMSsosKlVMTn@Q2lv2ON@mPw=GE~nn8mTH>HnT(zH;MyQ`a+Vq;*U6Wwvq!XR*4#dR z^|H8E)N*^e6JQzr>uAwto+SMVsgCGxGEb0HqHLLTf%xPC+Za~?+;=qsPgJ=q2Upki zR;iMa7w6Iqw738lx7;4Xy|efWm)BayaP=(itnEK8?%bU$o~Fx%&1Spt(ykr!Hr=g@ zmLntV4_sY4Ob=w^{%yNQtm~})ZM$}`e@5u9fo;P>_-Ak%E&{&J8rp^{fv>ZMxAo(5 zgnjPV)}I>K(a$ar*ui@k;XMp*V?7KRJq++3`dM55Gc_+<^6%pNCI@u_( z(l};iOdjBU7eMDx>UYyO7Nut2W*6X9%3FbycE11_^sdsPh<&(quCE|&>_)a5MQ;J6 zsHkqdY6NRVpcj|vZh>*Q^*G!1qxxTd1vgCcz3?$z3(B{!_HOhdLe6# z)oO*Q(zH{mTX*vFGkySJcAcns{(FDc!os=1d8V4zU#1p3U?XXYsrJ)%?>mZH>jJ#U>TvA?JjxXUI`0Ma_qf1=kqF>s&ch6?)y{);4SZvC6Rmtbocf_xN$fn}uG>#U9z}&tyPjYb(fJ$T%Q5%?28aqh2W- z^~yD}AeK1##Zj4X>ZctHHECxH#X`N{fSACa+WI6BEecf>z$4Cga;aiD%Q=B_KHcZJ zfMl?-&e``)9k01o* zf<``_^60mXd-+ zKWCnv6)bC{NJ!n)0YLoh&_FmiD-f3Srk;HG9lgo>lN3cpO9@(bLa5I+D0h6ai zpDdMYe_~)3z)Fyy%-gRud&jH*Se{vdmkZqIR}RZm_HVa zkI%w%zX6#`;fvmf&`CEu{Ask)cz7WjA#T;vnE1LVCJr&%Vwbxm!lsLvlnxm6f5g(W zQ$`hwVr{~NV8Mx-6?fjO0sb$u8hwRs#%jIB@MwQ>9_7|_1-s-}hwN&>whopH z<)Ynd9Y#%Y@#v6^=Q+n3o2WXCUh7V~Q7l_`)K1&QTsgI`Y@fo$w^6nG4mM3VNdNWdCE4=T`ux@Hp%N55iS+|uDXt0Z9 z7u3tYWqNcW}tsy$96a4xaDdFFO6jScW3&C289Pj`755IQ3Q=>ul@AT1ovpl zz9(XQ&-mYm6?TI-~VQVh2TU@(0LxjFOgIQvA zvkG0_z`BeEgogf-GWMy-9)SfQ@w2z?y9NsBF67EVh1`^}_BE;}?P{*qx~U3PVq2ej z#3AK$r(G)7tV0=mspjlrxyCe2>Y!6D!J$~Qj^LLpk-#VeTuC2N17G}ZUw ze8bw`=uL(6@8oK5WZeoVCd%cLq=k?_KT#;z^)l3E5jv@^+-9kYjYM;6VCTS4-@vZ^ z-H18u-o2~WIzqQ=<0=>HuyfkFzg#^DJ$rwzb@!36Oe&Oj`gd;My>nOJK;Q5Vbk#r9 zKh(E-d~jzb#ra3+sLjujP1Ea9WMfn#t@Zt%Nfy&&y(DB$ruu4HthWN z3cwMqK$IpsL#jq-GQy)(lLfI$tjX3vExD}AXg~s*jG8D-7Cn-?3nJ?7rjJp4;K)|gH_~L&)MOyG@BKLi_Q`{S5WO<*tL16`BK7pD(xafd9% znx=+ZGY&cZ5q3$d7(YcuEc)Ld0{sJs>JK1Jj;sL0_6LwMFffS!5cJ3APM$b`bO2-$ z^s|r(Yl!Cqc$;1%bw|HaH|T@@L`zB>7{t$m1IKY~+Q{(WjvYJuCHwrep~V>-Q~G8w zQs91YPV3=R$t5A2Zh@GOJM zpNl8DpNr>(%|&+^1nv_H;BOhwb)%JLskjur4Ep-~SXWrJL;uH&-dkj90gs`#zYcJN z-W$`~HZJItr`e6Vzk|p2TvK<>)JLr?423Owd#yb=rH1hy)w%f zCxuxH%`W&d=12E}CAtCN$v`7>?R4V`;m~+-SwQB|Xi;wci~e}CIW4bdE^($tV2=55 zbfdJu<&n(eCuYRGq70*d_i+qMyXdI6fFhUsZ`3OX`^OLg=@;@==bih9xG~Y)E_E7&NXd370H91!t>R+F@ zQOm*ja8h-9Fn;qmV*bdEs%_U8b~|#^w)p|dJQ=TmYB?GI zS75aSC*xZxZK(0x)fA~0N8qw(xJ!6fc7kUWm%;tN8EU^lfE6x0vH z5ACySPHoiEPZW`m_<7+ijm~z6Piq1Oh?m+6OJ-rGK%IhgmJ;u zK6s0!IBw;lO&z)98-yCqhP#cvvI3VIAU^%^uik<&iz$;Zyd(Ho>5p7WWTZ-D}_O|Ew zSMX^~L?(IO_&*7{gtxC+XRN+Hmh!A+4O6hm!POX)U(R%R+SRLjxbLL_xKU{6s7pG6 zR+K1Mk4DU)zQ}s=;m7o(OZvsIX*YNqDLFd|QpH`tmeEdfZdYt{*Dxqzxlo?6Bl5Pf z!{iC{AF)^G^aT1?fGF`Gi_?yKsZm0XpgbkJ&ZgZgp|T-x=$yURS~z8`w%uT_v?T4l zgrMQrWxqs?5;CrS=!4~-SqP9LDDG#E zN^`XRi;5rL(FxS-yzXx^>c)%ZpQ1bymJ!0Pqlt*sWAc_{xj4x+BfgP1@hI(w@J8aa z<6^!6F|%a(S;xNsD*UYDU(z>r){%Yd_N*h@qs&1u+ZRv>l3dw|cUk&fLrFJUa*)W4 zmbWL_(L8fYp}I|0oYpjdRck2Qz#YlTHz_o+dZ3v9TbN3H0XCVsqdnR)epeTCkETe% zHzh_~kq(rB8|ET{ww#+Nm9CgKJ~XjPkD3H8{V(E9o=X?^=_X^n%}NPMfzL`$6X+4|O( zngIPGg5U&1FO#N!M1%yDLUVsWQ_1v+>cjn?csQpXgn)0u*JRwOFimtd<7Zm@N!~?J zqFGac3kf*X$JYcqh6XM)=kZ$FfXT5foTav(#+w@R(pT)^9}D-OaEy+LDp)hcX@5g+dc=j{-QYW9kCqP zkuCFEepjA%0sYOb*a}ap;doxmNy%trdY_G73>UQi3;fXXPesg+`xFSZQ?{Urd5fKL zIWKMgVKj{sWK-FSDE0>uH)?T4tI2ZTPf(vnXY`fvOdjEtRsgqnrQZSs=5$SQzlI+9 z0`gDz7F<9=L`}M7hQ z%O$Eog4Fwy&P*S3P~*))wdT92yYE2p`F91ha#!4T*?JZ#1Q7i@isz z+td+C!l!*18Zn=?S$3Bm>sFBIUmXqjS9_%GpFydbVvU3hYhtDq^Hv}1aL5j#T`w(e z+7W`5Z`jtg4yuJFcLvZhr6lR@ZHUp#Y^xiFQ9j!-wCiy9M!HV!Oaa%$mA@6J=OFWv_l@bfKRhyLXL!BGl4Izl>Q$fbIaAA`0CUjxW zXRpp_FysMrsS8vz_YlY;7;>5#CDbq-H zI4T5$9{>1-5MW{@<@K=?2=F3vyFVH-MBqKiv%~-$@ocQbNVmIOWTmYT-$?9Lr8yMd zsJ+|$%Rq&1QvaU5u}v!bHoHwKw>)RFLA{<`jKXh_>t<^@n0RY?+NttkX1yuBJYduM zJ;RzMNe#Hrmuo1p-=VmTXG);IhslZ7QypzSzvFl1z3zf;K7Hz-njpKx&DeI%7c|RX z^@?UXe>L3IqVS}2U7P#7ReW=(kaOo>1(Kb|&6=6vrcbS=DQOiES9B>*TefNcgejWa zZQ5lZ2H&P#jc>tin!$8(gBHikgoemnmSn~*;hzO(g}MOs+~w`JI4Io5tPe1OxcrD! z*2CTm>jl~4ryM`C)ZdYH+)fG5R^o=pS}6fNPyWMam2iN#&ld=QxLs|*mh-yTR(+VPM5Xc%Z`9rp{VY)7hUn+$8#6@Nw+n8FvReJ;-VoJ>nPWp#>p8*@)!vXSZCpjJ z*!dYuPPEqO$Pj(f@9KiCwFd5UW{4`}-0u;d7t9dV(F-?36{szS=vM&x+!~_GEoq3Z z$F~+kREIX)5Y^r=V+4}Su$BHna8`0dl=a$$A)2(E5}=JhJ6eDO%JqU9q8hc?E)B%J zR3LC34AK5hXeHP4K5CS3JwNw`=w2-#3SLehKeN87QNydE@HA=|1%;40Nk6g7|o-4)k z#!g^jhUhP$MI2|57eE-I1bathPGpEmRTFMg24`FtqEh*XH)?N)egdd)L-dpMjTxfs z+guo;@n{PS%s#PQ)jElYwdn@FVB1#E14|_{%C{Bvnd$p#w7OCGnggaR+m+DRl zcONWf(d%0Cu_iBx;VmvV>Xk;lc{soNu(xc=K|MmM^oO37(Tyd@VV|zxkLA^JxeicK zC*e%fo3|aY84kiY#yyD_QsU1>wTQn~*2~%P3DAsw1t^OEb9JWat(!zQrE=ZTetgth ziEHNTxCmhU41(v=%}2debeT+L9QhXfEZAXhBYz@KhmF(CAmgm2i&LZVL<72JnLSuh zbt<^*e7xwKazM`cUMg=F{XZ9ZYn?L%P!V^lG-~ptMc$&EGtrnrf2-(12v8AkR2_R7 zPnKaivJRm{@D)m+*|<~6mUDQk=`Cy2C;N8wp$<*cyTbf&+^JT})$u$EDi)n8W`ID= z)|=jHPI;}DMXZ;mw<+*TpbK~T)sUc7yk7-_Y<-3KL!hy@hHwDy)$$-w5jZuyl|{QW z)qn(m;yL_1-zhb{^;IWZuI9#bP6eEUVQ^0g=&(3jE=>YWP^6HP43S^#t+E^S^0<2B z%|}5EZ)Fa*U61=L3Bs}mxC7Lo8n@KpYW9RNJI%g&RH-?QTzUM=G%?f~=S-zsbH??S zj7zfh@l%CbfwS!DaU8m_CyIoKfO3fx6^PvmAX9^IFu6mgE5&Q$lLZtAX&!HS8|WJb zsX0~3?ZDhnZ#hi)@~VB>|MT{F-dd73a1PzY0~weu)SHLaZ1GlAoC+$`O*)WL+~9*j za4kv&+z!}DG`ve?(Lp@M1wS+Oe7VHx^ftYV=}iUz-W;zx)0mz*rei6d_g&jR40^7r zPG$q$(-YPG^JVvxB1TLo~PLKP- z=_A0aDmBk~Yicv4x_xFmUzo}l@gMkiVX;iCzoIs6L(pEV$sl!FA%0D`>Z)G@}zS-f>}+`%Q~#c?~ABfZO@UQ0dGjMtpvB-d$Y zy#-F`6lU6uzx5r?rVuI(w8fbBZ-w;FU#^U=nHx0LH22t0VVfa{+iP4)4*U7d1p zwiTSV7HEJM>+Cux@Z}`we{Y@fw1hNU_87fQ`hP4YC7ff=m(WB0J?(y#mhHc%k6)#F zi*KTj_tD3D=;K3Jb=?op#~109FW{r$Eu;42+GmRo>)|YGeU`O6%UYdfEzUObS7U)< z1K>)wJ^5wcVvdf#mgE=Z7qd-^AA8%wya2kb;VmlE=n|es$qGDjHJPs7MECK;ac~jz z_;|ZJ$iyy`-zA4FC?n2Ged4@@zA@r_kiOBKcJ9%uRoSQjUhIWLsGaN{HJR+*4z-MY zQSP(}1u{y2=7&-G%KZcS$fClKo2QRI!nqyyGxYJ=W%zhKee6r&<5v2ZS%r^R(#MfC z__&`w{&g)rzDFO|ugAxY^zlRb=(z|VAE1wq(ns}Te4L?=>v03Ndn0`ipRsbE%fDmwo6DKafg-e8xP!5O#XGB0Ke1G+G#vZRt5Ja%j zth=lJs`}scKl;_$Hy$}VrvAyfDB!lY)ix~4^DP!7a?uPTu$i)N&K*^ zXOwKnBd+bSWFzhvvSA1j+MQT{14Qv*+lq*~3DY&A2!nX8c}72dnzZ7eeCYtwkaYxbeFACooPv)ERJqbalb{UC!s0N#BJzX$O|}JMi7@ zzHr;7vHYmkj021C($24}UR=@)&nnlLerULDJ7R5@al6Oc%!-!*ZL}gLqMSQ}d#o;< z(`?UlV+%ZL2;kCTp2_=0xQX#d7@oO;$PTE12m89M}D5=|nq^=K=`oYYnL~B6s>~21i z!5;aU>xJdpZ9nWSudcLL;dqv>tgWuBTs(j2!iDn}&OfrU!v+1X zkVKBZw@1;jKNFmQ z34U|GCP=`U369=fPEzP0wgUwIbp&x8+r&cvziV$LypC8p?$VO{*`Y?{Tqshxwa zc5dGX3QX$}0sv$R@{%7gPY+od66=Vbn9*-8X-(Th07XIRh&XB~kq=cOvPwAH-fc^e zGdhMHlShynnUz~FPie-G0AWU_pw$p@IB+xGzuQ60uI)0Na)c$NYfS|4(`paO!6aF*&6;JIvNoy9p-e>F$#yL;tZCLnn!$DK{tS=$(w@ zf93Cyt^B>@8vh%`{0iR_3SUZ?`b@BJDBPD*h4Q4>=IU20s4CA+U?pJERi%G>!OmBY zDrk2W#>d7+lP|};#HcC_=ydL-B@51J{MpMlWo&Uyrr>k?0GIdnV^`S7i9Dtk97t27 zJ9PAn+AG)1oXhfLR`Wnbp?%Y4w@eg15;>PY>PRxUA6B??H_t_Ju`t3O6N$WEPrXu9 z&E6~NAnFL@KCOhmuPy>)go&Kr-OS0loQnfQq-kr#W4~iihL4H`q?*VEsh{6*P=ZMY z&9|PSHTo=BQr7=jTjp?QuEPCmhKlh}70T}cExiYdlEB@-N)3L2C{R_I z{Z;@zL@o_>^n8Xt_&6mSU7NXk6a{K(eupMgB`#a4Bv`p{8rO2y6XpJ}I#lv;>mYn| zZW8o@6VabVeh%&q&Y;Ai<6GN1u;ir{tQ2lfYeMo%R5YUE01azI0)_H4kn4xSoo?1y z7gYk(At-S0y>jxtAYbl{$#UBtjFAr(WGN^NCxT<{MK;8CK8L}dS zQ)6qv_Sl*-$Fa4s7lHcNi@Cp_hCNVmMBjoNsgg5?Md_L~T9GZ7k`oyRDzMIv2oEZ( z&cknru!7-FhcFxrV^J_v$I3&&Hbnv3t<+}>xEgX=Kc;OKoFC%PUQWO8fX)+uRP_bR z?;{ILoS)Oc1UXg}eP+%{9>oaTLS4V)_+ z82mS#Ta__+^aex7>}iUXnLZATm888#JMY(R=kDe&w5V`5&Ks4pvn#!HF?DJ%Jb6`_ zne%o9QffoyIQC`W3kz(gD>Bn`eo$TW(TXt+f~R)r{GNjvlPNuE(7##fCsL&^uGiwd6!|j;At_h(r)beWm0eZV;rNkC7q>h) znQW-Ucbz?8> zYYtp?vYua9Z-5#(f!JGlGv_wFsuZyL?)j~>Ux%y9^Yh2qe7Hruxouo#)7fPHejE^4 zxEvKgbDp1%<#4nUoreyKfQw2f4dTC3?t>~bJ6O`>mj^nkE%dDDhrU%S@4&LWg*X6N zsizdZS|e{V(y0wZ{D)J=r2;;*D+hy#s>u~yS$hU&B-kQ(BJ+Fs~K^#i;d4Sin#RaF*~AMV#=sKZ_+*Qt{oUiOsQ@fxQJv1}4h4V`?yxDZ$5{G>CeS;H2i{&w*0lF7) zu*g-lt{K^BLf|E5Rzdzk(&z4ZW_cya2m?)u<1+&rc;uoK7g24Ss2=|ETldO zWJ9}I5cyGjAX2=pkIUm^Z_pgC2Ss$zSrN%I$Ii;xfCVV!W<5kA2H8viZ3pgT8uFgJ zNRQzN{c^$4j-h@_B2N>fLI99D+T0M2P^Cx~v>se}82p?KyXMgLG*WK=@qBygLX*mF zvaoG4(N$-_AuMyzcX8O1FgmazOYmfUQZ7O#`+8xV1p#_m4ZS0eMcbY*wsh)pyZAwW zkGPa=%IOHLYoWgs!>S`N>ZE#4Uv<|vjf}O6CP&_FLVT&cL6nMx)cB4ATnO};jrw*b za|3svJ-%ssUFbmO7fz6)h~mx=nB6Dcb$uf>M*8SwGl9zVJNTR+65GIlGgPkb$kQgE zHg$#s%+*nhCcmq&KAwHj16_5ysZYBj4>Rv3BzRAM8{Zui%u%XptM7kq%M*ih5qwT^ zJMPHI)c?TXp}V*QZCI1g)BH?n+HsHpT@-N8&@+oZu6ZSqCk93-?N`Itty{cMPnf>l z0r&(Brq9l|;S`*2;lD^u(XhHB0i-7GMEn7KEu-dfNnWO`JWCeyn;2-%eyg|7EI zzFSCK4W1erETE?bcAUyjRf|px?2p?9+5z8jdU&sF2A4h@sOiV#x2LSq970!0S(BihS2Hv`o45`dZQP}Q^17* z$#_Q{Y;bpQ8%CWOcSmMM9mg5{P{)lCcicvu(a&XEaAm&loVvHFPSvejcj;kyhcBcB9*xbb9U(w3sZFtHqX6@9pWiE3tW}Ty5uk`o(Q$vQuu<1$k*v zX}Gj_PcK^ko|4xAaPJ;hNksAP{Rc1V7-G$9Uxy7I?cB{^lGh{&C&3f+oS_6L@5B^jd z-qq<9x}{S}6f@3&rqe2;GPZM`I;{`=S7u&*MNdh?h-tt5v6yua-e0`1IuS z3q^oG?K3-^{P?NPn7F8-CzjYihDDYje4h0uD5-8HR_p8$ywUD zr7>PaDYRi)7pfVcVRID6-E1``s!q+9&Qm>uQCc*6_sqhSSl)E%MHo%~0L)0rc{VQR z+}13v0(h-Lm2^^?V0LJoyEziTp46zRaE*dV$j0f;Z%+5z;pQ~Vv|`Vpa~2h?2$J6m zRw`5*-C^JsG^ppU4vee^HXDDefi!!io7~0ltux&O`@H~f<}QQpFuAJb$#SQ6ko|m1 zp;d>EBcPU^0WkNw1b%1cvA2ueqf=<@b2_~^=pa`&mNu1Onq9sCxO)!h^g8#+{b-#8 z{5ceGCloY)3X3sZXG0hpUqc4`OuUDUz#aA`XwRKD-b3mu2sK+4faPU;lK6)EF#g?L zdUbcg!@kX}9la!(eKTb?TtjdKxFFr{H7|_;@Js3V-KA}L#{yqDw5$F)f}Jhp)(F`0 zJJZ?8mLxx;0lmyM>NhAh2do}0Hk@4}#gLIgqVbQ((0Gubu>$0g=>9nE9`08jA2#a+jEwCA2@nl6eWOYzSywcj$^D%4?_Ip-1weB45((aK)A^OEhSk7mHr+j`*4i?>~P#;F&b zed-0i{zm6h2YIZ&(aXoJrL4VM5(+iBhGpslaW!<%d@J?`Deecd6QvXPnst|d%?A$Noc zLzl!ccBykIL^YEVSRWyQB`5(8{v|k~Ao7(p&_(44_=8}tQ^2mQ#jl*D!x>As8>ug z_<;_-E5rA|C%)=0nG2S67l3Z`zzc&Z(U_<}I7QtZxWnFPVmaOJBF|ed z4ZBOGVE4#W&Kuj(e5WyqFn8L$%6=FcyL=by9oP@vY{cE3ze6;ya?H>DeQA>r2H3#g zpms6yvYgFD+*i_w65q0BOVX#k`6f$k+rmh1kDej23U6{Fm_z+@|#kc{kv6)6) zgay))%UN*?3MX_{XcL0P0p`AmFKw)Je6~OwBkt0vvQsUZ;|DB0$9@mY68y<0)lJsY zE4iJOdlqs@!h25=cq=c*)*CB-hW~hb4X`_M6cdf&bYPT3nZOr8wifvZzyPq3@D-DP zmAJek5iW1@aCs~I19+@+=V!7q>QKSURD}Vs;c}e?Jc*li#?X%D^pLlUAKEdrcj$KD zuQ{FbMw%PS3qErKs-e9e2YJ3(a&yp$*T;^%Y6m8IpWNZ(m4C&dVt{v@J0k8vSows; zin`0qmYQDp1i}&Ho`F-`G%&UpK&gC;;iS^inM~|6jhIwE4|F7G;@i;huu16-WhC+tDElK4ghH<)^yd^DP=yn8@RQeNwj^!Q(bN`c zeFZGfS;&fKd6w`S64lvZg(t4z*$%zf9OW>>b0N^BHax2|)&pi{8ygjv+yz6K-Gpbn zPNyb;b`^mZ;18gA1Cn}ZE`Z-jr#EVys#Z8Ikk4U5R%z+93InnPbg6-4oZ!T!Hd=r; zZx7*8hfbZ@I`rR;9&=yzQEqBI~F(W-ibU*qktC%j+V>2zQ@>0!vA z^cXX28%qyz22%$7f9_sbE9}Rx1WT8~X87hpwOmXd=G`70fCEBBs5 z8;Ugv0P8s*09!ed!g_?crMJ48f0WP-FR(**971=z9Xc_ zb`1e-#-p7}VD!Wn!-dX^c9OyAOH$=0Fh{+ZXT^cRR;J*OI@1(r~4Q z-QZX%b^LTGe!{PJ^(sy5YMp6{Wk*F2lj}Pyr9blx2+YzpkaC0SZ@);eDfbLm7czwm zUn3!M1lh02mQ#QrWyW78c*Tq?WJ*dVHS-E!DBMbFo&k$g&Q%KtFhAXA24H@15a#He zZ|neMF$rqiH!UDhOy6`igN~KA6Rcp~MFbhA6Y=f`8M{Da2r}Yjs(tF-eoh1z{~U+t zEt|&R;wv;3G&dt=aPegfAC;C)K4K1);Nt6nF5%V`?O5vI;!6zUv~Em=;6oyax(1YH zDT4SQqL3(pC^%6fh=K7NB8Y}I$s&k)2iENy+dQ@ma-#Y~HjikQVs0L9WKE;(s1hyo zCy#PXu0Q{oL=N1Neh-OaTGFF;7OGViLEP;Z5bYV`r9`HH;@iA9VX@FDcnJ+Z5XQS1 z67j@fOmXOTx*wC-&TYk*0x}w zFl$RVYa|r42!9Tp9wOkj7*Zy9Lp7<4TV;&7&x1~Eu4|Z4TLpB)s4Zl7uqI5TP2+J( z!4nRKhTa|r-C--yLWo<^z$N}bStfzYGf3bvwul3epCln)?5hDmd^8^75lN~OQbK;3 z3VEC)mBbt>66JFjHmwf?k%cf8z@#K#%(yHrx60xf1Chn0DP?i}A(n*_lh!4nEHF*Y}??Ree`mw*AUS|SGRuUO){T&?c5Du%wm`h^E~B2moMYBaF* zgCI5TGsT{dZvuH{E&+w)kF@W5byQANJi%^vT27kl>0bvW3!>gQ0{LT(GxG^y&*kLYk@Q+PT{M91UC@! zHY?n$hP;0aQYPCWTuuFuw;Ws`>IM?#HmpA$d$!@0?E41y)JXT}Oq1Ud=?DS9|&UeU%ulr!i)jU~-DiW%*`hvB8t z(%DBWp%U%BALvM6C{C0DO_&$$KAAebN|YjiN+3@0Qp13)dtaduO0Za02yia~<)(%< zSu8h=rR`EsdN<(?4LnkzV7qI;^0ZjHQuutG!?~+3p*DnuH8pN4{_K9(V^}Yc z$IG-Yb#~8*+|^HUh?d;de`_qLGg3r(BVvv}X85SI6w0vK{Cl8FJ)2V$#{ZXLoYqM! z1Rs*S(lubVa#u$VtC|-MJ9l=pP#7oC(rNeuT^=h(AlReObYXVp9kup?HrmodgvT55&D z(0)D85ww%}s3}%8A%OWx2F(KhV6vI-mr^ifGyiTNGI(!F8GN)K8Klo<3Q=g;%o&%( zSFE!5+CXISrIfPx-XWHSlFig5p*jy%XK>PrBDD;BL$x;oF=)sA4qU_s?01OlrEe<5 zcezJgw^%jN;l>V!>Sr_8AW>X@BRZSury@Laep1}_l82L$@W3*e#{-3J86{#tUK5E$ z)hA6U_;WQpbZ1UV>O_7flLu7IL~$~iR{}F$Ci9v2iDfd`r$dyYDR~>b^#+ z+$q)aZ~(@s`E5lRok{*k%*8a!W6o{HxpCTT=go0C&kBymAf4|;D$m)~s5@hj>pzg6 za@yydx^?TEO^{YVf2eDx+KogB(kaoE`=&#iAdMq8W6JdSc$A)ni`Q71w`qY--)U6| zb>#r|YDlYIHDijYDR8h(R z5)uOv2`D5^UrLYD!|8Df_f(|%2NLCG6Edrb^5+4|Wb2JH)K8Sl!37fK1t6M%L^+Pd zOO!8M0-x|JPn4e+XHg)}igAk!;mS$q23Oa})cFNF*?HHP9AbAXcc$?%_CjW&3eOdf zPc#l>grSAwt=J(%+lutaWsy)HL|0OymjW8${(W$g#?EcTh3@x=R+lAy?U zXGbHEb$6B^@%|#IK3O<=y;0wNKKIneGCaz;d-tWj2RoLz8czLmig2K7t=lQ!!Ts&A z%oXg^x$?~pRCo*WJ$pnJU*4n9BKkU2n1mBRr@f%8n!hLh01pF-PDspkM@B-AAA;u$s$nja21NybIupB7DR=v(ZsH8ba=IcJ#2p^Qz?~{+CZ|JDa8&q0v!n? z#|YcwD&*BVEcYM(@fd1;&cuV_d2;B~6yBxFBkC@%?^qDrl{OB}F9JG(bDV&^1o}yQf`rWAKqZO5UJchifebi1-;n9 z31RmACqS3l?wrBxP9mt{SR<2=Lao1H84rkKctnU}L@f413QO?!zNN4bdPyUN!+|cf z6cp=kz#<%PEkkIrQlZ!z{KWwFCll;VEAQAqu+OH%e*3_%H((Kt{ro-j&^;Y`H85gL z35v~vQdOnz6~NC56nPrju&OG-N5;4rl3Q%O19jBY?Lp@cpRGJC!c1X1EbrXP+F8mw zujgBbOcoAl%-ovs5*Ok~Wc(_2ccLvGqBn+I;m>&Hv3JZ!bvn~5!%Ms1qG_wQgwwMh z0ZDm5VsVpIi8U;EQD=?mEcB?JdW@H;F;X^q?kQTyHakN!Gjyx}96wk9+%+MGet|Z9 zIzQ_4%Y%4pZ`smLzkG={DAmV}yH35Bajeo(aKhH9dx0*sg*2Xic?TN_?ms|#$V!0M zDfq-qScz@|;JbsN8?bYKgOnb23lV=&)bQhbmNEJGEe zQ4D5a3lwAYf*4cnjY|!|z1ZwrV$584*?{Vv{$CNF&4$l1V&&mGln)B(9D>1 zUh1(<7d>TH835LKiRF$>d5%=yucz?mI)6>YKI8i-)CnGWRNNg&M8~K1^BFP$&kQez zPwzSLxXo*Eh@N>c9u@a`jRke0$2AhKX85SIRCB_N!~;N=+DN1*OupAJPOAwKf)6nv zx&{yva^g(BY~o{9u~F!`0TP@j1}HFog8?$MISvg_)a;a|Nbe!q6y0hNl+KkjMfU#i zd7JU*ohGk)#dKxN0?Q4o=|G>i`JW_$FT z7y5znLbKU6zp6YJecQCfz)p16wBpj=FU{%N-vid^m8kZ&Bf4_$pNqA>RPl_JzsE+4 zm+yV!G?i=kiv==$SN%$mD|cb9hN|D4gVVu*m-)WliiEYy_tijZTf$_WBgPi|GT(a{ zky_@f)VH$5TqzR`{0v(c<(ic1`_pst?m=;rphh*wYeHf`A_0ZO>EF`h^iX=7!q;l4 zDuI$%^Zc6ClGua5GV#YyoBfhlIk-ScYy*g9pd=Q@;+4ey4nN^nUJ@Jf=mWK~q#%|X zEAY>5f=g>pFak4m?qmfkQJ%DhWc!|^YVT<%0WWT7 zs@l6u6ObDE6JbMp)!xNS_$nziMq~j|s!*>1IX86tlGPP4GO#jy=o7C zpgKu_9aPm`6>s5#eyLx?EO^j35m$6 zy)0OMi#%qafbZo}H1-0%dj=w;m!=fb>-rJWfC~5w^76%{R9S`=kwFO3ftNATI{ZM^ z^LPHHR3-|=yS^=MBf`no(90K{kM*#aT6YS6D58n_o_0@r3 z|42&g|6^d-8?XrEqy_fMksdno>MqV2Di#irlBUu9Ay}RQ^?QakYcWkD*vN1nPi_o! z8g-y_Rlqb72Bt?N#DeWGF>@koXDQi()7;sq0&&VZ(id|)X@$CIhcA1$MfIK1jX-2@ zO7Svv02HUx9Y`_9nRpA&0bnH%Qc`DYH&+>nyY`>KI8$k5xopL@`I+3N3{Pl^biu#8{L`8W@3Lk{a5qqQxAj=~C!=>*(pZ-TTbkHbyVmINr*ZFfZ1UjSTc*%XfttmmJU$ z;}Tu6AtMbQ8#s078}^Pi48&?Z)?2yP^%_0nwT4@0?YO?8@Du5)b++)54IT}0q~<;l{|eoJx_l>D4r5jRs{J?NDNpcppZB{k{+ioq{k_I1(ymF zDC98Dvso?VxCdA!UK;AOU&tW`7bxU707NrT$bn<=3ON?6f=~FB7jnq6&4d96+FVk~ z!Oa%BaAf@R%&y?+FVlHuaA2AE zog7#uJCWK5CztVve`d1fz}aW@eVMZNZb|K_NU}!qfRpHvgd@*Rgq9ynKLdyi!F0S# z^;Zq1|4&GHM}niv1Ov)xUSs}a@w0JsS>(xK<{|cVa@aEwR?j~SoE&zw2D#>I$2&Rf z3MNjKlv*3IRwy+adw`DY=wsAuppB1na@gf;MBoi*Cx_v6s$ryFBQ*VKkVqi?*~NZ6 zh>fY|TeSPCSc$kvM3qLHai!A6!TE(iM{tf)r6GY%oO%}6tECwh=#$hSy;>q|szG{f zJfQ70NUuzZ^IKJ%6X|ng4U&LWuR*c^JE$6@4-wD}HAo+c2YQ5d|3gaDA5u|IrrrJ2 zAPI?RH5L|u^krneEu~;IGT$AD7`~ZO3_tEi41E|G<&Y#DdUc0o4ekn`L`kUVE(t6t zfg%e-n=P175eo;|4um;i(uvo5Q(2(q9^=^HrPmMyHErTpS-Uh10o#3WPd zRvv-muZ;47 zcjZ5qajeo(RS5I2o(^=WSAOG}NITd_(6ds{M8fM7eBxO}oQYIKN)J0d-87|jssbRu zv!!~d17k4QM?;&{Xdi{O!86y$mQru8LZ*)mE#T$|8OOGObFsqZ!6c&MCi49Z5tycG zg$rJ$vs5*abE3lK^EgC*D(U{Q+m)}~&Mxo~hM{uGToWS@E2FK7QW`&DR8EtyrV-S$e zjdZ^3{b7a6ShO?8D+Vy;7_(wvJ!?A93YXJYtEMD;E}`eyMfx|Gn z9M80}CCrP}<#-14VM_;w8JFEaM~qAVF2|*Yfmp4_MON;0y~d^Y0>dq|c3fXk_=)t@ zI$L;!3(pIfi&gZY_!TZZzhfqfQ{mDBX1ofQd+`&iaABVgQH6^T#)NGEp(h z+eKG%<{T1%zpiV>QWkl*h=tBG%W;~@D8h#XGJTh^NRTW4h`k!hShmwLmc%tw1Fu_o z*vh=MZsoH;YFnse83L~1e%;Ea7?E1HlA!1U*Il)yB_T0vY7$ULCHYZ$oPLlVr|>mQ zf*YvuFe~A#)_8mbSSEf7%HOZ?kb?`M14Pm!PNVje*?g%-oBT)xZcaH(S!&ec_$(d7!bqI!y zD+CB)qtDum*L9qh1Vg@I*@{Hg4a*;CUB|9OX!(Kp%Yeubn8(Xhd)27Z|JHTv>CyKu z#C{{(6vFDcOM$wMk_NfvcE+pgC^B)Xq}0}s^+BoYXaODB$HvHmqg{_v*Rhw42(u4E zncXBPh}Wrxk?ccXDc3*6em#hdDOXp!uZoq37DNOi?`B-7v~h6059kQaae|Q&=)@^k zfxTMSVSzqLUB}-_q)l}l?}`Vsy{_Z0Q{w#hD$a@YIkK)pz^d1ESb!Z=UB?#)=!UwE ze~$-xgm!-}CF+l=s3+6ze(E}eM6|jNi$MA^GLK0q7>&$t1|o)ErWC{cHHXH?D0Lk= z^y;q48qyR#iIPUpT@qMQ0(BjRHht7}=)I{dP;-w75Dcwe5+N~chpB}NSvyNz$6U;6 zo&#z{SM2cB54WDae|a_#8T?DUO#4#(%Q=zNycUP(I})a>=Jgs2DjabgiK`htDlOHl zFo&%Gbg3PQ6j{wH4CAy;Vj=jDtfsC3vz67n%_=quJx*3EqY#`Z<|r_JgE=y^iJ8^Z zDWgr#c7uR)Zlvk4_lH@{^P^1}&l2H|J7$(>oHZS2R`Y{N1j>U1??)nQkYHA_nh)bJ zJR74IQhm|NmM|~YtmfyT4_mM}%(#3L=!kKN&T7g%in);L-wXq>T91dU-0OOcOYg@G zx6s;geMR9X(pT$j;aN={6*DI&^`ZD#O&-%U6UE7Du0MijH8^7RXehLSe>`P`J8b5Ncr5BqNeJ)^#x z>bxY%kLE;I?)&D*dm0j|ikECW5{@z+ePQo5hzc%px2MwsR*(&wnzZCH^>DsGweQ@j z6j0?n?A4H4y)ZjC1y(YxOL)JA0|M0F05y3*;&8nc2Wy)3Y9O_(oH7%LdmTT`dIcj= z)2!Na{J)U`M+ud1|ERY5$;jN|4J9@|%ztut-25ae8rjobE`EQ@Eob6(*26 zHqWtHO&#w9mWeZnI_;;9<=_IT<53`*fz&aM#Y-K(4?p2oo;p4&on<8l25=(=4&y1% zF)m|~>Ew&A6YqY=c&kIE>9lIy4m^tuhXrseg$D=V3&^964j5E-QrG|9=Y%_v>Vm9! zo-Eb;#9eGbaDOKSH?!}G_-qnf`OfmwNMzkvCP+U|3gz-o6}ZTEphFH7;6IZy1w;>x zum{=DMr$Vt$ko)}oyrSR?S7aD9zP!VeIPQ#1MxETDb;x3@A^MSfWwgE5W%Y@=F}+y zrUCYKhQR!_0I3&S2;`a<;%{L4%oalg7woyYA?U>BBasC~$u+M8Iuc!ok(GvxBE#m3yElHW{W`jurK!z85rzK zZy+*wc}f|)p&uEfwl7MCSw~&nd|AWG!V6JSI=T}Ad(S|I+0f<$d@`0V7nx8uOFB+^ zAL_t^{`$tsciF;b_v%Q?w^)O>?b*KGHa%n}Lo%7oFyk9+ElD{G;|FhMq@_L3wXO#Y!rHKa0Dlc!3m6i-M#aM z@Li!Gmw-POZ0yD?vC%1`ZP27aQaW4G2HE?=5}R*Cdv&~I0i%jBOBNntO$SeKi5p9q}@vog!!-o(oE?|b~tFc7O5c`S)gS#|3#47bqqpX)0MKasv#XA3W};gNqH zwzL!ZB{n?IV&b4>mHVD2Ml}r;mGS(6 z)6=LrucS#wEaNnFfoI=!G*UE`8un_aqdB7=T^(%U%%4~pw-(O407z|naaD2s!kJqc zky<#Dpz4G94QId{5I#XdV%S6_ppXjky7V}`Dm_l&tDXcmP-J3Oz*#LaX#&f{9YVw9 z7n#Vx1&U0r1ELuyGQqKUMJ5m7C;ZBbOk&sHQR78QO!)i;gZwP$79GsU5|c|~mYB%b z0z@5QFu)$AzJJ!|hr3eYn`_+Rom<-Ugk6U~c%PQSo7pmx|44!=-(7thiLAS;KbA6+ z|Cb0Jzs%(KKx8O0!OL{Vr|vfYx6DNDs$(B%aO8S`G^EUA1O67h!M5k-*Fq;YkAf^I zN}0)VKu31iF>>>`6vQbrS^41H4YzB?*!~(!fu~UOj+KWhUonH&tzN++gY1 zj3t$p?l;0fz69t9$Z>+D66J(xU;(>YW@14-NtsEWz-%ZpDa3=>uF88-qP$;4Igu(y zmYE1x^)eF+u!AZyxr2aiC^NY;9_SI7)fc8j{befZ$#lD)G7}*Yt<1zCkUs3o14IUf zGLyFrLr7^ijW3c-gYS#=GVtt4yCDmG1v+3^K} z6U7Jx#&0k}hBh&Ct2$-0>G=VhXmL%Cy+6#Y{yf^0@mv*drDNu*9%W4jnp-U=5h&mN zPa%ucv}-aw|bYAEwL@J)^)uI`bcA3UJi7`xJ2hx<(9-;*LAyLAXe+~ zTr2nbEXDe!TMW0*+HrkF;V05p>ulk*_+)X~UDD zZTRKNR%4>-)N(u(nTl3Q^f4hHQzlZEC z8^V-Nh|JPL3TDGmwyBorER40HEBCfpRCALU42N2*4gkzm+whCTCo7mTDQ>oM9LS_{ zJp8d#H>`u7L5(Fom6NbnLkfLF$lMpXk`^EKeq}$YXE4xTV6Vr&N;b~5vSCe#?*LMp z6C-oBVDI=z65AP(nh>8iZ5X+K5e5yP{U(%PDxxF;rH{=a!i4I^kG00BOkq<++KPQc>78f z)p@v5L(Rt_cxmW6@DqOJY3Mb92}g3wd;-9qjv5(9#uic4nkH>fTF$11KYc7wx z5BXK9)It9~+|{#h)iC!v2do(2bC<+tX4ANDNCFVw$h{VctQ)xmY233s1DDB)<0?lp z{+w^!B>Oc-q4n3+nt38{UX`+GiO)DlK*Ih`myho!`Swr*%gx1g}J)bh(3K1VZ74Hpiml9ih@vQS}bOmnqzF;AZ?i2JWa7 zupP$1-^topj`7_zoypdVg;uLDEv6#uI=dZaeNEFYWI;b-qdGytH3XM2f3h70M25+R zm%}Gp#w)pJMnpN(Ms{ZaG;1*L7^#Dp=tvp0tp`~4B8C8v!`n<8;!5D;Q2d|J|9-MI!6!E~5)# zLf`~Z*T0#ZlCQ!chEB=XSh6#5*%Rpcdx zTWIaLZlj_MShp8n<#f8OdYdgWU@63RIsHGMge9)ipFyISI=$YrJl=leW{8a8d1(-G z^LDaX7}b#>Ey%L)9c`4ApN$YVb-~_gf0@y?z(3T;>=X8<&?ksYzn9&Bp^(1`x3TFq zT7&z&00ttLNXXW^^SC|V-|&5zoyd>d^G&0fC{Emd!_lx`{mOj!a}<7JaeMYDP2Ap# zKX3BGeCZ<3KXwC^^y96jA8)u#luQN!lV-8bMqu(n;FS182)`eglw%46CQk;U!38F92wq_F z_4o4{mt1T7 zokS&nuZ=KfRC2*FNhYfwmDKNLH(n^<-!Q4!ErB1EMAQ-q*m`#!mE@Znz9q90`B6!} zXEYPViArt*c)h6PY50jnCE2G#7nM90ihiJIvfU}vC!Ka43P|&;94U4I<<_uLqFhMN zeMBiIL%Q^fDbEpwCD|)?Ub6l4(M+L}*?Qp2i?>~P#;F&becJh3w~l4n)3urd)wPr7 zT+`}0W0`__VJ53FpKhI9iNc*v6J5D?%x1VVL;%Lak&X;)>@Az2ze_{ATd>)87*rxw zc@Fk!2!lR-2J}cN@r-wh59%ok5vx_835mhSO+X&`*3wMw%!2EL3g*!Nsg`2wu$kGx!O=@|g985KBo)YPrn<@983- zj1{{+`wQMYq!^t2#5 z?+dMBqtIi>uL#yhaH7O41LHT;9vj*u3-Rk6gsJ=QX2`671Wm-VRak!p9a0dFchmD5P}J@1Gbl+`7mmllVNjqluoyq^)p4P1AU(Y{=&^y(Afb zG>LflME)w{Jus2+@{CX9$M7cRiToSw{_13mJCT3Mm{Vz~V8bTz{LH{7^3M!Iu})+m zn2?FAODM@iJ_h)s(hWz5Ph>F~Wg-X0V3^2;Hb?V`EH#^~WKyAZ(&(A|B?HP-;OcU0 z?+??8zm8tsdFlnXB{3uO-(^h)npS*v5{dGi)OAQ?-AT!`;)+WeYts(RWKY3kd$swFa6F)%jE8r7!kQL9A zEa5jKE7#3dc;cFq7W86s_QK4`3xF=QU%*d<6kO>pLY<8YEVy>QDPE_OoItyZKnw5( z(0mn=dT45I&wGv5scJdm0(l=BvPw&*X&8`i0lL&c8sDBLz?-*+sEZDrYACE`yJ7{1 zGKq4;EyTVEFrXc`F*sodY-3`icfXi~C2m{3fJ8BE%jQBoQ})e^9+k_~3pF^c#@EIe zE#>m@{UqaNqWCVuH(W1?D3HHIqEK~6Qv{xf<&ifYH?$M^iC7*0H50{2#ID-R6S0Tk zCzgn1pAKCj_5zmfhZ7L;h3dXWtK2Eo@^B=?sdy+v>}2fep~+ZF?|md>YnE=af{!ub z?3{z|$QsMk3J3C2PWzl~XKau8;v0;}%w%eI6x4vO9qN=wl$t$3bmhKyHdC_}Q5e&+ z8?6N1VrXq64bNGE<-XIj61~cq*sCE;d)16-mXfR;5&G*nf65zNv>!3lB%4cMc3FY3 zCQ~m1Qk(B3(`;y@{bcIJj7UwUuHc((Hu(&^7#aXS+EvNZRC=B!2F24dVnGZX1%3v8 zlxvck+tYLN+(B`ZAWzS>A&Mp@BnBiBP)MBaOOMk%>2V5o2c-H3vdm@^G8w zes+`(yGgk-jecz*Gf{;jEXOAr2QtDu;>m>I1t_U#k$&#KBdM|v`J?Ad-_MLAW9EaLtKj9ihL_1i>n z`I+ip0g)k7jhCtCsRWsxb=th4AuoJXEOZLqfj54biJ=r0V;Z{M-wEUj&2mogo)a(u z;h6u#N}y*Bx9mI^#1c0sG@ETK^~`ZMBgbV#Zb6Rg;p1w<;kHgY2M3Z0G3KaDfqIV^ zqJch~uRVs?TI}})tv(jS;W@vH7{VkxYt%-vo3d6cpnn zE4To}d0)^nHX?8gw0Ig`r|gn=+8BwaMQK_f*mef?>p?ss^pU`PrgmS|ZpRI|oyNFQ zX{pT*!})xmBRI!7s!Re6M+dVrgTrQB;OHfRz53E13-n1|8uV<5^b$U)3DCRa0d3dk z>r>+Fs5mFmXC5LJJb|aBWRV4|3*i-5y9vt{U~>kY4mWNAt-g(5%`G6g@$=(h9dZ8N z^HPF+Pz5`gQg2p*N+wGmN3Fq~LGarX#EhI_fIJtqFa(f)BSP!hljU>;A?Uvun?zgg z2=xB~dP!rt{|4w%n-qTfOC&DgLeSpRWSIkf+4X;waxmKUPYgr|A4@5O&-WvQKJ2>k zvL+pRb$@Hkvk3Q5Nl5G7Bdp?q6DkdDSe2OY3NuFcSh~A<2kNNlqKbAHQ#?OszHa#9 zi|w$$8khja+n(+e2qGA=l3V&a;#T3dIa)m!*m9tl^TAj``%dky_ zi!5lQm5(jq^z27KQeKc)EI-a>Ni-~Y&B+oVGPwSDnOY^q^>Yr{I%iX(cX8fbR~5ZeYE68d7@L>93W!OzTtyK!9g`t<1%2z$#@N=&k`e0$ucL zWu)6`eyxm$oI2U9CQ7JzNCl6s?`j1PYBDLs!>>eKO)Ih#AG9r4Rx3uM7|g&J3URVkUu!mY(tPPOs&sW2(UdQW zP{-J&9A47FvVNItx!xhwzK{eI795(CYu#GLKL{K`h!vz1Z)Jn`-f0viiWoTIwS-OAY)5t9+?Nh6Vwv@(H|!Z;|15qFE1VH&;!AFe(ww z>%TJ2R9Y(UFpK;!&=IqeZ0oQ9IYAAfCB7dujKpeJgiu24iY^^uR~GNx3;HF^$^!UC zp#7;8S_%)hDq<{(RSAs1U{wrlHsE9YW}TOMtkXqL*}pOXtn(7f`5itPPiee(Z}-dOV5K}=7@ELi(8YdX;SKtXAZ&tlaB*jo$NH4Y$zRaeYPMC(>8zY~cl#JcZ1Y;C3Rvz>??v%|vku zEPoBmcqiTb20yU^OZMr|6-P2F00DA{yi>@H23vT$9|~o}QcM4vL!uWu8G^ z6A}Xw2`D5^_oc__p7c0{`#^GT2dYZV7W0~U@?|ekZ=xQ77khRJt$j|X=O%d(=&`^l z*?6PX@vBPZm;zO$OMqx_Ri!utzp4~J;a6T&8uEw$bE{bB@AvS!XTHXON4ykhG1d}U zQ@ZuKLbVLFX-)>7mLj=I_yR{7!J$RkX-1-kG&!ME$cOyVanDzEO*GG))r`&|w*%1q zxI}k`D@Kz5#rL;gLn7<`HbKScRZ=Iiybvf>fvCtf$PNZj5}F7PUJ?pKhH&Jsw7%30 z{+B}PK{*CP;<4i=R@J7Lk|$A$B$aNfPXx{KLKdb9{4bp4OL(rp!VVsi|MjaDl+ zfsVv2;#9h!0^GT)be9`l>Ba^H>u;daO=Fn=+h?WQ8Q8Or^`(A2Hp!`+sohvLp&~>S zk*+$8@ukvI^BV^C`9Md&j+L$wXs4-kW8(z;wE|8J1cLrxir$`$H}HfIR`j-88-ogF zTtQsV7*uKF2*Lrn)Pm@v=#32*Ff8v5xt0eF; zU1e3jWk83aeI0M&O*s89v`4l3tGvXWYhPu|skBu1VJpvn0$u94WF#RNk>C@u58o z?bIaV;S+frhzuJLygcI*`BJ=zc_Lq~-CtF;xD)vj#+*t^1sgVzuLZgRPvo73p;#xf z5KPEK)+Ll=BHv_1mm3F2R>t8!*~RDMqPUGa`=oLNP*%9@D|>DWo3QRar&Tkb9Ktaov!a=oT;=_dSTP` zpMfs*bTt+zzRNHY>ueQ537M_BbjWOtC{TRV3N3|)&s8xNWv&KBV3@0hHmhiXB5Jx6 zy52f^dcM*CtIk2J>3QRT$`V7)F!usc>Vx6@v~qs}@UIe%Wm$CshU+m1icjXnKx9~c z@pAZNo)hJW$KeqDZLg?~BieC-#)1k*T$8Yw;iJ-0jR`XeTYxULNk~zSxXCb1tHBV0 z4>1_J1`vZWqveQ~Tg679=jKLmqL`b&_zmX9&}Ji=o3L3a=bBC#ZF&|O1f+8#O^>}l zR)!e8@#ke-nDdBR*2S6*v<&gCBm(7Wnmdrlnx>JFiy16Kd?OCS-ympD1HIYGmM|~Y zGQ_`tKGKBq{|4xYafwle2x9f3`R3=WUTYYL)q1?r%Dt}F7^vzQZlSf~`ijC&q_5W5 zBFYdE1CoHT6ZvI`JXOq-u_{rVGQ{r#GhP|u5AYK!Lu8*0T^XW0=MhSDoyku5W@kpu zc?|a6M=9c7QNR}LHY+X#&Uy4qd5qWc&E(OJL!+wdsqRFgYQsN(5_wvDh>ms?Pz#kY z)*H&23=@H8Qmt*|TDvL&z2l$&rgA*|ai~3!bu{Shu7jV!2ubuRE3sEY&EZ9ZR3^2k zP$0qFd-c_NBkGT^yCzp87AIJ-uoe|=22$H%qXOm^6>efgYEhwfEF-RuDldixz>juS z@^nsmp3WW=PYFuLg8U{V1}qX#NSv-skJB^L7m1-}-PxzHrs>$;Y#dH^Dl$?LaZ4+3m-}?4GvR3U>TB{~{ z&rEgeu)wqP4l}2k4?IjkDV6eW;EsA#>e5El1-EPGmNw0;WeX6#)8_yXp4ob}*C&CB zZ-ichMAnT^f_k;4)C>QF!z;K0Xgc8#&NLLilQRuvCsMiKaKnsW!Iqh9IdCRoeIJ}J zZ;E4)b&ZE_M2{qV^T9-D`PFRi10q8-3olb8RkOms3aMsGaJr#jASVEW8n{_F-7xZe zLi5P_I-l@!h^FVk1X1^Ogao9lrWA8Aw7=27@F2^y$i383xzybe0CdER0A ze7uTtB7Kgm+7z(rRht%I`>fi03c=b?wRvtltRs|qM@q1trh=VJsZ&&K3jDPyK@0q$ zRf2|T6fh}!CHO{@GBFVJZ%m1PwIB5RFe%E>cslgz*2fwT6^@6JgV6mBSU>`0f`&F* zFb5%IN?iCbFH5@PdT%NV)VO=@_{Pe+BNhQ{hk1#=W$i5IEFp2hfF5No$J zL-TDmV3jfsbUy_;0$p^5Mmk9542_4JI-RW+NvL^9eplCblHY|oO#4ZA%T7_n6^;*D z53Iu!qfzW*U?Ay56ZG~fWK?$C0^T1Xr zhHW%nrn6Kvk#nLb=Tw7$bZ(^c zW$zD*Lf#SW%<&{U1{Px`*{}={hwI2Us3#Q65YjXk zgy4Y1UB)tzXH(6I0+Dgh0_s_*u0^5(kx|jrAv%sqfbXl1u{=Z`HWh5{nN~{+8SZ$B zV7Bk$s3dNcCu6UM(va(CR53BU46n2_2( z^~@%2h{01l5omFRjI4uEj$RUr3kjmvl`5FF`OKzRgi;~@%^w~22-Wplb0ZJonN5N% zx;6v4pOom%Yz@qJk^sf`ecwbP>%Q-gvXnFuw&NL+}nSQx{VW-u-V4OfOqn ztS=h|^V({oe*ng&iolL1y)W8V*wHg=;{C$~}w@UDhCgp*Fp#SES=)b!k^!qR=N)3z- zy}IeKhJS_Qp`=`NzXKMKKn;wcO&>KddT%NV)VT8u@MFwn3SR_x2KX1AYc&@S(fYqu z)zz5hdEWnInhFw8OJVRbUC~unajo{Mv57{b8hqE-VdTBK*dkDmwlF7_cl{8pVf-oD zfr>DK^P!hC9@Jq#mwIJ4AENa?3};optW!w{CL|B5ONiuQBM;FUv!bhM3M<|aqfsVy zU<`(dZDv=29ak@u59L>)A=f!zc2!OxFVw886d`G$RxFCcKH~ zr|T2Bt=(Up0dZaQ24ha8rGgD}(QgB~0Z-)phM`y|vJgzjMAjvgWFo)XiY`Tn7e$EC zC=)p_2E#-)w26C&mQETyldm$Mtg{nqCeOu!tdA#=8lT_)%n%98Z@e5nzvo0j)}uH? ze;02m$oiJXf;!FPnuxD6d{kPhF<~a+hd`IwM5HLl`m$l1R{J3YA7Vdr4JbMHzHRjo z`yW5))t%AGtl=%H3Wm#o8zI4xVuS*W7>tmiP0Y$Hoif@6eZ(Lss!{5ez}_ELX8kOB zi@_^hFx(xp(&g){=|C&9&QBsx9-%)MiL4R&S*gsr0f*tcBHD31H(J>ecE(zn^&IFU z&5oi3bi~R;S7ymbp}83RI>SJ$X5=a>_qtwVW!4pjTWIaLzM}9G>8o|N@X9QnlHw^f zJCR?R#j}KFqBxaVZv;MV&^cQ0-kloO-e64#QaqU8mi9MbBF#-Qh;J)9iM7yGpBe zxg-0Wy3;Cj8ZGE)1YiHt?i6ZG__D0kXmntx&Q$q8&z-lW=PvVxkca#3hXzaiuiaJ^ zzOCpqCi4>jEdB~ZSp;KlP50cxr=Xj9qvMbt?{-(T;V33}>wNyeRHIev-3=8momRP- zpKR1>K-h*3H+ol`s>812Zz*?5`N?Xb-3Dghem;S?u)O6o8?8>h>fG!Aob%nKr9xGF zUF5EI4wM1KPNCCn^G1u@MMY<#yAS$Xc}t;H2NaCBn zHj2=y=ZGdnez^RW`f6$2C!;lBiy>6{0lkt}Jvrjl8_%&M$+yttfVD&Ad=a0G3^V z7t=efdZCJ1DOU<^^EjIE8YN$|$IR~1Jwv(rnOiLy^`J2n_vZu1E^2Kty zFi}ND{829EQw65oa$u$nlY`AW=yZkOEI(DQ0&`$(*5N0(N!w|$x#`rgw<3sqS*vgh zh|2qV`8;FliZa}rAy$wdr<8g2Pm`jE#ZY!`0u~U~_tRcPHE>p8bId54u~f7t1i4I(hE}bWGD$ z0~?@=9Wc;vS9l9J+JExgtq`zzLDXeaa`bh4gavRoXfC6f-vRlzbcBlGzMQk3_1q^l`X3P%I3bdhc%t~Vl zyntq>+?+;F!dt3Y(Jglapc>@8rTZBUr3XuoR7PPae0QjG@klH#ZtI5&kn{ws4lpZW z^xKNj%%HDBDL8WvqSpb;{j&6UENFOE8)*= z_~)&#Pp-Tj|BN01e{%Tex+CGwZv2C)Qh5Y52YodgWUN6f)b{s@8n}k>z=DQ8MvMgy zrpjSQ0V8Yi&&fx_pDp-j=P~f-Y4|6z8UCDrfAGDH6@0H_1<%D|XXaI~F0g`igI#w8 zHIQrqu9z%?nZ+3llhV6_>mYCE&2)OjYX>V07}VNCqbke_YkGusQM4XWdK}?*WkiQ7 z{ew#bCI}X&wR&IvFW_0iDm~fg;u;KY++?F#^=u#bX^VII*Ixl<=g!_$u;MfeEm*t2 r5VgU`dN&k{wQ_lxxXi5HvT}X0+AX48-iJ%;(jxj3{?hBoCHMaUDmQwo literal 0 HcmV?d00001 diff --git a/.doctrees/moptipyapps.tsp.doctree b/.doctrees/moptipyapps.tsp.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ca0b9fdcb55090f78157ff2009a9a56166f8aeaf GIT binary patch literal 225631 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 z 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 CCaj(S literal 0 HcmV?d00001 diff --git a/.doctrees/moptipyapps.ttp.doctree b/.doctrees/moptipyapps.ttp.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7684792747024961634b7937b52d904e28571f9f GIT binary patch literal 298987 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 literal 0 HcmV?d00001 diff --git a/.doctrees/moptipyapps.ttp.robinx.doctree b/.doctrees/moptipyapps.ttp.robinx.doctree new file mode 100644 index 0000000000000000000000000000000000000000..14447a9e0a2c877c2b097e9b0d7ba28c3b41f927 GIT binary patch literal 10205 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 literal 0 HcmV?d00001 diff --git a/.nojekyll b/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/CONTRIBUTING_md.html b/CONTRIBUTING_md.html new file mode 100755 index 00000000..130b2ca7 --- /dev/null +++ b/CONTRIBUTING_md.html @@ -0,0 +1 @@ +Contributing to moptipy

    Contributing to moptipy

    Thank you for supporting the moptipyapps, the applications using the Metaheuristic Optimization in Python (moptipy) package. moptipy is a library for implementing, using, and experimenting with metaheuristic optimization algorithms. Our project is developed for scientific, educational, and industrial applications. In this package here, you can find programs and codes using moptipy.

    1. Contributing

    One of the pillars of our project is extensive documentation, the implementation of many style-guides, the use of unit tests, and the use of many static code analysis tools. Our make build requires the code to pass the checks of more than 20 tools. This may make it complicated to submit code contributions via git pull requests.

    The preferred way to contribute to this project therefore is by opening issues.

    If you nevertheless submit a git pull or otherwise code-based contribution, then it should ideally pass all these checks. In other words, the make build requires the code to pass the checks of more than 20 tools should succeed on your local system.

    If that is not possible, you can still submit the pull request or otherwise code-based contribution. However, we will then need to invest more work to manually check to see how and whether it can be integrated into our code base. On the one hand, this may take quite some time. On the other hand, it may also mean that we eventually reject the request and manually integrate a very modified version of the code -- but we would of course give proper credit. Finally, it could also turn out that we simply cannot integrate the contribution at the current time. We will, however, definitely try our best.

    We believe that, in the long run, having very clearly documented code that follows best practices and is thoroughly tested wherever possible will benefit the value of our project. The downside is that it takes a lot of resources, time, and nit-picking energy.

    If your contribution concerns the security of moptipy, please consider our security policy.

    2. License

    moptipy is provided to the public as open source software under the GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007. Terms for other licenses, e.g., for specific industrial applications, can be negotiated with Dr. Thomas Weise (who can be reached via the contact information below). Dr. Thomas Weise holds the copyright of this package except for the JSSP instance data in file moptipy/examples/jssp/instances.txt.

    Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in moptipy by you shall be under the above license, terms, and conditions, without any additional terms or conditions. Unless explicitly stating otherwise, contributors accept that their contributions will be licensed under the project terms. This also means that they grant Dr. Thomas Weise non-exclusive copyright of their contributions.

    3. Contact

    If you have any questions or suggestions, please contact Prof. Dr. Thomas Weise (汤卫思教授) of the Institute of Applied Optimization (应用优化研究所, IAO) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥学院) in Hefei, Anhui, China (中国安徽省合肥市) via email to tweise@hfuu.edu.cn with CC to tweise@ustc.edu.cn.

    diff --git a/LICENSE.html b/LICENSE.html new file mode 100644 index 00000000..eaeb1aa5 --- /dev/null +++ b/LICENSE.html @@ -0,0 +1,676 @@ +

                        GNU GENERAL PUBLIC LICENSE
    +                       Version 3, 29 June 2007
    +
    + Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
    + Everyone is permitted to copy and distribute verbatim copies
    + of this license document, but changing it is not allowed.
    +
    +                            Preamble
    +
    +  The GNU General Public License is a free, copyleft license for
    +software and other kinds of works.
    +
    +  The licenses for most software and other practical works are designed
    +to take away your freedom to share and change the works.  By contrast,
    +the GNU General Public License is intended to guarantee your freedom to
    +share and change all versions of a program--to make sure it remains free
    +software for all its users.  We, the Free Software Foundation, use the
    +GNU General Public License for most of our software; it applies also to
    +any other work released this way by its authors.  You can apply it to
    +your programs, too.
    +
    +  When we speak of free software, we are referring to freedom, not
    +price.  Our General Public Licenses are designed to make sure that you
    +have the freedom to distribute copies of free software (and charge for
    +them if you wish), that you receive source code or can get it if you
    +want it, that you can change the software or use pieces of it in new
    +free programs, and that you know you can do these things.
    +
    +  To protect your rights, we need to prevent others from denying you
    +these rights or asking you to surrender the rights.  Therefore, you have
    +certain responsibilities if you distribute copies of the software, or if
    +you modify it: responsibilities to respect the freedom of others.
    +
    +  For example, if you distribute copies of such a program, whether
    +gratis or for a fee, you must pass on to the recipients the same
    +freedoms that you received.  You must make sure that they, too, receive
    +or can get the source code.  And you must show them these terms so they
    +know their rights.
    +
    +  Developers that use the GNU GPL protect your rights with two steps:
    +(1) assert copyright on the software, and (2) offer you this License
    +giving you legal permission to copy, distribute and/or modify it.
    +
    +  For the developers' and authors' protection, the GPL clearly explains
    +that there is no warranty for this free software.  For both users' and
    +authors' sake, the GPL requires that modified versions be marked as
    +changed, so that their problems will not be attributed erroneously to
    +authors of previous versions.
    +
    +  Some devices are designed to deny users access to install or run
    +modified versions of the software inside them, although the manufacturer
    +can do so.  This is fundamentally incompatible with the aim of
    +protecting users' freedom to change the software.  The systematic
    +pattern of such abuse occurs in the area of products for individuals to
    +use, which is precisely where it is most unacceptable.  Therefore, we
    +have designed this version of the GPL to prohibit the practice for those
    +products.  If such problems arise substantially in other domains, we
    +stand ready to extend this provision to those domains in future versions
    +of the GPL, as needed to protect the freedom of users.
    +
    +  Finally, every program is threatened constantly by software patents.
    +States should not allow patents to restrict development and use of
    +software on general-purpose computers, but in those that do, we wish to
    +avoid the special danger that patents applied to a free program could
    +make it effectively proprietary.  To prevent this, the GPL assures that
    +patents cannot be used to render the program non-free.
    +
    +  The precise terms and conditions for copying, distribution and
    +modification follow.
    +
    +                       TERMS AND CONDITIONS
    +
    +  0. Definitions.
    +
    +  "This License" refers to version 3 of the GNU General Public License.
    +
    +  "Copyright" also means copyright-like laws that apply to other kinds of
    +works, such as semiconductor masks.
    +
    +  "The Program" refers to any copyrightable work licensed under this
    +License.  Each licensee is addressed as "you".  "Licensees" and
    +"recipients" may be individuals or organizations.
    +
    +  To "modify" a work means to copy from or adapt all or part of the work
    +in a fashion requiring copyright permission, other than the making of an
    +exact copy.  The resulting work is called a "modified version" of the
    +earlier work or a work "based on" the earlier work.
    +
    +  A "covered work" means either the unmodified Program or a work based
    +on the Program.
    +
    +  To "propagate" a work means to do anything with it that, without
    +permission, would make you directly or secondarily liable for
    +infringement under applicable copyright law, except executing it on a
    +computer or modifying a private copy.  Propagation includes copying,
    +distribution (with or without modification), making available to the
    +public, and in some countries other activities as well.
    +
    +  To "convey" a work means any kind of propagation that enables other
    +parties to make or receive copies.  Mere interaction with a user through
    +a computer network, with no transfer of a copy, is not conveying.
    +
    +  An interactive user interface displays "Appropriate Legal Notices"
    +to the extent that it includes a convenient and prominently visible
    +feature that (1) displays an appropriate copyright notice, and (2)
    +tells the user that there is no warranty for the work (except to the
    +extent that warranties are provided), that licensees may convey the
    +work under this License, and how to view a copy of this License.  If
    +the interface presents a list of user commands or options, such as a
    +menu, a prominent item in the list meets this criterion.
    +
    +  1. Source Code.
    +
    +  The "source code" for a work means the preferred form of the work
    +for making modifications to it.  "Object code" means any non-source
    +form of a work.
    +
    +  A "Standard Interface" means an interface that either is an official
    +standard defined by a recognized standards body, or, in the case of
    +interfaces specified for a particular programming language, one that
    +is widely used among developers working in that language.
    +
    +  The "System Libraries" of an executable work include anything, other
    +than the work as a whole, that (a) is included in the normal form of
    +packaging a Major Component, but which is not part of that Major
    +Component, and (b) serves only to enable use of the work with that
    +Major Component, or to implement a Standard Interface for which an
    +implementation is available to the public in source code form.  A
    +"Major Component", in this context, means a major essential component
    +(kernel, window system, and so on) of the specific operating system
    +(if any) on which the executable work runs, or a compiler used to
    +produce the work, or an object code interpreter used to run it.
    +
    +  The "Corresponding Source" for a work in object code form means all
    +the source code needed to generate, install, and (for an executable
    +work) run the object code and to modify the work, including scripts to
    +control those activities.  However, it does not include the work's
    +System Libraries, or general-purpose tools or generally available free
    +programs which are used unmodified in performing those activities but
    +which are not part of the work.  For example, Corresponding Source
    +includes interface definition files associated with source files for
    +the work, and the source code for shared libraries and dynamically
    +linked subprograms that the work is specifically designed to require,
    +such as by intimate data communication or control flow between those
    +subprograms and other parts of the work.
    +
    +  The Corresponding Source need not include anything that users
    +can regenerate automatically from other parts of the Corresponding
    +Source.
    +
    +  The Corresponding Source for a work in source code form is that
    +same work.
    +
    +  2. Basic Permissions.
    +
    +  All rights granted under this License are granted for the term of
    +copyright on the Program, and are irrevocable provided the stated
    +conditions are met.  This License explicitly affirms your unlimited
    +permission to run the unmodified Program.  The output from running a
    +covered work is covered by this License only if the output, given its
    +content, constitutes a covered work.  This License acknowledges your
    +rights of fair use or other equivalent, as provided by copyright law.
    +
    +  You may make, run and propagate covered works that you do not
    +convey, without conditions so long as your license otherwise remains
    +in force.  You may convey covered works to others for the sole purpose
    +of having them make modifications exclusively for you, or provide you
    +with facilities for running those works, provided that you comply with
    +the terms of this License in conveying all material for which you do
    +not control copyright.  Those thus making or running the covered works
    +for you must do so exclusively on your behalf, under your direction
    +and control, on terms that prohibit them from making any copies of
    +your copyrighted material outside their relationship with you.
    +
    +  Conveying under any other circumstances is permitted solely under
    +the conditions stated below.  Sublicensing is not allowed; section 10
    +makes it unnecessary.
    +
    +  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
    +
    +  No covered work shall be deemed part of an effective technological
    +measure under any applicable law fulfilling obligations under article
    +11 of the WIPO copyright treaty adopted on 20 December 1996, or
    +similar laws prohibiting or restricting circumvention of such
    +measures.
    +
    +  When you convey a covered work, you waive any legal power to forbid
    +circumvention of technological measures to the extent such circumvention
    +is effected by exercising rights under this License with respect to
    +the covered work, and you disclaim any intention to limit operation or
    +modification of the work as a means of enforcing, against the work's
    +users, your or third parties' legal rights to forbid circumvention of
    +technological measures.
    +
    +  4. Conveying Verbatim Copies.
    +
    +  You may convey verbatim copies of the Program's source code as you
    +receive it, in any medium, provided that you conspicuously and
    +appropriately publish on each copy an appropriate copyright notice;
    +keep intact all notices stating that this License and any
    +non-permissive terms added in accord with section 7 apply to the code;
    +keep intact all notices of the absence of any warranty; and give all
    +recipients a copy of this License along with the Program.
    +
    +  You may charge any price or no price for each copy that you convey,
    +and you may offer support or warranty protection for a fee.
    +
    +  5. Conveying Modified Source Versions.
    +
    +  You may convey a work based on the Program, or the modifications to
    +produce it from the Program, in the form of source code under the
    +terms of section 4, provided that you also meet all of these conditions:
    +
    +    a) The work must carry prominent notices stating that you modified
    +    it, and giving a relevant date.
    +
    +    b) The work must carry prominent notices stating that it is
    +    released under this License and any conditions added under section
    +    7.  This requirement modifies the requirement in section 4 to
    +    "keep intact all notices".
    +
    +    c) You must license the entire work, as a whole, under this
    +    License to anyone who comes into possession of a copy.  This
    +    License will therefore apply, along with any applicable section 7
    +    additional terms, to the whole of the work, and all its parts,
    +    regardless of how they are packaged.  This License gives no
    +    permission to license the work in any other way, but it does not
    +    invalidate such permission if you have separately received it.
    +
    +    d) If the work has interactive user interfaces, each must display
    +    Appropriate Legal Notices; however, if the Program has interactive
    +    interfaces that do not display Appropriate Legal Notices, your
    +    work need not make them do so.
    +
    +  A compilation of a covered work with other separate and independent
    +works, which are not by their nature extensions of the covered work,
    +and which are not combined with it such as to form a larger program,
    +in or on a volume of a storage or distribution medium, is called an
    +"aggregate" if the compilation and its resulting copyright are not
    +used to limit the access or legal rights of the compilation's users
    +beyond what the individual works permit.  Inclusion of a covered work
    +in an aggregate does not cause this License to apply to the other
    +parts of the aggregate.
    +
    +  6. Conveying Non-Source Forms.
    +
    +  You may convey a covered work in object code form under the terms
    +of sections 4 and 5, provided that you also convey the
    +machine-readable Corresponding Source under the terms of this License,
    +in one of these ways:
    +
    +    a) Convey the object code in, or embodied in, a physical product
    +    (including a physical distribution medium), accompanied by the
    +    Corresponding Source fixed on a durable physical medium
    +    customarily used for software interchange.
    +
    +    b) Convey the object code in, or embodied in, a physical product
    +    (including a physical distribution medium), accompanied by a
    +    written offer, valid for at least three years and valid for as
    +    long as you offer spare parts or customer support for that product
    +    model, to give anyone who possesses the object code either (1) a
    +    copy of the Corresponding Source for all the software in the
    +    product that is covered by this License, on a durable physical
    +    medium customarily used for software interchange, for a price no
    +    more than your reasonable cost of physically performing this
    +    conveying of source, or (2) access to copy the
    +    Corresponding Source from a network server at no charge.
    +
    +    c) Convey individual copies of the object code with a copy of the
    +    written offer to provide the Corresponding Source.  This
    +    alternative is allowed only occasionally and noncommercially, and
    +    only if you received the object code with such an offer, in accord
    +    with subsection 6b.
    +
    +    d) Convey the object code by offering access from a designated
    +    place (gratis or for a charge), and offer equivalent access to the
    +    Corresponding Source in the same way through the same place at no
    +    further charge.  You need not require recipients to copy the
    +    Corresponding Source along with the object code.  If the place to
    +    copy the object code is a network server, the Corresponding Source
    +    may be on a different server (operated by you or a third party)
    +    that supports equivalent copying facilities, provided you maintain
    +    clear directions next to the object code saying where to find the
    +    Corresponding Source.  Regardless of what server hosts the
    +    Corresponding Source, you remain obligated to ensure that it is
    +    available for as long as needed to satisfy these requirements.
    +
    +    e) Convey the object code using peer-to-peer transmission, provided
    +    you inform other peers where the object code and Corresponding
    +    Source of the work are being offered to the general public at no
    +    charge under subsection 6d.
    +
    +  A separable portion of the object code, whose source code is excluded
    +from the Corresponding Source as a System Library, need not be
    +included in conveying the object code work.
    +
    +  A "User Product" is either (1) a "consumer product", which means any
    +tangible personal property which is normally used for personal, family,
    +or household purposes, or (2) anything designed or sold for incorporation
    +into a dwelling.  In determining whether a product is a consumer product,
    +doubtful cases shall be resolved in favor of coverage.  For a particular
    +product received by a particular user, "normally used" refers to a
    +typical or common use of that class of product, regardless of the status
    +of the particular user or of the way in which the particular user
    +actually uses, or expects or is expected to use, the product.  A product
    +is a consumer product regardless of whether the product has substantial
    +commercial, industrial or non-consumer uses, unless such uses represent
    +the only significant mode of use of the product.
    +
    +  "Installation Information" for a User Product means any methods,
    +procedures, authorization keys, or other information required to install
    +and execute modified versions of a covered work in that User Product from
    +a modified version of its Corresponding Source.  The information must
    +suffice to ensure that the continued functioning of the modified object
    +code is in no case prevented or interfered with solely because
    +modification has been made.
    +
    +  If you convey an object code work under this section in, or with, or
    +specifically for use in, a User Product, and the conveying occurs as
    +part of a transaction in which the right of possession and use of the
    +User Product is transferred to the recipient in perpetuity or for a
    +fixed term (regardless of how the transaction is characterized), the
    +Corresponding Source conveyed under this section must be accompanied
    +by the Installation Information.  But this requirement does not apply
    +if neither you nor any third party retains the ability to install
    +modified object code on the User Product (for example, the work has
    +been installed in ROM).
    +
    +  The requirement to provide Installation Information does not include a
    +requirement to continue to provide support service, warranty, or updates
    +for a work that has been modified or installed by the recipient, or for
    +the User Product in which it has been modified or installed.  Access to a
    +network may be denied when the modification itself materially and
    +adversely affects the operation of the network or violates the rules and
    +protocols for communication across the network.
    +
    +  Corresponding Source conveyed, and Installation Information provided,
    +in accord with this section must be in a format that is publicly
    +documented (and with an implementation available to the public in
    +source code form), and must require no special password or key for
    +unpacking, reading or copying.
    +
    +  7. Additional Terms.
    +
    +  "Additional permissions" are terms that supplement the terms of this
    +License by making exceptions from one or more of its conditions.
    +Additional permissions that are applicable to the entire Program shall
    +be treated as though they were included in this License, to the extent
    +that they are valid under applicable law.  If additional permissions
    +apply only to part of the Program, that part may be used separately
    +under those permissions, but the entire Program remains governed by
    +this License without regard to the additional permissions.
    +
    +  When you convey a copy of a covered work, you may at your option
    +remove any additional permissions from that copy, or from any part of
    +it.  (Additional permissions may be written to require their own
    +removal in certain cases when you modify the work.)  You may place
    +additional permissions on material, added by you to a covered work,
    +for which you have or can give appropriate copyright permission.
    +
    +  Notwithstanding any other provision of this License, for material you
    +add to a covered work, you may (if authorized by the copyright holders of
    +that material) supplement the terms of this License with terms:
    +
    +    a) Disclaiming warranty or limiting liability differently from the
    +    terms of sections 15 and 16 of this License; or
    +
    +    b) Requiring preservation of specified reasonable legal notices or
    +    author attributions in that material or in the Appropriate Legal
    +    Notices displayed by works containing it; or
    +
    +    c) Prohibiting misrepresentation of the origin of that material, or
    +    requiring that modified versions of such material be marked in
    +    reasonable ways as different from the original version; or
    +
    +    d) Limiting the use for publicity purposes of names of licensors or
    +    authors of the material; or
    +
    +    e) Declining to grant rights under trademark law for use of some
    +    trade names, trademarks, or service marks; or
    +
    +    f) Requiring indemnification of licensors and authors of that
    +    material by anyone who conveys the material (or modified versions of
    +    it) with contractual assumptions of liability to the recipient, for
    +    any liability that these contractual assumptions directly impose on
    +    those licensors and authors.
    +
    +  All other non-permissive additional terms are considered "further
    +restrictions" within the meaning of section 10.  If the Program as you
    +received it, or any part of it, contains a notice stating that it is
    +governed by this License along with a term that is a further
    +restriction, you may remove that term.  If a license document contains
    +a further restriction but permits relicensing or conveying under this
    +License, you may add to a covered work material governed by the terms
    +of that license document, provided that the further restriction does
    +not survive such relicensing or conveying.
    +
    +  If you add terms to a covered work in accord with this section, you
    +must place, in the relevant source files, a statement of the
    +additional terms that apply to those files, or a notice indicating
    +where to find the applicable terms.
    +
    +  Additional terms, permissive or non-permissive, may be stated in the
    +form of a separately written license, or stated as exceptions;
    +the above requirements apply either way.
    +
    +  8. Termination.
    +
    +  You may not propagate or modify a covered work except as expressly
    +provided under this License.  Any attempt otherwise to propagate or
    +modify it is void, and will automatically terminate your rights under
    +this License (including any patent licenses granted under the third
    +paragraph of section 11).
    +
    +  However, if you cease all violation of this License, then your
    +license from a particular copyright holder is reinstated (a)
    +provisionally, unless and until the copyright holder explicitly and
    +finally terminates your license, and (b) permanently, if the copyright
    +holder fails to notify you of the violation by some reasonable means
    +prior to 60 days after the cessation.
    +
    +  Moreover, your license from a particular copyright holder is
    +reinstated permanently if the copyright holder notifies you of the
    +violation by some reasonable means, this is the first time you have
    +received notice of violation of this License (for any work) from that
    +copyright holder, and you cure the violation prior to 30 days after
    +your receipt of the notice.
    +
    +  Termination of your rights under this section does not terminate the
    +licenses of parties who have received copies or rights from you under
    +this License.  If your rights have been terminated and not permanently
    +reinstated, you do not qualify to receive new licenses for the same
    +material under section 10.
    +
    +  9. Acceptance Not Required for Having Copies.
    +
    +  You are not required to accept this License in order to receive or
    +run a copy of the Program.  Ancillary propagation of a covered work
    +occurring solely as a consequence of using peer-to-peer transmission
    +to receive a copy likewise does not require acceptance.  However,
    +nothing other than this License grants you permission to propagate or
    +modify any covered work.  These actions infringe copyright if you do
    +not accept this License.  Therefore, by modifying or propagating a
    +covered work, you indicate your acceptance of this License to do so.
    +
    +  10. Automatic Licensing of Downstream Recipients.
    +
    +  Each time you convey a covered work, the recipient automatically
    +receives a license from the original licensors, to run, modify and
    +propagate that work, subject to this License.  You are not responsible
    +for enforcing compliance by third parties with this License.
    +
    +  An "entity transaction" is a transaction transferring control of an
    +organization, or substantially all assets of one, or subdividing an
    +organization, or merging organizations.  If propagation of a covered
    +work results from an entity transaction, each party to that
    +transaction who receives a copy of the work also receives whatever
    +licenses to the work the party's predecessor in interest had or could
    +give under the previous paragraph, plus a right to possession of the
    +Corresponding Source of the work from the predecessor in interest, if
    +the predecessor has it or can get it with reasonable efforts.
    +
    +  You may not impose any further restrictions on the exercise of the
    +rights granted or affirmed under this License.  For example, you may
    +not impose a license fee, royalty, or other charge for exercise of
    +rights granted under this License, and you may not initiate litigation
    +(including a cross-claim or counterclaim in a lawsuit) alleging that
    +any patent claim is infringed by making, using, selling, offering for
    +sale, or importing the Program or any portion of it.
    +
    +  11. Patents.
    +
    +  A "contributor" is a copyright holder who authorizes use under this
    +License of the Program or a work on which the Program is based.  The
    +work thus licensed is called the contributor's "contributor version".
    +
    +  A contributor's "essential patent claims" are all patent claims
    +owned or controlled by the contributor, whether already acquired or
    +hereafter acquired, that would be infringed by some manner, permitted
    +by this License, of making, using, or selling its contributor version,
    +but do not include claims that would be infringed only as a
    +consequence of further modification of the contributor version.  For
    +purposes of this definition, "control" includes the right to grant
    +patent sublicenses in a manner consistent with the requirements of
    +this License.
    +
    +  Each contributor grants you a non-exclusive, worldwide, royalty-free
    +patent license under the contributor's essential patent claims, to
    +make, use, sell, offer for sale, import and otherwise run, modify and
    +propagate the contents of its contributor version.
    +
    +  In the following three paragraphs, a "patent license" is any express
    +agreement or commitment, however denominated, not to enforce a patent
    +(such as an express permission to practice a patent or covenant not to
    +sue for patent infringement).  To "grant" such a patent license to a
    +party means to make such an agreement or commitment not to enforce a
    +patent against the party.
    +
    +  If you convey a covered work, knowingly relying on a patent license,
    +and the Corresponding Source of the work is not available for anyone
    +to copy, free of charge and under the terms of this License, through a
    +publicly available network server or other readily accessible means,
    +then you must either (1) cause the Corresponding Source to be so
    +available, or (2) arrange to deprive yourself of the benefit of the
    +patent license for this particular work, or (3) arrange, in a manner
    +consistent with the requirements of this License, to extend the patent
    +license to downstream recipients.  "Knowingly relying" means you have
    +actual knowledge that, but for the patent license, your conveying the
    +covered work in a country, or your recipient's use of the covered work
    +in a country, would infringe one or more identifiable patents in that
    +country that you have reason to believe are valid.
    +
    +  If, pursuant to or in connection with a single transaction or
    +arrangement, you convey, or propagate by procuring conveyance of, a
    +covered work, and grant a patent license to some of the parties
    +receiving the covered work authorizing them to use, propagate, modify
    +or convey a specific copy of the covered work, then the patent license
    +you grant is automatically extended to all recipients of the covered
    +work and works based on it.
    +
    +  A patent license is "discriminatory" if it does not include within
    +the scope of its coverage, prohibits the exercise of, or is
    +conditioned on the non-exercise of one or more of the rights that are
    +specifically granted under this License.  You may not convey a covered
    +work if you are a party to an arrangement with a third party that is
    +in the business of distributing software, under which you make payment
    +to the third party based on the extent of your activity of conveying
    +the work, and under which the third party grants, to any of the
    +parties who would receive the covered work from you, a discriminatory
    +patent license (a) in connection with copies of the covered work
    +conveyed by you (or copies made from those copies), or (b) primarily
    +for and in connection with specific products or compilations that
    +contain the covered work, unless you entered into that arrangement,
    +or that patent license was granted, prior to 28 March 2007.
    +
    +  Nothing in this License shall be construed as excluding or limiting
    +any implied license or other defenses to infringement that may
    +otherwise be available to you under applicable patent law.
    +
    +  12. No Surrender of Others' Freedom.
    +
    +  If conditions are imposed on you (whether by court order, agreement or
    +otherwise) that contradict the conditions of this License, they do not
    +excuse you from the conditions of this License.  If you cannot convey a
    +covered work so as to satisfy simultaneously your obligations under this
    +License and any other pertinent obligations, then as a consequence you may
    +not convey it at all.  For example, if you agree to terms that obligate you
    +to collect a royalty for further conveying from those to whom you convey
    +the Program, the only way you could satisfy both those terms and this
    +License would be to refrain entirely from conveying the Program.
    +
    +  13. Use with the GNU Affero General Public License.
    +
    +  Notwithstanding any other provision of this License, you have
    +permission to link or combine any covered work with a work licensed
    +under version 3 of the GNU Affero General Public License into a single
    +combined work, and to convey the resulting work.  The terms of this
    +License will continue to apply to the part which is the covered work,
    +but the special requirements of the GNU Affero General Public License,
    +section 13, concerning interaction through a network will apply to the
    +combination as such.
    +
    +  14. Revised Versions of this License.
    +
    +  The Free Software Foundation may publish revised and/or new versions of
    +the GNU General Public License from time to time.  Such new versions will
    +be similar in spirit to the present version, but may differ in detail to
    +address new problems or concerns.
    +
    +  Each version is given a distinguishing version number.  If the
    +Program specifies that a certain numbered version of the GNU General
    +Public License "or any later version" applies to it, you have the
    +option of following the terms and conditions either of that numbered
    +version or of any later version published by the Free Software
    +Foundation.  If the Program does not specify a version number of the
    +GNU General Public License, you may choose any version ever published
    +by the Free Software Foundation.
    +
    +  If the Program specifies that a proxy can decide which future
    +versions of the GNU General Public License can be used, that proxy's
    +public statement of acceptance of a version permanently authorizes you
    +to choose that version for the Program.
    +
    +  Later license versions may give you additional or different
    +permissions.  However, no additional obligations are imposed on any
    +author or copyright holder as a result of your choosing to follow a
    +later version.
    +
    +  15. Disclaimer of Warranty.
    +
    +  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
    +APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
    +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
    +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
    +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    +PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
    +IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
    +ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
    +
    +  16. Limitation of Liability.
    +
    +  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
    +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
    +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
    +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
    +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
    +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
    +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
    +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
    +SUCH DAMAGES.
    +
    +  17. Interpretation of Sections 15 and 16.
    +
    +  If the disclaimer of warranty and limitation of liability provided
    +above cannot be given local legal effect according to their terms,
    +reviewing courts shall apply local law that most closely approximates
    +an absolute waiver of all civil liability in connection with the
    +Program, unless a warranty or assumption of liability accompanies a
    +copy of the Program in return for a fee.
    +
    +                     END OF TERMS AND CONDITIONS
    +
    +            How to Apply These Terms to Your New Programs
    +
    +  If you develop a new program, and you want it to be of the greatest
    +possible use to the public, the best way to achieve this is to make it
    +free software which everyone can redistribute and change under these terms.
    +
    +  To do so, attach the following notices to the program.  It is safest
    +to attach them to the start of each source file to most effectively
    +state the exclusion of warranty; and each file should have at least
    +the "copyright" line and a pointer to where the full notice is found.
    +
    +    <one line to give the program's name and a brief idea of what it does.>
    +    Copyright (C) <year>  <name of author>
    +
    +    This program is free software: you can redistribute it and/or modify
    +    it under the terms of the GNU General Public License as published by
    +    the Free Software Foundation, either version 3 of the License, or
    +    (at your option) any later version.
    +
    +    This program is distributed in the hope that it will be useful,
    +    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    +    GNU General Public License for more details.
    +
    +    You should have received a copy of the GNU General Public License
    +    along with this program.  If not, see <https://www.gnu.org/licenses/>.
    +
    +Also add information on how to contact you by electronic and paper mail.
    +
    +  If the program does terminal interaction, make it output a short
    +notice like this when it starts in an interactive mode:
    +
    +    <program>  Copyright (C) <year>  <name of author>
    +    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    +    This is free software, and you are welcome to redistribute it
    +    under certain conditions; type `show c' for details.
    +
    +The hypothetical commands `show w' and `show c' should show the appropriate
    +parts of the General Public License.  Of course, your program's commands
    +might be different; for a GUI interface, you would use an "about box".
    +
    +  You should also get your employer (if you work as a programmer) or school,
    +if any, to sign a "copyright disclaimer" for the program, if necessary.
    +For more information on this, and how to apply and follow the GNU GPL, see
    +<https://www.gnu.org/licenses/>.
    +
    +  The GNU General Public License does not permit incorporating your program
    +into proprietary programs.  If your program is a subroutine library, you
    +may consider it more useful to permit linking proprietary applications with
    +the library.  If this is what you want to do, use the GNU Lesser General
    +Public License instead of this License.  But first, please read
    +<https://www.gnu.org/licenses/why-not-lgpl.html>.
    +
    diff --git a/README.html b/README.html new file mode 100644 index 00000000..d667260e --- /dev/null +++ b/README.html @@ -0,0 +1,12 @@ +1. Introduction — moptipyapps 0.8.62 documentation

    build pypi version pypi downloads coverage report

    1. Introduction

    moptipy is a library with implementations of metaheuristic optimization methods in Python 3.12 that also offers an environment for replicable experiments (flyer). moptipyapps is a collection of applications and experiments based on moptipy.

    2. Installation

    In order to use this package and to, e.g., run the example codes, you need to first install it using pip or some other tool that can install packages from PyPi. You can install the newest version of this library from PyPi using pip by doing

    pip install moptipyapps
    +

    This will install the latest official release of our package as well as all dependencies. If you want to install the latest source code version from GitHub (which may not yet be officially released), you can do

    pip install git+https://github.com/thomasWeise/moptipyapps.git
    +

    If you want to install the latest source code version from GitHub (which may not yet be officially released) and you have set up a private/public key for GitHub, you can also do:

    git clone ssh://git@github.com/thomasWeise/moptipyapps
    +pip install moptipyapps
    +

    This may sometimes work better if you are having trouble reaching GitHub via https or http.

    You can also clone the repository and then run a make build, which will automatically install all dependencies, run all the tests, and then install the package on your system, too. This will work only on Linux, though. It also installs the dependencies for building, which include, e.g., those for unit testing and static analysis. If this build completes successful, you can be sure that moptipyapps will work properly on your machine.

    All dependencies for using and running moptipyapps are listed at here. The additional dependencies for a full make build, including unit tests, static analysis, and the generation of documentation are listed here.

    3. Applications

    Here we list the applications of moptipy. Step by step, we will add more and more interesting optimization problems. For each problem, we provide means to load the problem instances and a basic infrastructure to construct optimization algorithms for solving them.

    3.1. Two-Dimensional Bin Packing Problem

    In the package moptipyapps.binpacking2d, we provide tools for experimenting and playing around with the two-dimensional bin packing problem. Bin packing is a classical domain from Operations Research. The goal is to pack objects into containers, the so-called bins. We address two-dimensional rectangular bin packing. We provide the bin packing instances from 2DPackLib as resources together with this package as well as the four non-trivial “Almost Squares in Almost Squares” instances. Each such instances defines a set of n_different_items objects Oi with i from 1..n_different_objects. Each object Oi is a rectangle with a given width and height. The object occur is a given multiplicity repetitions(O_i), i.e., either only once or multiple times. The bins are rectangles with a given width and height too. The goal of tackling such an instance is to package all the objects into as few as possible bins. The objects therefore may be rotated by 90 degrees.

    We address this problem by representing a packing as a signed permutation with repetitions of the numbers 1..n_different_objects, where the number i occurs repetitions(O_i) times. If an object is to be placed in a rotated way, this is denoted by using -i instead of i. Such permutations are processed from beginning to end, placing the objects into bins as they come according to some heuristic encoding. We provide two variants of the Improved Bottom Left encoding. The first one closes bins as soon as one object cannot be placed into them. The second one tries to put each object in the earliest possible bin. While the former one is faster, the latter one leads to better packings.

    We can then apply a black-box metaheuristic to search in the space of these signed permutations with repetitions. The objective function would be some measure consistent with the goal of minimizing the number of bins used.

    Examples:

    Important work on this code has been contributed by Mr. Rui ZHAO (赵睿), zr1329142665@163.com, a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥学院) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授), who then refined the implementations.

    3.2. The Traveling Salesperson Problem (TSP)

    In the package moptipyapps.tsp, we provide tools to run experiments and play around with the Traveling Salesperson Problem (TSP) . A TSP instance is defined as a fully-connected graph with n_cities nodes. Each edge in the graph has a weight, which identifies the distance between the nodes. The goal is to find the shortest tour that visits every single node in the graph exactly once and then returns back to its starting node. Then nodes are usually called cities. A tour can be represented in path representation, which means that it is stored as a permutation of the numbers 0 to n_cities-1. The number at index k identifies that k-th city to visit. So the first number in the permutation identifies the first city, the second number the second city, and so on. The length of the tour can be computed by summing up the distances from the k-th city to the k+1-st city, for k in 0..n_cities-2 and then adding the distance from the last city to the first city.

    We use the TSP instances from TSPLib, the maybe most important benchmark set for the TSP. 110 of these instances are included as resources in this package.

    Examples:

    Important work on this code has been contributed by Mr. Tianyu LIANG (梁天宇), liangty@stu.hfuu.edu.cn a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥学院) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    The Traveling Tournament Problem (TTP) is related to the TTP.

    3.3. Dynamic Controller Synthesis

    Another interesting example for optimization is the synthesis of active controllers for dynamic systems. Dynamic systems have a state that changes over time based on some laws. These laws may be expressed as ordinary differential equations, for example. The classical Stuart-Landau system, for instance, represents an object whose coordinates on a two-dimensional plane change as follows:

    sigma = 0.1 - x² - y²
    +dx/dt = sigma * x - y
    +dy/dt = sigma * y + x
    +

    Regardless on which (x, y) the object initially starts, it tends to move to a circular rotation path centered around the origin with radius sqrt(0.1). Now we try to create a controller ctrl for such a system that moves the object from this periodic circular path into a fixed and stable location. The controller ctrl receives the current state, i.e., the object location, as input and can influence the system as follows:

    sigma = 0.1 - x² - y²
    +c = ctrl(x, y)
    +dx/dt = sigma * x - y
    +dy/dt = sigma * y + x + c
    +

    What we try to find is the controller which can bring move object to the origin (0, 0) as quickly as possible while expending the least amount of force, i.e., having the smallest aggregated c values over time.

    3.4. The Traveling Tournament Problem (TTP)

    In the package moptipyapps.ttp, we provide a set of classes and tools to explore the Traveling Tournament Problem (TTP). In a TTP, we have an even number of n teams. Each team plays a tournament against every other team. If the tournament is a single round-robin tournament, each team plays exactly once against every other team. In the more common double round-robin tournament, each team plays twice against every other team — once at home and once at the place of the other team. A tournament takes (n - 1) * rounds days in total, where rounds = 2 for double round-robin. Now additionally to the basic constraints dictated by logic (if team A plays at home against team B on day d, then team B has an “away” game against team A on that day d and so on), there are also additional constraints. For instance, no team should play a continuous streak of home (or away) games longer than m days, where m usually is m = 3. Also, if teams A and B play against each other, then there must be at least p games in between before they play each other again, usually with p = 1.

    Now the first hurdle is to find a game plan that has n / 2 games on each day (since there are n teams and each plays against one other team) that satisfies the above constraints. The second problem is that this is not all: For each TTP, a distance matrix is defined, very much like for the TSP. The goal is to find a feasible game schedule where the overall travel distances are minimal.

    Examples:

    3.5. The Quadratic Assignment Problem (QAP)

    In the package moptipyapps.qap, we implement some utilities to play with the Quadratic Assignment Problem (QAP). The QAP is one of the very classical problems from Operations Research. Imagine you are planning the layout for a factory. The goal is to assign n facilities (say, machines or workshops) to n locations. Now between the facilities, there exists a flow of goods. The output of one facility may be the input of another one and vice versa. The amount of stuff to be transported is likely to be different between different facilities. Between some facilities, a lot of things may need to be transport. Between others, there could be no exchange of material or only very little. The available locations also have different distances among each other. Some locations are closer, some are farther from each other. The goal is to find an assignment of facilities to locations such that the overall sum of the product of flow and distance for each facility pair gets minimized. To this end, solutions can be represented as permutations of facilities determining the order in which they are placed on the locations 1 to n.

    Examples:

    3.6. One-Dimensional Ordering

    In the package moptipyapps.order1d, we implement what I would like to call the “one-dimensional ordering problem”. Imagine that you have n objects and you only know the distances between them. You want to arrange these objects on one axis, e.g., along the horizontal (x) axis, i.e., in a one-dimensional space. Now what you care about is to reflect the neighborhood structure among the objects (as defined by the distance matrix that you got) to the one-dimensional space. So the closest neighbor of a given object based on the distance matrix should also be the closest neighbor on the one-dimensional axis.

    The goal of solving this problem is thus to arrange the n objects on a 1-dimensional (e.g., horizontal) axis given a distance matrix describing (maybe derived from their location in a potentially high-dimensional or unstructured space). The objects should be arranged in such a way that, for each object,

    • the nearest neighbors on the 1-dimensional axis are also the nearest neighbors in the original space (according to the distance matrix provided),

    • the second nearest neighbors on the 1-dimensional axis are also the second nearest neighbors in the original space (according to the distance matrix provided),

    • the third nearest neighbors on the 1-dimensional axis are also the third nearest neighbors in the original space (according to the distance matrix provided),

    • and so on; with (quadratically) decreasing weights of neighbor distance ranks.

    The original distances be limited to integers for the sake of simplicity, but we may use floats as well if we want to. Either way, we do not care about the actual precise distances (e.g., something like “0.001”) between the objects on either the one-dimensional nor the original space. Only about the distance ranks, i.e., about “2nd nearest neighbor,” but not “0.012 distance units away.” The solutions of this problem are thus permutations (orders) of the objects. Of course, if we really want to plot the objects, such a permutation can easily be translated to x-coordinates, say, by dividing the index of an object by the number of objects, which nets values in [0,1]. But basically, we reduce the task to finding permutations of objects that reflect the neighbor structure of the original space as closely as possible.

    If such a problem is solved correctly, then the arrangement on the one-dimensional axis should properly reflect the arrangement of the objects in the original space. Of course, solving this problem exactly may not actually be possible, since an object on a one-dimensional axis may either have exactly two i-nearest-neighbors (if it is at least i slots away from either end of the permutation) or exactly 1 such neighbor, if it is closer that i units. The object directly at the start of the permutation has only 1 nearest neighbor (the object that comes next). That next object, however, has two, namely the first object and the third object. In the original space where the objects come from, however, there may be any number of “nearest neighbors.” Imagine a two-dimensional space where one object sits at the center of a circle of other objects. Then all other objects are its nearest neighbors, whereas an object on the circle either has exactly two nearest neighbors or, maybe, in the odd situation that the radius equals a multiple of the distance to the neighbors on the circle, three. Such a structure cannot be represented exactly in one dimension.

    But that’s OK. Because we mainly do this for visualization purposes anyway.

    Examples:

    4. Unit Tests and Static Analysis

    When developing and applying randomized algorithms, proper testing and checking of the source code is of utmost importance. If we apply a randomized metaheuristic to an optimization problem, then we usually do not which solution quality we can achieve. Therefore, we can usually not know whether we have implemented the algorithm correctly. In other words, detecting bugs is very hard. Unfortunately, this holds also for the components of the algorithms, such as the search operators, especially if they are randomized as well. A bug may lead to worse results and we might not even notice that the worse result quality is caused by the bug. We may think that the algorithm is just not working well on the problem.

    Therefore, we need to test all components of the algorithm as far as we can. We can try check, for example, if a randomized nullary search operator indeed creates different solutions when invoked several times. We can try to check whether an algorithm fails with an exception. We can try to check whether the search operators create valid solutions and whether the algorithm passes valid solutions to the objective function. We can try to whether an objective function produces finite objective values and if bounds are specified for the objective values, we can check whether they indeed fall within these bounds. Now we cannot prove that there are no such bugs, due to the randomization. But by testing a few hundred times, we can at least detect very obvious and pathological bugs.

    To ease such testing for you, we provide a set of tools for testing implemented algorithms, spaces, and operators in the package moptipyapps.tests. Here, you can find functions where you pass in instances of your implemented components and they are checked for compliance with the moptipy API and the problem setups defined in moptipyapps. In other words, if you go and implement your own algorithms, operators, and optimization problems, you can use our pre-defined unit tests to give them a thorough check before using them in production. Again, such tests cannot prove the absence of bugs. But they can at least give you a fair shot to detect pathological errors before wasting serious experimentation time.

    We also try to extensively test our own code, see the coverage report of moptipy and moptipyapps.

    Another way to try to improve and maintain code quality is to use static code analysis and type hints where possible and reasonable. A static analysis tool can inform you about, e.g., unused variables, which often result from a coding error. It can tell you if the types of expressions do not match, which usually indicates a coding error, too. It can tell you if you perform some security-wise unsafe operations (which is less often a problem in optimization, but it does not hurt to check). Code analysis tools can also help you to enforce best practices, which are good for performance, readability, and maintainability. They can push you to properly format and document your code, which, too, improve readability, maintainability, and usability. They even can detect a set of well-known and frequently-occurring bugs. We therefore also run a variety of such tools on our code base, including (in alphabetical order):

    • autoflake, a tool for finding unused imports and variables

    • bandit, a linter for finding security issues

    • dodgy, for checking for dodgy looking values in the code

    • flake8, a collection of linters

    • flake8-bugbear, for finding common bugs

    • flake8-eradicate, for finding commented-out code

    • flake8-use-fstring, for checking the correct use of f-strings

    • mypy, for checking types and type annotations

    • pycodestyle, for checking the formatting and coding style of the source

    • pydocstyle, for checking the format of the docstrings

    • pyflakes, for detecting some errors in the code

    • pylint, another static analysis tool

    • pyroma, for checking whether the code complies with various best practices

    • ruff, a static analysis tool checking a wide range of coding conventions

    • semgrep, another static analyzer for finding bugs and problems

    • tryceratops, for checking against exception handling anti-patterns

    • unimport, for checking against unused import statements

    • vulture, for finding dead code

    On git pushes, GitHub also automatically runs CodeQL to check for common vulnerabilities and coding errors. We also turned on GitHub’s private vulnerability reporting and the Dependabot vulnerability and security alerts.

    Using all of these tools increases the build time. However, combined with thorough unit testing and documentation, it should help to prevent bugs, to improve readability, maintainability, and usability of the code. It does not matter whether we are doing research or try to solve practical problems in the industry — we should always strive to make good software with high code quality.

    Often, researchers in particular think that hacking something together that works is enough, that documentation is unimportant, that code style best practices can be ignored, and so on. And then they wonder why they cannot understand their own code a few years down the line (at least, this happened to me in the past…). Or why no one can use their code to build atop of their research (which is the normal case for me).

    Improving code quality can never come later. We always must maintain high coding and documentation standards from the very beginning. While moptipy may still be far from achieving these goals, at least we try to get there.

    Anyway, you can find our full build script running all the tests, doing all the static analyses, creating the documentation, and creating and packaging the distribution files in the repository, too. Besides the basic moptipyapps dependencies, it requires a set of additional dependencies. These are all automatically installed during the build procedure. The build only works under Linux.

    5. License

    moptipyapps is a library for implementing, using, and experimenting with metaheuristic optimization algorithms. Our project is developed for scientific, educational, and industrial applications.

    Copyright (C) 2023 Thomas Weise (汤卫思教授)

    Dr. Thomas Weise (see Contact) holds the copyright of this package except for the data of the benchmark sets we imported from other sources. moptipyapps is provided to the public as open source software under the GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007. Terms for other licenses, e.g., for specific industrial applications, can be negotiated with Dr. Thomas Weise (who can be reached via the contact information below).

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

    Please visit the contributions guidelines for moptipy if you would like to contribute to our package. If you have any concerns regarding security, please visit our security policy.

    5.1. Exceptions

    • Most of the included benchmark instance data of the two-dimensional bin packing problem is taken from 2DPackLib. It has been stored in a more size-efficient way and some unnecessary information has been stripped from it (as we really only need the raw bin packing data). Nevertheless, the copyright of the original data lies with the authors 2DPackLib or the original authors of the datasets used by them.

    • The included benchmark instances for the Traveling Salesperson Problem are taken from TSPLib. The copyright of the original data lies with Gerhard Reinelt, the original author of TSPLib, or the original authors of the datasets used by him.

    • The included benchmark instances for the Traveling Tournament Problem are taken from RobinX. The copyright of the original data lies with the authors of the dataset, presumably D. Van Bulck, D. Goossens, J. Schönberger, and M. Guajardo.

    • The included benchmark instances for the Quadratic Assignment Problem are taken from QAPLib, which is available at https://qaplib.mgi.polymtl.ca and https://coral.ise.lehigh.edu/data-sets/qaplib. The copyright of the original repository lies with R.E. Burkard, E. Çela, S.E. Karisch and F. Rendl as well as Peter Hahn and Miguel Anjos.

    6. Contact

    If you have any questions or suggestions, please contact Prof. Dr. Thomas Weise (汤卫思教授) of the Institute of Applied Optimization (应用优化研究所, IAO) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) via email to tweise@hfuu.edu.cn with CC to tweise@ustc.edu.cn.

    diff --git a/SECURITY_md.html b/SECURITY_md.html new file mode 100755 index 00000000..65309811 --- /dev/null +++ b/SECURITY_md.html @@ -0,0 +1 @@ +Security Policy of moptipy

    Security Policy of moptipy

    1. Introduction

    Thank you for supporting the moptipyapps, the applications using the Metaheuristic Optimization in Python (moptipy) package. moptipy is a library for implementing, using, and experimenting with metaheuristic optimization algorithms. Our project is developed for scientific, educational, and industrial applications. In this package here, you can find programs and codes using moptipy.

    moptipy and moptipyapps should only be used as components in safe and secure environments. None of its API should be exposed via the network or in any other way that might constitute a security risk. Nevertheless, we take the security of our moptipy and moptipyapps seriously.

    2. Reporting of Issues

    If you believe you have found a security vulnerability in moptipyapps, please report it to us privately. Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests. Instead, please send an email to tweise@hfuu.edu.cn with CC to tweise@ustc.edu.cn.

    Please include as much of the information listed below as you can to help us better understand and resolve the issue:

    • The type of issue (e.g., buffer overflow, SQL injection, or cross-site scripting)
    • Full paths of source file(s) related to the manifestation of the issue
    • The location of the affected source code (tag/branch/commit or direct URL)
    • Any special configuration required to reproduce the issue
    • Step-by-step instructions to reproduce the issue
    • Proof-of-concept or exploit code (if possible)
    • Impact of the issue, including how an attacker might exploit the issue

    This information will help us triage your report more quickly.

    diff --git a/_modules/.nojekyll b/_modules/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_modules/index.html b/_modules/index.html new file mode 100644 index 00000000..599fd699 --- /dev/null +++ b/_modules/index.html @@ -0,0 +1 @@ +Overview: module code — moptipyapps 0.8.62 documentation

    All modules for which code is available

    diff --git a/_modules/moptipyapps/.nojekyll b/_modules/moptipyapps/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_modules/moptipyapps/binpacking2d/.nojekyll b/_modules/moptipyapps/binpacking2d/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_modules/moptipyapps/binpacking2d/bks.html b/_modules/moptipyapps/binpacking2d/bks.html new file mode 100644 index 00000000..1a34401a --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/bks.html @@ -0,0 +1,1137 @@ +moptipyapps.binpacking2d.bks — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.bks

    +"""In this file, we provide a set of best-known solutions for the 2D-BPP."""
    +
    +from dataclasses import dataclass
    +from importlib import resources  # nosem
    +from math import inf, isfinite
    +from re import Pattern
    +from re import compile as p_compile
    +from statistics import mean
    +from typing import Any, Callable, Final, Iterable, Mapping, cast
    +
    +from pycommons.ds.immutable_map import immutable_mapping
    +from pycommons.io.path import UTF8
    +from pycommons.math.int_math import try_int, try_int_mul
    +from pycommons.strings.chars import WHITESPACE
    +from pycommons.strings.tools import replace_regex
    +from pycommons.types import check_int_range
    +
    +from moptipyapps.binpacking2d.instance import Instance
    +from moptipyapps.binpacking2d.packing_result import (
    +    BIN_COUNT_NAME,
    +    PackingResult,
    +)
    +
    +
    +def __load_references() -> Mapping[str, str]:
    +    """
    +    Load the references from the BibTeX resource.
    +
    +    This is not a fully-fledged BibTeX parser. It is a very simple and crude
    +    method to extract bibliography keys and data.
    +
    +    :return: the immutable reference dictionary, with keys sorted
    +        alphabetically
    +    """
    +    current_lines: list[str] = []
    +    key: str | None = None
    +    mode: int = 0
    +    found: Final[dict[str, str]] = {}
    +    single_ws: Final[Pattern] = p_compile(f"[{WHITESPACE}]")
    +    multi_ws: Final[Pattern] = p_compile(f"[{WHITESPACE}][{WHITESPACE}]+")
    +    with resources.files(__package__).joinpath(
    +            "bks.bib").open("r", encoding=UTF8) as stream:
    +        for rline in stream:
    +            line: str = str.rstrip(rline)
    +            if str.__len__(line) <= 0:
    +                continue
    +            if mode == 0:
    +                line = replace_regex(single_ws, "", line)
    +                if str.startswith(line, "@"):
    +                    mode = 1
    +                    start_idx: int = line.index("{")
    +                    end_idx: int = line.index(",", start_idx + 1)
    +                    key = str.strip(line[start_idx + 1:end_idx])
    +                    if str.__len__(key) <= 0:
    +                        raise ValueError(f"Invalid key {key!r} in {line!r}.")
    +                    current_lines.append(line)
    +                    if key in found:
    +                        raise ValueError(f"Duplicate key {key!r}.")
    +            elif mode == 1:
    +                if str.strip(line) in ("}", "},"):
    +                    mode = 0
    +                    current_lines.append("}")
    +                    found[key] = str.strip("\n".join(current_lines))
    +                    current_lines.clear()
    +                else:
    +                    current_lines.append(replace_regex(multi_ws, " ", line))
    +    if dict.__len__(found) <= 0:
    +        raise ValueError("Found no references!")
    +    return immutable_mapping({k: found[k] for k in sorted(found.keys())})
    +
    +
    +#: the references to literature
    +_REFERENCES: Final[Mapping[str, str]] = __load_references()
    +
    +#: a constant for no reference
    +NO_REF: Final[str] = "{{NO_REF}}"
    +
    +
    +
    +[docs] +@dataclass(frozen=True, init=False, order=True, eq=True) +class Element: + """The algorithm or instance group specification.""" + + #: the name or name prefix + name: str + #: the name suffix, if any, and the empty string otherwise + name_suffix: str + #: the reference to the related work + reference: str + + def __init__(self, name: str, + name_suffix: str, reference: str = NO_REF) -> None: + """ + Initialize this element. + + :param name: the name or name prefix + :param name_suffix: the name suffix, or an empty string + :param reference: the reference + """ + name = str.strip(name) + if str.__len__(name) <= 0: + raise ValueError(f"Invalid name {name!r}.") + object.__setattr__(self, "name", name) + object.__setattr__(self, "name_suffix", str.strip(name_suffix)) + reference = str.strip(reference) + for ref in reference.split(","): + if ref == NO_REF: + continue + if ref not in _REFERENCES: + raise ValueError(f"Invalid reference {ref!r}.") + object.__setattr__(self, "reference", reference) + +
    +[docs] + def get_bibtex(self) -> Iterable[str]: + """ + Get the BibTeX for this element. + + :return: the BibTeX string + """ + return (_REFERENCES[r] for r in self.reference.split(","))
    +
    + + + +#: the BRKGA for 2D bin packing with rotation +BRKGA_BPP_2R: Final[Element] = Element( + "BRKGA", "BRKGABPPRTR", "GR2013ABRKGAF2A3BPP") +#: the BRKGA for 2D bin packing without rotation +BRKGA_BPP_ANB: Final[Element] = Element( + "BRKGA", "BRKGABPPRANB", "GR2013ABRKGAF2A3BPP") +#: the grasp/vnd for 2D bin packing without rotation +GRASP_VND: Final[Element] = Element( + "GRASPVNDGRASP", "GRASPVNDVND", "PAVOT2010AHGVAFTATDBP") +#: the price-and-cut algorithm for 2D bin packing with rotation +PAC: Final[Element] = Element("PAC", "", "CGRS2020PACATSMTOOSFT2BPP") +#: the HHANO-R algorithm for 2D bin packing with rotation +HHANO_R: Final[Element] = Element("HHANO", "HHANOR", "BDC2015RHHAFTOONO2BPP") +#: the HHANO-SR algorithm for 2D bin packing with rotation +HHANO_SR: Final[Element] = Element("HHANO", "HHANOSR", "BDC2015RHHAFTOONO2BPP") +#: the MXGA algorithm for 2D bin packing with rotation +MXGA: Final[Element] = Element("MXGA", "", "L2008AGAFTDBPP") +#: the LGFi algorithm +EALGFI: Final[Element] = Element( + "EALGFIEA", "EALGFILGFI", "BS2013ST2BPPBMOAHEA") + +#: the small A instances +A_SMALL: Final[Element] = Element("a", "small", "MAVdC2010AFMFTTDGCSP") +#: the median sized A instances +A_MED: Final[Element] = Element("a", "med", "MAVdC2010AFMFTTDGCSP") +#: the large A instances +A_LARGE: Final[Element] = Element("a", "large", "MAVdC2010AFMFTTDGCSP") +#: the asqas +ASQAS: Final[Element] = Element("asqas", "", "vdBBMSB2016ASIASSTFI") +#: the first part of the Beng instances +BENG_1_8: Final[Element] = Element("beng", "1-8", "B1982PRPAHA") +#: the second part of the Beng instances +BENG_9_10: Final[Element] = Element("beng", "9-10", "B1982PRPAHA") +#: the class 1-20 benchmarks +CLASS_1_20: Final[Element] = Element( + "class 1", "20", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 1-40 benchmarks +CLASS_1_40: Final[Element] = Element( + "class 1", "40", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 1-60 benchmarks +CLASS_1_60: Final[Element] = Element( + "class 1", "60", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 1-80 benchmarks +CLASS_1_80: Final[Element] = Element( + "class 1", "80", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 1-100 benchmarks +CLASS_1_100: Final[Element] = Element( + "class 1", "100", "BW1987TDFBPA,MV1998ESOTTDFBPP") + +#: the class 2-20 benchmarks +CLASS_2_20: Final[Element] = Element( + "class 2", "20", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 2-40 benchmarks +CLASS_2_40: Final[Element] = Element( + "class 2", "40", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 2-60 benchmarks +CLASS_2_60: Final[Element] = Element( + "class 2", "60", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 2-80 benchmarks +CLASS_2_80: Final[Element] = Element( + "class 2", "80", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 1-100 benchmarks +CLASS_2_100: Final[Element] = Element( + "class 2", "100", "BW1987TDFBPA,MV1998ESOTTDFBPP") + +#: the class 3-20 benchmarks +CLASS_3_20: Final[Element] = Element( + "class 3", "20", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 1-40 benchmarks +CLASS_3_40: Final[Element] = Element( + "class 3", "40", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 3-60 benchmarks +CLASS_3_60: Final[Element] = Element( + "class 3", "60", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 3-80 benchmarks +CLASS_3_80: Final[Element] = Element( + "class 3", "80", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 3-100 benchmarks +CLASS_3_100: Final[Element] = Element( + "class 3", "100", "BW1987TDFBPA,MV1998ESOTTDFBPP") + +#: the class 4-20 benchmarks +CLASS_4_20: Final[Element] = Element( + "class 4", "20", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 4-40 benchmarks +CLASS_4_40: Final[Element] = Element( + "class 4", "40", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 4-60 benchmarks +CLASS_4_60: Final[Element] = Element( + "class 4", "60", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 4-80 benchmarks +CLASS_4_80: Final[Element] = Element( + "class 4", "80", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 4-100 benchmarks +CLASS_4_100: Final[Element] = Element( + "class 4", "100", "BW1987TDFBPA,MV1998ESOTTDFBPP") + +#: the class 5-20 benchmarks +CLASS_5_20: Final[Element] = Element( + "class 5", "20", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 5-40 benchmarks +CLASS_5_40: Final[Element] = Element( + "class 5", "40", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 5-60 benchmarks +CLASS_5_60: Final[Element] = Element( + "class 5", "60", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 5-80 benchmarks +CLASS_5_80: Final[Element] = Element( + "class 5", "80", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 5-100 benchmarks +CLASS_5_100: Final[Element] = Element( + "class 5", "100", "BW1987TDFBPA,MV1998ESOTTDFBPP") + +#: the class 6-20 benchmarks +CLASS_6_20: Final[Element] = Element( + "class 6", "20", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 6-40 benchmarks +CLASS_6_40: Final[Element] = Element( + "class 6", "40", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 6-60 benchmarks +CLASS_6_60: Final[Element] = Element( + "class 6", "60", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 6-80 benchmarks +CLASS_6_80: Final[Element] = Element( + "class 6", "80", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 6-100 benchmarks +CLASS_6_100: Final[Element] = Element( + "class 6", "100", "BW1987TDFBPA,MV1998ESOTTDFBPP") + +#: the class 7-20 benchmarks +CLASS_7_20: Final[Element] = Element( + "class 7", "20", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 7-40 benchmarks +CLASS_7_40: Final[Element] = Element( + "class 7", "40", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 7-60 benchmarks +CLASS_7_60: Final[Element] = Element( + "class 7", "60", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 7-80 benchmarks +CLASS_7_80: Final[Element] = Element( + "class 7", "80", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 7-100 benchmarks +CLASS_7_100: Final[Element] = Element( + "class 7", "100", "BW1987TDFBPA,MV1998ESOTTDFBPP") + +#: the class 8-20 benchmarks +CLASS_8_20: Final[Element] = Element( + "class 8", "20", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 8-40 benchmarks +CLASS_8_40: Final[Element] = Element( + "class 8", "40", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 8-60 benchmarks +CLASS_8_60: Final[Element] = Element( + "class 8", "60", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 8-80 benchmarks +CLASS_8_80: Final[Element] = Element( + "class 8", "80", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 8-100 benchmarks +CLASS_8_100: Final[Element] = Element( + "class 8", "100", "BW1987TDFBPA,MV1998ESOTTDFBPP") + +#: the class 9-20 benchmarks +CLASS_9_20: Final[Element] = Element( + "class 9", "20", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 9-40 benchmarks +CLASS_9_40: Final[Element] = Element( + "class 9", "40", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 9-60 benchmarks +CLASS_9_60: Final[Element] = Element( + "class 9", "60", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 9-80 benchmarks +CLASS_9_80: Final[Element] = Element( + "class 9", "80", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 9-100 benchmarks +CLASS_9_100: Final[Element] = Element( + "class 9", "100", "BW1987TDFBPA,MV1998ESOTTDFBPP") + +#: the class 10-20 benchmarks +CLASS_10_20: Final[Element] = Element( + "class 10", "20", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 10-40 benchmarks +CLASS_10_40: Final[Element] = Element( + "class 10", "40", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 10-60 benchmarks +CLASS_10_60: Final[Element] = Element( + "class 10", "60", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 10-80 benchmarks +CLASS_10_80: Final[Element] = Element( + "class 10", "80", "BW1987TDFBPA,MV1998ESOTTDFBPP") +#: the class 6-100 benchmarks +CLASS_10_100: Final[Element] = Element( + "class 10", "100", "BW1987TDFBPA,MV1998ESOTTDFBPP") + + +def __sort_key(txt: str) -> list[str]: + """ + Get a sort key from a string. + + :param txt: the string + :return: the sort key + """ + kys: list[str] = [] + for v in txt.split(","): + for vv in v.split("-"): + for vvv in vv.split("_"): + for vvvv in vvv.split(" "): + if vvvv == "small": + kys.append("1_small") + elif vvvv == "med": + kys.append("2_med") + elif vvvv == "large": + kys.append("3_large") + elif vvvv.startswith("asqas"): + kys.append(f"zzzzzzzzzzzzzzzzzz{vvvv}") + else: + kys.append(vvvv.rjust(10, "0") + if vvvv.isdigit() else vvvv) + return kys + + +#: The set of class and beng instance groups +CLASS_AND_BENG: Final[tuple[Element, ...]] = ( + BENG_1_8, BENG_9_10, CLASS_1_20, CLASS_1_40, CLASS_1_60, CLASS_1_80, + CLASS_1_100, CLASS_2_20, CLASS_2_40, CLASS_2_60, CLASS_2_80, + CLASS_2_100, CLASS_3_20, CLASS_3_40, CLASS_3_60, CLASS_3_80, + CLASS_3_100, CLASS_4_20, CLASS_4_40, CLASS_4_60, CLASS_4_80, + CLASS_4_100, CLASS_5_20, CLASS_5_40, CLASS_5_60, CLASS_5_80, + CLASS_5_100, CLASS_6_20, CLASS_6_40, CLASS_6_60, CLASS_6_80, + CLASS_6_100, CLASS_7_20, CLASS_7_40, CLASS_7_60, CLASS_7_80, + CLASS_7_100, CLASS_8_20, CLASS_8_40, CLASS_8_60, CLASS_8_80, + CLASS_8_100, CLASS_9_20, CLASS_9_40, CLASS_9_60, CLASS_9_80, + CLASS_9_100, CLASS_10_20, CLASS_10_40, CLASS_10_60, CLASS_10_80, + CLASS_10_100, +) + + +def __make_instance_map() -> Mapping[Element, tuple[str, ...]]: + """ + Make an instance map. + + :return: the instance map. + """ + groups: Final[list[Element]] = [ + A_SMALL, A_MED, A_LARGE, ASQAS, + BENG_1_8, BENG_9_10, CLASS_1_20, CLASS_1_40, CLASS_1_60, CLASS_1_80, + CLASS_1_100, CLASS_2_20, CLASS_2_40, CLASS_2_60, CLASS_2_80, + CLASS_2_100, CLASS_3_20, CLASS_3_40, CLASS_3_60, CLASS_3_80, + CLASS_3_100, CLASS_4_20, CLASS_4_40, CLASS_4_60, CLASS_4_80, + CLASS_4_100, CLASS_5_20, CLASS_5_40, CLASS_5_60, CLASS_5_80, + CLASS_5_100, CLASS_6_20, CLASS_6_40, CLASS_6_60, CLASS_6_80, + CLASS_6_100, CLASS_7_20, CLASS_7_40, CLASS_7_60, CLASS_7_80, + CLASS_7_100, CLASS_8_20, CLASS_8_40, CLASS_8_60, CLASS_8_80, + CLASS_8_100, CLASS_9_20, CLASS_9_40, CLASS_9_60, CLASS_9_80, + CLASS_9_100, CLASS_10_20, CLASS_10_40, CLASS_10_60, CLASS_10_80, + CLASS_10_100] + + data: dict[Element, tuple[str, ...]] = {} + for group in Instance.list_resources_groups(): + prefix: str = group[0] + suffix: str = "" if group[1] is None else group[1] + insts: tuple[str, ...] = group[2] + found: bool = False + for ggg in groups: + if (ggg.name == prefix) and (ggg.name_suffix == suffix): + if ggg in data: + raise ValueError(f"Encountered {ggg} twice?") + data[ggg] = insts + found = True + break + if not found: + raise ValueError(f"Did not find {group!r}.") + + return immutable_mapping({k: data[k] for k in sorted( + data.keys(), key=lambda e: __sort_key(f"{e.name} {e.name_suffix}"))}) + + +#: a mapping of instance groups to instances +GROUPS_TO_INSTANCES: Final[Mapping[Element, tuple[ + str, ...]]] = __make_instance_map() + +#: A sort key function for instance groups +INST_GROUP_SORT_KEY: Final[Callable[[Element], int]] \ + = list(GROUPS_TO_INSTANCES.keys()).index + + +def __make_instance_to_groups() -> Mapping[str, Element]: + """ + Make a mapping of instances to groups. + + :return: the mapping of instances to groups. + """ + data: list[tuple[str, Element]] = [( + v, k) for k, vv in GROUPS_TO_INSTANCES.items() for v in vv] + data.sort(key=lambda x: __sort_key(x[0])) + return immutable_mapping(dict(data)) + + +#: a mapping of instances to instance groups +INSTANCES_TO_GROUPS: Final[Mapping[str, Element]] = \ + __make_instance_to_groups() + + +def __lb_avg_denormalize( + with_rotation: bool, algo: Element, group: Element, + value: int | float, min_result: int = -1_000_000) -> tuple[ + bool, Element, Element, int]: + """ + De-normalize using the maximum of the Dell'Amico and geometric bound. + + :param with_rotation: is this a result with or without rotation? + :param algo: the algorithm used + :param group: the instance group + :param value: the value + :param min_result: the minimum denormalized result + :return: de-normalized average + """ + return (with_rotation, algo, group, max( + min_result, int(round(try_int_mul(sum(Instance.from_resource( + ins).lower_bound_bins for ins in GROUPS_TO_INSTANCES[group]), + value))))) + + +#: the related works with rotation averaged +__RW__AVERAGE: Final[tuple[tuple[ + bool, Element, Element, int], ...]] = ( + (True, BRKGA_BPP_2R, CLASS_1_20, 66), + (False, BRKGA_BPP_ANB, CLASS_1_20, 71), + (True, BRKGA_BPP_2R, CLASS_1_40, 128), + (False, BRKGA_BPP_ANB, CLASS_1_40, 134), + (True, BRKGA_BPP_2R, CLASS_1_60, 195), + (False, BRKGA_BPP_ANB, CLASS_1_60, 200), + (True, BRKGA_BPP_2R, CLASS_1_80, 270), + (False, BRKGA_BPP_ANB, CLASS_1_80, 275), + (True, BRKGA_BPP_2R, CLASS_1_100, 313), + (False, BRKGA_BPP_ANB, CLASS_1_100, 317), + (True, BRKGA_BPP_2R, CLASS_2_20, 10), + (False, BRKGA_BPP_ANB, CLASS_2_20, 10), + (True, BRKGA_BPP_2R, CLASS_2_40, 19), + (False, BRKGA_BPP_ANB, CLASS_2_40, 19), + (True, BRKGA_BPP_2R, CLASS_2_60, 25), + (False, BRKGA_BPP_ANB, CLASS_2_60, 25), + (True, BRKGA_BPP_2R, CLASS_2_80, 31), + (False, BRKGA_BPP_ANB, CLASS_2_80, 31), + (True, BRKGA_BPP_2R, CLASS_2_100, 39), + (False, BRKGA_BPP_ANB, CLASS_2_100, 39), + (True, BRKGA_BPP_2R, CLASS_3_20, 47), + (False, BRKGA_BPP_ANB, CLASS_3_20, 51), + (True, BRKGA_BPP_2R, CLASS_3_40, 92), + (False, BRKGA_BPP_ANB, CLASS_3_40, 94), + (True, BRKGA_BPP_2R, CLASS_3_60, 134), + (False, BRKGA_BPP_ANB, CLASS_3_60, 139), + (True, BRKGA_BPP_2R, CLASS_3_80, 182), + (False, BRKGA_BPP_ANB, CLASS_3_80, 189), + (True, BRKGA_BPP_2R, CLASS_3_100, 220), + (False, BRKGA_BPP_ANB, CLASS_3_100, 223), + (True, BRKGA_BPP_2R, CLASS_4_20, 10), + (False, BRKGA_BPP_ANB, CLASS_4_20, 10), + (True, BRKGA_BPP_2R, CLASS_4_40, 19), + (False, BRKGA_BPP_ANB, CLASS_4_40, 19), + (True, BRKGA_BPP_2R, CLASS_4_60, 23), + (False, BRKGA_BPP_ANB, CLASS_4_60, 25), + (True, BRKGA_BPP_2R, CLASS_4_80, 31), + (False, BRKGA_BPP_ANB, CLASS_4_80, 31), + (True, BRKGA_BPP_2R, CLASS_4_100, 37), + (False, BRKGA_BPP_ANB, CLASS_4_100, 37), + (True, BRKGA_BPP_2R, CLASS_5_20, 59), + (False, BRKGA_BPP_ANB, CLASS_5_20, 65), + (True, BRKGA_BPP_2R, CLASS_5_40, 114), + (False, BRKGA_BPP_ANB, CLASS_5_40, 119), + (True, BRKGA_BPP_2R, CLASS_5_60, 172), + (False, BRKGA_BPP_ANB, CLASS_5_60, 180), + (True, BRKGA_BPP_2R, CLASS_5_80, 239), + (False, BRKGA_BPP_ANB, CLASS_5_80, 247), + (True, BRKGA_BPP_2R, CLASS_5_100, 277), + (False, BRKGA_BPP_ANB, CLASS_5_100, 281), + (True, BRKGA_BPP_2R, CLASS_6_20, 10), + (False, BRKGA_BPP_ANB, CLASS_6_20, 10), + (True, BRKGA_BPP_2R, CLASS_6_40, 16), + (False, BRKGA_BPP_ANB, CLASS_6_40, 16), + (True, BRKGA_BPP_2R, CLASS_6_60, 21), + (False, BRKGA_BPP_ANB, CLASS_6_60, 21), + (True, BRKGA_BPP_2R, CLASS_6_80, 30), + (False, BRKGA_BPP_ANB, CLASS_6_80, 30), + (True, BRKGA_BPP_2R, CLASS_6_100, 32), + (False, BRKGA_BPP_ANB, CLASS_6_100, 33), + (True, BRKGA_BPP_2R, CLASS_7_20, 52), + (False, BRKGA_BPP_ANB, CLASS_7_20, 55), + (True, BRKGA_BPP_2R, CLASS_7_40, 102), + (False, BRKGA_BPP_ANB, CLASS_7_40, 111), + (True, BRKGA_BPP_2R, CLASS_7_60, 146), + (False, BRKGA_BPP_ANB, CLASS_7_60, 158), + (True, BRKGA_BPP_2R, CLASS_7_80, 208), + (False, BRKGA_BPP_ANB, CLASS_7_80, 232), + (True, BRKGA_BPP_2R, CLASS_7_100, 250), + (False, BRKGA_BPP_ANB, CLASS_7_100, 271), + (True, BRKGA_BPP_2R, CLASS_8_20, 53), + (False, BRKGA_BPP_ANB, CLASS_8_20, 58), + (True, BRKGA_BPP_2R, CLASS_8_40, 103), + (False, BRKGA_BPP_ANB, CLASS_8_40, 113), + (True, BRKGA_BPP_2R, CLASS_8_60, 147), + (False, BRKGA_BPP_ANB, CLASS_8_60, 161), + (True, BRKGA_BPP_2R, CLASS_8_80, 204), + (False, BRKGA_BPP_ANB, CLASS_8_80, 224), + (True, BRKGA_BPP_2R, CLASS_8_100, 252), + (False, BRKGA_BPP_ANB, CLASS_8_100, 278), + (True, BRKGA_BPP_2R, CLASS_9_20, 143), + (False, BRKGA_BPP_ANB, CLASS_9_20, 143), + (True, BRKGA_BPP_2R, CLASS_9_40, 275), + (False, BRKGA_BPP_ANB, CLASS_9_40, 278), + (True, BRKGA_BPP_2R, CLASS_9_60, 435), + (False, BRKGA_BPP_ANB, CLASS_9_60, 437), + (True, BRKGA_BPP_2R, CLASS_9_80, 573), + (False, BRKGA_BPP_ANB, CLASS_9_80, 577), + (True, BRKGA_BPP_2R, CLASS_9_100, 693), + (False, BRKGA_BPP_ANB, CLASS_9_100, 695), + (True, BRKGA_BPP_2R, CLASS_10_20, 41), + (False, BRKGA_BPP_ANB, CLASS_10_20, 42), + (True, BRKGA_BPP_2R, CLASS_10_40, 72), + (False, BRKGA_BPP_ANB, CLASS_10_40, 74), + (True, BRKGA_BPP_2R, CLASS_10_60, 99), + (False, BRKGA_BPP_ANB, CLASS_10_60, 100), + (True, BRKGA_BPP_2R, CLASS_10_80, 125), + (False, BRKGA_BPP_ANB, CLASS_10_80, 128), + (True, BRKGA_BPP_2R, CLASS_10_100, 154), + (False, BRKGA_BPP_ANB, CLASS_10_100, 158), + (True, BRKGA_BPP_2R, BENG_1_8, 54), + (False, BRKGA_BPP_ANB, BENG_1_8, 54), + (True, BRKGA_BPP_2R, BENG_9_10, 13), + (False, BRKGA_BPP_ANB, BENG_9_10, 13), + (False, PAC, CLASS_1_20, 71), + (False, PAC, CLASS_1_40, 134), + (False, PAC, CLASS_1_60, 200), + (False, PAC, CLASS_1_80, 275), + (False, PAC, CLASS_1_100, 317), + (False, PAC, CLASS_2_20, 10), + (False, PAC, CLASS_2_40, 19), + (False, PAC, CLASS_2_60, 25), + (False, PAC, CLASS_2_80, 31), + (False, PAC, CLASS_2_100, 39), + (False, PAC, CLASS_3_20, 51), + (False, PAC, BENG_1_8, 54), + (False, PAC, BENG_9_10, 13), + (True, PAC, CLASS_1_20, 66), + (True, PAC, CLASS_1_40, 128), + (True, PAC, CLASS_1_60, 195), + (True, PAC, CLASS_1_80, 270), + (True, PAC, CLASS_1_100, 313), + (True, PAC, CLASS_2_20, 10), + (True, PAC, CLASS_2_40, 19), + (True, PAC, CLASS_2_60, 25), + (True, PAC, CLASS_2_80, 31), + (True, PAC, CLASS_2_100, 39), + (True, PAC, CLASS_3_20, 47), + (True, PAC, BENG_1_8, 54), + (True, PAC, BENG_9_10, 13), + (True, HHANO_R, CLASS_1_20, 66), + (True, HHANO_SR, CLASS_1_20, 66), + (True, HHANO_R, CLASS_1_40, 131), + (True, HHANO_SR, CLASS_1_40, 129), + (True, HHANO_R, CLASS_1_60, 196), + (True, HHANO_SR, CLASS_1_60, 195), + (True, HHANO_R, CLASS_1_80, 270), + (True, HHANO_SR, CLASS_1_80, 270), + (True, HHANO_R, CLASS_1_100, 314), + (True, HHANO_SR, CLASS_1_100, 313), + (True, HHANO_R, CLASS_2_20, 10), + (True, HHANO_SR, CLASS_2_20, 10), + (True, HHANO_R, CLASS_2_40, 20), + (True, HHANO_SR, CLASS_2_40, 19), + (True, HHANO_R, CLASS_2_60, 25), + (True, HHANO_SR, CLASS_2_60, 25), + (True, HHANO_R, CLASS_2_80, 31), + (True, HHANO_SR, CLASS_2_80, 31), + (True, HHANO_R, CLASS_2_100, 39), + (True, HHANO_SR, CLASS_2_100, 39), + (True, HHANO_R, CLASS_3_20, 48), + (True, HHANO_SR, CLASS_3_20, 48), + (True, HHANO_R, CLASS_3_40, 95), + (True, HHANO_SR, CLASS_3_40, 95), + (True, HHANO_R, CLASS_3_60, 137), + (True, HHANO_SR, CLASS_3_60, 137), + (True, HHANO_R, CLASS_3_80, 186), + (True, HHANO_SR, CLASS_3_80, 187), + (True, HHANO_R, CLASS_3_100, 225), + (True, HHANO_SR, CLASS_3_100, 225), + (True, HHANO_R, CLASS_4_20, 10), + (True, HHANO_SR, CLASS_4_20, 10), + (True, HHANO_R, CLASS_4_40, 19), + (True, HHANO_SR, CLASS_4_40, 19), + (True, HHANO_R, CLASS_4_60, 25), + (True, HHANO_SR, CLASS_4_60, 25), + (True, HHANO_R, CLASS_4_80, 32), + (True, HHANO_SR, CLASS_4_80, 33), + (True, HHANO_R, CLASS_4_100, 38), + (True, HHANO_SR, CLASS_4_100, 38), + (True, HHANO_R, CLASS_5_20, 59), + (True, HHANO_SR, CLASS_5_20, 59), + (True, HHANO_R, CLASS_5_40, 116), + (True, HHANO_SR, CLASS_5_40, 115), + (True, HHANO_R, CLASS_5_60, 175), + (True, HHANO_SR, CLASS_5_60, 176), + (True, HHANO_R, CLASS_5_80, 240), + (True, HHANO_SR, CLASS_5_80, 241), + (True, HHANO_R, CLASS_5_100, 284), + (True, HHANO_SR, CLASS_5_100, 284), + (True, HHANO_R, CLASS_6_20, 10), + (True, HHANO_SR, CLASS_6_20, 10), + (True, HHANO_R, CLASS_6_40, 18), + (True, HHANO_SR, CLASS_6_40, 17), + (True, HHANO_R, CLASS_6_60, 22), + (True, HHANO_SR, CLASS_6_60, 22), + (True, HHANO_R, CLASS_6_80, 30), + (True, HHANO_SR, CLASS_6_80, 30), + (True, HHANO_R, CLASS_6_100, 34), + (True, HHANO_SR, CLASS_6_100, 34), + (True, HHANO_R, CLASS_7_20, 52), + (True, HHANO_SR, CLASS_7_20, 52), + (True, HHANO_R, CLASS_7_40, 106), + (True, HHANO_SR, CLASS_7_40, 107), + (True, HHANO_R, CLASS_7_60, 152), + (True, HHANO_SR, CLASS_7_60, 153), + (True, HHANO_R, CLASS_7_80, 216), + (True, HHANO_SR, CLASS_7_80, 217), + (True, HHANO_R, CLASS_7_100, 260), + (True, HHANO_SR, CLASS_7_100, 259), + (True, HHANO_R, CLASS_8_20, 53), + (True, HHANO_SR, CLASS_8_20, 53), + (True, HHANO_R, CLASS_8_40, 106), + (True, HHANO_SR, CLASS_8_40, 105), + (True, HHANO_R, CLASS_8_60, 155), + (True, HHANO_SR, CLASS_8_60, 154), + (True, HHANO_R, CLASS_8_80, 213), + (True, HHANO_SR, CLASS_8_80, 214), + (True, HHANO_R, CLASS_8_100, 261), + (True, HHANO_SR, CLASS_8_100, 262), + (True, HHANO_R, CLASS_9_20, 143), + (True, HHANO_SR, CLASS_9_20, 143), + (True, HHANO_R, CLASS_9_40, 275), + (True, HHANO_SR, CLASS_9_40, 275), + (True, HHANO_R, CLASS_9_60, 435), + (True, HHANO_SR, CLASS_9_60, 435), + (True, HHANO_R, CLASS_9_80, 573), + (True, HHANO_SR, CLASS_9_80, 573), + (True, HHANO_R, CLASS_9_100, 693), + (True, HHANO_SR, CLASS_9_100, 693), + (True, HHANO_R, CLASS_10_20, 41), + (True, HHANO_SR, CLASS_10_20, 41), + (True, HHANO_R, CLASS_10_40, 73), + (True, HHANO_SR, CLASS_10_40, 73), + (True, HHANO_R, CLASS_10_60, 101), + (True, HHANO_SR, CLASS_10_60, 101), + (True, HHANO_R, CLASS_10_80, 129), + (True, HHANO_SR, CLASS_10_80, 130), + (True, HHANO_R, CLASS_10_100, 161), + (True, HHANO_SR, CLASS_10_100, 162), + __lb_avg_denormalize(True, MXGA, CLASS_1_20, 1.03), + __lb_avg_denormalize(True, MXGA, CLASS_1_40, 1.04), + __lb_avg_denormalize(True, MXGA, CLASS_1_60, 1.04, 195), # 19.4 + __lb_avg_denormalize(True, MXGA, CLASS_1_80, 1.06), + __lb_avg_denormalize(True, MXGA, CLASS_1_100, 1.02, 313), # 31.2 + __lb_avg_denormalize(True, MXGA, CLASS_2_20, 1.0), + __lb_avg_denormalize(True, MXGA, CLASS_2_40, 1.1), + __lb_avg_denormalize(True, MXGA, CLASS_2_60, 1.0), + __lb_avg_denormalize(True, MXGA, CLASS_2_80, 1.0), + __lb_avg_denormalize(True, MXGA, CLASS_2_100, 1.0), + __lb_avg_denormalize(True, MXGA, CLASS_3_20, 1.04), + __lb_avg_denormalize(True, MXGA, CLASS_3_40, 1.09), + __lb_avg_denormalize(True, MXGA, CLASS_3_60, 1.08), + __lb_avg_denormalize(True, MXGA, CLASS_3_80, 1.06), + __lb_avg_denormalize(True, MXGA, CLASS_3_100, 1.06), + __lb_avg_denormalize(True, MXGA, CLASS_4_20, 1.0), + __lb_avg_denormalize(True, MXGA, CLASS_4_40, 1.0), + __lb_avg_denormalize(True, MXGA, CLASS_4_60, 1.10), + __lb_avg_denormalize(True, MXGA, CLASS_4_80, 1.07), + __lb_avg_denormalize(True, MXGA, CLASS_4_100, 1.03), + __lb_avg_denormalize(True, MXGA, CLASS_5_20, 1.04), + __lb_avg_denormalize(True, MXGA, CLASS_5_40, 1.06), + __lb_avg_denormalize(True, MXGA, CLASS_5_60, 1.07), + __lb_avg_denormalize(True, MXGA, CLASS_5_80, 1.07), + __lb_avg_denormalize(True, MXGA, CLASS_5_100, 1.05), + __lb_avg_denormalize(True, MXGA, CLASS_6_20, 1.0), + __lb_avg_denormalize(True, MXGA, CLASS_6_40, 1.4), + __lb_avg_denormalize(True, MXGA, CLASS_6_60, 1.0), + __lb_avg_denormalize(True, MXGA, CLASS_6_80, 1.0), + __lb_avg_denormalize(True, MXGA, CLASS_6_100, 1.07), + __lb_avg_denormalize(True, MXGA, CLASS_7_20, 1.11), + __lb_avg_denormalize(True, MXGA, CLASS_7_40, 1.07), + __lb_avg_denormalize(True, MXGA, CLASS_7_60, 1.05), + __lb_avg_denormalize(True, MXGA, CLASS_7_80, 1.08), + __lb_avg_denormalize(True, MXGA, CLASS_7_100, 1.07), + __lb_avg_denormalize(True, MXGA, CLASS_8_20, 1.10), + __lb_avg_denormalize(True, MXGA, CLASS_8_40, 1.09), + __lb_avg_denormalize(True, MXGA, CLASS_8_60, 1.06), + __lb_avg_denormalize(True, MXGA, CLASS_8_80, 1.07), + __lb_avg_denormalize(True, MXGA, CLASS_8_100, 1.06), + __lb_avg_denormalize(True, MXGA, CLASS_9_20, 1.0), + __lb_avg_denormalize(True, MXGA, CLASS_9_40, 1.01), + __lb_avg_denormalize(True, MXGA, CLASS_9_60, 1.01), + __lb_avg_denormalize(True, MXGA, CLASS_9_80, 1.01), + __lb_avg_denormalize(True, MXGA, CLASS_9_100, 1.01), + __lb_avg_denormalize(True, MXGA, CLASS_10_20, 1.13), + __lb_avg_denormalize(True, MXGA, CLASS_10_40, 1.06), + __lb_avg_denormalize(True, MXGA, CLASS_10_60, 1.07), + __lb_avg_denormalize(True, MXGA, CLASS_10_80, 1.06), + __lb_avg_denormalize(True, MXGA, CLASS_10_100, 1.04), + (False, EALGFI, CLASS_1_20, 71), + (False, EALGFI, CLASS_1_40, 134), + (False, EALGFI, CLASS_1_60, 200), + (False, EALGFI, CLASS_1_80, 275), + (False, EALGFI, CLASS_1_100, 317), + (False, EALGFI, CLASS_2_20, 10), + (False, EALGFI, CLASS_2_40, 19), + (False, EALGFI, CLASS_2_60, 25), + (False, EALGFI, CLASS_2_80, 31), + (False, EALGFI, CLASS_2_100, 39), + (False, EALGFI, CLASS_3_20, 51), + (False, EALGFI, CLASS_3_40, 94), + (False, EALGFI, CLASS_3_60, 139), + (False, EALGFI, CLASS_3_80, 189), + (False, EALGFI, CLASS_3_100, 224), + (False, EALGFI, CLASS_4_20, 10), + (False, EALGFI, CLASS_4_40, 19), + (False, EALGFI, CLASS_4_60, 23), + (False, EALGFI, CLASS_4_80, 31), + (False, EALGFI, CLASS_4_100, 37), + (False, EALGFI, CLASS_5_20, 65), + (False, EALGFI, CLASS_5_40, 119), + (False, EALGFI, CLASS_5_60, 180), + (False, EALGFI, CLASS_5_80, 247), + (False, EALGFI, CLASS_5_100, 284), + (False, EALGFI, CLASS_6_20, 10), + (False, EALGFI, CLASS_6_40, 17), + (False, EALGFI, CLASS_6_60, 21), + (False, EALGFI, CLASS_6_80, 30), + (False, EALGFI, CLASS_6_100, 32), + (False, EALGFI, CLASS_7_20, 55), + (False, EALGFI, CLASS_7_40, 111), + (False, EALGFI, CLASS_7_60, 159), + (False, EALGFI, CLASS_7_80, 232), + (False, EALGFI, CLASS_7_100, 271), + (False, EALGFI, CLASS_8_20, 58), + (False, EALGFI, CLASS_8_40, 113), + (False, EALGFI, CLASS_8_60, 161), + (False, EALGFI, CLASS_8_80, 224), + (False, EALGFI, CLASS_8_100, 277), + (False, EALGFI, CLASS_9_20, 143), + (False, EALGFI, CLASS_9_40, 278), + (False, EALGFI, CLASS_9_60, 437), + (False, EALGFI, CLASS_9_80, 577), + (False, EALGFI, CLASS_9_100, 695), + (False, EALGFI, CLASS_10_20, 42), + (False, EALGFI, CLASS_10_40, 74), + (False, EALGFI, CLASS_10_60, 101), + (False, EALGFI, CLASS_10_80, 128), + (False, EALGFI, CLASS_10_100, 160), + (False, GRASP_VND, CLASS_1_20, 71), + (False, GRASP_VND, CLASS_1_40, 134), + (False, GRASP_VND, CLASS_1_60, 200), + (False, GRASP_VND, CLASS_1_80, 275), + (False, GRASP_VND, CLASS_1_100, 317), + (False, GRASP_VND, CLASS_2_20, 10), + (False, GRASP_VND, CLASS_2_40, 19), + (False, GRASP_VND, CLASS_2_60, 25), + (False, GRASP_VND, CLASS_2_80, 31), + (False, GRASP_VND, CLASS_2_100, 39), + (False, GRASP_VND, CLASS_3_20, 51), + (False, GRASP_VND, CLASS_3_40, 94), + (False, GRASP_VND, CLASS_3_60, 139), + (False, GRASP_VND, CLASS_3_80, 189), + (False, GRASP_VND, CLASS_3_100, 223), + (False, GRASP_VND, CLASS_4_20, 10), + (False, GRASP_VND, CLASS_4_40, 19), + (False, GRASP_VND, CLASS_4_60, 25), + (False, GRASP_VND, CLASS_4_80, 31), + (False, GRASP_VND, CLASS_4_100, 38), + (False, GRASP_VND, CLASS_5_20, 65), + (False, GRASP_VND, CLASS_5_40, 119), + (False, GRASP_VND, CLASS_5_60, 180), + (False, GRASP_VND, CLASS_5_80, 247), + (False, GRASP_VND, CLASS_5_100, 282), + (False, GRASP_VND, CLASS_6_20, 10), + (False, GRASP_VND, CLASS_6_40, 17), + (False, GRASP_VND, CLASS_6_60, 21), + (False, GRASP_VND, CLASS_6_80, 30), + (False, GRASP_VND, CLASS_6_100, 34), + (False, GRASP_VND, CLASS_7_20, 55), + (False, GRASP_VND, CLASS_7_40, 111), + (False, GRASP_VND, CLASS_7_60, 159), + (False, GRASP_VND, CLASS_7_80, 232), + (False, GRASP_VND, CLASS_7_100, 271), + (False, GRASP_VND, CLASS_8_20, 58), + (False, GRASP_VND, CLASS_8_40, 113), + (False, GRASP_VND, CLASS_8_60, 161), + (False, GRASP_VND, CLASS_8_80, 224), + (False, GRASP_VND, CLASS_8_100, 278), + (False, GRASP_VND, CLASS_9_20, 143), + (False, GRASP_VND, CLASS_9_40, 278), + (False, GRASP_VND, CLASS_9_60, 437), + (False, GRASP_VND, CLASS_9_80, 577), + (False, GRASP_VND, CLASS_9_100, 695), + (False, GRASP_VND, CLASS_10_20, 42), + (False, GRASP_VND, CLASS_10_40, 74), + (False, GRASP_VND, CLASS_10_60, 100), + (False, GRASP_VND, CLASS_10_80, 129), + (False, GRASP_VND, CLASS_10_100, 159), + (False, GRASP_VND, BENG_1_8, 54), + (False, GRASP_VND, BENG_9_10, 13), +) + + + + + + +
    +[docs] +def make_comparison_table_data( + data: Iterable[PackingResult], + with_rotation: bool, + algo_from_pr: Callable[[PackingResult], Element] = lambda x: Element( + x.end_result.algorithm, x.end_result.objective), + algo_sort_key: Callable[[Element], Any] = lambda x: ( + -1 if (x.reference == NO_REF) else 1, x), + rw_algo_selector: Callable[[Element], bool] = lambda _: True, + aggregator: Callable[[Iterable[int | float]], int | float] = mean, + additional: Callable[[Element], Iterable[tuple[ + Element, Callable[[Iterable[int | float]], int | float]]]] = + lambda _: ()) -> tuple[tuple[Element, ...], tuple[tuple[ + Element, tuple[int | float | None, ...]], ...]]: + """ + Create the data for an end result comparison table. + + :param data: the source data + :param with_rotation: are we doing stuff with rotation? + :param algo_from_pr: convert a packing result to an algorithm + :param algo_sort_key: the algorithm sort key + :param rw_algo_selector: the related work algorithm selector + :param aggregator: the routine for per-instance averaging of bins + :param additional: an additional column constructor + + :return: the table data: the title row columns followed by the data + row-by-row, each row leading with an instance group identifier + """ + per_algo_data: dict[Element, tuple[Callable[[ + Iterable[int | float]], int | float], dict[str, list[int]]]] = {} + for pr in data: + algo: Element = algo_from_pr(pr) + inst_dict: dict[str, list[int]] + if algo in per_algo_data: + inst_dict = per_algo_data[algo][1] + else: + inst_dict = {} + per_algo_data[algo] = aggregator, inst_dict + inst: str = pr.end_result.instance + val: int = check_int_range( + pr.objectives[BIN_COUNT_NAME], BIN_COUNT_NAME, 1, 1_000_000_000) + if inst in inst_dict: + inst_dict[inst].append(val) + else: + inst_dict[inst] = [val] + + groups: Final[list[Element]] = sorted({ + INSTANCES_TO_GROUPS[k] for kk in per_algo_data.values() + for k in kk[1]}, key=INST_GROUP_SORT_KEY) + + # get the averages + algo_per_group_data: Final[dict[Element, dict[Element, int | float]]] = {} + for algo, inst_dict_and_avg in per_algo_data.items(): + dothis: list[tuple[Element, Callable[[ + Iterable[int | float]], int | float]]] = [ + (algo, inst_dict_and_avg[0])] + dothis.extend(additional(algo)) + + for xyz in dothis: + avg: Callable[[Iterable[int | float]], int | float] = xyz[1] + inst_dict = inst_dict_and_avg[1] + ag: dict[Element, int | float] = {} + algo_per_group_data[xyz[0]] = ag + algo_runs: int | None = None + for g in groups: + gis: tuple[str, ...] = GROUPS_TO_INSTANCES[g] + gisd: list[list[int | float]] = [] + ok: bool = True + for inst in gis: + if inst not in inst_dict: + ok = False + gisd.append(cast(list[int | float], inst_dict[inst])) + if ok: + if list.__len__(gisd) <= 0: + raise ValueError(f"Empty group {g!r} for {algo!r}?") + if list.__len__(gisd) != tuple.__len__(gis): + raise ValueError( + f"Some data missing in {g!r} for {algo!r}?") + ll = list.__len__(gisd[0]) + if algo_runs is None: + algo_runs = ll + elif algo_runs != ll: + raise ValueError( + f"Inconsistent number of runs for {algo!r}: " + f"{ll} in {gis[0]!r} vs. {algo_runs}.") + if not all(list.__len__(xxx) == ll for xxx in gisd): + raise ValueError( + f"Inconsistent run numbers in {g!r} for {algo!r}.") + ag[g] = int(round(sum(cast(Iterable, ( + try_int(avg(v)) for v in gisd))))) + elif len(gisd) > 0: + raise ValueError(f"Incomplete group {g!r} for {algo!r}.") + + rw: tuple[tuple[bool, Element, Element, float], ...] = get_related_work( + with_rotation=with_rotation, without_rotation=not with_rotation, + algo_select=rw_algo_selector, inst_group_select=groups.__contains__) + + algorithms: list[Element] = list({rww[1] for rww in rw}) + algorithms.sort(key=algo_sort_key) + our_algorithms = sorted(algo_per_group_data.keys(), key=algo_sort_key) + + rows: list[tuple[Element, tuple[int | float | None, ...]]] = [] + for g in groups: + xdata: list[int | float | None] = [] + for algo in algorithms: + found: bool = False + for zz in rw: + if zz[1] != algo: + continue + if zz[2] != g: + continue + found = True + xdata.append(zz[3]) + break + if found: + continue + xdata.append(None) + for algo in our_algorithms: + agz: dict[Element, int | float] = algo_per_group_data[algo] + if g not in agz: + xdata.append(None) + continue + xdata.append(agz[g]) + rows.append((g, tuple(xdata))) + + algorithms.extend(our_algorithms) + return tuple(algorithms), tuple(rows)
    + + + +
    +[docs] +def make_comparison_table( + dest: Callable[[str], Any], + data: tuple[tuple[Element, ...], tuple[tuple[Element, tuple[ + int | float | None, ...]], ...]], + name_to_strs: Callable[[Element], tuple[str, str]] = lambda s: ( + s.name.split("_")[0], s.name_suffix), + format_best: Callable[[str], str] = + lambda s: f"\\textbf{{{s}}}", + count_best_over: Iterable[tuple[Iterable[Element], str]] = ()) -> None: + """ + Make a comparison table in LaTeX. + + :param dest: the destination + :param data: the source data + :param name_to_strs: the converter of names to strings + :param format_best: the formatter for best values + :param count_best_over: a set of instances to include in the best counting + and a corresponding label + """ + inst_names: Final[list[tuple[str, str]]] = [ + name_to_strs(d[0]) for d in data[1]] + inst_cols: int = 2 if any( + str.__len__(n[1]) > 0 for n in inst_names) else 1 + + dest("% begin auto-generated LaTeX table comparing " + "end results with related work.%") + writer: list[str] = [r"\begin{tabular}{@{}r"] + if inst_cols > 1: + writer.append("@{}l") + writer.extend("r" for _ in range(tuple.__len__(data[0]))) + writer.append("@{}}%") + dest("".join(writer)) + writer.clear() + dest(r"\hline%") + + head_names: Final[list[tuple[str, str]]] = [ + name_to_strs(d) for d in data[0]] + head_names.insert(0, ("instance", "group")) + if inst_cols > 1: + head_names.insert(0, ("instance", "group")) + head_count: Final[int] = list.__len__(head_names) + + for dim in (0, 1): + i = 0 + while i < head_count: + head = head_names[i] + next_i = i + 1 + while (next_i < head_count) and ( + head_names[next_i][dim] == head[dim]): + next_i += 1 + + col_txt: str = f"\\multicolumn{{{next_i - i}}}{{" + if i <= 0: + col_txt = f"{col_txt}@{{}}" + col_txt = f"{col_txt}c" + if next_i >= head_count: + col_txt = f"{col_txt}@{{}}" + col_txt = f"{col_txt}}}{{{head[dim]}}}" + if next_i >= head_count: + col_txt = f"{col_txt}\\\\%" + writer.append(col_txt) + i = next_i + dest("&".join(writer)) + writer.clear() + last_first_name = "" + + count_best: list[tuple[str, list[int]]] = [] + count_as: dict[Element, list[list[int]]] = {} + for count_this, title in count_best_over: + lst: list[int] = [0] * tuple.__len__(data[0]) + count_best.append((title, lst)) + for k in count_this: + if k in count_as: + count_as[k].append(lst) + else: + count_as[k] = [lst] + + for i, data_row in enumerate(data[1]): + inst_name: tuple[str, str] = inst_names[i] + if inst_name[0] != last_first_name: + last_first_name = inst_name[0] + dest(r"\hline%") + writer.append(last_first_name) + if inst_cols > 1: + in1: str = str.strip(inst_name[1]) + if str.__len__(in1) > 0: + in1 = str.strip(f"/{in1}") + if str.__len__(in1) <= 1: + in1 = "" + writer.append(in1) + + row_data: tuple[int | float | None, ...] = data_row[1] + minimum: int | float = inf + for ddd in row_data: + if (ddd is not None) and (ddd < minimum): + minimum = ddd + if not isfinite(minimum): + raise ValueError(f"Huuhhh? {inst_name} has non-finite min?") + instance: Element = data_row[0] + for iij, ddd in enumerate(row_data): + if ddd is None: + writer.append("") + continue + writer.append( + format_best(str(ddd)) if ddd <= minimum else str(ddd)) + if (ddd <= minimum) and (instance in count_as): + for lst in count_as[instance]: + lst[iij] += 1 + dest(f"{'&'.join(writer)}\\\\%") + writer.clear() + + dest(r"\hline%") + if list.__len__(count_best) > 0: + for brow in count_best: + writer.append( + f"\\multicolumn{{{inst_cols}}}{{@{{}}r}}{{{brow[0]}}}") + writer.extend(map(str, brow[1])) + writer[-1] = f"{writer[-1]}\\\\%" + dest("&".join(writer)) + dest(r"\hline%") + dest(r"\end{tabular}%") + dest("% end auto-generated LaTeX table comparing " + "end results with related work.%")
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/encodings/.nojekyll b/_modules/moptipyapps/binpacking2d/encodings/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_modules/moptipyapps/binpacking2d/encodings/ibl_encoding_1.html b/_modules/moptipyapps/binpacking2d/encodings/ibl_encoding_1.html new file mode 100644 index 00000000..8e994303 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/encodings/ibl_encoding_1.html @@ -0,0 +1,434 @@ +moptipyapps.binpacking2d.encodings.ibl_encoding_1 — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.encodings.ibl_encoding_1

    +"""
    +An improved bottom left encoding by Liu and Teng extended to multiple bins.
    +
    +Here we provide an implementation of the improved bottom left encoding by Liu
    +and Teng [1], but extended to bins with limited height. If the height of the
    +bin is a limiting factor, then our implementation will automatically use
    +multiple bins. Another implementation is given in
    +:mod:`moptipyapps.binpacking2d.encodings.ibl_encoding_2`.
    +
    +An :mod:`~moptipyapps.binpacking2d.instance` of the
    +two-dimensional bin packing problem defines a set of objects to be packed
    +and a bin size (width and height). Each object to be packed has itself a
    +width and a height as well as a repetition counter, which is `1` if the object
    +only occurs a single time and larger otherwise (i.e., if the repetition
    +counter is `5`, the object needs to be packaged five times).
    +
    +The encoding receives signed permutations with repetitions as input. Each
    +element of the permutation identifies one object from the bin packing
    +instance. Each such object ID must occur exactly as often as the repetition
    +counter of the object in the instance data suggest. But the ID may also occur
    +negated, in which case the object is supposed to rotated by 90°.
    +
    +Now our encoding processes such a permutation from beginning to end. It starts
    +with an empty bin `1`. Each object is first placed with its right end at the
    +right end of the bin and with its bottom line exactly at the top of the bin,
    +i.e., outside of the bin. Then, in each step, we move the object as far down
    +as possible. Then, we move it to the left as far as possible, but we
    +immediately stop if there was another chance to move the object down. In
    +other words, downward movements are preferred over left movements. This is
    +repeated until no movement of the object is possible anymore.
    +
    +Once the object cannot be moved anymore, we check if it is fully inside the
    +bin. If yes, then the object is included in the bin and we continue with the
    +next object. If not, it does not fit into the bin.
    +
    +This is the "Improved Bottom Left" heuristic by Liu and Teng [1].
    +
    +If the object does not fit into the current bin, we place it at the
    +bottom-left corner of a new bin. We therefore increase the bin counter.
    +From now on, all the following objects will be placed into this bin until
    +the bin is full as well, in which case we move to the next bin again.
    +This means that the current bin is closed at the same moment the first
    +object is encountered that does not fit into it anymore. Therefore,
    +the objects in a closed bin do no longer need to be considered when packing
    +subsequent objects.
    +
    +This is different from the second variant of this encoding implemented in file
    +:mod:`moptipyapps.binpacking2d.encodings.ibl_encoding_2`, which always checks
    +all the bins, starting at bin `1`, when placing any object. That other
    +encoding variant therefore must always consider all bins and is thus slower,
    +but tends to yield better packings.
    +
    +This procedure has originally been developed and implemented by Mr. Rui ZHAO
    +(赵睿), <zr1329142665@163.com> a Master's student at the Institute of Applied
    +Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of
    +Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University
    +(合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of
    +Prof. Dr. Thomas Weise (汤卫思教授).
    +
    +1. Dequan Liu and Hongfei Teng. An Improved BL-Algorithm for Genetic Algorithm
    +   of the Orthogonal Packing of Rectangles. European Journal of Operational
    +   Research. 112(2):413-420. January (1999).
    +   https://doi.org/10.1016/S0377-2217(97)00437-2.
    +   http://www.paper.edu.cn/scholar/showpdf/MUT2AN0IOTD0Mxxh.
    +"""
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from moptipy.api.encoding import Encoding
    +from moptipy.utils.logger import KeyValueLogSection
    +from pycommons.types import type_error
    +
    +from moptipyapps.binpacking2d.instance import (
    +    IDX_HEIGHT,
    +    IDX_WIDTH,
    +    Instance,
    +)
    +from moptipyapps.binpacking2d.packing import (
    +    IDX_BIN,
    +    IDX_BOTTOM_Y,
    +    IDX_ID,
    +    IDX_LEFT_X,
    +    IDX_RIGHT_X,
    +    IDX_TOP_Y,
    +    Packing,
    +)
    +from moptipyapps.shared import SCOPE_INSTANCE
    +
    +
    +@numba.njit(nogil=True, cache=True, inline="always", boundscheck=False)
    +def __move_down(packing: np.ndarray, bin_start: int, i1: int) -> bool:
    +    """
    +    Move the box at index `i1` down as far as possible in the current bin.
    +
    +    `bin_start` is the index of the first object that has already been placed
    +    in the current bin. It always holds that `i1 >= bin_start`. In the case
    +    that `i1 == bin_start`, then we can move the object directly to the bottom
    +    of the bin without any issue.
    +
    +    If `i1 > bin_start` we iterate over all objects at indices
    +    `bin_start...i1-1`. We first set `min_down` to the bottom-y coordinate of
    +    the box, because this is how far down we can move at most. Then, for each
    +    of the objects already placed in the bin, we check if there is any
    +    intersection of the horizontal with the current box. If there is no
    +    intersection *or* if the object is already above the current box, then the
    +    object will not influence the downward movement of our object. If there is
    +    an intersection, then we cannot move the current box deeper than the top-y
    +    coordinate of the other box.
    +
    +    *Only* the box at index `i1` is modified and if it is modified, this
    +    function will return `True`.
    +
    +    :param packing: the packing under construction
    +    :param bin_start: the starting index of the current bin
    +    :param i1: the index of the current box
    +    :return: `True` if the object was moved down, `False` if the object cannot
    +        be moved down any further because either it has reached the bottom or
    +        because it would intersect with other objects
    +
    +    >>> # itemID, binID, left-x, bottom-y, right-x, top-y
    +    >>> r = np.array([[1, 1, 10, 20, 30, 40],
    +    ...               [2, 1, 30, 30, 50, 60],
    +    ...               [3, 1, 40, 100, 60, 200]])
    +    >>> __move_down(r, 0, 2)  # try to move down the box at index 2
    +    True
    +    >>> print(r[2, :])
    +    [  3   1  40  60  60 160]
    +    >>> __move_down(r, 0, 2)  # try to move down the box at index 2 again
    +    False
    +    >>> __move_down(r, 0, 1)  # try to move down the box at index 1 (ignore 2)
    +    True
    +    >>> print(r[1, :])
    +    [ 2  1 30  0 50 30]
    +    >>> __move_down(r, 0, 1)  # try to move down the box at index 1 again
    +    False
    +    >>> __move_down(r, 0, 2)  # try to move down the box at index 2 again now
    +    True
    +    >>> print(r[2, :])
    +    [  3   1  40  30  60 130]
    +    >>> __move_down(r, 0, 2)  # try to move down the box at index 2 again
    +    False
    +    >>> __move_down(r, 0, 0)
    +    True
    +    >>> print(r[0, :])
    +    [ 1  1 10  0 30 20]
    +    >>> __move_down(r, 0, 0)
    +    False
    +    """
    +    # load the coordinates of i1 into local variables to speed up computation
    +    packing_i1_left_x: Final[int] = int(packing[i1, IDX_LEFT_X])
    +    packing_i1_bottom_y: Final[int] = int(packing[i1, IDX_BOTTOM_Y])
    +    packing_i1_right_x: Final[int] = int(packing[i1, IDX_RIGHT_X])
    +    packing_i1_top_y: Final[int] = int(packing[i1, IDX_TOP_Y])
    +    min_down: int = packing_i1_bottom_y  # maximum move: down to bottom
    +    for i0 in range(bin_start, i1):  # iterate over all boxes in current bin
    +        # An intersection exists if the right-x of an existing box is larger
    +        # than the left-x of the new box AND if the left-x of the existing box
    +        # is less than the right-x of the new box.
    +        # Only intersections matter and only with objects not above us.
    +        if (packing[i0, IDX_RIGHT_X] > packing_i1_left_x) and \
    +                (packing[i0, IDX_LEFT_X] < packing_i1_right_x) and \
    +                (packing[i0, IDX_BOTTOM_Y] < packing_i1_top_y):
    +            # The object would horizontally intersect with the current object
    +            min_down = min(min_down, int(
    +                packing_i1_bottom_y - packing[i0, IDX_TOP_Y]))
    +    if min_down > 0:  # Can we move down? If yes, update box.
    +        packing[i1, IDX_BOTTOM_Y] = packing_i1_bottom_y - min_down
    +        packing[i1, IDX_TOP_Y] = packing_i1_top_y - min_down
    +        return True
    +    return False
    +
    +
    +@numba.njit(nogil=True, cache=True, inline="always", boundscheck=False)
    +def __move_left(packing: np.ndarray, bin_start: int, i1: int) -> bool:
    +    """
    +    Move the box at index `i1` left as far as possible in the current bin.
    +
    +    This function moves a box to the left without changing its vertical
    +    position. It is slightly more tricky than the downwards moving function,
    +    because in the improved bottom left heuristic, downward moves are
    +    preferred compared to left moves. This means that the box needs to be
    +    stopped when reaching the edge of a box on whose top it sits.
    +
    +    This function is to be called *after* `__move_down` and in an alternating
    +    fashion.
    +
    +    *Only* the box at index `i1` is modified and if it is modified, this
    +    function will return `True`.
    +
    +    :param packing: the packing under construction
    +    :param bin_start: the starting index of the current bin
    +    :param i1: the index of the current box
    +    :return: `True` if the object was moved down, `False` if the object cannot
    +        be moved down any further because either it has reached the bottom or
    +        because it would intersect with other objects
    +
    +    >>> # itemID, binID, left-x, bottom-y, right-x, top-y
    +    >>> r = np.array([[1, 1,  0,  0, 30, 10],
    +    ...               [2, 1, 35,  0, 45, 30],
    +    ...               [3, 1,  0, 10, 10, 20],
    +    ...               [4, 1, 40, 30, 50, 40]])
    +    >>> __move_left(r, 0, 3)
    +    True
    +    >>> print(r[3, :])
    +    [ 4  1 25 30 35 40]
    +    >>> __move_left(r, 0, 3)
    +    True
    +    >>> print(r[3, :])
    +    [ 4  1  0 30 10 40]
    +    >>> r[3, :] = [4, 1, 25, 10, 35, 20]
    +    >>> __move_left(r, 0, 3)
    +    True
    +    >>> print(r[3, :])
    +    [ 4  1 10 10 20 20]
    +    >>> __move_left(r, 0, 3)
    +    False
    +    >>> # itemID, binID, left-x, bottom-y, right-x, top-y
    +    >>> r = np.array([[1, 1,  0,  0, 10, 2],
    +    ...               [2, 1, 10,  0, 20, 5],
    +    ...               [3, 1,  8,  2, 10, 4]])
    +    >>> __move_left(r, 0, 2)
    +    True
    +    >>> print(r[2, :])
    +    [3 1 0 2 2 4]
    +    """
    +    packing_i1_left_x: Final[int] = int(packing[i1, IDX_LEFT_X])
    +    packing_i1_bottom_y: Final[int] = int(packing[i1, IDX_BOTTOM_Y])
    +    packing_i1_right_x: Final[int] = int(packing[i1, IDX_RIGHT_X])
    +    packing_i1_top_y: Final[int] = int(packing[i1, IDX_TOP_Y])
    +    min_left: int = packing_i1_left_x
    +    for i0 in range(bin_start, i1):
    +        if packing[i0, IDX_LEFT_X] >= packing_i1_right_x:
    +            continue  # the object is already behind us, so it can be ignored
    +        if (packing[i0, IDX_RIGHT_X] > packing_i1_left_x) \
    +                and (packing[i0, IDX_LEFT_X] < packing_i1_right_x):
    +            # we have a horizontal intersection with a box below
    +            if packing[i0, IDX_TOP_Y] == packing_i1_bottom_y:
    +                # only consider those the box *directly* below and move the
    +                # right end of the new box to the left end of that box below
    +                min_left = min(min_left, int(
    +                    packing_i1_right_x - packing[i0, IDX_LEFT_X]))
    +        elif (packing_i1_top_y > packing[i0, IDX_BOTTOM_Y]) \
    +                and (packing_i1_bottom_y < packing[i0, IDX_TOP_Y]):
    +            min_left = min(min_left, int(
    +                packing_i1_left_x - packing[i0, IDX_RIGHT_X]))
    +    if min_left > 0:
    +        # move the box to the left
    +        packing[i1, IDX_LEFT_X] = packing_i1_left_x - min_left
    +        packing[i1, IDX_RIGHT_X] = packing_i1_right_x - min_left
    +        return True
    +    return False
    +
    +
    +@numba.njit(nogil=True, cache=True, inline="always", boundscheck=False)
    +def _decode(x: np.ndarray, y: np.ndarray, instance: np.ndarray,
    +            bin_width: int, bin_height: int) -> int:
    +    """
    +    Decode a (signed) permutation to a packing.
    +
    +    The permutation is processed from the beginning to the end.
    +    Each element identifies one object by its ID. If the ID is negative,
    +    the object will be inserted rotated by 90°. If the ID is positive, the
    +    object will be inserted as is.
    +
    +    The absolute value of the ID-1 will be used to look up the width and
    +    height of the object in the `instance` data. If the object needs to be
    +    rotated, width and height will be swapped.
    +
    +    Each object is, at the beginning, placed with its right side at the right
    +    end of the bin. The bottom line of the object is initially put on top of
    +    the bin, i.e., initially the object is outside of the bin.
    +
    +    Then, the object is iteratively moved downward as far as possible. Once it
    +    reaches another object, we move it to the left until either its right side
    +    reaches the left end of the object beneath it or until its left side
    +    touches another object. Then we try to move the object down again, and so
    +    on.
    +
    +    Once the object can no longer be moved down, we check if it is now fully
    +    inside of the bin. If yes, then good, the object's bin index is set to the
    +    ID of the current bin. If not, then we cannot place the object into this
    +    bin. In this case, we increase the bin ID by one. The object is put into
    +    a new and empty bin. We move it to the bottom-left corner of this bin. In
    +    other words, the left side of the object touches the left side of the bin,
    +    i.e., is `0`. The bottom-line of the object is also the bottom of the bin,
    +    i.e., has coordinate `0` as well.
    +
    +    All objects that are placed from now on will go into this bin until the
    +    bin is full. Then we move on to the next bin, and so on. In other words,
    +    once a bin is full, we no longer consider it for receiving any further
    +    objects.
    +
    +    :param x: a possibly signed permutation
    +    :param y: the packing object
    +    :param instance: the packing instance data
    +    :param bin_width: the bin width
    +    :param bin_height: the bin height
    +    :returns: the number of bins
    +
    +    As example, we use a slightly modified version (we add more objects so we
    +    get to see the use of a second bin) of Figure 2 of the Liu and Teng paper
    +    "An Improved BL-Algorithm for Genetic Algorithm of the Orthogonal Packing
    +    of Rectangles."
    +
    +    >>> # [width, height, repetitions]
    +    >>> inst = np.array([[10, 20, 5], [5, 5, 5]])
    +    >>> # [id = plain, -id = rotated]
    +    >>> xx = np.array([1, -1, 2, -2, 1, -2, -2, -1, -1, 2])
    +    >>> # [id, bin, left-x, bottom-y, right-x, top-y] ...
    +    >>> yy = np.empty((10, 6), int)
    +    >>> print(_decode(xx, yy, inst, 30, 30))
    +    2
    +    >>> print(yy[0, :])
    +    [ 1  1  0  0 10 20]
    +    >>> print(yy[1, :])
    +    [ 1  1 10  0 30 10]
    +    >>> print(yy[2, :])
    +    [ 2  1 10 10 15 15]
    +    >>> print(yy[3, :])
    +    [ 2  1 15 10 20 15]
    +    >>> print(yy[4, :])
    +    [ 1  1 20 10 30 30]
    +    >>> print(yy[5, :])
    +    [ 2  1 10 15 15 20]
    +    >>> print(yy[6, :])
    +    [ 2  1 15 15 20 20]
    +    >>> print(yy[7, :])
    +    [ 1  1  0 20 20 30]
    +    >>> print(yy[8, :])
    +    [ 1  2  0  0 20 10]
    +    >>> print(yy[9, :])
    +    [ 2  2 20  0 25  5]
    +    """
    +    w: int  # the width of the current object
    +    h: int  # the height of the current object
    +    use_id: int  # the id of the current object
    +    bin_start: int = 0  # the index of the first object in the current bin
    +    bin_id: int = 1  # the id of the current bin
    +    for i, item_id in enumerate(x):  # iterate over all objects
    +        if item_id < 0:  # object should be rotated
    +            use_id = -(item_id + 1)  # get absolute id - 1
    +            w = int(instance[use_id, IDX_HEIGHT])  # width = height (rotated!)
    +            h = int(instance[use_id, IDX_WIDTH])   # height = width (rotated!)
    +        else:  # the object will not be rotated
    +            use_id = item_id - 1   # id - 1
    +            w = int(instance[use_id, IDX_WIDTH])  # get width
    +            h = int(instance[use_id, IDX_HEIGHT])  # get height
    +
    +# It could be that an object is too wide or too high for the bin in its
    +# current rotation even if the bin was empty entirely. In this case, we simply
    +# force-rotate it. A bin packing instance will not permit objects that do not
    +# fit into the bin in any rotation. So if the object does not fit in its
    +# current rotation, it must fit if we simply rotate it by 90°.
    +        if (w > bin_width) or (h > bin_height):
    +            w, h = h, w
    +
    +# At first, the object's right corner is at the right corner of the bin.
    +# The object sits exactly at the top of the bin, i.e., its bottom line
    +# is the top line of the bin.
    +        y[i, IDX_ID] = use_id + 1  # the id of the object
    +        y[i, IDX_LEFT_X] = bin_width - w  # the left end
    +        y[i, IDX_BOTTOM_Y] = bin_height  # object sits on top of bin
    +        y[i, IDX_RIGHT_X] = bin_width  # object ends at right end of bin
    +        y[i, IDX_TOP_Y] = bin_height + h  # top of object is outside of bin
    +
    +        while __move_down(y, bin_start, i) or __move_left(y, bin_start, i):
    +            pass  # loop until object can no longer be moved
    +
    +# If the object is not fully inside the current bin, we move to a new bin.
    +        if (y[i, IDX_RIGHT_X] > bin_width) or (y[i, IDX_TOP_Y] > bin_height):
    +            bin_id = bin_id + 1  # step to the next bin
    +            bin_start = i  # set the starting index of the bin
    +            y[i, IDX_LEFT_X] = 0  # the object goes to the left end of the bin
    +            y[i, IDX_BOTTOM_Y] = 0  # the object goes to the bottom of the bin
    +            y[i, IDX_RIGHT_X] = w  # so its right end is its width
    +            y[i, IDX_TOP_Y] = h  # and its top end is its height
    +        y[i, IDX_BIN] = bin_id  # store the bin id
    +    return int(bin_id)  # return the total number of bins
    +
    +
    +
    +[docs] +class ImprovedBottomLeftEncoding1(Encoding): + """An Improved Bottem Left Encoding by Liu and Teng for multiple bins.""" + + def __init__(self, instance: Instance) -> None: + """ + Instantiate the improved best first encoding. + + :param instance: the packing instance + """ + if not isinstance(instance, Instance): + raise type_error(instance, "instance", Instance) + #: the internal instance reference + self.__instance: Final[Instance] = instance + +
    +[docs] + def decode(self, x: np.ndarray, y: Packing) -> None: + """ + Map a potentially signed permutation to a packing. + + :param x: the array + :param y: the Gantt chart + """ + y.n_bins = _decode(x, y, self.__instance, self.__instance.bin_width, + self.__instance.bin_height)
    + + + def __str__(self) -> str: + """ + Get the name of this encoding. + + :return: `"ibf1"` + :rtype: str + """ + return "ibf1" + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log all parameters of this component as key-value pairs. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + with logger.scope(SCOPE_INSTANCE) as kv: + self.__instance.log_parameters_to(kv)
    +
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/encodings/ibl_encoding_2.html b/_modules/moptipyapps/binpacking2d/encodings/ibl_encoding_2.html new file mode 100644 index 00000000..137cead3 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/encodings/ibl_encoding_2.html @@ -0,0 +1,503 @@ +moptipyapps.binpacking2d.encodings.ibl_encoding_2 — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.encodings.ibl_encoding_2

    +"""
    +An improved bottom left encoding by Liu and Teng extended to multiple bins.
    +
    +Here we provide an implementation of the improved bottom left encoding by Liu
    +and Teng [1], but extended to bins with limited height. If the height of the
    +bin is a limiting factor, then our implementation will automatically use
    +multiple bins. Another variant is given in
    +:mod:`moptipyapps.binpacking2d.encodings.ibl_encoding_1`.
    +
    +An instance :mod:`~moptipyapps.binpacking2d.instance` of the
    +two-dimensional bin packing problem defines a set of objects to be packed
    +and a bin size (width and height). Each object to be packed has itself a
    +width and a height as well as a repetition counter, which is `1` if the object
    +only occurs a single time and larger otherwise (i.e., if the repetition
    +counter is `5`, the object needs to be packaged five times).
    +
    +The encoding receives signed permutations with repetitions as input. Each
    +element of the permutation identifies one object from the bin packing
    +instance. Each such object ID must occur exactly as often as the repetition
    +counter of the object in the instance data suggest. But the ID may also occur
    +negated, in which case the object is supposed to rotated by 90°.
    +
    +Now our encoding processes such a permutation from beginning to end. It starts
    +with an empty bin `1`. Each object is first placed with its right end at the
    +right end of the first bin and with its bottom line exactly at the top of the
    +bin, i.e., outside of the bin. Then, in each step, we move the object as far
    +down as possible. Then, we move it to the left as far as possible, but we
    +immediately stop if there was another chance to move the object down. In
    +other words, downward movements are preferred over left movements. This is
    +repeated until no movement of the object is possible anymore.
    +
    +Once the object cannot be moved anymore, we check if it is fully inside the
    +bin. If yes, then the object is included in the bin and we continue with the
    +next object. If not, it does not fit into the bin.
    +
    +This is the "Improved Bottom Left" heuristic by Liu and Teng [1].
    +
    +If the object does not fit into the first bin and we already "opened" a second
    +bin, then we try to place it into the second bin using the same procedure. And
    +then into the third bin if that does not work out, and so on. Until we have
    +tried unsuccessfully all the bins that we have opened.
    +
    +In this case, we "open" the next bin and we place the object at the
    +bottom-left corner of a new bin. Then we continue with the next object, again
    +trying to put it into the first bin, then the second bin, and so on.
    +
    +This is different from the first variant of this encoding implemented in file
    +:mod:`moptipyapps.binpacking2d.encodings.ibl_encoding_2`, which always and
    +only tries to put objects into the last bin that was opened (and moves to a
    +new bin if that does not work out). That variant of the encoding is therefore
    +faster than the one here, but the one here tends to yield better packings.
    +
    +The problem with this is that we need to basically first try to put the object
    +into the first bin. For this we need to look at *all* the objects that we have
    +already placed, because it could be that we already have one object in the
    +first bin, then one in the second bin that did not fit into the first bin,
    +then one smaller object in the first bin again, and so on. If our new object
    +does not fit into the first bin, then we need to do the same with the second
    +bin, and so on. So for every bin we try, we need to look at all objects already
    +placed. And the number of bins we could try could be equal to the number of
    +objects that we have already placed (if each object occupies one bin alone).
    +So we have a worst case complexity of O(n ** 2) for placing one object. And we
    +do this for all objects, so we would have a O(n ** 3) overall complexity.
    +Well, actually, it is worse: Because we repeat the process of looking at all
    +the objects several times while moving our new item to the left and down and
    +to the left and down. So I suspect that we actually have O(n ** 4).
    +That is annoying.
    +
    +We try to alleviate this a little bit by remembering, for each bin, the index
    +of the first object that we put in there and the index of the last object we
    +put in there. Now within these two indices, there also might be objects that
    +we placed into other bins. But for a very little overhead (remembering two
    +values per bin), we have a certain chance to speed up the process in several
    +situations. For instance, the worst case from above, that each object occupies
    +exactly one bin by itself becomes easier because we would only look at one
    +already placed object per bin.
    +
    +This procedure has originally been developed and implemented by Mr. Rui ZHAO
    +(赵睿), <zr1329142665@163.com>, a Master's student at the Institute of Applied
    +Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of
    +Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University
    +(合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of
    +Prof. Dr. Thomas Weise (汤卫思教授).
    +
    +1. Dequan Liu and Hongfei Teng. An Improved BL-Algorithm for Genetic Algorithm
    +   of the Orthogonal Packing of Rectangles. European Journal of Operational
    +   Research. 112(2):413-420. January (1999).
    +   https://doi.org/10.1016/S0377-2217(97)00437-2.
    +   http://www.paper.edu.cn/scholar/showpdf/MUT2AN0IOTD0Mxxh.
    +"""
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from moptipy.api.encoding import Encoding
    +from moptipy.utils.logger import KeyValueLogSection
    +from pycommons.types import type_error
    +
    +from moptipyapps.binpacking2d.instance import (
    +    IDX_HEIGHT,
    +    IDX_WIDTH,
    +    Instance,
    +)
    +from moptipyapps.binpacking2d.packing import (
    +    IDX_BIN,
    +    IDX_BOTTOM_Y,
    +    IDX_ID,
    +    IDX_LEFT_X,
    +    IDX_RIGHT_X,
    +    IDX_TOP_Y,
    +    Packing,
    +)
    +from moptipyapps.shared import SCOPE_INSTANCE
    +
    +
    +@numba.njit(nogil=True, cache=True, inline="always", boundscheck=False)
    +def __move_down(packing: np.ndarray, bin_id: int,
    +                bin_start: int, bin_end: int, i1: int) -> bool:
    +    """
    +    Move the box at index `i1` down as far as possible in the current bin.
    +
    +    `bin_start` is the index of the first object that has already been placed
    +    in the current bin `bin_id`. It always holds that `i1 >= bin_start`. In
    +    the case that `i1 == bin_start`, then we can move the object directly to
    +    the bottom of the bin without any issue.
    +    If `i1 > bin_start` we iterate over all objects at indices
    +    `bin_start...bin_end - 1` whose bin equals `bin`. We first set `min_down`
    +    to the bottom-y coordinate of the box, because this is how far down we can
    +    move at most.
    +
    +    Then, for each of the objects already placed in the bin `bin_id`, we check
    +    if there is any intersection of the horizontal with the current box. If
    +    there is no intersection *or* if the object is not already above the
    +    current box, then the object will not influence the downward movement of
    +    our object. If there is an intersection, then we cannot move the current
    +    box deeper than the top-y coordinate of the other box.
    +
    +    *Only* the box at index `i1` is modified and if it is modified, this
    +    function will return `True`.
    +
    +    :param packing: the packing under construction
    +    :param bin_id: the bin ID
    +    :param bin_start: the starting index of the current bin
    +    :param bin_end: the exclusive end index of the current bin
    +    :param i1: the index of the current box
    +    :return: `True` if the object was moved down, `False` if the object cannot
    +        be moved down any further because either it has reached the bottom or
    +        because it would intersect with other objects
    +
    +    >>> # itemID, binID, left-x, bottom-y, right-x, top-y
    +    >>> r = np.array([[1, 1, 10, 20, 30, 40],
    +    ...               [2, 1, 30, 30, 50, 60],
    +    ...               [3, 1, 40, 100, 60, 200]])
    +    >>> __move_down(r, 1, 0, 2, 2)  # try to move down the box at index 2
    +    True
    +    >>> print(r[2, :])
    +    [  3   1  40  60  60 160]
    +    >>> __move_down(r, 1, 0, 2, 2)  # try to move down the box at index 2
    +    False
    +    >>> __move_down(r, 1, 0, 1, 1)  # try to move down the box at index 1
    +    True
    +    >>> print(r[1, :])
    +    [ 2  1 30  0 50 30]
    +    >>> __move_down(r, 1, 0, 1, 1)  # try to move down the box at index 1
    +    False
    +    >>> __move_down(r, 1, 0, 2, 2)  # try to move down the box at index 2
    +    True
    +    >>> print(r[2, :])
    +    [  3   1  40  30  60 130]
    +    >>> __move_down(r, 1, 0, 2, 2)  # try to move down the box at index 2
    +    False
    +    >>> __move_down(r, 1, 0, 0, 0)
    +    True
    +    >>> print(r[0, :])
    +    [ 1  1 10  0 30 20]
    +    >>> __move_down(r, 1, 0, 0, 0)
    +    False
    +    """
    +    # load the coordinates of i1 into local variables to speed up computation
    +    packing_i1_left_x: Final[int] = int(packing[i1, IDX_LEFT_X])
    +    packing_i1_bottom_y: Final[int] = int(packing[i1, IDX_BOTTOM_Y])
    +    packing_i1_right_x: Final[int] = int(packing[i1, IDX_RIGHT_X])
    +    packing_i1_top_y: Final[int] = int(packing[i1, IDX_TOP_Y])
    +    min_down: int = packing_i1_bottom_y  # maximum move: down to bottom
    +    for i0 in range(bin_start, bin_end):  # iterate over items in current bin
    +        # An intersection exists if the right-x of an existing box is larger
    +        # than the left-x of the new box AND if the left-x of the existing box
    +        # is less than the right-x of the new box.
    +        # Only intersections matter and *only* with objects in the same bin
    +        # and only if the existing box is not already above the new box.
    +        if (packing[i0, IDX_BIN] == bin_id) and \
    +                (packing[i0, IDX_RIGHT_X] > packing_i1_left_x) and \
    +                (packing[i0, IDX_LEFT_X] < packing_i1_right_x) and \
    +                (packing[i0, IDX_BOTTOM_Y] < packing_i1_top_y):
    +            # The object would horizontally intersect with the current object
    +            min_down = min(min_down, int(
    +                packing_i1_bottom_y - packing[i0, IDX_TOP_Y]))
    +    if min_down > 0:  # Can we move down? If yes, update box.
    +        packing[i1, IDX_BOTTOM_Y] = packing_i1_bottom_y - min_down
    +        packing[i1, IDX_TOP_Y] = packing_i1_top_y - min_down
    +        return True
    +    return False
    +
    +
    +@numba.njit(nogil=True, cache=True, inline="always", boundscheck=False)
    +def __move_left(packing: np.ndarray, bin_id: int,
    +                bin_start: int, bin_end: int, i1: int) -> bool:
    +    """
    +    Move the box at index `i1` left as far as possible in the current bin.
    +
    +    This function moves a box to the left without changing its vertical
    +    position. It is slightly more tricky than the downwards moving function,
    +    because in the improved bottom left heuristic, downward moves are
    +    preferred compared to left moves. This means that the box needs to be
    +    stopped when reaching the edge of a box on whose top it sits. Of course,
    +    we only consider other objects inside the current bin
    +    (with ID `bin_start`).
    +
    +    This function is to be called *after* `__move_down` and in an alternating
    +    fashion.
    +
    +    *Only* the box at index `i1` is modified and if it is modified, this
    +    function will return `True`.
    +
    +    :param packing: the packing under construction
    +    :param bin_id: the bin ID
    +    :param bin_start: the starting index of the current bin
    +    :param bin_end: the exclusive end index of the current bin
    +    :param i1: the index of the current box
    +    :return: `True` if the object was moved down, `False` if the object cannot
    +        be moved down any further because either it has reached the bottom or
    +        because it would intersect with other objects
    +
    +    >>> # itemID, binID, left-x, bottom-y, right-x, top-y
    +    >>> r = np.array([[1, 1,  0,  0, 30, 10],
    +    ...               [2, 1, 35,  0, 45, 30],
    +    ...               [3, 1,  0, 10, 10, 20],
    +    ...               [4, 1, 40, 30, 50, 40]])
    +    >>> __move_left(r, 1, 0, 3, 3)
    +    True
    +    >>> print(r[3, :])
    +    [ 4  1 25 30 35 40]
    +    >>> __move_left(r, 1, 0, 3, 3)
    +    True
    +    >>> print(r[3, :])
    +    [ 4  1  0 30 10 40]
    +    >>> r[3, :] = [4, 1, 25, 10, 35, 20]
    +    >>> __move_left(r, 1, 0, 3, 3)
    +    True
    +    >>> print(r[3, :])
    +    [ 4  1 10 10 20 20]
    +    >>> __move_left(r, 1, 0, 3, 3)
    +    False
    +    >>> # itemID, binID, left-x, bottom-y, right-x, top-y
    +    >>> r = np.array([[1, 1,  0,  0, 10, 2],
    +    ...               [2, 1, 10,  0, 20, 5],
    +    ...               [3, 1,  8,  2, 10, 4]])
    +    >>> __move_left(r, 0, 0, 3, 2)
    +    True
    +    >>> print(r[2, :])
    +    [3 1 0 2 2 4]
    +    """
    +    packing_i1_left_x: Final[int] = int(packing[i1, IDX_LEFT_X])
    +    packing_i1_bottom_y: Final[int] = int(packing[i1, IDX_BOTTOM_Y])
    +    packing_i1_right_x: Final[int] = int(packing[i1, IDX_RIGHT_X])
    +    packing_i1_top_y: Final[int] = int(packing[i1, IDX_TOP_Y])
    +    min_left: int = packing_i1_left_x
    +    for i0 in range(bin_start, bin_end):
    +        # consider only objects that are not yet behind us and are in
    +        # the same bin may intersect
    +        if (packing[i0, IDX_BIN] != bin_id) \
    +                or (packing[i0, IDX_LEFT_X] >= packing_i1_right_x):
    +            continue  # the object is already behind us, so it can be ignored
    +        if (packing[i0, IDX_RIGHT_X] > packing_i1_left_x) \
    +                and (packing[i0, IDX_LEFT_X] < packing_i1_right_x):
    +            # we have a horizontal intersection with a box below
    +            if packing[i0, IDX_TOP_Y] == packing_i1_bottom_y:
    +                # only consider those the box *directly* below and move the
    +                # right end of the new box to the left end of that box below
    +                min_left = min(min_left, int(
    +                    packing_i1_right_x - packing[i0, IDX_LEFT_X]))
    +        elif (packing_i1_top_y > packing[i0, IDX_BOTTOM_Y]) \
    +                and (packing_i1_bottom_y < packing[i0, IDX_TOP_Y]):
    +            min_left = min(min_left, int(
    +                packing_i1_left_x - packing[i0, IDX_RIGHT_X]))
    +    if min_left > 0:
    +        # move the box to the left
    +        packing[i1, IDX_LEFT_X] = packing_i1_left_x - min_left
    +        packing[i1, IDX_RIGHT_X] = packing_i1_right_x - min_left
    +        return True
    +    return False
    +
    +
    +@numba.njit(nogil=True, cache=True, inline="always", boundscheck=False)
    +def _decode(x: np.ndarray, y: np.ndarray, instance: np.ndarray,
    +            bin_width: int, bin_height: int, bin_starts: np.ndarray,
    +            bin_ends: np.ndarray) -> int:
    +    """
    +    Decode a (signed) permutation to a packing.
    +
    +    The permutation is processed from the beginning to the end.
    +    Each element identifies one object by its ID. If the ID is negative,
    +    the object will be inserted rotated by 90°. If the ID is positive, the
    +    object will be inserted as is.
    +
    +    The absolute value of the ID-1 will be used to look up the width and
    +    height of the object in the `instance` data. If the object needs to be
    +    rotated, width and height will be swapped.
    +
    +    Each object is, at the beginning, placed with its right side at the right
    +    end of the *first* bin. The bottom line of the object is initially put on
    +    top of the bin, i.e., initially the object is outside of the bin.
    +
    +    Then, the object is iteratively moved downward *in the bin* as far as
    +    possible. Once it reaches another object, we move it to the left until
    +    either its right side reaches the left end of the object beneath it or
    +    until its left side touches another object. Then we try to move the object
    +    down again, and so on.
    +
    +    Once the object can no longer be moved down, we check if it is now fully
    +    inside of *the bin*. If yes, then good, the object's bin index is set to
    +    the ID of the current bin. If not, then we cannot place the object into
    +    this bin. In this case, we move to the second bin an repeat the process.
    +    If the object fits into the second bin, then it is placed in there and
    +    we are finished. If not, we try the third bin, and so on.
    +
    +    If we cannot fit the object into any of the bins that already have other
    +    objects, then we allocate a new empty bin. We move the object to the
    +    bottom-left corner of this bin. In other words, the left side of the
    +    object touches the left side of the bin, i.e., is `0`. The bottom-line
    +    of the object is also the bottom of the bin, i.e., has coordinate `0` as
    +    well.
    +
    +    :param x: a possibly signed permutation
    +    :param y: the packing object
    +    :param instance: the packing instance data
    +    :param bin_width: the bin width
    +    :param bin_height: the bin height
    +    :param bin_starts: a temporary index holder array for bin starts
    +    :param bin_ends: a temporary index holder array for bin ends
    +    :returns: the number of bins
    +
    +    As example, we use a slightly modified version (we add more objects so we
    +    get to see the use of a second bin) of Figure 2 of the Liu and Teng paper
    +    "An Improved BL-Algorithm for Genetic Algorithm of the Orthogonal Packing
    +    of Rectangles."
    +
    +    >>> # [width, height, repetitions]
    +    >>> inst = np.array([[10, 20, 5], [5, 5, 5]])
    +    >>> # [id = plain, -id = rotated]
    +    >>> xx = np.array([1, -1, 2, -2, 1, -2, -2, -1, -1, 2])
    +    >>> # [id, bin, left-x, bottom-y, right-x, top-y] ...
    +    >>> yy = np.empty((10, 6), int)
    +    >>> binstarts = np.empty(10, int)
    +    >>> binends = np.empty(10, int)
    +    >>> print(_decode(xx, yy, inst, 30, 30, binstarts, binends))
    +    2
    +    >>> print(yy[0, :])
    +    [ 1  1  0  0 10 20]
    +    >>> print(yy[1, :])
    +    [ 1  1 10  0 30 10]
    +    >>> print(yy[2, :])
    +    [ 2  1 10 10 15 15]
    +    >>> print(yy[3, :])
    +    [ 2  1 15 10 20 15]
    +    >>> print(yy[4, :])
    +    [ 1  1 20 10 30 30]
    +    >>> print(yy[5, :])
    +    [ 2  1 10 15 15 20]
    +    >>> print(yy[6, :])
    +    [ 2  1 15 15 20 20]
    +    >>> print(yy[7, :])
    +    [ 1  1  0 20 20 30]
    +    >>> print(yy[8, :])
    +    [ 1  2  0  0 20 10]
    +    >>> print(yy[9, :])
    +    [ 2  2 20  0 25  5]
    +    """
    +    w: int  # the width of the current object
    +    h: int  # the height of the current object
    +    use_id: int  # the id of the current object
    +    bin_id: int = 1  # the id of the current bin
    +    bin_starts[0] = 0
    +    bin_ends[0] = 0
    +    for i, item_id in enumerate(x):  # iterate over all objects
    +        if item_id < 0:  # object should be rotated
    +            use_id = -(item_id + 1)  # get absolute id - 1
    +            w = int(instance[use_id, IDX_HEIGHT])  # width = height (rotated!)
    +            h = int(instance[use_id, IDX_WIDTH])   # height = width (rotated!)
    +        else:  # the object will not be rotated
    +            use_id = item_id - 1   # id - 1
    +            w = int(instance[use_id, IDX_WIDTH])  # get width
    +            h = int(instance[use_id, IDX_HEIGHT])  # get height
    +
    +# It could be that an object is too wide or too high for the bin in its
    +# current rotation even if the bin was empty entirely. In this case, we simply
    +# force-rotate it. A bin packing instance will not permit objects that do not
    +# fit into the bin in any rotation. So if the object does not fit in its
    +# current rotation, it must fit if we simply rotate it by 90°.
    +        if (w > bin_width) or (h > bin_height):
    +            w, h = h, w
    +
    +# At first, the object's right corner is at the right corner of the bin.
    +# The object sits exactly at the top of the bin, i.e., its bottom line
    +# is the top line of the bin.
    +        y[i, IDX_ID] = use_id + 1  # the id of the object
    +
    +        not_found: bool = True
    +        for item_bin in range(1, bin_id + 1):  # iterate over all bins in use
    +            bin_start = bin_starts[item_bin - 1]  # index of first item in bin
    +            bin_end = bin_ends[item_bin - 1]  # index after last item in bin
    +            y[i, IDX_LEFT_X] = bin_width - w  # the left end
    +            y[i, IDX_BOTTOM_Y] = bin_height  # object sits on top of bin
    +            y[i, IDX_RIGHT_X] = bin_width  # object ends at right end of bin
    +            y[i, IDX_TOP_Y] = bin_height + h  # top of object is outside of bin
    +
    +            while __move_down(y, item_bin, int(bin_start), int(bin_end), i) \
    +                    or __move_left(y, item_bin, int(bin_start),
    +                                   int(bin_end), i):
    +                pass  # loop until object can no longer be moved
    +
    +# Check if the object is completely inside the bin. If yes, we can put it
    +# there and stop searching.
    +            if (y[i, IDX_RIGHT_X] <= bin_width) \
    +                    and (y[i, IDX_TOP_Y] <= bin_height):
    +                not_found = False  # we found a placement, outer loop can stop
    +                y[i, IDX_BIN] = item_bin  # set the items bin
    +                bin_ends[item_bin - 1] = i + 1  # index after last item in bin
    +                break
    +
    +# If the object is not fully inside the current bin, we move to a new bin.
    +        if not_found:  # we did not find a spot in any of the bins
    +            bin_starts[bin_id] = i  # set the starting index of the new bin
    +            bin_ends[bin_id] = i + 1  # set the end index of the new bin
    +            bin_id = bin_id + 1  # step to the next bin
    +            y[i, IDX_LEFT_X] = 0  # the object goes to the left end of the bin
    +            y[i, IDX_BOTTOM_Y] = 0  # the object goes to the bottom of the bin
    +            y[i, IDX_RIGHT_X] = w  # so its right end is its width
    +            y[i, IDX_TOP_Y] = h  # and its top end is its height
    +            y[i, IDX_BIN] = bin_id  # store the bin id
    +    return int(bin_id)  # return the total number of bins
    +
    +
    +
    +[docs] +class ImprovedBottomLeftEncoding2(Encoding): + """An Improved Bottem Left Encoding by Liu and Teng for multiple bins.""" + + def __init__(self, instance: Instance) -> None: + """ + Instantiate the improved best first encoding. + + :param instance: the packing instance + """ + if not isinstance(instance, Instance): + raise type_error(instance, "instance", Instance) + #: the internal instance reference + self.__instance: Final[Instance] = instance + #: the temporary array for holding bin start indexes + self.__bin_starts: Final[np.ndarray] = np.empty( + instance.n_items, instance.dtype) + #: the temporary array for holding bin end indexes + self.__bin_ends: Final[np.ndarray] = np.empty( + instance.n_items, instance.dtype) + +
    +[docs] + def decode(self, x: np.ndarray, y: Packing) -> None: + """ + Map a potentially signed permutation to a packing. + + :param x: the array + :param y: the Gantt chart + """ + y.n_bins = _decode(x, y, self.__instance, self.__instance.bin_width, + self.__instance.bin_height, self.__bin_starts, + self.__bin_ends)
    + + + def __str__(self) -> str: + """ + Get the name of this encoding. + + :return: `"ibf2"` + :rtype: str + """ + return "ibf2" + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log all parameters of this component as key-value pairs. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + with logger.scope(SCOPE_INSTANCE) as kv: + self.__instance.log_parameters_to(kv)
    +
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/experiment.html b/_modules/moptipyapps/binpacking2d/experiment.html new file mode 100644 index 00000000..c82aef17 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/experiment.html @@ -0,0 +1,150 @@ +moptipyapps.binpacking2d.experiment — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.experiment

    +"""An example experiment for bin packing."""
    +
    +import argparse
    +from typing import Callable, Final, cast
    +
    +from moptipy.algorithms.so.ffa.fea1plus1 import FEA1plus1
    +from moptipy.algorithms.so.rls import RLS
    +from moptipy.api.encoding import Encoding
    +from moptipy.api.execution import Execution
    +from moptipy.api.experiment import run_experiment
    +from moptipy.api.objective import Objective
    +from moptipy.operators.signed_permutations.op0_shuffle_and_flip import (
    +    Op0ShuffleAndFlip,
    +)
    +from moptipy.operators.signed_permutations.op1_swap_2_or_flip import (
    +    Op1Swap2OrFlip,
    +)
    +from moptipy.spaces.signed_permutations import SignedPermutations
    +from pycommons.io.path import Path
    +
    +from moptipyapps.binpacking2d.encodings.ibl_encoding_1 import (
    +    ImprovedBottomLeftEncoding1,
    +)
    +from moptipyapps.binpacking2d.instance import Instance
    +from moptipyapps.binpacking2d.packing_result import DEFAULT_OBJECTIVES
    +from moptipyapps.binpacking2d.packing_space import PackingSpace
    +from moptipyapps.shared import moptipyapps_argparser
    +
    +#: the maximum number of FEs
    +MAX_FES: Final[int] = 1_000_000
    +
    +
    +
    +[docs] +def base_setup(instance: Instance, + encoding: Callable[[Instance], Encoding], + objective: Callable[[Instance], Objective]) \ + -> tuple[SignedPermutations, Execution]: + """ + Create the basic setup. + + :param instance: the instance to use + :param encoding: the encoding function + :param objective: the objective function + :return: the search space and the basic execution + """ + space: Final[SignedPermutations] = SignedPermutations( + instance.get_standard_item_sequence()) + + return (space, Execution().set_max_fes(MAX_FES).set_log_improvements(True) + .set_objective(objective(instance)) + .set_encoding(encoding(instance)) + .set_search_space(space) + .set_solution_space(PackingSpace(instance)))
    + + + +
    +[docs] +def rls(instance: Instance, + encoding: Callable[[Instance], Encoding], + objective: Callable[[Instance], Objective]) -> Execution: + """ + Create the RLS setup. + + :param instance: the instance to use + :param encoding: the encoding function + :param objective: the objective function + :return: the RLS execution + """ + space, execute = base_setup(instance, encoding, objective) + return execute.set_algorithm( + RLS(Op0ShuffleAndFlip(space), Op1Swap2OrFlip()))
    + + + +
    +[docs] +def fea(instance: Instance, + encoding: Callable[[Instance], Encoding], + objective: Callable[[Instance], Objective]) -> Execution: + """ + Create the FEA setup. + + :param instance: the instance to use + :param encoding: the encoding function + :param objective: the objective function + :return: the RLS execution + """ + space, execute = base_setup(instance, encoding, objective) + return execute.set_algorithm( + FEA1plus1(Op0ShuffleAndFlip(space), Op1Swap2OrFlip()))
    + + + +
    +[docs] +def run(base_dir: str, n_runs: int = 23) -> None: + """ + Run the experiment. + + :param base_dir: the base directory + :param n_runs: the number of runs, by default `23` + """ + use_dir: Final[Path] = Path(base_dir) + use_dir.ensure_dir_exists() + + encodings: Final[tuple[Callable[[Instance], Encoding], ...]] = ( + ImprovedBottomLeftEncoding1, + ) + instances: list[str] = [ + inst for inst in Instance.list_resources() + if inst.startswith(("b", "a"))] + inst_creators: list[Callable[[], Instance]] = [cast( + Callable[[], Instance], lambda __s=_s: Instance.from_resource(__s)) + for _s in instances] + namer: Final[Instance] = Instance.from_resource(instances[0]) + + for objective in DEFAULT_OBJECTIVES: + objective_dir: Path = use_dir.resolve_inside(str(objective(namer))) + objective_dir.ensure_dir_exists() + for encoding in encodings: + encoding_dir: Path = objective_dir.resolve_inside( + str(encoding(namer))) + encoding_dir.ensure_dir_exists() + run_experiment( + base_dir=encoding_dir, + instances=inst_creators, + setups=[ + cast(Callable, lambda ins, _e=encoding, _o=objective: rls( + ins, _e, _o)), + cast(Callable, lambda ins, _e=encoding, _o=objective: fea( + ins, _e, _o))], + n_runs=n_runs, + perform_warmup=True, + perform_pre_warmup=True)
    + + + +# Run the experiment from the command line +if __name__ == "__main__": + parser: Final[argparse.ArgumentParser] = moptipyapps_argparser( + __file__, "2D Bin Packing", "Run the 2D Bin Packing experiment.") + parser.add_argument( + "dest", help="the directory to store the experimental results under", + type=Path, nargs="?", default="./results/") + args: Final[argparse.Namespace] = parser.parse_args() + run(args.dest) +
    diff --git a/_modules/moptipyapps/binpacking2d/instance.html b/_modules/moptipyapps/binpacking2d/instance.html new file mode 100644 index 00000000..fe410240 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/instance.html @@ -0,0 +1,967 @@ +moptipyapps.binpacking2d.instance — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.instance

    +"""
    +A Two-Dimensional Bin Packing instance.
    +
    +This module provides an instance of the two-dimensional bin packing problem
    +as defined in 2DPackLib [1, 2] as well as the four non-trivial 'Almost Squares
    +in Almost Squares' instances [6, 7].
    +
    +All instances of :class:`~moptipyapps.binpacking2d.instance.Instance`
    +are two-dimensional numpy `ndarrays` with additional attributes.
    +Each instance has a :attr:`~Instance.name`. Instances also specify a
    +:attr:`~Instance.bin_width` and :attr:`~Instance.bin_height`.
    +They define the number :attr:`~Instance.n_different_items` of items with
    +*different* IDs. Notice that in the 2DPackLib dataset, a benchmark instance
    +may contain the same item multiple times. Obviously, all items of the same
    +ID have the exact same width and height, meaning that we only need to store
    +them once and remember how often they occur. (Notice that the opposite is not
    +true, i.e., not all items with the same width and height do have the same ID.)
    +Anyway, the total number :attr:`~Instance.n_items` of items, i.e., the sum of
    +all the repetitions of all items, is also stored.
    +
    +The matrix data of the instance class is laid out as follows: There is one row
    +for each item. The row contains the width of the item, the height of the item,
    +and the number of times the item will occur. The row at index `i` stands for
    +the item with ID `i+1`.
    +
    +Instances can be loaded directly from a 2DPackLib file via
    +:meth:`Instance.from_2dpacklib`. They can also be loaded from a compact string
    +representation (via :meth:`Instance.from_compact_str`) and can also be
    +converted to such a compact representation
    +(via :meth:`Instance.to_compact_str`). This library ships with a set of
    +pre-defined instances as resource which can be obtained via
    +:meth:`Instance.from_resource` and listed via
    +:meth:`Instance.list_resources`.
    +
    +We provide the instances of the sets `A` [3], `BENG` [4], and `CLASS` [5]
    +from 2DPackLib. Additionally, we include the four non-trivial 'Almost Squares
    +in Almost Squares' instances [6,7].
    +
    +Initial work on this code has been contributed by Mr. Rui ZHAO (赵睿),
    +<zr1329142665@163.com> a Master's student at the Institute of Applied
    +Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of
    +Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University
    +(合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of
    +Prof. Dr. Thomas Weise (汤卫思教授).
    +
    +1. Manuel Iori, Vinícius Loti de Lima, Silvano Martello, and Michele Monaci.
    +   *2DPackLib*.
    +   https://site.unibo.it/operations-research/en/research/2dpacklib
    +2. Manuel Iori, Vinícius Loti de Lima, Silvano Martello, and Michele
    +   Monaci. 2DPackLib: A Two-Dimensional Cutting and Packing Library.
    +   *Optimization Letters* 16(2):471-480. March 2022.
    +   https://doi.org/10.1007/s11590-021-01808-y
    +3. Rita Macedo, Cláudio Alves, and José M. Valério de Carvalho. Arc-Flow
    +   Model for the Two-Dimensional Guillotine Cutting Stock Problem.
    +   *Computers & Operations Research* 37(6):991-1001. June 2010.
    +   https://doi.org/10.1016/j.cor.2009.08.005.
    +4. Bengt-Erik Bengtsson. Packing Rectangular Pieces - A Heuristic Approach.
    +   *The Computer Journal* 25(3):353-357, August 1982.
    +   https://doi.org/10.1093/comjnl/25.3.353
    +5. J.O. Berkey and P.Y. Wang. Two Dimensional Finite Bin Packing Algorithms.
    +   *Journal of the Operational Research Society* 38(5):423-429. May 1987.
    +   https://doi.org/10.1057/jors.1987.70
    +6. Daan van den Berg, Florian Braam, Mark Moes, Emiel Suilen, and
    +   Sandjai Bhulai. Almost Squares in Almost Squares: Solving the Final
    +   Instance. In *The Fifth International Conference on Data Analytics
    +   (DATA ANALYTICS'16)* October 9-13, 2016, Venice, Italy, pages 69-74.
    +   IARIA. ISBN: 9781612085104. https://hdl.handle.net/11245/1.545914.
    +   https://math.vu.nl/~sbhulai/publications/data_analytics2016b.pdf.
    +7. H. Simonis and B. O'Sullivan. Almost Square Packing in *8th International
    +   Conference on Integration of AI and OR Techniques in Constraint Programming
    +   for Combinatorial Optimization Problems* (CPAIOR'11), May 23-27, 2011,
    +   Berlin, Germany, pages 196-209. Berlin, Germany: Springer-Verlag.
    +   doi:10.1007/978-3-642-21311-3_19.
    +
    +>>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]])
    +>>> ins.name
    +'a'
    +>>> ins.bin_width
    +100
    +>>> ins.bin_height
    +50
    +>>> ins.dtype
    +dtype('int8')
    +>>> ins.n_different_items
    +3
    +>>> ins.to_compact_str()
    +'a;3;100;50;10,5;3,3;5,5'
    +>>> ins = Instance("b", 100, 50, np.array([[10, 5, 1], [3, 3, 1], [3, 3, 1]]))
    +>>> ins.name
    +'b'
    +>>> ins.bin_width
    +100
    +>>> ins.bin_height
    +50
    +>>> ins.dtype
    +dtype('int8')
    +>>> ins.to_compact_str()
    +'b;3;100;50;10,5;3,3;3,3'
    +>>> ins = Instance.from_resource("cl02_020_06")
    +>>> ins.dtype
    +dtype('int8')
    +>>> ins.n_different_items
    +20
    +>>> ins.n_items
    +20
    +>>> ins = Instance.from_resource("a25")
    +>>> ins.dtype
    +dtype('int16')
    +>>> ins.n_different_items
    +75
    +>>> ins.n_items
    +156
    +"""
    +
    +from importlib import resources  # nosem
    +from os.path import basename
    +from statistics import quantiles
    +from typing import Final, Iterable, cast
    +
    +import moptipy.utils.nputils as npu
    +import numpy as np
    +from moptipy.api.component import Component
    +from moptipy.utils.logger import CSV_SEPARATOR, KeyValueLogSection
    +from moptipy.utils.nputils import int_range_to_dtype
    +from moptipy.utils.strings import sanitize_name
    +from pycommons.io.path import UTF8, Path, file_path
    +from pycommons.types import check_int_range, check_to_int_range, type_error
    +
    +#: the instances resource name
    +INSTANCES_RESOURCE: Final[str] = "instances.txt"
    +
    +#: the total number of items
    +N_ITEMS: Final[str] = "nItems"
    +#: the number of different items.
    +N_DIFFERENT_ITEMS: Final[str] = "nDifferentItems"
    +#: the bin width
    +BIN_WIDTH: Final[str] = "binWidth"
    +#: the bin height
    +BIN_HEIGHT: Final[str] = "binHeight"
    +#: The internal item separator
    +INTERNAL_SEP: Final[str] = "," if CSV_SEPARATOR == ";" else ";"
    +
    +#: the index of the width element in an item of an instance
    +IDX_WIDTH: Final[int] = 0
    +#: the index of the height element in an item of an instance
    +IDX_HEIGHT: Final[int] = 1
    +#: the index of the repetitions element in an item of an instance
    +IDX_REPETITION: Final[int] = 2
    +
    +#: the list of instance names of the 2DPackLib bin packing set downloaded
    +#: from https://site.unibo.it/operations-research/en/research/2dpacklib
    +#: ('a*','beng*', 'cl*') as well as the four non-trivial 'Almost Squares in
    +#: Almost Squares' instances ('asqas*').
    +_INSTANCES: Final[tuple[str, ...]] = (
    +    "a01", "a02", "a03", "a04", "a05", "a06", "a07", "a08", "a09", "a10",
    +    "a11", "a12", "a13", "a14", "a15", "a16", "a17", "a18", "a19", "a20",
    +    "a21", "a22", "a23", "a24", "a25", "a26", "a27", "a28", "a29", "a30",
    +    "a31", "a32", "a33", "a34", "a35", "a36", "a37", "a38", "a39", "a40",
    +    "a41", "a42", "a43", "asqas03", "asqas08", "asqas20", "asqas34", "beng01",
    +    "beng02", "beng03", "beng04", "beng05", "beng06", "beng07", "beng08",
    +    "beng09", "beng10", "cl01_020_01", "cl01_020_02", "cl01_020_03",
    +    "cl01_020_04", "cl01_020_05", "cl01_020_06", "cl01_020_07", "cl01_020_08",
    +    "cl01_020_09", "cl01_020_10", "cl01_040_01", "cl01_040_02", "cl01_040_03",
    +    "cl01_040_04", "cl01_040_05", "cl01_040_06", "cl01_040_07", "cl01_040_08",
    +    "cl01_040_09", "cl01_040_10", "cl01_060_01", "cl01_060_02", "cl01_060_03",
    +    "cl01_060_04", "cl01_060_05", "cl01_060_06", "cl01_060_07", "cl01_060_08",
    +    "cl01_060_09", "cl01_060_10", "cl01_080_01", "cl01_080_02", "cl01_080_03",
    +    "cl01_080_04", "cl01_080_05", "cl01_080_06", "cl01_080_07", "cl01_080_08",
    +    "cl01_080_09", "cl01_080_10", "cl01_100_01", "cl01_100_02", "cl01_100_03",
    +    "cl01_100_04", "cl01_100_05", "cl01_100_06", "cl01_100_07", "cl01_100_08",
    +    "cl01_100_09", "cl01_100_10", "cl02_020_01", "cl02_020_02", "cl02_020_03",
    +    "cl02_020_04", "cl02_020_05", "cl02_020_06", "cl02_020_07", "cl02_020_08",
    +    "cl02_020_09", "cl02_020_10", "cl02_040_01", "cl02_040_02", "cl02_040_03",
    +    "cl02_040_04", "cl02_040_05", "cl02_040_06", "cl02_040_07", "cl02_040_08",
    +    "cl02_040_09", "cl02_040_10", "cl02_060_01", "cl02_060_02", "cl02_060_03",
    +    "cl02_060_04", "cl02_060_05", "cl02_060_06", "cl02_060_07", "cl02_060_08",
    +    "cl02_060_09", "cl02_060_10", "cl02_080_01", "cl02_080_02", "cl02_080_03",
    +    "cl02_080_04", "cl02_080_05", "cl02_080_06", "cl02_080_07", "cl02_080_08",
    +    "cl02_080_09", "cl02_080_10", "cl02_100_01", "cl02_100_02", "cl02_100_03",
    +    "cl02_100_04", "cl02_100_05", "cl02_100_06", "cl02_100_07", "cl02_100_08",
    +    "cl02_100_09", "cl02_100_10", "cl03_020_01", "cl03_020_02", "cl03_020_03",
    +    "cl03_020_04", "cl03_020_05", "cl03_020_06", "cl03_020_07", "cl03_020_08",
    +    "cl03_020_09", "cl03_020_10", "cl03_040_01", "cl03_040_02", "cl03_040_03",
    +    "cl03_040_04", "cl03_040_05", "cl03_040_06", "cl03_040_07", "cl03_040_08",
    +    "cl03_040_09", "cl03_040_10", "cl03_060_01", "cl03_060_02", "cl03_060_03",
    +    "cl03_060_04", "cl03_060_05", "cl03_060_06", "cl03_060_07", "cl03_060_08",
    +    "cl03_060_09", "cl03_060_10", "cl03_080_01", "cl03_080_02", "cl03_080_03",
    +    "cl03_080_04", "cl03_080_05", "cl03_080_06", "cl03_080_07", "cl03_080_08",
    +    "cl03_080_09", "cl03_080_10", "cl03_100_01", "cl03_100_02", "cl03_100_03",
    +    "cl03_100_04", "cl03_100_05", "cl03_100_06", "cl03_100_07", "cl03_100_08",
    +    "cl03_100_09", "cl03_100_10", "cl04_020_01", "cl04_020_02", "cl04_020_03",
    +    "cl04_020_04", "cl04_020_05", "cl04_020_06", "cl04_020_07", "cl04_020_08",
    +    "cl04_020_09", "cl04_020_10", "cl04_040_01", "cl04_040_02", "cl04_040_03",
    +    "cl04_040_04", "cl04_040_05", "cl04_040_06", "cl04_040_07", "cl04_040_08",
    +    "cl04_040_09", "cl04_040_10", "cl04_060_01", "cl04_060_02", "cl04_060_03",
    +    "cl04_060_04", "cl04_060_05", "cl04_060_06", "cl04_060_07", "cl04_060_08",
    +    "cl04_060_09", "cl04_060_10", "cl04_080_01", "cl04_080_02", "cl04_080_03",
    +    "cl04_080_04", "cl04_080_05", "cl04_080_06", "cl04_080_07", "cl04_080_08",
    +    "cl04_080_09", "cl04_080_10", "cl04_100_01", "cl04_100_02", "cl04_100_03",
    +    "cl04_100_04", "cl04_100_05", "cl04_100_06", "cl04_100_07", "cl04_100_08",
    +    "cl04_100_09", "cl04_100_10", "cl05_020_01", "cl05_020_02", "cl05_020_03",
    +    "cl05_020_04", "cl05_020_05", "cl05_020_06", "cl05_020_07", "cl05_020_08",
    +    "cl05_020_09", "cl05_020_10", "cl05_040_01", "cl05_040_02", "cl05_040_03",
    +    "cl05_040_04", "cl05_040_05", "cl05_040_06", "cl05_040_07", "cl05_040_08",
    +    "cl05_040_09", "cl05_040_10", "cl05_060_01", "cl05_060_02", "cl05_060_03",
    +    "cl05_060_04", "cl05_060_05", "cl05_060_06", "cl05_060_07", "cl05_060_08",
    +    "cl05_060_09", "cl05_060_10", "cl05_080_01", "cl05_080_02", "cl05_080_03",
    +    "cl05_080_04", "cl05_080_05", "cl05_080_06", "cl05_080_07", "cl05_080_08",
    +    "cl05_080_09", "cl05_080_10", "cl05_100_01", "cl05_100_02", "cl05_100_03",
    +    "cl05_100_04", "cl05_100_05", "cl05_100_06", "cl05_100_07", "cl05_100_08",
    +    "cl05_100_09", "cl05_100_10", "cl06_020_01", "cl06_020_02", "cl06_020_03",
    +    "cl06_020_04", "cl06_020_05", "cl06_020_06", "cl06_020_07", "cl06_020_08",
    +    "cl06_020_09", "cl06_020_10", "cl06_040_01", "cl06_040_02", "cl06_040_03",
    +    "cl06_040_04", "cl06_040_05", "cl06_040_06", "cl06_040_07", "cl06_040_08",
    +    "cl06_040_09", "cl06_040_10", "cl06_060_01", "cl06_060_02", "cl06_060_03",
    +    "cl06_060_04", "cl06_060_05", "cl06_060_06", "cl06_060_07", "cl06_060_08",
    +    "cl06_060_09", "cl06_060_10", "cl06_080_01", "cl06_080_02", "cl06_080_03",
    +    "cl06_080_04", "cl06_080_05", "cl06_080_06", "cl06_080_07", "cl06_080_08",
    +    "cl06_080_09", "cl06_080_10", "cl06_100_01", "cl06_100_02", "cl06_100_03",
    +    "cl06_100_04", "cl06_100_05", "cl06_100_06", "cl06_100_07", "cl06_100_08",
    +    "cl06_100_09", "cl06_100_10", "cl07_020_01", "cl07_020_02", "cl07_020_03",
    +    "cl07_020_04", "cl07_020_05", "cl07_020_06", "cl07_020_07", "cl07_020_08",
    +    "cl07_020_09", "cl07_020_10", "cl07_040_01", "cl07_040_02", "cl07_040_03",
    +    "cl07_040_04", "cl07_040_05", "cl07_040_06", "cl07_040_07", "cl07_040_08",
    +    "cl07_040_09", "cl07_040_10", "cl07_060_01", "cl07_060_02", "cl07_060_03",
    +    "cl07_060_04", "cl07_060_05", "cl07_060_06", "cl07_060_07", "cl07_060_08",
    +    "cl07_060_09", "cl07_060_10", "cl07_080_01", "cl07_080_02", "cl07_080_03",
    +    "cl07_080_04", "cl07_080_05", "cl07_080_06", "cl07_080_07", "cl07_080_08",
    +    "cl07_080_09", "cl07_080_10", "cl07_100_01", "cl07_100_02", "cl07_100_03",
    +    "cl07_100_04", "cl07_100_05", "cl07_100_06", "cl07_100_07", "cl07_100_08",
    +    "cl07_100_09", "cl07_100_10", "cl08_020_01", "cl08_020_02", "cl08_020_03",
    +    "cl08_020_04", "cl08_020_05", "cl08_020_06", "cl08_020_07", "cl08_020_08",
    +    "cl08_020_09", "cl08_020_10", "cl08_040_01", "cl08_040_02", "cl08_040_03",
    +    "cl08_040_04", "cl08_040_05", "cl08_040_06", "cl08_040_07", "cl08_040_08",
    +    "cl08_040_09", "cl08_040_10", "cl08_060_01", "cl08_060_02", "cl08_060_03",
    +    "cl08_060_04", "cl08_060_05", "cl08_060_06", "cl08_060_07", "cl08_060_08",
    +    "cl08_060_09", "cl08_060_10", "cl08_080_01", "cl08_080_02", "cl08_080_03",
    +    "cl08_080_04", "cl08_080_05", "cl08_080_06", "cl08_080_07", "cl08_080_08",
    +    "cl08_080_09", "cl08_080_10", "cl08_100_01", "cl08_100_02", "cl08_100_03",
    +    "cl08_100_04", "cl08_100_05", "cl08_100_06", "cl08_100_07", "cl08_100_08",
    +    "cl08_100_09", "cl08_100_10", "cl09_020_01", "cl09_020_02", "cl09_020_03",
    +    "cl09_020_04", "cl09_020_05", "cl09_020_06", "cl09_020_07", "cl09_020_08",
    +    "cl09_020_09", "cl09_020_10", "cl09_040_01", "cl09_040_02", "cl09_040_03",
    +    "cl09_040_04", "cl09_040_05", "cl09_040_06", "cl09_040_07", "cl09_040_08",
    +    "cl09_040_09", "cl09_040_10", "cl09_060_01", "cl09_060_02", "cl09_060_03",
    +    "cl09_060_04", "cl09_060_05", "cl09_060_06", "cl09_060_07", "cl09_060_08",
    +    "cl09_060_09", "cl09_060_10", "cl09_080_01", "cl09_080_02", "cl09_080_03",
    +    "cl09_080_04", "cl09_080_05", "cl09_080_06", "cl09_080_07", "cl09_080_08",
    +    "cl09_080_09", "cl09_080_10", "cl09_100_01", "cl09_100_02", "cl09_100_03",
    +    "cl09_100_04", "cl09_100_05", "cl09_100_06", "cl09_100_07", "cl09_100_08",
    +    "cl09_100_09", "cl09_100_10", "cl10_020_01", "cl10_020_02", "cl10_020_03",
    +    "cl10_020_04", "cl10_020_05", "cl10_020_06", "cl10_020_07", "cl10_020_08",
    +    "cl10_020_09", "cl10_020_10", "cl10_040_01", "cl10_040_02", "cl10_040_03",
    +    "cl10_040_04", "cl10_040_05", "cl10_040_06", "cl10_040_07", "cl10_040_08",
    +    "cl10_040_09", "cl10_040_10", "cl10_060_01", "cl10_060_02", "cl10_060_03",
    +    "cl10_060_04", "cl10_060_05", "cl10_060_06", "cl10_060_07", "cl10_060_08",
    +    "cl10_060_09", "cl10_060_10", "cl10_080_01", "cl10_080_02", "cl10_080_03",
    +    "cl10_080_04", "cl10_080_05", "cl10_080_06", "cl10_080_07", "cl10_080_08",
    +    "cl10_080_09", "cl10_080_10", "cl10_100_01", "cl10_100_02", "cl10_100_03",
    +    "cl10_100_04", "cl10_100_05", "cl10_100_06", "cl10_100_07", "cl10_100_08",
    +    "cl10_100_09", "cl10_100_10")
    +
    +
    +def __divide_based_on_size(instances: Iterable[str],
    +                           divisions: int) -> list[list[str]]:
    +    """
    +    Divide the instances based on their size.
    +
    +    :param instances: the instances
    +    :param divisions: the number of divisions
    +    :return: the divided instances
    +    """
    +    insts: list[str] = list(instances)
    +    if len(insts) <= 0:
    +        return [insts]
    +
    +    try:
    +        loaded: list[Instance] = [Instance.from_resource(n) for n in insts]
    +    except (OSError, ValueError):
    +        return [insts]
    +
    +    # get the quantiles = group divisions
    +    qants: list[float | int] = quantiles((
    +        inst.n_items for inst in loaded), n=divisions, method="inclusive")
    +
    +    # now put the instances into the groups
    +    groups: list[list[str]] = []
    +    for inst in loaded:
    +        inst_size = inst.n_items
    +        idx: int = 0
    +        for q in qants:
    +            if q > inst_size:
    +                break
    +            idx += 1
    +        while idx >= len(groups):
    +            groups.append([])
    +        groups[idx].append(str(inst))
    +
    +    # remove useless groups
    +    for idx in range(len(groups) - 1, -1, -1):
    +        if len(groups[idx]) <= 0:
    +            del groups[idx]
    +    return groups
    +
    +
    +def _make_instance_groups(instances: Iterable[str]) \
    +        -> tuple[tuple[str, str | None, tuple[str, ...]], ...]:
    +    """
    +    Make the standard instance groups from an instance name list.
    +
    +    :return: the instance groups
    +    """
    +    groups: list[tuple[str, str | None, tuple[str, ...]]] = []
    +
    +    a_divided: list[list[str]] = __divide_based_on_size(sorted(
    +        b for b in instances if b.startswith("a")
    +        and (len(b) == 3) and b[-1].isdigit()
    +        and b[-2].isdigit()), 3)
    +    if len(a_divided) > 0:
    +        subnames: list[str | None] = [None] if (len(a_divided) <= 1) else (
    +            ["small", "large"] if (len(a_divided) <= 2) else
    +            ["small", "med", "large"])
    +        for a_idx, a_group in enumerate(a_divided):
    +            v: tuple[str, str | None, tuple[str, ...]] = (
    +                "a", subnames[a_idx], tuple(a_group))
    +            if len(v[2]) > 0:
    +                groups.append(v)
    +
    +    v = ("beng", "1-8", tuple(sorted(
    +        b for b in instances if b.startswith("beng")
    +        and (int(b[-2:]) < 9))))
    +    if len(v[2]) > 0:
    +        groups.append(v)
    +
    +    v = ("beng", "9-10", tuple(sorted(
    +        b for b in instances if b.startswith("beng")
    +        and (int(b[-2:]) >= 9))))
    +    if len(v[2]) > 0:
    +        groups.append(v)
    +
    +    for i in range(1, 11):
    +        name: str = f"class {i}"
    +        preprefix: str = f"cl0{i}" if i < 10 else f"cl{i}"
    +        for n in (20, 40, 60, 80, 100):
    +            prefix: str = f"{preprefix}_0{n}_" \
    +                if n < 100 else f"{preprefix}_{n}_"
    +            v = (name, str(n), tuple(sorted(
    +                b for b in _INSTANCES if b.startswith(prefix))))
    +            if len(v[2]) > 0:
    +                groups.append(v)
    +
    +    v = ("asqas", None, tuple(sorted(
    +        b for b in _INSTANCES if b.startswith("asqas"))))
    +    if len(v[2]) > 0:
    +        groups.append(v)
    +
    +    all_set: set[str] = set()
    +    for g in groups:
    +        all_set.update(g[2])
    +    inst_set: set[str] = set(instances)
    +    if all_set != inst_set:
    +        raise ValueError(f"group instances is {all_set!r} but "
    +                         f"instance set is {inst_set!r}!")
    +    return tuple(groups)
    +
    +
    +def __cutsq(matrix: np.ndarray) -> list[int]:
    +    """
    +    Cut all items into squares via the CUTSQ procedure.
    +
    +    :param matrix: the item matrix
    +    :return: the list of squares
    +
    +    >>> __cutsq(np.array([[14, 12, 1]], int))
    +    [12, 2, 2, 2, 2, 2, 2]
    +
    +    >>> __cutsq(np.array([[14, 12, 2]], int))
    +    [12, 12, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
    +    """
    +    # create list of items in horizontal orientation
    +    j_sq: Final[list[int]] = []  # the list of squares (width = height)
    +    s: Final[list[int]] = []  # a temporary list
    +    for row in matrix:
    +        w: int = int(row[0])
    +        h: int = int(row[1])
    +        if h > w:
    +            w, h = h, w
    +        while h > 1:
    +            k: int = w // h
    +            for _ in range(k):
    +                s.append(h)
    +            w, h = h, w - (k * h)
    +        times: int = int(row[2])
    +        j_sq.extend(s * times if times > 1 else s)
    +        s.clear()
    +
    +    j_sq.sort(reverse=True)  # sort the squares in decreasing size
    +    return j_sq
    +
    +
    +def __lb_q(bin_width: int, bin_height: int, q: int, j_js: list[int]) -> int:
    +    """
    +    Compute the lower bound for a given q.
    +
    +    :param bin_width: the bin width
    +    :param bin_height: the bin height
    +    :param q: the parameter q
    +    :param j_js: the sorted square list
    +    :return: the lower bound
    +
    +    >>> jj = [18, 18, 12, 12, 11, 11, 11, 11, 11, 7, 7, 7, 7, 7, 7]
    +    >>> len(jj)
    +    15
    +    >>> __lb_q(23, 20, 6, jj)
    +    6
    +    """
    +    m: Final[int] = len(j_js)
    +    half_width: Final[float] = bin_width / 2
    +    half_height: Final[float] = bin_height / 2
    +    width_m_q: Final[int] = bin_width - q
    +
    +    # First we compute sets S1 to S4.
    +    s1: list[int] = []  # S1 from Equation 2
    +    s2: list[int] = []  # S2 from Equation 3
    +    s3: list[int] = []  # S2 from Equation 4
    +    s4: list[int] = []  # S2 from Equation 5
    +
    +    for i in range(m):
    +        l_i: int = j_js[i]
    +        if l_i > width_m_q:
    +            s1.append(i)  # Equation 2
    +        elif l_i > half_width:
    +            s2.append(i)  # Equation 3
    +        elif l_i > half_height:
    +            s3.append(i)  # Equation 4
    +        elif l_i >= q:
    +            s4.append(i)  # Equation 5
    +        else:
    +            break
    +
    +    # compute set S23 as in Theorem 3 under Equation 7
    +    height_m_q: Final[int] = bin_height - q
    +    s23: Final[list[int]] = [j for j in (s2 + s3) if j_js[j] > height_m_q]
    +
    +    # Now we sort S2 by non-increasing value of residual space.
    +    s2.reverse()  # = .sort(key=lambda i: bin_width - j_js[i], reverse=True)
    +
    +    # Now we compute S3 - ^S3^
    +    s3_minus_s3d: list[int] = s3.copy()
    +    for i in s2:
    +        residual: int = bin_width - j_js[i]
    +        not_found: bool = True
    +        for j, idx in enumerate(s3_minus_s3d):
    +            needs: int = j_js[idx]
    +            if needs <= residual:
    +                del s3_minus_s3d[j]
    +                not_found = False
    +                break
    +        if not_found:
    +            break
    +
    +    sum_s3_l: int = sum(j_js[i] for i in s3_minus_s3d)
    +    b1 = sum_s3_l // bin_width
    +    if (b1 * bin_width) < sum_s3_l:
    +        b1 = b1 + 1
    +
    +    len_s3: int = len(s3_minus_s3d)
    +    div: int = bin_width // ((bin_height // 2) + 1)
    +    b2 = len_s3 // div
    +    if (b2 * div) < len_s3:
    +        b2 = b2 + 1
    +
    +    l_tilde: Final[int] = len(s2) + max(b1, b2)  # Equation 6.
    +    bound: int = len(s1) + l_tilde
    +
    +    # Now compute the final bound based on Theorem 3 / Equation 7.
    +    bin_size: Final[int] = bin_width * bin_height
    +    denom: int = sum(j_js[i] ** 2 for i in (s2 + s3 + s4)) \
    +        - ((bin_size * l_tilde) - sum(j_js[i] * (
    +            bin_height - j_js[i]) for i in s23))
    +    if denom > 0:
    +        b = denom // bin_size
    +        if (b * bin_size) < denom:
    +            b = b + 1
    +        bound = bound + b
    +
    +    return bound
    +
    +
    +def _lower_bound_damv(bin_width: int, bin_height: int,
    +                      matrix: np.ndarray) -> int:
    +    """
    +    Compute the lower bound as defined by Dell'Amico et al.
    +
    +    :param bin_width: the bin width
    +    :param bin_height: the bin height
    +    :param matrix: the item matrix
    +    :return: the lower bound
    +
    +    >>> mat = np.array([[10, 5, 1], [3, 3, 1], [3, 3, 1]])
    +    >>> _lower_bound_damv(23, 20, mat)
    +    1
    +
    +    >>> mat = np.array([[20, 5, 3], [13, 23, 1], [13, 9, 3]])
    +    >>> _lower_bound_damv(23, 20, mat)
    +    3
    +    """
    +    # ensure horizontal orientation (width >= height)
    +    if bin_height > bin_width:
    +        bin_width, bin_height = bin_height, bin_width
    +    j_sq: Final[list[int]] = __cutsq(matrix)
    +    res: Final[int] = max(__lb_q(bin_width, bin_height, q, j_sq)
    +                          for q in range((bin_height // 2) + 1))
    +    return max(1, res)
    +
    +
    +
    +[docs] +class Instance(Component, np.ndarray): + """ + An instance of the 2D Bin Packing Problem. + + Each row of the matrix contains three values: 1. the item's width, 2. the + item's height, 3. how often the item occurs. + """ + + #: the name of the instance + name: str + #: the total number of items (including repetitions) + n_items: int + #: the number of different items + n_different_items: int + #: the total area occupied by all items + total_item_area: int + #: the bin width + bin_width: int + #: the bin height + bin_height: int + #: the minimum number of bins that this instance requires + lower_bound_bins: int + + def __new__(cls, name: str, + bin_width: int, bin_height: int, + matrix: np.ndarray | list[list[int]]) -> "Instance": + """ + Create an instance of the 2D bin packing problem. + + :param cls: the class + :param name: the name of the instance + :param bin_width: the bin width + :param bin_height: the bin height + :param matrix: the matrix with the data (will be copied); rows have + the form `(width, height, repetitions)` + """ + use_name: Final[str] = sanitize_name(name) + if name != use_name: + raise ValueError(f"Name {name!r} is not a valid name.") + + check_int_range(bin_width, "bin_width", 1, 1_000_000_000_000) + check_int_range(bin_height, "bin_height", 1, 1_000_000_000_000) + max_dim: Final[int] = max(bin_width, bin_height) + min_dim: Final[int] = min(bin_width, bin_height) + + n_different_items: Final[int] = check_int_range( + len(matrix), "n_different_items", 1, 100_000_000) + use_shape: Final[tuple[int, int]] = (n_different_items, 3) + + if isinstance(matrix, np.ndarray): + if not npu.is_np_int(matrix.dtype): + raise ValueError( + "Matrix must have an integer type, but is of type " + f"{str(matrix.dtype)!r} in instance {name!r}.") + if matrix.shape != use_shape: + raise ValueError( + f"Invalid shape {str(matrix.shape)!r} of matrix: " + "must have three columns and two dimensions, must be " + f"equal to {use_shape} in instance {name!r}.") + elif not isinstance(matrix, list): + raise type_error(matrix, "matrix", np.ndarray) + + n_items: int = 0 + max_size: int = -1 + item_area: int = 0 + for i in range(n_different_items): + row = matrix[i] + if not isinstance(row, list | np.ndarray): + raise type_error( + row, f"{row} at index {i} in {use_name!r}", + (list, np.ndarray)) + if len(row) != 3: + raise ValueError( + f"invalid row {row} at index {i} in {use_name!r}.") + width, height, repetitions = row + width = check_int_range(int(width), "width", 1, max_dim) + height = check_int_range(int(height), "height", 1, max_dim) + repetitions = check_int_range(int(repetitions), "repetitions", + 1, 100_000_000) + item_area += (width * height * repetitions) + max_size = max(max_size, width, height) + if (width > min_dim) and (height > min_dim): + raise ValueError( + f"object with width={width} and height={height} does " + f"not fit into bin with width={width} and " + f"height={height}.") + n_items += repetitions + + obj: Final[Instance] = super().__new__( + cls, use_shape, int_range_to_dtype( + min_value=0, max_value=max( + max_dim + max_size + 1, n_items + 1), force_signed=True)) + for i in range(n_different_items): + obj[i, :] = matrix[i] + + #: the name of the instance + obj.name = use_name + #: the number of different items + obj.n_different_items = n_different_items + #: the total number of items, i.e., the number of different items + #: multiplied with their repetition counts + obj.n_items = check_int_range( + n_items, "n_items", n_different_items, 1_000_000_000_000) + #: the height of the bins + obj.bin_height = bin_height + #: the width of the bins + obj.bin_width = bin_width + #: the total area occupied by all items + obj.total_item_area = item_area + +# We need at least as many bins such that their area is big enough +# for the total area of the items. + bin_area: int = bin_height * bin_width + lower_bound_geo: int = item_area // bin_area + if (lower_bound_geo * bin_area) < item_area: + lower_bound_geo += 1 + lower_bound_geo = check_int_range( + lower_bound_geo, "lower_bound_bins_geometric", + 1, 1_000_000_000_000) + +# We now compute the lower bound by Dell'Amico et al. + lower_bound_damv = check_int_range(_lower_bound_damv( + bin_width, bin_height, obj), "lower_bound_bins_damv", + 1, 1_000_000_000_000) + +# The overall computed lower bound is the maximum of the geometric and the +# Dell'Amico lower bound. + obj.lower_bound_bins = max(lower_bound_damv, lower_bound_geo) + return obj + + def __str__(self): + """ + Get the name of this instance. + + :return: the name of this instance + """ + return self.name + +
    +[docs] + def get_standard_item_sequence(self) -> list[int]: + """ + Get the standardized item sequence. + + :return: the standardized item sequence + + >>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]]) + >>> ins.get_standard_item_sequence() + [1, 2, 3] + >>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 2]]) + >>> ins.get_standard_item_sequence() + [1, 2, 3, 3] + >>> ins = Instance("a", 100, 50, [[10, 5, 2], [3, 3, 3], [5, 5, 4]]) + >>> ins.get_standard_item_sequence() + [1, 1, 2, 2, 2, 3, 3, 3, 3] + """ + base_string: Final[list[int]] = [] + for i in range(1, self.n_different_items + 1): + for _ in range(self[i - 1, IDX_REPETITION]): + base_string.append(int(i)) + return base_string
    + + +
    +[docs] + @staticmethod + def from_2dpacklib(file: str) -> "Instance": + """ + Load a problem instance from the 2dpacklib format. + + :param file: the file path + :return: the instance + """ + path: Final[Path] = file_path(file) + name: str = basename(path).lower() + if name.endswith(".ins2d"): + name = sanitize_name(name[:-6]) + + lines: Final[list[str]] = str.splitlines(path.read_all_str()) + n_different_items: Final[int] = check_to_int_range( + lines[0], "n_different_items", 1, 100_000_000) + + wh: Final[str] = lines[1] + spaceidx: Final[int] = wh.index(" ") + if spaceidx <= 0: + raise ValueError("Did not find space in second line.") + bin_width: Final[int] = check_to_int_range( + wh[:spaceidx], "bin_width", 1, 1_000_000_000_000) + bin_height: Final[int] = check_to_int_range( + wh[spaceidx + 1:], "bin_height", 1, 1_000_000_000_000) + del lines[0:2] + + max_dim: Final[int] = max(bin_width, bin_height) + data: Final[list[list[int]]] = [] + old_item_id: int = 0 + for line in lines: + text: list[str] = line.split(" ") + itemid: int = check_to_int_range( + text[0], "item-id", 1, n_different_items) + if itemid != (old_item_id + 1): + raise ValueError( + f"non-sequential item id {itemid} after {old_item_id}!") + old_item_id = itemid + width: int = check_to_int_range(text[1], "width", 1, max_dim) + height: int = check_to_int_range(text[2], "height", 1, max_dim) + count: int = 1 if len(text) <= 3 else \ + check_to_int_range(text[3], "count", 1, 1_000_000) + data.append([width, height, count]) + data.sort() + return Instance(name, bin_width, bin_height, data)
    + + +
    +[docs] + def to_compact_str(self) -> str: + """ + Convert the instance to a compact string. + + The format of the string is a single line of semi-colon separated + values. The values are: `name;n_items;bin_width;bin_height`, + followed by the sequence of items, each in the form of + `;width,heigh[,times]`, where `times` is optional and only added + if the item occurs more than once. + + :return: a single line string with all the instance data + + >>> ins = Instance("x", 500, 50, [[3, 5, 1], [2, 5, 2]]) + >>> ins.to_compact_str() + 'x;2;500;50;3,5;2,5,2' + >>> ins.n_different_items + 2 + """ + lst: Final[list[str]] = [self.name, str(self.n_different_items), + str(self.bin_width), str(self.bin_height)] + for i in range(self.n_different_items): + width: int = self[i, IDX_WIDTH] + height: int = self[i, IDX_HEIGHT] + repetitions: int = self[i, IDX_REPETITION] + lst.append( + f"{width}{INTERNAL_SEP}{height}" if repetitions == 1 else + f"{width}{INTERNAL_SEP}{height}{INTERNAL_SEP}{repetitions}") + return CSV_SEPARATOR.join(lst)
    + + +
    +[docs] + @staticmethod + def from_compact_str(data: str) -> "Instance": + """ + Transform a compact string back to an instance. + + :param data: the string data + :return: the instance + + >>> ins = Instance("x", 500, 50, [[3, 5, 1], [2, 5, 2]]) + >>> Instance.from_compact_str(ins.to_compact_str()).to_compact_str() + 'x;2;500;50;3,5;2,5,2' + """ + if not isinstance(data, str): + raise type_error(data, "data", str) + text: Final[list[str]] = data.split(CSV_SEPARATOR) + name: Final[str] = text[0] + n_different_items: Final[int] = check_to_int_range( + text[1], "n_different_items", 1, 100_000_000) + bin_width: Final[int] = check_to_int_range( + text[2], "bin_width", 1, 1_000_000_000_000) + bin_height: Final[int] = check_to_int_range( + text[3], "bin_height", 1, 1_000_000_000_000) + max_dim: Final[int] = max(bin_width, bin_height) + items: list[list[int]] = [] + for i in range(4, n_different_items + 4): + s: list[str] = text[i].split(INTERNAL_SEP) + row: list[int] = [ + check_to_int_range(s[IDX_WIDTH], "width", 1, max_dim), + check_to_int_range(s[IDX_HEIGHT], "height", 1, max_dim), + 1 if len(s) <= IDX_REPETITION else + check_to_int_range( + s[IDX_REPETITION], "times", 1, 100_000_000)] + items.append(row) + return Instance(name, bin_width, bin_height, items)
    + + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log the parameters describing this bin packing instance to the logger. + + :param logger: the logger for the parameters + + >>> from moptipy.utils.logger import InMemoryLogger + >>> with InMemoryLogger() as l: + ... with l.key_values("I") as kv: + ... Instance.from_resource("beng05").log_parameters_to(kv) + ... print(repr('@'.join(l.get_log()))) + 'BEGIN_I@name: beng05@class: moptipyapps.binpacking2d\ +.instance.Instance@nItems: 100@nDifferentItems: 100@binWidth: 25\ +@binHeight: 10@dtype: b@END_I' + """ + super().log_parameters_to(logger) + logger.key_value(N_ITEMS, self.n_items) + logger.key_value(N_DIFFERENT_ITEMS, self.n_different_items) + logger.key_value(BIN_WIDTH, self.bin_width) + logger.key_value(BIN_HEIGHT, self.bin_height) + logger.key_value(npu.KEY_NUMPY_TYPE, self.dtype.char)
    + + +
    +[docs] + @staticmethod + def list_resources() -> tuple[str, ...]: + """ + Get a tuple of all the instances available as resource. + + :return: the tuple with the instance names + + >>> len(list(Instance.list_resources())) + 557 + """ + return _INSTANCES
    + + +
    +[docs] + @staticmethod + def list_resources_groups() -> tuple[tuple[ + str, str | None, tuple[str, ...]], ...]: + """ + List the instance groups in the resources. + + One problem of the benchmark set for 2-dimensional bin packing is that + it has many instances: + + >>> len(Instance.list_resources()) + 557 + + With this function, we can group several of these instances together + in a way that is compliant with literature in order to then compute + statistics over these groups. Presenting data gathered over... + + >>> len(Instance.list_resources_groups()) + 56 + + ...groups is much easier than dealing with over 500 instances. + + :return: the instance groups, in a two level hierarchy. The result is + a sequence of tuples. Each tuple has the top-level group name and, + optionally, a second-level group name (or `None` if no second + level group exists). The third tuple element is a sequence of + instance names. + + >>> [(v[0], v[1], len(v[2])) for v in + ... Instance.list_resources_groups()] + [('a', 'small', 14), ('a', 'med', 14), ('a', 'large', 15), \ +('beng', '1-8', 8), ('beng', '9-10', 2), ('class 1', '20', 10), \ +('class 1', '40', 10), ('class 1', '60', 10), ('class 1', '80', 10), \ +('class 1', '100', 10), ('class 2', '20', 10), ('class 2', '40', 10), \ +('class 2', '60', 10), ('class 2', '80', 10), ('class 2', '100', 10), \ +('class 3', '20', 10), ('class 3', '40', 10), ('class 3', '60', 10), \ +('class 3', '80', 10), ('class 3', '100', 10), ('class 4', '20', 10), \ +('class 4', '40', 10), ('class 4', '60', 10), ('class 4', '80', 10), \ +('class 4', '100', 10), ('class 5', '20', 10), ('class 5', '40', 10), \ +('class 5', '60', 10), ('class 5', '80', 10), ('class 5', '100', 10), \ +('class 6', '20', 10), ('class 6', '40', 10), ('class 6', '60', 10), \ +('class 6', '80', 10), ('class 6', '100', 10), ('class 7', '20', 10), \ +('class 7', '40', 10), ('class 7', '60', 10), ('class 7', '80', 10), \ +('class 7', '100', 10), ('class 8', '20', 10), ('class 8', '40', 10), \ +('class 8', '60', 10), ('class 8', '80', 10), ('class 8', '100', 10), \ +('class 9', '20', 10), ('class 9', '40', 10), ('class 9', '60', 10), \ +('class 9', '80', 10), ('class 9', '100', 10), ('class 10', '20', 10), \ +('class 10', '40', 10), ('class 10', '60', 10), ('class 10', '80', 10), \ +('class 10', '100', 10), ('asqas', None, 4)] + """ + obj: object = Instance.list_resources_groups + attr: str = "__gs" + if not hasattr(obj, attr): + gs: tuple[tuple[str, str | None, tuple[str, ...]], ...] =\ + _make_instance_groups(Instance.list_resources()) + setattr(obj, attr, gs) + return gs + return cast(tuple[tuple[str, str | None, tuple[str, ...]], ...], + getattr(obj, attr))
    + + +
    +[docs] + @staticmethod + def from_resource(name: str) -> "Instance": + """ + Load an instance from a resource. + + :param name: the name string + :return: the instance + + >>> Instance.from_resource("a01").to_compact_str() + 'a01;2;2750;1220;463,386,18;1680,420,6' + >>> Instance.from_resource("a07").to_compact_str() + 'a07;5;2750;1220;706,286,8;706,516,16;986,433,10;1120,486,\ +12;1120,986,12' + >>> Instance.from_resource("a08") is Instance.from_resource("a08") + True + >>> Instance.from_resource("a08") is Instance.from_resource("a09") + False + """ + if not isinstance(name, str): + raise type_error(name, "name", str) + container: Final = Instance.from_resource + inst_attr: Final[str] = f"__inst_{name}" + if hasattr(container, inst_attr): # instance loaded? + return cast(Instance, getattr(container, inst_attr)) + text_attr: Final[str] = f"__text_{INSTANCES_RESOURCE}" + text: list[str] + total_attr: Final[str] = "__total_insts" + if hasattr(container, text_attr): # ok, we got the text already + text = cast(list[str], getattr(container, text_attr)) + else: # the first time we load the text + with resources.files(__package__).joinpath( + INSTANCES_RESOURCE).open("r", encoding=UTF8) as stream: + text = [line for line in (line_raw.strip() for line_raw + in stream.readlines()) + if len(line) > 0] + setattr(container, text_attr, text) + setattr(container, total_attr, 0) # so far, no instance + + imax: int = len(text) + imin: int = 0 + while imin <= imax: # binary search for instance + imid: int = (imax + imin) // 2 + line: str = text[imid] + idx: int = line.index(CSV_SEPARATOR) + prefix: str = line[0:idx] + if prefix == name: + instance = Instance.from_compact_str(line) + setattr(container, inst_attr, instance) + got: int = getattr(container, total_attr) + got = got + 1 + if got >= len(_INSTANCES): # got all instances, can del text + delattr(container, total_attr) + delattr(container, text_attr) + return instance + if prefix < name: + imin = imid + 1 + else: + imax = imid - 1 + raise ValueError(f"instance {name!r} not found.")
    +
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/instgen/.nojekyll b/_modules/moptipyapps/binpacking2d/instgen/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_modules/moptipyapps/binpacking2d/instgen/errors.html b/_modules/moptipyapps/binpacking2d/instgen/errors.html new file mode 100644 index 00000000..8dcb1fb1 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/instgen/errors.html @@ -0,0 +1,261 @@ +moptipyapps.binpacking2d.instgen.errors — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.instgen.errors

    +"""
    +An objective function counting deviations from the instance definition.
    +
    +This objective function will be the smaller, the closer the structure
    +of an instance is to the original instance.
    +Due to our encoding, we create instances whose bin width, bin height,
    +and the number of items is the same as in an existing instance. The
    +lower bound for the required number of bins is also the same.
    +
    +This objective function here also incorporates some additional features, such
    +as:
    +
    +1. Is the number of different items similar to those in the original instance?
    +   In an existing instance, some items of same width and height could be
    +   grouped together. We may have 10 items to pack, but only 3 different item
    +   sizes exist. We here compare the number of different item sizes of a
    +   generated instance with the number in the instance definition.
    +2. In a given instance, we can observe the minimum and maximum width and
    +   height of any item. If an item in the generated instance is smaller than
    +   the minimum or larger than the maximum permitted value in one dimension,
    +   this will increase the error count.
    +3. Additionally, we want the actual minimum and maximum width and height of
    +   any item in the generated instance is the same as in the original instance.
    +4. Finally, we want that the total area covered by all items is the same in
    +   the generated instance as in the original instance.
    +
    +All of these potential violations are counted and added up. Using this
    +objective function should drive the search towards generating instances that
    +are structurally similar to an existing instance, at least in some parameters.
    +
    +We could push this arbitrarily further, trying to emulate the exact
    +distribution of the item sizes, etc. But this may just lead to the
    +reproduction of the original instance by the search and not add anything
    +interesting.
    +
    +>>> orig = Instance.from_resource("a04")
    +>>> space = InstanceSpace(orig)
    +>>> print(f"{space.inst_name!r} with {space.n_different_items}/"
    +...       f"{space.n_items} items with area {space.total_item_area} "
    +...       f"in {space.min_bins} bins of "
    +...       f"size {space.bin_width}*{space.bin_height}.")
    +'a04n' with 2/16 items with area 7305688 in 3 bins of size 2750*1220.
    +
    +>>> from moptipyapps.binpacking2d.instgen.inst_decoding import InstanceDecoder
    +>>> decoder = InstanceDecoder(space)
    +>>> import numpy as np
    +>>> x = np.array([ 0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 15/16 items with area 10065000 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;15;2750;1220;1101,1098;2750,244;2750,98;1101,171;1649,171;2750,976;\
    +441,122;1649,122;2750,10;2750,1,2;2750,3;1649,1098;2750,878;2750,58;660,122
    +
    +>>> errors = Errors(space)
    +>>> errors.lower_bound()
    +0.0
    +>>> errors.upper_bound()
    +1.0
    +>>> errors.evaluate(y)
    +0.3778740795710009
    +
    +>>> y[0] = orig
    +>>> errors.evaluate(y)
    +0.0
    +"""
    +from typing import Final
    +
    +from moptipy.api.objective import Objective
    +from moptipy.utils.logger import KeyValueLogSection
    +from pycommons.types import type_error
    +
    +from moptipyapps.binpacking2d.instance import (
    +    IDX_HEIGHT,
    +    IDX_REPETITION,
    +    IDX_WIDTH,
    +    Instance,
    +)
    +from moptipyapps.binpacking2d.instgen.instance_space import InstanceSpace
    +
    +
    +
    +[docs] +class Errors(Objective): + """Compute the deviation of an instance from the definition.""" + + def __init__(self, space: InstanceSpace) -> None: + """ + Initialize the errors objective function. + + :param instance: the instance to load the bounds from + """ + super().__init__() + if not isinstance(space, InstanceSpace): + raise type_error(space, "space", InstanceSpace) + #: the instance description + self.space: Final[InstanceSpace] = space + + # These errors are permitted. + max_errors: int = max( + space.n_different_items - 1, + space.n_items - space.n_different_items - 1) + + goal_min_width: Final[int] = space.item_width_min + goal_max_width: Final[int] = space.item_width_max + goal_min_height: Final[int] = space.item_height_min + goal_max_height: Final[int] = space.item_height_max + bin_width: Final[int] = space.bin_width + bin_height: Final[int] = space.bin_height + + n_items: Final[int] = space.n_items + max_errors += n_items * max( + goal_min_width - 1, bin_width - goal_max_width) + max_errors += n_items * max( + goal_min_height - 1, bin_height - goal_max_height) + max_errors += max(goal_min_width, bin_width - goal_min_width) + max_errors += max(goal_max_width, bin_width - goal_max_width) + max_errors += max(goal_min_height, bin_height - goal_min_height) + max_errors += max(goal_max_height, bin_height - goal_max_height) + + alt_area: Final[int] = (space.min_bins * bin_width * bin_height + - space.total_item_area) + if alt_area < 0: + raise ValueError("Invalid item area in space?") + max_errors += max(space.total_item_area, alt_area) + + #: the maximum number of errors + self.__max_errors: Final[int] = max_errors + +
    +[docs] + def evaluate(self, x: list[Instance] | Instance) -> float: + """ + Compute the deviations from the instance definition. + + :param x: the instance + :return: the number of deviations divided by the maximum of + the deviations + """ + errors: int = 0 + inst: Final[Instance] = x[0] if isinstance(x, list) else x + space: Final[InstanceSpace] = self.space + + # Some errors are not permitted. + errors += abs(inst.bin_width - space.bin_width) # should be 0! + errors += abs(inst.bin_height - space.bin_height) # should be 0! + errors += abs(inst.n_items - space.n_items) # should be 0! + if errors > 0: + raise ValueError( + f"Instance {inst} is inconsistent with space {space}.") + + # These errors are permitted. + n_different: Final[int] = inst.n_different_items + errors += abs(n_different - space.n_different_items) # > 0 + goal_min_width: Final[int] = space.item_width_min + goal_max_width: Final[int] = space.item_width_max + goal_min_height: Final[int] = space.item_height_min + goal_max_height: Final[int] = space.item_height_max + + actual_min_width: int = space.bin_width + actual_max_width: int = 0 + actual_min_height: int = space.bin_height + actual_max_height: int = 0 + total_area: int = 0 + + for row in range(n_different): + width: int = int(inst[row, IDX_WIDTH]) + height: int = int(inst[row, IDX_HEIGHT]) + actual_min_width = min(actual_min_width, width) + actual_max_width = max(actual_max_width, width) + actual_min_height = min(actual_min_height, height) + actual_max_height = max(actual_max_height, height) + + n: int = int(inst[row, IDX_REPETITION]) + total_area += n * width * height + if width < goal_min_width: + errors += n * (goal_min_width - width) + elif width > goal_max_width: + errors += n * (width - goal_max_width) + if height < goal_min_height: + errors += n * (goal_min_height - height) + elif height > goal_max_height: + errors += n * (height - goal_max_height) + + errors += abs(actual_min_width - goal_min_width) + errors += abs(actual_max_width - goal_max_width) + errors += abs(actual_min_height - goal_min_height) + errors += abs(actual_max_height - goal_max_height) + + if total_area != inst.total_item_area: + raise ValueError("Invalid total area?") + errors += abs(total_area - space.total_item_area) + + return max(0.0, min(1.0, errors / self.__max_errors))
    + + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log the parameters of this instance. + + :param logger: the logger + """ + super().log_parameters_to(logger) + logger.key_value("maxErrors", self.__max_errors)
    + + +
    +[docs] + def lower_bound(self) -> float: + """ + Get the lower bound of the instance template deviations. + + :returs 0.0: always + """ + return 0.0
    + + +
    +[docs] + def is_always_integer(self) -> bool: + """ + Return `True` because there are only integer errors. + + :retval False: always + """ + return False
    + + +
    +[docs] + def upper_bound(self) -> float: + """ + Get the upper bound of the number of deviations. + + :returs 1.0: always + """ + return 1.0
    + + + def __str__(self) -> str: + """ + Get the name of the errors objective function. + + :return: `errors` + :retval "errors": always + """ + return "errors"
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/instgen/errors_and_hardness.html b/_modules/moptipyapps/binpacking2d/instgen/errors_and_hardness.html new file mode 100644 index 00000000..85b34843 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/instgen/errors_and_hardness.html @@ -0,0 +1,156 @@ +moptipyapps.binpacking2d.instgen.errors_and_hardness — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.instgen.errors_and_hardness

    +"""
    +A combination of the errors and the hardness objective.
    +
    +>>> orig = Instance.from_resource("a04")
    +>>> space = InstanceSpace(orig)
    +>>> print(f"{space.inst_name!r} with {space.n_different_items}/"
    +...       f"{space.n_items} items with area {space.total_item_area} "
    +...       f"in {space.min_bins} bins of "
    +...       f"size {space.bin_width}*{space.bin_height}.")
    +'a04n' with 2/16 items with area 7305688 in 3 bins of size 2750*1220.
    +
    +>>> from moptipyapps.binpacking2d.instgen.inst_decoding import InstanceDecoder
    +>>> decoder = InstanceDecoder(space)
    +>>> import numpy as np
    +>>> x = np.array([ 0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 15/16 items with area 10065000 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;15;2750;1220;1101,1098;2750,244;2750,98;1101,171;1649,171;2750,976;\
    +441,122;1649,122;2750,10;2750,1,2;2750,3;1649,1098;2750,878;2750,58;660,122
    +
    +>>> obj = ErrorsAndHardness(space, max_fes=100)
    +>>> obj.lower_bound()
    +0.0
    +>>> obj.upper_bound()
    +1.0
    +>>> obj.evaluate(y)
    +0.8776461858988774
    +
    +>>> obj.evaluate(orig)
    +0.9866528870384179
    +"""
    +from typing import Callable, Final, Iterable
    +
    +from moptipy.api.execution import Execution
    +from moptipy.api.objective import Objective
    +from moptipy.utils.logger import KeyValueLogSection
    +
    +from moptipyapps.binpacking2d.instance import (
    +    Instance,
    +)
    +from moptipyapps.binpacking2d.instgen.errors import Errors
    +from moptipyapps.binpacking2d.instgen.hardness import (
    +    DEFAULT_EXECUTORS,
    +    Hardness,
    +)
    +from moptipyapps.binpacking2d.instgen.instance_space import InstanceSpace
    +
    +
    +
    +[docs] +class ErrorsAndHardness(Objective): + """Compute the errors and hardness.""" + + def __init__(self, space: InstanceSpace, + max_fes: int = 1_000_000, n_runs: int = 3, + executors: Iterable[ + Callable[[Instance], tuple[ + Execution, Objective]]] = DEFAULT_EXECUTORS) -> None: + """ + Initialize the errors objective function. + + :param space: the instance space + :param max_fes: the maximum FEs + :param n_runs: the maximum runs + :param executors: the functions creating the executions + """ + super().__init__() + #: the errors objective + self.errors: Final[Errors] = Errors(space) + #: the hardness objective function + self.hardness: Final[Hardness] = Hardness( + max_fes, n_runs, executors) + +
    +[docs] + def evaluate(self, x: list[Instance] | Instance) -> float: + """ + Compute the combination of hardness and errors. + + :param x: the instance + :return: the hardness and errors + """ + return max(0.0, min(1.0, ((self.hardness.evaluate( + x) * 1000.0) + self.errors.evaluate(x)) / 1001.0))
    + + +
    +[docs] + def lower_bound(self) -> float: + """ + Get the lower bound of the instance error and hardness. + + :returns 0.0: always + """ + return 0.0
    + + +
    +[docs] + def upper_bound(self) -> float: + """ + Get the upper bound of the instance error and hardness. + + :returns 1.0: always + """ + return 1.0
    + + +
    +[docs] + def is_always_integer(self) -> bool: + """ + Return `False` because the hardness function returns `float`. + + :retval False: always + """ + return False
    + + + def __str__(self) -> str: + """ + Get the name of the errors objective function. + + :return: `errorsAndHardness` + :retval "errorsAndHardness": always + """ + return "errorsAndHardness" + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log the parameters of this instance. + + :param logger: the logger + """ + super().log_parameters_to(logger) + with logger.scope("err") as err: + self.errors.log_parameters_to(err) + with logger.scope("hard") as hard: + self.hardness.log_parameters_to(hard)
    +
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/instgen/experiment.html b/_modules/moptipyapps/binpacking2d/instgen/experiment.html new file mode 100644 index 00000000..4612a120 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/instgen/experiment.html @@ -0,0 +1,101 @@ +moptipyapps.binpacking2d.instgen.experiment — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.instgen.experiment

    +"""An example experiment for generating bin packing instances."""
    +
    +import argparse
    +from typing import Callable, Final, cast
    +
    +from moptipy.algorithms.so.vector.cmaes_lib import BiPopCMAES
    +from moptipy.api.execution import Execution
    +from moptipy.api.experiment import run_experiment
    +from pycommons.io.path import Path
    +
    +from moptipyapps.binpacking2d.instance import Instance
    +from moptipyapps.binpacking2d.instgen.errors_and_hardness import (
    +    ErrorsAndHardness,
    +)
    +from moptipyapps.binpacking2d.instgen.problem import Problem
    +from moptipyapps.shared import moptipyapps_argparser
    +
    +#: the maximum number of FEs
    +MAX_FES: Final[int] = 10_000
    +
    +#: the maximum number of FEs in for the algorithm runs inside the objective
    +INNER_MAX_FES: Final[int] = 100_000
    +
    +#: the numbe rof runs of the algorithms inside the objective
    +INNER_RUNS: Final[int] = 3
    +
    +
    +
    +[docs] +def cmaes(problem: Problem) -> Execution: + """ + Create the basic BiPop-CMA-ES setup. + + :param problem: the problem to solve + :return: the execution + """ + return (Execution() + .set_algorithm(BiPopCMAES(problem.search_space)) + .set_search_space(problem.search_space) + .set_solution_space(problem.solution_space) + .set_encoding(problem.encoding) + .set_objective(ErrorsAndHardness( + problem.solution_space, INNER_MAX_FES, INNER_RUNS)) + .set_max_fes(MAX_FES) + .set_log_improvements(True))
    + + + +#: the instances to use as blueprints +__USE_INSTANCES: Final[tuple[str, ...]] = ( + "beng01", "beng02", "beng03", "beng04", "beng05", "beng06", "beng07", + "beng08", "beng09", "beng10", "cl01_020_01", "cl01_040_01", "cl01_060_01", + "cl01_080_01", "cl01_100_01", "cl02_020_01", "cl02_040_01", "cl02_060_01", + "cl02_080_01", "cl02_100_01", "cl03_020_01", "cl03_040_01", "cl03_060_01", + "cl03_080_01", "cl03_100_01", "cl04_020_01", "cl04_040_01", "cl04_060_01", + "cl04_080_01", "cl04_100_01", "cl05_020_01", "cl05_040_01", "cl05_060_01", + "cl05_080_01", "cl05_100_01", "cl06_020_01", "cl06_040_01", "cl06_060_01", + "cl06_080_01", "cl06_100_01", "cl07_020_01", "cl07_040_01", "cl07_060_01", + "cl07_080_01", "cl07_100_01", "cl08_020_01", "cl08_040_01", "cl08_060_01", + "cl08_080_01", "cl08_100_01", "cl09_020_01", "cl09_040_01", "cl09_060_01", + "cl09_080_01", "cl09_100_01", "cl10_020_01", "cl10_040_01", "cl10_060_01", + "cl10_080_01", "cl10_100_01", "cl10_100_10") + + +
    +[docs] +def run(base_dir: str) -> None: + """ + Run the experiment. + + :param base_dir: the base directory + """ + use_dir: Final[Path] = Path(base_dir) + use_dir.ensure_dir_exists() + + inst_creators: list[Callable[[], Instance]] = [cast( + Callable[[], Instance], lambda __s=_s, __t=_t: Problem(__s, __t)) + for _s in __USE_INSTANCES for _t in (0.25, 0.125)] + + run_experiment( + base_dir=use_dir, + instances=inst_creators, + setups=[cmaes], + n_runs=[1, 2, 3, 5, 7, 11, 13, 17, 20, 23, 29, 30, 31], + perform_warmup=False, + perform_pre_warmup=False)
    + + + +# Run the experiment from the command line +if __name__ == "__main__": + parser: Final[argparse.ArgumentParser] = moptipyapps_argparser( + __file__, "2D Bin Packing Instance Generator", + "Run the 2D Bin Packing Instance Generator experiment.") + parser.add_argument( + "dest", help="the directory to store the experimental results under", + type=Path, nargs="?", default="./results/") + args: Final[argparse.Namespace] = parser.parse_args() + run(args.dest) +
    diff --git a/_modules/moptipyapps/binpacking2d/instgen/hardness.html b/_modules/moptipyapps/binpacking2d/instgen/hardness.html new file mode 100644 index 00000000..b2dfa174 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/instgen/hardness.html @@ -0,0 +1,315 @@ +moptipyapps.binpacking2d.instgen.hardness — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.instgen.hardness

    +"""
    +An objective function assessing the hardness of an instance.
    +
    +>>> from moptipyapps.binpacking2d.instgen.instance_space import InstanceSpace
    +>>> orig = Instance.from_resource("a04")
    +>>> space = InstanceSpace(orig)
    +>>> print(f"{space.inst_name!r} with {space.n_different_items}/"
    +...       f"{space.n_items} items with area {space.total_item_area} "
    +...       f"in {space.min_bins} bins of "
    +...       f"size {space.bin_width}*{space.bin_height}.")
    +'a04n' with 2/16 items with area 7305688 in 3 bins of size 2750*1220.
    +
    +>>> from moptipyapps.binpacking2d.instgen.inst_decoding import InstanceDecoder
    +>>> decoder = InstanceDecoder(space)
    +>>> import numpy as np
    +>>> x = np.array([ 0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 15/16 items with area 10065000 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;15;2750;1220;1101,1098;2750,244;2750,98;1101,171;1649,171;2750,976;\
    +441,122;1649,122;2750,10;2750,1,2;2750,3;1649,1098;2750,878;2750,58;660,122
    +
    +>>> hardness = Hardness(max_fes=100)
    +>>> hardness.lower_bound()
    +0.0
    +>>> hardness.upper_bound()
    +1.0
    +>>> hardness.evaluate(y)
    +0.8781459580052053
    +
    +>>> y[0] = orig
    +>>> hardness.evaluate(y)
    +0.9876395399254564
    +
    +>>> z = Instance.from_compact_str(
    +...     "cl04_020_01n;19;100;100;1,10;2,38;2,62;1,4,2;3,38;1,7;27,93;1,62;1,"
    +...     "3;13,38;1,38;1,17;1,45;36,62;39,3;1,2;20,10;3,24;12,4")
    +>>> hardness.evaluate(z)
    +0.9995959203471327
    +"""
    +from math import isfinite
    +from typing import Callable, Final, Iterable
    +
    +from moptipy.algorithms.random_sampling import RandomSampling
    +from moptipy.algorithms.so.rls import RLS
    +from moptipy.api.execution import Execution
    +from moptipy.api.objective import Objective
    +from moptipy.operators.signed_permutations.op0_shuffle_and_flip import (
    +    Op0ShuffleAndFlip,
    +)
    +from moptipy.operators.signed_permutations.op1_swap_2_or_flip import (
    +    Op1Swap2OrFlip,
    +)
    +from moptipy.spaces.signed_permutations import SignedPermutations
    +from moptipy.utils.logger import KeyValueLogSection
    +from moptipy.utils.nputils import rand_seeds_from_str
    +from pycommons.types import check_int_range
    +
    +from moptipyapps.binpacking2d.encodings.ibl_encoding_1 import (
    +    ImprovedBottomLeftEncoding1,
    +)
    +from moptipyapps.binpacking2d.instance import (
    +    Instance,
    +)
    +from moptipyapps.binpacking2d.objectives.bin_count import BinCount
    +from moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline import (
    +    BinCountAndLastSkyline,
    +)
    +from moptipyapps.binpacking2d.packing_space import PackingSpace
    +
    +
    +
    +[docs] +def setup_rls_f7(instance: Instance) -> tuple[Execution, Objective]: + """ + Set up the randomized local search for an instance. + + :param instance: the instance + :return: the execution and upper bound of the objective + """ + search_space = SignedPermutations( + instance.get_standard_item_sequence()) # Create the search space. + solution_space = PackingSpace(instance) # Create the space of packings. + objective: Final[BinCountAndLastSkyline] = BinCountAndLastSkyline(instance) + + # Build a single execution of a single run of a single algorithm and + # return the upper bound of the objective value + return (Execution() + .set_search_space(search_space) + .set_solution_space(solution_space) + .set_encoding(ImprovedBottomLeftEncoding1(instance)) + .set_algorithm( # This is the algorithm: Randomized Local Search. + RLS(Op0ShuffleAndFlip(search_space), Op1Swap2OrFlip())) + .set_objective(objective), objective)
    + + + +
    +[docs] +def setup_rls_f1(instance: Instance) -> tuple[Execution, Objective]: + """ + Set up the randomized local search for an instance. + + :param instance: the instance + :return: the execution + """ + search_space = SignedPermutations( + instance.get_standard_item_sequence()) # Create the search space. + solution_space = PackingSpace(instance) # Create the space of packings. + objective: Final[BinCount] = BinCount(instance) + + # Build a single execution of a single run of a single algorithm and + # return the lower bound of the objective value + return (Execution() + .set_search_space(search_space) + .set_solution_space(solution_space) + .set_encoding(ImprovedBottomLeftEncoding1(instance)) + .set_algorithm( # This is the algorithm: Randomized Local Search. + RLS(Op0ShuffleAndFlip(search_space), Op1Swap2OrFlip())) + .set_objective(objective), objective)
    + + + +
    +[docs] +def setup_rs_f1(instance: Instance) -> tuple[Execution, Objective]: + """ + Set up the randomized sampling for an instance. + + :param instance: the instance + :return: the execution + """ + search_space = SignedPermutations( + instance.get_standard_item_sequence()) # Create the search space. + solution_space = PackingSpace(instance) # Create the space of packings. + objective: Final[BinCount] = BinCount(instance) + + # Build a single execution of a single run of a single algorithm and + # return the lower bound of the objective value + return (Execution() + .set_search_space(search_space) + .set_solution_space(solution_space) + .set_encoding(ImprovedBottomLeftEncoding1(instance)) + .set_algorithm( # This is the algorithm: Random Sampling + RandomSampling(Op0ShuffleAndFlip(search_space))) + .set_objective(objective), objective)
    + + + +#: the default executors +DEFAULT_EXECUTORS: Final[tuple[Callable[[Instance], tuple[ + Execution, Objective]], ...]] = ( + setup_rs_f1, setup_rls_f1, setup_rls_f7) + + +
    +[docs] +class Hardness(Objective): + """Compute the hardness of an instance.""" + + def __init__( + self, max_fes: int = 1_000_000, n_runs: int = 3, + executors: Iterable[Callable[[Instance], tuple[ + Execution, Objective]]] = DEFAULT_EXECUTORS) -> None: + """ + Initialize the hardness objective function. + + :param max_fes: the maximum FEs + :param n_runs: the maximum runs + :param executors: the functions creating the executions + """ + super().__init__() + #: the maximum FEs per setup. + self.max_fes: Final[int] = check_int_range( + max_fes, "max_fes", 2, 1_000_000_000_000) + #: the maximum FEs per setup. + self.n_runs: Final[int] = check_int_range( + n_runs, "n_runs", 1, 1_000_000) + #: the executors + self.executors: Final[tuple[Callable[[Instance], tuple[ + Execution, Objective]], ...]] = tuple(executors) + + #: the last instance name + self.__last_inst: str | None = None + #: the last seeds name + self.__last_seeds: tuple[int, ...] | None = None + +
    +[docs] + def evaluate(self, x: list[Instance] | Instance) -> float: + """ + Compute the hardness of an instance. + + :param x: the instance + :return: the hardness + """ + instance: Final[Instance] = x[0] if isinstance(x, list) else x + seeds: tuple[int, ...] + + name: str = instance.name + if (self.__last_seeds is None) or (self.__last_inst is None) or ( + self.__last_inst != name): + self.__last_seeds = seeds = tuple(rand_seeds_from_str( + f"seed for {instance.name}", self.n_runs)) + self.__last_inst = name + else: + seeds = self.__last_seeds + + max_fes: Final[int] = self.max_fes + runs: int = 0 + result: float = 0.0 + for executor in self.executors: + execs, f = executor(instance) + lb: int | float = f.lower_bound() + ub: int | float = f.upper_bound() + if not (isfinite(lb) and isfinite(ub) and (lb < ub)): + raise ValueError(f"Invalid lower and upper bound {lb}, {ub}.") + execs.set_max_fes(max_fes) + for seed in seeds: + execs.set_rand_seed(seed) + with execs.execute() as proc: + runs += 1 + quality: int | float = proc.get_best_f() + if not (isfinite(quality) and (lb <= quality <= ub)): + raise ValueError( + f"quality={quality} invalid, must be in " + f"[{lb}, {ub}] for objective {f}.") + quality = (ub - quality) / (ub - lb) + if not (0.0 <= quality <= 1.0): + raise ValueError( + f"invalid normalized quality {quality} " + f"for objective {f}.") + runtime: int | float = proc.get_last_improvement_fe() + if not (0 < runtime <= max_fes): + raise ValueError(f"invalid FEs {runtime}, must " + f"be in 1..{max_fes}.") + runtime = (max_fes - runtime) / (max_fes - 1) + if not (0.0 <= runtime <= 1.0): + raise ValueError( + f"invalid normalized runtime {runtime}.") + result += max(0.0, min(1.0, ( + (quality * 1000.0) + runtime) / 1001.0)) + return max(0.0, min(1.0, result / runs))
    + + +
    +[docs] + def lower_bound(self) -> float: + """ + Get the lower bound of the instance hardness. + + :return: the lower bound for the instance hardness + :returns 0.0: always + """ + return 0.0
    + + +
    +[docs] + def upper_bound(self) -> float: + """ + Get the upper bound of the instance hardness. + + :return: the upper bound for the instance hardness + :returns 1.0: always + """ + return 1.0
    + + +
    +[docs] + def is_always_integer(self) -> bool: + """ + Return `False` because the hardness function returns `float`. + + :retval False: always + """ + return False
    + + + def __str__(self) -> str: + """ + Get the name of the hardness objective function. + + :return: `hardness` + :retval "hardness": always + """ + return "hardness" + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log the parameters of this instance. + + :param logger: the logger + """ + super().log_parameters_to(logger) + logger.key_value("nRuns", self.n_runs) + logger.key_value("maxFEs", self.max_fes) + logger.key_value("nExecutors", len(self.executors))
    +
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/instgen/inst_decoding.html b/_modules/moptipyapps/binpacking2d/instgen/inst_decoding.html new file mode 100644 index 00000000..9125284c --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/instgen/inst_decoding.html @@ -0,0 +1,563 @@ +moptipyapps.binpacking2d.instgen.inst_decoding — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.instgen.inst_decoding

    +"""
    +A decoder for 2D BPP instances.
    +
    +The goal of developing this decoding procedure is that we need a deterministic
    +mapping of some easy-to-process data structure to an instance of the
    +two-dimensional bin packing problem. The instance produced by the mapping
    +should use a pre-defined bin width, bin height, and number of items. It should
    +also have a pre-defined lower bound for the number of bins required and it
    +must be ensured that this lower bound can also be reached, i.e., that at least
    +one solution exists that can indeed pack all items into this number of bins.
    +
    +As source data structure to be mapped, we choose the real vectors of a fixed
    +length (discussed later on).
    +
    +The idea is that we take the bin width, bin height, and lower bound of the
    +number of bins (let's call it `lb`) from a template instance. We also take
    +the number items (let's call it `n`) from that instance.
    +
    +Now we begin with `lb` items, each of which exactly of the size and dimensions
    +of a bin. At the end, we want to have `n` items. To get there, in each step of
    +our decoding, we split one existing item into two items. This means that each
    +step will create one additional item for the instance (while making one
    +existing item smaller). This, in turn, means that we have to do `n - lb`
    +decoding steps, as we start with `lb` items and, after `n - lb` steps, will
    +have `lb + n - lb = n` items.
    +
    +So far so good.
    +But how do we split?
    +
    +Each split that we want to perform be defined by four features:
    +
    +1. the index of the item that we are going to split,
    +2. whether we split it horizontally or vertically,
    +3. where we are going to split it,
    +4. and how to continue if the proposed split is not possible, e.g., because
    +   it would lead to a zero-width or zero-height item.
    +
    +Now we can encode this in two real numbers `selector` and `cutter` from the
    +interval `[-1,1]`.
    +
    +First, we multiply the absolute value of the `selector` with the current
    +number of items that we have. This is initially `2`, will then be `3` in the
    +next iteration, then `4`, and so on.
    +Converted to an int, the result of this multiplication gives us the index of
    +the item to split.
    +
    +Then, if `cutter >= 0`, we will cut the item horizontally. Otherwise, i.e., if
    +`cutter < 0`, we cut vertically.
    +Where to cut is then decided by multiplying the absolute value of `cutter`
    +with the length of the item in the selected cutting dimension.
    +
    +If that is not possible, we move to the next item and try again.
    +If `selector < 0`, we move towards smaller indices and wrap after `0`.
    +Otherwise, we move towards higher indices and wrap at the end of the item
    +list.
    +If we arrive back at the first object, this means that the split was not
    +possible for any of the existing items.
    +We now rotate the split by 90°, i.e., if we tried horizontal splits, we now
    +try vertical ones and vice versa.
    +
    +It is easy to see that it must always be possible to split at least one item
    +in at least one direction. Since we took the bin dimensions and numbers of
    +items from an existing instance of the benchmark set, it must be possible to
    +divide the bins into `n` items in one way or another. Therefore, the loop
    +will eventually terminate and yield the right amount of items.
    +
    +This means that with `2 * (n - lb)` floating point numbers, we can describe an
    +instance whose result is a perfect packing, without any wasted space.
    +
    +Now the benchmark instances are not just instances that can only be solved by
    +perfect packings. Instead, they have some wasted space.
    +
    +We now want to add some wasted space to our instance. So far, our items occupy
    +exactly `lb * bin_width * bin_height` space units. We can cut at most
    +`bin_width * bin_height - 1` of these units without changing the required bins
    +of the packing: We would end up with `(lb - 1) * bin_width * bin_height + 1`
    +space units required by our items, which is `1` too large to fit into `lb - 1`
    +bins.
    +
    +So we just do the same thing again:
    +We again use two real numbers to describe each split.
    +Like before, we loop through these numbers, pick the object to split, and
    +compute where to split it. Just now we throw away the piece that was cut off.
    +(Of course, we compute the split positions such that we never dip under the
    +area requirement discussed above).
    +
    +This allows us to use additional real variables to define how the space should
    +be reduced. `2 * (n - lb)` variables, we get instances requiring perfect
    +packing. With every additional pair of variables, we cut some more space.
    +If we would use `2 * (n - lb) + 10` variables, then we would try to select
    +five items from which we can cut off a bit. This number of additional
    +variables can be chosen by the user.
    +
    +Finally, we merge all items that have the same dimension into groups, as is
    +the case in some of the original instances. We then shuffle these groups
    +randomly, to give the instances a bit of a more unordered texture.
    +The random shuffling is seeded with the binary representation of the input
    +vectors.
    +
    +In the end, we have translated a real vector to a two-dimensional bin packing
    +instance. Hurray.
    +
    +>>> space = InstanceSpace(Instance.from_resource("a04"))
    +>>> print(f"{space.inst_name!r} with {space.n_different_items}/"
    +...       f"{space.n_items} items with area {space.total_item_area} "
    +...       f"in {space.min_bins} bins of "
    +...       f"size {space.bin_width}*{space.bin_height}.")
    +'a04n' with 2/16 items with area 7305688 in 3 bins of size 2750*1220.
    +
    +>>> decoder = InstanceDecoder(space)
    +>>> import numpy as np
    +>>> x = np.array([ 0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 15/16 items with area 10065000 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;15;2750;1220;1101,1098;2750,244;2750,98;1101,171;1649,171;2750,976;\
    +441,122;1649,122;2750,10;2750,1,2;2750,3;1649,1098;2750,878;2750,58;660,122
    +
    +
    +>>> x = np.array([ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 3/16 items with area 10065000 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;3;2750;1220;2750,1216,2;2750,1,13;2750,1215
    +
    +>>> from math import nextafter
    +>>> a1 = nextafter(1.0, -10)
    +>>> x = np.array([ a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 4/16 items with area 10065000 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;4;2750;1220;2750,1208;2750,1219;2750,1220;2750,1,13
    +
    +>>> from math import nextafter
    +>>> a1 = nextafter(-1.0, 10)
    +>>> x = np.array([ a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 5/16 items with area 10065000 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;5;2750;1220;2750,1220;2730,1220;2748,1220;1,1220,4;2,1220,9
    +
    +>>> from math import nextafter
    +>>> a1 = nextafter(-1.0, 10)
    +>>> x = np.array([ a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, 0.3, 0.7 ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 6/16 items with area 10064146 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;6;2750;1220;2,1220,9;1,1220,3;2748,1220;1,366;2750,1220;2730,1220
    +
    +>>> from math import nextafter
    +>>> a1 = nextafter(-1.0, 10)
    +>>> x = np.array([ a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, 0.3, 0.7, -0.2, -0.3,
    +...                0.5, -0.3])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 6/16 items with area 10061706 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;6;2750;1220;2,1220,7;2750,1220;2730,1220;1,1220,5;1,366;2748,1220
    +
    +
    +>>> x = np.array([ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
    +...                1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
    +...                1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
    +...                1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
    +...                1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
    +...                1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
    +...                1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                0.0, 0.0, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 5/16 items with area 9910948 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;5;2750;1220;2698,1;2750,1,12;2750,1216;2750,1215;2750,1160
    +"""
    +from math import isfinite
    +from typing import Final
    +
    +import numpy as np
    +from moptipy.api.encoding import Encoding
    +from numpy.random import default_rng
    +from pycommons.types import check_int_range, type_error
    +
    +from moptipyapps.binpacking2d.instance import Instance
    +from moptipyapps.binpacking2d.instgen.instance_space import InstanceSpace
    +
    +
    +
    +[docs] +class InstanceDecoder(Encoding): + """Decode a string of `n` real values in `[0,1]` to an instance.""" + + def __init__(self, space: InstanceSpace) -> None: + """ + Create the instance decoder. + + :param space: the instance description and space + """ + super().__init__() + if not isinstance(space, InstanceSpace): + raise type_error(space, "space", InstanceSpace) + #: the instance description + self.space: Final[InstanceSpace] = space + +
    +[docs] + def get_x_dim(self, slack: float | int = 0) -> int: + """ + Get the minimum dimension that a real vector must have. + + :param slack: a parameter denoting the amount of slack for reducing + the item size + :return: the minimum dimension + """ + if not isinstance(slack, float | int): + raise type_error(slack, "slack", (float, int)) + if (not isfinite(slack)) or (slack < 0): + raise ValueError(f"slack={slack} is invalid") + base: Final[int] = check_int_range( + self.space.n_items - self.space.min_bins, "base", 1, 1_000_000) + added: Final[int] = int(slack * base + 0.5) + if (added < 0) or (added > 1_000_000): + raise ValueError(f"invalid result {added} based " + f"on slack={slack} and base={base}") + return 2 * (base + added)
    + + +
    +[docs] + def decode(self, x: np.ndarray, y: list[Instance]) -> None: + """ + Decode the real-valued array to a 2D BPP instance. + + :param x: an array with values in [-1, 1] + :param y: the instance receiver + """ + # We start by using the prescribed number of bins as items. + # There will be n_bins items, each of which has exactly the size of a + # bin. Therefore, we know that all items fit exactly into n_bins bins. + bin_width: Final[int] = self.space.bin_width + bin_height: Final[int] = self.space.bin_height + n_bins: Final[int] = self.space.min_bins + items: list[list[int]] = [ + [bin_width, bin_height] for _ in range(n_bins)] + + # Now we need to make n_items - n_bins cuts. Each cut will divide one + # item into two items. Therefore, each cut yields exactly one new + # item. Therefore, after n_items - n_bins cuts we get n_items - n_bins + # new items. Since we start with n_bins items, this means that we get + # n_items - n_bins + n_bins items at the end, which are exactly + # n_items. + # + # Each cut cuts an item into two items along either the horizontal or + # vertical dimension. If we would put the two new, smaller items back + # together, they would exactly result in the item that we just cut. + # Therefore, they do fit into the same area and their area sum is also + # the same. Therefore, the overall area and the overall number of + # required bins will also stay the same. + x_idx: int = 0 + for cur_n_items in range(n_bins, self.space.n_items): + # In each iteration of this loop, we perform one cut. + # This means, that we add exactly one item to the item list. + # Our counter variable `cur_n_items`, which starts at `n_bins` + # and iterates until just before the target number of items + # `self.desc.n_items` represents the current number of items + # in our list `items`. + # It thus always holds that `cur_n_items == len(items)`. + + # Each cut is described by four properties: + # 1. The index of the item that we want to cut. + # 2. The direction (horizontal or vertical) into which we cut. + # 3. The location where we will cut along this dimension. + # 4. The direction into which we will search for the next item + # if the current item cannot be cut this way. + # These four properties are encoded in two real numbers `selector` + # and `cutter` from `[-1, 1]`. + + # The first number is `sel`. It encodes (1) and (4). + # First, we multiply `selector` with `cur_n_items` and take this + # modulo `cur_n_items`. This gives us a value `t` with + # `-cur_n_items < t < cur_n_items`. By adding `cur_n_items` + # and repeating the modulo division, we get + # `0 <= sel_i < cur_n_items`. + # `sel_i` is the index of the item that we want to cut. + selector: float = x[x_idx] + x_idx += 1 + + sel_i: int = ((int(cur_n_items * selector) % cur_n_items) + + cur_n_items) % cur_n_items + orig_sel_i: int = sel_i # the original selection index. + + # Now, it may not be possible to cut this item. + # The idea is that if we cannot cut the item, we simply try to cut + # the next item. + # The next item could be the one at the next-higher index or the + # one at the next lower index. + # If `selector < 0.0`, then we will next try the item at the next + # lower index. If `selector >= 0.0`, we will move to the next + # higher index. + # Of course, we will wrap our search when reaching either end of + # the list. + # + # If we arrive back at `orig_sel_i`, then we have tried to cut + # each item in the list in the prescribed cutting direction, + # however none could be cut. + # In this case, we will change the cutting direction. + # + # It must be possible to cut at least one item in at least one + # direction, or otherwise the problem would not be solvable. + # Therefore, we know that this way, trying all items in all + # directions in the worst case, we will definitely succeed. + sel_dir: int = -1 if selector < 0.0 else 1 + + # `cutter` tells us where to cut and in which direction. + # If `cutter >= 0`, then we will cut horizontally and + # if `cutter < 0`, we cut vertically. + # Each item is described by list `[width, height]`, so cutting + # horizontally means picking a vertical height coordinate and + # cutting horizontally along it. This means that for horizontal + # cuts, the `cut_dimension` should be `1` and for vertical cuts, + # it must be `0`. + cutter: float = x[x_idx] + x_idx += 1 + cut_dimension: int = 1 if cutter >= 0.0 else 0 + + while True: + cur_item: list[int] = items[sel_i] # Get the item to cut. + + item_size_in_dim: int = cur_item[cut_dimension] + + # We define the `cut_modulus` as the modulus for the cutting + # operation. We will definitely get a value for `cut_position` + # such that `0 < cut_position <= cut_modulus`. This means that + # we will get `0 < cut_position < item_size_in_dim`. + # Therefore, if `cut_modulus > 1`, then we know that there + # definitely is a `cut_position` at which we can cut the + # current item and obtain two new items that have both + # non-zero width and height. + cut_modulus: int = item_size_in_dim - 1 + if cut_modulus > 0: # Otherwise, we cannot cut the item. + cut_position: int = (((int( + cut_modulus * cutter) % cut_modulus) + cut_modulus) + % cut_modulus) + 1 + + if 0 < cut_position < item_size_in_dim: # Sanity check... + # Now we perform the actual cut. + # The original item now gets `cut_position` as the + # size in the `cut_dimension`, the other one gets + # `item_size_in_dim - cut_position`. Therefore, the + # overall size remains the same. + cur_item[cut_dimension] = cut_position + cur_item = cur_item.copy() + cur_item[cut_dimension] = ( + item_size_in_dim - cut_position) + items.append(cur_item) + break # we cut one item and can stop + + sel_i = ((((sel_i + sel_dir) % cur_n_items) + cur_n_items) + % cur_n_items) + if sel_i == orig_sel_i: + cut_dimension = 1 - cut_dimension + + # At this stage, our instance can only be solved with a perfect + # packing. The items need to be placed perfectly together and they + # will cover the complete `current_area`. + bin_area: Final[int] = bin_width * bin_height + current_area: int = n_bins * bin_area + + # However, requiring a perfect packing may add hardness to the problem + # that does not exist in the original problem. + # We now want to touch some of the items and make them a bit smaller. + # However, we must never make them smaller as + # `current_area - bin_area`, because then we could create a situation + # where less than `n_bins` bins are required. + # Also, we never want to slide under the `total_item_area` prescribed + # by the original problem. If the original problem prescribed a + # perfect packing, then we will create a perfect packing. + min_area: Final[int] = current_area - bin_area + 1 + + # If and only if the input array still has information left and if we + # still have area that we can cut, then let's continue. + # We will keep cutting items, but this time, we throw away the piece + # that we cut instead of adding it as item. Of course, we never cut + # more than what we are permitted to. + max_x_idx: Final[int] = len(x) + cur_n_items = list.__len__(items) + while (x_idx < max_x_idx) and (current_area > min_area): + # We perform the same selection and cutting choice. + selector = x[x_idx] + x_idx += 1 + sel_i = ((int(cur_n_items * selector) % cur_n_items) + + cur_n_items) % cur_n_items + orig_sel_i = sel_i # the original selection index. + sel_dir = -1 if selector < 0.0 else 1 + cutter = x[x_idx] + x_idx += 1 + cut_dimension = 1 if cutter >= 0.0 else 0 + + # We have selected the item and got the cutter value, too. + # Now we try to perform the cut. If we cannot cut, we try + # the next item. If we could not cut any item along the + # cut dimension, we switch the cut dimension. + # However, we may fail to cut anything (which means that + # we arrive at `step == 2`). In this case, we just skip + # this cut. + step: int = 0 + while step < 2: # This time, we may actually fail to cut. + cur_item = items[sel_i] # Get the item to cut. + + item_size_in_dim = cur_item[cut_dimension] + item_size_in_other_dim: int = cur_item[1 - cut_dimension] + # This time, the `cut_modulus` is also limited by the area + # that we can actually cut. This is `current_area - min_area`. + # Now each cut along the `cut_dimension` will cost us + # `item_size_in_other_dim` area units. + cut_modulus = min( + (current_area - min_area) // item_size_in_other_dim, + item_size_in_dim) - 1 + if cut_modulus > 0: + cut_position = (((int( + cut_modulus * cutter) % cut_modulus) + cut_modulus) + % cut_modulus) + 1 + + if 0 < cut_position < item_size_in_dim: + # We cut away cut_position and do not add the area at + # the end. + cur_item[cut_dimension] = \ + item_size_in_dim - cut_position + break # we cut one item and can stop + + sel_i = ((((sel_i + sel_dir) % cur_n_items) + cur_n_items) + % cur_n_items) + if sel_i == orig_sel_i: + cut_dimension = 1 - cut_dimension + step += 1 # If we tried everything, this enforces a stop. + + # Finally, we sort the items in order to merge items of the + # same dimension. + items.sort() + lo: int = 0 + n_items: int = list.__len__(items) + while lo < n_items: + # For each item in the list, we try to find all items of the same + # dimension. Since the list is sorted, these items must all be + # located together. + hi: int = lo + cur_item = items[lo] + while (hi < n_items) and (items[hi] == cur_item): + hi += 1 + cur_item.append(hi - lo) # We now have the item multiplicity. + # We delete all items with the same dimension (which must come + # directly afterward). + hi -= 1 + while lo < hi: + del items[hi] + hi -= 1 + n_items -= 1 + lo += 1 # Move to the next item + + # Now all items are sorted. This may or may not be a problem: + # Some heuristics may either benefit or suffer if the item list + # has a pre-defined structure. Therefore, we want to try to at least + # somewhat remove the order and make the item list order more random. + default_rng(int.from_bytes(x.tobytes())).shuffle(items) + + # And now we can fill in the result as the output of our encoding. + res: Instance = Instance( # Generate the instance + self.space.inst_name, bin_width, bin_height, items) + if list.__len__(y) > 0: # If the destination has length > 0... + y[0] = res # ...store the instance at index 0, + else: # otherwise + y.append(res) # add the instance to it.
    +
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/instgen/instance_space.html b/_modules/moptipyapps/binpacking2d/instgen/instance_space.html new file mode 100644 index 00000000..c20800b4 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/instgen/instance_space.html @@ -0,0 +1,188 @@ +moptipyapps.binpacking2d.instgen.instance_space — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.instgen.instance_space

    +"""An encoding that is inspired by a given instance."""
    +from typing import Final
    +
    +from moptipy.api.space import Space
    +from moptipy.utils.logger import KeyValueLogSection
    +from pycommons.types import check_int_range, type_error
    +
    +from moptipyapps.binpacking2d.instance import IDX_HEIGHT, IDX_WIDTH, Instance
    +
    +
    +
    +[docs] +class InstanceSpace(Space): + """An space structure for the instance generation problem and space.""" + + def __init__(self, source: Instance) -> None: + """ + Create the space structure for the instance generation problem. + + :param source: the source instances whose date we take as an example + """ + super().__init__() + #: the instance name + self.inst_name: Final[str] = str.strip(source.name) + "n" + #: the target number of unique items + self.n_different_items: Final[int] = check_int_range( + source.n_different_items, "n_different_items", + 1, 100_000) + #: the target number of items (including repetitions) + self.n_items: Final[int] = check_int_range( + source.n_items, "n_items", source.n_different_items, + 1_000_000_000) + #: the bin width + self.bin_width: Final[int] = check_int_range( + source.bin_width, "bin_width", 1, 1_000_000_000) + #: the bin height + self.bin_height: Final[int] = check_int_range( + source.bin_height, "bin_height", 1, 1_000_000_000) + #: the minimum number of bins that this instance requires + self.min_bins: Final[int] = check_int_range( + min(source.lower_bound_bins, self.n_items), "min_bins", + 1, 1_000_000_000) + #: the minimum item width + self.item_width_min: Final[int] = check_int_range(int(min( + source[:, IDX_WIDTH])), "item_width_min", 1, self.bin_width) + #: the maximum item width + self.item_width_max: Final[int] = check_int_range(int(max( + source[:, IDX_WIDTH])), "item_width_max", self.item_width_min, + self.bin_width) + #: the minimum item height + self.item_height_min: Final[int] = check_int_range(int(min( + source[:, IDX_HEIGHT])), "item_height_min", 1, self.bin_height) + #: the maximum item height + self.item_height_max: Final[int] = check_int_range(int(max( + source[:, IDX_HEIGHT])), "item_height_max", self.item_height_min, + self.bin_height) + #: the total item area + self.total_item_area: Final[int] = check_int_range( + source.total_item_area, "total_item_area", 1, 1_000_000_000) + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log the parameters of this instance. + + :param logger: the logger + """ + super().log_parameters_to(logger) + logger.key_value("instName", self.inst_name) + logger.key_value("nItems", self.n_items) + logger.key_value("nDifferentItems", self.n_different_items) + logger.key_value("binWidth", self.bin_width) + logger.key_value("binHeight", self.bin_height) + logger.key_value("minBins", self.min_bins) + logger.key_value("itemWidthMin", self.item_width_min) + logger.key_value("itemWidthMax", self.item_width_max) + logger.key_value("itemHeightMin", self.item_height_min) + logger.key_value("itemHeightMax", self.item_height_max) + logger.key_value("totalItemArea", self.total_item_area)
    + + +
    +[docs] + def create(self) -> list[Instance]: + """ + Generate a list for receiving an instance. + + :return: the new instance list + """ + return []
    + + +
    +[docs] + def copy(self, dest: list[Instance], source: list[Instance]) -> None: + """ + Copy the instance list. + + :param dest: the destination instance list + :param source: the source instance list + """ + dest.clear() + dest.extend(source)
    + + +
    +[docs] + def to_str(self, x: list[Instance]) -> str: # +book + """ + Convert an instance list to a string. + + :param x: the instance list + :return: the string representation of x + """ + return x[0].to_compact_str()
    + + +
    +[docs] + def from_str(self, text: str) -> list[Instance]: + """ + Convert an instance string to a list with an instance. + + :param text: the input string + :return: the element in the space corresponding to `text` + """ + return [Instance.from_compact_str(text)]
    + + +
    +[docs] + def is_equal(self, x1: list[Instance], x2: list[Instance]) -> bool: + """ + Check if the contents of two instances of the data structure are equal. + + :param x1: the first instance + :param x2: the second instance + :return: `True` if the contents are equal, `False` otherwise + """ + return x1 == x2
    + + +
    +[docs] + def validate(self, x: list[Instance]) -> None: + """ + Check whether a given point in the space is valid. + + :param x: the point + :raises TypeError: if the point `x` (or one of its elements, if + applicable) has the wrong data type + :raises ValueError: if the point `x` is invalid and/or simply is not + an element of this space + """ + if list.__len__(x) != 1: + raise ValueError("There must be exactly one instance in x.") + inst: Instance = x[0] + if not isinstance(inst, Instance): + raise type_error(inst, "x[0]", Instance) + if inst.name != self.inst_name: + raise ValueError( + f"instance name {inst.name!r} != {self.inst_name!r}.") + if inst.bin_width != self.bin_width: + raise ValueError( + f"instance bin width={inst.bin_width} != {self.bin_width}.") + if inst.bin_height != self.bin_height: + raise ValueError( + "instance bin height=" + f"{inst.bin_height} != {self.bin_height}.") + if inst.n_items != self.n_items: + raise ValueError( + f"instance n_items={inst.n_items} != {self.n_items}.")
    + + +
    +[docs] + def n_points(self) -> int: + """ + Get the approximate number of different elements in the space. + + :return: the approximate scale of the space + """ + return (self.bin_height * self.bin_width) ** self.n_items
    +
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/instgen/problem.html b/_modules/moptipyapps/binpacking2d/instgen/problem.html new file mode 100644 index 00000000..08a3ea81 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/instgen/problem.html @@ -0,0 +1,46 @@ +moptipyapps.binpacking2d.instgen.problem — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.instgen.problem

    +"""An instance of the instance generation problem."""
    +
    +from typing import Final
    +
    +from moptipy.api.component import Component
    +from moptipy.spaces.vectorspace import VectorSpace
    +
    +from moptipyapps.binpacking2d.instance import Instance
    +from moptipyapps.binpacking2d.instgen.inst_decoding import InstanceDecoder
    +from moptipyapps.binpacking2d.instgen.instance_space import InstanceSpace
    +
    +
    +
    +[docs] +class Problem(Component): + """An instance of the 2D Bin Packing Instance Generation Problem.""" + + def __init__(self, name: str, slack: float) -> None: + """ + Create an instance of the 2D bin packing instance generation problem. + + :param name: the name of the instance to select + :param slack: the additional fraction of slack + """ + super().__init__() + #: the instance to be used as template + self.solution_space: Final[InstanceSpace] = InstanceSpace( + Instance.from_resource(name)) + #: the internal decoding + self.encoding: Final[InstanceDecoder] = InstanceDecoder( + self.solution_space) + n: Final[int] = self.encoding.get_x_dim(slack) + #: the search space + self.search_space: Final[VectorSpace] = VectorSpace(n, -1.0, 1.0) + + def __str__(self) -> str: + """ + Get the string representation of this problem. + + :return: the string representation of this problem + """ + return (f"{self.solution_space.inst_name}_" + f"{self.search_space.dimension}")
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/make_instances.html b/_modules/moptipyapps/binpacking2d/make_instances.html new file mode 100644 index 00000000..0a29a7db --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/make_instances.html @@ -0,0 +1,241 @@ +moptipyapps.binpacking2d.make_instances — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.make_instances

    +"""
    +Obtain Instances of the 2D-dimensional Bin Packing Problem.
    +
    +With this program, we can obtain the instances of the two-dimensional bin
    +packing problem and convert them to a singular resource file.
    +The resource file holds one instance per line.
    +
    +1. Manuel Iori, Vinícius Loti de Lima, Silvano Martello, and Michele Monaci.
    +   *2DPackLib*.
    +   https://site.unibo.it/operations-research/en/research/2dpacklib
    +2. Manuel Iori, Vinícius Loti de Lima, Silvano Martello, and Michele
    +   Monaci. 2DPackLib: A Two-Dimensional Cutting and Packing Library.
    +   *Optimization Letters* 16(2):471-480. March 2022.
    +   https://doi.org/10.1007/s11590-021-01808-y
    +"""
    +
    +import zipfile
    +from io import BytesIO
    +from math import isqrt
    +from os.path import dirname, exists
    +from typing import Any, Callable, Final, Iterable
    +
    +# noinspection PyPackageRequirements
    +import certifi  # type: ignore
    +
    +# noinspection PyPackageRequirements
    +import urllib3  # type: ignore
    +from pycommons.io.path import Path, directory_path, file_path, write_lines
    +from pycommons.io.temp import temp_dir
    +from pycommons.types import type_error
    +
    +import moptipyapps.binpacking2d.instance as inst_mod
    +from moptipyapps.binpacking2d.instance import (
    +    INSTANCES_RESOURCE,
    +    Instance,
    +)
    +
    +#: the base url for 2DPackLib
    +__BASE_URL: str = \
    +    "https://site.unibo.it/operations-research/en/research/2dpacklib"
    +
    +#: The base URLs of the relevant 2DPackLib instances.
    +__BASE_URLS: Final[Iterable[str]] = tuple(
    +    f"{__BASE_URL}/{f}.zip" for f in ["a", "beng", "class"])
    +
    +
    +
    +[docs] +def download_2dpacklib_instances( + dest_dir: str, + source_urls: Iterable[str] = __BASE_URLS, + http: urllib3.PoolManager = urllib3.PoolManager( + cert_reqs="CERT_REQUIRED", ca_certs=certifi.where())) \ + -> Iterable[Path]: + """ + Download the instances from 2DPackLib to a folder. + + This function downloads the instances from 2DPackLib, which are provided + as zip archives containing one file per instance. It will extract all the + instances into the folder `dest_dir` and return a tuple of the extracted + files. You can specify the source URLs of the zip archives if you want, + but by default we use the three instance sets `A`, `BENG`, and `CLASS`. + + :param dest_dir: the destination directory + :param source_urls: the source URLs from which to download the zip + archives with the 2DPackLib-formatted instances + :param http: the HTTP pool + :return: the list of unpackaged files + """ + dest: Final[Path] = directory_path(dest_dir) + if not isinstance(source_urls, Iterable): + raise type_error(source_urls, "source_urls", Iterable) + result: Final[list[Path]] = [] + + for i, url in enumerate(source_urls): # iterate over the source URLs + if not isinstance(url, str): + raise type_error(url, f"source_urls[{i}]", str) + + response = http.request( # download the zip archive + "GET", url, redirect=True, retries=30) + with zipfile.ZipFile(BytesIO(response.data), mode="r") as z: + # unzip the ins2D files from the archives + files: Iterable[str] = [f for f in z.namelist() + if f.endswith(".ins2D")] + paths: list[Path] = [dest.resolve_inside(f) for f in files] + for path in paths: + if exists(path): + raise ValueError(f"file {path} already exists!") + z.extractall(dest, members=files) + for path in paths: + path.enforce_file() + result.append(path) + result.sort() + return tuple(result)
    + + + +def __normalize_2dpacklib_inst_name(instname: str) -> str: + """ + Normalize an instance name. + + :param instname: the name + :return: the normalized name + """ + if not isinstance(instname, str): + raise type_error(instname, "name", str) + instname = instname.strip().lower() + if (len(instname) == 2) and \ + (instname[0] in "abcdefghijklmnoprstuvwxyz") and \ + (instname[1] in "123456789"): + return f"{instname[0]}0{instname[1]}" + if instname.startswith("cl_"): + return f"cl{instname[3:]}" + return instname + + +
    +[docs] +def append_almost_squares_strings(collector: Callable[[ + tuple[str, str]], Any]) -> None: + """ + Append the strings of the almost squares instances. + + :param collector: the instance collector + :return: the strings + """ + objects: list[list[int]] = [[2, 1, 1]] + size: int = 2 + for small_side in range(2, 36): + big_side = small_side + 1 + objects.append([big_side, small_side, 1]) + size += small_side * big_side + + bin_small = isqrt(size) + bin_big = bin_small + 1 + if (bin_big * bin_small) == size: + iname: str = str(small_side) + iname = f"asqas{iname}" if len(iname) >= 2 else f"asqas0{iname}" + collector((iname, Instance( + iname, bin_big, bin_small, objects).to_compact_str()))
    + + + +
    +[docs] +def join_instances_to_compact( + binpacklib2d_files: Iterable[str], dest_file: str, + normalizer: Callable[[str], str] = __normalize_2dpacklib_inst_name) \ + -> tuple[Path, Iterable[str]]: + """ + Join all instances from a set of 2DPackLib files to one compact file. + + :param binpacklib2d_files: the iterable of 2DPackLib file paths + :param dest_file: the destination file + :param normalizer: the name normalizer, i.e., a function that processes + and/or transforms an instance name + :return: the canonical destination path and the list of instance names + stored + """ + if not isinstance(binpacklib2d_files, Iterable): + raise type_error(binpacklib2d_files, "files", Iterable) + if not callable(normalizer): + raise type_error(normalizer, "normalizer", call=True) + dest_path = Path(dest_file) + data: Final[list[tuple[str, str]]] = [] + for file in binpacklib2d_files: + inst: Instance = Instance.from_2dpacklib(file_path(file)) + inst.name = normalizer(inst.name) + data.append((inst.name, inst.to_compact_str())) + append_almost_squares_strings(data.append) # add the asquas instances + data.sort() + with dest_path.open_for_write() as wd: + write_lines((content for _, content in data), wd) + dest_path.enforce_file() + return dest_path, [thename for thename, _ in data]
    + + + +
    +[docs] +def make_2dpacklib_resource( + dest_file: str | None = None, + source_urls: Iterable[str] = __BASE_URLS, + normalizer: Callable[[str], str] = __normalize_2dpacklib_inst_name)\ + -> tuple[Path, Iterable[str]]: + """ + Make the resource with all the relevant 2DPackLib instances. + + :param dest_file: the optional path to the destination file + :param source_urls: the source URLs from which to download the zip + archives with the 2DPackLib-formatted instances + :param normalizer: the name normalizer, i.e., a function that processes + and/or transforms an instance name + :return: the canonical path to the and the list of instance names stored + """ + dest_path: Final[Path] = directory_path(dirname(inst_mod.__file__))\ + .resolve_inside(INSTANCES_RESOURCE) if dest_file is None \ + else Path(dest_file) + with temp_dir() as temp: + files: Iterable[Path] = download_2dpacklib_instances( + dest_dir=temp, source_urls=source_urls) + return join_instances_to_compact( + files, dest_path, normalizer)
    + + + +# create the tables if this is the main script +if __name__ == "__main__": + _, names = make_2dpacklib_resource() + rows: list[str] = ["_INSTANCES: Final[tuple[str, ...]] = ("] + current = " " + has_space: bool = True + for name in names: + if (len(current) + (3 if has_space else 4) + len(name)) > 78: + rows.append(current) + current = " " + has_space = True + current = f'{current}"{name}",' if has_space else \ + f'{current} "{name}",' + has_space = False + rows.append(current[:-1] + ")") + + cmt_strs: list[str] = ( + "the the list of instance names of the 2DPackLib bin " + f"packing set downloaded from {__BASE_URL} ('a*'," + "'beng*', 'cl*') as well as the four non-trivial " + "'Almost Squares in Almost Squares' instances ('asqas*').").split() + cmt_str = "#:" + for word in cmt_strs: + if len(word) + 1 + len(cmt_str) <= 79: + cmt_str = f"{cmt_str} {word}" + else: + print(cmt_str) # noqa + cmt_str = f"#: {word}" + if len(cmt_str) > 2: + print(cmt_str) # noqa + + for s in rows: + print(s) # noqa +
    diff --git a/_modules/moptipyapps/binpacking2d/objectives/.nojekyll b/_modules/moptipyapps/binpacking2d/objectives/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_modules/moptipyapps/binpacking2d/objectives/bin_count.html b/_modules/moptipyapps/binpacking2d/objectives/bin_count.html new file mode 100644 index 00000000..73633c37 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/objectives/bin_count.html @@ -0,0 +1,141 @@ +moptipyapps.binpacking2d.objectives.bin_count — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.objectives.bin_count

    +"""
    +An objective function for minimizing the number of bins in packings.
    +
    +This function returns the number of bins.
    +"""
    +from typing import Final
    +
    +from moptipy.api.objective import Objective
    +from pycommons.types import type_error
    +
    +from moptipyapps.binpacking2d.instance import Instance
    +from moptipyapps.binpacking2d.packing import IDX_BIN
    +
    +#: the name of the bin count objective function
    +BIN_COUNT_NAME: Final[str] = "binCount"
    +
    +
    +
    +[docs] +class BinCount(Objective): + """Compute the number of bins.""" + + def __init__(self, instance: Instance) -> None: + """ + Initialize the number of bins objective function. + + :param instance: the instance to load the bounds from + """ + super().__init__() + if not isinstance(instance, Instance): + raise type_error(instance, "instance", Instance) + #: the internal instance reference + self._instance: Final[Instance] = instance + +
    +[docs] + def evaluate(self, x) -> int: + """ + Get the number of bins. + + :param x: the packing + :return: the number of bins used + """ + return int(x[:, IDX_BIN].max())
    + + +
    +[docs] + def lower_bound(self) -> int: + """ + Get the lower bound of the number of bins objective. + + :return: the lower bound for the number of required bins, i.e., + :attr:`~moptipyapps.binpacking2d.instance.Instance.\ +lower_bound_bins` + + >>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]]) + >>> ins.lower_bound_bins + 1 + >>> BinCount(ins).lower_bound() + 1 + + >>> ins = Instance("b", 10, 50, [[10, 5, 10], [3, 3, 1], [5, 5, 1]]) + >>> ins.lower_bound_bins + 2 + >>> BinCount(ins).lower_bound() + 2 + + >>> ins = Instance("c", 10, 50, [[10, 5, 20], [30, 3, 10], [5, 5, 1]]) + >>> ins.lower_bound_bins + 4 + >>> BinCount(ins).lower_bound() + 4 + """ + return self._instance.lower_bound_bins
    + + +
    +[docs] + def is_always_integer(self) -> bool: + """ + Return `True` because there are only integer bins. + + :retval True: always + """ + return True
    + + +
    +[docs] + def upper_bound(self) -> int: + """ + Get the upper bound of the number of bins. + + :return: the number of items in the instance, i.e., + :attr:`~moptipyapps.binpacking2d.instance.Instance.n_items` + + >>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]]) + >>> ins.n_items + 3 + >>> BinCount(ins).upper_bound() + 3 + + >>> ins = Instance("b", 10, 50, [[10, 5, 10], [3, 3, 1], [5, 5, 1]]) + >>> ins.n_items + 12 + >>> BinCount(ins).upper_bound() + 12 + + >>> ins = Instance("c", 10, 50, [[10, 5, 20], [30, 3, 10], [5, 5, 1]]) + >>> ins.n_items + 31 + >>> BinCount(ins).upper_bound() + 31 + """ + return self._instance.n_items
    + + +
    +[docs] + def to_bin_count(self, z: int) -> int: + """ + Get the bin count corresponding to an objective value. + + :param z: + :return: the value itself + """ + return z
    + + + def __str__(self) -> str: + """ + Get the name of the bins objective function. + + :return: `binCount` + :retval "binCount": always + """ + return BIN_COUNT_NAME
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_empty.html b/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_empty.html new file mode 100644 index 00000000..bbdb8c7a --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_empty.html @@ -0,0 +1,111 @@ +moptipyapps.binpacking2d.objectives.bin_count_and_empty — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.objectives.bin_count_and_empty

    +"""
    +An objective function indirectly minimizing the number of bins in packings.
    +
    +This objective function first computes the number of bins used. Let's call it
    +`n_bins`. We know the total number of items,
    +:attr:`~moptipyapps.binpacking2d.instance.Instance.n_items`, as
    +well (because this is also the number of rows in the packing).
    +Now we return `(n_items * (n_bins - 1)) + min_items`,
    +where `min_items` is the number of items in the bin with the fewest items.
    +
    +This is similar to :mod:`~moptipyapps.binpacking2d.objectives.\
    +bin_count_and_last_small`, but instead of focussing on the very last bin, it
    +uses the minimum element count over all bins. It has the same lower- and upper
    +bound, though.
    +"""
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +
    +from moptipyapps.binpacking2d.instance import Instance
    +from moptipyapps.binpacking2d.objectives.bin_count_and_last_empty import (
    +    BinCountAndLastEmpty,
    +)
    +from moptipyapps.binpacking2d.packing import IDX_BIN
    +
    +
    +
    +[docs] +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False) +def bin_count_and_empty(y: np.ndarray, temp: np.ndarray) -> int: + """ + Get the number of bins and number of elements in the emptiest one. + + We compute the total number of bins minus 1 and multiply it with the + number of items. We then add the smallest number of elements in any + bin. + + :param y: the packing + :param temp: the temporary array + :return: the objective value + + >>> tempa = np.empty(10, int) + >>> bin_count_and_empty(np.array([[1, 1, 10, 10, 20, 20], + ... [1, 1, 30, 30, 40, 40], + ... [1, 1, 20, 20, 30, 30]], int), tempa) + 3 + >>> bin_count_and_empty(np.array([[1, 1, 10, 10, 20, 20], + ... [1, 2, 30, 30, 40, 40], # bin 2! + ... [1, 1, 20, 20, 30, 30]], int), tempa) + 4 + >>> bin_count_and_empty(np.array([[1, 2, 10, 10, 20, 20], # bin 2! + ... [1, 2, 30, 30, 40, 40], # bin 2! + ... [1, 1, 20, 20, 30, 30]], int), tempa) + 4 + >>> bin_count_and_empty(np.array([[1, 3, 10, 10, 20, 20], # bin 3! + ... [1, 2, 30, 30, 40, 40], # bin 2! + ... [1, 1, 20, 20, 30, 30]], int), tempa) + 7 + """ + total_bins: int = -1 # the current idea of what the last bin is + temp.fill(0) # empty all temporary values + n_items: Final[int] = len(y) # the number of rows in the matrix + + for i in range(n_items): # iterate over all packed items + bin_idx: int = int(y[i, IDX_BIN]) - 1 # get the bin index of the item + temp[bin_idx] += 1 # increase number of items + total_bins = max(total_bins, bin_idx) + return (n_items * total_bins) + temp[0:total_bins + 1].min()
    + + + +
    +[docs] +class BinCountAndEmpty(BinCountAndLastEmpty): + """Get the number of bins and number of elements in the emptiest one.""" + + def __init__(self, instance: Instance) -> None: + """ + Initialize the objective function. + + :param instance: the instance to load the bounds from + """ + super().__init__(instance) + #: the internal temporary array + self.__temp: Final[np.ndarray] = np.empty( + instance.n_items, instance.dtype) + +
    +[docs] + def evaluate(self, x) -> int: + """ + Evaluate the objective function. + + :param x: the solution + :return: the bin size and smallest-bin-area factor + """ + return bin_count_and_empty(x, self.__temp)
    + + + def __str__(self) -> str: + """ + Get the name of the bins objective function. + + :return: `binCountAndEmpty` + :retval "binCountAndEmpty": always + """ + return "binCountAndEmpty"
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_last_empty.html b/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_last_empty.html new file mode 100644 index 00000000..0ce91335 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_last_empty.html @@ -0,0 +1,196 @@ +moptipyapps.binpacking2d.objectives.bin_count_and_last_empty — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.objectives.bin_count_and_last_empty

    +"""
    +An objective function indirectly minimizing the number of bins in packings.
    +
    +This objective function first computes the number of bins used. Let's call it
    +`n_bins`. We know the total number of items,
    +:attr:`~moptipyapps.binpacking2d.instance.Instance.n_items`, as
    +well (because this is also the number of rows in the packing).
    +Now we return `(n_items * (n_bins - 1)) + number_of_items_in_last_bin`,
    +where `number_of_items_in_last_bin` is, well, the number of items in the
    +very last bin.
    +
    +The idea behind this is: If one of two packings has the smaller number of
    +bins, then this one will always have the smaller objective value. If two
    +packings have the same number of bins, but one has fewer items in the very
    +last bin, then that one is better. With this mechanism, we drive the search
    +towards "emptying" the last bin. If the number of items in the last bin would
    +reach `0`, that last bin would disappear - and we have one bin less.
    +"""
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from pycommons.math.int_math import ceil_div
    +
    +from moptipyapps.binpacking2d.objectives.bin_count import BinCount
    +from moptipyapps.binpacking2d.packing import IDX_BIN
    +
    +
    +
    +[docs] +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False) +def bin_count_and_last_empty(y: np.ndarray) -> int: + """ + Compute the number of bins and the emptiness of the last bin. + + We compute the total number of bins minus 1 and multiply it with the + number of items. We then add the number of items in the last bin. + + :param y: the packing + :return: the objective value + + >>> bin_count_and_last_empty(np.array([[1, 1, 10, 10, 20, 20], + ... [1, 1, 30, 30, 40, 40], + ... [1, 1, 20, 20, 30, 30]], int)) + 3 + >>> bin_count_and_last_empty(np.array([[1, 1, 10, 10, 20, 20], + ... [1, 2, 30, 30, 40, 40], # bin 2! + ... [1, 1, 20, 20, 30, 30]], int)) + 4 + >>> bin_count_and_last_empty(np.array([[1, 2, 10, 10, 20, 20], # bin 2! + ... [1, 2, 30, 30, 40, 40], # bin 2! + ... [1, 1, 20, 20, 30, 30]], int)) + 5 + >>> bin_count_and_last_empty(np.array([[1, 3, 10, 10, 20, 20], # bin 3! + ... [1, 2, 30, 30, 40, 40], # bin 2! + ... [1, 1, 20, 20, 30, 30]], int)) + 7 + """ + current_bin: int = -1 # the current idea of what the last bin is + current_size: int = -1 # the number of items already in that bin + n_items: Final[int] = len(y) # the number of rows in the matrix + + for i in range(n_items): # iterate over all packed items + bin_idx: int = int(y[i, IDX_BIN]) # get the bin index of the item + if bin_idx > current_bin: # it's a new biggest bin = new last bin? + current_size = 1 # then there is 1 object in it for now + current_bin = bin_idx # and we remember it + elif bin_idx == current_bin: # did item go into the current last bin? + current_size = current_size + 1 # then increase size + return (n_items * (current_bin - 1)) + current_size # return objective
    + + + +
    +[docs] +class BinCountAndLastEmpty(BinCount): + """Compute the number of bins and the emptiness of the last one.""" + +
    +[docs] + def evaluate(self, x) -> int: + """ + Evaluate the objective function. + + :param x: the solution + :return: the bin size and emptyness factor + """ + return bin_count_and_last_empty(x)
    + + +
    +[docs] + def lower_bound(self) -> int: + """ + Get the lower bound of the number of bins and emptiness objective. + + We know from the instance (:attr:`~moptipyapps.binpacking2d\ +.instance.Instance.lower_bound_bins`) that we require at least as many bins + such that they can accommodate the total area of all items together. + Let's call this number `lb`. Now if `lb` is one, then all objects could + be in the first bin, in which case the objective value would equal to + :attr:`~moptipyapps.binpacking2d.instance.Instance.n_items`, + i.e., the total number of items in the first = last bin. + If it is `lb=2`, then we know that we will need at least two bins. The + best case would be that `n_items - 1` items are in the first bin and + one is in the last bin. This means that we would get `1 * n_items + 1` + as objective value. If we have `lb=3` bins, then we could have + `n_items - 1` items distributed over the first two bins with one item + left over in the last bin, i.e., would get `(2 * n_items) + 1`. And so + on. + + :return: `max(n_items, (lb - 1) * n_items + 1)` + + >>> from moptipyapps.binpacking2d.instance import Instance + >>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]]) + >>> ins.n_items + 3 + >>> ins.lower_bound_bins + 1 + >>> BinCountAndLastEmpty(ins).lower_bound() + 3 + + >>> ins = Instance("b", 10, 50, [[10, 5, 10], [3, 3, 1], [5, 5, 1]]) + >>> ins.n_items + 12 + >>> ins.lower_bound_bins + 2 + >>> BinCountAndLastEmpty(ins).lower_bound() + 13 + + >>> ins = Instance("c", 10, 50, [[10, 5, 20], [30, 3, 10], [5, 5, 1]]) + >>> ins.n_items + 31 + >>> ins.lower_bound_bins + 4 + >>> BinCountAndLastEmpty(ins).lower_bound() + 94 + """ + return max(self._instance.n_items, + ((self._instance.lower_bound_bins - 1) + * self._instance.n_items) + 1)
    + + +
    +[docs] + def upper_bound(self) -> int: + """ + Get the upper bound of the number of bins plus emptiness. + + :return: the number of items in the instance to the square + + >>> from moptipyapps.binpacking2d.instance import Instance + >>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]]) + >>> ins.n_items + 3 + >>> BinCountAndLastEmpty(ins).upper_bound() + 9 + + >>> ins = Instance("b", 10, 50, [[10, 5, 10], [3, 3, 1], [5, 5, 1]]) + >>> ins.n_items + 12 + >>> BinCountAndLastEmpty(ins).upper_bound() + 144 + + >>> ins = Instance("c", 10, 50, [[10, 5, 20], [30, 3, 10], [5, 5, 1]]) + >>> ins.n_items + 31 + >>> BinCountAndLastEmpty(ins).upper_bound() + 961 + """ + return self._instance.n_items * self._instance.n_items
    + + +
    +[docs] + def to_bin_count(self, z: int) -> int: + """ + Convert an objective value to a bin count. + + :param z: the objective value + :return: the bin count + """ + return ceil_div(z, self._instance.n_items)
    + + + def __str__(self) -> str: + """ + Get the name of the bins objective function. + + :return: `binCountAndLastEmpty` + :retval "binCountAndLastEmpty": always + """ + return "binCountAndLastEmpty"
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_last_skyline.html b/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_last_skyline.html new file mode 100644 index 00000000..0cf2137c --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_last_skyline.html @@ -0,0 +1,190 @@ +moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline

    +"""
    +An objective function indirectly minimizing the number of bins in packings.
    +
    +This objective function minimizes the number of bins and maximizes the
    +"usable" space in the last bin.
    +
    +Which space is actually useful for our encodings? Let's say we have filled
    +a bin to a certain degree and somewhere there is a "hole" in the filled area,
    +but this hole is covered by another object. The area of the hole is not used,
    +but it also cannot be used anymore. The area that we can definitely use is the
    +area above the "skyline" of the objects in the bin. The skyline at any
    +horizontal `x` coordinate be the highest border of any object that intersects
    +with `x` horizontally. In other words, it is the `y` value at and above which
    +no other object is located at this `x` coordinate. The area below the skyline
    +cannot be used anymore. The area above the skyline can.
    +
    +If we minimize the area below the skyline in the very last bin, then this will
    +a similar impact as minimizing the overall object area in the last bin (see
    +:mod:`~moptipyapps.binpacking2d.objectives.bin_count_and_last_small`). We push
    +the skyline lower and lower and, if we are lucky, the last bin eventually
    +becomes empty.
    +
    +The objective
    +:mod:`~moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline`
    +works quite similarly to this one, but minimizes the lowest skyline over any
    +bin.
    +"""
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +
    +from moptipyapps.binpacking2d.instance import Instance
    +from moptipyapps.binpacking2d.objectives.bin_count_and_last_small import (
    +    BinCountAndLastSmall,
    +)
    +from moptipyapps.binpacking2d.packing import (
    +    IDX_BIN,
    +    IDX_LEFT_X,
    +    IDX_RIGHT_X,
    +    IDX_TOP_Y,
    +)
    +
    +
    +
    +[docs] +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False) +def bin_count_and_last_skyline(y: np.ndarray, bin_width: int, + bin_height: int) -> int: + """ + Compute the bin count-1 times the bin size + the space below the skyline. + + :param y: the packing + :param bin_width: the bin width + :param bin_height: the bin height + :return: the objective value + + >>> 10*0 + 10*20 + 10*30 + 10*40 + 10*0 + 900 + >>> bin_count_and_last_skyline(np.array([[1, 1, 10, 10, 20, 20], + ... [1, 1, 30, 30, 40, 40], + ... [1, 1, 20, 20, 30, 30]], int), + ... 50, 50) + 900 + >>> 5 * 0 + 5 * 10 + 10 * 20 + 5 * 10 + 25 * 0 + 300 + >>> bin_count_and_last_skyline(np.array([[1, 1, 5, 0, 15, 10], + ... [1, 1, 10, 10, 20, 20], + ... [1, 1, 15, 0, 25, 10]], int), + ... 50, 50) + 300 + >>> 50*50 + 0*10 + 10*20 + 30*0 + 2700 + >>> bin_count_and_last_skyline(np.array([[1, 1, 5, 0, 15, 10], + ... [1, 2, 10, 10, 20, 20], + ... [1, 1, 15, 0, 25, 10]], int), + ... 50, 50) + 2700 + >>> 5 * 0 + 5 * 10 + 3 * 20 + (50 - 13) * 25 + 1035 + >>> bin_count_and_last_skyline(np.array([[1, 1, 5, 0, 15, 10], + ... [1, 1, 10, 10, 20, 20], + ... [1, 1, 15, 0, 25, 10], + ... [2, 1, 13, 20, 50, 25]], int), + ... 50, 50) + 1035 + >>> 50*50*3 + 25*50 + 8750 + >>> bin_count_and_last_skyline(np.array([[1, 1, 0, 0, 10, 10], + ... [2, 2, 0, 0, 20, 20], + ... [3, 3, 0, 0, 25, 10], + ... [4, 4, 0, 0, 50, 25]], int), + ... 50, 50) + 8750 + >>> 50*50*3 + 25*10 + 25*0 + 7750 + >>> bin_count_and_last_skyline(np.array([[1, 1, 0, 0, 10, 10], + ... [2, 2, 0, 0, 20, 20], + ... [3, 4, 0, 0, 25, 10], + ... [4, 3, 0, 0, 50, 25]], int), + ... 50, 50) + 7750 + >>> 50*50*3 + 20*20 + 30*0 + 7900 + >>> bin_count_and_last_skyline(np.array([[1, 1, 0, 0, 10, 10], + ... [2, 4, 0, 0, 20, 20], + ... [3, 2, 0, 0, 25, 10], + ... [4, 3, 0, 0, 50, 25]], int), + ... 50, 50) + 7900 + >>> 50*50*3 + 20*10 + 30*20 + 20*0 + 8300 + >>> bin_count_and_last_skyline(np.array([[1, 1, 0, 0, 10, 10], + ... [2, 4, 0, 0, 20, 20], + ... [3, 2, 0, 0, 25, 10], + ... [2, 4, 10, 20, 30, 30], + ... [4, 3, 0, 0, 50, 25]], int), + ... 50, 50) + 8300 + """ + bins: Final[int] = int(y[:, IDX_BIN].max()) + len_y: Final[int] = len(y) + bin_size: Final[int] = bin_height * bin_width + area_under_skyline: int = 0 + + cur_left: int = 0 + use_bin: int = max(y[:, IDX_BIN]) # the bin to use + while cur_left < bin_width: + use_right = next_left = bin_width + use_top: int = 0 + for i in range(len_y): + if y[i, IDX_BIN] != use_bin: + continue + left: int = int(y[i, IDX_LEFT_X]) + right: int = int(y[i, IDX_RIGHT_X]) + top: int = int(y[i, IDX_TOP_Y]) + if left <= cur_left < right and top > use_top: + use_top = top + use_right = right + if cur_left < left < next_left: + next_left = left + + use_right = min(use_right, next_left) + area_under_skyline += (use_right - cur_left) * use_top + cur_left = use_right + return ((bins - 1) * bin_size) + area_under_skyline
    + + + +
    +[docs] +class BinCountAndLastSkyline(BinCountAndLastSmall): + """Compute the number of bins and the useful area in the last bin.""" + + def __init__(self, instance: Instance) -> None: + """ + Initialize the objective function. + + :param instance: the instance to load the bounds from + """ + super().__init__(instance) + #: the bin width + self.__bin_width: Final[int] = instance.bin_width + #: the bin height + self.__bin_height: Final[int] = instance.bin_height + +
    +[docs] + def evaluate(self, x) -> int: + """ + Evaluate the objective function. + + :param x: the solution + :return: the bin size and last-bin-small-area factor + """ + return bin_count_and_last_skyline( + x, self.__bin_width, self.__bin_height)
    + + + def __str__(self) -> str: + """ + Get the name of the bins objective function. + + :return: `binCountAndLowestSkyline` + :retval "binCountAndLowestSkyline": always + """ + return "binCountAndLastSkyline"
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_last_small.html b/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_last_small.html new file mode 100644 index 00000000..61855a5d --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_last_small.html @@ -0,0 +1,240 @@ +moptipyapps.binpacking2d.objectives.bin_count_and_last_small — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.objectives.bin_count_and_last_small

    +"""
    +An objective function indirectly minimizing the number of bins in packings.
    +
    +This objective function computes the number of bins used. Let's call it
    +`n_bins`. We know the area `bin_area` of a bin as well. Now we return
    +`(bin_area * (n_bins - 1)) + area_of_items_in_last_bin`, where
    +`area_of_items_in_last_bin` is, well, the area covered by items in the
    +very last bin.
    +
    +The idea behind this is: If one of two packings has the smaller number of
    +bins, then this one will always have the smaller objective value. If two
    +packings have the same number of bins, but one requires less space in the very
    +last bin, then that one is better. With this mechanism, we drive the search
    +towards "emptying" the last bin. If the number of items in the last bin would
    +reach `0`, that last bin would disappear - and we have one bin less.
    +
    +This objective is similar to :mod:`~moptipyapps.binpacking2d.objectives.\
    +bin_count_and_small`, with the difference that it focuses on the *last* bin
    +whereas :mod:`~moptipyapps.binpacking2d.objectives.bin_count_and_small` tries
    +to minimize the area in *any* bin.
    +"""
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from pycommons.math.int_math import ceil_div
    +
    +from moptipyapps.binpacking2d.instance import Instance
    +from moptipyapps.binpacking2d.objectives.bin_count import BinCount
    +from moptipyapps.binpacking2d.packing import (
    +    IDX_BIN,
    +    IDX_BOTTOM_Y,
    +    IDX_LEFT_X,
    +    IDX_RIGHT_X,
    +    IDX_TOP_Y,
    +)
    +
    +
    +
    +[docs] +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False) +def bin_count_and_last_small(y: np.ndarray, bin_area: int) -> int: + """ + Compute the number of bins and the occupied area in the last bin. + + We compute the total number of bins minus 1 and multiply it with the + total area of items. We then add the area of items in the last bin. + + :param y: the packing + :param bin_area: the area of a single bin + :return: the objective value + + >>> bin_count_and_last_small(np.array([[1, 1, 10, 10, 20, 20], + ... [1, 1, 30, 30, 40, 40], + ... [1, 1, 20, 20, 30, 30]], int), + ... 50*50) + 300 + >>> bin_count_and_last_small(np.array([[1, 1, 10, 10, 20, 20], + ... [1, 2, 30, 30, 40, 40], # bin 2! + ... [1, 1, 20, 20, 30, 30]], int), + ... 50*50) + 2600 + >>> bin_count_and_last_small(np.array([[1, 2, 10, 10, 20, 20], # bin 2! + ... [1, 2, 30, 30, 40, 40], # bin 2! + ... [1, 1, 20, 20, 30, 30]], int), + ... 50*50) + 2700 + >>> bin_count_and_last_small(np.array([[1, 3, 10, 10, 20, 20], # bin 3! + ... [1, 2, 30, 30, 40, 40], # bin 2! + ... [1, 1, 20, 20, 30, 30]], int), + ... 50*50) + 5100 + >>> bin_count_and_last_small(np.array([[1, 3, 10, 10, 50, 50], # bin 3! + ... [1, 2, 30, 30, 60, 60], # bin 2! + ... [1, 1, 20, 20, 30, 30]], np.int8), + ... 50*50) + 6600 + """ + current_bin: int = -1 # the current idea of what the last bin is + current_area: int = 0 # the area of items already in that bin + n_items: Final[int] = len(y) # the number of rows in the matrix + + for i in range(n_items): # iterate over all packed items + bin_idx: int = int(y[i, IDX_BIN]) # get the bin index of the item + if bin_idx < current_bin: + continue + area: int = int(y[i, IDX_RIGHT_X] - y[i, IDX_LEFT_X]) \ + * int(y[i, IDX_TOP_Y] - y[i, IDX_BOTTOM_Y]) + if bin_idx > current_bin: # it's a new biggest bin = new last bin? + current_area = area # then the current area is this + current_bin = bin_idx # and we remember it + elif bin_idx == current_bin: # did item go into the current last bin? + current_area += area # then increase size + return (bin_area * (current_bin - 1)) + current_area # return objective
    + + + +
    +[docs] +class BinCountAndLastSmall(BinCount): + """Compute the number of bins and the area in the last one.""" + + def __init__(self, instance: Instance) -> None: + """ + Initialize the objective function. + + :param instance: the instance to load the bounds from + """ + super().__init__(instance) + #: the bin size + self._bin_size: Final[int] = instance.bin_width * instance.bin_height + +
    +[docs] + def evaluate(self, x) -> int: + """ + Evaluate the objective function. + + :param x: the solution + :return: the bin size and last-bin-small-area factor + """ + return bin_count_and_last_small(x, self._bin_size)
    + + +
    +[docs] + def to_bin_count(self, z: int) -> int: + """ + Convert an objective value to a bin count. + + :param z: the objective value + :return: the bin count + """ + return ceil_div(z, self._bin_size)
    + + +
    +[docs] + def lower_bound(self) -> int: + """ + Get the lower bound of the number of bins and small-size objective. + + We know from the instance (:attr:`~moptipyapps.binpacking2d\ +.instance.Instance.lower_bound_bins`) that we require at least as many bins + such that they can accommodate the total area of all items together. + Let's call this number `lb`. Now if `lb` is one, then all objects could + be in the first bin, in which case the objective value would equal to + the total area of all items (:attr:`~moptipyapps.binpacking2d\ +.instance.Instance.total_item_area`). + If it is `lb=2`, then we know that we will need at least two bins. The + best case would be that almost all items are in the first bin and + only the smallest object is in the last bin. This means that we would + get `1 * bin_area + smallest_area` as objective value. If we have + `lb=3` bins, then we could again have all but the smallest items + distributed over the first two bins and only the smallest one in the + last bin, i.e., would get `(2 * bin_area) + smallest_area`. And so on. + + :return: `total_item_area` if the lower bound `lb` of the number of + bins is `1`, else `(lb - 1) * bin_area + smallest_area`, where + `bin_area` is the area of a bin, `total_item_area` is the area of + all items added up, and `smallest_area` is the area of the + smallest item + + >>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]]) + >>> ins.total_item_area + 84 + >>> ins.lower_bound_bins + 1 + >>> BinCountAndLastSmall(ins).lower_bound() + 84 + + >>> ins = Instance("b", 10, 50, [[10, 5, 10], [3, 3, 1], [5, 5, 1]]) + >>> ins.total_item_area + 534 + >>> ins.lower_bound_bins + 2 + >>> BinCountAndLastSmall(ins).lower_bound() + 509 + + >>> ins = Instance("c", 10, 50, [[10, 5, 10], [30, 3, 1], [5, 5, 1]]) + >>> ins.total_item_area + 615 + >>> ins.lower_bound_bins + 2 + >>> BinCountAndLastSmall(ins).lower_bound() + 525 + """ + if self._instance.lower_bound_bins == 1: + return self._instance.total_item_area + smallest_area: int = -1 + for row in self._instance: + area: int = int(row[0]) * int(row[1]) + if (smallest_area < 0) or (area < smallest_area): + smallest_area = area + return int(((self._instance.lower_bound_bins - 1) + * self._instance.bin_height + * self._instance.bin_width) + smallest_area)
    + + +
    +[docs] + def upper_bound(self) -> int: + """ + Get the upper bound of this objective function. + + :return: a very coarse estimate of the upper bound + + >>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]]) + >>> ins.n_items + 3 + >>> BinCountAndLastSmall(ins).upper_bound() + 15000 + + >>> ins = Instance("b", 10, 50, [[10, 5, 10], [3, 3, 1], [5, 5, 1]]) + >>> ins.n_items + 12 + >>> BinCountAndLastSmall(ins).upper_bound() + 6000 + + >>> ins = Instance("c", 10, 50, [[10, 5, 10], [30, 3, 1], [5, 5, 10]]) + >>> ins.n_items + 21 + >>> BinCountAndLastSmall(ins).upper_bound() + 10500 + """ + return self._instance.n_items * self._instance.bin_height \ + * self._instance.bin_width
    + + + def __str__(self) -> str: + """ + Get the name of the bins objective function. + + :return: `binCountAndLastSmall` + :retval "binCountAndLastSmall": always + """ + return "binCountAndLastSmall"
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_lowest_skyline.html b/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_lowest_skyline.html new file mode 100644 index 00000000..3cbaf982 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_lowest_skyline.html @@ -0,0 +1,176 @@ +moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline

    +"""
    +An objective function indirectly minimizing the number of bins in packings.
    +
    +This objective function minimizes the number of bins and maximizes the
    +"useable" space in any bin.
    +
    +Which space is actually useful for our encodings? Let's say we have filled
    +a bin to a certain degree and somewhere there is a "hole" in the filled area,
    +but this hole is covered by another object. The area of the hole is not used,
    +but it also cannot be used anymore. The area that we can definitely use is the
    +area above the "skyline" of the objects in the bin. The skyline at any
    +horizontal `x` coordinate be the highest border of any object that intersects
    +with `x` horizontally. In other words, it is the `y` value at and above which
    +no other object is located at this `x` coordinate. The area below the skyline
    +cannot be used anymore. The area above the skyline can.
    +
    +If we minimize the area below the skyline in the very last bin, then this will
    +a similar impact as minimizing the overall object area in the last bin (see
    +:mod:`~moptipyapps.binpacking2d.objectives.bin_count_and_last_small`). We push
    +the skyline lower and lower and, if we are lucky, the last bin eventually
    +becomes empty. This is done with the objective
    +:mod:`~moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline`.
    +
    +But we could also minimize the area under the skylines in the other bins.
    +Because a) if we can get any skyline in any bin to become 0, then this bin
    +disappears and b) if we can free up space in the bins by lowering the
    +skylines, then we have a better chance to move an object from the *next* bin
    +forward into that bin, which increases the chance to make that bin empty.
    +
    +In this objective function, we therefore use the smallest skyline area over
    +all bins to distinguish between packings of the same number of bins.
    +For all intents and purposes, it has the same lower and upper bound as the
    +:mod:`~moptipyapps.binpacking2d.objectives.bin_count_and_last_small`
    +objective.
    +"""
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +
    +from moptipyapps.binpacking2d.instance import Instance
    +from moptipyapps.binpacking2d.objectives.bin_count_and_last_small import (
    +    BinCountAndLastSmall,
    +)
    +from moptipyapps.binpacking2d.packing import (
    +    IDX_BIN,
    +    IDX_LEFT_X,
    +    IDX_RIGHT_X,
    +    IDX_TOP_Y,
    +)
    +
    +
    +
    +[docs] +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False) +def bin_count_and_lowest_skyline(y: np.ndarray, bin_width: int, + bin_height: int) -> int: + """ + Compute the bin count-1 times the bin size + the space below the skyline. + + :param y: the packing + :param bin_width: the bin width + :param bin_height: the bin height + :return: the objective value + + >>> 10*0 + 10*20 + 10*30 + 10*40 + 10*0 + 900 + >>> bin_count_and_lowest_skyline(np.array([[1, 1, 10, 10, 20, 20], + ... [1, 1, 30, 30, 40, 40], + ... [1, 1, 20, 20, 30, 30]], int), + ... 50, 50) + 900 + >>> 5 * 0 + 5 * 10 + 10 * 20 + 5 * 10 + 25 * 0 + 300 + >>> bin_count_and_lowest_skyline(np.array([[1, 1, 5, 0, 15, 10], + ... [1, 1, 10, 10, 20, 20], + ... [1, 1, 15, 0, 25, 10]], int), + ... 50, 50) + 300 + >>> 50*50 + min(5*0 + 10*10 + 10*10 + 25*0, 10*0 + 10*20 + 30*0) + 2700 + >>> bin_count_and_lowest_skyline(np.array([[1, 1, 5, 0, 15, 10], + ... [1, 2, 10, 10, 20, 20], + ... [1, 1, 15, 0, 25, 10]], int), + ... 50, 50) + 2700 + >>> 5 * 0 + 5 * 10 + 3 * 20 + (50 - 13) * 25 + 1035 + >>> bin_count_and_lowest_skyline(np.array([[1, 1, 5, 0, 15, 10], + ... [1, 1, 10, 10, 20, 20], + ... [1, 1, 15, 0, 25, 10], + ... [2, 1, 13, 20, 50, 25]], int), + ... 50, 50) + 1035 + >>> 2500*3 + min(10*10, 20*20, 25*10, 50*25) + 7600 + >>> bin_count_and_lowest_skyline(np.array([[1, 1, 0, 0, 10, 10], + ... [2, 2, 0, 0, 20, 20], + ... [3, 3, 0, 0, 25, 10], + ... [4, 4, 0, 0, 50, 25]], int), + ... 50, 50) + 7600 + """ + bins: Final[int] = int(y[:, IDX_BIN].max()) + len_y: Final[int] = len(y) + bin_size: Final[int] = bin_height * bin_width + min_area_under_skyline: int = bin_size + + for use_bin in range(1, bins + 1): + cur_left: int = 0 + area_under_skyline: int = 0 + while cur_left < bin_width: + use_right = next_left = bin_width + use_top: int = 0 + for i in range(len_y): + if y[i, IDX_BIN] != use_bin: + continue + left: int = int(y[i, IDX_LEFT_X]) + right: int = int(y[i, IDX_RIGHT_X]) + top: int = int(y[i, IDX_TOP_Y]) + if left <= cur_left < right and top > use_top: + use_top = top + use_right = right + if cur_left < left < next_left: + next_left = left + + use_right = min(use_right, next_left) + area_under_skyline += (use_right - cur_left) * use_top + cur_left = use_right + min_area_under_skyline = min(min_area_under_skyline, + area_under_skyline) + return ((bins - 1) * bin_size) + min_area_under_skyline
    + + + +
    +[docs] +class BinCountAndLowestSkyline(BinCountAndLastSmall): + """Compute the number of bins and the largest useful area.""" + + def __init__(self, instance: Instance) -> None: + """ + Initialize the objective function. + + :param instance: the instance to load the bounds from + """ + super().__init__(instance) + #: the bin width + self.__bin_width: Final[int] = instance.bin_width + #: the bin height + self.__bin_height: Final[int] = instance.bin_height + +
    +[docs] + def evaluate(self, x) -> int: + """ + Evaluate the objective function. + + :param x: the solution + :return: the bin size and last-bin-small-area factor + """ + return bin_count_and_lowest_skyline( + x, self.__bin_width, self.__bin_height)
    + + + def __str__(self) -> str: + """ + Get the name of the bins objective function. + + :return: `binCountAndLowestSkyline` + :retval "binCountAndLowestSkyline": always + """ + return "binCountAndLowestSkyline"
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_small.html b/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_small.html new file mode 100644 index 00000000..90071833 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/objectives/bin_count_and_small.html @@ -0,0 +1,135 @@ +moptipyapps.binpacking2d.objectives.bin_count_and_small — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.objectives.bin_count_and_small

    +"""
    +An objective function indirectly minimizing the number of bins in packings.
    +
    +This objective function computes the number of bins used. Let's call it
    +`n_bins`. We know the area `bin_area` of a bin as well. We then compute the
    +minimum area occupied in any bin, `min_area`. Now we return
    +`(bin_area * (n_bins - 1)) + min_area`.
    +
    +This function always prefers a packing that has fewer bins over a packing
    +with more bins duw to the term `bin_area * (n_bins - 1)` and
    +`bin_area >= min_area` (let us ignore the case where `bin_area == min_area`,
    +which does not make practical sense). Since `min_area < bin_area` in all
    +practically relevant cases, the offset `min_area` just distinguishes
    +packings that have same number of bins. Amongst such packings, those whose
    +least-occupied bin is closer to being empty are preferred (regardless where
    +this bin is). The idea is that this will eventually allow us to get rid of
    +that least-occupied bin in subsequent optimization steps, i.e., to reduce
    +the number of bins.
    +
    +This is similar to the :mod:`~moptipyapps.binpacking2d.objectives.\
    +bin_count_and_small` objective, except that we do not try to expunge the last
    +bin, but any bin. It has the same lower and upper bound, though.
    +"""
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +
    +from moptipyapps.binpacking2d.instance import Instance
    +from moptipyapps.binpacking2d.objectives.bin_count_and_last_small import (
    +    BinCountAndLastSmall,
    +)
    +from moptipyapps.binpacking2d.packing import (
    +    IDX_BIN,
    +    IDX_BOTTOM_Y,
    +    IDX_LEFT_X,
    +    IDX_RIGHT_X,
    +    IDX_TOP_Y,
    +)
    +
    +
    +
    +[docs] +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False) +def bin_count_and_small(y: np.ndarray, bin_area: int, + temp: np.ndarray) -> int: + """ + Compute the number of bins and the smallest occupied area in any bin. + + We compute the total number of bins minus 1 and multiply it with the + total area of items. We then add the area of items in the smallest bin. + + :param y: the packing + :param bin_area: the area of a single bin + :param temp: a temporary array to hold the current area counters + :return: the objective value + + >>> tempa = np.empty(10, int) + >>> bin_count_and_small(np.array([[1, 1, 10, 10, 20, 20], + ... [1, 1, 30, 30, 40, 40], + ... [1, 1, 20, 20, 30, 30]], int), + ... 50*50, tempa) + 300 + >>> bin_count_and_small(np.array([[1, 1, 10, 10, 20, 20], + ... [1, 2, 30, 30, 40, 40], # bin 2! + ... [1, 1, 20, 20, 30, 30]], int), + ... 50*50, tempa) + 2600 + >>> bin_count_and_small(np.array([[1, 2, 10, 10, 20, 20], # bin 2! + ... [1, 2, 30, 30, 40, 40], # bin 2! + ... [1, 1, 20, 20, 30, 30]], int), + ... 50*50, tempa) + 2600 + >>> bin_count_and_small(np.array([[1, 3, 10, 10, 20, 20], # bin 3! + ... [1, 2, 30, 30, 40, 40], # bin 2! + ... [1, 1, 20, 20, 30, 30]], int), + ... 50*50, tempa) + 5100 + >>> bin_count_and_small(np.array([[1, 3, 10, 10, 50, 50], # bin 3! + ... [1, 2, 30, 30, 60, 60], # bin 2! + ... [1, 1, 20, 20, 30, 30]], np.int8), + ... 50*50, tempa) + 5100 + """ + total_bins: int = 0 # the current idea of the number of bins + n_items: Final[int] = len(y) # the number of rows in the matrix + temp.fill(0) # fill temp with zeros + + for i in range(n_items): # iterate over all packed items + bin_idx: int = int(y[i, IDX_BIN]) - 1 # get the bin index of the item + temp[bin_idx] += ((y[i, IDX_RIGHT_X] - y[i, IDX_LEFT_X]) + * (y[i, IDX_TOP_Y] - y[i, IDX_BOTTOM_Y])) + total_bins = max(total_bins, bin_idx) + return (bin_area * total_bins) + temp[0:total_bins + 1].min()
    + + + +
    +[docs] +class BinCountAndSmall(BinCountAndLastSmall): + """Compute the number of bins and the area in the smallest one.""" + + def __init__(self, instance: Instance) -> None: + """ + Initialize the objective function. + + :param instance: the instance to load the bounds from + """ + super().__init__(instance) + #: the internal temporary array + self.__temp: Final[np.ndarray] = np.empty(instance.n_items, int) + +
    +[docs] + def evaluate(self, x) -> int: + """ + Evaluate the objective function. + + :param x: the solution + :return: the bin size and smallest-bin-area factor + """ + return bin_count_and_small(x, self._bin_size, self.__temp)
    + + + def __str__(self) -> str: + """ + Get the name of the bins objective function. + + :return: `binCountAndSmall` + :retval "binCountAndSmall": always + """ + return "binCountAndSmall"
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/packing.html b/_modules/moptipyapps/binpacking2d/packing.html new file mode 100644 index 00000000..53c85fa0 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/packing.html @@ -0,0 +1,167 @@ +moptipyapps.binpacking2d.packing — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.packing

    +"""A two-dimensional packing."""
    +
    +from typing import Final
    +
    +import numpy as np
    +from moptipy.api.component import Component
    +from moptipy.api.logging import SECTION_RESULT_Y, SECTION_SETUP
    +from moptipy.evaluation.log_parser import LogParser
    +from pycommons.types import type_error
    +
    +from moptipyapps.binpacking2d.instance import Instance
    +
    +#: the index of the ID in a :class:`Packing` row
    +IDX_ID: Final[int] = 0
    +#: the index of the bin in a :class:`Packing` row
    +IDX_BIN: Final[int] = 1
    +#: the index of the left x coordinate in a :class:`Packing` row
    +IDX_LEFT_X: Final[int] = 2
    +#: the index of the bottom y coordinate in a :class:`Packing` row
    +IDX_BOTTOM_Y: Final[int] = 3
    +#: the index of the right x coordinate in a :class:`Packing` row
    +IDX_RIGHT_X: Final[int] = 4
    +#: the index of the top y coordinate in a :class:`Packing` row
    +IDX_TOP_Y: Final[int] = 5
    +
    +
    +
    +[docs] +class Packing(Component, np.ndarray): + """ + A packing, i.e., a solution to an 2D bin packing instance. + + A packing is a two-dimensional numpy array. In each row, the position of + one item is stored: 1. the item ID (starts at 1), 2. the bin into which + the item is packaged (starts at 1), 3. the left x coordinate, 4. the + bottom y coordinate, 5. the right x coordinate, 6. the top y coordinate. + """ + + #: the 2d bin packing instance + instance: Instance + #: the number of bins + n_bins: int + + def __new__(cls, instance: Instance) -> "Packing": + """ + Create a solution record for the 2D bin packing problem. + + :param cls: the class + :param instance: the solution record + """ + if not isinstance(instance, Instance): + raise type_error(instance, "instance", Instance) + obj: Final[Packing] = super().__new__( + cls, (instance.n_items, 6), instance.dtype) + #: the 2d bin packing instance + obj.instance = instance + #: the number of bins + obj.n_bins = -1 + return obj + + def __str__(self): + """ + Convert the packing to a compact string. + + :return: the compact string + """ + return "\n".join(";".join(str(self[i, j]) for j in range(6)) + for i in range(self.shape[0])) + +
    +[docs] + @staticmethod + def from_log(file: str, instance: Instance | None = None) -> "Packing": + """ + Load a packing from a log file. + + :param file: the log file path + :param instance: the optional Packing instance: if `None` is provided, + we try to load it from the resources + :returns: the Packing + """ + parser: Final[_PackingParser] = _PackingParser(instance) + parser.parse_file(file) + # noinspection PyProtectedMember + res = parser._result + if not isinstance(res, Packing): + raise type_error(res, f"packing from {file!r}", Packing) + return res
    +
    + + + +class _PackingParser(LogParser): + """The log parser for loading packings.""" + + def __init__(self, instance: Instance | None = None): + """ + Create the packing parser. + + :param instance: the optional packing instance: if `None` is provided, + we try to load it from the resources + """ + super().__init__() + if (instance is not None) and (not isinstance(instance, Instance)): + raise type_error(instance, "instance", Instance) + #: the internal instance + self.__instance: Instance | None = instance + #: the internal section mode: 0=none, 1=setup, 2=y + self.__sec_mode: int = 0 + #: the packing string + self.__packing_str: str | None = None + #: the result packing + self._result: Packing | None = None + + def start_section(self, title: str) -> bool: + """Start a section.""" + super().start_section(title) + self.__sec_mode = 0 + if title == SECTION_SETUP: + if self.__instance is None: + self.__sec_mode = 1 + return True + return False + if title == SECTION_RESULT_Y: + self.__sec_mode = 2 + return True + return False + + def lines(self, lines: list[str]) -> bool: + """Parse the lines.""" + if self.__sec_mode == 1: + if self.__instance is not None: + raise ValueError( + f"instance is already set to {self.__instance}.") + key_1: Final[str] = "y.inst.name: " + for line in lines: + if line.startswith(key_1): + self.__instance = Instance.from_resource( + line[len(key_1):].strip()) + if self.__instance is None: + raise ValueError(f"Did not find instance key {key_1!r} " + f"in section {SECTION_SETUP}!") + elif self.__sec_mode == 2: + self.__packing_str = " ".join(lines).strip() + else: + raise ValueError("Should not be in section?") + return (self.__instance is None) or (self.__packing_str is None) + + def end_file(self) -> bool: + """End the file.""" + if self.__packing_str is None: + raise ValueError(f"Section {SECTION_RESULT_Y} missing!") + if self.__instance is None: + raise ValueError(f"Section {SECTION_SETUP} missing or empty!") + if self._result is not None: + raise ValueError("Applied parser to more than one log file?") + # pylint: disable=C0415,R0401 + from moptipyapps.binpacking2d.packing_space import ( + PackingSpace, # pylint: disable=C0415,R0401 + ) + + self._result = PackingSpace(self.__instance)\ + .from_str(self.__packing_str) + self.__packing_str = None + return False +
    diff --git a/_modules/moptipyapps/binpacking2d/packing_result.html b/_modules/moptipyapps/binpacking2d/packing_result.html new file mode 100644 index 00000000..33aba4f9 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/packing_result.html @@ -0,0 +1,760 @@ +moptipyapps.binpacking2d.packing_result — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.packing_result

    +"""
    +An extended end result record to represent packings.
    +
    +This class extends the information provided by
    +:mod:`~moptipy.evaluation.end_results`. It allows us to compare the results
    +of experiments over different objective functions. It also represents the
    +bounds for the number of bins and for the objective functions. It also
    +includes the problem-specific information of two-dimensional bin packing
    +instances.
    +"""
    +import argparse
    +from dataclasses import dataclass
    +from math import isfinite
    +from typing import Any, Callable, Final, Iterable, Mapping, cast
    +
    +from moptipy.api.objective import Objective
    +from moptipy.evaluation.base import (
    +    EvaluationDataElement,
    +)
    +from moptipy.evaluation.end_results import CsvReader as ErCsvReader
    +from moptipy.evaluation.end_results import CsvWriter as ErCsvWriter
    +from moptipy.evaluation.end_results import EndResult
    +from moptipy.evaluation.end_results import from_logs as er_from_logs
    +from moptipy.evaluation.log_parser import LogParser
    +from pycommons.ds.immutable_map import immutable_mapping
    +from pycommons.ds.sequences import reiterable
    +from pycommons.io.console import logger
    +from pycommons.io.csv import (
    +    SCOPE_SEPARATOR,
    +    csv_column,
    +    csv_read,
    +    csv_scope,
    +    csv_select_scope,
    +    csv_write,
    +)
    +from pycommons.io.path import Path, file_path, line_writer
    +from pycommons.strings.string_conv import (
    +    num_to_str,
    +    str_to_num,
    +)
    +from pycommons.types import check_int_range, type_error
    +
    +from moptipyapps.binpacking2d.instance import (
    +    Instance,
    +    _lower_bound_damv,
    +)
    +from moptipyapps.binpacking2d.objectives.bin_count import (
    +    BIN_COUNT_NAME,
    +    BinCount,
    +)
    +from moptipyapps.binpacking2d.objectives.bin_count_and_empty import (
    +    BinCountAndEmpty,
    +)
    +from moptipyapps.binpacking2d.objectives.bin_count_and_last_empty import (
    +    BinCountAndLastEmpty,
    +)
    +from moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline import (
    +    BinCountAndLastSkyline,
    +)
    +from moptipyapps.binpacking2d.objectives.bin_count_and_last_small import (
    +    BinCountAndLastSmall,
    +)
    +from moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline import (
    +    BinCountAndLowestSkyline,
    +)
    +from moptipyapps.binpacking2d.objectives.bin_count_and_small import (
    +    BinCountAndSmall,
    +)
    +from moptipyapps.binpacking2d.packing import Packing
    +from moptipyapps.shared import (
    +    moptipyapps_argparser,
    +    motipyapps_footer_bottom_comments,
    +)
    +
    +#: the number of items
    +KEY_N_ITEMS: Final[str] = "nItems"
    +#: the number of different items
    +KEY_N_DIFFERENT_ITEMS: Final[str] = "nDifferentItems"
    +#: the bin width
    +KEY_BIN_WIDTH: Final[str] = "binWidth"
    +#: the bin height
    +KEY_BIN_HEIGHT: Final[str] = "binHeight"
    +
    +
    +#: the default objective functions
    +DEFAULT_OBJECTIVES: Final[tuple[Callable[[Instance], Objective], ...]] = (
    +    BinCount, BinCountAndLastEmpty, BinCountAndLastSmall,
    +    BinCountAndLastSkyline, BinCountAndEmpty, BinCountAndSmall,
    +    BinCountAndLowestSkyline)
    +
    +
    +def __lb_geometric(inst: Instance) -> int:
    +    """
    +    Compute the geometric lower bound.
    +
    +    :param inst: the instance
    +    :return: the lower bound
    +    """
    +    area: Final[int] = sum(int(row[0]) * int(row[1]) * int(row[2])
    +                           for row in inst)
    +    bin_size: Final[int] = inst.bin_width * inst.bin_height
    +    res: int = area // bin_size
    +    return (res + 1) if ((res * bin_size) != area) else res
    +
    +
    +#: the lower bound of an objective
    +_OBJECTIVE_LOWER: Final[str] = "lowerBound"
    +#: the upper bound of an objective
    +_OBJECTIVE_UPPER: Final[str] = "upperBound"
    +#: the start string for bin bounds
    +LOWER_BOUNDS_BIN_COUNT: Final[str] = csv_scope("bins", _OBJECTIVE_LOWER)
    +#: the default bounds
    +_DEFAULT_BOUNDS: Final[Mapping[str, Callable[[Instance], int]]] = \
    +    immutable_mapping({
    +        LOWER_BOUNDS_BIN_COUNT: lambda i: i.lower_bound_bins,
    +        csv_scope(LOWER_BOUNDS_BIN_COUNT, "geometric"): __lb_geometric,
    +        csv_scope(LOWER_BOUNDS_BIN_COUNT, "damv"): lambda i: _lower_bound_damv(
    +            i.bin_width, i.bin_height, i),
    +    })
    +
    +
    +
    +[docs] +@dataclass(frozen=True, init=False, order=False, eq=False) +class PackingResult(EvaluationDataElement): + """ + An end result record of one run of one packing algorithm on one problem. + + This record provides the information of the outcome of one application of + one algorithm to one problem instance in an immutable way. + """ + + #: the original end result record + end_result: EndResult + #: the number of items in the instance + n_items: int + #: the number of different items in the instance + n_different_items: int + #: the bin width + bin_width: int + #: the bin height + bin_height: int + #: the objective values evaluated after the optimization + objectives: Mapping[str, int | float] + #: the bounds for the objective values (append ".lowerBound" and + #: ".upperBound" to all objective function names) + objective_bounds: Mapping[str, int | float] + #: the bounds for the minimum number of bins of the instance + bin_bounds: Mapping[str, int] + + def __init__(self, + end_result: EndResult, + n_items: int, + n_different_items: int, + bin_width: int, + bin_height: int, + objectives: Mapping[str, int | float], + objective_bounds: Mapping[str, int | float], + bin_bounds: Mapping[str, int]): + """ + Create a consistent instance of :class:`PackingResult`. + + :param end_result: the end result + :param n_items: the number of items + :param n_different_items: the number of different items + :param bin_width: the bin width + :param bin_height: the bin height + :param objectives: the objective values computed after the + optimization + :param bin_bounds: the different bounds for the number of bins + :param objective_bounds: the bounds for the objective functions + :raises TypeError: if any parameter has a wrong type + :raises ValueError: if the parameter values are inconsistent + """ + super().__init__() + if not isinstance(end_result, EndResult): + raise type_error(end_result, "end_result", EndResult) + if end_result.best_f != objectives[end_result.objective]: + raise ValueError( + f"end_result.best_f={end_result.best_f}, but objectives[" + f"{end_result.objective!r}]=" + f"{objectives[end_result.objective]}.") + if not isinstance(objectives, Mapping): + raise type_error(objectives, "objectives", Mapping) + if not isinstance(objective_bounds, Mapping): + raise type_error(objective_bounds, "objective_bounds", Mapping) + if not isinstance(bin_bounds, Mapping): + raise type_error(bin_bounds, "bin_bounds", Mapping) + if len(objective_bounds) != (2 * len(objectives)): + raise ValueError(f"it is required that there is a lower and an " + f"upper bound for each of the {len(objectives)} " + f"functions, but we got {len(objective_bounds)} " + f"bounds, objectives={objectives}, " + f"objective_bounds={objective_bounds}.") + + for name, value in objectives.items(): + if not isinstance(name, str): + raise type_error( + name, f"name of evaluation[{name!r}]={value!r}", str) + if not isinstance(value, int | float): + raise type_error( + value, f"value of evaluation[{name!r}]={value!r}", + (int, float)) + if not isfinite(value): + raise ValueError( + f"non-finite value of evaluation[{name!r}]={value!r}") + lll: str = csv_scope(name, _OBJECTIVE_LOWER) + lower = objective_bounds[lll] + if not isfinite(lower): + raise ValueError(f"{lll}=={lower}.") + uuu = csv_scope(name, _OBJECTIVE_UPPER) + upper = objective_bounds[uuu] + if not (lower <= value <= upper): + raise ValueError( + f"it is required that {lll}<=f<={uuu}, but got " + f"{lower}, {value}, and {upper}.") + + bins: Final[int | None] = cast(int, objectives[BIN_COUNT_NAME]) \ + if BIN_COUNT_NAME in objectives else None + for name, value in bin_bounds.items(): + if not isinstance(name, str): + raise type_error( + name, f"name of bounds[{name!r}]={value!r}", str) + check_int_range(value, f"bounds[{name!r}]", 1, 1_000_000_000) + if (bins is not None) and (bins < value): + raise ValueError( + f"number of bins={bins} is inconsistent with " + f"bound {name!r}={value}.") + + object.__setattr__(self, "end_result", end_result) + object.__setattr__(self, "objectives", immutable_mapping(objectives)) + object.__setattr__(self, "objective_bounds", + immutable_mapping(objective_bounds)) + object.__setattr__(self, "bin_bounds", immutable_mapping(bin_bounds)) + object.__setattr__(self, "n_different_items", check_int_range( + n_different_items, "n_different_items", 1, 1_000_000_000_000)) + object.__setattr__(self, "n_items", check_int_range( + n_items, "n_items", n_different_items, 1_000_000_000_000)) + object.__setattr__(self, "bin_width", check_int_range( + bin_width, "bin_width", 1, 1_000_000_000_000)) + object.__setattr__(self, "bin_height", check_int_range( + bin_height, "bin_height", 1, 1_000_000_000_000)) + + def _tuple(self) -> tuple[Any, ...]: + """ + Create a tuple with all the data of this data class for comparison. + + :returns: a tuple with all the data of this class, where `None` values + are masked out + """ + # noinspection PyProtectedMember + return self.end_result._tuple()
    + + + +
    +[docs] +def from_packing_and_end_result( # pylint: disable=W0102 + end_result: EndResult, packing: Packing, + objectives: Iterable[Callable[[Instance], Objective]] = + DEFAULT_OBJECTIVES, + bin_bounds: Mapping[str, Callable[[Instance], int]] = + _DEFAULT_BOUNDS, + cache: Mapping[str, tuple[Mapping[str, int], tuple[ + Objective, ...], Mapping[str, int | float]]] | None = + None) -> PackingResult: + """ + Create a `PackingResult` from an `EndResult` and a `Packing`. + + :param end_result: the end results record + :param packing: the packing + :param bin_bounds: the bounds computing functions + :param objectives: the objective function factories + :param cache: a cache that can store stuff if this function is to be + called repeatedly + :return: the packing result + """ + if not isinstance(end_result, EndResult): + raise type_error(end_result, "end_result", EndResult) + if not isinstance(packing, Packing): + raise type_error(packing, "packing", Packing) + if not isinstance(objectives, Iterable): + raise type_error(objectives, "objectives", Iterable) + if not isinstance(bin_bounds, Mapping): + raise type_error(bin_bounds, "bin_bounds", Mapping) + if (cache is not None) and (not isinstance(cache, dict)): + raise type_error(cache, "cache", (None, dict)) + + instance: Final[Instance] = packing.instance + if instance.name != end_result.instance: + raise ValueError( + f"packing.instance.name={instance.name!r}, but " + f"end_result.instance={end_result.instance!r}.") + + row: tuple[Mapping[str, int], tuple[Objective, ...], + Mapping[str, int | float]] | None = None \ + if (cache is None) else cache.get(instance.name, None) + if row is None: + objfs = tuple(sorted((obj(instance) for obj in objectives), + key=str)) + obounds = {} + for objf in objfs: + obounds[csv_scope(str(objf), _OBJECTIVE_LOWER)] = \ + objf.lower_bound() + obounds[csv_scope(str(objf), _OBJECTIVE_UPPER)] = \ + objf.upper_bound() + row = ({key: bin_bounds[key](instance) + for key in sorted(bin_bounds.keys())}, objfs, + immutable_mapping(obounds)) + if cache is not None: + cache[instance.name] = row + + objective_values: dict[str, int | float] = {} + bin_count: int = -1 + bin_count_obj: str = "" + for objf in row[1]: + z: int | float = objf.evaluate(packing) + objfn: str = str(objf) + objective_values[objfn] = z + if not isinstance(z, int): + continue + if not isinstance(objf, BinCount): + continue + bc: int = objf.to_bin_count(z) + if bin_count == -1: + bin_count = bc + bin_count_obj = objfn + elif bin_count != bc: + raise ValueError( + f"found bin count disagreement: {bin_count} of " + f"{bin_count_obj!r} != {bc} of {objf!r}") + + return PackingResult( + end_result=end_result, + n_items=instance.n_items, + n_different_items=instance.n_different_items, + bin_width=instance.bin_width, bin_height=instance.bin_height, + objectives=objective_values, + objective_bounds=row[2], + bin_bounds=row[0])
    + + + +
    +[docs] +def from_single_log( # pylint: disable=W0102 + file: str, + objectives: Iterable[Callable[[Instance], Objective]] = + DEFAULT_OBJECTIVES, + bin_bounds: Mapping[str, Callable[[Instance], int]] = + _DEFAULT_BOUNDS, + cache: Mapping[str, tuple[Mapping[str, int], tuple[ + Objective, ...], Mapping[str, int | float]]] | None = + None) -> PackingResult: + """ + Create a `PackingResult` from a file. + + :param file: the file path + :param objectives: the objective function factories + :param bin_bounds: the bounds computing functions + :param cache: a cache that can store stuff if this function is to be + called repeatedly + :return: the packing result + """ + the_file_path = file_path(file) + end_results: Final[list[EndResult]] = [] + er_from_logs(the_file_path, end_results.append) + if len(end_results) != 1: + raise ValueError( + f"needs one end result record in file {the_file_path!r}, " + f"but got {end_results}.") + + packing = Packing.from_log(the_file_path) + if not isinstance(packing, Packing): + raise type_error(packing, f"packing from {file!r}", Packing) + return from_packing_and_end_result( + end_result=end_results[0], packing=packing, + objectives=objectives, bin_bounds=bin_bounds, cache=cache)
    + + + +
    +[docs] +def from_logs( # pylint: disable=W0102 + directory: str, + consumer: Callable[[PackingResult], None], + objectives: Iterable[Callable[[Instance], Objective]] = + DEFAULT_OBJECTIVES, + bin_bounds: Mapping[str, Callable[[Instance], int]] + = _DEFAULT_BOUNDS) -> None: + """ + Parse a directory recursively to get all packing results. + + :param directory: the directory to parse + :param consumer: the consumer for receiving the results + :param objectives: the objective function factories + :param bin_bounds: the bin bounds calculators + """ + __LogParser(consumer, objectives, bin_bounds).parse_dir(directory)
    + + + +
    +[docs] +def to_csv(results: Iterable[PackingResult], file: str) -> Path: + """ + Write a sequence of packing results to a file in CSV format. + + :param results: the end results + :param file: the path + :return: the path of the file that was written + """ + path: Final[Path] = Path(file) + logger(f"Writing packing results to CSV file {path!r}.") + path.ensure_parent_dir_exists() + with path.open_for_write() as wt: + consumer: Final[Callable[[str], None]] = line_writer(wt) + for p in csv_write( + data=sorted(results), + setup=CsvWriter().setup, + column_titles=CsvWriter.get_column_titles, + get_row=CsvWriter.get_row, + header_comments=CsvWriter.get_header_comments, + footer_comments=CsvWriter.get_footer_comments, + footer_bottom_comments=CsvWriter.get_footer_bottom_comments): + consumer(p) + logger(f"Done writing packing results to CSV file {path!r}.") + return path
    + + + +
    +[docs] +def from_csv(file: str) -> Iterable[PackingResult]: + """ + Load the packing results from a CSV file. + + :param file: the file to read from + :returns: the iterable with the packing result + """ + path: Final[Path] = file_path(file) + logger(f"Now reading CSV file {path!r}.") + with path.open_for_read() as rd: + yield from csv_read( + rows=rd, setup=CsvReader, parse_row=CsvReader.parse_row) + logger(f"Done reading CSV file {path!r}.")
    + + + +
    +[docs] +class CsvWriter: + """A class for CSV writing of :class:`PackingResult`.""" + + def __init__(self, scope: str | None = None) -> None: + """ + Initialize the csv writer. + + :param scope: the prefix to be pre-pended to all columns + """ + #: an optional scope + self.scope: Final[str | None] = ( + str.strip(scope)) if scope is not None else None + + #: has this writer been set up? + self.__setup: bool = False + #: the end result writer + self.__er: Final[ErCsvWriter] = ErCsvWriter(scope) + #: the bin bounds + self.__bin_bounds: list[str] | None = None + #: the objectives + self.__objectives: list[str] | None = None + +
    +[docs] + def setup(self, data: Iterable[PackingResult]) -> "CsvWriter": + """ + Set up this csv writer based on existing data. + + :param data: the data to setup with + :returns: this writer + """ + if self.__setup: + raise ValueError("CSV writer has already been set up.") + self.__setup = True + + data = reiterable(data) + self.__er.setup(pr.end_result for pr in data) + + bin_bounds_set: Final[set[str]] = set() + objectives_set: Final[set[str]] = set() + for pr in data: + bin_bounds_set.update(pr.bin_bounds.keys()) + objectives_set.update(pr.objectives.keys()) + if set.__len__(bin_bounds_set) > 0: + self.__bin_bounds = sorted(bin_bounds_set) + if set.__len__(objectives_set) > 0: + self.__objectives = sorted(objectives_set) + + return self
    + + +
    +[docs] + def get_column_titles(self) -> Iterable[str]: + """ + Get the column titles. + + :returns: the column titles + """ + p: Final[str] = self.scope + yield from self.__er.get_column_titles() + + yield csv_scope(p, KEY_BIN_HEIGHT) + yield csv_scope(p, KEY_BIN_WIDTH) + yield csv_scope(p, KEY_N_ITEMS) + yield csv_scope(p, KEY_N_DIFFERENT_ITEMS) + if self.__bin_bounds: + for b in self.__bin_bounds: + yield csv_scope(p, b) + if self.__objectives: + for o in self.__objectives: + oo: str = csv_scope(p, o) + yield csv_scope(oo, _OBJECTIVE_LOWER) + yield oo + yield csv_scope(oo, _OBJECTIVE_UPPER)
    + + +
    +[docs] + def get_row(self, data: PackingResult) -> Iterable[str]: + """ + Render a single packing result record to a CSV row. + + :param data: the end result record + :returns: the iterable with the row data + """ + yield from self.__er.get_row(data.end_result) + yield repr(data.bin_height) + yield repr(data.bin_width) + yield repr(data.n_items) + yield repr(data.n_different_items) + if self.__bin_bounds: + for bb in self.__bin_bounds: + yield (repr(data.bin_bounds[bb]) + if bb in data.bin_bounds else "") + if self.__objectives: + for ob in self.__objectives: + ox = csv_scope(ob, _OBJECTIVE_LOWER) + yield (num_to_str(data.objective_bounds[ox]) + if ox in data.objective_bounds else "") + yield (num_to_str(data.objectives[ob]) + if ob in data.objectives else "") + ox = csv_scope(ob, _OBJECTIVE_UPPER) + yield (num_to_str(data.objective_bounds[ox]) + if ox in data.objective_bounds else "")
    + + +
    +[docs] + def get_header_comments(self) -> Iterable[str]: + """ + Get any possible header comments. + + :returns: the header comments + """ + return ("End Results of Bin Packing Experiments", + "See the description at the bottom of the file.")
    + + + + + + +
    + + + +
    +[docs] +class CsvReader: + """A class for CSV reading of :class:`PackingResult` instances.""" + + def __init__(self, columns: dict[str, int]) -> None: + """ + Create a CSV parser for :class:`EndResult`. + + :param columns: the columns + """ + super().__init__() + #: the end result csv reader + self.__er: Final[ErCsvReader] = ErCsvReader(columns) + #: the index of the n-items column + self.__idx_n_items: Final[int] = csv_column(columns, KEY_N_ITEMS) + #: the index of the n different items column + self.__idx_n_different: Final[int] = csv_column( + columns, KEY_N_DIFFERENT_ITEMS) + #: the index of the bin width column + self.__idx_bin_width: Final[int] = csv_column(columns, KEY_BIN_WIDTH) + #: the index of the bin height column + self.__idx_bin_height: Final[int] = csv_column( + columns, KEY_BIN_HEIGHT) + #: the indices for the objective bounds + self.__bin_bounds: Final[tuple[tuple[str, int], ...]] = \ + csv_select_scope( + lambda x: tuple(sorted(((k, v) for k, v in x.items()))), + columns, LOWER_BOUNDS_BIN_COUNT) + #: the objective bounds + self.__objective_bounds: Final[tuple[tuple[str, int], ...]] = \ + csv_select_scope( + lambda x: tuple(sorted(((k, v) for k, v in x.items()))), + columns, None, + skip_orig_key=lambda s: not str.endswith( + s, (_OBJECTIVE_LOWER, _OBJECTIVE_UPPER))) + n_bounds: Final[int] = tuple.__len__(self.__objective_bounds) + if n_bounds <= 0: + raise ValueError("No objective function bounds found?") + if (n_bounds & 1) != 0: + raise ValueError(f"Number of bounds {n_bounds} should be even.") + #: the parsers for the objective values + self.__objectives: Final[tuple[tuple[str, int], ...]] = \ + tuple((ss, csv_column(columns, ss)) + for ss in sorted({s[0] for s in (str.split( + kk[0], SCOPE_SEPARATOR) for kk in + self.__objective_bounds) if (list.__len__(s) > 1) + and (str.__len__(s[0]) > 0)})) + n_objectives: Final[int] = tuple.__len__(self.__objectives) + if n_objectives <= 0: + raise ValueError("No objectives found?") + if (2 * n_objectives) != n_bounds: + raise ValueError( + f"Number {n_objectives} of objectives " + f"inconsistent with number {n_bounds} of bounds.") + +
    +[docs] + def parse_row(self, data: list[str]) -> PackingResult: + """ + Parse a row of data. + + :param data: the data row + :return: the end result statistics + """ + return PackingResult( + self.__er.parse_row(data), + int(data[self.__idx_n_items]), + int(data[self.__idx_n_different]), + int(data[self.__idx_bin_width]), + int(data[self.__idx_bin_height]), + {n: str_to_num(data[i]) for n, i in self.__objectives + if str.__len__(data[i]) > 0}, + {n: str_to_num(data[i]) for n, i in self.__objective_bounds + if str.__len__(data[i]) > 0}, + {n: int(data[i]) for n, i in self.__bin_bounds + if str.__len__(data[i]) > 0})
    +
    + + + +class __LogParser(LogParser): + """The internal log parser class.""" + + def __init__(self, consumer: Callable[[PackingResult], None], + objectives: Iterable[Callable[[Instance], Objective]], + bin_bounds: Mapping[str, Callable[[Instance], int]]) -> None: + """ + Parse a directory recursively to get all packing results. + + :param consumer: the consumer for receiving the results + :param objectives: the objective function factories + :param bin_bounds: the bin bounds calculators + """ + super().__init__() + if not callable(consumer): + raise type_error(consumer, "consumer", call=True) + if not isinstance(objectives, Iterable): + raise type_error(objectives, "objectives", Iterable) + if not isinstance(bin_bounds, Mapping): + raise type_error(bin_bounds, "bin_bounds", Mapping) + #: the internal consumer + self.__consumer: Final[Callable[[PackingResult], None]] = consumer + #: the objectives holder + self.__objectives: Final[ + Iterable[Callable[[Instance], Objective]]] = objectives + #: the bin bounds + self.__bin_bounds: Final[ + Mapping[str, Callable[[Instance], int]]] = bin_bounds + #: the internal cache + self.__cache: Final[Mapping[ + str, tuple[Mapping[str, int], tuple[ + Objective, ...], Mapping[str, int | float]]]] = {} + + def parse_file(self, path: str) -> bool: + """ + Parse a log file. + + :param path: the path to the log file + :return: `True` + """ + self.__consumer(from_single_log(path, self.__objectives, + self.__bin_bounds, self.__cache)) + return True + + +# Evaluate an experiment from the command line + +# Run log files to end results if executed as script +if __name__ == "__main__": + parser: Final[argparse.ArgumentParser] = moptipyapps_argparser( + __file__, + "Convert log files for the bin packing experiment to a CSV file.", + "Re-evaluate all results based on different objective functions.") + parser.add_argument( + "source", nargs="?", default="./results", + help="the location of the experimental results, i.e., the root folder " + "under which to search for log files", type=Path) + parser.add_argument( + "dest", help="the path to the end results CSV file to be created", + type=Path, nargs="?", default="./evaluation/end_results.txt") + args: Final[argparse.Namespace] = parser.parse_args() + + packing_results: Final[list[PackingResult]] = [] + from_logs(args.source, packing_results.append) + to_csv(packing_results, args.dest) +
    diff --git a/_modules/moptipyapps/binpacking2d/packing_space.html b/_modules/moptipyapps/binpacking2d/packing_space.html new file mode 100644 index 00000000..4eca1ebd --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/packing_space.html @@ -0,0 +1,373 @@ +moptipyapps.binpacking2d.packing_space — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.packing_space

    +"""
    +Here we provide a :class:`~moptipy.api.space.Space` of bin packings.
    +
    +The bin packing object is defined in module
    +:mod:`~moptipyapps.binpacking2d.packing`. Basically, it is a
    +two-dimensional numpy array holding, for each item, its ID, its bin ID, as
    +well as its location defined by four coordinates.
    +
    +1. Dequan Liu and Hongfei Teng. An Improved BL-Algorithm for Genetic Algorithm
    +   of the Orthogonal Packing of Rectangles. European Journal of Operational
    +   Research. 112(2):413-420. January (1999).
    +   https://doi.org/10.1016/S0377-2217(97)00437-2.
    +   http://www.paper.edu.cn/scholar/showpdf/MUT2AN0IOTD0Mxxh.
    +"""
    +from collections import Counter
    +from math import factorial
    +from typing import Final
    +
    +import numpy as np
    +from moptipy.api.space import Space
    +from moptipy.utils.logger import CSV_SEPARATOR, KeyValueLogSection
    +from pycommons.types import check_int_range, type_error
    +
    +from moptipyapps.binpacking2d.instance import (
    +    IDX_HEIGHT,
    +    IDX_REPETITION,
    +    IDX_WIDTH,
    +    Instance,
    +)
    +from moptipyapps.binpacking2d.packing import (
    +    IDX_BIN,
    +    IDX_BOTTOM_Y,
    +    IDX_ID,
    +    IDX_LEFT_X,
    +    IDX_RIGHT_X,
    +    IDX_TOP_Y,
    +    Packing,
    +)
    +from moptipyapps.shared import SCOPE_INSTANCE
    +
    +
    +
    +[docs] +class PackingSpace(Space): + """An implementation of the `Space` API of for 2D bin packings charts.""" + + def __init__(self, instance: Instance) -> None: + """ + Create a 2D packing space. + + :param instance: the 2d bin packing instance + + >>> inst = Instance.from_resource("a01") + >>> space = PackingSpace(inst) + >>> space.instance is inst + True + """ + if not isinstance(instance, Instance): + raise type_error(instance, "instance", Instance) + #: The instance to which the packings apply. + self.instance: Final[Instance] = instance + +
    +[docs] + def copy(self, dest: Packing, source: Packing) -> None: + """ + Copy one packing to another one. + + :param dest: the destination packing + :param source: the source packing + """ + np.copyto(dest, source) + dest.n_bins = source.n_bins
    + + +
    +[docs] + def create(self) -> Packing: + """ + Create a packing object without assigning items to locations. + + :return: the (empty, uninitialized) packing object + + >>> inst = Instance.from_resource("a01") + >>> space = PackingSpace(inst) + >>> x = space.create() + >>> x.shape + (24, 6) + >>> x.instance is inst + True + >>> type(x) + <class 'moptipyapps.binpacking2d.packing.Packing'> + """ + return Packing(self.instance)
    + + +
    +[docs] + def to_str(self, x: Packing) -> str: + """ + Convert a packing to a string. + + :param x: the packing + :return: a string corresponding to the flattened packing array + + >>> inst = Instance.from_resource("a01") + >>> space = PackingSpace(inst) + >>> y = space.create() + >>> xx = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ... 1, 2, 2, 2, 2, 2, 2]) + >>> import moptipyapps.binpacking2d.encodings.ibl_encoding_1 as e + >>> e._decode(xx, y, inst, inst.bin_width, inst.bin_height) + 5 + >>> space.to_str(y) + '1;1;0;0;463;386;1;1;463;0;926;386;1;1;926;0;1389;386;\ +1;1;1389;0;1852;386;1;1;1852;0;2315;386;1;1;0;386;463;772;\ +1;1;463;386;926;772;1;1;926;386;1389;772;1;1;1389;386;1852;772;\ +1;1;1852;386;2315;772;1;1;0;772;463;1158;1;1;463;772;926;1158;\ +1;1;926;772;1389;1158;1;1;1389;772;1852;1158;1;1;1852;772;2315;1158;\ +1;2;0;0;463;386;1;2;463;0;926;386;1;2;926;0;1389;386;2;2;0;386;1680;806;\ +2;3;0;0;1680;420;2;3;0;420;1680;840;2;4;0;0;1680;420;2;4;0;420;1680;840;\ +2;5;0;0;1680;420' + """ + return CSV_SEPARATOR.join([str(xx) for xx in np.nditer(x)])
    + + +
    +[docs] + def is_equal(self, x1: Packing, x2: Packing) -> bool: + """ + Check if two bin packings have the same contents. + + :param x1: the first packing + :param x2: the second packing + :return: `True` if both packings are for the same instance and have the + same structure + + >>> inst = Instance.from_resource("a01") + >>> space = PackingSpace(inst) + >>> y1 = space.create() + >>> y1.fill(0) + >>> y2 = space.create() + >>> y2.fill(0) + >>> space.is_equal(y1, y2) + True + >>> y1 is y2 + False + >>> y1[0, 0] = 1 + >>> space.is_equal(y1, y2) + False + """ + return (x1.instance is x2.instance) and np.array_equal(x1, x2)
    + + +
    +[docs] + def from_str(self, text: str) -> Packing: + """ + Convert a string to a packing. + + :param text: the string + :return: the packing + + >>> inst = Instance.from_resource("a01") + >>> space = PackingSpace(inst) + >>> y1 = space.create() + >>> xx = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ... 1, 2, 2, 2, 2, 2, 2]) + >>> import moptipyapps.binpacking2d.encodings.ibl_encoding_1 as e + >>> y1.n_bins = e._decode( + ... xx, y1, inst, inst.bin_width, inst.bin_height) + >>> y2 = space.from_str(space.to_str(y1)) + >>> space.is_equal(y1, y2) + True + >>> y1 is y2 + False + """ + if not isinstance(text, str): + raise type_error(text, "packing text", str) + x: Final[Packing] = self.create() + np.copyto(x, np.fromstring(text, dtype=x.dtype, sep=CSV_SEPARATOR) + .reshape(x.shape)) + x.n_bins = int(x[:, IDX_BIN].max()) + self.validate(x) + return x
    + + +
    +[docs] + def validate(self, x: Packing) -> None: + """ + Check if a packing is valid and feasible. + + This method performs a comprehensive feasibility and sanity check of + a packing. It ensures that the packing could be implemented in the + real world exactly as it is given here and that all data are valid and + that it matches to the bin packing instance. This includes: + + - checking that all data types, numpy `dtypes`, and matrix shapes are + correct + - checking that the packing belongs to the same instance as this space + - checking that no objects in the same bin overlap + - checking that all objects occur exactly as often as prescribed by + the instance + - checking that no object extends outside of its bin + - checking that all objects have the same width/height as prescribed + in the instance (with possible rotations) + - check that bin ids are assigned starting at `1` and incrementing in + steps of `1` + + :param x: the packing + :raises TypeError: if any component of the packing is of the wrong + type + :raises ValueError: if the packing is not feasible + """ + if not isinstance(x, Packing): + raise type_error(x, "x", Packing) + inst: Final[Instance] = self.instance + if inst is not x.instance: + raise ValueError( + f"x.instance must be {inst} but is {x.instance}.") + if inst.dtype is not x.dtype: + raise ValueError( + f"inst.dtype = {inst.dtype} but x.dtype={x.dtype}") + needed_shape: Final[tuple[int, int]] = (inst.n_items, 6) + if x.shape != needed_shape: + raise ValueError(f"x.shape={x.shape}, but must be {needed_shape}.") + + bin_width: Final[int] = check_int_range( + inst.bin_width, "bin_width", 1, 1_000_000_000) + bin_height: Final[int] = check_int_range( + inst.bin_height, "bin_height", 1, 1_000_000_000) + + bins: Final[set[int]] = set() + items: Final[Counter[int]] = Counter() + + for i in range(inst.n_items): + item_id: int = int(x[i, IDX_ID]) + if (item_id <= 0) or (item_id > inst.n_different_items): + raise ValueError( + f"Encountered invalid id={item_id} for object at index " + f"{i}, must be in 1..{inst.n_different_items}.") + + bin_id: int = int(x[i, IDX_BIN]) + if (bin_id <= 0) or (bin_id > inst.n_items): + raise ValueError( + f"Encountered invalid bin-id={bin_id} for object at index" + f" {i}, must be in 1..{inst.n_items}.") + bins.add(bin_id) + + items[item_id] += 1 + x_left: int = int(x[i, IDX_LEFT_X]) + y_bottom: int = int(x[i, IDX_BOTTOM_Y]) + x_right: int = int(x[i, IDX_RIGHT_X]) + y_top: int = int(x[i, IDX_TOP_Y]) + + if (x_left >= x_right) or (y_bottom >= y_top): + raise ValueError( + f"Invalid item coordinates ({x_left}, {y_bottom}, " + f"{x_right}, {y_top}) for item of id {item_id} at index" + f" {i}.") + if (x_left < 0) or (y_bottom < 0) or (x_right > bin_width) \ + or (y_top > bin_height): + raise ValueError( + f"Item coordinates ({x_left}, {y_bottom}, {x_right}, " + f"{y_top}) for item of id {item_id} at index {i} extend " + f"outside of the bin ({bin_width}, {bin_height}).") + + real_width: int = x_right - x_left + real_height: int = y_top - y_bottom + width: int = int(inst[item_id - 1, IDX_WIDTH]) + height: int = int(inst[item_id - 1, IDX_HEIGHT]) + + if ((real_width != width) or (real_height != height)) \ + and ((real_width != height) and (real_height != width)): + raise ValueError( + f"Item coordinates ({x_left}, {y_bottom}, {x_right}, " + f"{y_top}) mean width={real_width} and height=" + f"{real_height} for item of id {item_id} at index {i}, " + f"which should have width={width} and height={height}.") + + for j in range(inst.n_items): + if (int(x[j, IDX_BIN]) != bin_id) or (i == j): + continue + x_left_2: int = int(x[j, IDX_LEFT_X]) + y_bottom_2: int = int(x[j, IDX_BOTTOM_Y]) + x_right_2: int = int(x[j, IDX_RIGHT_X]) + y_top_2: int = int(x[j, IDX_TOP_Y]) + if (x_left_2 < x_right) and (x_right_2 > x_left) \ + and (y_bottom_2 < y_top) and (y_top_2 > y_bottom): + raise ValueError( + f"Item {x[j, IDX_ID]} in bin {bin_id} and at index " + f"{j} is ({x_left_2}, {y_bottom_2}, {x_right_2}, " + f"{y_top_2}) and thus intersects with item {item_id} " + f"at index {i} which is in the same bin at ({x_left}," + f" {y_bottom}, {x_right}, {y_top}).") + + for item_id, count in items.items(): + should: int = int(inst[item_id - 1, IDX_REPETITION]) + if should != count: + raise ValueError( + f"Item {item_id} should occur {should} times, but occurs" + f" {count} times instead.") + + max_bin: Final[int] = max(bins) + min_bin: Final[int] = min(bins) + bin_count: Final[int] = len(bins) + + if (min_bin != 1) or ((max_bin - min_bin + 1) != bin_count): + raise ValueError( + f"Inconsistent use of bins. Found bins {sorted(bins)}.") + + if not isinstance(x.n_bins, int): + raise type_error(x.n_bins, "x.n_bins", int) + if x.n_bins != bin_count: + raise ValueError(f"x.n_bins={x.n_bins}, but must be {bin_count}.")
    + + +
    +[docs] + def n_points(self) -> int: + """ + Get the number of possible packings. + + If we indeed consider that any object could be at any place, then + there would be an incomprehensibly large number of possible packings. + Here, we consider the bottom-left condition and the idea of encoding + packings as signed permutations, as in the Liu and Teng paper "An + Improved BL-Algorithm for Genetic Algorithm of the Orthogonal Packing + of Rectangles." In this case, if `n` items are to be packed, the + number of possible packings won't exceed `2^n * n!`. + + :return: the approximate number of packings + + >>> inst = Instance.from_resource("a01") + >>> inst.n_items + 24 + >>> space = PackingSpace(inst) + >>> space.n_points() + 10409396852733332453861621760000 + >>> from math import factorial + >>> (2 ** 24) * factorial(24) + 10409396852733332453861621760000 + """ + return (2 ** self.instance.n_items) * factorial(self.instance.n_items)
    + + + def __str__(self) -> str: + """ + Get the name of the packing space. + + :return: the name + + >>> print(PackingSpace(Instance.from_resource("a10"))) + pack_a10 + """ + return f"pack_{self.instance}" + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log the parameters of the space to the given logger. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + with logger.scope(SCOPE_INSTANCE) as kv: + self.instance.log_parameters_to(kv)
    +
    + +
    diff --git a/_modules/moptipyapps/binpacking2d/packing_statistics.html b/_modules/moptipyapps/binpacking2d/packing_statistics.html new file mode 100644 index 00000000..a100c99b --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/packing_statistics.html @@ -0,0 +1,653 @@ +moptipyapps.binpacking2d.packing_statistics — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.packing_statistics

    +"""An extended end result statistics record to represent packings."""
    +import argparse
    +import os.path
    +from dataclasses import dataclass
    +from math import isfinite
    +from typing import Any, Callable, Final, Iterable, Mapping, cast
    +
    +from moptipy.evaluation.base import (
    +    KEY_N,
    +    EvaluationDataElement,
    +)
    +from moptipy.evaluation.end_results import EndResult
    +from moptipy.evaluation.end_statistics import CsvReader as EsCsvReader
    +from moptipy.evaluation.end_statistics import CsvWriter as EsCsvWriter
    +from moptipy.evaluation.end_statistics import (
    +    EndStatistics,
    +)
    +from moptipy.evaluation.end_statistics import (
    +    from_end_results as es_from_end_results,
    +)
    +from moptipy.utils.strings import (
    +    num_to_str,
    +)
    +from pycommons.ds.immutable_map import immutable_mapping
    +from pycommons.ds.sequences import reiterable
    +from pycommons.io.console import logger
    +from pycommons.io.csv import (
    +    SCOPE_SEPARATOR,
    +    csv_column,
    +    csv_read,
    +    csv_scope,
    +    csv_select_scope,
    +    csv_write,
    +)
    +from pycommons.io.path import Path, file_path, line_writer
    +from pycommons.math.sample_statistics import CsvReader as SsCsvReader
    +from pycommons.math.sample_statistics import CsvWriter as SsCsvWriter
    +from pycommons.math.sample_statistics import SampleStatistics
    +from pycommons.math.sample_statistics import from_samples as ss_from_samples
    +from pycommons.strings.string_conv import str_to_num
    +from pycommons.types import check_int_range, type_error
    +
    +from moptipyapps.binpacking2d.objectives.bin_count import BIN_COUNT_NAME
    +from moptipyapps.binpacking2d.packing_result import (
    +    _OBJECTIVE_LOWER,
    +    _OBJECTIVE_UPPER,
    +    KEY_BIN_HEIGHT,
    +    KEY_BIN_WIDTH,
    +    KEY_N_DIFFERENT_ITEMS,
    +    KEY_N_ITEMS,
    +    LOWER_BOUNDS_BIN_COUNT,
    +    PackingResult,
    +)
    +from moptipyapps.binpacking2d.packing_result import from_csv as pr_from_csv
    +from moptipyapps.binpacking2d.packing_result import from_logs as pr_from_logs
    +from moptipyapps.shared import (
    +    moptipyapps_argparser,
    +    motipyapps_footer_bottom_comments,
    +)
    +
    +
    +
    +[docs] +@dataclass(frozen=True, init=False, order=False, eq=False) +class PackingStatistics(EvaluationDataElement): + """ + An end statistics record of one run of one algorithm on one problem. + + This record provides the information of the outcome of one application of + one algorithm to one problem instance in an immutable way. + """ + + #: the original end statistics record + end_statistics: EndStatistics + #: the number of items in the instance + n_items: int + #: the number of different items in the instance + n_different_items: int + #: the bin width + bin_width: int + #: the bin height + bin_height: int + #: the objective values evaluated after the optimization + objectives: Mapping[str, SampleStatistics] + #: the bounds for the objective values (append ".lowerBound" and + #: ".upperBound" to all objective function names) + objective_bounds: Mapping[str, int | float] + #: the bounds for the minimum number of bins of the instance + bin_bounds: Mapping[str, int] + + def __init__(self, + end_statistics: EndStatistics, + n_items: int, + n_different_items: int, + bin_width: int, + bin_height: int, + objectives: Mapping[str, SampleStatistics], + objective_bounds: Mapping[str, int | float], + bin_bounds: Mapping[str, int]): + """ + Create a consistent instance of :class:`PackingStatistics`. + + :param end_statistics: the end statistics + :param n_items: the number of items + :param n_different_items: the number of different items + :param bin_width: the bin width + :param bin_height: the bin height + :param objectives: the objective values computed after the + optimization + :param bin_bounds: the different bounds for the number of bins + :param objective_bounds: the bounds for the objective functions + :raises TypeError: if any parameter has a wrong type + :raises ValueError: if the parameter values are inconsistent + """ + super().__init__() + if not isinstance(end_statistics, EndStatistics): + raise type_error(end_statistics, "end_statistics", EndResult) + if end_statistics.best_f != objectives[end_statistics.objective]: + raise ValueError( + f"end_statistics.best_f={end_statistics.best_f}, but " + f"objectives[{end_statistics.objective!r}]=" + f"{objectives[end_statistics.objective]}.") + if not isinstance(objectives, Mapping): + raise type_error(objectives, "objectives", Mapping) + if not isinstance(objective_bounds, Mapping): + raise type_error(objective_bounds, "objective_bounds", Mapping) + if not isinstance(bin_bounds, Mapping): + raise type_error(bin_bounds, "bin_bounds", Mapping) + if len(objective_bounds) != (2 * len(objectives)): + raise ValueError(f"it is required that there is a lower and an " + f"upper bound for each of the {len(objectives)} " + f"functions, but we got {len(objective_bounds)} " + f"bounds, objectives={objectives}, " + f"objective_bounds={objective_bounds}.") + + for name, stat in objectives.items(): + if not isinstance(name, str): + raise type_error( + name, f"name of evaluation[{name!r}]={stat!r}", str) + if not isinstance(stat, int | float | SampleStatistics): + raise type_error( + stat, f"value of evaluation[{name!r}]={stat!r}", + (int, float, SampleStatistics)) + lll: str = csv_scope(name, _OBJECTIVE_LOWER) + lower = objective_bounds[lll] + if not isfinite(lower): + raise ValueError(f"{lll}=={lower}.") + uuu = csv_scope(name, _OBJECTIVE_UPPER) + upper = objective_bounds[uuu] + for value in (stat.minimum, stat.maximum) \ + if isinstance(stat, SampleStatistics) else (stat, ): + if not isfinite(value): + raise ValueError( + f"non-finite value of evaluation[{name!r}]={value!r}") + if not (lower <= value <= upper): + raise ValueError( + f"it is required that {lll}<=f<={uuu}, but got " + f"{lower}, {value}, and {upper}.") + bins: Final[SampleStatistics | None] = cast( + SampleStatistics, objectives[BIN_COUNT_NAME]) \ + if BIN_COUNT_NAME in objectives else None + for name2, value2 in bin_bounds.items(): + if not isinstance(name2, str): + raise type_error( + name2, f"name of bounds[{name2!r}]={value2!r}", str) + check_int_range(value2, f"bounds[{name2!r}]", 1, 1_000_000_000) + if (bins is not None) and (bins.minimum < value2): + raise ValueError( + f"number of bins={bins} is inconsistent with " + f"bound {name2!r}={value2}.") + + object.__setattr__(self, "end_statistics", end_statistics) + object.__setattr__(self, "objectives", immutable_mapping(objectives)) + object.__setattr__(self, "objective_bounds", + immutable_mapping(objective_bounds)) + object.__setattr__(self, "bin_bounds", immutable_mapping(bin_bounds)) + object.__setattr__(self, "n_different_items", check_int_range( + n_different_items, "n_different_items", 1, 1_000_000_000_000)) + object.__setattr__(self, "n_items", check_int_range( + n_items, "n_items", n_different_items, 1_000_000_000_000)) + object.__setattr__(self, "bin_width", check_int_range( + bin_width, "bin_width", 1, 1_000_000_000_000)) + object.__setattr__(self, "bin_height", check_int_range( + bin_height, "bin_height", 1, 1_000_000_000_000)) + + def _tuple(self) -> tuple[Any, ...]: + """ + Create a tuple with all the data of this data class for comparison. + + :returns: a tuple with all the data of this class, where `None` values + are masked out + """ + # noinspection PyProtectedMember + return self.end_statistics._tuple()
    + + + +
    +[docs] +def from_packing_results( + results: Iterable[PackingResult], + consumer: Callable[[PackingStatistics], None]) -> None: + """ + Create packing statistics from a sequence of packing results. + + :param results: the packing results + :param consumer: the consumer receiving the created packing + statistics + """ + if not isinstance(results, Iterable): + raise type_error(results, "results", Iterable) + if not callable(consumer): + raise type_error(consumer, "consumer", call=True) + groups: Final[dict[tuple[str, str, str, str], list[PackingResult]]] \ + = {} + objectives_set: set[str] = set() + for i, pr in enumerate(results): + if not isinstance(pr, PackingResult): + raise type_error(pr, f"end_results[{i}]", PackingResult) + setting: tuple[str, str, str, str] = \ + (pr.end_result.algorithm, pr.end_result.instance, + pr.end_result.objective, "" if pr.end_result.encoding is None + else pr.end_result.encoding) + if setting in groups: + groups[setting].append(pr) + else: + groups[setting] = [pr] + objectives_set.update(pr.objectives.keys()) + + if len(groups) <= 0: + raise ValueError("results is empty!") + if len(objectives_set) <= 0: + raise ValueError("results has not objectives!") + end_stats: Final[list[EndStatistics]] = [] + objectives: Final[list[str]] = sorted(objectives_set) + + for key in sorted(groups.keys()): + data = groups[key] + pr0 = data[0] + n_items: int = pr0.n_items + n_different_items: int = pr0.n_different_items + bin_width: int = pr0.bin_width + bin_height: int = pr0.bin_height + used_objective: str = pr0.end_result.objective + encoding: str | None = pr0.end_result.encoding + if used_objective not in objectives_set: + raise ValueError( + f"{used_objective!r} not in {objectives_set!r}.") + if used_objective != key[2]: + raise ValueError( + f"used objective={used_objective!r} different " + f"from key[2]={key[2]}!?") + if (encoding is not None) and (encoding != key[3]): + raise ValueError( + f"used encoding={encoding!r} different " + f"from key[3]={key[3]}!?") + objective_bounds: Mapping[str, int | float] = pr0.objective_bounds + bin_bounds: Mapping[str, int] = pr0.bin_bounds + for i, pr in enumerate(data): + if n_items != pr.n_items: + raise ValueError(f"n_items={n_items} for data[0] but " + f"{pr.n_items} for data[{i}]?") + if n_different_items != pr.n_different_items: + raise ValueError( + f"n_different_items={n_different_items} for data[0] " + f"but {pr.n_different_items} for data[{i}]?") + if bin_width != pr.bin_width: + raise ValueError( + f"bin_width={bin_width} for data[0] " + f"but {pr.bin_width} for data[{i}]?") + if bin_height != pr.bin_height: + raise ValueError( + f"bin_height={bin_height} for data[0] " + f"but {pr.bin_height} for data[{i}]?") + if used_objective != pr.end_result.objective: + raise ValueError( + f"used objective={used_objective!r} for data[0] " + f"but {pr.end_result.objective!r} for data[{i}]?") + if objective_bounds != pr.objective_bounds: + raise ValueError( + f"objective_bounds={objective_bounds!r} for data[0] " + f"but {pr.objective_bounds!r} for data[{i}]?") + if bin_bounds != pr.bin_bounds: + raise ValueError( + f"bin_bounds={bin_bounds!r} for data[0] " + f"but {pr.bin_bounds!r} for data[{i}]?") + + es_from_end_results((pr.end_result for pr in data), end_stats.append) + if len(end_stats) != 1: + raise ValueError(f"got {end_stats} from {data}?") + + consumer(PackingStatistics( + end_statistics=end_stats[0], + n_items=n_items, + n_different_items=n_different_items, + bin_width=bin_width, + bin_height=bin_height, + objectives={ + o: ss_from_samples(pr.objectives[o] for pr in data) + for o in objectives + }, + objective_bounds=objective_bounds, + bin_bounds=bin_bounds, + )) + end_stats.clear()
    + + + +
    +[docs] +def to_csv(results: Iterable[PackingStatistics], file: str) -> Path: + """ + Write a sequence of packing statistics to a file in CSV format. + + :param results: the end statistics + :param file: the path + :return: the path of the file that was written + """ + path: Final[Path] = Path(file) + logger(f"Writing packing statistics to CSV file {path!r}.") + path.ensure_parent_dir_exists() + with path.open_for_write() as wt: + consumer: Final[Callable[[str], None]] = line_writer(wt) + for p in csv_write( + data=sorted(results), + setup=CsvWriter().setup, + column_titles=CsvWriter.get_column_titles, + get_row=CsvWriter.get_row, + header_comments=CsvWriter.get_header_comments, + footer_comments=CsvWriter.get_footer_comments, + footer_bottom_comments=CsvWriter.get_footer_bottom_comments): + consumer(p) + logger(f"Done writing packing statistics to CSV file {path!r}.") + return path
    + + + +
    +[docs] +def from_csv(file: str) -> Iterable[PackingStatistics]: + """ + Load the packing statistics from a CSV file. + + :param file: the file to read from + :returns: the iterable with the packing statistics + """ + path: Final[Path] = file_path(file) + logger(f"Now reading CSV file {path!r}.") + with path.open_for_read() as rd: + yield from csv_read(rows=rd, + setup=CsvReader, + parse_row=CsvReader.parse_row) + logger(f"Done reading CSV file {path!r}.")
    + + + +
    +[docs] +class CsvWriter: + """A class for CSV writing of :class:`PackingStatistics`.""" + + def __init__(self, scope: str | None = None) -> None: + """ + Initialize the csv writer. + + :param scope: the prefix to be pre-pended to all columns + """ + #: an optional scope + self.scope: Final[str | None] = ( + str.strip(scope)) if scope is not None else None + + #: has this writer been set up? + self.__setup: bool = False + #: the end statistics writer + self.__es: Final[EsCsvWriter] = EsCsvWriter(scope) + #: the bin bounds + self.__bin_bounds: list[str] | None = None + #: the objectives + self.__objectives: list[SsCsvWriter] | None = None + #: the objective names + self.__objective_names: tuple[str, ...] | None = None + #: the lower bound names + self.__objective_lb_names: tuple[str, ...] | None = None + #: the upper bound names + self.__objective_ub_names: tuple[str, ...] | None = None + +
    +[docs] + def setup(self, data: Iterable[PackingStatistics]) -> "CsvWriter": + """ + Set up this csv writer based on existing data. + + :param data: the data to setup with + :returns: this writer + """ + if self.__setup: + raise ValueError("CSV writer has already been set up.") + self.__setup = True + + data = reiterable(data) + self.__es.setup(pr.end_statistics for pr in data) + + bin_bounds_set: Final[set[str]] = set() + objectives_set: Final[set[str]] = set() + for pr in data: + bin_bounds_set.update(pr.bin_bounds.keys()) + objectives_set.update(pr.objectives.keys()) + if set.__len__(bin_bounds_set) > 0: + self.__bin_bounds = sorted(bin_bounds_set) + if set.__len__(objectives_set) > 0: + p: Final[str | None] = self.scope + self.__objective_names = tuple(sorted(objectives_set)) + self.__objective_lb_names = tuple(csv_scope( + oxx, _OBJECTIVE_LOWER) for oxx in self.__objective_names) + self.__objective_ub_names = tuple(csv_scope( + oxx, _OBJECTIVE_UPPER) for oxx in self.__objective_names) + self.__objectives = [SsCsvWriter( + scope=csv_scope(p, k), n_not_needed=True, what_short=k, + what_long=f"objective function {k}").setup( + ddd.objectives[k] for ddd in data + ) for k in self.__objective_names] + + return self
    + + +
    +[docs] + def get_column_titles(self) -> Iterable[str]: + """ + Get the column titles. + + :param dest: the destination string consumer + """ + p: Final[str | None] = self.scope + yield from self.__es.get_column_titles() + + yield csv_scope(p, KEY_BIN_HEIGHT) + yield csv_scope(p, KEY_BIN_WIDTH) + yield csv_scope(p, KEY_N_ITEMS) + yield csv_scope(p, KEY_N_DIFFERENT_ITEMS) + if self.__bin_bounds: + for b in self.__bin_bounds: + yield csv_scope(p, b) + if self.__objective_names and self.__objectives: + for i, o in enumerate(self.__objectives): + yield csv_scope(p, self.__objective_lb_names[i]) + yield from o.get_column_titles() + yield csv_scope(p, self.__objective_ub_names[i])
    + + +
    +[docs] + def get_row(self, data: PackingStatistics) -> Iterable[str]: + """ + Render a single packing result record to a CSV row. + + :param data: the end result record + :returns: the iterable with the row text + """ + yield from self.__es.get_row(data.end_statistics) + yield repr(data.bin_height) + yield repr(data.bin_width) + yield repr(data.n_items) + yield repr(data.n_different_items) + if self.__bin_bounds: + for bb in self.__bin_bounds: + yield (repr(data.bin_bounds[bb]) + if bb in data.bin_bounds else "") + if self.__objective_names and self.__objectives: + lb: Final[tuple[str, ...] | None] = self.__objective_lb_names + ub: Final[tuple[str, ...] | None] = self.__objective_ub_names + for i, ob in enumerate(self.__objective_names): + if lb is not None: + ox = lb[i] + yield (num_to_str(data.objective_bounds[ox]) + if ox in data.objective_bounds else "") + yield from SsCsvWriter.get_optional_row( + self.__objectives[i], data.objectives.get(ob)) + if ub is not None: + ox = ub[i] + yield (num_to_str(data.objective_bounds[ox]) + if ox in data.objective_bounds else "")
    + + +
    +[docs] + def get_header_comments(self) -> Iterable[str]: + """ + Get any possible header comments. + + :returns: the header comments + """ + return ("End Statistics of Bin Packing Experiments", + "See the description at the bottom of the file.")
    + + + + + + +
    + + + +
    +[docs] +class CsvReader: + """A class for CSV parsing to get :class:`PackingStatistics`.""" + + def __init__(self, columns: dict[str, int]) -> None: + """ + Create a CSV parser for :class:`EndResult`. + + :param columns: the columns + """ + super().__init__() + #: the end result csv reader + self.__es: Final[EsCsvReader] = EsCsvReader(columns) + #: the index of the n-items column + self.__idx_n_items: Final[int] = csv_column(columns, KEY_N_ITEMS) + #: the index of the n different items column + self.__idx_n_different: Final[int] = csv_column( + columns, KEY_N_DIFFERENT_ITEMS) + #: the index of the bin width column + self.__idx_bin_width: Final[int] = csv_column( + columns, KEY_BIN_WIDTH) + #: the index of the bin height column + self.__idx_bin_height: Final[int] = csv_column( + columns, KEY_BIN_HEIGHT) + #: the indices for the objective bounds + self.__bin_bounds: Final[tuple[tuple[str, int], ...]] = \ + csv_select_scope( + lambda x: tuple(sorted(((k, v) for k, v in x.items()))), + columns, LOWER_BOUNDS_BIN_COUNT) + if tuple.__len__(self.__bin_bounds) <= 0: + raise ValueError("No bin bounds found?") + #: the objective bounds columns + self.__objective_bounds: Final[tuple[tuple[str, int], ...]] = \ + csv_select_scope( + lambda x: tuple(sorted(((k, v) for k, v in x.items()))), + columns, None, + skip_orig_key=lambda s: not str.endswith( + s, (_OBJECTIVE_LOWER, _OBJECTIVE_UPPER))) + n_bounds: Final[int] = tuple.__len__(self.__objective_bounds) + if n_bounds <= 0: + raise ValueError("No objective function bounds found?") + if (n_bounds & 1) != 0: + raise ValueError(f"Number of bounds {n_bounds} should be even.") + n_val: Final[tuple[tuple[str, int]]] = ((KEY_N, self.__es.idx_n), ) + #: the parsers for the per-objective statistics + self.__objectives: Final[tuple[tuple[str, SsCsvReader], ...]] = \ + tuple((ss, csv_select_scope(SsCsvReader, columns, ss, n_val)) + for ss in sorted({s[0] for s in (str.split( + kk[0], SCOPE_SEPARATOR) for kk in + self.__objective_bounds) if (list.__len__(s) > 1) + and (str.__len__(s[0]) > 0)})) + n_objectives: Final[int] = tuple.__len__(self.__objectives) + if n_objectives <= 0: + raise ValueError("No objectives found?") + if (2 * n_objectives) != n_bounds: + raise ValueError( + f"Number {n_objectives} of objectives " + f"inconsistent with number {n_bounds} of bounds.") + +
    +[docs] + def parse_row(self, data: list[str]) -> PackingStatistics: + """ + Parse a row of data. + + :param data: the data row + :return: the end result statistics + """ + return PackingStatistics( + self.__es.parse_row(data), + int(data[self.__idx_n_items]), + int(data[self.__idx_n_different]), + int(data[self.__idx_bin_width]), + int(data[self.__idx_bin_height]), + {o: v.parse_row(data) for o, v in self.__objectives}, + {o: str_to_num(data[v]) for o, v in self.__objective_bounds}, + {o: int(data[v]) for o, v in self.__bin_bounds}, + )
    +
    + + + +# Run packing-results to stat file if executed as script +if __name__ == "__main__": + parser: Final[argparse.ArgumentParser] = moptipyapps_argparser( + __file__, "Build an end-results statistics CSV file.", + "This program computes statistics over packing results") + def_src: str = "./evaluation/end_results.txt" + if not os.path.isfile(def_src): + def_src = "./results" + parser.add_argument( + "source", nargs="?", default=def_src, + help="either the directory with moptipy log files or the path to the " + "end-results CSV file", type=Path) + parser.add_argument( + "dest", type=Path, nargs="?", + default="./evaluation/end_statistics.txt", + help="the path to the end results statistics CSV file to be created") + args: Final[argparse.Namespace] = parser.parse_args() + + src_path: Final[Path] = args.source + packing_results: Final[list[PackingResult]] = [] + if src_path.is_file(): + logger(f"{src_path!r} identifies as file, load as end-results csv") + packing_results.extend(pr_from_csv(src_path)) + else: + logger(f"{src_path!r} identifies as directory, load it as log files") + pr_from_logs(src_path, packing_results.append) + + packing_stats: Final[list[PackingStatistics]] = [] + from_packing_results( + results=packing_results, consumer=packing_stats.append) + to_csv(packing_stats, args.dest) +
    diff --git a/_modules/moptipyapps/binpacking2d/plot_packing.html b/_modules/moptipyapps/binpacking2d/plot_packing.html new file mode 100644 index 00000000..bdf83523 --- /dev/null +++ b/_modules/moptipyapps/binpacking2d/plot_packing.html @@ -0,0 +1,219 @@ +moptipyapps.binpacking2d.plot_packing — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.binpacking2d.plot_packing

    +"""Plot a packing into one figure."""
    +from collections import Counter
    +from typing import Callable, Final, Iterable
    +
    +import moptipy.utils.plot_defaults as pd
    +import moptipy.utils.plot_utils as pu
    +from matplotlib.artist import Artist  # type: ignore
    +from matplotlib.axes import Axes  # type: ignore
    +from matplotlib.figure import Figure  # type: ignore
    +from matplotlib.patches import Rectangle  # type: ignore
    +from matplotlib.text import Text  # type: ignore
    +from pycommons.types import type_error
    +
    +from moptipyapps.binpacking2d.packing import (
    +    IDX_BIN,
    +    IDX_BOTTOM_Y,
    +    IDX_ID,
    +    IDX_LEFT_X,
    +    IDX_RIGHT_X,
    +    IDX_TOP_Y,
    +    Packing,
    +)
    +
    +
    +
    +[docs] +def default_packing_item_str(item_id: int, item_index: int, + item_in_bin_index: int) -> Iterable[str]: + """ + Get a packing item string(s). + + The default idea is to include the item id, the index of the item in the + bin, and the overall index of the item. If the space is insufficient, + we remove the latter or the latter two. Hence, this function returns a + tuple of three strings. + + :param item_id: the ID of the packing item + :param item_index: the item index + :param item_in_bin_index: the index of the item in its bin + :return: the string + """ + return (f"{item_id}/{item_in_bin_index}/{item_index}", + f"{item_id}/{item_in_bin_index}", str(item_id))
    + + + +
    +[docs] +def plot_packing(packing: Packing | str, + max_rows: int = 3, + max_bins_per_row: int = 3, + default_width_per_bin: float | int | None = 8.6, + max_width: float | int | None = 8.6, + default_height_per_bin: float | int | None = + 5.315092303249095, + max_height: float | int | None = 9, + packing_item_str: Callable[ + [int, int, int], str | Iterable[str]] = + default_packing_item_str, + importance_to_font_size_func: Callable[[int], float] = + pd.importance_to_font_size, + dpi: float | int | None = 384.0) -> Figure: + """ + Plot a packing. + + Each item is drawn in a different color. Each item rectangle includes, if + there is enough space, the item-ID. If there is more space, also the index + of the item inside the bin (starting at 1) is included. If there is yet + more space, even the overall index of the item is included. + + :param packing: the packing or the file to load it from + :param max_rows: the maximum number of rows + :param max_bins_per_row: the maximum number of bins per row + :param default_width_per_bin: the optional default width of a column + :param max_height: the maximum height + :param default_height_per_bin: the optional default height per row + :param max_width: the maximum width + :param packing_item_str: the function converting an item id, + item index, and item-in-bin index to a string or sequence of strings + (of decreasing length) + :param importance_to_font_size_func: the function converting + importance values to font sizes + :param dpi: the dpi value + :returns: the Figure object to allow you to add further plot elements + """ + if isinstance(packing, str): + packing = Packing.from_log(packing) + if not isinstance(packing, Packing): + raise type_error(packing, "packing", (Packing, str)) + if not callable(packing_item_str): + raise type_error(packing_item_str, "packing_item_str", call=True) + + # allocate the figure ... this is hacky for now + figure, bin_figures = pu.create_figure_with_subplots( + items=packing.n_bins, max_items_per_plot=1, max_rows=max_rows, + max_cols=max_bins_per_row, min_rows=1, min_cols=1, + default_width_per_col=default_width_per_bin, max_width=max_width, + default_height_per_row=default_height_per_bin, max_height=max_height, + dpi=dpi) + + # initialize the different plots + bin_width: Final[int] = packing.instance.bin_width + bin_height: Final[int] = packing.instance.bin_height + axes_list: Final[list[Axes]] = [] + for the_axes, _, _, _, _, _ in bin_figures: + axes = pu.get_axes(the_axes) + axes_list.append(axes) + axes.set_ylim(0, bin_width) # pylint: disable=E1101 + axes.set_ybound(0, bin_height) # pylint: disable=E1101 + axes.set_xlim(0, bin_width) # pylint: disable=E1101 + axes.set_xbound(0, bin_width) # pylint: disable=E1101 + axes.set_aspect("equal", None, "C") # pylint: disable=E1101 + axes.tick_params( # pylint: disable=E1101 + left=False, bottom=False, labelleft=False, labelbottom=False) + + # get the color and font styles + colors: Final[tuple] = pd.distinct_colors( + packing.instance.n_different_items) + font_size: Final[float] = importance_to_font_size_func(-1) + + # get the transforms needed to obtain text dimensions + renderers: Final[list] = [pu.get_renderer(axes) for axes in axes_list] + inverse: Final[list] = [ + axes.transData.inverted() # type: ignore # pylint: disable=E1101 + for axes in axes_list] + + z_order: int = 0 # the z-order of all drawing elements + + # we now plot the items one-by-one + bin_counters: Counter[int] = Counter() + for item_index in range(packing.instance.n_items): + item_id: int = int(packing[item_index, IDX_ID]) + item_bin: int = int(packing[item_index, IDX_BIN]) + x_left: int = int(packing[item_index, IDX_LEFT_X]) + y_bottom: int = int(packing[item_index, IDX_BOTTOM_Y]) + x_right: int = int(packing[item_index, IDX_RIGHT_X]) + y_top: int = int(packing[item_index, IDX_TOP_Y]) + item_in_bin_index: int = bin_counters[item_bin] + 1 + bin_counters[item_bin] = item_in_bin_index + width: int = x_right - x_left + height: int = y_top - y_bottom + + background = colors[item_id - 1] + foreground = pd.text_color_for_background(colors[item_id - 1]) + + axes = axes_list[item_bin - 1] + rend = renderers[item_bin - 1] + inv = inverse[item_bin - 1] + + axes.add_artist(Rectangle( # paint the item's rectangle + xy=(x_left, y_bottom), width=width, height=height, + facecolor=background, linewidth=0.75, zorder=z_order, + edgecolor="black")) + z_order += 1 + x_center: float = 0.5 * (x_left + x_right) + y_center: float = 0.5 * (y_bottom + y_top) + +# get the box label string or string sequence + strs = packing_item_str(item_id, item_index + 1, item_in_bin_index) + if isinstance(strs, str): + strs = [strs] + elif not isinstance(strs, Iterable): + raise type_error( + strs, f"packing_item_str({item_id}, {item_index}, " + f"{item_in_bin_index})", (str, Iterable)) + +# iterate over the possible box label strings + for i, item_str in enumerate(strs): + if not isinstance(item_str, str): + raise type_error( + str, f"packing_item_str({item_id}, {item_index}, " + f"{item_in_bin_index})[{i}]", str) +# Get the size of the text using a temporary text that gets immediately +# deleted again. + tmp: Text = axes.text(x=x_center, y=y_center, s=item_str, + fontsize=font_size, + color=foreground, + horizontalalignment="center", + verticalalignment="baseline") + bb_bl = inv.transform_bbox(tmp.get_window_extent( + renderer=rend)) + Artist.set_visible(tmp, False) + Artist.remove(tmp) + del tmp + +# Check if this text did fit into the rectangle. + if (bb_bl.width < (0.97 * width)) and \ + (bb_bl.height < (0.97 * height)): + # OK, there is enough space. Let's re-compute the y offset + # to do proper alignment using another temporary text. + tmp = axes.text(x=x_center, y=y_center, s=item_str, + fontsize=font_size, + color=foreground, + horizontalalignment="center", + verticalalignment="bottom") + bb_bt = inv.transform_bbox(tmp.get_window_extent( + renderer=rend)) + Artist.set_visible(tmp, False) + Artist.remove(tmp) + del tmp + +# Now we can really print the actual text with a more or less nice vertical +# alignment. + adj = bb_bl.y0 - bb_bt.y0 + if adj < 0: + y_center += adj / 3 + + axes.text(x=x_center, y=y_center, s=item_str, + fontsize=font_size, + color=foreground, + horizontalalignment="center", + verticalalignment="center", + zorder=z_order) + z_order += 1 + break # We found a text that fits, so we can quit. + return figure
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/.nojekyll b/_modules/moptipyapps/dynamic_control/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_modules/moptipyapps/dynamic_control/controller.html b/_modules/moptipyapps/dynamic_control/controller.html new file mode 100644 index 00000000..9c284ab2 --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/controller.html @@ -0,0 +1,118 @@ +moptipyapps.dynamic_control.controller — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.controller

    +"""
    +A base class for implementing controllers.
    +
    +A controller basically is a parameterizable function that receives the current
    +state and time of a :mod:`~moptipyapps.dynamic_control.system` as input and
    +computes one or multiple controller values as output. These controller values
    +are then used to influence how the state of the system changes in the next
    +iteration. In the dynamic systems control optimization task, the goal is to
    +find the right parameterization for the controller such that an
    +:mod:`~moptipyapps.dynamic_control.objective` is minimized.
    +
    +Examples for different controllers for dynamic systems are given in package
    +:mod:`~moptipyapps.dynamic_control.controllers`.
    +"""
    +
    +
    +from typing import Callable, Final
    +
    +import numpy as np
    +from moptipy.api.component import Component
    +from moptipy.spaces.vectorspace import VectorSpace
    +from moptipy.utils.logger import KeyValueLogSection
    +from moptipy.utils.strings import sanitize_name
    +from pycommons.types import check_to_int_range, type_error
    +
    +
    +
    +[docs] +class Controller(Component): + """A class for governing a system via differential equations.""" + + def __init__(self, name: str, + state_dims: int, control_dims: int, param_dims: int, + func: Callable[[np.ndarray, float, np.ndarray, + np.ndarray], None] | None = None) -> None: + """ + Initialize the system. + + :param name: the name of the system. + :param state_dims: the state dimensions + :param control_dims: the control dimensions + :param param_dims: the parameter dimensions + """ + super().__init__() + if not isinstance(name, str): + raise type_error(name, "name", str) + nn: Final[str] = sanitize_name(name) + if nn != name: + raise ValueError( + f"sanitized name {nn!r} is different from name {name!r}.") + #: the controller name + self.name: Final[str] = name + #: the dimensions of the state variable + self.state_dims: Final[int] = check_to_int_range( + state_dims, "state_dims", 2, 100) + #: the dimensions of the controller output + self.control_dims: Final[int] = check_to_int_range( + control_dims, "control_dims", 1, 100) + #: the dimensions of the controller parameter + self.param_dims: Final[int] = check_to_int_range( + param_dims, "param_dims", 1, 1_000) + if func is not None: + if not callable(func): + raise type_error(func, "func", None, call=True) + self.controller = func # type: ignore + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log all parameters of this component as key-value pairs. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + logger.key_value("stateDims", self.state_dims) + logger.key_value("controlDims", self.control_dims) + logger.key_value("paramDims", self.param_dims)
    + + + def __str__(self): + """ + Get the name of this controller. + + :return: the name of this controller + """ + return self.name + +
    +[docs] + def controller(self, state: np.ndarray, # pylint: disable=E0202 + time: float, # pylint: disable=E0202 + params: np.ndarray, # pylint: disable=E0202 + out: np.ndarray) -> None: # pylint: disable=E0202 + """ + Compute the control value and store it in `out`. + + :param state: the state vector + :param time: the time value + :param params: the controller variables + :param out: the output array to receive the controller values + """
    + + +
    +[docs] + def parameter_space(self) -> VectorSpace: + """ + Create a vector space to represent the possible parameterizations. + + :return: a vector space for the possible parameterizations of this + controller. + """ + return VectorSpace(self.param_dims, -32.0, 32.0)
    +
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/controllers/.nojekyll b/_modules/moptipyapps/dynamic_control/controllers/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_modules/moptipyapps/dynamic_control/controllers/ann.html b/_modules/moptipyapps/dynamic_control/controllers/ann.html new file mode 100644 index 00000000..c3ea39cb --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/controllers/ann.html @@ -0,0 +1,140 @@ +moptipyapps.dynamic_control.controllers.ann — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.controllers.ann

    +"""
    +Poor man's Artificial Neural Networks.
    +
    +Here, artificial neural networks (ANNs) are defined as plain mathematical
    +functions which are parameterized by their weights. The weights are subject
    +to black-box optimization and all together put into a single vector.
    +In other words, we do not use proper back-propagation learning or any other
    +sophisticated neural network specific training strategy. Instead, we treat the
    +neural networks as black boxes that can be parameterized using the weight
    +vector. Different ANN architectures have different weight vectors.
    +As activation functions, we use `arctan`.
    +
    +The neural networks here are automatically generated via code generation
    +provided by module :mod:`~moptipyapps.dynamic_control.controllers.codegen`.
    +This allows us to have networks of arbitrary shape for arbitrary input and
    +output dimensions. Since code generation followed by on-the-fly compilation
    +via numba is time and memory consuming, we cache all neural network-based
    +instances of :class:`~moptipyapps.dynamic_control.controller.Controller`.
    +"""
    +
    +from typing import Callable, Final, Iterable, cast
    +
    +import numpy as np
    +from pycommons.types import check_int_range, type_error
    +
    +from moptipyapps.dynamic_control.controller import Controller
    +from moptipyapps.dynamic_control.controllers.codegen import CodeGenerator
    +from moptipyapps.dynamic_control.system import System
    +
    +
    +
    +[docs] +def make_ann(state_dims: int, control_dims: int, layers: list[int]) \ + -> Controller: + """ + Dynamically create an ANN. + + :param state_dims: the state or input dimension + :param control_dims: the output dimension + :param layers: the sizes of the hidden layers + :returns: the controller + """ + state_dims = check_int_range(state_dims, "state_dims", 1, 100) + control_dims = check_int_range(control_dims, "state_dims", 1, 100) + if not isinstance(layers, list): + raise type_error(layers, "layers", list) + for layer in layers: + check_int_range(layer, "layer", 1, 64) + + # we also try to cache the generated controllers + description = "_".join(map(str, ([state_dims, control_dims, *layers]))) + description = f"__cache_{description}" + if hasattr(make_ann, description): + return cast(Controller, getattr(make_ann, description)) + + code: Final[CodeGenerator] = CodeGenerator( + "state: np.ndarray, _: float, params: np.ndarray, out: np.ndarray") + params: int = 0 # the number of parameters + var_count: int = 0 # the number of variables + vars_in: list[str] = [] # the variables forming the current layer input + vars_out: list[str] = [] # the variables forming the current layer output + vars_cached: list[str] = [] # the variables cached for re-use + write: Final[Callable[[str], None]] = code.write # fast call + writeln: Final[Callable[[str], None]] = code.writeln # fast call + + # first, we cache the state vector into local variables + for i in range(state_dims): + vv = f"s{i}" + vars_in.append(vv) + writeln(f"{vv} = state[{i}]") + + # now we build the hidden layers of the network + for layer in layers: + for _ in range(layer): + # allocate a variable for storing the current neuron's output + if len(vars_cached) > 0: + var = vars_cached.pop(-1) + else: + var_count += 1 + var = f"v{var_count}" + vars_out.append(var) # remember the variable + write(f"{var} = np.arctan(params[{params}]") # the bias + params += 1 + for vv in vars_in: + write(f" + params[{params}] * {vv}") # input * weight + params += 1 + writeln(")") + vars_cached.extend(vars_in) # old inputs ready for reuse + vars_in.clear() # inputs are no longer used + vars_in, vars_out = vars_out, vars_in # outputs become inputs + + # now we construct the output layer + for i in range(control_dims): + write(f"out[{i}] = params[{params}] * ") # the multiplier + params += 1 + write(f"np.arctan(params[{params}]") # the bias + params += 1 + for vv in vars_in: + write(f" + params[{params}] * {vv}") # input * weight + params += 1 + writeln(")") + + result: Final[Controller] = Controller( + f"ann_{'_'.join(map(str, layers))}" if len(layers) > 0 else "ann", + state_dims, control_dims, params, code.build()) + # perform one test invocation + result.controller(np.zeros(state_dims), 0.0, np.zeros(params), + np.empty(control_dims)) + setattr(make_ann, description, result) # cache the controller + return result
    + + + +
    +[docs] +def anns(system: System) -> Iterable[Controller]: + """ + Create poor man's ANNs fitting to a given system. + + Based on the dimensionality of the state space, we generate a set of ANNs + with different numbers of layers and neurons. The weights of the neurons + can then directly be optimized by a numerical optimization algorithm. + This is, of course, probably much less efficient that doing some proper + learning like back-propagation. However, it allows us to easily plug the + ANNs into the same optimization routines as other controllers. + + :param system: the equations object + :return: the ANNs + """ + state_dims: Final[int] = system.state_dims + control_dims: Final[int] = system.control_dims + return (make_ann(state_dims, control_dims, []), + make_ann(state_dims, control_dims, [1]), + make_ann(state_dims, control_dims, [2]), + make_ann(state_dims, control_dims, [3]), + make_ann(state_dims, control_dims, [2, 2]), + make_ann(state_dims, control_dims, [3, 2]))
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/controllers/codegen.html b/_modules/moptipyapps/dynamic_control/controllers/codegen.html new file mode 100644 index 00000000..ec1e5427 --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/controllers/codegen.html @@ -0,0 +1,121 @@ +moptipyapps.dynamic_control.controllers.codegen — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.controllers.codegen

    +"""A simple code generator."""
    +
    +from io import StringIO
    +from typing import Any, Callable, Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from pycommons.types import type_error
    +
    +
    +
    +[docs] +class CodeGenerator: + """A simple code generator.""" + + def __init__(self, args: str = "", retval: str = "None", + fastmath: bool = True) -> None: + """ + Initialize the code generator. + + :param args: the command line arguments + :param retval: the return type + :param fastmath: do we use numba fast math? + """ + if not isinstance(args, str): + raise type_error(args, "args", str) + if not isinstance(retval, str): + raise type_error(retval, "retval", str) + if not isinstance(fastmath, bool): + raise type_error(fastmath, "fastmath", bool) + + io: Final[StringIO] = StringIO() + wrt: Final[Callable[[str], int]] = io.write + + #: the callable for writing + self.__write: Final[Callable[[str], int]] = wrt + wrt("@numba.njit(cache=False, inline='always', fastmath" + f"={fastmath}, boundscheck=False)\n") + wrt(f"def ____func({args}) -> {retval}:\n") + + #: the result callable + self.__res: Final[Callable[[], str]] = io.getvalue + #: the current indent + self.__indent: int = 1 + #: are we at the start of a line? + self.__start: bool = True + +
    +[docs] + def write(self, text: str) -> None: + """ + Write some code. + + :param text: the code text + """ + if self.__start: + self.__write(self.__indent * " ") + self.__start = False + self.__write(text)
    + + +
    +[docs] + def indent(self) -> None: + """Increase the indent.""" + self.__indent += 1
    + + +
    +[docs] + def unindent(self) -> None: + """Increase the indent.""" + self.__indent -= 1 + if self.__indent <= 0: + raise ValueError("indent becomes 0, not allowed")
    + + +
    +[docs] + def writeln(self, text: str = "") -> None: + """ + End a line. + + :param text: the text to be written + """ + self.write(text) + self.endline()
    + + +
    +[docs] + def endline(self) -> None: + """End a line.""" + if not self.__start: + self.__write("\n") + self.__start = True
    + + +
    +[docs] + def build(self) -> Callable: + """ + Compile the generated code. + + :returns: the generated function + """ + loca: Final[dict[str, Any]] = {} + self.endline() + code: Final[str] = self.__res() + globs: Final[dict[str, Any]] = {"numba": numba, "np": np, + "Final": Final} + # pylint: disable=W0122 + exec(code, globs, loca) # nosec # nosemgrep # noqa + res = loca["____func"] + if not callable(res): + raise type_error(res, f"compiled {code!r}", call=True) + return res
    +
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/controllers/cubic.html b/_modules/moptipyapps/dynamic_control/controllers/cubic.html new file mode 100644 index 00000000..379b308a --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/controllers/cubic.html @@ -0,0 +1,89 @@ +moptipyapps.dynamic_control.controllers.cubic — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.controllers.cubic

    +"""
    +A cubic controller.
    +
    +A cubic controller is a function where all value of the state vector enter
    +the computation plainly, squared, and raised to the third power. The powers
    +of their combinations do not exceed the third power, e.g., the controller is
    +a linear combination of A, B, A², AB, B², A³, A²B, B²A, and B³ if the state
    +has values A and B. The controller represents the multipliers for these
    +coefficients.
    +"""
    +
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +
    +from moptipyapps.dynamic_control.controller import Controller
    +from moptipyapps.dynamic_control.system import System
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __cubic_2d_1o(state: np.ndarray, _: float,
    +                  params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a cubic polynomial for 2d state spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the parameters of the polynomial.
    +    :param out: the control vector, receiving one single element
    +    """
    +    s0: Final[float] = state[0]
    +    s1: Final[float] = state[1]
    +    s02: Final[float] = s0 * s0
    +    s12: Final[float] = s1 * s1
    +    out[0] = (s0 * params[0]) + (s1 * params[1]) \
    +        + (s02 * params[2]) + (s0 * s1 * params[3]) + (s12 * params[4]) \
    +        + (s02 * s0 * params[5]) + (s02 * s1 * params[6]) \
    +        + (s0 * s12 * params[7]) + (s12 * s1 * params[8])
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __cubic_3d_1o(state: np.ndarray, _: float,
    +                  params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a cubic polynomial for 3d state spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the parameters of the polynomial.
    +    :param out: the control vector, receiving one single element
    +    """
    +    s0: Final[float] = state[0]
    +    s1: Final[float] = state[1]
    +    s2: Final[float] = state[2]
    +    s02: Final[float] = s0 * s0
    +    s12: Final[float] = s1 * s1
    +    s22: Final[float] = s2 * s2
    +    out[0] = (s0 * params[0]) + (s1 * params[1]) + (s2 * params[2]) \
    +        + (s02 * params[3]) + (s0 * s1 * params[4]) \
    +        + (s0 * s2 * params[5]) + (s12 * params[6]) \
    +        + (s1 * s2 * params[7]) + (s22 * params[8]) \
    +        + (s0 * s02 * params[9]) + (s02 * s1 * params[10]) \
    +        + (s02 * s2 * params[11]) + (s12 * s1 * params[12]) \
    +        + (s12 * s0 * params[13]) + (s12 * s2 * params[14]) \
    +        + (s22 * s2 * params[15]) + (s22 * s0 * params[16]) \
    +        + (s22 * s1 * params[17])
    +
    +
    +
    +[docs] +def cubic(system: System) -> Controller: + """ + Create a cubic controller for the given equations object. + + :param system: the equations object + :return: the cubic controller + """ + if system.control_dims != 1: + raise ValueError("invalid controller dimensions " + f"{system.control_dims} for {system!r}.") + name: Final[str] = "cubic" + if system.state_dims == 2: + return Controller(name, 2, 1, 9, __cubic_2d_1o) + if system.state_dims == 3: + return Controller(name, 3, 1, 19, __cubic_3d_1o) + raise ValueError("invalid state dimensions " + f"{system.state_dims} for {system!r}.")
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/controllers/linear.html b/_modules/moptipyapps/dynamic_control/controllers/linear.html new file mode 100644 index 00000000..15a5c682 --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/controllers/linear.html @@ -0,0 +1,66 @@ +moptipyapps.dynamic_control.controllers.linear — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.controllers.linear

    +"""
    +A linear controller.
    +
    +In a linear controller, all values of the state vector enter only as-is,
    +i.e., it is a linear combination of A and B if the state is composed of
    +the two values A and B. We then optimize the weights of these coefficients.
    +"""
    +
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +
    +from moptipyapps.dynamic_control.controller import Controller
    +from moptipyapps.dynamic_control.system import System
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __linear_2d_1o(state: np.ndarray, _: float,
    +                   params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a linear function for 2d state spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the parameters of the polynomial.
    +    :param out: the control vector, receiving one single element
    +    """
    +    out[0] = (state[0] * params[0]) + (state[1] * params[1])
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __linear_3d_1o(state: np.ndarray, _: float,
    +                   params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a linear function for 3d state spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the parameters of the polynomial.
    +    :param out: the control vector, receiving one single element
    +    """
    +    out[0] = (state[0] * params[0]) + (state[1] * params[1]) \
    +        + (state[2] * params[2])
    +
    +
    +
    +[docs] +def linear(system: System) -> Controller: + """ + Create a linear controller for the given equations object. + + :param system: the equations object + :return: the linear controller + """ + if system.control_dims != 1: + raise ValueError("invalid controller dimensions " + f"{system.control_dims} for {system!r}.") + name: Final[str] = "linear" + if system.state_dims == 2: + return Controller(name, 2, 1, 2, __linear_2d_1o) + if system.state_dims == 3: + return Controller(name, 3, 1, 3, __linear_3d_1o) + raise ValueError("invalid state dimensions " + f"{system.state_dims} for {system!r}.")
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/controllers/min_ann.html b/_modules/moptipyapps/dynamic_control/controllers/min_ann.html new file mode 100644 index 00000000..17b5a0d4 --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/controllers/min_ann.html @@ -0,0 +1,730 @@ +moptipyapps.dynamic_control.controllers.min_ann — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.controllers.min_ann

    +"""
    +Poor man's Artificial Neural Networks with minimized input.
    +
    +ANNs that include the state as input variable together with an additional
    +variable, say `z`. The controller output is then the value `z*` for which
    +the ANN takes on the smallest value (under the current state). In other
    +words, the ANN is supposed to model the system's objective function. The
    +idea is similar to :mod:`~moptipyapps.dynamic_control.controllers.ann`, but
    +instead of using the output of the ANNs as controller values, we use the value
    +`z*` for which the output of the ANN becomes minimal as controller value.
    +"""
    +
    +from typing import Final, Iterable
    +
    +import numba  # type: ignore
    +import numpy as np
    +from numpy import inf
    +
    +from moptipyapps.dynamic_control.controller import Controller
    +from moptipyapps.dynamic_control.system import System
    +
    +#: the golden ratio
    +PHI: Final[float] = 0.5 * (np.sqrt(5.0) + 1.0)
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __min_ann_3d_1o_1(state: np.ndarray, _: float,
    +                      params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Minimize a poor man's ANN for 3d-spaces with one layer containing 1 node.
    +
    +    We use :func:`numpy.arctan` as activation function. The output layer
    +    is just a weighted sum of the hidden layer and no other transformation
    +    is performed. The ANN has one additional parameter besides the `state`.
    +    We then find the value of this parameter for which the ANN takes on the
    +    smallest value via an iterated bracket - golden ratio search.
    +
    +    :param state: the current state of the system
    +    :param params: the weight vector for the neurons.
    +    :param out: the control vector, receiving one single element
    +    """
    +    hl_1_1_in: Final[float] = (state * params[0:3]).sum()
    +    x_3: Final[float] = params[3]
    +
    +# first estimate of the best value
    +    x_best: float = 0.0
    +    f_best: float = np.arctan(hl_1_1_in + x_3 * x_best)
    +
    +# now do bracketing
    +    x_low = x_a = -1000.0
    +    f_a: float = np.arctan(hl_1_1_in + x_3 * x_a)
    +    if f_a < f_best:
    +        x_best = x_a
    +        f_best = f_a
    +
    +    x_c = x_b = -990.0
    +    f_c = f_b = np.arctan(hl_1_1_in + x_3 * x_b)
    +    if f_b < f_best:
    +        x_best = x_b
    +        f_best = f_b
    +
    +# we try optimization in every single bracket we find
    +    found_bracket: bool = True
    +    ever_found_backet: bool = False
    +    while found_bracket:
    +
    +        found_bracket = False
    +        while x_b < 1000.0:
    +            x_c = x_b + 10.0
    +            f_c = np.arctan(hl_1_1_in + x_3 * x_c)
    +            if f_c < f_best:
    +                x_best = x_c
    +                f_best = f_c
    +            if (f_c > f_b) and (f_b < f_a):
    +                ever_found_backet = found_bracket = True
    +                break
    +            x_a = x_b
    +            f_a = f_b
    +            x_b = x_c
    +            f_b = f_c
    +
    +    # use huge range -1e3 ... 1e3
    +        if found_bracket:
    +            x_low = np.nextafter(x_a, inf)
    +            x_high = np.nextafter(x_c, -inf)
    +        elif ever_found_backet:
    +            break
    +        else:
    +            x_high = x_c
    +
    +    # golden ratio algorithm
    +        delta = x_high - x_low
    +        while delta > 1e-12:
    +            delta /= PHI
    +            x_cc = x_high - delta
    +
    +            f_cc: float = np.arctan(hl_1_1_in + x_3 * x_cc)
    +            if f_cc < f_best:
    +                x_best = x_cc
    +                f_best = f_cc
    +
    +            x_dd = x_low + delta
    +            f_dd: float = np.arctan(hl_1_1_in + x_3 * x_dd)
    +            if f_dd < f_best:
    +                x_best = x_dd
    +                f_best = f_dd
    +
    +            if f_cc < f_dd:
    +                x_high = np.nextafter(x_dd, -inf)
    +            else:
    +                x_low = np.nextafter(x_cc, inf)
    +            delta = x_high - x_low
    +
    +        # move forward to next bracket
    +        x_a = x_b
    +        f_a = f_b
    +        x_b = x_c
    +        f_b = f_c
    +
    +    out[0] = x_best
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __min_ann_2d_1o_1(state: np.ndarray, _: float,
    +                      params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Minimize a poor man's ANN for 2d-spaces with one layer containing 1 node.
    +
    +    We use :func:`numpy.arctan` as activation function. The output layer
    +    is just a weighted sum of the hidden layer and no other transformation
    +    is performed. The ANN has one additional parameter besides the `state`.
    +    We then find the value of this parameter for which the ANN takes on the
    +    smallest value via an iterated bracket - golden ratio search.
    +
    +    :param state: the current state of the system
    +    :param params: the weight vector for the neurons.
    +    :param out: the control vector, receiving one single element
    +    """
    +    hl_1_1_in: Final[float] = (state * params[0:2]).sum()
    +    x_2: Final[float] = params[2]
    +
    +# first estimate of the best value
    +    x_best: float = 0.0
    +    f_best: float = np.arctan(hl_1_1_in + x_2 * x_best)
    +
    +# now do bracketing
    +    x_low = x_a = -1000.0
    +    f_a: float = np.arctan(hl_1_1_in + x_2 * x_a)
    +    if f_a < f_best:
    +        x_best = x_a
    +        f_best = f_a
    +
    +    x_c = x_b = -990.0
    +    f_c = f_b = np.arctan(hl_1_1_in + x_2 * x_b)
    +    if f_b < f_best:
    +        x_best = x_b
    +        f_best = f_b
    +
    +# we try optimization in every single bracket we find
    +    found_bracket: bool = True
    +    ever_found_backet: bool = False
    +    while found_bracket:
    +
    +        found_bracket = False
    +        while x_b < 1000.0:
    +            x_c = x_b + 10.0
    +            f_c = np.arctan(hl_1_1_in + x_2 * x_c)
    +            if f_c < f_best:
    +                x_best = x_c
    +                f_best = f_c
    +            if (f_c > f_b) and (f_b < f_a):
    +                ever_found_backet = found_bracket = True
    +                break
    +            x_a = x_b
    +            f_a = f_b
    +            x_b = x_c
    +            f_b = f_c
    +
    +    # use huge range -1e3 ... 1e3
    +        if found_bracket:
    +            x_low = np.nextafter(x_a, inf)
    +            x_high = np.nextafter(x_c, -inf)
    +        elif ever_found_backet:
    +            break
    +        else:
    +            x_high = x_c
    +
    +    # golden ratio algorithm
    +        delta = x_high - x_low
    +        while delta > 1e-12:
    +            delta /= PHI
    +            x_cc = x_high - delta
    +
    +            f_cc: float = np.arctan(hl_1_1_in + x_2 * x_cc)
    +            if f_cc < f_best:
    +                x_best = x_cc
    +                f_best = f_cc
    +
    +            x_dd = x_low + delta
    +            f_dd: float = np.arctan(hl_1_1_in + x_2 * x_dd)
    +            if f_dd < f_best:
    +                x_best = x_dd
    +                f_best = f_dd
    +
    +            if f_cc < f_dd:
    +                x_high = np.nextafter(x_dd, -inf)
    +            else:
    +                x_low = np.nextafter(x_cc, inf)
    +            delta = x_high - x_low
    +
    +        # move forward to next bracket
    +        x_a = x_b
    +        f_a = f_b
    +        x_b = x_c
    +        f_b = f_c
    +
    +    out[0] = x_best
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __min_ann_3d_1o_2(state: np.ndarray, _: float,
    +                      params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Minimize a poor man's ANN for 3d-spaces with one layer containing 2 nodes.
    +
    +    We use :func:`numpy.arctan` as activation function. The output layer
    +    is just a weighted sum of the hidden layer and no other transformation
    +    is performed. The ANN has one additional parameter besides the `state`.
    +    We then find the value of this parameter for which the ANN takes on the
    +    smallest value via an iterated bracket - golden ratio search.
    +
    +    :param state: the current state of the system
    +    :param params: the weight vector for the neurons.
    +    :param out: the control vector, receiving one single element
    +    """
    +    hl_1_1_in: Final[float] = (state * params[0:3]).sum()
    +    x_3: Final[float] = params[3]
    +    x_4: Final[float] = params[4]
    +    hl_1_2_in: Final[float] = (state * params[5:8]).sum()
    +    x_8: Final[float] = params[8]
    +    x_9: Final[float] = params[9]
    +    x_10: Final[float] = params[10]
    +    x_11: Final[float] = params[11]
    +
    +# first estimate of the best value
    +    x_best: float = 0.0
    +    hl_1_1: float = np.arctan(hl_1_1_in + x_3 * x_best + x_4)
    +    hl_1_2: float = np.arctan(hl_1_2_in + x_8 * x_best + x_9)
    +    f_best: float = hl_1_1 * x_10 + hl_1_2 * x_11
    +
    +# now do bracketing
    +    x_low = x_a = -1000.0
    +    hl_1_1 = np.arctan(hl_1_1_in + x_3 * x_a + x_4)
    +    hl_1_2 = np.arctan(hl_1_2_in + x_8 * x_a + x_9)
    +    f_a: float = hl_1_1 * x_10 + hl_1_2 * x_11
    +    if f_a < f_best:
    +        x_best = x_a
    +        f_best = f_a
    +
    +    x_c = x_b = -990.0
    +    hl_1_1 = np.arctan(hl_1_1_in + x_3 * x_b + x_4)
    +    hl_1_2 = np.arctan(hl_1_2_in + x_8 * x_b + x_9)
    +    f_c = f_b = hl_1_1 * x_10 + hl_1_2 * x_11
    +    if f_b < f_best:
    +        x_best = x_b
    +        f_best = f_b
    +
    +# we try optimization in every single bracket we find
    +    found_bracket: bool = True
    +    ever_found_backet: bool = False
    +    while found_bracket:
    +
    +        found_bracket = False
    +        while x_b < 1000.0:
    +            x_c = x_b + 10.0
    +            hl_1_1 = np.arctan(hl_1_1_in + x_3 * x_c + x_4)
    +            hl_1_2 = np.arctan(hl_1_2_in + x_8 * x_c + x_9)
    +            f_c = hl_1_1 * x_10 + hl_1_2 * x_11
    +            if f_c < f_best:
    +                x_best = x_c
    +                f_best = f_c
    +            if (f_c > f_b) and (f_b < f_a):
    +                ever_found_backet = found_bracket = True
    +                break
    +            x_a = x_b
    +            f_a = f_b
    +            x_b = x_c
    +            f_b = f_c
    +
    +    # use huge range -1e3 ... 1e3
    +        if found_bracket:
    +            x_low = np.nextafter(x_a, inf)
    +            x_high = np.nextafter(x_c, -inf)
    +        elif ever_found_backet:
    +            break
    +        else:
    +            x_high = x_c
    +
    +    # golden ratio algorithm
    +        delta = x_high - x_low
    +        while delta > 1e-12:
    +            delta /= PHI
    +            x_cc = x_high - delta
    +
    +            hl_1_1 = np.arctan(hl_1_1_in + x_3 * x_cc + x_4)
    +            hl_1_2 = np.arctan(hl_1_2_in + x_8 * x_cc + x_9)
    +            f_cc: float = hl_1_1 * x_10 + hl_1_2 * x_11
    +            if f_cc < f_best:
    +                x_best = x_cc
    +                f_best = f_cc
    +
    +            x_dd = x_low + delta
    +            hl_1_1 = np.arctan(hl_1_1_in + x_3 * x_dd + x_4)
    +            hl_1_2 = np.arctan(hl_1_2_in + x_8 * x_dd + x_9)
    +            f_dd: float = hl_1_1 * x_10 + hl_1_2 * x_11
    +            if f_dd < f_best:
    +                x_best = x_dd
    +                f_best = f_dd
    +
    +            if f_cc < f_dd:
    +                x_high = np.nextafter(x_dd, -inf)
    +            else:
    +                x_low = np.nextafter(x_cc, inf)
    +            delta = x_high - x_low
    +
    +        # move forward to next bracket
    +        x_a = x_b
    +        f_a = f_b
    +        x_b = x_c
    +        f_b = f_c
    +
    +    out[0] = x_best
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __min_ann_2d_1o_2(state: np.ndarray, _: float,
    +                      params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Minimize a poor man's ANN for 2d-spaces with one layer containing 2 nodes.
    +
    +    We use :func:`numpy.arctan` as activation function. The output layer
    +    is just a weighted sum of the hidden layer and no other transformation
    +    is performed. The ANN has one additional parameter besides the `state`.
    +    We then find the value of this parameter for which the ANN takes on the
    +    smallest value via an iterated bracket - golden ratio search.
    +
    +    :param state: the current state of the system
    +    :param params: the weight vector for the neurons.
    +    :param out: the control vector, receiving one single element
    +    """
    +    hl_1_1_in: Final[float] = (state * params[0:2]).sum()
    +    x_2: Final[float] = params[2]
    +    x_3: Final[float] = params[3]
    +    hl_1_2_in: Final[float] = (state * params[4:6]).sum()
    +    x_6: Final[float] = params[6]
    +    x_7: Final[float] = params[7]
    +    x_8: Final[float] = params[8]
    +    x_9: Final[float] = params[9]
    +
    +# first estimate of the best value
    +    x_best: float = 0.0
    +    hl_1_1: float = np.arctan(hl_1_1_in + x_2 * x_best + x_3)
    +    hl_1_2: float = np.arctan(hl_1_2_in + x_6 * x_best + x_7)
    +    f_best: float = hl_1_1 * x_8 + hl_1_2 * x_9
    +
    +# now do bracketing
    +    x_low = x_a = -1000.0
    +    hl_1_1 = np.arctan(hl_1_1_in + x_2 * x_a + x_3)
    +    hl_1_2 = np.arctan(hl_1_2_in + x_6 * x_a + x_7)
    +    f_a: float = hl_1_1 * x_8 + hl_1_2 * x_9
    +    if f_a < f_best:
    +        x_best = x_a
    +        f_best = f_a
    +
    +    x_c = x_b = -990.0
    +    hl_1_1 = np.arctan(hl_1_1_in + x_2 * x_b + x_3)
    +    hl_1_2 = np.arctan(hl_1_2_in + x_6 * x_b + x_7)
    +    f_c = f_b = hl_1_1 * x_8 + hl_1_2 * x_9
    +    if f_b < f_best:
    +        x_best = x_b
    +        f_best = f_b
    +
    +# we try optimization in every single bracket we find
    +    found_bracket: bool = True
    +    ever_found_backet: bool = False
    +    while found_bracket:
    +
    +        found_bracket = False
    +        while x_b < 1000.0:
    +            x_c = x_b + 10.0
    +            hl_1_1 = np.arctan(hl_1_1_in + x_2 * x_c + x_3)
    +            hl_1_2 = np.arctan(hl_1_2_in + x_6 * x_c + x_7)
    +            f_c = hl_1_1 * x_8 + hl_1_2 * x_9
    +            if f_c < f_best:
    +                x_best = x_c
    +                f_best = f_c
    +            if (f_c > f_b) and (f_b < f_a):
    +                ever_found_backet = found_bracket = True
    +                break
    +            x_a = x_b
    +            f_a = f_b
    +            x_b = x_c
    +            f_b = f_c
    +
    +    # use huge range -1e3 ... 1e3
    +        if found_bracket:
    +            x_low = np.nextafter(x_a, inf)
    +            x_high = np.nextafter(x_c, -inf)
    +        elif ever_found_backet:
    +            break
    +        else:
    +            x_high = x_c
    +
    +    # golden ratio algorithm
    +        delta = x_high - x_low
    +        while delta > 1e-12:
    +            delta /= PHI
    +            x_cc = x_high - delta
    +
    +            hl_1_1 = np.arctan(hl_1_1_in + x_2 * x_cc + x_3)
    +            hl_1_2 = np.arctan(hl_1_2_in + x_6 * x_cc + x_7)
    +            f_cc: float = hl_1_1 * x_8 + hl_1_2 * x_9
    +            if f_cc < f_best:
    +                x_best = x_cc
    +                f_best = f_cc
    +
    +            x_dd = x_low + delta
    +            hl_1_1 = np.arctan(hl_1_1_in + x_2 * x_dd + x_3)
    +            hl_1_2 = np.arctan(hl_1_2_in + x_6 * x_dd + x_7)
    +            f_dd: float = hl_1_1 * x_8 + hl_1_2 * x_9
    +            if f_dd < f_best:
    +                x_best = x_dd
    +                f_best = f_dd
    +
    +            if f_cc < f_dd:
    +                x_high = np.nextafter(x_dd, -inf)
    +            else:
    +                x_low = np.nextafter(x_cc, inf)
    +            delta = x_high - x_low
    +
    +        # move forward to next bracket
    +        x_a = x_b
    +        f_a = f_b
    +        x_b = x_c
    +        f_b = f_c
    +
    +    out[0] = x_best
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __min_ann_3d_1o_3(state: np.ndarray, _: float,
    +                      params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Minimize a poor man's ANN for 3d-spaces with one layer containing 3 nodes.
    +
    +    We use :func:`numpy.arctan` as activation function. The output layer
    +    is just a weighted sum of the hidden layer and no other transformation
    +    is performed. The ANN has one additional parameter besides the `state`.
    +    We then find the value of this parameter for which the ANN takes on the
    +    smallest value via an iterated bracket - golden ratio search.
    +
    +    :param state: the current state of the system
    +    :param params: the weight vector for the neurons.
    +    :param out: the control vector, receiving one single element
    +    """
    +    hl_1_1_in: Final[float] = (state * params[0:3]).sum()
    +    x_3: Final[float] = params[3]
    +    x_4: Final[float] = params[4]
    +    hl_1_2_in: Final[float] = (state * params[5:8]).sum()
    +    x_8: Final[float] = params[8]
    +    x_9: Final[float] = params[9]
    +    hl_1_3_in: Final[float] = (state * params[10:13]).sum()
    +    x_13: Final[float] = params[13]
    +    x_14: Final[float] = params[14]
    +    x_15: Final[float] = params[15]
    +    x_16: Final[float] = params[16]
    +    x_17: Final[float] = params[17]
    +
    +# first estimate of the best value
    +    x_best: float = 0.0
    +    hl_1_1: float = np.arctan(hl_1_1_in + x_3 * x_best + x_4)
    +    hl_1_2: float = np.arctan(hl_1_2_in + x_8 * x_best + x_9)
    +    hl_1_3: float = np.arctan(hl_1_3_in + x_13 * x_best + x_14)
    +    f_best: float = hl_1_1 * x_15 + hl_1_2 * x_16 + hl_1_3 * x_17
    +
    +# now do bracketing
    +    x_low = x_a = -1000.0
    +    hl_1_1 = np.arctan(hl_1_1_in + x_3 * x_a + x_4)
    +    hl_1_2 = np.arctan(hl_1_2_in + x_8 * x_a + x_9)
    +    hl_1_3 = np.arctan(hl_1_3_in + x_13 * x_a + x_14)
    +    f_a = hl_1_1 * x_15 + hl_1_2 * x_16 + hl_1_3 * x_17
    +    if f_a < f_best:
    +        x_best = x_a
    +        f_best = f_a
    +
    +    x_c = x_b = -990.0
    +    hl_1_1 = np.arctan(hl_1_1_in + x_3 * x_b + x_4)
    +    hl_1_2 = np.arctan(hl_1_2_in + x_8 * x_b + x_9)
    +    hl_1_3 = np.arctan(hl_1_3_in + x_13 * x_b + x_14)
    +    f_c = f_b = hl_1_1 * x_15 + hl_1_2 * x_16 + hl_1_3 * x_17
    +    if f_b < f_best:
    +        x_best = x_b
    +        f_best = f_b
    +
    +# we try optimization in every single bracket we find
    +    found_bracket: bool = True
    +    ever_found_backet: bool = False
    +    while found_bracket:
    +
    +        found_bracket = False
    +        while x_b < 1000.0:
    +            x_c = x_b + 10.0
    +            hl_1_1 = np.arctan(hl_1_1_in + x_3 * x_c + x_4)
    +            hl_1_2 = np.arctan(hl_1_2_in + x_8 * x_c + x_9)
    +            hl_1_3 = np.arctan(hl_1_3_in + x_13 * x_c + x_14)
    +            f_c = hl_1_1 * x_15 + hl_1_2 * x_16 + hl_1_3 * x_17
    +            if f_c < f_best:
    +                x_best = x_c
    +                f_best = f_c
    +            if (f_c > f_b) and (f_b < f_a):
    +                ever_found_backet = found_bracket = True
    +                break
    +            x_a = x_b
    +            f_a = f_b
    +            x_b = x_c
    +            f_b = f_c
    +
    +    # use huge range -1e3 ... 1e3
    +        if found_bracket:
    +            x_low = np.nextafter(x_a, inf)
    +            x_high = np.nextafter(x_c, -inf)
    +        elif ever_found_backet:
    +            break
    +        else:
    +            x_high = x_c
    +
    +    # golden ratio algorithm
    +        delta = x_high - x_low
    +        while delta > 1e-12:
    +            delta /= PHI
    +            x_cc = x_high - delta
    +            hl_1_1 = np.arctan(hl_1_1_in + x_3 * x_cc + x_4)
    +            hl_1_2 = np.arctan(hl_1_2_in + x_8 * x_cc + x_9)
    +            hl_1_3 = np.arctan(hl_1_3_in + x_13 * x_cc + x_14)
    +            f_cc = hl_1_1 * x_15 + hl_1_2 * x_16 + hl_1_3 * x_17
    +            if f_cc < f_best:
    +                x_best = x_cc
    +                f_best = f_cc
    +
    +            x_dd = x_low + delta
    +            hl_1_1 = np.arctan(hl_1_1_in + x_3 * x_dd + x_4)
    +            hl_1_2 = np.arctan(hl_1_2_in + x_8 * x_dd + x_9)
    +            hl_1_3 = np.arctan(hl_1_3_in + x_13 * x_dd + x_14)
    +            f_dd = hl_1_1 * x_15 + hl_1_2 * x_16 + hl_1_3 * x_17
    +            if f_dd < f_best:
    +                x_best = x_dd
    +                f_best = f_dd
    +
    +            if f_cc < f_dd:
    +                x_high = np.nextafter(x_dd, -inf)
    +            else:
    +                x_low = np.nextafter(x_cc, inf)
    +            delta = x_high - x_low
    +
    +        # move forward to next bracket
    +        x_a = x_b
    +        f_a = f_b
    +        x_b = x_c
    +        f_b = f_c
    +
    +    out[0] = x_best
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __min_ann_2d_1o_3(state: np.ndarray, _: float,
    +                      params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Minimize a poor man's ANN for 2d-spaces with one layer containing 3 nodes.
    +
    +    We use :func:`numpy.arctan` as activation function. The output layer
    +    is just a weighted sum of the hidden layer and no other transformation
    +    is performed. The ANN has one additional parameter besides the `state`.
    +    We then find the value of this parameter for which the ANN takes on the
    +    smallest value via an iterated bracket - golden ratio search.
    +
    +    :param state: the current state of the system
    +    :param params: the weight vector for the neurons.
    +    :param out: the control vector, receiving one single element
    +    """
    +    hl_1_1_in: Final[float] = (state * params[0:2]).sum()
    +    x_2: Final[float] = params[2]
    +    x_3: Final[float] = params[3]
    +    hl_1_2_in: Final[float] = (state * params[4:6]).sum()
    +    x_6: Final[float] = params[6]
    +    x_7: Final[float] = params[7]
    +    hl_1_3_in: Final[float] = (state * params[8:10]).sum()
    +    x_10: Final[float] = params[10]
    +    x_11: Final[float] = params[11]
    +    x_12: Final[float] = params[12]
    +    x_13: Final[float] = params[13]
    +    x_14: Final[float] = params[14]
    +
    +# first estimate of the best value
    +    x_best: float = 0.0
    +    hl_1_1: float = np.arctan(hl_1_1_in + x_2 * x_best + x_3)
    +    hl_1_2: float = np.arctan(hl_1_2_in + x_6 * x_best + x_7)
    +    hl_1_3: float = np.arctan(hl_1_3_in + x_10 * x_best + x_11)
    +    f_best: float = hl_1_1 * x_12 + hl_1_2 * x_13 + hl_1_3 * x_14
    +
    +# now do bracketing
    +    x_low = x_a = -1000.0
    +    hl_1_1 = np.arctan(hl_1_1_in + x_2 * x_a + x_3)
    +    hl_1_2 = np.arctan(hl_1_2_in + x_6 * x_a + x_7)
    +    hl_1_3 = np.arctan(hl_1_3_in + x_10 * x_a + x_11)
    +    f_a: float = hl_1_1 * x_12 + hl_1_2 * x_13 + hl_1_3 * x_14
    +    if f_a < f_best:
    +        x_best = x_a
    +        f_best = f_a
    +
    +    x_c = x_b = -990.0
    +
    +    hl_1_1 = np.arctan(hl_1_1_in + x_2 * x_b + x_3)
    +    hl_1_2 = np.arctan(hl_1_2_in + x_6 * x_b + x_7)
    +    hl_1_3 = np.arctan(hl_1_3_in + x_10 * x_b + x_11)
    +    f_c = f_b = hl_1_1 * x_12 + hl_1_2 * x_13 + hl_1_3 * x_14
    +    if f_b < f_best:
    +        x_best = x_b
    +        f_best = f_b
    +
    +# we try optimization in every single bracket we find
    +    found_bracket: bool = True
    +    ever_found_backet: bool = False
    +    while found_bracket:
    +
    +        found_bracket = False
    +        while x_b < 1000.0:
    +            x_c = x_b + 10.0
    +            hl_1_1 = np.arctan(hl_1_1_in + x_2 * x_c + x_3)
    +            hl_1_2 = np.arctan(hl_1_2_in + x_6 * x_c + x_7)
    +            hl_1_3 = np.arctan(hl_1_3_in + x_10 * x_c + x_11)
    +            f_c = hl_1_1 * x_12 + hl_1_2 * x_13 + hl_1_3 * x_14
    +            if f_c < f_best:
    +                x_best = x_c
    +                f_best = f_c
    +            if (f_c > f_b) and (f_b < f_a):
    +                ever_found_backet = found_bracket = True
    +                break
    +            x_a = x_b
    +            f_a = f_b
    +            x_b = x_c
    +            f_b = f_c
    +
    +    # use huge range -1e3 ... 1e3
    +        if found_bracket:
    +            x_low = np.nextafter(x_a, inf)
    +            x_high = np.nextafter(x_c, -inf)
    +        elif ever_found_backet:
    +            break
    +        else:
    +            x_high = x_c
    +
    +    # golden ratio algorithm
    +        delta = x_high - x_low
    +        while delta > 1e-12:
    +            delta /= PHI
    +            x_cc = x_high - delta
    +            hl_1_1 = np.arctan(hl_1_1_in + x_2 * x_cc + x_3)
    +            hl_1_2 = np.arctan(hl_1_2_in + x_6 * x_cc + x_7)
    +            hl_1_3 = np.arctan(hl_1_3_in + x_10 * x_cc + x_11)
    +            f_cc: float = hl_1_1 * x_12 + hl_1_2 * x_13 + hl_1_3 * x_14
    +            if f_cc < f_best:
    +                x_best = x_cc
    +                f_best = f_cc
    +
    +            x_dd = x_low + delta
    +            hl_1_1 = np.arctan(hl_1_1_in + x_2 * x_dd + x_3)
    +            hl_1_2 = np.arctan(hl_1_2_in + x_6 * x_dd + x_7)
    +            hl_1_3 = np.arctan(hl_1_3_in + x_10 * x_dd + x_11)
    +            f_dd: float = hl_1_1 * x_12 + hl_1_2 * x_13 + hl_1_3 * x_14
    +            if f_dd < f_best:
    +                x_best = x_dd
    +                f_best = f_dd
    +
    +            if f_cc < f_dd:
    +                x_high = np.nextafter(x_dd, -inf)
    +            else:
    +                x_low = np.nextafter(x_cc, inf)
    +            delta = x_high - x_low
    +
    +        # move forward to next bracket
    +        x_a = x_b
    +        f_a = f_b
    +        x_b = x_c
    +        f_b = f_c
    +
    +    out[0] = x_best
    +
    +
    +
    +[docs] +def min_anns(system: System) -> Iterable[Controller]: + """ + Create poor man's ANNs for modeling the objective function. + + Based on the dimensionality of the state space, we generate a set of ANNs + with different numbers of layers and neurons. The weights of the neurons + can then directly be optimized by a numerical optimization algorithm. + This is, of course, probably much less efficient that doing some proper + learning like back-propagation. However, it allows us to easily plug the + ANNs into the same optimization routines as other controllers. + + :param system: the equations object + :return: the ANNs + """ + if system.control_dims != 1: + raise ValueError("invalid controller dimensions " + f"{system.control_dims} for {system!r}.") + if system.state_dims == 2: + return (Controller("min_ann_1", 2, 1, 3, __min_ann_2d_1o_1), + Controller("min_ann_2", 2, 1, 10, __min_ann_2d_1o_2), + Controller("min_ann_3", 2, 1, 15, __min_ann_2d_1o_3)) + if system.state_dims == 3: + return (Controller("min_ann_1", 3, 1, 4, __min_ann_3d_1o_1), + Controller("min_ann_2", 3, 1, 12, __min_ann_3d_1o_2), + Controller("min_ann_3", 3, 1, 18, __min_ann_3d_1o_3)) + raise ValueError("invalid state dimensions " + f"{system.state_dims} for {system!r}.")
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/controllers/partially_linear.html b/_modules/moptipyapps/dynamic_control/controllers/partially_linear.html new file mode 100644 index 00000000..1c7ccdfb --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/controllers/partially_linear.html @@ -0,0 +1,217 @@ +moptipyapps.dynamic_control.controllers.partially_linear — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.controllers.partially_linear

    +"""
    +Partially linear controllers.
    +
    +Partially linear controllers are encoded as sets of linear controllers and
    +anchor points. The anchors are coordinates in the state space. For each state,
    +the linear controller with the closest anchor point is used. In other words,
    +these controllers are basically choices among multiple
    +:mod:`~moptipyapps.dynamic_control.controllers.linear` controllers.
    +"""
    +
    +from typing import Final, Iterable
    +
    +import numba  # type: ignore
    +import numpy as np
    +
    +from moptipyapps.dynamic_control.controller import Controller
    +from moptipyapps.dynamic_control.system import System
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __linear_2d_1o_2(state: np.ndarray, _: float,
    +                     params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a double linear function for 2d state spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the parameters of the polynomial.
    +    :param out: the control vector, receiving one single element
    +    """
    +    s0: Final[float] = state[0]
    +    s1: Final[float] = state[1]
    +
    +    d: float = ((s0 - params[0]) ** 2.0) + ((s1 - params[1]) ** 2.0)
    +    o: float = (s0 * params[2]) + (s1 * params[3])
    +
    +    d2: float = ((s0 - params[4]) ** 2.0) + ((s1 - params[5]) ** 2.0)
    +    if d2 < d:
    +        o = (s0 * params[6]) + (s1 * params[7])
    +    out[0] = o
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __linear_3d_1o_2(state: np.ndarray, _: float,
    +                     params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a double linear function for 3d state spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the parameters of the polynomial.
    +    :param out: the control vector, receiving one single element
    +    """
    +    s0: Final[float] = state[0]
    +    s1: Final[float] = state[1]
    +    s2: Final[float] = state[2]
    +
    +    d: float = (((s0 - params[0]) ** 2.0) + ((s1 - params[1]) ** 2.0)
    +                + ((s2 - params[2]) ** 2.0))
    +    o: float = (s0 * params[3]) + (s1 * params[4]) + (s2 * params[5])
    +
    +    d2: float = (((s0 - params[6]) ** 2.0) + ((s1 - params[7]) ** 2.0)
    +                 + ((s2 - params[8]) ** 2.0))
    +    if d2 < d:
    +        o = (s0 * params[9]) + (s1 * params[10]) + (s2 * params[11])
    +
    +    out[0] = o
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __linear_2d_1o_3(state: np.ndarray, _: float,
    +                     params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a triple linear function for 2d state spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the parameters of the polynomial.
    +    :param out: the control vector, receiving one single element
    +    """
    +    s0: Final[float] = state[0]
    +    s1: Final[float] = state[1]
    +
    +    d: float = ((s0 - params[0]) ** 2.0) + ((s1 - params[1]) ** 2.0)
    +    o: float = (s0 * params[2]) + (s1 * params[3])
    +
    +    d2: float = ((s0 - params[4]) ** 2.0) + ((s1 - params[5]) ** 2.0)
    +    if d2 < d:
    +        o = (s0 * params[6]) + (s1 * params[7])
    +
    +    d2 = ((s0 - params[8]) ** 2.0) + ((s1 - params[9]) ** 2.0)
    +    if d2 < d:
    +        o = (s0 * params[10]) + (s1 * params[11])
    +
    +    out[0] = o
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __linear_3d_1o_3(state: np.ndarray, _: float,
    +                     params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a double linear function for 3d state spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the parameters of the polynomial.
    +    :param out: the control vector, receiving one single element
    +    """
    +    s0: Final[float] = state[0]
    +    s1: Final[float] = state[1]
    +    s2: Final[float] = state[2]
    +
    +    d: float = (((s0 - params[0]) ** 2.0) + ((s1 - params[1]) ** 2.0)
    +                + ((s2 - params[2]) ** 2.0))
    +    o: float = (s0 * params[3]) + (s1 * params[4]) + (s2 * params[5])
    +
    +    d2: float = (((s0 - params[6]) ** 2.0) + ((s1 - params[7]) ** 2.0)
    +                 + ((s2 - params[8]) ** 2.0))
    +    if d2 < d:
    +        o = (s0 * params[9]) + (s1 * params[10]) + (s2 * params[11])
    +
    +    d2 = (((s0 - params[12]) ** 2.0) + ((s1 - params[13]) ** 2.0)
    +          + ((s2 - params[14]) ** 2.0))
    +    if d2 < d:
    +        o = (s0 * params[15]) + (s1 * params[16]) + (s2 * params[17])
    +
    +    out[0] = o
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __linear_2d_1o_4(state: np.ndarray, _: float,
    +                     params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a quadruple linear function for 2d state spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the parameters of the polynomial.
    +    :param out: the control vector, receiving one single element
    +    """
    +    s0: Final[float] = state[0]
    +    s1: Final[float] = state[1]
    +
    +    d: float = ((s0 - params[0]) ** 2.0) + ((s1 - params[1]) ** 2.0)
    +    o: float = (s0 * params[2]) + (s1 * params[3])
    +
    +    d2: float = ((s0 - params[4]) ** 2.0) + ((s1 - params[5]) ** 2.0)
    +    if d2 < d:
    +        o = (s0 * params[6]) + (s1 * params[7])
    +
    +    d2 = ((s0 - params[8]) ** 2.0) + ((s1 - params[9]) ** 2.0)
    +    if d2 < d:
    +        o = (s0 * params[10]) + (s1 * params[11])
    +
    +    d2 = ((s0 - params[12]) ** 2.0) + ((s1 - params[13]) ** 2.0)
    +    if d2 < d:
    +        o = (s0 * params[14]) + (s1 * params[15])
    +
    +    out[0] = o
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __linear_3d_1o_4(state: np.ndarray, _: float,
    +                     params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a quadruple linear function for 3d state spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the parameters of the polynomial.
    +    :param out: the control vector, receiving one single element
    +    """
    +    s0: Final[float] = state[0]
    +    s1: Final[float] = state[1]
    +    s2: Final[float] = state[2]
    +
    +    d: float = (((s0 - params[0]) ** 2.0) + ((s1 - params[1]) ** 2.0)
    +                + ((s2 - params[2]) ** 2.0))
    +    o: float = (s0 * params[3]) + (s1 * params[4]) + (s2 * params[5])
    +
    +    d2: float = (((s0 - params[6]) ** 2.0) + ((s1 - params[7]) ** 2.0)
    +                 + ((s2 - params[8]) ** 2.0))
    +    if d2 < d:
    +        o = (s0 * params[9]) + (s1 * params[10]) + (s2 * params[11])
    +
    +    d2 = (((s0 - params[12]) ** 2.0) + ((s1 - params[13]) ** 2.0)
    +          + ((s2 - params[14]) ** 2.0))
    +    if d2 < d:
    +        o = (s0 * params[15]) + (s1 * params[16]) + (s2 * params[17])
    +
    +    d2 = (((s0 - params[18]) ** 2.0) + ((s1 - params[19]) ** 2.0)
    +          + ((s2 - params[20]) ** 2.0))
    +    if d2 < d:
    +        o = (s0 * params[21]) + (s1 * params[22]) + (s2 * params[23])
    +
    +    out[0] = o
    +
    +
    +
    +[docs] +def partially_linear(system: System) -> Iterable[Controller]: + """ + Create a several linear controllers for the given equations object. + + :param system: the equations object + :return: the partially linear controllers + """ + if system.control_dims != 1: + raise ValueError("invalid controller dimensions " + f"{system.control_dims} for {system!r}.") + if system.state_dims == 2: + return (Controller("linear_2", 2, 1, 8, __linear_2d_1o_2), + Controller("linear_3", 2, 1, 12, __linear_2d_1o_3), + Controller("linear_4", 2, 1, 16, __linear_2d_1o_4)) + if system.state_dims == 3: + return (Controller("linear_2", 3, 1, 12, __linear_3d_1o_2), + Controller("linear_3", 3, 1, 18, __linear_3d_1o_3), + Controller("linear_4", 3, 1, 24, __linear_3d_1o_4)) + raise ValueError("invalid state dimensions " + f"{system.state_dims} for {system!r}.")
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/controllers/peaks.html b/_modules/moptipyapps/dynamic_control/controllers/peaks.html new file mode 100644 index 00000000..ba778770 --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/controllers/peaks.html @@ -0,0 +1,169 @@ +moptipyapps.dynamic_control.controllers.peaks — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.controllers.peaks

    +"""
    +Peak functions.
    +
    +Instead of synthesizing :mod:`~moptipyapps.dynamic_control.controllers.ann`
    +with `arctan` as activation function, we here use `exp(-a²)` as activation
    +function. This function does not represent a transition from -1 to 1, but a
    +single peak around 0.
    +"""
    +
    +from typing import Final, Iterable
    +
    +import numba  # type: ignore
    +import numpy as np
    +
    +from moptipyapps.dynamic_control.controller import Controller
    +from moptipyapps.dynamic_control.system import System
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __peak(a: float) -> float:
    +    """
    +    Compute the peak function.
    +
    +    :param a: the input
    +    :return: the output
    +    """
    +    return np.exp(-(a * a))
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __peaks_2d_1o_1(state: np.ndarray, _: float,
    +                    params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a single peak for 2d-spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the weight vector for the neurons.
    +    :param out: the control vector, receiving one single element
    +    """
    +    out[0] = params[0] * __peak(params[1] + (params[2] * state[0])
    +                                + (params[3] * state[1]))
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __peaks_3d_1o_1(state: np.ndarray, _: float,
    +                    params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a single peak for 3d-spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the weight vector for the neurons.
    +    :param out: the control vector, receiving one single element
    +    """
    +    out[0] = params[0] * __peak(
    +        params[1] + (params[2] * state[0]) + (params[3] * state[1])
    +        + (params[4] * state[2]))
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __peaks_2d_1o_2(state: np.ndarray, _: float,
    +                    params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute two peaks for 2d-spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the weight vector for the neurons.
    +    :param out: the control vector, receiving one single element
    +    """
    +    s0: Final[float] = state[0]
    +    s1: Final[float] = state[1]
    +    out[0] = params[0] * __peak(params[1] + (params[2] * s0)
    +                                + (params[3] * s1)) \
    +        + params[4] * __peak(params[5] + (params[6] * s0)
    +                             + (params[7] * s1))
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __peaks_3d_1o_2(state: np.ndarray, _: float,
    +                    params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a two peaks for 3d-spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the weight vector for the neurons.
    +    :param out: the control vector, receiving one single element
    +    """
    +    s0: Final[float] = state[0]
    +    s1: Final[float] = state[1]
    +    s2: Final[float] = state[2]
    +    out[0] = params[0] * __peak(
    +        params[1] + (params[2] * s0) + (params[3] * s1) + (params[4] * s2))\
    +        + params[5] * __peak(
    +        params[6] + (params[7] * s0) + (params[8] * s1) + (params[9] * s2))
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __peaks_2d_1o_3(state: np.ndarray, _: float,
    +                    params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute three peaks for 2d-spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the weight vector for the neurons.
    +    :param out: the control vector, receiving one single element
    +    """
    +    s0: Final[float] = state[0]
    +    s1: Final[float] = state[1]
    +    out[0] = params[0] * __peak(params[1] + (params[2] * s0)
    +                                + (params[3] * s1)) \
    +        + params[4] * __peak(params[5] + (params[6] * s0)
    +                             + (params[7] * s1)) \
    +        + params[8] * __peak(params[9] + (params[10] * s0)
    +                             + (params[11] * s1))
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __peaks_3d_1o_3(state: np.ndarray, _: float,
    +                    params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a single peak for 3d-spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the weight vector for the neurons.
    +    :param out: the control vector, receiving one single element
    +    """
    +    s0: Final[float] = state[0]
    +    s1: Final[float] = state[1]
    +    s2: Final[float] = state[2]
    +    out[0] = params[0] * __peak(
    +        params[1] + (params[2] * s0) + (params[3] * s1) + (params[4] * s2))\
    +        + params[5] * __peak(
    +        params[6] + (params[7] * s0) + (params[8] * s1) + (params[9] * s2))\
    +        + params[10] * __peak(
    +        params[11] + (params[12] * s0) + (params[13] * s1)
    +        + (params[14] * s2))
    +
    +
    +
    +[docs] +def peaks(system: System) -> Iterable[Controller]: + """ + Create poor man's PNNs fitting to a given system. + + Based on the dimensionality of the state space, we generate a set of PNNs + with different numbers of layers and neurons. The weights of the neurons + can then directly be optimized by a numerical optimization algorithm. + This is, of course, probably much less efficient that doing some proper + learning like back-propagation. However, it allows us to easily plug the + PNNs into the same optimization routines as other controllers. + + :param system: the equations object + :return: the PNNs + """ + if system.control_dims != 1: + raise ValueError("invalid controller dimensions " + f"{system.control_dims} for {system!r}.") + if system.state_dims == 2: + return (Controller("peaks_1", 2, 1, 4, __peaks_2d_1o_1), + Controller("peaks_2", 2, 1, 8, __peaks_2d_1o_2), + Controller("peaks_3", 2, 1, 12, __peaks_2d_1o_3)) + if system.state_dims == 3: + return (Controller("peaks_1", 3, 1, 5, __peaks_3d_1o_1), + Controller("peaks_2", 3, 1, 10, __peaks_3d_1o_2), + Controller("peaks_3", 3, 1, 15, __peaks_3d_1o_3)) + raise ValueError("invalid state dimensions " + f"{system.state_dims} for {system!r}.")
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/controllers/predefined.html b/_modules/moptipyapps/dynamic_control/controllers/predefined.html new file mode 100644 index 00000000..070411bc --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/controllers/predefined.html @@ -0,0 +1,103 @@ +moptipyapps.dynamic_control.controllers.predefined — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.controllers.predefined

    +"""
    +A set of pre-defined controllers.
    +
    +In this module, we provide a set of pre-defined controllers taken from the
    +works of NOACK, CORNEJO MACEDA, LI, and SUN of the Harbin Institute of
    +Technology in Shenzhen, China (哈尔滨工业大学(深圳)). We ignore the
    +parameterizations offered in the original works and instead synthesize the
    +parameter values by ourselves.
    +
    +1. Yuxiang LI (李宇翔). Jet Mixing Enhancement using Deep Reinforcement
    +   Learning (基于深度强化学习的射流混合增强控制). MSc Thesis. Harbin Institute
    +   of Technology in Shenzhen, China (哈尔滨工业大学(深圳)).
    +   January 2023.
    +2. Wei SUN (孙伟). Wake Control of 1-2-3 Fluidic Pinball using Deep
    +   Reinforcement Learning (基于深度强化学习方法的 1-2-3 流体弹球尾流控制).
    +   MSc Thesis. Harbin Institute of Technology in Shenzhen, China
    +   (哈尔滨工业大学(深圳)). January 2023.
    +3. Guy Yoslan CORNEJO MACEDA, François LUSSEYRAN, and Bernd R. NOACK.
    +   xMLC: A Toolkit for Machine Learning Control, First Edition.
    +   Machine Learning Tools in Fluid Mechanics, Vol 2.
    +   Shenzhen & Paris; Universitätsbibliothek der Technischen Universität
    +   Braunschweig. 2022 https://doi.org/10.24355/dbbs.084-202208220937-0
    +"""
    +
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +
    +from moptipyapps.dynamic_control.controller import Controller
    +from moptipyapps.dynamic_control.system import System
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __cornejo_maceda(state: np.ndarray, _: float,
    +                     params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a parameterized version of Cornejo Maceda's Law.
    +
    +    See page 16, chapter 3.3.
    +
    +    :param state: the current state of the system
    +    :param params: the parameters of the polynomial.
    +    :param out: the control vector, receiving one single element
    +    """
    +    z = np.tanh(state[0] - state[1])
    +    b = params[0]
    +    z = np.tanh(1.0 if b == 0 else z / b)
    +    b = params[1]
    +    z = np.tanh(1.0 if b == 0 else z / b)
    +    b = params[2]
    +    out[0] = np.tanh(1.0 if b == 0 else z / b)
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __table_3_1_ga(state: np.ndarray, _: float,
    +                   params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute the law evolved by genetic algorithm in Table 3-1.
    +
    +    :param state: the current state of the system
    +    :param params: the parameters of the polynomial.
    +    :param out: the control vector, receiving one single element
    +    """
    +    out[0] = state[0] * params[0] + state[1] * params[1]
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __table_3_1_lgpc(state: np.ndarray, _: float,
    +                     params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute the law evolved by LGPC algorithm in Table 3-1.
    +
    +    :param state: the current state of the system
    +    :param params: the parameters of the polynomial.
    +    :param out: the control vector, receiving one single element
    +    """
    +    a: Final[float] = state[0] * params[0] + params[1]
    +    out[0] = params[2] * np.sin((params[3] / a) if (a != 0.0) else 1.0)
    +
    +
    +
    +[docs] +def predefined(system: System) -> tuple[Controller, ...]: + """ + Create a set of pre-defined controllers for the given equations object. + + :param system: the equations object + :return: the linear controller + """ + if system.control_dims != 1: + raise ValueError("invalid controller dimensions " + f"{system.control_dims} for {system!r}.") + if system.state_dims == 2: + return (Controller("cornejo_maceda", 2, 1, 3, __cornejo_maceda), ) + if system.state_dims == 3: + return (Controller("table_3_1_ga", 3, 1, 2, __table_3_1_ga), + Controller("table_3_1_lgpc", 3, 1, 4, __table_3_1_lgpc)) + raise ValueError("invalid state dimensions " + f"{system.state_dims} for {system!r}.")
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/controllers/quadratic.html b/_modules/moptipyapps/dynamic_control/controllers/quadratic.html new file mode 100644 index 00000000..a540b9a6 --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/controllers/quadratic.html @@ -0,0 +1,76 @@ +moptipyapps.dynamic_control.controllers.quadratic — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.controllers.quadratic

    +"""
    +A quadratic controller.
    +
    +A quadratic controller is a function where all value of the state vector enter
    +the computation plainly and squared. The powers of their combinations do not
    +exceed two, e.g., the controller is a linear combination of A, B, A², AB, and
    +B² if the state has values A and B. The controller represents the multipliers
    +for these coefficients.
    +"""
    +
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +
    +from moptipyapps.dynamic_control.controller import Controller
    +from moptipyapps.dynamic_control.system import System
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __quadratic_2d_1o(state: np.ndarray, _: float,
    +                      params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a quadratic function for 2d state spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the parameters of the polynomial.
    +    :param out: the control vector, receiving one single element
    +    """
    +    s0: Final[float] = state[0]
    +    s1: Final[float] = state[1]
    +    out[0] = (s0 * params[0]) + (s1 * params[1]) + (s0 * s0 * params[2]) \
    +        + (s0 * s1 * params[3]) + (s1 * s1 * params[4])
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __quadratic_3d_1o(state: np.ndarray, _: float,
    +                      params: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute a quadratic function for 3d state spaces.
    +
    +    :param state: the current state of the system
    +    :param params: the parameters of the polynomial.
    +    :param out: the control vector, receiving one single element
    +    """
    +    s0: Final[float] = state[0]
    +    s1: Final[float] = state[1]
    +    s2: Final[float] = state[2]
    +    out[0] = (s0 * params[0]) + (s1 * params[1]) + (s2 * params[2]) \
    +        + (s0 * s0 * params[3]) + (s0 * s1 * params[4]) \
    +        + (s0 * s2 * params[5]) + (s1 * s1 * params[6]) \
    +        + (s1 * s2 * params[7]) + (s2 * s2 * params[8])
    +
    +
    +
    +[docs] +def quadratic(system: System) -> Controller: + """ + Create a quadratic controller for the given equations object. + + :param system: the equations object + :return: the quadratic controller + """ + if system.control_dims != 1: + raise ValueError("invalid controller dimensions " + f"{system.control_dims} for {system!r}.") + name: Final[str] = "quadratic" + if system.state_dims == 2: + return Controller(name, 2, 1, 5, __quadratic_2d_1o) + if system.state_dims == 3: + return Controller(name, 3, 1, 9, __quadratic_3d_1o) + raise ValueError("invalid state dimensions " + f"{system.state_dims} for {system!r}.")
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/experiment_raw.html b/_modules/moptipyapps/dynamic_control/experiment_raw.html new file mode 100644 index 00000000..df1d399c --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/experiment_raw.html @@ -0,0 +1,153 @@ +moptipyapps.dynamic_control.experiment_raw — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.experiment_raw

    +"""
    +An example experiment for dynamic control.
    +
    +In this experiment, we try to synthesize (i.e., parameterize) controllers
    +(:mod:`~moptipyapps.dynamic_control.controller`) that steer a dynamic system
    +(:mod:`~moptipyapps.dynamic_control.system`) into a state by using a figure
    +of merit (:mod:`~moptipyapps.dynamic_control.objective`) which minimizes both
    +the squared system state and controller effort.
    +
    +A model-based experiment variant is given in
    +:mod:`~moptipyapps.dynamic_control.experiment_surrogate`.
    +"""
    +
    +import argparse
    +from os.path import basename, dirname
    +from typing import Any, Callable, Final, Iterable, cast
    +
    +import numpy as np
    +from moptipy.algorithms.so.vector.cmaes_lib import BiPopCMAES
    +from moptipy.api.execution import Execution
    +from moptipy.api.experiment import run_experiment
    +from moptipy.api.process import Process
    +from pycommons.io.path import Path, directory_path
    +
    +from moptipyapps.dynamic_control.controllers.ann import anns
    +from moptipyapps.dynamic_control.controllers.cubic import cubic
    +from moptipyapps.dynamic_control.controllers.linear import linear
    +from moptipyapps.dynamic_control.controllers.min_ann import min_anns
    +from moptipyapps.dynamic_control.controllers.partially_linear import (
    +    partially_linear,
    +)
    +from moptipyapps.dynamic_control.controllers.peaks import peaks
    +from moptipyapps.dynamic_control.controllers.predefined import predefined
    +from moptipyapps.dynamic_control.controllers.quadratic import quadratic
    +from moptipyapps.dynamic_control.instance import Instance
    +from moptipyapps.dynamic_control.objective import FigureOfMeritLE
    +from moptipyapps.dynamic_control.systems.lorenz import LORENZ_111
    +from moptipyapps.dynamic_control.systems.stuart_landau import STUART_LANDAU_111
    +from moptipyapps.shared import moptipyapps_argparser
    +
    +
    +
    +[docs] +def make_instances() -> Iterable[Callable[[], Instance]]: + """ + Create the instances to be used in the dynamic control experiment. + + :return: the instances to be used in the dynamic control experiment. + """ + res: list[Callable[[], Instance]] = [] + for system in (STUART_LANDAU_111, LORENZ_111): + controllers = [linear(system), quadratic(system), cubic(system)] + controllers.extend(anns(system)) + controllers.extend(min_anns(system)) + controllers.extend(partially_linear(system)) + controllers.extend(predefined(system)) + controllers.extend(peaks(system)) + res.extend(cast( + Callable[[], Instance], lambda _s=system, _c=controller: + Instance(_s, _c)) for controller in controllers) + return res
    + + + +
    +[docs] +def base_setup(instance: Instance) -> Execution: + """ + Create the basic setup. + + :param instance: the instance to use + :return: the basic execution + """ + return Execution().set_max_fes(512).set_log_all_fes(True)\ + .set_objective(FigureOfMeritLE(instance))
    + + + +
    +[docs] +def cmaes(instance: Instance) -> Execution: + """ + Create the Bi-Pop-CMA-ES setup. + + :param instance: the problem instance + :return: the setup + """ + space = instance.controller.parameter_space() + return base_setup(instance).set_solution_space(space)\ + .set_algorithm(BiPopCMAES(space))
    + + + +
    +[docs] +def on_completion(instance: Any, log_file: Path, process: Process) -> None: + """ + Plot the corresponding figures and print the objective value components. + + :param instance: the problem instance + :param log_file: the log file + :param process: the process + """ + inst: Final[Instance] = cast(Instance, instance) + dest_dir: Final[Path] = directory_path(dirname(log_file)) + base_name: str = basename(log_file) + base_name = base_name[:base_name.rindex(".")] + result: np.ndarray = cast(np.ndarray, process.create()) + process.get_copy_of_best_x(result) + j: Final[float] = process.get_best_f() + inst.describe_parameterization(f"F = {j}", result, base_name, dest_dir)
    + + + +
    +[docs] +def run(base_dir: str, n_runs: int = 5) -> None: + """ + Run the experiment. + + :param base_dir: the base directory + :param n_runs: the number of runs + """ + use_dir: Final[Path] = Path(base_dir) + use_dir.ensure_dir_exists() + instances: Final[Iterable[Callable[[], Instance]]] = make_instances() + for maker in instances: + inst: Instance = maker() + inst.system.describe_system_without_control(use_dir, True) + inst.system.plot_points(use_dir, True) + + run_experiment( + base_dir=use_dir, + instances=instances, + setups=[cmaes], + n_runs=n_runs, + perform_warmup=False, + perform_pre_warmup=False, + on_completion=on_completion)
    + + + +# Run the experiment from the command line +if __name__ == "__main__": + parser: Final[argparse.ArgumentParser] = moptipyapps_argparser( + __file__, "Dynamic Control", "Run the dynamic control experiment.") + parser.add_argument( + "dest", help="the directory to store the experimental results under", + type=Path, nargs="?", default="./results/") + args: Final[argparse.Namespace] = parser.parse_args() + run(args.dest) +
    diff --git a/_modules/moptipyapps/dynamic_control/experiment_surrogate.html b/_modules/moptipyapps/dynamic_control/experiment_surrogate.html new file mode 100644 index 00000000..84f50a88 --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/experiment_surrogate.html @@ -0,0 +1,250 @@ +moptipyapps.dynamic_control.experiment_surrogate — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.experiment_surrogate

    +"""
    +An example experiment for dynamic control using surrogate system models.
    +
    +In this experiment, we again try to synthesize (i.e., parameterize)
    +controllers (:mod:`~moptipyapps.dynamic_control.controller`) that steer a
    +dynamic system (:mod:`~moptipyapps.dynamic_control.system`) into a state by
    +using a figure of merit (:mod:`~moptipyapps.dynamic_control.objective`) which
    +minimizes both the squared system state and controller effort.
    +
    +The difference compared to :mod:`~moptipyapps.dynamic_control.experiment_raw`
    +is that we also try to synthesize a system model at the same time. We employ
    +the procedure detailed in
    +:mod:`~moptipyapps.dynamic_control.surrogate_optimizer` for this purpose.
    +
    +Word of advice: This experiment takes **extremely long** and needs
    +**a lot of memory**!
    +
    +The starting points of the work here were conversations with Prof. Dr. Bernd
    +NOACK and Guy Yoslan CORNEJO MACEDA of the Harbin Institute of Technology in
    +Shenzhen, China (哈尔滨工业大学(深圳)).
    +"""
    +
    +import argparse
    +from os.path import basename, dirname
    +from typing import Any, Callable, Final, Iterable, cast
    +
    +import numpy as np
    +from moptipy.api.execution import Execution
    +from moptipy.api.experiment import run_experiment
    +from moptipy.api.process import Process
    +from moptipy.spaces.vectorspace import VectorSpace
    +from pycommons.io.path import Path, directory_path
    +
    +from moptipyapps.dynamic_control.controllers.ann import make_ann
    +from moptipyapps.dynamic_control.instance import Instance
    +from moptipyapps.dynamic_control.objective import (
    +    FigureOfMerit,
    +    FigureOfMeritLE,
    +)
    +from moptipyapps.dynamic_control.surrogate_optimizer import (
    +    SurrogateOptimizer,
    +    _bpcmaes,
    +)
    +from moptipyapps.dynamic_control.system_model import SystemModel
    +from moptipyapps.dynamic_control.systems.lorenz import LORENZ_4
    +from moptipyapps.dynamic_control.systems.stuart_landau import STUART_LANDAU_4
    +from moptipyapps.dynamic_control.systems.three_coupled_oscillators import (
    +    THREE_COUPLED_OSCILLATORS,
    +)
    +from moptipyapps.shared import moptipyapps_argparser
    +
    +
    +
    +[docs] +def make_instances() -> Iterable[Callable[[], SystemModel]]: + """ + Create the instances to be used in the dynamic control experiment. + + :return: the instances to be used in the dynamic control experiment. + """ + res: list[Callable[[], SystemModel]] = [] + for system in [STUART_LANDAU_4, LORENZ_4, THREE_COUPLED_OSCILLATORS]: + sd: int = system.state_dims + sdp2: int = sd + 2 + ctrl_dims: int = system.control_dims + controllers = [ + make_ann(sd, ctrl_dims, [sd, sd]), + make_ann(sd, ctrl_dims, [sdp2, sdp2])] + res.extend(cast( + Callable[[], SystemModel], + lambda _s=system, _c=controller, _m=make_ann( + sd + system.control_dims, sd, ann_model): SystemModel( + _s, _c, _m)) for ann_model in [[sd, sd, sd], [ + sd, sd, sd, sd], [sdp2, sdp2, sdp2]] + for controller in controllers) + return res
    + + + +#: the total objective function evaluations +MAX_FES: Final[int] = 64 + + +
    +[docs] +def base_setup(instance: Instance) -> tuple[ + Execution, FigureOfMerit, VectorSpace]: + """ + Create the basic setup. + + :param instance: the instance to use + :return: the basic execution + """ + objective: Final[FigureOfMerit] = FigureOfMeritLE( + instance, isinstance(instance, SystemModel)) + space = instance.controller.parameter_space() + return Execution().set_max_fes(MAX_FES).set_log_all_fes(True)\ + .set_objective(objective).set_solution_space(space), objective, space
    + + + +
    +[docs] +def cmaes_raw(instance: Instance) -> Execution: + """ + Create the Bi-Pop-CMA-ES setup. + + :param instance: the problem instance + :return: the setup + """ + execution, _, space = base_setup(instance) + return execution.set_algorithm(_bpcmaes(space))
    + + + +
    +[docs] +def cmaes_surrogate(instance: SystemModel, + fes_for_warmup: int = 16, + fes_for_training: int = 128, + fes_per_model_run: int = 128, + fancy_logs: bool = True) -> Execution: + """ + Create the Bi-Pop-CMA-ES setup. + + :param instance: the problem instance + :param fes_for_warmup: the FEs to be used for warmup + :param fes_for_training: the milliseconds for training + :param fes_per_model_run: the milliseconds per model run + :param fancy_logs: should we do fancy logging? + :return: the setup + """ + execution, objective, space = base_setup(instance) + + return execution.set_solution_space(space).set_algorithm( + SurrogateOptimizer( + system_model=instance, + controller_space=space, + objective=objective, + fes_for_warmup=fes_for_warmup, + fes_for_training=fes_for_training, + fes_per_model_run=fes_per_model_run, + fancy_logs=fancy_logs, + warmup_algorithm=_bpcmaes, + model_training_algorithm=_bpcmaes, + controller_training_algorithm=_bpcmaes))
    + + + +
    +[docs] +def on_completion(instance: Any, log_file: Path, process: Process) -> None: + """ + Plot the corresponding figures and print the objective value components. + + :param instance: the problem instance + :param log_file: the log file + :param process: the process + """ + inst: Final[SystemModel] = cast(SystemModel, instance) + dest_dir: Final[Path] = directory_path(dirname(log_file)) + base_name: str = basename(log_file) + base_name = base_name[:base_name.rindex(".")] + result: np.ndarray = cast(np.ndarray, process.create()) + process.get_copy_of_best_x(result) + j: Final[float] = process.get_best_f() + inst.describe_parameterization(f"F = {j}", result, base_name, dest_dir)
    + + + +
    +[docs] +def run(base_dir: str, n_runs: int = 64) -> None: + """ + Run the experiment. + + :param base_dir: the base directory + :param n_runs: the number of runs + """ + use_dir: Final[Path] = Path(base_dir) + use_dir.ensure_dir_exists() + instances: Final[Iterable[Callable[[], SystemModel]]] = make_instances() + keep_instances: Final[list[Callable[[], Instance]]] = [] + raw_names: Final[set[str]] = set() + for maker in instances: + inst: Instance = maker() + raw: Instance = Instance(inst.system, inst.controller) + name: str = str(raw) + if name in raw_names: + continue + raw_names.add(name) + raw.system.describe_system_without_control(use_dir, True) + raw.system.plot_points(use_dir, True) + keep_instances.append(cast(Callable[[], Instance], lambda _i=raw: _i)) + + run_experiment( + base_dir=use_dir, + instances=keep_instances, + setups=[cmaes_raw], + n_runs=n_runs, + perform_warmup=False, + perform_pre_warmup=False, + on_completion=on_completion) + + setups: list[Callable[[Any], Execution]] = [] + total_training_fes: Final[int] = (MAX_FES - 1) * (2 ** 15) + total_on_model_fes: Final[int] = (MAX_FES - 1) * 2048 + + fe_choices: set[int] = {2 ** wfb for wfb in range(6)} + fe_choices.update(MAX_FES - (2 ** wfb) for wfb in range(6)) + + for warmup_fes in fe_choices: + if not (0 < warmup_fes < MAX_FES): + continue + training_fes: int = max(1, int(0.5 + (total_training_fes / ( + MAX_FES - warmup_fes)))) + on_model_fes: int = max(1, int(0.5 + (total_on_model_fes / ( + MAX_FES - warmup_fes)))) + + setups.append(cast( + Callable[[Any], Execution], + lambda i, __w=warmup_fes, __t=training_fes, __o=on_model_fes: + cmaes_surrogate(i, __w, __t, __o, True))) + + for runs in sorted({3, 5, 7, 11, 17, 23, 31, 51, n_runs}): + if runs > n_runs: + break + run_experiment( + base_dir=use_dir, + instances=instances, + setups=setups, + n_runs=runs, + perform_warmup=False, + perform_pre_warmup=False, + on_completion=on_completion)
    + + + +# Run the experiment from the command line +if __name__ == "__main__": + parser: Final[argparse.ArgumentParser] = moptipyapps_argparser( + __file__, "Dynamic Control", + "Run the dynamic control surrogate model experiment.") + parser.add_argument( + "dest", help="the directory to store the experimental results under", + type=Path, nargs="?", default="./results/") + args: Final[argparse.Namespace] = parser.parse_args() + run(args.dest) +
    diff --git a/_modules/moptipyapps/dynamic_control/instance.html b/_modules/moptipyapps/dynamic_control/instance.html new file mode 100644 index 00000000..e057ab49 --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/instance.html @@ -0,0 +1,133 @@ +moptipyapps.dynamic_control.instance — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.instance

    +"""
    +An instance of the dynamic control synthesis problem.
    +
    +An instance of the dynamic control synthesis problem is comprised of two
    +components: a :mod:`~moptipyapps.dynamic_control.system` of differential
    +equations governing how the state of a system changes over time and a
    +:mod:`~moptipyapps.dynamic_control.controller` that uses the current system
    +state as input and computes a controller value as output that influences the
    +state change. Notice that the controller here is a parametric function. The
    +goal of the dynamic system control is to find the right parameterization of
    +the controller such that an :mod:`~moptipyapps.dynamic_control.objective` is
    +minimized. The objective here usually has the goal to bring the dynamic system
    +into a stable state while using as little controller "energy" as possible.
    +
    +An instance of the simultaneous control and model synthesis problem is an
    +instance of the class :class:`~moptipyapps.dynamic_control.system_\
    +model.SystemModel`, which is a subclass of :class:`~moptipyapps.\
    +dynamic_control.instance.Instance`. It also adds a controller blueprint for
    +modelling the systems response (state differential) based on the system state
    +and controller output.
    +
    +The starting point of the work here were conversations with Prof. Dr. Bernd
    +NOACK and Guy Yoslan CORNEJO MACEDA of the Harbin Institute of Technology in
    +Shenzhen, China (哈尔滨工业大学(深圳)).
    +"""
    +
    +from typing import Final
    +
    +import numpy as np
    +from moptipy.api.component import Component
    +from moptipy.utils.logger import KeyValueLogSection
    +from moptipy.utils.strings import sanitize_name
    +from pycommons.io.path import Path
    +from pycommons.types import type_error
    +
    +from moptipyapps.dynamic_control.controller import Controller
    +from moptipyapps.dynamic_control.system import System
    +
    +
    +
    +[docs] +class Instance(Component): + """An instance of the dynamic control problem.""" + + def __init__(self, system: System, controller: Controller, + name_base: str | None = None) -> None: + """ + Create an instance of the dynamic control problem. + + :param system: the system of equations governing the dynamic system + :param controller: the controller applied to the system + :param name_base: the name base + """ + super().__init__() + if not isinstance(system, System): + raise type_error(system, "system", System) + if not isinstance(controller, Controller): + raise type_error(controller, "controller", Controller) + if controller.state_dims != system.state_dims: + raise ValueError( + f"controller.state_dims={controller.state_dims}, but " + f"system.state_dims={system.state_dims} for controller " + f"{str(controller)!r} and system {str(system)!r}.") + if controller.control_dims != system.control_dims: + raise ValueError( + f"controller.control_dims={controller.control_dims}, but " + f"system.control_dims={system.control_dims} for controller " + f"{str(controller)!r} and system {str(system)!r}.") + #: the system governing the dynamic system + self.system: Final[System] = system + #: the controller applied to the system + self.controller: Final[Controller] = controller + + name: str = f"{self.system}_{self.controller}" + if name_base is not None: + if not isinstance(name_base, str): + raise type_error(name_base, "name_base", (str, None)) + nn = sanitize_name(name_base) + if nn != name_base: + raise ValueError(f"sanitized name base {nn!r} different " + f"from original {name_base!r}.") + name = f"{name}_{name_base}" + #: the name of this instance + self.name: Final[str] = name + + def __str__(self) -> str: + """ + Get the name of this instance. + + :return: a combination of the equation name and the controller name + """ + return self.name + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log all parameters of this component as key-value pairs. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + with logger.scope("sys") as scope: + self.system.log_parameters_to(scope) + with logger.scope("ctrl") as scope: + self.controller.log_parameters_to(scope)
    + + +
    +[docs] + def describe_parameterization( + self, title: str | None, + parameters: np.ndarray, base_name: str, + dest_dir: str) -> tuple[Path, ...]: + """ + Describe the performance of a given system of system. + + :param title: the optional title + :param parameters: the controller parameters + :param base_name: the base name of the file to produce + :param dest_dir: the destination directory + :returns: the paths of the generated files + """ + the_title = self.controller.name + if title is not None: + the_title = f"{the_title}\n{title}" + return self.system.describe_system( + the_title, self.controller.controller, parameters, + base_name, dest_dir)
    +
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/model_objective.html b/_modules/moptipyapps/dynamic_control/model_objective.html new file mode 100644 index 00000000..2dbc1ff1 --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/model_objective.html @@ -0,0 +1,206 @@ +moptipyapps.dynamic_control.model_objective — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.model_objective

    +"""
    +An objective function that can be used to synthesize system models.
    +
    +We consider the dynamic system to be a function `D(s, c) = ds/dt`, where
    +
    +- `s` is the state vector (e.g., two-dimensional for the Stuart-Landau system,
    +  see :mod:`~moptipyapps.dynamic_control.systems.stuart_landau`, and
    +  three-dimensional for the Lorenz system, see
    +  :mod:`~moptipyapps.dynamic_control.systems.lorenz`),
    +- `c` is the control vector (one-dimensional in both cases), and
    +- `ds/dt` is the state differential (again two respectively three-dimensional).
    +
    +The :class:`~moptipyapps.dynamic_control.objective.FigureOfMerit` objective
    +function allows us to collect tuples of `(s,c)` and `ds/dt` vectors. So all we
    +need to do is to train a model `M` that receives as input a vector `x=(s,c)`
    +(where `(s,c)` be the concatenation of `s` and `c`) and fill as output a vector
    +`ds/dt`.
    +
    +The objective function in this module minimizes the root mean square error
    +over the model-computed `ds/dt` vectors and the actual `ds/dt` vectors.
    +The model objective function is used by the
    +:mod:`~moptipyapps.dynamic_control.surrogate_optimizer` algorithm.
    +"""
    +from typing import Callable, Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from moptipy.api.objective import Objective
    +from moptipy.utils.logger import KeyValueLogSection
    +from moptipy.utils.nputils import DEFAULT_FLOAT
    +
    +from moptipyapps.dynamic_control.controller import Controller
    +from moptipyapps.dynamic_control.objective import FigureOfMerit
    +
    +
    +@numba.njit(cache=False, inline="always", fastmath=True, boundscheck=False)
    +def _evaluate(x: np.ndarray, pin: np.ndarray, pout: np.ndarray,
    +              temp_1: np.ndarray, temp_2: np.ndarray,
    +              eq: Callable[[np.ndarray, float, np.ndarray,
    +                            np.ndarray], None]) -> float:
    +    """
    +    Compute the RMSE differences between expected and actual model output.
    +
    +    :param x: the model parameterization
    +    :param pin: the input vectors
    +    :param pout: the expected output vectors, flattened
    +    :param temp_1: the long temporary array to receive the result values
    +    :param temp_2: the temporary array to receive the state output
    +    :param eq: the equations
    +    :return: the mean of the `log(x+1)` of the squared differences `x`
    +
    +    >>> vx = np.array([0.5, 0.2], float)
    +    >>> vpin = np.array([[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]], float)
    +    >>> vpout = np.array([[10, 5], [14, 9], [18, 8]], float)
    +    >>> vtemp_1 = np.empty(3, float)
    +    >>> vtemp_2 = np.empty(2, float)
    +    >>> @numba.njit(cache=False, inline="always", fastmath=True)
    +    ... def _func(lstate: np.ndarray, _: float, lx: np.ndarray,
    +    ...           lout: np.ndarray) -> None:
    +    ...     lout[:] = (lstate[0:2] * lx[0]) - lx[1] - lstate[-1]
    +    >>> _evaluate(vx, vpin, vpout, vtemp_1, vtemp_2, _func)
    +    22.680823177337874
    +    >>> y_1_1 = ((0 * 0.5) - 0.2 - 3) - 10
    +    >>> y_1_2 = ((1 * 0.5) - 0.2 - 3) - 5
    +    >>> r_1 = y_1_1 ** 2 + y_1_2 ** 2
    +    >>> y_2_1 = ((4 * 0.5) - 0.2 - 7) - 14
    +    >>> y_2_2 = ((5 * 0.5) - 0.2 - 7) - 9
    +    >>> r_2 = y_2_1 ** 2 + y_2_2 ** 2
    +    >>> y_3_1 = ((8 * 0.5) - 0.2 - 11) - 18
    +    >>> y_3_2 = ((9 * 0.5) - 0.2 - 11) - 8
    +    >>> r_3 = y_3_1 ** 2 + y_3_2 ** 2
    +    >>> np.sqrt(np.array([r_1, r_2, r_3])).mean()
    +    22.680823177337874
    +    """
    +    for i, row in enumerate(pin):  # iterate over all row=(s, c) tuples
    +        eq(row, 0.0, x, temp_2)  # store the equation results
    +        temp_1[i] = np.square(np.subtract(temp_2, pout[i], temp_2),
    +                              temp_2).sum()
    +    return np.sqrt(temp_1, temp_1).mean()
    +
    +
    +
    +[docs] +class ModelObjective(Objective): + """ + The objective for modeling. + + This objective function works on sequences of tuples `(s, c)` of the + system state `s` and controller output `c` as well as the corresponding + `ds/dt` differentials. The goal is to train a model `M(s, c, q)` that will + compute the `ds/dt` values reasonably accurately. The model is + parameterized with some vector `q`, think of `M` being, e.g., an + artificial neural network and `q` being its weight vector. To find good + values of `q`, this objective here computes the squared differences + between the values `M(s, c, q)` and the expected outputs `ds/dt`. + + These squared differences are then either averaged directly or the + `expm1(mean(logp1(...))))` hack of the + :class:`~moptipyapps.dynamic_control.objective.FigureOfMeritLE` is used to + alleviate the impact of large differentials, depending on which "real" + (controller-synthesis) objective is passed into the constructor). + + The tuples `(s, c)` and `ds/dt` are pulled from the real objective with + the method :meth:`~moptipyapps.dynamic_control.model_objective.\ +ModelObjective.begin`. The `ds/dt` rows are flattened for performance reasons. + """ + + def __init__(self, real: FigureOfMerit, + model: Controller) -> None: + """ + Create a model objective compatible to the given figure of merit. + + :param real: the objective used for the real optimization problem + :param model: the model + """ + #: the equations of the model + self.__equations: Callable[[np.ndarray, float, np.ndarray, + np.ndarray], None] = model.controller + #: the result + self.__temp_1: np.ndarray | None = None + #: the input + self.__in: np.ndarray | None = None + #: the output + self.__out: np.ndarray | None = None + #: the differentials getter + self.__get_differentials: Final[Callable[[], tuple[ + np.ndarray, np.ndarray]]] = real.get_differentials + #: the temporary array + self.__temp_2: Final[np.ndarray] = np.empty( + real.instance.system.state_dims, DEFAULT_FLOAT) + #: the real figure of merit name + self.__real_name: Final[str] = str(real) + +
    +[docs] + def begin(self) -> None: + """ + Begin a model optimization run. + + This function pulls the training data from the actual + controller-synthesis objective function, which is an instance of + :class:`~moptipyapps.dynamic_control.objective.FigureOfMerit`, via the + method :meth:`~moptipyapps.dynamic_control.objective.FigureOfMerit.\ +get_differentials` and allocates internal data structures accordingly. + """ + self.__in, self.__out = self.__get_differentials() + self.__temp_1 = np.empty(len(self.__out), self.__out.dtype)
    + + +
    +[docs] + def evaluate(self, x: np.ndarray) -> float: + """ + Evaluate a model parameterization. + + :param x: the model parameterization + :return: the objective value + """ + return _evaluate(x, self.__in, self.__out, self.__temp_1, + self.__temp_2, self.__equations)
    + + +
    +[docs] + def end(self) -> None: + """End a model optimization run and free the associated memory.""" + self.__temp_1 = None + self.__in = None + self.__out = None
    + + + def __str__(self) -> str: + """ + Get the name of this objective. + + :return: the name of this objective + """ + return "modelRMSE" + +
    +[docs] + def lower_bound(self) -> float: + """ + Get the lower bound of the model objective, which is `0`. + + :returns: 0.0 + """ + return 0.0
    + + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log all parameters of this component as key-value pairs. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + logger.key_value("figureOfMeritName", self.__real_name) + logger.key_value("nSamples", + 0 if self.__in is None else len(self.__in))
    +
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/objective.html b/_modules/moptipyapps/dynamic_control/objective.html new file mode 100644 index 00000000..fb8c17c5 --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/objective.html @@ -0,0 +1,348 @@ +moptipyapps.dynamic_control.objective — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.objective

    +"""
    +An objective functions for the dynamic control problem.
    +
    +The dynamic control problem means that our system starts in a given state
    +and we try to move it to a stable state by using control effort. Controllers
    +are trained over several training states, for each of which we can compute a
    +figure of merit.
    +
    +We offer two different approaches for this:
    +
    +- :class:`FigureOfMerit` computes the arithmetic mean `z` over the separate
    +  figures of merit `J` of the training cases.
    +- :class:`FigureOfMeritLE` tries to smooth out the impact of bad starting
    +  states by computing `exp(mean[log(J + 1)]) - 1`.
    +
    +These objective functions also offer a way to collect the state+control and
    +corresponding differential vectors.
    +"""
    +
    +from math import expm1
    +from typing import Callable, Final
    +
    +import numpy as np
    +from moptipy.api.objective import Objective
    +from moptipy.utils.logger import KeyValueLogSection
    +from moptipy.utils.nputils import array_to_str
    +from pycommons.types import type_error
    +
    +from moptipyapps.dynamic_control.instance import Instance
    +from moptipyapps.dynamic_control.ode import diff_from_ode, j_from_ode, run_ode
    +from moptipyapps.shared import SCOPE_INSTANCE
    +
    +
    +
    +[docs] +class FigureOfMerit(Objective): + """A base class for figures of merit.""" + + def __init__(self, instance: Instance, + supports_model_mode: bool = False) -> None: + """ + Create the figure-of-merit objective of the dynamic control problem. + + :param instance: the instance + :param supports_model_mode: `True` if this objective is supposed to + support alternating actual and model-based runs, `False` if it is + just applied to the actual instance (see :meth:`set_model` and + :meth:`get_differentials`). + """ + super().__init__() + if not isinstance(instance, Instance): + raise type_error(instance, "instance", Instance) + #: the dynamic control instance + self.instance: Final[Instance] = instance + #: the simulation steps + self.__steps: Final[int] = instance.system.training_steps + #: the training time + self.__time: Final[float] = instance.system.training_time + #: the training starting states + self.__training: Final[np.ndarray] = \ + instance.system.training_starting_states + #: the results + self.__results: Final[np.ndarray] = np.empty( + len(self.__training), float) + #: the equations + self.__equations: Callable[[ + np.ndarray, float, np.ndarray, np.ndarray], None] = \ + instance.system.equations + #: the controller + self.__controller: Final[Callable[[ + np.ndarray, float, np.ndarray, np.ndarray], None]] = \ + instance.controller.controller + #: the controller dimension + self.__controller_dim: Final[int] = instance.controller.control_dims + #: the collection of state+control vectors + self.__collection_sc: Final[list[np.ndarray] | None] \ + = [] if supports_model_mode else None + #: the collection of differential vectors + self.__collection_df: Final[list[np.ndarray] | None] \ + = [] if supports_model_mode else None + #: should we collect data? + self.__collect: bool = self.__collection_df is not None + #: the state dimensions inside the `J` + self.__state_dims_in_j: Final[int] = instance.system.state_dims_in_j + #: the weight of the control effort + self.__gamma: Final[float] = instance.system.gamma + +
    +[docs] + def initialize(self) -> None: + """Initialize the objective for use.""" + super().initialize() + if self.__collection_df is not None: + self.__collection_df.clear() + if self.__collection_sc is not None: + self.__collection_sc.clear() + self.set_raw()
    + + +
    +[docs] + def set_raw(self) -> None: + """ + Let this objective work on the original system equations. + + The objective function here can be used in two modi: a) based on the + original systems model, as given in + :attr:`~moptipyapps.dynamic_control.instance.Instance.system`, or b) + on a learned model of the system. This function here toggles to the + former mode, i.e., to the actual system mode. In this modus, training + data for training the system model will be gathered if the objective + function is configured to do so. In that case, you can toggle to model + mode via :meth:`set_model`. + """ + self.__equations = self.instance.system.equations + self.__collect = self.__collection_sc is not None
    + + +
    +[docs] + def get_differentials(self) -> tuple[np.ndarray, np.ndarray]: + """ + Get the collected differentials. + + If `supports_model_mode` was set to `True` in the creating of this + objective function, then the system will gather tuples `(s, c)` and + `ds/dt` when in raw mode (see :meth:`set_raw`) and make them available + here to train system models (see :meth:`set_model`). Notice that + gathering training data is a very memory intense process. + + :returns: the collected differentials + """ + clsc: Final[list[np.ndarray] | None] = self.__collection_sc + cldf: Final[list[np.ndarray] | None] = self.__collection_df + if clsc is None: + raise ValueError("Differential collection not supported.") + if len(clsc) == 1: + return clsc[0], cldf[0] # pylint: disable=E1136 + sc: Final[np.ndarray] = np.concatenate(clsc) # pylint: disable=E1133 + df: Final[np.ndarray] = np.concatenate(cldf) # pylint: disable=E1133 + clsc.clear() + clsc.append(sc) + cldf.clear() + cldf.append(df) + return sc, df
    + + +
    +[docs] + def set_model(self, equations: Callable[[ + np.ndarray, float, np.ndarray, np.ndarray], None]) -> None: + """ + Set the model-driven mode for the evaluation. + + In this modus, the internal system equations are replaced by the + callable `equations` passed into this function and the data collection + is stopped. The idea is that `equations` could be a model synthesized + on the data gathered (see :meth:`get_differentials`) and thus does not + represent the actual dynamic system but a model thereof. We could + synthesize a controller for this model and for this purpose would use + the exactly same objective function -- just instead of using the + actual system equations, we use the system model. Of course, we then + need to deactivate the data gathering mechanism (see again + :meth:`get_differentials`), because the data would then not be real + system data. You can toggle back to the actual system using + :meth:`set_raw`. + + :param equations: the equations to be used instead of the actual + system's differential equations. + """ + if self.__collection_sc is None: + raise ValueError("Cannot go into model mode without gathering " + "model training data!") + self.__equations = equations + self.__collect = False
    + + + def __str__(self) -> str: + """ + Get the name of this objective function. + + :return: `figureOfMerit` + """ + return "figureOfMerit" + + def __append(self, data: tuple[np.ndarray, np.ndarray]) -> None: + """ + Internally collect the data. + + :param data: the data to collect + """ + self.__collection_sc.append(data[0]) + self.__collection_df.append(data[1]) + +
    +[docs] + def evaluate(self, x: np.ndarray) -> float: + """ + Evaluate the parameterization of a controller. + + :param x: the controller parameters + :return: the figure of merit + """ + steps: Final[int] = self.__steps + time: Final[float] = self.__time + training: Final[np.ndarray] = self.__training + results: Final[np.ndarray] = self.__results + equations: Final[Callable[[ + np.ndarray, float, np.ndarray, np.ndarray], None]] \ + = self.__equations + controller: Final[ + Callable[[np.ndarray, float, np.ndarray, np.ndarray], None]] \ + = self.__controller + controller_dim: Final[int] = self.__controller_dim + collector: Final[Callable[[tuple[ + np.ndarray, np.ndarray]], None] | None] = \ + self.__append if self.__collect else None + state_dim: Final[int] = len(training[0]) + state_dims_in_j: Final[int] = self.__state_dims_in_j + gamma: Final[float] = self.__gamma + + for i, start in enumerate(training): + # The following line makes no sense at all. It creates a copy of + # the flattened version of the (already flat) start. The copy is + # stored nowhere, so it is immediately discarded. The value of + # start is not changed. However, the numpy array container + # changes, for an unclear reason. This is required and it must + # happen exactly here, for an unclear reason. Otherwise, the + # results of the objective function are inconsistent. For an + # unclear reason. + np.copy(start.flatten()) # <--- This should make no sense... + the_ode = run_ode( + start, equations, controller, x, controller_dim, steps, time) + results[i] = z = j_from_ode( + the_ode, state_dim, state_dims_in_j, gamma) + if not (0.0 <= z <= 1e100): + return 1e200 + if collector is not None: + collector(diff_from_ode(the_ode, state_dim)) + z = self.sum_up_results(results) + return z if 0.0 <= z <= 1e100 else 1e200
    + + +
    +[docs] + def sum_up_results(self, results: np.ndarray) -> float: + """ + Compute the final objective value from several single `J` values. + + When synthesizing controllers, we do not just apply them to a single + simulation run. Instead, we use multiple training cases (see + :attr:`~moptipyapps.dynamic_control.system.System.\ +training_starting_states`) and perform :attr:`~moptipyapps.dynamic_control\ +.system.System.training_steps` simulation steps on each of them. Each such + training starting state will result in a single `J` value, which is + the sum of squared state and control values. We now compute the end + objective value from these different `J` values by using this + function here. + + This will *destroy* the contents of `results`. + + :param results: the array of `J` values + :return: the final result + """ + return float(results.mean())
    + + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log all parameters of this component as key-value pairs. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + logger.key_value("modelModeEnabled", self.__collection_sc is not None) + logger.key_value("dataCollecting", self.__collect) + eq: Final = self.__equations + logger.key_value("usingOriginalEquations", + eq is self.instance.system.equations) + mp: Final[str] = "modelParameters" + if hasattr(self.__equations, mp): + logger.key_value(mp, array_to_str(getattr(eq, mp))) + with logger.scope(SCOPE_INSTANCE) as scope: + self.instance.log_parameters_to(scope)
    + + +
    +[docs] + def lower_bound(self) -> float: + """ + Get the lower bound of the figure of merit, which is 0. + + :returns: 0.0 + """ + return 0.0
    +
    + + + +
    +[docs] +class FigureOfMeritLE(FigureOfMerit): + """ + Compute a `exp(mean(log(z+1)))-1` over the figures of merit `z`. + + Different from :class:`FigureOfMerit`, we compute the mean of `log(z + 1)` + where `z` be the figures of merit of the single training cases. We then + return `exp(mean[log(z + 1)]) - 1` as final result. The goal is to reduce + the impact of training cases that require more control effort. + + If we solve the dynamic control problem for diverse training cases, then + we may have some very easy cases, where the system just needs a small + control impulse to move into a stable and cheap state. Others may have + very far out and expensive starting states that require lots of control + efforts to be corrected. If we simply average over all states, then these + expensive states will dominate whatever good we are doing in the cheap + states. Averaging over the `log(J+1)` reduces such impact. We then compute + `exp[...]-1` of the result as cosmetics to get back into the original + range of the figure of merits. + """ + + def __str__(self) -> str: + """ + Get the name of this objective function. + + :return: `figureOfMeritLE` + """ + return "figureOfMeritLE" + +
    +[docs] + def sum_up_results(self, results: np.ndarray) -> float: + """ + Compute the final objective value from several single `J` values. + + For each training case, there is one basic figure of merit `J` and + here we compute `exp(mean[log(J + 1)]) - 1` over all of these values. + + :param results: the array of `J` values + :return: the final result + """ + return float(expm1(np.log1p(results, results).mean()))
    +
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/ode.html b/_modules/moptipyapps/dynamic_control/ode.html new file mode 100644 index 00000000..d6302b3e --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/ode.html @@ -0,0 +1,647 @@ +moptipyapps.dynamic_control.ode — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.ode

    +"""
    +A primitive integrator for systems of ordinary differential equations.
    +
    +Many dynamic systems can be modeled as systems of ordinary differential
    +equations that govern their progress over time. Trying to find out in
    +which state such systems are at a given point in time means to integrate
    +these equations until that point in time (starting from a starting state).
    +
    +What we want to play around with, however, is synthesizing controllers.
    +In this case, the differential equations also merge the output of the
    +controller with the current state. If the controller behaves inappropriately,
    +this may make the system diverge, i.e., some of its state variables go to
    +infinity over time or sometimes rather quickly.
    +
    +Using ODE integrators that compute the system state at pre-defined time steps
    +is thus cumbersome, as the system may have already exploded at these goal
    +times. Therefore, we perform ODE integration in several steps. First, we try
    +it the "normal" way. However, as soon as the system escapes the sane parameter
    +range, we stop. We then use the last point where the system was stable and the
    +first point where it escaped the reasonable range to estimate a new reasonable
    +end time for the integration. We do this until we finally succeed.
    +
    +Thus, we can simulate a well-behaved system over a long time and an
    +ill-behaved system for a shorter time period. Neither system will diverge.
    +
    +The following functions are provided:
    +
    +- :func:`run_ode` executes a set of differential system equations and
    +  controller equations and returns an array with the system state, controller
    +  output, and time at the different interpolation steps.
    +- :func:`t_from_ode` returns the total time over which the result of
    +  :func:`run_ode` was simulated.
    +- :func:`j_from_ode` returns a figure of merit, i.e., a weighted sum of (a
    +  part of) the system state and the controller output from the result of
    +  :func:`run_ode`.
    +- :func:`diff_from_ode` extracts state difference information from the result
    +  of :func:`run_ode`.
    +"""
    +
    +from math import fsum, inf
    +from typing import Callable, Final, Iterable, TypeVar
    +
    +import numba  # type: ignore
    +import numpy as np
    +from scipy.integrate import RK45, DenseOutput  # type: ignore
    +
    +#: the type variable for ODE controller parameters
    +T = TypeVar("T")
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def _is_ok(x: np.ndarray) -> bool:
    +    """
    +    Check whether all values in a vector are acceptable.
    +
    +    A vector is "ok" if all of its elements are from the finite range
    +    `(-1e10, 1e10)`.  Anything else indicates that we are somehow moving
    +    out of the reasonable bounds.
    +
    +    :param x: the vector
    +    :return: `True` if all values are OK, `False` otherwise
    +    """
    +    for xx in x:  # noqa: SIM110
    +        if not -1e10 < xx < 1e10:
    +            return False
    +    return True
    +
    +
    +class __IntegrationState:
    +    """
    +    The internal integrator state class.
    +
    +    This class serves two purposes. First, it encapsulates the system
    +    equations and the controller equations such that they can be called as a
    +    unit. Second, it raises an alert if the system escapes the "OK" state,
    +    i.e., diverge towards infinity. As long as everything is OK,
    +    :attr:`is_ok` will remain `True`. But if either the controller or the
    +    system state escapes the acceptable interval, it becomes `False`.
    +    In that case, :attr:`max_ok_t` holds the highest `t` value at which
    +    the system and controller were in an acceptable state and
    +    :attr:`min_error_t` holds the smallest `t` value at which that was not
    +    the case. We can assume that somewhere inbetween lies the last moment we
    +    can find the system in a sane state.
    +    """
    +
    +    def __init__(self,
    +                 equations: Callable[[
    +                     np.ndarray, float, np.ndarray, np.ndarray], None],
    +                 controller: Callable[[
    +                     np.ndarray, float, T, np.ndarray], None],
    +                 parameters: T, controller_dim: int) -> None:
    +        """
    +        Create the integrator.
    +
    +        :param equations: the differential system
    +        :param controller: the controller function
    +        :param parameters: the controller parameters
    +        :param controller_dim: the dimension of the controller result
    +        """
    +        self.__equations: Final[Callable[[
    +            np.ndarray, float, np.ndarray, np.ndarray], None]] = equations
    +        self.__controller: Final[Callable[[
    +            np.ndarray, float, T, np.ndarray], None]] = controller
    +        self.__parameters: Final[T] = parameters
    +        self.__ctrl: Final[np.ndarray] = np.empty(controller_dim)
    +        self.max_ok_t: float = -inf
    +        self.min_error_t: float = inf
    +        self.is_ok: bool = True
    +
    +    def init(self) -> None:
    +        """Prepare the system for integration."""
    +        self.max_ok_t = -inf
    +        self.min_error_t = inf
    +        self.is_ok = True
    +
    +    def f(self, t: float, state: np.ndarray) -> np.ndarray:
    +        """
    +        Compute the differential at the given state and time.
    +
    +        First, we invoke the controller function at the state and time. Then
    +        we pass the controller vector to the differential equations to update
    +        the system state.
    +        This function also checks if the state or control go out of bounds
    +        and if they do, it sets the :attr:`is_ok` to `False`.
    +
    +        :param t: the time
    +        :param state: the state
    +        :return: the differential
    +        """
    +        out: Final[np.ndarray] = np.zeros_like(state)  # allocate output vec
    +        ctrl: Final[np.ndarray] = self.__ctrl  # the controller vector
    +
    +        # invoke the controller
    +        self.__controller(state, t, self.__parameters, ctrl)
    +        ok: bool = _is_ok(ctrl)  # is the controller vector ok?
    +        if ok:  # if yes, let's invoke the state update equations
    +            self.__equations(state, t, ctrl, out)
    +            ok = _is_ok(out)  # and check if their result is ok
    +        if ok:  # is it ok?
    +            if self.max_ok_t < t < self.min_error_t:
    +                self.max_ok_t = t
    +        else:  # no: there was some error, either in state or controller
    +            self.is_ok = False  # then we are no longer OK
    +            self.min_error_t = min(self.min_error_t, t)
    +            if self.max_ok_t > t:  # what? an earlier error?
    +                self.max_ok_t = np.nextafter(t, -inf)  # ok, reset ok time
    +
    +        return out
    +
    +
    +
    +[docs] +def run_ode(starting_state: np.ndarray, + equations: Callable[[ + np.ndarray, float, np.ndarray, np.ndarray], None], + controller: Callable[[np.ndarray, float, T, np.ndarray], None], + parameters: T, controller_dim: int = 1, + steps: int = 5000, max_time: float = 50.0) -> np.ndarray: + """ + Simulate a set of controlled differential system. + + The system begins in the starting state stored in the vector + `starting_state`. In each time step, first, the `controller` is invoked. + It receives the current system state vector as input, the current time + `t`, its parameters (`parameters`), and an output array to store its + computed control values into. This array has dimension `controller_dim`, + which usually is `1`. Then, the function `system` will be called and + receives the current state vector, the time step `t`, and the controller + output as input, as well as an output array to store the result of the + differential into. This output array has the same dimension as the state + vector. + + Now the `run_ode` function simulates such a system over `steps` time steps + over the closed interval `[0, max_time]`. If both the system and the + controller are well-behaved, then the output array will contain `steps` + rows with the state, controller, and time information of each step. If + the system diverges at some point in time but we can simulate it + reasonably well before that, then we try to simulate `steps`, but on a + shorter time frame. If even that fails, you will get a single row output + with `1e100` as the controller value. + + This function returns a matrix where each row corresponds to a simulated + time step. Each row contains three components in a concatenated fashion: + 1. the state vector, + 2. the control vector, + 3. the time value + + :param starting_state: the starting + :param equations: the differential system + :param controller: the controller function + :param parameters: the controller parameters + :param controller_dim: the dimension of the controller result + :param steps: the number of steps to simulate + :param max_time: the maximum time to simulate for + :returns: a matrix where each row represents a point in time, composed of + the current state, the controller output, and the length of the time + slice + + If we simulate the flight of a projectile with our ODE execution, then + both the flight time as well as the flight length are about 0.12% off from + what the mathematical solution of the flight system prescribe. That's + actually not bad for a crude and fast integration method... + + >>> v = 100.0 + >>> angle = np.deg2rad(45.0) + >>> v_x = v * np.cos(angle) + >>> print(f"{v_x:.10f}") + 70.7106781187 + >>> v_y = v * np.sin(angle) + >>> print(f"{v_y:.10f}") + 70.7106781187 + >>> def projectile(position, ttime, ctrl, out): + ... out[0] = 70.71067811865474 + ... out[1] = 70.71067811865474 - ttime * 9.80665 + >>> param = 0.0 # ignore + >>> def contrl(position, ttime, params, dest): + ... dest[0] = 0.0 # controller that does nothing + >>> strt = np.array([0.0, 1.0]) + >>> ode = run_ode(strt, projectile, contrl, param, 1, 10000) + >>> print(len(ode)) + 10000 + >>> time_of_flight = 2 * v_y / 9.80665 + >>> print(f"{time_of_flight:.10f}") + 14.4209649817 + >>> travel_distance_x = time_of_flight * v_x + >>> print(f"{travel_distance_x:.10f}") + 1019.7162129779 + >>> idx = np.argwhere(ode[:, 1] <= 0.0)[0][0] + >>> print(idx) + 2887 + >>> print(f"{ode[idx - 1, 0]:.10f}") + 1020.4571309653 + >>> print(f"{ode[idx, 0]:.10f}") + 1020.8107197148 + >>> print(f"{ode[idx - 1, -1]:.10f}") + 14.4314431443 + >>> print(f"{ode[idx, -1]:.10f}") + 14.4364436444 + >>> print(ode[-1, -1]) + 50.0 + + >>> def contrl2(position, ttime, params, dest): + ... dest[0] = 1e50 # controller that is ill-behaved + >>> run_ode(strt, projectile, contrl2, param, 1, 10000) + array([[0.e+000, 1.e+000, 1.e+100, 0.e+000]]) + + >>> def contrl3(position, ttime, params, dest): + ... dest[0] = 1e50 if ttime > 10 else 0.0 # diverging controller + >>> ode = run_ode(strt, projectile, contrl3, param, 1, 10000) + >>> print(len(ode)) + 10000 + >>> print(ode[-1]) + [690.10677249 224.06765771 0. 9.75958357] + + >>> def projectile2(position, ttime, ctrl, out): + ... out[:] = 0 + >>> ode = run_ode(strt, projectile2, contrl, param, 1, 10000) + >>> print(len(ode)) + 10000 + >>> print(ode[-1]) + [ 0. 1. 0. 50.] + >>> ode = run_ode(strt, projectile2, contrl3, param, 1, 10000) + >>> print(len(ode)) + 10000 + >>> print(ode[-1]) + [0. 1. 0. 9.41234557] + """ + func_state: Final[__IntegrationState] = __IntegrationState( + equations, controller, parameters, controller_dim) + func_call: Final[Callable[[float, np.ndarray], np.ndarray]] = func_state.f + denses: Final[list[DenseOutput]] = [] + n: Final[int] = len(starting_state) + dim: Final[int] = n + controller_dim + 1 + + cycle: int = 0 + while True: # loop until we have a sane integration over a sane range + cycle += 1 + # first, we reset all the state information + func_state.init() # reset the function state + denses.clear() # always discard all interpolators, if there are any + + # then we create the integrator for the time range that we simulate + integration = RK45( + fun=func_call, t0=0.0, y0=starting_state, t_bound=max_time, + max_step=steps) + is_finished: bool = False + + # perform the integration and collect all the points at which stuff + # was computed + while True: # iteratively add interpolation points + integration.step() # do the integration step + if not func_state.is_ok: + break # some out-of-bounds thing happened! quit! + is_finished = integration.status == "finished" + is_running: bool = integration.status == "running" + if is_finished or is_running: # keep taking interpolator + denses.append(integration.dense_output()) + if is_finished: + break # we are finished, so we quit and build output + continue # more integration to do, so we go on + break # if we get here, there was an error: quit + + if is_finished and func_state.is_ok: + # if we get here, everything looks fine so far, so we can try + # to build the output + result: np.ndarray = np.zeros((steps, dim)) + point: np.ndarray = result[0] + point[0:n] = starting_state + + # we now compute all the points by using the interpolation + # we start with the first point + controller(starting_state, 0.0, parameters, point[n:-1]) + if not _is_ok(point): + break + result[:, -1] = np.linspace(0.0, max_time, steps) + + j: int = 0 # the index of the dense interpolator to use + n_dense: int = len(denses) # the number of interpolators + t: float = 0.0 # the current time + dense: DenseOutput = denses[j] # the current interpolator + for point in result[1:]: # for each of the remaining points... + last_time: float = t # remember the last successful point + t = point[-1] # get the time value + + # we now need to find the right interpolator if we have left + # the range of the current interpolator + while not (dense.t_min <= t <= dense.t_max): + j += 1 # step counter + if j >= n_dense: # we have left the interpolation range?? + func_state.max_ok_t = last_time # so we need to adjust + func_state.min_error_t = t + is_finished = False # and try the whole thing again + break + dense = denses[j] # pick next interpolator + + if is_finished: # if we get here, we got a right interpolator + point[0:n] = dense(t) # so we can interpolate the state + controller(point[0:n], t, parameters, point[n:-1]) + if not _is_ok(point): # is there an error in the vector? + func_state.max_ok_t = last_time # last ok time + func_state.min_error_t = t # error time + is_finished = False # we need to quit and try again + break # stop inner loop + + if is_finished: # did we succeed? + return result # yes! return the result. + + # if we arrive here, things went wrong somehow. + # this means that we should reduce the maximum runtime + if (cycle < 3) and (func_state.max_ok_t < func_state.min_error_t): + max_time = np.nextafter(min(func_state.min_error_t, ( + 0.8 * func_state.max_ok_t) + (0.2 * func_state.min_error_t)), + -inf) + else: # the small reductions did not work out well ... reduce rapidly + max_time = np.nextafter(0.7 * min(func_state.max_ok_t, + max_time), -inf) + + if (cycle > 4) or (max_time <= 1e-10): + break # if we get here, everything seems so pointless... + + # the default error result + result = np.zeros((1, dim)) + result[0, 0:n] = starting_state + result[0, n:-1] = 1e100 + result[0, -1] = 0.0 + return result
    + + + +@numba.njit(cache=True, inline="always", fastmath=False, boundscheck=False) +def __j_from_ode_compute(ode: np.ndarray, state_dim: int, + use_state_dims: int, + gamma: float, + dest: np.ndarray) -> None: + """ + Prepare the input array for the figure of merit computation. + + The `ode` matrix contains one row for each time step. + The row is composed of the current state, the current controller output, + and the current time. + However, all systems of a given simulation start in the same initial + state, so it makes little sense to include this initial state into the + figure of merit computation. It does make sense to include the control + output at that moment, though, because it contributes to the next state. + It also makes no sense to count in the last row of the ODE computation, + because this is the final system state and the system will not spend any + time in it in the simulation. + + :param ode: the output array from the ODE simulation + :param state_dim: the state dimension + :param use_state_dims: the dimension until which the state is used + :param gamma: the weight for the control variable + :param dest: the destination array + + >>> od = np.array([[1, 2, 3, 4, 0], + ... [5, 6, 7, 8, 1], + ... [9, 6, 4, 3, 3], + ... [7, 4, 2, 1, 7]]) + >>> sta_dim = 3 + >>> dst = np.empty((od.shape[0] - 1) * (od.shape[1] - 1) - sta_dim) + >>> __j_from_ode_compute(od, sta_dim, sta_dim, 0.1, dst) + >>> print(dst) + [ 1.6 12.8 98. 72. 50. 3.6 64. 144. 324. ] + >>> rs = np.array([0.1 * 1 * 4 * 4, + ... 0.1 * 2 * 8 * 8, 2 * 7 * 7, 2 * 6 * 6, 2 * 5 * 5, + ... 0.1 * 4 * 3 * 3, 4 * 4 * 4, 4 * 6 * 6, 4 * 9 * 9]) + >>> print(rs) + [ 1.6 12.8 98. 72. 50. 3.6 64. 144. 324. ] + >>> u_sta_dim = 2 + >>> dst = np.empty((od.shape[0] - 1) * ( + ... od.shape[1] - 1 - sta_dim + u_sta_dim) - u_sta_dim) + >>> __j_from_ode_compute(od, sta_dim, u_sta_dim, 1.0, dst) + >>> print(dst) + [ 16. 128. 72. 50. 36. 144. 324.] + """ + index: int = 0 + start: Final[int] = ode.shape[1] - 2 + + # from now on, we compute the impact of the state and the controller + add_state: bool = False + last_row: np.ndarray = ode[0] + for i in range(1, len(ode)): + next_row: np.ndarray = ode[i] + weight: float = next_row[-1] - last_row[-1] + inner = start + weight_01: float = weight * gamma + while inner >= state_dim: + v = last_row[inner] + inner -= 1 + dest[index] = (v * v) * weight_01 if -1e100 < v < 1e100 else 1e100 + index += 1 + + if add_state: + inner = use_state_dims # jump to the used state + while inner > 0: + inner -= 1 + v = last_row[inner] + dest[index] = (v * v) * weight if -1e100 < v < 1e100 else 1e100 + index += 1 + + add_state = True + last_row = next_row + + +
    +[docs] +def t_from_ode(ode: np.ndarray) -> float: + """ + Get the time sum from an ODE solution. + + The total time that we simulate a system depends on the behavior of the + system. + + :param ode: the ODE solution, as return from :func:`run_ode`. + :return: the total consumed time + + >>> od = np.array([[1, 2, 3, 4, 0.1], + ... [5, 6, 7, 8, 0.2], + ... [9, 6, 4, 3, 0.3], + ... [7, 4, 2, 1, 0.4]]) + >>> print(t_from_ode(od)) + 0.4 + """ + return ode[-1, -1]
    + + + +
    +[docs] +def j_from_ode(ode: np.ndarray, state_dim: int, + use_state_dims: int = -1, + gamma: float = 0.1) -> float: + """ + Compute the original figure of merit from an ODE array. + + The figure of merit is the sum of state variable squares plus 0.1 times + the control variable squares. We disregard the state variable values of + the starting states (because they are the same for all controllers on + a given training case and because the control cannot influence them) and + we also disregard the final state and final controller output (as there is + no time slice associated with them, i.e., we only "arrive" in them but + basically spent 0 time in them in our simulation). + + :param ode: the array returned by the ODE function, i.e., :func:`run_ode` + :param state_dim: the state dimension + :param use_state_dims: the dimension until which the state is used, + `-1` for using the complete state + :param gamma: the weight of the controller input + :return: the figure of merit + + >>> od = np.array([[1, 2, 3, 4, 0], + ... [5, 6, 7, 8, 1], + ... [9, 6, 4, 3, 3], + ... [7, 4, 2, 1, 7]]) + >>> sta_dim = 3 + >>> print(f"{j_from_ode(od, sta_dim):.10f}") + 110.0000000000 + >>> print((1.6 + 12.8 + 98 + 72 + 50 + 3.6 + 64 + 144 + 324) / 7) + 110.0 + >>> sta_dim = 3 + >>> print(f"{j_from_ode(od, 3, 2, 0.5):.10f}") + 97.1428571429 + >>> print((8 + 64 + 72 + 50 + 18 + 144 + 324) / 7) + 97.14285714285714 + """ + if len(ode) <= 1: + return 1e200 + # The used state dimension could be equal to the state dimension or less. + # If it is <= 0, then we use the complete state vector + if use_state_dims <= 0: + use_state_dims = state_dim + dest: Final[np.ndarray] = np.empty((ode.shape[0] - 1) * ( + ode.shape[1] - 1 - state_dim + use_state_dims) - use_state_dims) + __j_from_ode_compute(ode, state_dim, use_state_dims, gamma, dest) + return fsum(dest) / ode[-1, -1]
    + + + +
    +[docs] +def multi_run_ode( + test_starting_states: Iterable[np.ndarray], + training_starting_states: Iterable[np.ndarray], + collector: Callable[[int, np.ndarray, float, float], None] | Iterable[ + Callable[[int, np.ndarray, float, float], None]], + equations: Callable[[ + np.ndarray, float, np.ndarray, np.ndarray], None], + controller: Callable[[np.ndarray, float, T, np.ndarray], None], + parameters: T, controller_dim: int = 1, + test_steps: int = 5000, + test_time: float = 50.0, + training_steps: int = 5000, + training_time: float = 50.0, + use_state_dims: int = -1, gamma: float = 0.1) -> None: + """ + Invoke :func:`run_ode` multiple times and pass the result to `collector`. + + This function allows us to perform multiple runs of the differential + equation simulator, using different starting points. It also allows us to + distinguish training and test points and to assign them different numbers + of steps. For each of them, :func:`run_ode` will be applied and the + returned matrix is passed to the `collector` function. + + :param test_starting_states: the iterable of test starting states + :param training_starting_states: the iterable of training starting states + :param collector: the destination to receive the results, in the form of + index, ode array, j, and t. + :param equations: the differential system + :param controller: the controller function + :param parameters: the controller parameters + :param controller_dim: the dimension of the controller result + :param test_steps: the number of test steps to simulate + :param test_time: the time limit for tests + :param training_steps: the number of training steps to simulate + :param training_time: the time limit for training + :param use_state_dims: the dimension until which the state is used, + `-1` for using the complete state + :param gamma: the weight of the controller input + """ + if not isinstance(collector, Iterable): + collector = (collector, ) + index: int = 0 + for sp in test_starting_states: + ode = run_ode(sp, equations, controller, parameters, controller_dim, + test_steps, test_time) + for c in collector: + c(index, ode, j_from_ode(ode, len(sp), use_state_dims, gamma), + t_from_ode(ode)) + index += 1 + for sp in training_starting_states: + ode = run_ode(sp, equations, controller, parameters, controller_dim, + training_steps, training_time) + for c in collector: + c(index, ode, j_from_ode(ode, len(sp), use_state_dims, gamma), + t_from_ode(ode)) + index += 1
    + + + +
    +[docs] +def diff_from_ode(ode: np.ndarray, state_dim: int) \ + -> tuple[np.ndarray, np.ndarray]: + """ + Compute all the state+control vectors and the resulting differentials. + + This function returns two matrices. Each row of both matrices corresponds + to a time slot. Each row in the first matrix holds the state vector and + the control vector (that was computed by the controller). The + corresponding row in the second matrix then holds the state differential + resulting from the control vector being applied in the differential + equations that govern the system state change. + + The idea is that this function basically provides the data that we would + like to learn when training a surrogate model for a system: From the + current state and the computed control vector, we want that our model can + give us the resulting system differential. If we have such a model and it + works reasonably well, then we could essentially plug this model into + :func:`run_ode` instead of the original `equations` parameter. + + What this function does to compute the differential is to basically + "invert" the dynamic weighting done by :func:`run_ode`. :func:`run_ode` + starts in a given starting state `s`. It then computes the control vector + `c` as a function of `s`, i.e., `c(s)`. Then, the equations of the dynamic + system (see module :mod:`~moptipyapps.dynamic_control.system`) to compute + the state differential `D=ds/dt` as a function of `c(s)` and `s`, i.e., as + something like `D(s, c(s))`. The next step would be to update the state, + i.e., to set `s=s+D(s, c(s))`. Unfortunately, this can make `s` go to + infinity. So :func:`run_ode` will compute a dynamic weight `w` and do + `s=s+w*D(s, c(s))`, where `w` is chosen such that the state vector `s` + does not grow unboundedly. While `s` and `c(s)` and `w` are stored in one + row of the result matrix of :func:`run_ode`, `s+w*D(s,c(s))` is stored as + state `s` in the next row. So what this function here basically does is to + subtract the old state from the next state and divide the result by `w` to + get `D(s, c(s))`. `s` and `c(s)` are already available directly in the ODE + result and `w` is not needed anymore. + + We then get the rows `s, c(s)` and `D(s, c(s))` in the first and second + result matrix, respectively. This can then be used to train a system model + as proposed in model :mod:`~moptipyapps.dynamic_control.system_model`. + + :param ode: the result of :func:`run_ode` + :param state_dim: the state dimensions + :returns: a tuple of the state+control vectors and the resulting + state differential vectors + + >>> od = np.array([ + ... [0, 0, 0, 0, 0, 0], # state 0,0,0; control 0,0; time 0 + ... [1, 2, 3, 4, 5, 1], # state 1,2,3; control 4,5; time 1 + ... [2, 3, 4, 5, 6, 3], # state 2,3,4; control 5,6; time 3 + ... [4, 6, 8, 7, 7, 7]]) # state 4,6,8; control 7,7, time 7 + >>> res = diff_from_ode(od, 3) + >>> res[0] # state and control vectors, time col and last row removed + array([[0, 0, 0, 0, 0], + [1, 2, 3, 4, 5], + [2, 3, 4, 5, 6]]) + >>> res[1] # (state[i + 1] - state[i]) / (time[i + 1] / time[i]) + array([[1. , 2. , 3. ], + [0.5 , 0.5 , 0.5 ], + [0.5 , 0.75, 1. ]]) + """ + return (ode[0:-1, 0:-1], + np.diff(ode[:, 0:state_dim], 1, 0) + / np.diff(ode[:, -1])[:, None])
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/results_log.html b/_modules/moptipyapps/dynamic_control/results_log.html new file mode 100644 index 00000000..9c4466cd --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/results_log.html @@ -0,0 +1,120 @@ +moptipyapps.dynamic_control.results_log — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.results_log

    +"""A logger for results gathered from ODE integration to a text file."""
    +
    +from contextlib import AbstractContextManager
    +from io import TextIOBase
    +from typing import Callable, Final
    +
    +import numpy as np
    +from moptipy.utils.logger import CSV_SEPARATOR
    +from moptipy.utils.strings import float_to_str
    +from pycommons.io.console import logger
    +from pycommons.io.path import Path
    +
    +
    +
    +[docs] +class ResultsLog(AbstractContextManager): + """ + A class for logging results via `multi_run_ode`. + + Function :func:`moptipyapps.dynamic_control.ode.multi_run_ode` can pass + its results to various output generating procedures. This class here + offers a procedure for writing them to a log file. + + >>> def projectile(position, ttime, ctrl, out): + ... out[0] = 70.71067811865474 + ... out[1] = 70.71067811865474 - ttime * 9.80665 + >>> param: np.ndarray = np.array([1]) # ignore + >>> def contrl(position, ttime, params, dest): + ... dest[0] = params[0] # controller that returns param + >>> from io import StringIO + >>> from moptipyapps.dynamic_control.ode import multi_run_ode + >>> with StringIO() as sio: + ... with ResultsLog(2, sio) as log: + ... multi_run_ode([np.array([0.0, 1.0])], + ... [np.array([1.0, 1.0])], + ... log.collector, projectile, contrl, param, + ... 1, 10000, 14.890, 10000, 14.961) + ... x=sio.getvalue() + >>> tt = x.split() + >>> print(tt[0]) + figureOfMerit;totalTime;nSteps;start0;start1;end0;end1 + >>> for y in tt[1:]: + ... print(";".join(f"{float(v):.3f}" for v in y.split(";"))) + 403374.924;14.890;10000.000;0.000;1.000;1052.882;-33.244 + 407810.750;14.961;10000.000;1.000;1.000;1058.902;-38.616 + """ + + def __init__(self, state_dim: int, out: TextIOBase | str) -> None: + """ + Create the test results logger. + + :param state_dim: the state dimension + :param out: the output destination + """ + super().__init__() + if isinstance(out, str): + pp = Path(out) + logger(f"logging data to file {pp!r}.") + out = pp.open_for_write() + #: the internal output destination + self.__out: TextIOBase = out + #: the state dimension + self.__state_dim: Final[int] = state_dim + +
    +[docs] + def collector(self, index: int, ode: np.ndarray, + j: float, time: float) -> None: + """ + Log the result of a multi-ode run. + + :param index: the index of the result + :param ode: the ode result matrix + :param j: the figure of merit + :param time: the time value + """ + if self.__out is None: + raise ValueError("Already closed output destination!") + out_str: Final[Callable[[str], int]] = self.__out.write + + state_dim: Final[int] = self.__state_dim + if index <= 0: + out_str( + f"figureOfMerit{CSV_SEPARATOR}totalTime{CSV_SEPARATOR}nSteps") + for i in range(state_dim): + out_str(f"{CSV_SEPARATOR}start{i}") + for i in range(state_dim): + out_str(f"{CSV_SEPARATOR}end{i}") + out_str("\n") + + out_str(float_to_str(float(j))) + out_str(CSV_SEPARATOR) + out_str(float_to_str(float(time))) + out_str(CSV_SEPARATOR) + out_str(str(len(ode))) + start = ode[0] + for i in range(state_dim): + out_str(f"{CSV_SEPARATOR}{float_to_str(float(start[i]))}") + end = ode[-1] + for i in range(state_dim): + out_str(f"{CSV_SEPARATOR}{float_to_str(float(end[i]))}") + out_str("\n")
    + + + def __exit__(self, _, __, ___) -> None: + """ + Close this context manager. + + :param _: the exception type; ignored + :param __: the exception value; ignored + :param ___: the exception whatever; ignored + """ + if self.__out is not None: + try: + self.__out.close() + finally: + self.__out = None
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/results_plot.html b/_modules/moptipyapps/dynamic_control/results_plot.html new file mode 100644 index 00000000..77ba43d7 --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/results_plot.html @@ -0,0 +1,370 @@ +moptipyapps.dynamic_control.results_plot — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.results_plot

    +"""
    +An illustrator for results gathered from ODE integration to multi-plots.
    +
    +This evaluator will create figures where each sub-plot corresponds to one
    +evolution of the system over time. The starting state is marked with a blue
    +cross, the final state with a red one. Both states are connected with a line
    +that marks the progress over time. The line begins with blue color and changes
    +its color over violet/pinkish towards yellow the farther in time the system
    +progresses.
    +"""
    +
    +from contextlib import AbstractContextManager
    +from math import isfinite, sqrt
    +from os.path import basename, dirname
    +from typing import Any, Callable, Collection, Final
    +
    +import matplotlib as mpl  # type: ignore
    +import moptipy.utils.plot_utils as pu
    +import numpy as np
    +from matplotlib.axes import Axes  # type: ignore
    +from matplotlib.figure import Figure  # type: ignore
    +from matplotlib.lines import Line2D  # type: ignore
    +from moptipy.utils.strings import float_to_str
    +from mpl_toolkits.mplot3d.art3d import Line3D  # type: ignore
    +from pycommons.io.console import logger
    +from pycommons.io.path import Path
    +from pycommons.types import check_int_range
    +
    +
    +def _str(f: float) -> str:
    +    """
    +    Convert a floating point number to a short string.
    +
    +    :param f: the number
    +    :return: the string
    +    """
    +    f = float(f)
    +    a1 = float_to_str(f)
    +    a2 = f"{f:.2f}"
    +    while a2.endswith("0"):
    +        a2 = a2[:-1]
    +    if a2.endswith("."):
    +        a2 = a2[:-1]
    +    if (a1 == "-0") or (a2 == "-0"):
    +        return "0"
    +    return a1 if len(a1) < len(a2) else a2
    +
    +
    +def _vec(v: np.ndarray) -> str:
    +    """
    +    Convert a vector to a quick string.
    +
    +    :param v: the vector
    +    :return: the string
    +    """
    +    s = ",".join(_str(vv) for vv in v)
    +    return f"({s})"
    +
    +
    +#: the color maps to use
    +__COLOR_MAPS: Final[tuple[str, str, str, str, str, str, str, str, str]] = (
    +    "spring", "winter", "copper", "plasma", "cool", "hsv", "winter",
    +    "coolwarm", "BrBG")
    +
    +
    +def _get_colors(alen: int, cmi: int = 0, multi: bool = False) -> Callable[
    +        [float], tuple[float, float, float, float]]:
    +    """
    +    Get a given color map with the given number of columns.
    +
    +    For a given color map index (`cmi`), this function returns a callable that
    +    maps values from `[0,1]` to colors. If this is supposed to be the only
    +    color map in use (`m̀ulti == False`), then it will return the standard
    +    `spring` color map. Otherwise, it will return different color maps
    +    depending on the color map index `cmi`.
    +
    +    :param alen: the number of colors
    +    :param cmi: the color map name index
    +    :param multi: are there multiple colors
    +    :return: the colors
    +    """
    +    if multi:
    +        if cmi == 0:  # pink
    +            return lambda x: (0.18 + 0.8 * x, 0.0, 0.18 + 0.8 * x, 1.0)
    +        if cmi == 1:  # green
    +            return lambda x: (0.0, 0.18 + 0.8 * x, 0.0, 1.0)
    +        if cmi == 2:  # blue
    +            return lambda x: (0.0, 0.0, 0.18 + 0.8 * x, 1.0)
    +        cmi -= 2
    +
    +    cm: Final[str] = __COLOR_MAPS[
    +        check_int_range(cmi, "color_map_index", 0, 10000) % len(__COLOR_MAPS)]
    +    obj: Final = _get_colors
    +
    +    if hasattr(obj, cm):
    +        the_colors: dict[int, Callable[[
    +            float], tuple[float, float, float, float]]] = getattr(obj, cm)
    +    else:
    +        the_colors = {}
    +        setattr(obj, cm, the_colors)
    +    if alen in the_colors:
    +        return the_colors[alen]
    +    colors: Callable[[float], tuple[float, float, float, float]] \
    +        = mpl.colormaps[cm].resampled(alen)
    +    the_colors[alen] = colors
    +    return colors
    +
    +
    +#: the start point color
    +START_COLOR: Final[str] = "blue"
    +#: the start marker
    +START_MARKER: Final[str] = "++"
    +#: the end point color
    +END_COLOR: Final[str] = "red"
    +#: the end marker
    +END_MARKER: Final[str] = "o\u25CF"
    +
    +
    +def _plot_2d(state: np.ndarray, axes: Axes,
    +             xi: int, yi: int,
    +             colors: Callable[[float], tuple[float, float, float, float]],
    +             z: int) -> int:
    +    """
    +    Plot a figure in 2D.
    +
    +    :param state: the state matrix
    +    :param axes: the plot
    +    :param xi: the x-index
    +    :param yi: the y-index
    +    :param colors: the colors to use
    +    :param z: the z index
    +    :returns: the new z index
    +    """
    +    size: Final[int] = len(state) - 1
    +    for i in range(size):
    +        z += 1
    +        axes.add_artist(Line2D(state[i:i + 2, xi],
    +                               state[i:i + 2, yi],
    +                        color=colors(i / size), zorder=z))
    +    z += 1
    +    axes.scatter(state[0, xi], state[0, yi], color=START_COLOR,
    +                 zorder=z, marker=START_MARKER[0])
    +    z += 1
    +    axes.scatter(state[-1, xi], state[-1, yi], color=END_COLOR,
    +                 zorder=z, marker=END_MARKER[0])
    +    return z + 1
    +
    +
    +def _plot_3d(state: np.ndarray, axes: Axes,
    +             xi: int, yi: int, zi: int,
    +             colors: Callable[[float], tuple[float, float, float, float]],
    +             z: int, ranges: list[float]) -> int:
    +    """
    +    Plot a figure in 3D.
    +
    +    :param state: the state matrix
    +    :param axes: the plot
    +    :param xi: the x-index
    +    :param yi: the y-index
    +    :param yi: the z-index
    +    :param colors: the colors to use
    +    :param z: the z index
    +    :param ranges: the axes ranges
    +    :returns: the new z index
    +    """
    +    if hasattr(axes, "force_zorder"):
    +        axes.force_zorder = True
    +
    +    size: Final[int] = len(state) - 1
    +    for i in range(size):
    +        z += 1
    +        axes.add_artist(Line3D(state[i:i + 2, xi],
    +                               state[i:i + 2, yi],
    +                               state[i:i + 2, zi],
    +                        color=colors(i / size), zorder=z))
    +
    +    col: str = START_COLOR
    +    for p in [state[0], state[-1]]:
    +        w: float = 0.04 * ranges[0]
    +        z += 1
    +        axes.add_artist(Line3D((p[xi] - w, p[xi] + w),
    +                               (p[yi], p[yi]),
    +                               (p[zi], p[zi]),
    +                        color=col, zorder=z))
    +        z += 1
    +        w = 0.04 * ranges[1]
    +        axes.add_artist(Line3D((p[xi], p[xi]),
    +                               (p[yi] - w, p[yi] + w),
    +                               (p[zi], p[zi]),
    +                        color=col, zorder=z))
    +        z += 1
    +        w = 0.04 * ranges[2]
    +        axes.add_artist(Line3D((p[xi], p[xi]),
    +                               (p[yi], p[yi]),
    +                               (p[zi] - w, p[zi] + w),
    +                        color=col, zorder=z))
    +        col = END_COLOR
    +    return z + 1
    +
    +
    +
    +[docs] +class ResultsPlot(AbstractContextManager): + """ + A class for plotting results via `multi_run_ode`. + + Function :func:`moptipyapps.dynamic_control.ode.multi_run_ode` can pass + its results to various output generating procedures. This class here + offers a procedure for plotting them to a file. + """ + + def __init__(self, dest_file: str, sup_title: str | None, + state_dims: int, + plot_indices: Collection[int] = (0, ), + state_dim_mod: int = 0) -> None: + """ + Create the ODE plotter. + + :param dest_file: the path to the destination file + :param sup_title: the title for the figure + :param state_dims: the state dimensions + :param plot_indices: the indices that are supposed to be plotted + :param state_dim_mod: the modulus for the state dimensions + """ + super().__init__() + #: the destination file + self.__dest_file: Final[Path] = Path(dest_file) + logger(f"plotting data to file {self.__dest_file!r}.") + #: the state dimensions + self.__state_dims: Final[int] = check_int_range( + state_dims, "state_dimes", 2, 1_000_000) + #: The modulus for the state dimensions for plotting + self.__state_dim_mod: Final[int] = check_int_range( + state_dim_mod, "state_dim_mod", 0, state_dims) + + total_plots: Final[int] = len(plot_indices) + #: the plot indexes + if not (0 < total_plots <= 9): + raise ValueError(f"Invalid plot indices {plot_indices!r}, " + f"contains {total_plots} elements.") + #: the plot indices + self.__plot_indices: Final[Collection[int]] = plot_indices + + srt: Final[int] = max(3, int(round(1 + sqrt(total_plots)))) + args: Final[dict[str, Any]] = { + "items": total_plots, + "max_items_per_plot": 1, + "max_rows": srt, + "max_cols": srt, + } + use_dims: Final[int] = state_dims if state_dim_mod <= 0 \ + else state_dim_mod + if use_dims >= 3: + args["plot_config"] = {"projection": "3d"} + + figure, plots = pu.create_figure_with_subplots(**args) + #: the figure + self.__figure: Figure | None = figure + #: the plots + self.__subplots: None | tuple[tuple[ + Axes | Figure, int, int, int, int, int], ...] = plots + #: the current plot + self.__cur_plot: int = 0 + #: the z-order + self.__z: int = 0 + + if sup_title is not None: + figure.suptitle(sup_title) + +
    +[docs] + def collector(self, index: int, ode: np.ndarray, + j: float, time: float) -> None: + """ + Plot the result of a multi-ode run. + + :param index: the index of the result + :param ode: the ode result matrix + :param j: the figure of merit + :param time: the time value + """ + if self.__figure is None: + raise ValueError("Already closed output figure!") + if index not in self.__plot_indices: + return + + axes: Final[Axes] = pu.get_axes( + self.__subplots[self.__cur_plot][0]) + state_dims: Final[int] = self.__state_dims + state_dim_mod: Final[int] = self.__state_dim_mod + use_dims: Final[int] = state_dims if state_dim_mod <= 0 \ + else state_dim_mod + + # make the appropriate title + v1: str = _vec(ode[0, 0:state_dims]) + v2: str = _vec(ode[-1, 0:state_dims]) + if use_dims == 2: + v1 = f"{START_MARKER[1]}{v1}" + v2 = f"{END_MARKER[1]}{v2}" + lv1: Final[int] = len(v1) + lv2: Final[int] = len(v2) + title: str = f"{v1}\u2192{v2}" if ((lv1 + lv2) < 40) else ( + f"{v1}\u2192\n{v2}" if lv1 <= lv2 else f"{v1}\n\u2192{v2}") + title = f"{title}\nJ={j}, T={time:.4f}" + + state_min: Final[list[float]] = [ + ode[:, i:state_dims:state_dim_mod].min() for i in range(use_dims)] + state_max: Final[list[float]] = [ + ode[:, i:state_dims:state_dim_mod].max() for i in range(use_dims)] + ranges: Final[list[float]] = [ + state_max[i] - state_min[i] for i in range(use_dims)] + + can_plot: bool = all( + isfinite(state_min[i]) and (state_min[i] > -1e20) + and isfinite(state_max[i]) and (state_max[i] < 1e20) + and (state_min[i] < state_max[i]) and isfinite(ranges[i]) + and (0 < ranges[i] < 1e20) for i in range(use_dims)) + + if can_plot: + if (max(1e-20, min(ranges)) / max(ranges)) > 0.25: + axes.set_aspect("equal") + axes.set_xlim(state_min[0], state_max[0]) + axes.set_ylim(state_min[1], state_max[1]) + if (use_dims > 2) and hasattr(axes, "set_zlim"): + axes.set_zlim(state_min[2], state_max[2]) + + size: Final[int] = len(ode) - 2 + for ci, i in enumerate(range(0, state_dims, use_dims)): + colors: Callable[[float], tuple[ + float, float, float, float]] = _get_colors( + size, ci, 0 < state_dim_mod < state_dims) + if use_dims == 3: + self.__z = _plot_3d(ode, axes, i, i + 1, i + 2, colors, + self.__z, ranges) + elif use_dims == 2: + self.__z = _plot_2d(ode, axes, i, i + 1, colors, + self.__z) + else: + raise ValueError(f"Huh? state_dim={state_dims}, " + f"state_dim_mod={state_dim_mod}??") + else: + title = f"{title}\n<cannot plot>" + + axes.set_title(title) + self.__cur_plot += 1
    + + + def __exit__(self, _, __, ___) -> None: + """ + Close this context manager. + + :param _: the exception type; ignored + :param __: the exception value; ignored + :param ___: the exception whatever; ignored + """ + if self.__figure is not None: + try: + the_dir: Final[str] = dirname(self.__dest_file) + the_file: Final[str] = basename(self.__dest_file) + dot: Final[int] = the_file.rindex(".") + prefix: Final[str] = the_file[:dot] + suffix: Final[str] = the_file[dot + 1:] + pu.save_figure(self.__figure, prefix, the_dir, suffix) + logger(f"finished plotting data to {self.__dest_file!r}.") + finally: + self.__figure = None + self.__subplots = None
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/starting_points.html b/_modules/moptipyapps/dynamic_control/starting_points.html new file mode 100644 index 00000000..322b5069 --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/starting_points.html @@ -0,0 +1,205 @@ +moptipyapps.dynamic_control.starting_points — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.starting_points

    +"""
    +Synthesize some interesting starting points.
    +
    +Here we have some basic functionality to synthesize starting points, i.e.,
    +training cases, for the dynamic systems control task.
    +The points synthesized here by function
    +:func:`make_interesting_starting_points` try to fulfill two goals:
    +
    +1. the points should be as far away from each other as possible in the state
    +   space,
    +2. there should be points of many different distances from the state space
    +   origin, and
    +3. compared to the coordinates of the other points, the coordinates of the
    +   synthesized points should be sometimes smaller and sometimes larger (where
    +   sometimes should ideally mean "equally often").
    +
    +These two goals are slightly contradicting and are achieved by forcing the
    +points to be located on rings of increasing distance from the origin via
    +:func:`interesting_point_transform` while maximizing their mean distance
    +to each other via :func:`interesting_point_objective`.
    +Since :func:`make_interesting_starting_points` is a bit slow, it makes sense
    +to pre-compute the points and then store them as array constants.
    +"""
    +
    +from typing import Callable, Final, Iterable, cast
    +
    +import numba  # type: ignore
    +import numpy as np
    +from moptipy.algorithms.so.vector.cmaes_lib import BiPopCMAES
    +from moptipy.api.execution import Execution
    +from moptipy.api.objective import Objective
    +from moptipy.spaces.vectorspace import VectorSpace
    +from pycommons.io.console import logger
    +
    +
    +
    +[docs] +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False) +def interesting_point_transform( + x: np.ndarray, max_radius: float, dim: int) -> np.ndarray: + """ + Transform interesting points. + + >>> xx = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12.0]) + >>> ppp = interesting_point_transform(xx, 10.0, 3) + >>> print(ppp) + [[0.6681531 1.33630621 2.00445931] + [2.27921153 2.84901441 3.41881729] + [3.76928033 4.30774895 4.84621757] + [5.23423923 5.75766315 6.28108707]] + >>> print(xx) + [0.6681531 1.33630621 2.00445931 2.27921153 2.84901441 3.41881729 + 3.76928033 4.30774895 4.84621757 5.23423923 5.75766315 6.28108707] + >>> print([np.sqrt(np.square(pppp).sum()) for pppp in ppp]) + [2.5, 5.0, 7.5, 10.0] + >>> ppp = interesting_point_transform(xx, 10.0, 3) + >>> print(ppp) + [[0.6681531 1.33630621 2.00445931] + [2.27921153 2.84901441 3.41881729] + [3.76928033 4.30774895 4.84621757] + [5.23423923 5.75766315 6.28108707]] + >>> print([np.sqrt(np.square(pppp).sum()) for pppp in ppp]) + [2.5, 5.0, 7.5, 10.0] + >>> ppp = interesting_point_transform(xx, 10.0, 2) + >>> print(ppp) + [[0.74535599 1.49071198] + [2.20132119 2.50305736] + [3.200922 3.8411064 ] + [4.39003072 5.01717796] + [5.66154475 6.11484713] + [6.75724629 7.3715414 ]] + """ + n: Final[int] = len(x) // dim + p: Final[np.ndarray] = np.reshape(x, (n, dim)) + for i in range(n): + pp: np.ndarray = p[i, :] + + cur_radius: float = np.sqrt(np.square(pp).sum()) + if cur_radius <= 0.0: + continue + goal_radius: float = max_radius * ((i + 1) / n) + if goal_radius != cur_radius: + first: bool = True + while True: + old_radius = cur_radius + pp2 = pp * goal_radius / cur_radius + if np.array_equal(pp2, pp): + break + cur_radius = np.sqrt(np.square(pp2).sum()) + if cur_radius == goal_radius: + pp = pp2 + break + if first: + first = False + elif cur_radius > old_radius: + break + pp = pp2 + p[i, :] = pp + return p
    + + + +
    +[docs] +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False) +def interesting_point_objective(x: np.ndarray, other: np.ndarray, + max_radius: float, dim: int) -> float: + """ + Compute the point diversity. + + 1. the distance between the points + 2. the distance to the other points + 3. the coordinates in the different dimensions should be equally often + smaller and larger than those of the starting points + """ + pts: np.ndarray = interesting_point_transform(x, max_radius, dim) + n: Final[int] = len(pts) + f: float = 0.0 + score: int = 0 + for i in range(n): + pt: np.ndarray = pts[i] + scale: float = (((i + 1) / n) ** 2) # we know this + for j in range(i + 1, n): + dst: float = np.sqrt(np.square(pt - pts[j]).sum()) + f += scale / dst if dst > 0.0 else 1e10 + for oth in other: + dst = np.sqrt(np.square(pt - oth).sum()) + f += scale / dst if dst > 0.0 else 1e10 + for k, val in enumerate(pt): + score += -1 if val < oth[k] else 1 + + return f * np.log1p(abs(score))
    + + + +
    +[docs] +def make_interesting_starting_points( + n: int, other: Iterable[Iterable[float]], + log: bool = True) -> np.ndarray: + """ + Create some reasonably diverse starting points. + + :param n: the number of starting points + :param other: the other points + :param log: write log output + :return: the starting points + + >>> p = make_interesting_starting_points( + ... 3, np.array([[1.0, 2.0], [3.0, 2.9]]), False) + >>> print(",".join(";".join(f"{x:.5f}" for x in row) for row in p)) + 1.77767;0.33029,1.10482;3.44328,3.18515;-4.39064 + + >>> p = make_interesting_starting_points( + ... 3, np.array([[1.0, 2.0, 7.0], [3.0, 2.9, 1.1]]), False) + >>> print(",".join(";".join(f"{x:.5f}" for x in row) for row in p)) + 1.51392;-2.66567;0.86153,3.26154;-5.07757;2.03484,3.75627;5.88214;6.52310 + """ + other_points: Final[np.ndarray] = np.array(other) + dim: Final[int] = other_points.shape[1] + max_fes: Final[int] = 2048 + int(40 * (n ** (dim / 1.7))) + + max_radius: float = max(np.sqrt(np.square(pt).sum()) + for pt in other_points) + max_radius = max(max_radius ** 1.1, max_radius ** 0.6, + max_radius * 1.3) + + max_dim: float = np.max(np.abs( + np.array(other_points).flatten())) + max_dim = max(max_dim ** 1.2, max_dim ** (1.0 / 1.2), + max_dim ** 2.5, max_radius * 1.2) + + if log: + logger( + f"now determining {n} hopefully diverse samples of dimension " + f"{dim} using {len(other_points)} other points, " + f"max_radius={max_radius}, and max_dim={max_dim} for " + f"{max_fes} FEs.") + + space: Final[VectorSpace] = VectorSpace(dim * n, -max_dim, max_dim) + best: np.ndarray = space.create() + + class __Obj(Objective): + def __init__(self): + nonlocal other_points + nonlocal max_radius + nonlocal dim + self.evaluate = cast( # type: ignore + Callable[[np.ndarray], float], + lambda x, o=other_points, mr=max_radius, dd=dim: + interesting_point_objective(x, o, mr, dd)) + + with Execution().set_solution_space(space).set_rand_seed(1)\ + .set_algorithm(BiPopCMAES(space))\ + .set_max_fes(max_fes)\ + .set_objective(__Obj()).execute() as process: + f = process.get_best_f() + process.get_copy_of_best_x(best) + best = interesting_point_transform(best, max_radius, dim) + if log: + logger(f"generated {n} points with objective {f}:\n{best!r}") + return best
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/surrogate_optimizer.html b/_modules/moptipyapps/dynamic_control/surrogate_optimizer.html new file mode 100644 index 00000000..a3e73cf5 --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/surrogate_optimizer.html @@ -0,0 +1,491 @@ +moptipyapps.dynamic_control.surrogate_optimizer — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.surrogate_optimizer

    +"""
    +A surrogate system model-based Optimization approach.
    +
    +In the real world, we want to synthesize a controller `c(s, p)` that can
    +drive a dynamic system into a good state. The controller receives as input
    +the current state `s`, say, from sensor readings. It can also be
    +parameterized by a vector `p`, imagine `c` to be, for example, an artificial
    +neural network and then `p` would be its weight vector. The output of `c` will
    +influence the system in some way. In our example experiments, this is done
    +by becoming part of the state differential `ds/dt`. Anyway, in the real world,
    +the controller may steer the rotation speed of a rotor or the angles of rotor
    +blades or whatever. Now you can imagine that doing real-world experiments is
    +costly and takes a long time. Everytime we want to test a parameterization
    +`p`, some form experiment, maybe in a wind tunnel, has to be done.
    +
    +So it would be beneficial if we could replace the actual experiment by a
    +simulation. This would mean that we learn a model `M` that can compute the
    +state change `ds/dt` based on the current state `s` and controller output `c`
    +at reasonable accuracy. If we had such a computational model, then we could
    +run the controller optimization process on that model. Once finished, we could
    +apply and evaluate the best controller that we have discovered in a real
    +experiment. With the observed behavior of the actual controller system, we may
    +even be able to update and improve our system model to become more accurate.
    +So we could alternate between real experiments and optimization runs on the
    +simulation. Of course, we would always need to do some real experiments at
    +first to gather the data to obtain our initial model `M`. But if we can get
    +this to work, then we could probably get much better controllers with fewer
    +actual experiments.
    +
    +This here is an algorithm that tries to implement the above pattern.
    +This algorithm employs three different sub-algorithms:
    +
    +1. For sampling the initial :attr:`~SurrogateOptimizer.fes_for_warmup` FEs,
    +   it uses a warm-up algorithm - by default, this is done by
    +   :mod:`~moptipy.algorithms.random_sampling`.
    +2. Then, it spends :attr:`~SurrogateOptimizer.fes_for_training` steps on the
    +   collected data to train the model using the model training algorithm,
    +   which, by default, is
    +   :class:`~moptipy.algorithms.so.vector.cmaes_lib.BiPopCMAES`.
    +3. Then, it spends :attr:`~SurrogateOptimizer.fes_per_model_run` steps
    +   to train controllers on the model, by default again with a
    +   :class:`~moptipy.algorithms.so.vector.cmaes_lib.BiPopCMAES`.
    +
    +For the model and controller optimization, it thus uses by default the
    +BiPop-CMA-ES offered by `moptipy`
    +(:class:`~moptipy.algorithms.so.vector.cmaes_lib.BiPopCMAES`).
    +But it uses two instances of this algorithm, namely one to optimize the
    +controller parameters and one that optimizes the model parameters.
    +And, as said, a random sampling method to gather the initial samples.
    +
    +The idea is that we divide the computational budget into a warmup and a
    +model-based phase. In the warmup phase, we use CMA-ES to normally optimize
    +the controller based on the actual simulation of the dynamic system.
    +However, while doing so, for every time step in the simulation, we collect
    +three things: The current state vector `s`, the control vector `c`, and the
    +resulting state differential `ds/dt`. Now if we have such data, we can look
    +at the dynamic system as a function `D(s, c) = ds/dt`. If we consider the
    +dynamic system to be such a function and we have collected the vectors
    +`(s, c)` and `ds/dt`, then we may as well attempt to *learn* this system.
    +So after the warmup phase, our algorithm does the following: In a loop (for
    +the rest of the computational budget), it first tries to learn a model `M` of
    +`D`. Then, it replaces the actual differential equations of the system in ODE
    +solution approach of the objective function with `M`. In other words, we kick
    +out the actual system and instead use the learned system model `M`. We replace
    +the differential equations that describe the system using `M`. We can now
    +run an entire optimization process on this learned model only, with ODE
    +integration and all. This optimization process gives us one new solution which
    +we then evaluate on the real objective function (which costs 1 FE and gives us
    +a new heap of `(s, c)` and `ds/dt` vectors). With this new data, we again
    +learn a new and hopefully more accurate model `M`. This process is iterated
    +until the rest of the computational budget is exhausted.
    +
    +This approach hopefully allows us to learn a model of a dynamic system while
    +synthesizing a controller for it. Since we can have infinitely more time to
    +synthesize the controller on a learned system model compared to an actual
    +model, this may give us much better results.
    +
    +The starting points of the work here were conversations with Prof. Dr. Bernd
    +NOACK and Guy Yoslan CORNEJO MACEDA of the Harbin Institute of Technology in
    +Shenzhen, China (哈尔滨工业大学(深圳)).
    +"""
    +
    +
    +from copy import copy
    +from gc import collect
    +from os.path import basename
    +from typing import Callable, Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from moptipy.algorithms.random_sampling import RandomSampling
    +from moptipy.algorithms.so.vector.cmaes_lib import BiPopCMAES
    +from moptipy.api.algorithm import Algorithm
    +from moptipy.api.execution import Execution
    +from moptipy.api.logging import FILE_SUFFIX
    +from moptipy.api.process import Process
    +from moptipy.api.subprocesses import for_fes
    +from moptipy.operators.vectors.op0_uniform import Op0Uniform
    +from moptipy.spaces.vectorspace import VectorSpace
    +from moptipy.utils.logger import KeyValueLogSection
    +from moptipy.utils.nputils import rand_seed_generate
    +from numpy.random import Generator
    +from pycommons.io.path import Path
    +from pycommons.types import check_int_range, type_error
    +
    +from moptipyapps.dynamic_control.model_objective import ModelObjective
    +from moptipyapps.dynamic_control.objective import FigureOfMerit
    +from moptipyapps.dynamic_control.system import System
    +from moptipyapps.dynamic_control.system_model import SystemModel
    +
    +
    +def _nop() -> None:
    +    """Do absolutely nothing."""
    +
    +
    +def _bpcmaes(vs: VectorSpace) -> BiPopCMAES:
    +    """
    +    Create the Bi-Pop CMA-ES.
    +
    +    :param vs: the vector space
    +    :return: the algorithm
    +    """
    +    return BiPopCMAES(vs, True)
    +
    +
    +
    +[docs] +class SurrogateOptimizer(Algorithm): + """A surrogate model-based CMA-ES algorithm.""" + + def __init__( + self, system_model: SystemModel, controller_space: VectorSpace, + objective: FigureOfMerit, fes_for_warmup: int, + fes_for_training: int | None = None, + ms_for_training: int | None = None, + fes_per_model_run: int | None = None, + ms_per_model_run: int | None = None, + fancy_logs: bool = False, + warmup_algorithm: Callable[ + [VectorSpace], Algorithm] = + lambda v: RandomSampling(Op0Uniform(v)), + model_training_algorithm: Callable[ + [VectorSpace], Algorithm] = _bpcmaes, + controller_training_algorithm: Callable[ + [VectorSpace], Algorithm] = _bpcmaes) -> None: + """ + Initialize the algorithm. + + :param system_model: the system and model + :param controller_space: the controller space + :param objective: the figure of merit + :param fes_for_warmup: the number of objective function evaluations + (FEs) to be used on the initial stage on the real system for + warming up + :param fes_for_training: the number of FEs to be used to train the + model + :param ms_for_training: the number of milliseconds for model training + :param fes_per_model_run: the number of FEs to be applied to each + optimization run on the model + :param ms_per_model_run: the number of milliseconds for a model run + :param fancy_logs: should we perform fancy logging? + :param warmup_algorithm: the algorithm for sampling the warmup points + :param model_training_algorithm: the model training algorithm builder + :param controller_training_algorithm: the controller training + algorithm builder + """ + super().__init__() + + if not isinstance(system_model, SystemModel): + raise type_error(system_model, "system_model", SystemModel) + if not isinstance(controller_space, VectorSpace): + raise type_error( + controller_space, "controller_space", VectorSpace) + if not isinstance(objective, FigureOfMerit): + raise type_error(objective, "objective", FigureOfMerit) + if not isinstance(fancy_logs, bool): + raise type_error(fancy_logs, "fancy_logs", bool) + if not callable(warmup_algorithm): + raise type_error(warmup_algorithm, "warmup_algorithm", call=True) + if not callable(model_training_algorithm): + raise type_error(model_training_algorithm, + "model_training_algorithm", call=True) + if not callable(controller_training_algorithm): + raise type_error(controller_training_algorithm, + "controller_training_algorithm", call=True) + + # the controller space + self.controller_space: Final[VectorSpace] = controller_space + #: should we do fancy logging? + self.fancy_logs: Final[bool] = fancy_logs + #: the number of objective function evaluations to be used for warmup + self.fes_for_warmup: Final[int] = check_int_range( + fes_for_warmup, "fes_for_warmup", 1, 1_000_000_000) + #: the FEs for training the model + self.fes_for_training: Final[int | None] = None \ + if fes_for_training is None else check_int_range( + fes_for_training, "fes_for_training", 1, 1_000_000_000) + #: the ms for training the model + self.ms_for_training: Final[int | None] = None \ + if ms_for_training is None else check_int_range( + ms_for_training, "ms_for_training", 1, 1_000_000_000_000) + if (self.fes_for_training is None) and (self.ms_for_training is None): + raise ValueError("One of fes_for_training or " + "ms_for_training must not be None.") + #: the FEs for each run on the model + self.fes_per_model_run: Final[int | None] = None \ + if fes_per_model_run is None else check_int_range( + fes_per_model_run, "fes_per_model_run", 1, 1_000_000_000) + #: the ms for each run on the model + self.ms_per_model_run: Final[int | None] = None \ + if ms_per_model_run is None else check_int_range( + ms_per_model_run, "ms_per_model_run", 1, 1_000_000_000_000) + if ((self.fes_per_model_run is None) + and (self.ms_per_model_run is None)): + raise ValueError("One of fes_per_model_run or " + "ms_per_model_run must not be None.") + #: the system model + self.system_model: Final[SystemModel] = system_model + #: the internal warmup algorithm + self.__warmup_algorithm: Final[Algorithm] = warmup_algorithm( + controller_space) + #: the internal controller training algorithm + self.__control_algorithm: Final[Algorithm] = ( + controller_training_algorithm(controller_space)) + #: the model parameter space + self.__model_space: Final[VectorSpace] = \ + system_model.model.parameter_space() + #: the model training algorithm + self.__model_training: Final[Algorithm] = model_training_algorithm( + self.__model_space) + #: the control objective function reference + self.__control_objective: Final[FigureOfMerit] = objective + #: the model objective + self.__model_objective: Final[ModelObjective] = ModelObjective( + objective, system_model.model) + +
    +[docs] + def initialize(self) -> None: + """Initialize.""" + super().initialize() + self.__warmup_algorithm.initialize() + self.__model_training.initialize() + self.__control_algorithm.initialize() + self.__model_space.initialize()
    + + +
    +[docs] + def solve(self, process: Process) -> None: + """ + Solve the modelling problem. + + This function begins by spending :attr:`fes_for_warmup` objective + function evaluations (FEs) on the actual problem, i.e., by trying to + synthesize controllers for the "real" system, using `process` to + evaluate the controller performance. The objective function passed to + the constructor (an instance of + :class:`~moptipyapps.dynamic_control.objective.FigureOfMerit`) must be + used by `process` as well. This way, during the warm-up phase, we can + collect tuples of the (system state, controller output) and the + resulting system differential for each simulated time step. This is + done via + :meth:`~moptipyapps.dynamic_control.objective.FigureOfMerit.set_raw`. + + After the warm-up phase, we can obtain these collected data via + :meth:`~moptipyapps.dynamic_control.objective.FigureOfMerit.\ +get_differentials`. The data is then used to train a model via the model + objective function + :mod:`~moptipyapps.dynamic_control.model_objective`. The system model + is again basically a + :class:`~moptipyapps.dynamic_control.controller.Controller` which is + parameterized appropriately. For this, we use a CMA-ES algorithm for + :attr:`fes_for_training` FEs. + + Once the model training is completed, we switch the objective function + to use the model instead of the actual system for evaluating + controllers, which is done via :meth:`~moptipyapps.dynamic_control.\ +objective.FigureOfMerit.set_model`. We then train a completely new controller + on the model objective function. Notice that now, the actual system is + not involved at all. We do this again using a CMA-ES algorithm for + :attr:`fes_per_model_run` FEs. + + After training the controller, we can evaluate it on the real system + using the :meth:`~moptipy.api.process.Process.evaluate` method + of the actual `process` (after switching back to the real model via + :meth:`~moptipyapps.dynamic_control.objective.FigureOfMerit.set_raw`). + This nets us a) the actual controller performance and b) a new set of + (system state, controller output) + system state differential tuples. + + Since we now have more data, we can go back and train a new system + model and then use this model for another model-based optimization + run. And so on, and so on. Until the budget is exhausted. + + :param process: the original optimization process, which must use + the `objective` function (an instance of + :class:`~moptipyapps.dynamic_control.objective.FigureOfMerit`) as + its objective function. + """ + # First, we set up the local variables and fast calls. + should_terminate: Final[Callable[[], bool]] = process.should_terminate + model_space: Final[VectorSpace] = self.__model_space + model_objective: Final[ModelObjective] = self.__model_objective + model = model_space.create() + model_equations: Final[Callable[[ + np.ndarray, float, np.ndarray, np.ndarray], None]] =\ + self.system_model.model.controller + raw: Final[FigureOfMerit] = self.__control_objective + random: Final[Generator] = process.get_random() + + training_execute: Final[Execution] = ( + Execution().set_solution_space(model_space) + .set_algorithm(self.__model_training) + .set_objective(model_objective)) + if self.fes_for_training is not None: + training_execute.set_max_fes(self.fes_for_training) + if self.ms_for_training is not None: + training_execute.set_max_time_millis(self.ms_for_training) + + on_model_execute: Final[Execution] = \ + (Execution().set_solution_space(self.controller_space) + .set_objective(raw) + .set_algorithm(self.__control_algorithm)) + if self.fes_per_model_run is not None: + on_model_execute.set_max_fes(self.fes_per_model_run) + if self.ms_per_model_run is not None: + on_model_execute.set_max_time_millis(self.ms_per_model_run) + + result: Final[np.ndarray] = self.controller_space.create() + orig_init: Callable = raw.initialize + +# Get a log dir if logging is enabled and set up all the logging information. + log_dir_name: str | None = process.get_log_basename() \ + if self.fancy_logs else None + model_training_dir: Path | None = None + model_training_log_name: str | None = None + models_dir: Path | None = None + models_name: str | None = None + tempsys: System | None = None + ctrl_dir: Path | None = None + ctrl_log_name: str | None = None + controllers_dir: Path | None = None + controllers_name: str | None = None + if log_dir_name is not None: + log_dir: Final[Path] = Path(log_dir_name) + log_dir.ensure_dir_exists() + prefix: str = "modelTraining" + model_training_dir = log_dir.resolve_inside(prefix) + model_training_dir.ensure_dir_exists() + base_name: Final[str] = basename(log_dir_name) + model_training_log_name = f"{base_name}_{prefix}_" + training_execute.set_log_improvements(True) + prefix = "controllerOnModel" + ctrl_dir = log_dir.resolve_inside(prefix) + ctrl_dir.ensure_dir_exists() + ctrl_log_name = f"{base_name}_{prefix}_" + on_model_execute.set_log_improvements(True) + prefix = "model" + models_dir = log_dir.resolve_inside(prefix) + models_dir.ensure_dir_exists() + tempsys = copy(self.system_model.system) + models_name = f"{tempsys.name}_{prefix}_" + prefix = "controllersOnReal" + controllers_dir = log_dir.resolve_inside(prefix) + controllers_dir.ensure_dir_exists() + controllers_name = f"{base_name}_{prefix}_" + +# Now we do the setup run that creates some basic results and +# gathers the initial information for modelling the system. + with for_fes(process, self.fes_for_warmup) as prc: + self.__warmup_algorithm.solve(prc) + + while not should_terminate(): # until budget exhausted + consumed_fes: int = process.get_consumed_fes() + + # We now train a model on the data that was gathered. + training_execute.set_rand_seed(rand_seed_generate(random)) + if model_training_dir is not None: + training_execute.set_log_file( + model_training_dir.resolve_inside( + f"{model_training_log_name}{consumed_fes}" + f"{FILE_SUFFIX}")) + model_objective.begin() # get the collected data + with training_execute.execute() as sub: # train model + sub.get_copy_of_best_y(model) # get best model + model_objective.end() # dispose the collected data + + setattr(raw, "initialize", _nop) # prevent resetting to "raw" + +# The trained model is wrapped into an equation function that can be passed to +# the ODE integrator. + @numba.njit(cache=False, inline="always", fastmath=True, + boundscheck=False) + def __new_model(state: np.ndarray, time: float, + control: np.ndarray, out: np.ndarray, + _params=model, _eq=model_equations) -> None: + _eq(np.hstack((state, control)), time, _params, out) + + setattr(__new_model, "modelParameters", model) # see objective + + if tempsys is not None: # plot the model behavior + tempsys.equations = __new_model # type: ignore + setattr(tempsys, "name", f"{models_name}{consumed_fes}") + tempsys.describe_system_without_control(models_dir) + + collect() # now we collect all garbage ... there should be much + +# OK, now that we got the model, we can perform the model optimization run. + raw.set_model(__new_model) # switch to use the model + on_model_execute.set_rand_seed(rand_seed_generate(random)) + if ctrl_dir is not None: + on_model_execute.set_log_file(ctrl_dir.resolve_inside( + f"{ctrl_log_name}{consumed_fes}{FILE_SUFFIX}")) + with on_model_execute.execute() as ome: + ome.get_copy_of_best_y(result) # get best controller + raw.set_raw() # switch to the actual problem and data collection + setattr(raw, "initialize", orig_init) # allow resetting to "raw" + + if tempsys is not None: # plot the controller on that model + setattr(tempsys, "name", f"{models_name}{consumed_fes}") + tempsys.describe_system( + f"{models_name}{consumed_fes}", + self.system_model.controller.controller, result, + f"{models_name}{consumed_fes}_synthesized_controller", + models_dir) + +# Finally, we re-evaluate the result that we got from the model run on the +# actual objective function. + process.evaluate(result) # get the real objective value + +# plot the actual behavior + if controllers_dir is not None: + self.system_model.system.describe_system( + f"{self.system_model.system}_{consumed_fes}", + self.system_model.controller.controller, + result, f"{controllers_name}{consumed_fes}", + controllers_dir) + + collect() # now we collect all garbage ... there should be much
    + + + def __str__(self): + """ + Get the name of the algorithm. + + :return: the algorithm name + """ + s: str = (f"{self.__warmup_algorithm}_{self.__control_algorithm}_" + f"{self.__model_training}_{self.fes_for_warmup}_tn") + if self.fes_for_training is not None: + s = f"{s}_{self.fes_for_training}fes" + if self.ms_for_training is not None: + s = f"{s}_{self.ms_for_training}ms" + s = f"{s}_sy" + if self.fes_per_model_run is not None: + s = f"{s}_{self.fes_per_model_run}fes" + if self.ms_per_model_run is not None: + s = f"{s}_{self.ms_per_model_run}ms" + return s + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log all parameters of this component as key-value pairs. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + logger.key_value("fesForWarmup", self.fes_for_warmup) + logger.key_value("fesForTraining", self.fes_for_training) + logger.key_value("fesPerModelRun", self.fes_per_model_run) + logger.key_value("fancyLogs", self.fancy_logs) + with logger.scope("controlX") as cx: + self.controller_space.log_parameters_to(cx) + with logger.scope("warmupA") as wa: + self.__warmup_algorithm.log_parameters_to(wa) + with logger.scope("controlA") as ca: + self.__control_algorithm.log_parameters_to(ca) + with logger.scope("controlF") as cf: + self.__control_objective.log_parameters_to(cf) + with logger.scope("modelX") as mx: + self.__model_space.log_parameters_to(mx) + with logger.scope("modelF") as mf: + self.__model_objective.log_parameters_to(mf) + with logger.scope("modelA") as ma: + self.__model_training.log_parameters_to(ma)
    +
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/system.html b/_modules/moptipyapps/dynamic_control/system.html new file mode 100644 index 00000000..d9efe48c --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/system.html @@ -0,0 +1,379 @@ +moptipyapps.dynamic_control.system — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.system

    +"""
    +A class to model a dynamic system governed by differential equations.
    +
    +A system has a current state vector at any point in time. The state changes
    +over time based on differential equations. These equations can be influenced
    +by the output of a :mod:`~moptipyapps.dynamic_control.controller`. Our
    +:class:`System` presents the state dimension and differential equations. It
    +also presents several starting states for simulating the system. The starting
    +states are divided into training and testing states. The training states can
    +be used for, well, training controllers to learn how to handle the system.
    +The testing states are then used to verify whether a synthesized controller
    +actually works.
    +
    +Examples for different dynamic systems are given in package
    +:mod:`~moptipyapps.dynamic_control.systems`.
    +"""
    +
    +from math import isfinite
    +from typing import Any, Callable, Final, Iterable, TypeVar
    +
    +import moptipy.utils.plot_utils as pu
    +import numpy as np
    +from moptipy.api.component import Component
    +from moptipy.utils.logger import KeyValueLogSection
    +from moptipy.utils.nputils import array_to_str
    +from pycommons.io.path import Path
    +from pycommons.types import check_int_range, type_error
    +
    +from moptipyapps.dynamic_control.ode import multi_run_ode
    +from moptipyapps.dynamic_control.results_log import ResultsLog
    +from moptipyapps.dynamic_control.results_plot import ResultsPlot
    +
    +#: the color for training points
    +_TRAINING_COLOR: Final[str] = "orange"
    +#: the color for testing points
    +_TEST_COLOR: Final[str] = "cyan"
    +
    +#: the type variable for ODE controller parameters
    +T = TypeVar("T")
    +
    +
    +def _dummy_ctrl(_: np.ndarray, __: float, ___: Any,
    +                out: np.ndarray) -> None:
    +    """Do nothing as internal dummy controller that does nothing."""
    +    out.fill(0.0)
    +
    +
    +
    +[docs] +class System(Component): + """A class for governing a system via differential system.""" + + def __init__(self, name: str, state_dims: int, control_dims: int, + state_dim_mod: int, state_dims_in_j: int, gamma: float, + test_starting_states: np.ndarray, + training_starting_states: np.ndarray, + test_steps: int = 5000, + test_time: float = 50.0, + training_steps: int = 1000, + training_time: float = 50.0, + plot_examples: Iterable[int] = (0, )) -> None: + """ + Initialize the system. + + :param name: the name of the system. + :param state_dims: the state dimensions + :param control_dims: the control dimensions + :param state_dim_mod: the modulus for the state dimensions + :param state_dims_in_j: the dimension until which the state is used in + the computation of the figure of merit; `-1` for using the complete + state + :param gamma: the weight of the controller input + :param test_starting_states: the starting states to be used for + testing, as a matrix with one point per row + :param test_steps: the steps to be taken for the test simulation + :param test_time: the time limit for tests + :param training_steps: the steps to be taken for the training + simulation + :param training_time: the time limit for training + :param training_starting_states: the starting states to be used for + training, as a matrix with one point per row + :param plot_examples: the points that should be plotted + """ + super().__init__() + if not isinstance(name, str): + raise type_error(name, "name", str) + #: the name of the model + self.name: Final[str] = name + #: the dimensions of the state variable + self.state_dims: Final[int] = check_int_range( + state_dims, "state_dims", 2, 1_000_000) + #: the dimensions of the controller output + self.control_dims: Final[int] = check_int_range( + control_dims, "control_dims", 1, 100) + #: The modulus for the state dimensions for plotting + self.state_dim_mod: Final[int] = check_int_range( + state_dim_mod, "state_dim_mod", 0, state_dims) + state_dims_in_j = check_int_range( + state_dims_in_j, "state_dims_in_j", -1, state_dims) + #: The number of dimensions used in the J computation + self.state_dims_in_j: Final[int] = state_dims if state_dims_in_j <= 0 \ + else state_dims_in_j + if not isinstance(gamma, float): + raise type_error(gamma, "gamma", float) + if (not isfinite(gamma)) and gamma > 0.0: + raise ValueError( + f"gamma must be positive and finite, but is {gamma}.") + #: The Weight of the control values in the figure of merit computation. + self.gamma: Final[float] = gamma + + if not isinstance(test_starting_states, np.ndarray): + raise type_error(test_starting_states, "test_starting_states", + np.ndarray) + if (len(test_starting_states) < 1) or ( + test_starting_states.shape[1] != state_dims): + raise ValueError( + f"invalid test starting states {test_starting_states!r}.") + #: the test starting states + self.test_starting_states: Final[np.ndarray] = test_starting_states + + if not isinstance(training_starting_states, np.ndarray): + raise type_error(training_starting_states, + "training_starting_states", np.ndarray) + if (len(training_starting_states) < 1) or ( + training_starting_states.shape[1] != state_dims): + raise ValueError("invalid training starting " + f"states {training_starting_states!r}.") + #: the test starting states + self.training_starting_states: Final[np.ndarray] = \ + training_starting_states + + #: the test simulation steps + self.test_steps: Final[int] = check_int_range( + test_steps, "test_steps", 10, 1_000_000_000) + + if not isinstance(test_time, float): + raise type_error(test_time, "test_time", float) + if (not isfinite(test_time)) and test_time > 1e-5: + raise ValueError( + f"test_time must be > 1e-5 and finite, but is {test_time}.") + #: the test time + self.test_time: Final[float] = test_time + + #: the training simulation steps + self.training_steps: Final[int] = check_int_range( + training_steps, "training_steps", 10, 1_000_000_000) + if not isinstance(training_time, float): + raise type_error(training_time, "training_time", float) + if (not isfinite(training_time)) and training_time > 1e-5: + raise ValueError(f"training_time must be > 1e-5 and finite, " + f"but is {training_time}.") + #: the training time + self.training_time: Final[float] = training_time + + #: the plot examples + self.plot_examples: Final[tuple[int, ...]] = tuple(sorted(set( + plot_examples))) + total: Final[int] = len(self.training_starting_states) \ + + len(self.test_starting_states) - 1 + for i in self.plot_examples: + check_int_range(i, "plot_examples[i]", 0, total) + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log all parameters of this component as key-value pairs. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + logger.key_value("stateDims", self.state_dims) + logger.key_value("controlDims", self.control_dims) + logger.key_value("stateDimMod", self.state_dim_mod) + logger.key_value("stateDimsInJ", self.state_dims_in_j) + logger.key_value("gamma", self.gamma) + logger.key_value("testStartingStates", + array_to_str(self.test_starting_states.flatten())) + logger.key_value( + "trainingStartingStates", + array_to_str(self.training_starting_states.flatten())) + logger.key_value("testSteps", self.test_steps) + logger.key_value("testTime", self.test_time) + logger.key_value("trainingSteps", self.training_steps) + logger.key_value("trainingTime", self.training_time) + logger.key_value("examplePlots", array_to_str(np.array( + self.plot_examples, int).flatten()))
    + + + def __str__(self): + """ + Get the name of this model. + + :return: the name of this model + """ + return self.name + +
    +[docs] + def equations(self, state: np.ndarray, time: float, + control: np.ndarray, out: np.ndarray) -> None: + """ + Compute the values of the differential equations to be simulated. + + :param state: the state of the system + :param time: the time index + :param control: the output of the controller + :param out: the differential, i.e., the output of this function + """
    + + +
    +[docs] + def plot_points(self, dest_dir: str, skip_if_exists: bool = True) -> Path: + """ + Plot the training and testing points of the equation. + + :param dest_dir: the destination directory + :param skip_if_exists: `True` to skip existing files, `False` otherwise + :return: the plotted file + """ + name: Final[str] = f"{self.name}_points" + dest_folder: Final[Path] = Path(dest_dir) + dest_folder.ensure_dir_exists() + dest_file: Final[Path] = dest_folder.resolve_inside(f"{name}.pdf") + if dest_file.ensure_file_exists() and skip_if_exists: + return dest_file + + figure = pu.create_figure() + state_dims: Final[int] = self.state_dims + state_dim_mod: Final[int] = self.state_dim_mod + use_dims: Final[int] = state_dims if state_dim_mod <= 0 \ + else state_dim_mod + if use_dims == 3: + axes = figure.add_subplot(projection="3d") + axes.set_aspect("equal") + if hasattr(axes, "force_zorder"): + axes.force_zorder = True + if hasattr(axes, "set_zlabel"): + axes.set_zlabel("z") + + if state_dims == 3: + axes.scatter(self.training_starting_states[:, 0], + self.training_starting_states[:, 1], + self.training_starting_states[:, 2], + color=_TRAINING_COLOR, marker="x", + zorder=1) + axes.scatter(self.test_starting_states[:, 0], + self.test_starting_states[:, 1], + self.test_starting_states[:, 2], + color=_TEST_COLOR, marker="o", zorder=2) + axes.scatter(0, 0, 0, color="black", marker="+", zorder=3) + else: + raise NotImplementedError + + if hasattr(axes, "set_zlim"): + if not hasattr(axes, "get_zlim"): + raise ValueError("Axes is invalid, does not have " + "'get_zlim' but 'set_zlim'.") + zlim = axes.get_zlim() # type: ignore + axes.set_zlim(1.1 * zlim[0], 1.1 * zlim[1]) + elif use_dims == 2: + axes = pu.get_axes(figure) + axes.set_aspect("equal") + axes.grid(True) + if state_dims == 2: + axes.scatter(self.training_starting_states[:, 0], + self.training_starting_states[:, 1], + color=_TRAINING_COLOR, marker="x", + zorder=1) + axes.scatter(self.test_starting_states[:, 0], + self.test_starting_states[:, 1], + color=_TEST_COLOR, marker="o", zorder=2) + else: + markers: Final[list[str]] = list("xvo^+<s>") + colors: Final[list[str]] = [_TRAINING_COLOR, _TEST_COLOR] + zorder: int = 1 + for i, data in enumerate([self.training_starting_states, + self.test_starting_states]): + color = colors[i] + for row in data: + x: np.ndarray = row[0:state_dims:state_dim_mod] + y: np.ndarray = row[1:state_dims:state_dim_mod] + zorder += 1 + axes.plot(x, y, color=color, zorder=zorder) + for k, xx in enumerate(x): + zorder += 1 + axes.scatter(xx, y[k], color=color, + zorder=zorder, + marker=markers[k % len(markers)]) + else: + raise ValueError(f"invalid dimensions {state_dims} " + f"with modulus {state_dim_mod} for {self}.") + + xlim = axes.get_xlim() + axes.set_xlim(1.1 * xlim[0], 1.1 * xlim[1]) + ylim = axes.get_ylim() + axes.set_ylim(1.1 * ylim[0], 1.1 * ylim[1]) + axes.set_title(f"{self.name} system\ntraining points (" + f"{_TRAINING_COLOR}), test points ({_TEST_COLOR})") + + axes.set_xlabel("x") + axes.set_ylabel("y") + res = pu.save_figure(figure, name, dest_folder, "pdf")[0] + if res != dest_file: + raise ValueError( + f"Wrong destination file {res!r}!={dest_file!r}?") + return dest_file
    + + +
    +[docs] + def describe_system( + self, title: str | None, + controller: Callable[[np.ndarray, float, T, np.ndarray], None], + parameters: T, base_name: str, dest_dir: str, + skip_if_exists: bool = False) \ + -> tuple[Path, ...]: + """ + Describe the performance of a given system of system. + + :param title: the title + :param controller: the controller to simulate + :param parameters: the controller parameters + :param base_name: the base name of the file to produce + :param dest_dir: the destination directory + :param skip_if_exists: if the file already exists + :returns: the paths of the generated files + """ + dest: Final[Path] = Path(dest_dir) + dest.ensure_dir_exists() + + the_title = f"{self.name} system" + if title is not None: + the_title = f"{the_title}: {title}" + + file_1 = dest.resolve_inside(f"{base_name}_plot.pdf") + file_2 = dest.resolve_inside(f"{base_name}_results.csv") + if file_1.ensure_file_exists() and file_2.ensure_file_exists() \ + and skip_if_exists: + return file_1, file_2 + + with ResultsPlot(dest_file=file_1, sup_title=the_title, + state_dims=self.state_dims, + plot_indices=self.plot_examples, + state_dim_mod=self.state_dim_mod) as plt, \ + ResultsLog(self.state_dims, file_2) as log: + multi_run_ode( + self.test_starting_states, + self.training_starting_states, + (plt.collector, log.collector), + self.equations, + controller, parameters, self.control_dims, + self.test_steps, self.test_time, + self.training_steps, self.training_time, + self.state_dims_in_j, self.gamma) + + return file_1, file_2
    + + +
    +[docs] + def describe_system_without_control(self, dest_dir: str, + skip_if_exists: bool = True) \ + -> tuple[Path, ...]: + """ + Describe the performance of a given system of system. + + :param dest_dir: the destination directory + :param skip_if_exists: if the file already exists + :returns: the paths of the generated files + """ + return self.describe_system("without control", _dummy_ctrl, 0.0, + f"{self.name}_without_control", dest_dir, + skip_if_exists)
    +
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/system_model.html b/_modules/moptipyapps/dynamic_control/system_model.html new file mode 100644 index 00000000..39c9cc4e --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/system_model.html @@ -0,0 +1,121 @@ +moptipyapps.dynamic_control.system_model — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.system_model

    +"""
    +An extended dynamic control problem `Instance` with a model for the dynamics.
    +
    +An :class:`~moptipyapps.dynamic_control.instance.Instance` is a combination of
    +
    +- a set of differential equations
    +  (:mod:`~moptipyapps.dynamic_control.system`) that govern the change
    +  `D=ds/dt` of the state `s` of a dynamic system (based on its current
    +  state `s` and the controller output `c(s)`), i.e., `ds/dt=D(s,c(s))` and
    +- a blueprint `c(s, p)` of the controller `c(s)`
    +  (:mod:`~moptipyapps.dynamic_control.controller`).
    +
    +The blueprint of the controller is basically a function that can be
    +parameterized, so it is actually a function `c(s, p)` and the goal of
    +optimization is to parameterize it in such a way that the figure of merit,
    +i.e., the objective value (:mod:`~moptipyapps.dynamic_control.objective`)
    +of the system (usually the sum of squared state values and squared controller
    +outputs) is minimized. Parameterization means finding good values `p` such
    +that the above goal is reached. In other words, we want to synthesize a
    +controller (by finding good values of `p`) in such a way that the state
    +equations drive the system into a stable state, usually ideally the origin of
    +the coordinate system.
    +
    +Now here this :class:`~moptipyapps.dynamic_control.instance.Instance` is
    +extended to a :class:`~moptipyapps.dynamic_control.system_model.SystemModel`
    +by adding a parameterized model `M(s, c(s), q)` to the mix. The idea is to
    +develop the parameterization `q` of the model `M` that can replace the actual
    +system equations `D`. Such a model receives as input the current system state
    +vector `s` and the controller output `c(s)` for the state vector `s`. It will
    +return the differential `D` of the system state, i.e., `ds/dt`. In other
    +words, a properly constructed model can replace the `equations` parameter in
    +the ODE integrator :func:`~moptipyapps.dynamic_control.ode.run_ode`. The
    +input used for training is provided by
    +:func:`~moptipyapps.dynamic_control.ode.diff_from_ode`.
    +
    +What we do here is to re-use the same function models as used in controllers
    +(:mod:`~moptipyapps.dynamic_control.controller`) and learn their
    +parameterizations from the observed data. If successful, we can  wrap
    +everything together into a `Callable` and plug it into the system instead of
    +the original equations.
    +
    +The thing that :class:`SystemModel` offers is thus a blueprint of the model
    +`M`. Obviously, we can conceive many different such blueprints. We could have
    +a linear model, a quadratic model, or maybe neural network (in which case, we
    +need to decide about the number of layers and layer sizes). So an instance of
    +this surrogate model based approach has an equation system, a controller
    +blueprint, and a model blueprint.
    +
    +An example implementation of the concept of synthesizing models for a dynamic
    +system in order to synthesize controllers is given as the
    +:mod:`~moptipyapps.dynamic_control.surrogate_optimizer` algorithm.
    +Examples for different dynamic systems controllers (which we here also use to
    +model the systems themselves) are given in package
    +:mod:`~moptipyapps.dynamic_control.controllers`.
    +
    +The starting points of the work here were conversations with Prof. Dr. Bernd
    +NOACK and Guy Yoslan CORNEJO MACEDA of the Harbin Institute of Technology in
    +Shenzhen, China (哈尔滨工业大学(深圳)).
    +"""
    +from typing import Final
    +
    +from moptipy.utils.logger import KeyValueLogSection
    +from pycommons.types import type_error
    +
    +from moptipyapps.dynamic_control.controller import Controller
    +from moptipyapps.dynamic_control.instance import Instance
    +from moptipyapps.dynamic_control.system import System
    +
    +
    +
    +[docs] +class SystemModel(Instance): + """A dynamic system control `Instance` with a system model blueprint.""" + + def __init__(self, system: System, controller: Controller, + model: Controller) -> None: + """ + Initialize the system model. + + :param system: the system that we want to model + :param controller: the controller that we want to use + :param model: a system model blueprint (also in the shape of a + controller) + """ + if not isinstance(model, Controller): + raise type_error(model, "model", Controller) + super().__init__(system, controller, model.name) + in_dims: Final[int] = system.state_dims + controller.control_dims + if model.state_dims != in_dims: + raise ValueError( + f"model.state_dims={model.state_dims}, but system.state_dims" + f"={system.state_dims} and controller.control_dims=" + f"{controller.control_dims}, so we expected {in_dims} for " + f"controller {str(controller)!r}, system {str(system)!r}, and" + f" model {str(model)!r}.") + if model.control_dims != system.state_dims: + raise ValueError( + f"model.control_dims={model.control_dims} must be the same as" + f" system.state_dims={system.state_dims}, but is not, for " + f"controller {str(controller)!r}, system {str(system)!r}, and" + f" model {str(model)!r}.") + #: the model blueprint that can be trained to hopefully replace the + #: :attr:`~moptipyapps.dynamic_control.instance.Instance.system` in the + #: ODE integration / system simulation procedure + self.model: Final[Controller] = model + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log all parameters of this component as key-value pairs. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + with logger.scope("model") as scope: + self.model.log_parameters_to(scope)
    +
    + +
    diff --git a/_modules/moptipyapps/dynamic_control/systems/.nojekyll b/_modules/moptipyapps/dynamic_control/systems/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_modules/moptipyapps/dynamic_control/systems/lorenz.html b/_modules/moptipyapps/dynamic_control/systems/lorenz.html new file mode 100644 index 00000000..50429dd9 --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/systems/lorenz.html @@ -0,0 +1,204 @@ +moptipyapps.dynamic_control.systems.lorenz — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.systems.lorenz

    +"""
    +The three-dimensional Lorenz system.
    +
    +The initial starting point of the work here were conversations with
    +Prof. Dr. Bernd NOACK and Guy Yoslan CORNEJO MACEDA of the Harbin Institute
    +of Technology in Shenzhen, China (哈尔滨工业大学(深圳)) as well as the
    +following two MSc theses and book:
    +
    +1. Yuxiang LI (李宇翔). Jet Mixing Enhancement using Deep Reinforcement
    +   Learning (基于深度强化学习的射流混合增强控制). MSc Thesis. Harbin Institute
    +   of Technology in Shenzhen, China (哈尔滨工业大学(深圳)).
    +   January 2023.
    +2. Wei SUN (孙伟). Wake Control of 1-2-3 Fluidic Pinball using Deep
    +   Reinforcement Learning (基于深度强化学习方法的 1-2-3 流体弹球尾流控制).
    +   MSc Thesis. Harbin Institute of Technology in Shenzhen, China
    +   (哈尔滨工业大学(深圳)). January 2023.
    +3. Guy Yoslan CORNEJO MACEDA, François LUSSEYRAN, and Bernd R. NOACK.
    +   xMLC: A Toolkit for Machine Learning Control, First Edition.
    +   Machine Learning Tools in Fluid Mechanics, Vol 2.
    +   Shenzhen & Paris; Universitätsbibliothek der Technischen Universität
    +   Braunschweig. 2022 https://doi.org/10.24355/dbbs.084-202208220937-0
    +"""
    +
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from pycommons.types import check_int_range
    +
    +from moptipyapps.dynamic_control.starting_points import (
    +    make_interesting_starting_points,
    +)
    +from moptipyapps.dynamic_control.system import System
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __lorenz_equations(state: np.ndarray, _: float,
    +                       control: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute the differential equations of a controlled 3D Lorenz system.
    +
    +    :param state: the state of the system
    +    :param _: the time index, which is ignored
    +    :param control: the output of the controller
    +    :param out: the differential, i.e., the output of this function
    +    """
    +    x: Final[float] = state[0]
    +    y: Final[float] = state[1]
    +    z: Final[float] = state[2]
    +
    +    # compute the differential system
    +    out[0] = 10.0 * (y - x)
    +    out[1] = 28.0 * x - y - (x * z) + control[0]
    +    out[2] = x * y - (2.6666666666666665 * z)
    +
    +
    +
    +[docs] +def make_lorenz(n_points: int) -> System: + """ + Create the Lorenz system. + + :param n_points: the number of training points + :return: the Lorenz system + """ + check_int_range(n_points, "n_points", 1, 1_000) + tests: Final[np.ndarray] = \ + np.array([[-1.0, 1.0, 3.0], [0.0, 1.0, 22.0]], float) + # similar to training = make_interesting_starting_points(111, tests) + training: Final[np.ndarray] = np.array( + [[-2.31837616e-1, -5.24709723e-2, -1.28671997e-1], + [5.24425115e-1, -4.36886027e-2, 1.23705573e-1], + [-3.34157047e-1, 6.24361532e-1, 3.95015241e-1], + [-4.55212674e-2, -9.84129335e-1, -4.45366280e-1], + [3.63753119e-1, 5.10336447e-1, -1.19737193], + [-2.09587174e-1, -6.89638430e-1, 1.45278120], + [-1.83653628, 3.19596142e-1, -3.23809729e-1], + [1.15939504, 1.50893034, 1.02697020], + [1.97903772, -1.41455814, 1.27529901e-2], + [-8.62639452e-1, 2.43142041, -8.06154187e-1], + [-1.69664567, -2.39320251, -4.83774211e-1], + [2.73331044, 8.57709170e-1, -1.52110281], + [5.33078125e-2, -1.31842985, -3.25664933], + [-8.07769100e-2, -2.97754587, 2.33390990], + [2.35072569, -1.43006329e-1, 3.30026821], + [-4.03232742, -8.31922303e-1, 1.32332254], + [-3.24522964, -1.89918862e-2, -3.25299734], + [1.55208382, 4.52665580, 8.78256040e-1], + [2.22089300, -4.58186003, -6.69524512e-1], + [1.00280557, 2.54311243, -4.66372240], + [-4.04118291, 3.70295973, 1.47501504], + [5.67173423, 1.44565665, 1.04964605], + [-2.59523889, -5.26245489, -2.05406409], + [2.94504196, -2.45896263, -5.23085552], + [-3.28897946, 4.83504710, -3.38620915], + [-2.58817813, -6.25659365e-1, 6.50364050], + [5.72357009, -3.49153015, 2.88262233], + [5.22299795, 4.53644041, -3.06899979], + [-4.87825184, -5.29004044, 3.10808896], + [4.27501083, 3.63860787, 5.85126863], + [-8.34000452, 4.25671605e-1, -6.87181237e-1], + [-1.08540415, 8.10559431, 2.81655916], + [1.94788569, -5.30894243, 6.89792956], + [8.45383153, -1.55041688, -3.25336920], + [-1.03169607, 1.91837732, -9.20608115], + [-6.59584225, -4.08814508, -5.87073907], + [5.15768660e-2, -7.31844351, -6.81576316], + [1.10412724, 9.35404100, -4.09623004], + [-9.24919988e-1, -1.04001359e+1, 1.45033454], + [-8.42728582, 4.69942357, 4.87746425], + [6.56849521, -8.92524514, 7.73503710e-2], + [-7.84621150, 3.63654240, -7.35441923], + [-1.76374875, 5.20695220, 1.02402030e+1], + [6.59956499, 2.63679539, -9.53593460], + [1.11970782e+1, 4.34954429e-1, 4.73069196], + [8.21196486, 9.31990914, 5.42613335e-1], + [-6.86424196, 1.06609923e+1, -7.81891961e-1], + [-4.09122371, -5.09173842, 1.12099315e+1], + [-1.12617383e+1, -3.36092053, 6.10660311], + [4.40559872, 1.77756117e-1, 1.27751719e+1], + [-8.84888642, -1.05672816e+1, 2.33623289e-1], + [3.10452705, 1.18665218e+1, 6.86275419], + [7.72028081, -7.37696538, -9.54979561], + [-2.05792588, -3.26013517, -1.40774520e+1], + [-1.43317322e+1, -2.67395566, -2.90739935], + [9.70967854, -7.60857398, 8.77170340], + [1.33595404e+1, 5.64205226, -5.20159173], + [1.84184161, 9.60079349, -1.22556406e+1], + [1.45763613e+1, -6.18659546, -1.88994719], + [3.57766009, -1.50015844e+1, -5.01626682], + [9.17805707e-1, -1.39139085e+1, 8.79834996], + [1.06480184e+1, 6.70055614, 1.10706193e+1], + [-1.56128381e+1, 6.46573099, -2.09815734], + [-9.87640379, -8.30988969, -1.15173542e+1], + [-9.95414070, 4.28155228, 1.38294971e+1], + [-6.89378192, 1.36522586e+1, -9.18334631], + [1.76686982, 1.79486554e+1, -1.63796984], + [7.05633216, -1.36984415, -1.69160748e+1], + [-6.42179549, -1.65952281e+1, -5.58478539], + [-7.41816999, 1.54645465e+1, 7.98777508], + [-8.42681552, 4.69511699, -1.65901139e+1], + [-9.78324506, -1.39304328e+1, 9.43216455], + [1.94440370e+1, 2.31090199, 2.43252766], + [3.15058476, -9.05446229, 1.75544337e+1], + [1.06459182e+1, 1.47218781e+1, -8.99355553], + [1.22190707e+1, -1.64529457e+1, 1.40712921], + [-1.90636227e+1, 2.16964624, 8.06436472], + [-2.34494082, 1.15135585e+1, 1.75050371e+1], + [1.78508769e+1, -2.19686564, -1.15098756e+1], + [2.31504343e-1, -1.38773263e+1, -1.65813076e+1], + [1.50443571e+1, 1.49229413e+1, 5.50536850], + [-1.79414521e+1, -6.05704638e-1, -1.29993027e+1], + [-1.90893740e+1, -1.14789797e+1, -2.66981417], + [-1.09824863e+1, -4.56662192, 1.93398756e+1], + [1.27613899e+1, -2.31578801, 1.89639329e+1], + [1.06885845, -2.27641276e+1, 4.58167139], + [-1.78853615e+1, 1.41595978e+1, 5.70950161], + [2.03291895e+1, -8.39726474, 9.05394871], + [1.93958349, 7.21737732, -2.28657560e+1], + [1.90522968, 2.16902183e+1, 1.08479166e+1], + [1.45272901e+1, -1.63102458e+1, -1.13106168e+1], + [-1.87965003e+1, 1.38830549e+1, -8.50402100], + [-8.67486188, 2.35641803e+1, -1.16532740], + [-2.08371573e+1, -9.29064237, 1.11821538e+1], + [-7.40930680, -5.51574155, -2.39589341e+1], + [1.55046343e+1, 8.72083349, -1.88907194e+1], + [9.62045596, 1.31513890e+1, 2.05400575e+1], + [8.89447741e-1, 2.16932725e+1, -1.51744310e+1], + [1.20103755e+1, -1.90498725e+1, 1.44533139e+1], + [2.47165331, -2.52776137e+1, -9.24753127], + [2.43672486e+1, 1.09659183e+1, -5.59054774], + [1.05756254e+1, 2.54424857e+1, -9.67114390e-1], + [-1.36887388e+1, -2.40892890e+1, 2.72043969], + [-2.80062395e+1, 8.56852541e-1, -2.26177776], + [-5.19799304, -1.81696491e+1, 2.11734080e+1], + [2.40714873e+1, 6.51484929, 1.41068791e+1], + [1.09672511e+1, -8.86272444, -2.52510743e+1], + [-1.66896882e+1, -1.74937806e+1, -1.63577116e+1], + [2.72013507e+1, -1.05512055e+1, -4.09451211], + [-1.68644649e+1, 1.27734462e+1, 2.08910298e+1], + [-1.36658517e+1, 1.36662584e+1, -2.29484206e+1]]) \ + if n_points == 111 else ( + np.array([[-0.75900911, 3.40732601, -6.63879075], + [10.95019756, -9.9362743, -2.53014984], + [-17.32322703, -10.12101153, -10.18854763], + [13.282736, 14.93163678, -22.37782999]]) + if n_points == 4 else make_interesting_starting_points( + n_points, tests)) + + lorenz: Final[System] = System( + "lorenz", 3, 1, 3, 3, 0.1, tests, training, 5000, 50.0, 5000, 50.0, + (0, 1, 2, len(training) + len(tests) - 1)) + lorenz.equations = __lorenz_equations # type: ignore + return lorenz
    + + + +#: The Lorenz system with 111 training points. +LORENZ_111: Final[System] = make_lorenz(111) + +#: The Lorenz system with 4 training points. +LORENZ_4: Final[System] = make_lorenz(4) +
    diff --git a/_modules/moptipyapps/dynamic_control/systems/stuart_landau.html b/_modules/moptipyapps/dynamic_control/systems/stuart_landau.html new file mode 100644 index 00000000..f35a8d25 --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/systems/stuart_landau.html @@ -0,0 +1,196 @@ +moptipyapps.dynamic_control.systems.stuart_landau — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.systems.stuart_landau

    +"""
    +The two-dimensional Stuart-Landau system.
    +
    +The initial starting point of the work here were conversations with
    +Prof. Dr. Bernd NOACK and Guy Yoslan CORNEJO MACEDA of the Harbin Institute
    +of Technology in Shenzhen, China (哈尔滨工业大学(深圳)) as well as the
    +following two MSc theses and book:
    +
    +1. Yuxiang LI (李宇翔). Jet Mixing Enhancement using Deep Reinforcement
    +   Learning (基于深度强化学习的射流混合增强控制). MSc Thesis. Harbin Institute
    +   of Technology in Shenzhen, China (哈尔滨工业大学(深圳)).
    +   January 2023.
    +2. Wei SUN (孙伟). Wake Control of 1-2-3 Fluidic Pinball using Deep
    +   Reinforcement Learning (基于深度强化学习方法的 1-2-3 流体弹球尾流控制).
    +   MSc Thesis. Harbin Institute of Technology in Shenzhen, China
    +   (哈尔滨工业大学(深圳)). January 2023.
    +3. Guy Yoslan CORNEJO MACEDA, François LUSSEYRAN, and Bernd R. NOACK.
    +   xMLC: A Toolkit for Machine Learning Control, First Edition.
    +   Machine Learning Tools in Fluid Mechanics, Vol 2.
    +   Shenzhen & Paris; Universitätsbibliothek der Technischen Universität
    +   Braunschweig. 2022 https://doi.org/10.24355/dbbs.084-202208220937-0
    +"""
    +
    +from math import sqrt
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from pycommons.types import check_int_range
    +
    +from moptipyapps.dynamic_control.starting_points import (
    +    make_interesting_starting_points,
    +)
    +from moptipyapps.dynamic_control.system import System
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __stuart_landau_equations(state: np.ndarray, _: float,
    +                              control: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute the differential equations of a controlled 2D Stuart-Landau model.
    +
    +    :param state: the state of the system
    +    :param _: the time index, which is ignored
    +    :param control: the output of the controller
    +    :param out: the differential, i.e., the output of this function
    +    """
    +    sigma: Final[float] = 0.1 - state[0]**2 - state[1]**2
    +    out[0] = sigma * state[0] - state[1]
    +    out[1] = sigma * state[1] + state[0] + control[0]
    +
    +
    +
    +[docs] +def make_stuart_landau(n_points: int) -> System: + """ + Create the Stuart-Landau system. + + :param n_points: the number of training points + :return: the Stuart-Landau system + """ + tests: Final[np.ndarray] = np.array([[0.1, 0.0], [sqrt(0.1), 0.0]], float) + check_int_range(n_points, "n_points", 1, 1_000) + training: Final[np.ndarray] = np.array( + [[-0.0038209, -0.00240577], + [0.00307569, 0.00849048], + [0.00976623, -0.00938637], + [-0.01182026, 0.01365555], + [0.01777127, 0.01392328], + [0.0006177, -0.02708416], + [-0.03153332, -0.00214806], + [0.02792395, -0.02291339], + [-0.02847394, 0.02899283], + [0.01350566, 0.04308481], + [-0.02991208, -0.0396497], + [0.0540025, 0.00441161], + [-0.05551053, -0.01907852], + [-0.01080416, -0.06228265], + [-0.03100233, 0.06021576], + [-0.06858837, 0.02268735], + [0.04134416, 0.06467235], + [0.02084729, -0.07855437], + [0.07834551, -0.03495282], + [0.08049101, 0.04093911], + [-0.08926819, -0.03196673], + [-0.02208376, 0.0968485], + [0.07379551, -0.07306821], + [-0.08376945, 0.06874307], + [0.0275525, 0.10946577], + [-0.05169461, -0.10540068], + [-0.11942003, 0.02451537], + [-0.09709783, -0.08096571], + [0.10400721, 0.0795487], + [0.0636276, -0.11958202], + [-0.13503465, -0.03684538], + [-0.06982037, 0.12649679], + [0.07510267, 0.12868982], + [-0.03055115, -0.15044613], + [0.00066117, 0.15803063], + [0.15246865, -0.05634631], + [0.0232859, -0.1654316], + [0.17156619, 0.00197981], + [-0.16413595, 0.06378141], + [0.16890575, 0.06395391], + [0.14766927, -0.11164403], + [-0.08647114, -0.16877639], + [-0.12327999, 0.14999224], + [-0.19863449, -0.00369282], + [0.11207882, -0.1694759], + [-0.06793134, 0.19627607], + [0.16954787, 0.12762632], + [-0.14915337, -0.15724184], + [0.04633135, -0.21633926], + [0.06125791, 0.21729025], + [-0.18584921, 0.13596598], + [-0.1999492, -0.12307257], + [0.23850607, -0.01954563], + [0.1439136, 0.19681835], + [-0.02521609, -0.24705248], + [-0.00891478, 0.25269401], + [-0.24709608, -0.07197915], + [-0.10863885, -0.23828467], + [0.25404676, 0.08017174], + [0.1665829, -0.2136433], + [0.25571773, -0.10231616], + [-0.27547718, 0.04980043], + [-0.09155915, 0.26931962], + [0.0781761, -0.27819739], + [-0.26285954, 0.13053765], + [0.23770086, -0.17973375], + [0.12078667, 0.27735893], + [-0.30500318, -0.03525198], + [0.20619554, 0.23355099], + [-0.19712815, 0.24705659], + [-0.18688532, -0.26047056], + [0.26924503, 0.18219083], + [0.04358426, 0.32671534], + [-0.29933575, -0.14845035], + [-0.10118493, -0.32316973], + [0.15974011, -0.30370809], + [0.33188974, -0.10355639], + [0.0401967, -0.34988418], + [-0.14267712, 0.32692311], + [-0.27812549, -0.23048476], + [-0.3127193, 0.18964695], + [-0.36944776, 0.02430573], + [-0.03954588, 0.37266929], + [0.34413746, 0.15943751], + [-0.27511481, 0.26759701], + [0.14876924, 0.35867843], + [0.38719748, 0.06623872], + [0.25924229, -0.30111563], + [-0.03399581, -0.40041226], + [-0.38191229, -0.13884515], + [-0.38558806, 0.14193967], + [0.25389894, 0.32877223], + [-0.27063978, -0.32106318], + [0.36693718, -0.21330011], + [-0.23322584, 0.35999818], + [0.0372525, 0.43185548], + [-0.11945503, 0.42136931], + [0.0834364, -0.434552], + [0.44623645, -0.02619827], + [-0.44718354, -0.06242773], + [-0.2100912, -0.40475896], + [0.35704647, 0.29090293], + [0.20490764, -0.4174912], + [-0.46428805, 0.07030482], + [-0.39615467, -0.26043909], + [-0.10245864, -0.46751571], + [0.35093411, -0.33204879], + [0.45711698, 0.16981881], + [0.17358843, 0.46052731], + [-0.39398933, 0.30241613], + [0.47669529, -0.15475867]]) if n_points == 111 else ( + np.array([[-0.11744545, 0.04365611], + [-0.05513875, -0.2444522], + [-0.13321976, 0.35149126], + [-0.47720217, -0.15318856]]) if n_points == 4 else + make_interesting_starting_points(n_points, tests)) + + system: Final[System] = System( + "stuart_landau", 2, 1, 2, 2, 0.1, + tests, training, 5000, 50.0, 5000, 50.0, (0, 1)) + system.equations = __stuart_landau_equations # type: ignore + return system
    + + + +#: The Stuart-Landau system with 111 training points. +STUART_LANDAU_111: Final[System] = make_stuart_landau(111) + +#: The Stuart-Landau system with 4 training points. +STUART_LANDAU_4: Final[System] = make_stuart_landau(4) +
    diff --git a/_modules/moptipyapps/dynamic_control/systems/three_coupled_oscillators.html b/_modules/moptipyapps/dynamic_control/systems/three_coupled_oscillators.html new file mode 100644 index 00000000..69999d9f --- /dev/null +++ b/_modules/moptipyapps/dynamic_control/systems/three_coupled_oscillators.html @@ -0,0 +1,157 @@ +moptipyapps.dynamic_control.systems.three_coupled_oscillators — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.dynamic_control.systems.three_coupled_oscillators

    +"""
    +A system of three coupled oscillators.
    +
    +There are three oscillators located in a two-dimensional plane. Thus, there
    +are a total of six coordinates.
    +
    +The initial starting point of the work here were conversations with
    +Prof. Dr. Bernd NOACK and Guy Yoslan CORNEJO MACEDA of the Harbin Institute
    +of Technology in Shenzhen, China (哈尔滨工业大学(深圳)) as well as the
    +following paper:
    +
    +1. Ruiying Li, Bernd R. Noack, Laurent Cordier, Jacques Borée, Eurika Kaiser,
    +   and Fabien Harambat. Linear genetic programming control for strongly
    +   nonlinear dynamics with frequency crosstalk. *Archives of Mechanics.*
    +   70(6):505-534. Warszawa 2018. Seventy Years of the Archives of Mechanics.
    +   https://doi.org/10.24423/aom.3000. Also: arXiv:1705.00367v1
    +   [physics.flu-dyn] 30 Apr 2017. https://arxiv.org/abs/1705.00367.
    +"""
    +
    +from math import pi
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from pycommons.io.path import Path
    +from pycommons.types import check_int_range
    +
    +from moptipyapps.dynamic_control.starting_points import (
    +    make_interesting_starting_points,
    +)
    +from moptipyapps.dynamic_control.system import System
    +
    +#: pi to the square
    +__PI2: Final[float] = pi * pi
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def __3_coupled_oscillators(state: np.ndarray, _: float,
    +                            control: np.ndarray, out: np.ndarray) -> None:
    +    """
    +    Compute the differential equations of a controlled 3-oscillators system.
    +
    +    The system is six-dimensional. There are three oscillators, and each one
    +    is updated. There is one control value.
    +    This function implements equation (3.1) of the paper.
    +
    +    :param state: the state of the system
    +    :param _: the time index, which is ignored
    +    :param control: the output of the controller
    +    :param out: the differential, i.e., the output of this function
    +    """
    +    a1: Final[float] = state[0]
    +    a2: Final[float] = state[1]
    +    a3: Final[float] = state[2]
    +    a4: Final[float] = state[3]
    +    a5: Final[float] = state[4]
    +    a6: Final[float] = state[5]
    +
    +    r1sqr: Final[float] = (a1 * a1) + (a2 * a2)
    +    r2sqr: Final[float] = (a3 * a3) + (a4 * a4)
    +    r3sqr: Final[float] = (a5 * a5) + (a6 * a6)
    +    sigma1: Final[float] = -r1sqr + r2sqr - r3sqr
    +    sigma2: Final[float] = 0.1 - r2sqr
    +    sigma3: Final[float] = -0.1
    +
    +    b: Final[float] = control[0]
    +
    +    # compute the differential system
    +    out[0] = (sigma1 * a1) - a2
    +    out[1] = (sigma1 * a2) + a1
    +    out[2] = (sigma2 * a3) - (pi * a4)
    +    out[3] = (sigma2 * a4) + (pi * a3) + b
    +    out[4] = (sigma3 * a5) - (__PI2 * a6)
    +    out[5] = (sigma3 * a6) + (__PI2 * a5) + b
    +
    +
    +def _sinus_control(
    +        _: np.ndarray, time: float, __: float, out: np.ndarray) -> None:
    +    """
    +    Present the sinus-based control law from the paper.
    +
    +    :param _: the state, ignored
    +    :param time: the time
    +    :param __: ignored
    +    :param out: the output destination
    +    """
    +    out[0] = 0.07 * np.sin(__PI2 * time)
    +
    +
    +def _lgpc3_36(
    +        state: np.ndarray, time: float, _: float, out: np.ndarray) -> None:
    +    """
    +    Present the LGPC-3 equation 3.6.
    +
    +    :param state: the state
    +    :param time: the time
    +    :param _: ignored
    +    :param out: the output destination
    +    """
    +    out[0] = np.tanh(np.sin(np.tanh(
    +        3.0 * state[1] * np.sin(time) * np.sin(__PI2 * time) - state[3])))
    +
    +
    +class __TO(System):
    +    """The internal three oscillators class."""
    +
    +    def describe_system_without_control(
    +            self, dest_dir: str, skip_if_exists: bool = True) \
    +            -> tuple[Path, ...]:
    +        result = list(super().describe_system_without_control(
    +            dest_dir, skip_if_exists))
    +        result.extend(self.describe_system(
    +            "open loop 0.07sin(\u03C0²t)", _sinus_control, 0.0,
    +            f"{self.name}_open_loop", dest_dir, skip_if_exists))
    +        result.extend(self.describe_system(
    +            "LGPC-3", _lgpc3_36, 0.0,
    +            f"{self.name}_lgpc3", dest_dir, skip_if_exists))
    +        return tuple(result)
    +
    +
    +
    +[docs] +def make_3_couple_oscillators(n_points: int) -> System: + """ + Create the oscillator system. + + :param n_points: the number of training points + :return: the Lorenz system + """ + check_int_range(n_points, "n_points", 1, 1_000) + tests: Final[np.ndarray] = \ + np.array([[0.1, 0, 0.1, 0, 0.1, 0]], float) + # similar to training = make_interesting_starting_points(111, tests) + training: Final[np.ndarray] = np.array([[ + -0.00721145, -0.00399194, -0.01078522, 0.0795534, 0.02929588, + 0.01588136], [ + 0.13202113, 0.05538969, -0.01011213, -0.06584996, 0.02154825, + -0.07136868], [ + 0.18476107, 0.10267522, -0.05342748, 0.12922333, -0.06481063, + -0.0133719], [ + -0.20572899, 0.08377647, 0.21218986, 0.00109397, 0.16296447, + 0.03239565]]) if n_points == 4 else ( + make_interesting_starting_points(n_points, tests)) + + three: Final[System] = __TO( + "3oscillators", 6, 1, 2, 2, 1.0, + tests, training, 5000, 50.0, 5000, 50.0, + (0, 1, 2, len(training) + len(tests) - 1)) + three.equations = __3_coupled_oscillators # type: ignore + return three
    + + + +#: The 3 oscillators system with 4 training points. +THREE_COUPLED_OSCILLATORS: Final[System] = make_3_couple_oscillators(4) +
    diff --git a/_modules/moptipyapps/order1d/.nojekyll b/_modules/moptipyapps/order1d/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_modules/moptipyapps/order1d/distances.html b/_modules/moptipyapps/order1d/distances.html new file mode 100644 index 00000000..19d96677 --- /dev/null +++ b/_modules/moptipyapps/order1d/distances.html @@ -0,0 +1,70 @@ +moptipyapps.order1d.distances — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.order1d.distances

    +"""Some examples for distance metrics."""
    +
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from moptipy.utils.nputils import DEFAULT_BOOL
    +
    +
    +
    +[docs] +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False) +def swap_distance(p1: np.ndarray, p2: np.ndarray) -> int: + """ + Compute the swap distance between two permutations `p1` and `p1`. + + This is the minimum number of swaps required to translate `p1` to `p2` and + vice versa. This function is symmatric. + + An upper bound for the number of maximum number of swaps that could be + required is the length of the permutation. This upper bound can be derived + from Selection Sort. Imagine that I want to translate the array `p1` to + `p2`. I go through `p1` from beginning to end. If, at index `i`, I find + the right element (`p1[i] == p2[i]`), then I do nothing. If not, then the + right element must come at some index `j>i` (because all elements before I + already have fixed). So I swap `p1[i]` with `p1[j]`. Now `p1[i] == p2[i]` + and I increment `i`. Once I arrive at the end of `p1`, it must hold that + `all(p1[i] == p2[i])`. At the same time, I have performed at most one swap + at each index during the iteration. Hence, I can never need more swaps + than the arrays are long. + + :param p1: the first permutation + :param p2: the second permutation + :return: the swap distance, always between `0` and `len(p1)` + + >>> swap_distance(np.array([0, 1, 2, 3]), np.array([3, 1, 2, 0])) + 1 + >>> swap_distance(np.array([0, 1, 2]), np.array([0, 1, 2])) + 0 + >>> swap_distance(np.array([1, 0, 2]), np.array([0, 1, 2])) + 1 + >>> swap_distance(np.array([0, 1, 2]), np.array([1, 0, 2])) + 1 + >>> swap_distance(np.array([0, 1, 2]), np.array([2, 0, 1])) + 2 + >>> swap_distance(np.array([2, 0, 1]), np.array([0, 1, 2])) + 2 + >>> swap_distance(np.arange(10), np.array([4, 8, 1, 5, 9, 3, 6, 0, 7, 2])) + 7 + >>> swap_distance(np.array([4, 8, 1, 5, 9, 3, 6, 0, 7, 2]), np.arange(10)) + 7 + """ + n: Final[int] = len(p1) + x: np.ndarray = p2[np.argsort(p1)] + unchecked: np.ndarray = np.ones(n, DEFAULT_BOOL) + result: int = 0 + + for i in range(n): + if unchecked[i]: + result += 1 + unchecked[i] = False + j = x[i] + while j != i: + unchecked[j] = False + j = x[j] + + return n - result
    + +
    diff --git a/_modules/moptipyapps/order1d/instance.html b/_modules/moptipyapps/order1d/instance.html new file mode 100644 index 00000000..e92f391f --- /dev/null +++ b/_modules/moptipyapps/order1d/instance.html @@ -0,0 +1,357 @@ +moptipyapps.order1d.instance — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.order1d.instance

    +"""An instance of the ordering problem."""
    +
    +
    +from math import isfinite
    +from typing import Callable, Final, Iterable, TypeVar, cast
    +
    +import numpy as np
    +from moptipy.utils.logger import KeyValueLogSection
    +from moptipy.utils.nputils import DEFAULT_INT
    +from moptipy.utils.strings import (
    +    num_to_str_for_name,
    +    sanitize_name,
    +)
    +from pycommons.types import check_int_range, type_error
    +from scipy.stats import rankdata  # type: ignore
    +
    +from moptipyapps.qap.instance import Instance as QAPInstance
    +
    +#: the type variable for the source object
    +T = TypeVar("T")
    +
    +#: the zero-based index column name
    +_ZERO_BASED_INDEX: Final[str] = "indexZeroBased"
    +#: the suggested x-coordinate
    +_SUGGESTED_X_IN_0_1: Final[str] = "suggestedXin01"
    +
    +
    +
    +[docs] +class Instance(QAPInstance): + """ + An instance of the One-Dimensional Ordering Problem. + + Such an instance represents the ranking of objects by their distance to + each other as a :mod:`~moptipyapps.qap` problem. + + >>> def _dist(a, b): + ... return abs(a - b) + >>> def _tags(a): + ... return f"t{a}" + >>> the_instance = Instance.from_sequence_and_distance( + ... [1, 2, 3], _dist, 1, 100, ("bla", ), _tags) + >>> print(the_instance) + order1d_3_1 + >>> print(the_instance.distances) + [[0 1 2] + [1 0 1] + [2 1 0]] + >>> print(the_instance.flows) + [[0 4 2] + [3 0 3] + [2 4 0]] + """ + + def __init__(self, distances: np.ndarray, + flow_power: int | float, + horizon: int, + tag_titles: Iterable[str], + tags: Iterable[tuple[Iterable[str] | str, int]], + name: str | None = None) -> None: + """ + Create an instance of the quadratic assignment problem. + + :param distances: the original distance matrix + :param flow_power: the power to be used for constructing the flows + based on the original distances + :param horizon: the horizon for distance ranks, after which all + elements are ignored + :param tag_titles: the tag titles + :param tags: the assignment of rows to names + :param name: the instance name + """ + if not isinstance(flow_power, int | float): + raise type_error(flow_power, "flow_power", (int, float)) + if not (isfinite(flow_power) and (0 < flow_power < 100)): + raise ValueError( + f"flow_power must be in (0, 100), but is {flow_power}.") + + n: Final[int] = len(distances) # the number of elements + horizon = check_int_range(horizon, "horizon", 1, 1_000_000_000_000) + + # construct the distance matrix + dist_matrix = np.zeros((n, n), DEFAULT_INT) + for i in range(n): + for j in range(i + 1, n): + dist_matrix[i, j] = dist_matrix[j, i] = j - i + + # construct the flow matrix + flows: np.ndarray = rankdata( + distances, axis=1, method="average") - 1.0 + + # get the flow rank multiplier + multiplier: float = 1.0 + for i in range(n): + for j in range(n): + if i == j: + continue + f = flows[i, j] + if int(f) < f <= horizon: # dow we need the multiplier? + multiplier = 0.5 ** (-flow_power) + break + + flow_matrix = np.zeros((n, n), DEFAULT_INT) + max_val: Final[int] = min(n - 1, horizon) + for i in range(n): + for j in range(n): + if i == j: + continue + f = flows[i, j] + if f > horizon: + continue + flow_matrix[i, j] = int(round( + multiplier * ((max_val - f + 1) ** flow_power))) + + # construct a name if necessary + if name is None: + name = f"order1d_{n}_{num_to_str_for_name(flow_power)}" + if max_val < (n - 1): + name = f"{name}_{max_val}" + + super().__init__(dist_matrix, flow_matrix, name=name) + + if self.n != n: + raise ValueError("error when assigning number of elements!") + + #: the flow power + self.flow_power: Final[int | float] = flow_power + #: the horizon + self.horizon: Final[int] = max_val + + if not isinstance(tags, Iterable): + raise type_error(tags, "tags", Iterable) + if not isinstance(tag_titles, Iterable): + raise type_error(tag_titles, "tag_titles", Iterable) + + #: the tag titles + self.tag_titles: Final[tuple[str, ...]] = tuple(map( + sanitize_name, tag_titles)) + req_len: Final[int] = len(self.tag_titles) + if req_len <= 0: + raise ValueError("No tags specified.") + + #: the tags, i.e., additional data for each original element + self.tags: Final[tuple[tuple[tuple[str, ...], int], ...]] = ( + tuple(((t, ) if isinstance(t, str) + else tuple(t), k) for t, k in tags)) + if _ZERO_BASED_INDEX in self.tags: + raise ValueError(f"{_ZERO_BASED_INDEX} not permitted in tags.") + if _SUGGESTED_X_IN_0_1 in self.tags: + raise ValueError(f"{_SUGGESTED_X_IN_0_1} not permitted in tags.") + + if len(self.tags) < n: + raise ValueError(f"there must be at least {self.n} tags, but got " + f"{len(self.tags)}, i.e., {self.tags}") + for tag in self.tags: + check_int_range(tag[1], "id", 0, n) + if len(tag[0]) != req_len: + raise ValueError( + f"all tags must have the same length. " + f"while the first tag ({self.tags[0]}) has " + f"length {req_len}, {tag} has length {len(tag[0])}.") + +
    +[docs] + @staticmethod + def from_sequence_and_distance( + data: Iterable[T | None], + get_distance: Callable[[T, T], int | float], + flow_power: int | float, + horizon: int, + tag_titles: Iterable[str], + get_tags: Callable[[T], str | Iterable[str]], + name: str | None = None) -> "Instance": + """ + Turn a sequence of objects into a One-Dimensional Ordering instance. + + :param data: the data source, i.e., an iterable of data elements + :param get_tags: the function for extracting tags from objects + :param get_distance: the function for getting the distance between + objects + :param flow_power: the flow power + :param horizon: the maximal considered rank + :param tag_titles: the tag names + :param name: the optional name + :return: the ordering instance + + >>> def _dist(a, b): + ... return abs(a - b) + >>> def _tags(a): + ... return f"x{a}", f"b{a}" + >>> res = Instance.from_sequence_and_distance( + ... [1, 2, 5], _dist, 2, 100, ("a", "b"), _tags) + >>> print(res) + order1d_3_2 + >>> print(res.flows) + [[0 4 1] + [4 0 1] + [1 4 0]] + >>> print(res.distances) + [[0 1 2] + [1 0 1] + [2 1 0]] + >>> res = Instance.from_sequence_and_distance( + ... [1, 2, 35, 4], _dist, 2, 100, ("a", "b"), _tags) + >>> print(res) + order1d_4_2 + >>> print(res.flows) + [[0 9 1 4] + [9 0 1 4] + [1 4 0 9] + [4 9 1 0]] + >>> print(res.distances) + [[0 1 2 3] + [1 0 1 2] + [2 1 0 1] + [3 2 1 0]] + >>> res = Instance.from_sequence_and_distance( + ... [1, 2, 4, 4], _dist, 2, 100, ("a", "b"), _tags) + >>> print(res) + order1d_3_2 + >>> print(res.flows) + [[0 4 1] + [4 0 1] + [1 4 0]] + >>> print(res.distances) + [[0 1 2] + [1 0 1] + [2 1 0]] + >>> print(res.tags) + ((('x1', 'b1'), 0), (('x2', 'b2'), 1), (('x4', 'b4'), 2), \ +(('x4', 'b4'), 2)) + >>> def _dist2(a, b): + ... return abs(abs(a) - abs(b)) + 1 + >>> res = Instance.from_sequence_and_distance( + ... [1, 2, -4, 4], _dist2, 2, 100, ("a", "b"), _tags) + >>> print(res) + order1d_4_2 + >>> print(res.flows) + [[ 0 36 9 9] + [36 0 9 9] + [ 4 16 0 36] + [ 4 16 36 0]] + >>> print(res.distances) + [[0 1 2 3] + [1 0 1 2] + [2 1 0 1] + [3 2 1 0]] + >>> res = Instance.from_sequence_and_distance( + ... [1, 2, -4, 4], _dist2, 3, 100, ("a", "b"), _tags) + >>> print(res) + order1d_4_3 + >>> print(res.flows) + [[ 0 216 27 27] + [216 0 27 27] + [ 8 64 0 216] + [ 8 64 216 0]] + >>> print(res.distances) + [[0 1 2 3] + [1 0 1 2] + [2 1 0 1] + [3 2 1 0]] + >>> print(res.tags) + ((('x1', 'b1'), 0), (('x2', 'b2'), 1), (('x-4', 'b-4'), 2), \ +(('x4', 'b4'), 3)) + >>> res = Instance.from_sequence_and_distance( + ... [1, 2, -4, 4], _dist2, 3, 2, ("a", "b"), _tags) + >>> print(res) + order1d_4_3_2 + >>> print(res.flows) + [[0 8 0 0] + [8 0 0 0] + [0 1 0 8] + [0 1 8 0]] + >>> print(res.distances) + [[0 1 2 3] + [1 0 1 2] + [2 1 0 1] + [3 2 1 0]] + >>> print(res.tags) + ((('x1', 'b1'), 0), (('x2', 'b2'), 1), (('x-4', 'b-4'), 2), \ +(('x4', 'b4'), 3)) + >>> res = Instance.from_sequence_and_distance( + ... [1, 2, -4, 4], _dist2, 2, 2, ("a", "b"), _tags) + >>> print(res) + order1d_4_2_2 + >>> print(res.flows) + [[0 4 0 0] + [4 0 0 0] + [0 1 0 4] + [0 1 4 0]] + >>> print(res.distances) + [[0 1 2 3] + [1 0 1 2] + [2 1 0 1] + [3 2 1 0]] + """ + if not isinstance(data, Iterable): + raise type_error(data, "data", Iterable) + if not callable(get_tags): + raise type_error(get_tags, "get_tags", call=True) + if not callable(get_distance): + raise type_error(get_distance, "get_distance", call=True) + if not isinstance(tag_titles, Iterable): + raise type_error(tag_titles, "tag_titles", Iterable) + + # build a distance matrix and purge all zero-distance elements + datal: list[T] = cast(list[T], data) \ + if isinstance(data, list) else list(data) + mappings: list[tuple[T, int]] = [] + distances: list[list[int | float]] = [] + i: int = 0 + while i < len(datal): + o1: T = datal[i] + j: int = i + 1 + current_dists: list[int | float] = [d[i] for d in distances] + current_dists.append(0) + while j < len(datal): + o2: T = datal[j] + dist: int | float = get_distance(o1, o2) + if not (isfinite(dist) and (0 <= dist <= 1e100)): + raise ValueError( + f"invalid distance {dist} for objects {i}, {j}") + if dist <= 0: # distance == 0, must purge + mappings.append((o2, i)) + del datal[j] + for ds in distances: + del ds[j] + continue + current_dists.append(dist) + j += 1 + mappings.append((o1, i)) + distances.append(current_dists) + i += 1 + + # we now got a full distance matrix, let's turn it into a rank matrix + return Instance(np.array(distances), + flow_power, horizon, tag_titles, + ((get_tags(obj), idx) for obj, idx in mappings), + name)
    + + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log all parameters of this component as key-value pairs. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + logger.key_value("flowPower", self.flow_power) + logger.key_value("horizon", self.horizon) + logger.key_value("nOrig", len(self.tags))
    +
    + +
    diff --git a/_modules/moptipyapps/order1d/space.html b/_modules/moptipyapps/order1d/space.html new file mode 100644 index 00000000..9352681c --- /dev/null +++ b/_modules/moptipyapps/order1d/space.html @@ -0,0 +1,102 @@ +moptipyapps.order1d.space — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.order1d.space

    +"""
    +An extension of the permutation space for one-dimensional ordering.
    +
    +The main difference is how the `to_str` result is noted, namely that it
    +contains the mapping of tags to locations.
    +
    +>>> def _dist(a, b):
    +...     return abs(a - b)
    +>>> def _tags(a):
    +...     return f"t{a}"
    +>>> the_instance = Instance.from_sequence_and_distance(
    +...     [1, 2, 3, 3, 2, 3], _dist, 2, 10, ("x", ), _tags)
    +>>> the_space = OrderingSpace(the_instance)
    +>>> the_str = the_space.to_str(np.array([0, 2, 1]))
    +>>> the_str.splitlines()
    +['0;2;1', '', 'indexZeroBased;suggestedXin01;x', '0;0;t1', '2;1;t2', \
    +'2;1;t2', '1;0.5;t3', '1;0.5;t3', '1;0.5;t3']
    +>>> print(the_space.from_str(the_str))
    +[0 2 1]
    +"""
    +
    +from typing import Final
    +
    +import numpy as np
    +from moptipy.spaces.permutations import Permutations
    +from moptipy.utils.logger import CSV_SEPARATOR
    +from moptipy.utils.strings import float_to_str
    +from pycommons.types import type_error
    +
    +from moptipyapps.order1d.instance import (
    +    _SUGGESTED_X_IN_0_1,
    +    _ZERO_BASED_INDEX,
    +    Instance,
    +)
    +
    +
    +
    +[docs] +class OrderingSpace(Permutations): + """A space for one-dimensional orderings.""" + + def __init__(self, instance: Instance) -> None: + """ + Create an ordering space from an instance. + + :param instance: the instance + """ + if not isinstance(instance, Instance): + raise type_error(instance, "instance", Instance) + super().__init__(range(instance.n)) + #: the instance + self.instance: Final[Instance] = instance + +
    +[docs] + def to_str(self, x: np.ndarray) -> str: + """ + Convert a solution to a string. + + :param x: the permutation + :return: the string + """ + tags: Final[tuple[tuple[tuple[str, ...], int], ...]] \ + = self.instance.tags + + n: Final[int] = len(self.blueprint) - 1 + text: list[str] = [] + + text.extend(super().to_str(x).split("\n")) + text.append("") # noqa: PIE799 + + row: list[str] = [_ZERO_BASED_INDEX, _SUGGESTED_X_IN_0_1] + row.extend(self.instance.tag_titles) + text.append(f"{CSV_SEPARATOR.join(row)}") + + for tag, i in tags: + row.clear() + row.append(str(x[i])) + row.append(float_to_str(x[i] / n)) + row.extend(tag) + text.append(f"{CSV_SEPARATOR.join(row)}") + return "\n".join(text)
    + + +
    +[docs] + def from_str(self, text: str) -> np.ndarray: + """ + Get the string version from the given text. + + :param text: the text + :return: the string + """ + text = text.lstrip() + idx: int = text.find("\n") + if idx > 0: + text = text[:idx] + return super().from_str(text.rstrip())
    +
    + +
    diff --git a/_modules/moptipyapps/qap/.nojekyll b/_modules/moptipyapps/qap/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_modules/moptipyapps/qap/instance.html b/_modules/moptipyapps/qap/instance.html new file mode 100644 index 00000000..47b7cb0f --- /dev/null +++ b/_modules/moptipyapps/qap/instance.html @@ -0,0 +1,500 @@ +moptipyapps.qap.instance — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.qap.instance

    +"""
    +An instance of the Quadratic Assignment Problem.
    +
    +In this module, we provide the class :class:`~Instance` that encapsulates all
    +information of a problem instance of the Quadratic Assignment Problem (QAP).
    +The QAP aims to locate facilities at locations such that the flow-distance
    +product sum combining a flows of goods between instances with the distances of
    +the locations becomes minimal. Each instance therefore presents a matrix with
    +:attr:`~moptipyapps.qap.instance.Instance.distances` and a matrix with flows
    +:attr:`~moptipyapps.qap.instance.Instance.flows`.
    +
    +1. Eliane Maria Loiola, Nair Maria Maia de Abreu, Paulo Oswaldo
    +   Boaventura-Netto, Peter Hahn, and Tania Querido. A survey for the
    +   Quadratic Assignment Problem. European Journal of Operational Research.
    +   176(2):657-690. January 2007. https://doi.org/10.1016/j.ejor.2005.09.032.
    +2. Rainer E. Burkard, Eranda Çela, Panos M. Pardalos, and
    +   Leonidas S. Pitsoulis. The Quadratic Assignment Problem. In Ding-Zhu Du,
    +   Panos M. Pardalos, eds., Handbook of Combinatorial Optimization,
    +   pages 1713-1809, 1998, Springer New York, NY, USA.
    +   https://doi.org/10.1007/978-1-4613-0303-9_27.
    +
    +
    +We additionally provide access to several standard QAP benchmark instances
    +via the :meth:`~Instance.from_resource` and :meth:`~Instance.list_resources`
    +methods. The standard benchmark instances stem from QAPLIB, a library of QAP
    +instances, which can be found at <https://qaplib.mgi.polymtl.ca> and
    +<https://coral.ise.lehigh.edu/data-sets/qaplib>.
    +
    +1. QAPLIB - A Quadratic Assignment Problem Library. The Websites
    +   <https://qaplib.mgi.polymtl.ca/> (updated 2018) and
    +   <https://coral.ise.lehigh.edu/data-sets/qaplib/> (updated 2011), including
    +   the benchmark instances, on visited 2023-10-21.
    +2. Rainer E. Burkard, Stefan E. Karisch, and Franz Rendl. QAPLIB - A Quadratic
    +   Assignment Problem Library. Journal of Global Optimization. 10:391-403,
    +   1997. https://doi.org/10.1023/A:1008293323270.
    +"""
    +
    +
    +from typing import Final, Iterable, cast
    +
    +import numba  # type: ignore
    +import numpy as np
    +from moptipy.api.component import Component
    +from moptipy.utils.logger import KeyValueLogSection
    +from moptipy.utils.nputils import (
    +    DEFAULT_UNSIGNED_INT,
    +    int_range_to_dtype,
    +    is_np_int,
    +)
    +from moptipy.utils.strings import sanitize_name
    +from pycommons.types import check_int_range, check_to_int_range, type_error
    +
    +from moptipyapps.qap.qaplib import open_resource_stream
    +
    +
    +
    +[docs] +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False) +def trivial_bounds(distances: np.ndarray, flows: np.ndarray) \ + -> tuple[int, int]: + """ + Compute the trivial bounds for the QAP objective. + + A trivial upper bound is to multiply the largest flow with the largest + distance, the second-largest flow with the second-largest distance, the + third-largest flow with the third-largest distance, and so on. + + A trivial lower bound is to multiply the largest flow with the shortest + distance, the second-largest flow with the second-shortest distance, the + third-largest flow with the third-shortest distance, and so on. + + :param distances: the distance matrix + :param flows: the flow matrix + :return: the lower and upper bounds + + >>> dst = np.array([[0, 1, 2], [3, 0, 4], [5, 6, 0]]) + >>> flws = np.array([[0, 95, 86], [23, 0, 55], [24, 43, 0]]) + >>> 0*95 + 0*86 + 0*55 + 1*43 + 2*24 + 3*23 + 4*0 + 5*0 + 6*0 + 160 + >>> 6*95 + 5*86 + 4*55 + 3*43 + 2*24 + 1*23 + 0*0 + 0*0 + 0*0 + 1420 + >>> trivial_bounds(dst, flws) + (160, 1420) + """ + n: int = len(distances) + n *= n + df_ub: Final[np.ndarray] = np.empty(n, DEFAULT_UNSIGNED_INT) + df_ub[:] = distances.flatten() + df_ub.sort() + df_lb: Final[np.ndarray] = np.empty(n, DEFAULT_UNSIGNED_INT) + df_lb[:] = df_ub[::-1] + ff: Final[np.ndarray] = np.empty(n, DEFAULT_UNSIGNED_INT) + ff[:] = flows.flatten() + ff.sort() + return (int(np.multiply(df_lb, ff, df_lb).sum()), + int(np.multiply(df_ub, ff, df_ub).sum()))
    + + + +def _flow_or_dist_to_int(val: str) -> int: + """ + Convert a flow or distance string to an integer. + + :param val: the value + :return: the integer + """ + return check_to_int_range(val, "value", 0, 1_000_000_000_000_000) + + +#: the instances of the QAPLib library +_INSTANCES: Final[tuple[str, ...]] = ( + "bur26a", "bur26b", "bur26c", "bur26d", "bur26e", "bur26f", "bur26g", + "bur26h", "chr12a", "chr12b", "chr12c", "chr15a", "chr15b", "chr15c", + "chr18a", "chr18b", "chr20a", "chr20b", "chr20c", "chr22a", "chr22b", + "chr25a", "els19", "esc16a", "esc16b", "esc16c", "esc16d", "esc16e", + "esc16f", "esc16g", "esc16h", "esc16i", "esc16j", "esc32a", "esc32b", + "esc32c", "esc32d", "esc32e", "esc32g", "esc32h", "esc64a", "esc128", + "had12", "had14", "had16", "had18", "had20", "kra30a", "kra30b", "kra32", + "lipa20a", "lipa20b", "lipa30a", "lipa30b", "lipa40a", "lipa40b", + "lipa50a", "lipa50b", "lipa60a", "lipa60b", "lipa70a", "lipa70b", + "lipa80a", "lipa80b", "lipa90a", "lipa90b", "nug12", "nug14", "nug15", + "nug16a", "nug16b", "nug17", "nug18", "nug20", "nug21", "nug22", "nug24", + "nug25", "nug27", "nug28", "nug30", "rou12", "rou15", "rou20", "scr12", + "scr15", "scr20", "sko42", "sko49", "sko56", "sko64", "sko72", "sko81", + "sko90", "sko100a", "sko100b", "sko100c", "sko100d", "sko100e", "sko100f", + "ste36a", "ste36b", "ste36c", "tai12a", "tai12b", "tai15a", "tai15b", + "tai17a", "tai20a", "tai20b", "tai25a", "tai25b", "tai30a", "tai30b", + "tai35a", "tai35b", "tai40a", "tai40b", "tai50a", "tai50b", "tai60a", + "tai60b", "tai64c", "tai80a", "tai80b", "tai100a", "tai100b", "tai150b", + "tai256c", "tho30", "tho40", "tho150", "wil50", "wil100") + +#: the lower bounds provided at <https://qaplib.mgi.polymtl.ca/> +_BOUNDS: Final[dict[str, int]] = { + "nug14": 1014, "nug15": 1150, "nug16a": 1610, "nug16b": 1240, + "nug17": 1732, "nug18": 1930, "nug20": 2570, "nug21": 2438, "nug22": 3596, + "nug24": 3488, "nug25": 3744, "nug27": 5234, "nug28": 5166, "nug30": 6124, + "rou12": 235528, "rou15": 354210, "rou20": 725522, "scr12": 31410, + "scr15": 51140, "scr20": 110030, "sko100a": 143846, "sko100b": 145522, + "sko100c": 139881, "sko100d": 141289, "sko100e": 140893, "sko100f": 140691, + "sko42": 15332, "sko49": 22650, "sko56": 33385, "sko64": 47017, + "sko72": 64455, "sko81": 88359, "sko90": 112423, "ste36a": 9526, + "ste36b": 15852, "ste36c": 8239110, "tai100a": 17853840, + "tai100b": 1151591000, "tai12a": 224416, "tai12b": 39464925, + "tai150b": 441786736, "tai15a": 388214, "tai15b": 51765268, + "tai17a": 491812, "tai20a": 703482, "tai20b": 122455319, + "tai256c": 44095032, "tai25a": 1167256, "tai25b": 344355646, + "tai30a": 1706855, "tai30b": 637117113, "tai35a": 2216627, + "tai35b": 269532400, "tai40a": 2843274, "tai40b": 608808400, + "tai50a": 4390920, "tai50b": 431090700, "tai60a": 6325978, + "tai60b": 592371800, "tai64c": 1855928, "tai80a": 11657010, + "tai80b": 786298800, "tho150": 7620628, "tho30": 149936, "tho40": 226490, + "wil100": 268955, "wil50": 48121, "bur26a": 5426670, "bur26b": 3817852, + "bur26c": 5426795, "bur26d": 3821225, "bur26e": 5386879, "bur26f": 3782044, + "bur26g": 10117172, "bur26h": 7098658, "chr12a": 9552, "chr12b": 9742, + "chr12c": 11156, "chr15a": 9896, "chr15b": 7990, "chr15c": 9504, + "chr18a": 11098, "chr18b": 1534, "chr20a": 2192, "chr20b": 2298, + "chr20c": 14142, "chr22a": 6156, "chr22b": 6194, "chr25a": 3796, + "els19": 17212548, "esc128": 64, "esc16a": 68, "esc16b": 292, + "esc16c": 160, "esc16d": 16, "esc16e": 28, "esc16f": 0, "esc16g": 26, + "esc16h": 996, "esc16i": 14, "esc16j": 8, "esc32a": 130, "esc32b": 168, + "esc32c": 642, "esc32d": 200, "esc32e": 2, "esc32g": 6, "esc32h": 438, + "esc64a": 116, "had12": 1652, "had14": 2724, "had16": 3720, "had18": 5358, + "had20": 6922, "kra30a": 88900, "kra30b": 91420, "kra32": 88700, + "lipa20a": 3683, "lipa20b": 27076, "lipa30a": 13178, "lipa30b": 151426, + "lipa40a": 31538, "lipa40b": 476581, "lipa50a": 62093, "lipa50b": 1210244, + "lipa60a": 107218, "lipa60b": 2520135, "lipa70a": 169755, + "lipa70b": 4603200, "lipa80a": 253195, "lipa80b": 7763962, + "lipa90a": 360630, "lipa90b": 12490441, "nug12": 578} + +#: The best-known solutions of the QAPLIB instances that are not yet solved to +#: optimality, as of 2024-05-09 on https://qaplib.mgi.polymtl.ca/ +_BKS: Final[dict[str, tuple[str, int]]] = { + "sko90": ("T1991RTSFTQAP,T1995COISFTQAP", 115534), + "sko100a": ("FF1993GHFTQAP", 152002), + "sko100b": ("FF1993GHFTQAP", 153890), + "sko100c": ("FF1993GHFTQAP", 147862), + "sko100d": ("FF1993GHFTQAP", 149576), + "sko100e": ("FF1993GHFTQAP", 149150), + "sko100f": ("FF1993GHFTQAP", 149036), + "tai30a": ("T1991RTSFTQAP,T1995COISFTQAP", 1818146), + "tai35a": ("T1991RTSFTQAP,T1995COISFTQAP", 2422002), + "tai35b": ("T1991RTSFTQAP,T1995COISFTQAP", 283315445), + "tai40a": ("T1991RTSFTQAP,T1995COISFTQAP", 3139370), + "tai40b": ("T1991RTSFTQAP,T1995COISFTQAP", 637250948), + "tai50a": ("M2008AIOTITSAFTQAP", 4938796), + "tai50b": ("T1991RTSFTQAP,T1995COISFTQAP", 458821517), + "tai60a": ("M2005ATSAFTQAP", 7205962), + "tai60b": ("T1991RTSFTQAP,T1995COISFTQAP", 608215054), + "tai80a": ("M2008AIOTITSAFTQAP", 13499184), + "tai80b": ("T1991RTSFTQAP,T1995COISFTQAP", 818415043), + "tai100a": ("M2008AIOTITSAFTQAP", 21044752), + "tai100b": ("T1991RTSFTQAP,T1995COISFTQAP", 1185996137), + "tai150b": ("TG1997AMFTQAP", 498896643), + "tai256c": ("S1997MMASFQAP", 44759294), + "tho40": ("TB1994AISAAFTQAP", 240516), + "tho150": ("M2003AMSAAFTQAP", 8133398), + "wil100": ("FF1993GHFTQAP", 273038), +} + + +
    +[docs] +class Instance(Component): + """An instance of the Quadratic Assignment Problem.""" + + def __init__(self, distances: np.ndarray, flows: np.ndarray, + lower_bound: int | None = None, + upper_bound: int | None = None, + name: str | None = None) -> None: + """ + Create an instance of the quadratic assignment problem. + + :param distances: the distance matrix + :param flows: the flow matrix + :param lower_bound: the optional lower bound + :param upper_bound: the optional upper bound + :param name: the name of this instance + """ + super().__init__() + if not isinstance(distances, np.ndarray): + raise type_error(distances, "distances", np.ndarray) + if not isinstance(flows, np.ndarray): + raise type_error(flows, "flows", np.ndarray) + shape: tuple[int, ...] = distances.shape + if len(shape) != 2: + raise ValueError("distance matrix must have two dimensions, but " + f"has {len(shape)}, namely {shape}.") + if shape[0] != shape[1]: + raise ValueError( + f"distance matrix must be square, but has shape {shape}.") + if not is_np_int(distances.dtype): + raise ValueError("distance matrix must be integer, but has " + f"dtype {distances.dtype}.") + if shape != flows.shape: + raise ValueError( + f"flow matrix has shape {flows.shape} and distance matrix has" + f" shape {shape}, which are different.") + if not is_np_int(flows.dtype): + raise ValueError( + f"flow matrix must be integer, but has dtype {flows.dtype}.") + + lb, ub = trivial_bounds(distances, flows) + if lower_bound is not None: + lb = max(lb, check_int_range( + lower_bound, "lower_bound", 0, 1_000_000_000_000_000)) + if upper_bound is not None: + ub = min(ub, check_int_range( + upper_bound, "upper_bound", 0, 1_000_000_000_000_000)) + if lb > ub: + raise ValueError(f"lower bound = {lb} > upper_bound = {ub}!") + dtype: Final[np.dtype] = int_range_to_dtype(min_value=0, max_value=ub) + #: the scale of the problem + self.n: Final[int] = shape[0] + if name is None: + name = f"qap{self.n}_{lb}_{ub}" + else: + sn: Final[str] = sanitize_name(name) + if name != sn: + raise ValueError(f"name={name!r} sanitizes to {sn!r}.") + #: the name of this instance + self.name: Final[str] = name + #: the distance matrix + self.distances: Final[np.ndarray] = \ + distances.astype(dtype) if distances.dtype != dtype else distances + #: the flows + self.flows: Final[np.ndarray] = \ + flows.astype(dtype) if flows.dtype != dtype else flows + #: the lower bound for the QAP objective + self.lower_bound: Final[int] = lb + #: the upper bound for the QAP objective + self.upper_bound: Final[int] = ub + + def __str__(self): + """ + Get the name of this instance. + + :return: :attr:`~name` + """ + return self.name + +
    +[docs] + def bks(self) -> tuple[str, int]: + """ + Get the best-known solution, if known, the optimum, or lower bound. + + A tuple with a string identifying the source of the value and a value + corresponding to the best-known solution: + + - `("OPT", xxx)`: the problem instance has been solved to optimality + and `xxx` is the objective value of the optimum + - `("LB", xxx)`: neither the optimum nor a best-known solution are + available for this instance, so we return the lower bound + + The data is based on https://qaplib.mgi.polymtl.ca/, visited on + 2024-05-09. The following sources are included: + + - "FF1993GHFTQAP": Charles Fleurent and Jacques A. Ferland. Genetic + Hybrids for the Quadratic Assignment Problem. In Panos M. Pardalos + and Henry Wolkowicz, eds, *Quadratic Assignment and Related + Problems, Proceedings of a DIMACS Workshop,* May 20-21, 1993. + pages 173-187. Providence, RI, USA: American Mathematical Society. + - "M2003AMSAAFTQAP": Alfonsas Misevičius, A Modified Simulated + Annealing Algorithm for the Quadratic Assignment Problem. + *Informatica* 14(4):497-514. January 2003. + https://doi.org/10.15388/Informatica.2003.037. + - "M2005ATSAFTQAP": Alfonsas Misevičius. A Tabu Search Algorithm for + the Quadratic Assignment Problem. + *Computational Optimization and Applications* 30(1):95-111. 2005. + https://doi.org/10.1007/s10589-005-4562-x. + - "M2008AIOTITSAFTQAP": Alfonsas Misevičius. An Implementation of + the Iterated Tabu Search Algorithm for the Quadratic Assignment + Problem. Working Paper. 2008. Kaunas, Lithuania: Kaunas University + of Technology. + - "S1997MMASFQAP": Thomas Stützle. MAX-MIN Ant System for Quadratic + Assignment Problems. Research Report AIDA-97-04. 1997. Darmstadt, + Germany: Department of Computer Schience, Darmstadt University of + Technology. + - "T1991RTSFTQAP": Éric Taillard. Robust Taboo Search for the + Quadratic Assignment Problem. *Parallel Computing.* + 17(4-5):443-455. July 1991. + - "T1995COISFTQAP": Éric D. Taillard. Comparison of Iterative + Searches for the Quadratic Assignment Problem. *Location Science* + 3(2):87-105. 1995. + - "TB1994AISAAFTQAP": Ulrich Wilhelm Thonemann and Andreas Bölte. + An Improved Simulated Annealing Algorithm for the Quadratic + Assignment Problem. Working Paper 1994. Paderborn, Germany: School + of Business, Department of Production and Operations Research, + University of Paderborn. + - "TG1997AMFTQAP": Éric D. Taillard and Luca-Maria Gambardella. + Adaptive Memories for the Quadratic Assignment Problem. 1997. + Technical Report IDSIA-87-97. Lugano, Switzerland: IDSIA. + + :return: a `tuple[str, int]` with the objective value of the + best-known (if any is available), the optimum, or the lower bound. + """ + name: Final[str] = self.name + if name in _BKS: + return _BKS[name] + if name in _BOUNDS: + return "OPT", _BOUNDS[name] + return "LB", self.lower_bound
    + + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log all parameters of this instance as key-value pairs. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + logger.key_value("n", self.n) + logger.key_value("qapLowerBound", self.lower_bound) + logger.key_value("qapUpperBound", self.upper_bound)
    + + +
    +[docs] + @staticmethod + def from_qaplib_stream(stream: Iterable[str], + lower_bound: int | None = None, + upper_bound: int | None = None, + name: str | None = None) -> "Instance": + """ + Load an instance from a QAPLib-formatted stream. + + :param stream: the stream to load the data from + :param lower_bound: the optional lower bound + :param upper_bound: the optional upper bound + :param name: the name of this instance + :return: the instance + + >>> ins = Instance.from_qaplib_stream([ + ... "4", "", + ... "1 2 3 4 5 6 7 8 9 10 11 12 13", + ... " 14 15 16 ", "", + ... "17 18 19 20 21 22 23 24 25 26 27", + ... " 28 29 30 31 32"]) + >>> ins.distances + array([[17, 18, 19, 20], + [21, 22, 23, 24], + [25, 26, 27, 28], + [29, 30, 31, 32]], dtype=int16) + >>> ins.flows + array([[ 1, 2, 3, 4], + [ 5, 6, 7, 8], + [ 9, 10, 11, 12], + [13, 14, 15, 16]], dtype=int16) + >>> ins.lower_bound + 2992 + >>> ins.upper_bound + 3672 + >>> ins.name + 'qap4_2992_3672' + """ + state: int = 0 + n: int | None = None + n2: int = -1 + flows: list[int] = [] + dists: list[int] = [] + for oline in stream: + line = oline.strip() + if len(line) <= 0: + continue + if state == 0: + n = check_to_int_range(line, "n", 1, 1_000_000) + n2 = n * n + state = 1 + else: + row: Iterable[int] = map(_flow_or_dist_to_int, line.split()) + if state == 1: + flows.extend(row) + if len(flows) >= n2: + state = 2 + continue + dists.extend(row) + if len(dists) >= n2: + state = 3 + break + + if (n is None) or (n <= 0): + raise ValueError(f"Invalid or unspecified size n={n}.") + lll: int = len(flows) + if lll != n2: + raise ValueError( + f"Invalid number of flows {lll}, should be n²={n}²={n2}.") + lll = len(dists) + if lll != n2: + raise ValueError( + f"Invalid number of distances {lll}, should be n²={n}²={n2}.") + if state != 3: + raise ValueError(f"Stream is incomplete, state={state}.") + + return Instance(np.array(dists, DEFAULT_UNSIGNED_INT).reshape((n, n)), + np.array(flows, DEFAULT_UNSIGNED_INT).reshape((n, n)), + lower_bound, upper_bound, name)
    + + +
    +[docs] + @staticmethod + def list_resources() -> tuple[str, ...]: + """ + Get a tuple of all the QAP-lib instances available as resource. + + The original data can be found at <https://qaplib.mgi.polymtl.ca> and + <https://coral.ise.lehigh.edu/data-sets/qaplib>. + + :return: the tuple with the instance names + + >>> len(Instance.list_resources()) + 134 + """ + return _INSTANCES
    + + +
    +[docs] + @staticmethod + def from_resource(name: str) -> "Instance": + """ + Load a QAP-Lib instance from a resource. + + The original data can be found at <https://qaplib.mgi.polymtl.ca> and + <https://coral.ise.lehigh.edu/data-sets/qaplib>. + + :param name: the name string + :return: the instance + + >>> insta = Instance.from_resource("chr25a") + >>> print(insta.n) + 25 + >>> print(insta.name) + chr25a + >>> print(insta.lower_bound) + 3796 + >>> print(insta.upper_bound) + 50474 + """ + if not isinstance(name, str): + raise type_error(name, "name", str) + container: Final = Instance.from_resource + inst_attr: Final[str] = f"__inst_{name}" + if hasattr(container, inst_attr): # instance loaded? + return cast(Instance, getattr(container, inst_attr)) + + lb: int | None = _BOUNDS.get(name, None) + with open_resource_stream(f"{name}.dat") as stream: + inst: Final[Instance] = Instance.from_qaplib_stream( + stream, name=name, lower_bound=lb) + + if inst.n <= 1000: + setattr(container, inst_attr, inst) + return inst
    +
    + +
    diff --git a/_modules/moptipyapps/qap/objective.html b/_modules/moptipyapps/qap/objective.html new file mode 100644 index 00000000..309caf49 --- /dev/null +++ b/_modules/moptipyapps/qap/objective.html @@ -0,0 +1,145 @@ +moptipyapps.qap.objective — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.qap.objective

    +"""
    +The objective function for the Quadratic Assignment Problem.
    +
    +The candidate solutions to the QAP are
    +:mod:`~moptipy.spaces.permutations` `p` of length `n` of the numbers `0`, `1`,
    +..., `n-1`. An :mod:`~moptipyapps.qap.instance` of the Quadratic Assignment
    +Problem (QAP) presents a `n*n` matrix `D` with
    +:attr:`~moptipyapps.qap.instance.Instance.distances` and a `n*n` matrix `F`
    +with flows :attr:`~moptipyapps.qap.instance.Instance.flows`. The objective
    +value, subject to minimization, is then the
    +`sum( F[i,j] * D[p[i], p[j]] for i, j in 0..n-1 )`, i.e., the sum of the
    +products of the flows between facilities and the distances of their assigned
    +locations.
    +
    +1. Eliane Maria Loiola, Nair Maria Maia de Abreu, Paulo Oswaldo
    +   Boaventura-Netto, Peter Hahn, and Tania Querido. A survey for the
    +   Quadratic Assignment Problem. European Journal of Operational Research.
    +   176(2):657-690. January 2007. https://doi.org/10.1016/j.ejor.2005.09.032.
    +2. Rainer E. Burkard, Eranda Çela, Panos M. Pardalos, and
    +   Leonidas S. Pitsoulis. The Quadratic Assignment Problem. In Ding-Zhu Du,
    +   Panos M. Pardalos, eds., Handbook of Combinatorial Optimization,
    +   pages 1713-1809, 1998, Springer New York, NY, USA.
    +   https://doi.org/10.1007/978-1-4613-0303-9_27.
    +
    +>>> inst = Instance.from_resource("bur26a")
    +>>> QAPObjective(inst).evaluate(np.array([
    +...     25, 14, 10, 6, 3, 11, 12, 1, 5, 17, 0, 4, 8, 20,
    +...     7, 13, 2, 19, 18, 24, 16, 9, 15, 23, 22, 21]))
    +5426670
    +
    +>>> inst = Instance.from_resource("nug12")
    +>>> QAPObjective(inst).evaluate(np.array([
    +...     11, 6, 8, 2, 3, 7, 10, 0, 4, 5, 9, 1]))
    +578
    +
    +>>> inst = Instance.from_resource("tai12a")
    +>>> QAPObjective(inst).evaluate(np.array([
    +...     7, 0, 5, 1, 10, 9, 2, 4, 8, 6, 11, 3]))
    +224416
    +"""
    +
    +
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from moptipy.api.objective import Objective
    +from moptipy.utils.logger import KeyValueLogSection
    +from pycommons.types import type_error
    +
    +from moptipyapps.qap.instance import Instance
    +from moptipyapps.shared import SCOPE_INSTANCE
    +
    +
    +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False)
    +def _evaluate(x: np.ndarray, distances: np.ndarray, flows: np.ndarray) -> int:
    +    """
    +    Evaluate a solution to the QAP.
    +
    +    :param x: the permutation representing the solution
    +    :param distances: the distance matrix
    +    :param flows: the flow matrix
    +    :return: the objective value
    +    """
    +    result: int = 0
    +    for i, xi in enumerate(x):
    +        for j, xj in enumerate(x):
    +            result += flows[i, j] * distances[xi, xj]
    +    return int(result)
    +
    +
    +
    +[docs] +class QAPObjective(Objective): + """An objective function for the quadratic assignment problem.""" + + def __init__(self, instance: Instance) -> None: + """ + Initialize the QAP objective function. + + :param instance: the one-dimensional ordering problem. + """ + super().__init__() + if not isinstance(instance, Instance): + raise type_error(instance, "instance", Instance) + #: the instance data + self.instance: Final[Instance] = instance + +
    +[docs] + def evaluate(self, x) -> float: + """ + Compute the quadratic assignment problem objective value. + + :param x: the permutation of elements + :return: the sum of flows times distances + """ + return _evaluate(x, self.instance.distances, self.instance.flows)
    + + + def __str__(self): + """ + Get the name of this objective. + + :return: `"qap"` + """ + return "qap" + +
    +[docs] + def lower_bound(self) -> float: + """ + Get the lower bound of this objective function. + + :return: the lower bound + """ + return self.instance.lower_bound
    + + +
    +[docs] + def upper_bound(self) -> float: + """ + Get the upper bound of this objective function. + + :return: the upper bound + """ + return self.instance.upper_bound
    + + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log all parameters of this component as key-value pairs. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + with logger.scope(SCOPE_INSTANCE) as scope: + self.instance.log_parameters_to(scope)
    +
    + +
    diff --git a/_modules/moptipyapps/qap/qaplib.html b/_modules/moptipyapps/qap/qaplib.html new file mode 100644 index 00000000..a0e6bbfe --- /dev/null +++ b/_modules/moptipyapps/qap/qaplib.html @@ -0,0 +1,32 @@ +moptipyapps.qap.qaplib — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.qap.qaplib

    +"""
    +QAPLIB -- A Quadratic Assignment Problem Library.
    +
    +1. QAPLIB - A Quadratic Assignment Problem Library. The Websites
    +   <https://qaplib.mgi.polymtl.ca/> (updated 2018) and
    +   <https://coral.ise.lehigh.edu/data-sets/qaplib/> (updated 2011), including
    +   the benchmark instances, on visited 2023-10-21.
    +2. Rainer E. Burkard, Stefan E. Karisch, and Franz Rendl. QAPLIB - A Quadratic
    +   Assignment Problem Library. Journal of Global Optimization. 10:391-403,
    +   1997. https://doi.org/10.1023/A:1008293323270.
    +"""
    +
    +from importlib import resources  # nosem
    +from typing import TextIO, cast
    +
    +from pycommons.io.path import UTF8
    +
    +
    +
    +[docs] +def open_resource_stream(file_name: str) -> TextIO: + """ + Open a QAPLib resource stream. + + :param file_name: the file name of the resource + :return: the stream + """ + return cast(TextIO, resources.files(__package__).joinpath( + file_name).open("r", encoding=UTF8))
    + +
    diff --git a/_modules/moptipyapps/shared.html b/_modules/moptipyapps/shared.html new file mode 100644 index 00000000..76cd521a --- /dev/null +++ b/_modules/moptipyapps/shared.html @@ -0,0 +1,73 @@ +moptipyapps.shared — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.shared

    +"""Some shared variables and constants."""
    +
    +import argparse
    +from typing import Any, Final, Iterable
    +
    +import moptipy.examples.jssp.instance as ins
    +from pycommons.io.arguments import make_argparser, make_epilog
    +
    +from moptipyapps.version import __version__ as moptipyapps_version
    +
    +#: the instance scope
    +SCOPE_INSTANCE: Final[str] = ins.SCOPE_INSTANCE
    +
    +
    +
    +[docs] +def moptipyapps_argparser(file: str, description: str, + epilog: str) -> argparse.ArgumentParser: + """ + Create an argument parser with default settings. + + :param file: the `__file__` special variable of the calling script + :param description: the description string + :param epilog: the epilogue string + :returns: the argument parser + + >>> ap = moptipyapps_argparser( + ... __file__, "This is a test program.", "This is a test.") + >>> isinstance(ap, argparse.ArgumentParser) + True + >>> "Copyright" in ap.epilog + True + """ + return make_argparser( + file, description, + make_epilog(epilog, 2023, 2024, "Thomas Weise", + url="https://thomasweise.github.io/moptipyapps", + email="tweise@hfuu.edu.cn, tweise@ustc.edu.cn"), + moptipyapps_version)
    + + + + + +
    diff --git a/_modules/moptipyapps/tests/.nojekyll b/_modules/moptipyapps/tests/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_modules/moptipyapps/tests/on_binpacking2d.html b/_modules/moptipyapps/tests/on_binpacking2d.html new file mode 100644 index 00000000..8c4f17f9 --- /dev/null +++ b/_modules/moptipyapps/tests/on_binpacking2d.html @@ -0,0 +1,336 @@ +moptipyapps.tests.on_binpacking2d — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.tests.on_binpacking2d

    +"""Perform tests on the Two-Dimensional Bin Packing Problem."""
    +
    +from time import monotonic_ns
    +from typing import Callable, Final, Iterable, cast
    +
    +import numpy as np
    +import numpy.random as rnd
    +from moptipy.api.algorithm import Algorithm
    +from moptipy.api.encoding import Encoding
    +from moptipy.api.objective import Objective
    +from moptipy.operators.signed_permutations.op0_shuffle_and_flip import (
    +    Op0ShuffleAndFlip,
    +)
    +from moptipy.spaces.signed_permutations import SignedPermutations
    +from moptipy.tests.algorithm import validate_algorithm
    +from moptipy.tests.encoding import validate_encoding
    +from moptipy.tests.objective import validate_objective
    +from moptipy.tests.space import validate_space
    +from numpy.random import Generator, default_rng
    +from pycommons.types import type_error
    +
    +from moptipyapps.binpacking2d.encodings.ibl_encoding_1 import (
    +    ImprovedBottomLeftEncoding1,
    +)
    +from moptipyapps.binpacking2d.encodings.ibl_encoding_2 import (
    +    ImprovedBottomLeftEncoding2,
    +)
    +from moptipyapps.binpacking2d.instance import Instance
    +from moptipyapps.binpacking2d.objectives.bin_count_and_last_empty import (
    +    BinCountAndLastEmpty,
    +)
    +from moptipyapps.binpacking2d.packing import Packing
    +from moptipyapps.binpacking2d.packing_space import PackingSpace
    +
    +#: the internal random number generator
    +__RANDOM: Final[Generator] = default_rng()
    +
    +
    +
    +[docs] +def binpacking_instances_for_tests( + random: Generator = __RANDOM) -> Iterable[str]: + """ + Get a sequence of 2D Bin Packing instances to test on. + + :param random: the random number generator to use + :returns: an iterable of 2D Bin Packing instance names + """ + ri = random.integers + insts: set[str] = { + "a04", "a08", "beng10", f"a0{ri(1, 10)}", f"a1{ri(1, 10)}", + f"a2{ri(1, 10)}", f"a3{ri(1, 10)}", f"a4{ri(1, 4)}", + f"beng0{ri(1, 10)}", f"cl01_080_0{ri(1, 10)}", + f"cl06_020_0{ri(1, 10)}", f"cl09_040_0{ri(1, 10)}", + f"cl10_100_0{ri(1, 10)}"} + insn: list[str] = list(Instance.list_resources()) + while len(insts) < 16: + insts.add(insn.pop(ri(len(insn)))) + use_insts: list[str] = list(insts) + random.shuffle(cast(list, use_insts)) + return use_insts
    + + + +
    +[docs] +def make_packing_valid(inst: Instance, + random: Generator = __RANDOM) \ + -> Callable[[Generator, Packing], Packing]: + """ + Make a function that creates valid packings. + + :param inst: the two-dimensional bin packing instance + :param random: the random number generator to use + :returns: a function that can make packings valid + """ + search_space = SignedPermutations(inst.get_standard_item_sequence()) + encoding = (ImprovedBottomLeftEncoding1 if random.integers(2) == 0 + else ImprovedBottomLeftEncoding2)(inst) + op0 = Op0ShuffleAndFlip(search_space) + + def __make_valid(ra: rnd.Generator, + y: Packing, ss=search_space, + en=encoding, o0=op0) -> Packing: + x = ss.create() + o0.op0(ra, x) + en.decode(x, y) + return y + + return __make_valid
    + + + +
    +[docs] +def make_packing_invalid(random: Generator = __RANDOM) \ + -> Callable[[Packing], Packing]: + """ + Make a function that creates invalid packings. + + :param random: the random number generator to use + :returns: a function that can make packings invalid + """ + + def __make_invalid(x: Packing, ri=random.integers) -> Packing: + not_finished: bool = True + end_time: Final[int] = monotonic_ns() + 20_000_000_000 + while not_finished: + while ri(2) == 0: + if monotonic_ns() >= end_time: + x[0, 0] = -1 + return x + x[ri(len(x)), ri(6)] = -1 + not_finished = False + while ri(2) == 0: + second = first = ri(len(x)) + while second == first: + if monotonic_ns() >= end_time: + x[0, 0] = -1 + return x + second = ri(len(x)) + x[first, 1] = x[second, 1] + x[first, 2] = x[second, 2] - 1 + x[first, 3] = x[second, 3] - 1 + x[first, 4] = x[second, 4] + 1 + x[first, 5] = x[second, 5] + 1 + return x + + return __make_invalid
    + + + +
    +[docs] +def validate_algorithm_on_1_2dbinpacking( + algorithm: Algorithm | Callable[ + [Instance, SignedPermutations, Objective], Algorithm], + instance: str | None = None, max_fes: int = 100, + random: Generator = __RANDOM) -> None: + """ + Check the validity of a black-box algorithm on the 2d bin packing. + + :param algorithm: the algorithm or algorithm factory + :param instance: the instance name, or `None` to randomly pick one + :param max_fes: the maximum number of FEs + :param random: the default random generator to use + """ + if not (isinstance(algorithm, Algorithm) or callable(algorithm)): + raise type_error(algorithm, "algorithm", Algorithm, True) + if instance is None: + instance = str(random.choice(Instance.list_resources())) + if not isinstance(instance, str): + raise type_error(instance, "bin packing instance name", (str, None)) + inst = Instance.from_resource(instance) + if not isinstance(inst, Instance): + raise type_error(inst, f"loaded bin packing instance {instance!r}", + Instance) + + search_space = SignedPermutations(inst.get_standard_item_sequence()) + solution_space = PackingSpace(inst) + encoding = (ImprovedBottomLeftEncoding1 if random.integers(2) == 0 + else ImprovedBottomLeftEncoding2)(inst) + objective = BinCountAndLastEmpty(inst) + if callable(algorithm): + algorithm = algorithm(inst, search_space, objective) + if not isinstance(algorithm, Algorithm): + raise type_error(algorithm, "algorithm", Algorithm, call=True) + + validate_algorithm(algorithm=algorithm, + solution_space=solution_space, + objective=objective, + search_space=search_space, + encoding=encoding, + max_fes=max_fes)
    + + + +
    +[docs] +def validate_algorithm_on_2dbinpacking( + algorithm: Callable[[Instance, SignedPermutations, + Objective], Algorithm], + max_fes: int = 100, random: Generator = __RANDOM) -> None: + """ + Validate an algorithm on a set of bin packing instances. + + :param algorithm: the algorithm factory + :param max_fes: the maximum FEs + :param random: the random number generator + """ + end_time: Final[int] = monotonic_ns() + 20_000_000_000 + for i in binpacking_instances_for_tests(random): + if monotonic_ns() >= end_time: + break + validate_algorithm_on_1_2dbinpacking(algorithm, i, max_fes, random)
    + + + +
    +[docs] +def validate_objective_on_1_2dbinpacking( + objective: Objective | Callable[[Instance], Objective], + instance: str | None = None, + random: Generator = __RANDOM) -> None: + """ + Validate an objective function on 1 2D bin packing instance. + + :param objective: the objective function or a factory creating it + :param instance: the instance name + :param random: the random number generator + """ + if instance is None: + instance = str(random.choice(Instance.list_resources())) + if not isinstance(instance, str): + raise type_error(instance, "bin packing instance name", (str, None)) + inst = Instance.from_resource(instance) + if not isinstance(inst, Instance): + raise type_error(inst, f"loaded bin packing instance {instance!r}", + Instance) + + if callable(objective): + objective = objective(inst) + + validate_objective( + objective=objective, + solution_space=PackingSpace(inst), + make_solution_space_element_valid=make_packing_valid(inst), + is_deterministic=True)
    + + + +
    +[docs] +def validate_objective_on_2dbinpacking( + objective: Objective | Callable[[Instance], Objective], + random: Generator = __RANDOM) -> None: + """ + Validate an objective function on bin packing instances. + + :param objective: the objective function or a factory creating it + :param random: the random number generator + """ + end_time: Final[int] = monotonic_ns() + 20_000_000_000 + for i in binpacking_instances_for_tests(random): + if monotonic_ns() >= end_time: + break + validate_objective_on_1_2dbinpacking(objective, i, random)
    + + + +
    +[docs] +def validate_signed_permutation_encoding_on_1_2dbinpacking( + encoding: Encoding | Callable[[Instance], Encoding], + instance: str | None = None, + random: Generator = __RANDOM) -> None: + """ + Validate a signed permutation encoding on one 2D bin packing instance. + + :param encoding: the encoding or a factory creating it + :param instance: the instance name + :param random: the random number generator + """ + if instance is None: + instance = str(random.choice(Instance.list_resources())) + if not isinstance(instance, str): + raise type_error(instance, "bin packing instance name", (str, None)) + inst = Instance.from_resource(instance) + if not isinstance(inst, Instance): + raise type_error(inst, f"loaded bin packing instance {instance!r}", + Instance) + + if callable(encoding): + encoding = encoding(inst) + inst = Instance.from_resource(instance) + + x_space = SignedPermutations(inst.get_standard_item_sequence()) + validate_space(x_space) + + y_space = PackingSpace(inst) + validate_space(y_space, make_element_valid=None) + + validate_encoding(encoding, x_space, y_space) + + x = x_space.create() + x_space.validate(x) + + y = y_space.create() + encoding.decode(x, y) + y_space.validate(y) + + random.shuffle(x) + ri = random.integers + for i, xx in enumerate(x): + if ri(2) == 0: + x[i] = -xx + encoding.decode(x, y) + y_space.validate(y) + + x_str = x_space.to_str(x) + x_2 = x_space.from_str(x_str) + if not x_space.is_equal(x, x_2): + raise ValueError("error in space to/from_str") + if not np.array_equal(x, x_2): + raise ValueError("error in space to/from_str and is_equal") + + y_2 = y_space.create() + encoding.decode(x_2, y_2) + if not y_space.is_equal(y, y_2): + raise ValueError("encoding is not deterministic") + if not np.array_equal(y, y_2): + raise ValueError( + "encoding is not deterministic and error in space.is_equal")
    + + + +
    +[docs] +def validate_signed_permutation_encoding_on_2dbinpacking( + encoding: Encoding | Callable[[Instance], Encoding], + random: Generator = __RANDOM) -> None: + """ + Validate a signed permutation encoding function on bin packing instances. + + :param encoding: the encoding or a factory creating it + :param random: the random number generator + """ + end_time: Final[int] = monotonic_ns() + 20_000_000_000 + for i in binpacking_instances_for_tests(random): + if monotonic_ns() >= end_time: + break + validate_signed_permutation_encoding_on_1_2dbinpacking( + encoding, i, random)
    + +
    diff --git a/_modules/moptipyapps/tests/on_tsp.html b/_modules/moptipyapps/tests/on_tsp.html new file mode 100644 index 00000000..82d82623 --- /dev/null +++ b/_modules/moptipyapps/tests/on_tsp.html @@ -0,0 +1,229 @@ +moptipyapps.tests.on_tsp — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.tests.on_tsp

    +"""Perform tests on the Traveling Salesperson Problem."""
    +
    +from time import monotonic_ns
    +from typing import Callable, Final, Iterable
    +
    +import numpy as np
    +from moptipy.api.algorithm import Algorithm
    +from moptipy.api.objective import Objective
    +from moptipy.spaces.permutations import Permutations
    +from moptipy.tests.algorithm import validate_algorithm
    +from moptipy.tests.objective import validate_objective
    +from numpy.random import Generator, default_rng
    +from pycommons.types import type_error
    +
    +from moptipyapps.tsp.instance import Instance
    +from moptipyapps.tsp.tour_length import TourLength
    +
    +#: the internal random number generator
    +__RANDOM: Final[Generator] = default_rng()
    +
    +
    +
    +[docs] +def tsp_instances_for_tests( + random: Generator = __RANDOM, + symmetric: bool = True, + asymmetric: bool = True) -> Iterable[str]: + """ + Get a sequence of TSP instances to test on. + + :param random: the random number generator to use + :param symmetric: include symmetric instances + :param asymmetric: include asymmetric instances + :returns: an iterable of TSP instance names + """ + if not isinstance(symmetric, bool): + raise type_error(symmetric, "symmetric", bool) + if not isinstance(asymmetric, bool): + raise type_error(asymmetric, "asymmetric", bool) + + instances: tuple[str, ...] + if symmetric and asymmetric: + instances = Instance.list_resources(True, True) + elif symmetric: + instances = Instance.list_resources(True, False) + elif asymmetric: + instances = Instance.list_resources(False, True) + else: + raise ValueError( + "at least of one symmetric or asymmetric must be TRUE") + use_insts = list(instances) + while len(use_insts) > 20: + del use_insts[random.integers(len(use_insts))] + random.shuffle(use_insts) + return use_insts
    + + + +
    +[docs] +def make_tour_valid(random: Generator, y: np.ndarray) -> np.ndarray: + """ + Create valid TSP tours. + + :param random: the random number generator to use + :param y: the input tour + :returns: the valid version of `y` + """ + y[0:len(y)] = range(len(y)) + random.shuffle(y) + return y
    + + + +
    +[docs] +def make_tour_invalid(random: Generator, y: np.ndarray) -> np.ndarray: + """ + Create invalid tours. + + :param random: the random number generator to use + :param y: the input tour + :returns: the invalid version of `y` + """ + ly: Final[int] = len(y) + y[0:ly] = range(ly) + random.shuffle(y) + yorig = np.copy(y) + + ri = random.integers + end_time: Final[int] = monotonic_ns() + 20_000_000_000 + while np.all(y == yorig): + if monotonic_ns() >= end_time: + y[0] = y[1] + return y + if ri(2) <= 0: + z1 = z2 = ri(ly) + while z1 == z2: + if monotonic_ns() >= end_time: + y[0] = y[1] + return y + z2 = ri(ly) + y[z1] = y[z2] + if ri(2) <= 0: + y[ri(ly)] = ri(ly, 10 * ly) + if ri(2) <= 0: + y[ri(ly)] = ri(-2 * ly, -1) + return y
    + + + +
    +[docs] +def validate_algorithm_on_1_tsp( + algorithm: Algorithm | Callable[ + [Instance, Permutations], Algorithm], + instance: str | None = None, max_fes: int = 256, + random: Generator = __RANDOM) -> None: + """ + Check the validity of a black-box algorithm on one TSP instance. + + :param algorithm: the algorithm or algorithm factory + :param instance: the instance name, or `None` to randomly pick one + :param max_fes: the maximum number of FEs + :param random: the default random generator to use + """ + if not (isinstance(algorithm, Algorithm) or callable(algorithm)): + raise type_error(algorithm, "algorithm", Algorithm, True) + if instance is None: + instance = str(random.choice(Instance.list_resources())) + if not isinstance(instance, str): + raise type_error(instance, "TSP instance name", (str, None)) + inst = Instance.from_resource(instance) + if not isinstance(inst, Instance): + raise type_error(inst, f"loaded bin TSP instance {instance!r}", + Instance) + + search_space = Permutations.standard(inst.n_cities) + objective = TourLength(inst) + if callable(algorithm): + algorithm = algorithm(inst, search_space) + if not isinstance(algorithm, Algorithm): + raise type_error(algorithm, "algorithm", Algorithm, call=True) + + validate_algorithm(algorithm=algorithm, + solution_space=search_space, + objective=objective, + max_fes=max_fes)
    + + + +
    +[docs] +def validate_algorithm_on_tsp( + algorithm: Callable[[Instance, Permutations], Algorithm], + symmetric: bool = True, asymmetric: bool = True, + max_fes: int = 256, random: Generator = __RANDOM) -> None: + """ + Validate an algorithm on a set of TSP instances. + + :param algorithm: the algorithm factory + :param symmetric: include symmetric instances + :param asymmetric: include asymmetric instances + :param max_fes: the maximum FEs + :param random: the random number generator + """ + end_time: Final[int] = monotonic_ns() + 20_000_000_000 + for i in tsp_instances_for_tests(random, symmetric, asymmetric): + if monotonic_ns() >= end_time: + return + validate_algorithm_on_1_tsp(algorithm, i, max_fes, random)
    + + + +
    +[docs] +def validate_objective_on_1_tsp( + objective: Objective | Callable[[Instance], Objective], + instance: str | None = None, + random: Generator = __RANDOM) -> None: + """ + Validate an objective function on 1 TSP instance. + + :param objective: the objective function or a factory creating it + :param instance: the instance name + :param random: the random number generator + """ + if instance is None: + instance = str(random.choice(Instance.list_resources())) + if not isinstance(instance, str): + raise type_error(instance, "TSP instance name", (str, None)) + inst = Instance.from_resource(instance) + if not isinstance(inst, Instance): + raise type_error(inst, f"loaded TSP instance {instance!r}", + Instance) + + if callable(objective): + objective = objective(inst) + + validate_objective( + objective=objective, + solution_space=Permutations.standard(inst.n_cities), + make_solution_space_element_valid=make_tour_valid, + is_deterministic=True)
    + + + +
    +[docs] +def validate_objective_on_tsp( + objective: Objective | Callable[[Instance], Objective], + symmetric: bool = True, asymmetric: bool = True, + random: Generator = __RANDOM) -> None: + """ + Validate an objective function on TSP instances. + + :param objective: the objective function or a factory creating it + :param symmetric: include symmetric instances + :param asymmetric: include asymmetric instances + :param random: the random number generator + """ + end_time: Final[int] = monotonic_ns() + 20_000_000_000 + for i in tsp_instances_for_tests(random, symmetric, asymmetric): + if monotonic_ns() >= end_time: + return + validate_objective_on_1_tsp(objective, i, random)
    + +
    diff --git a/_modules/moptipyapps/tsp/.nojekyll b/_modules/moptipyapps/tsp/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_modules/moptipyapps/tsp/ea1p1_revn.html b/_modules/moptipyapps/tsp/ea1p1_revn.html new file mode 100644 index 00000000..c007dd3d --- /dev/null +++ b/_modules/moptipyapps/tsp/ea1p1_revn.html @@ -0,0 +1,168 @@ +moptipyapps.tsp.ea1p1_revn — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.tsp.ea1p1_revn

    +"""
    +A (1+1) EA for the TSP using the reversal move.
    +
    +A (1+1) EA is basically a local search :mod:`~moptipy.algorithms.so.rls`
    +algorithm that starts with a random solution as the current solution `x`. In
    +each iteration, it samples one new solution from the neighborhood of `x` and
    +accepts it (as the new `x`), if it is better or equally good.
    +The algorithm here applies the reversal move, i.e., a two-opt move, as the
    +unary search operator used for sampling the neighborhood of `x`. The
    +interesting thing about this operator, when applied to the TSP, is that we
    +can compute the tour length of the new solution in `O(1)` from the tour length
    +of the current solution. This means we can very quickly decide whether the
    +move would be acceptable - and only apply it (in `O(n)`) if its.
    +
    +The algorithm implemented here is the same as the basic (1+1) EA with `rev`
    +operator in the paper [1].
    +
    +The original version of this code has been contributed by Mr. Tianyu LIANG
    +(梁天宇), <liangty@stu.hfuu.edu.cn> a Master's student at the Institute of
    +Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School
    +of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei
    +University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the
    +supervision of Prof. Dr. Thomas Weise (汤卫思教授).
    +
    +1. Tianyu Liang, Zhize Wu, Jörg Lässig, Daan van den Berg, and Thomas Weise.
    +   Solving the Traveling Salesperson Problem using Frequency Fitness
    +   Assignment. In Hisao Ishibuchi, Chee-Keong Kwoh, Ah-Hwee Tan, Dipti
    +   Srinivasan, Chunyan Miao, Anupam Trivedi, and Keeley A. Crockett, editors,
    +   *Proceedings of the IEEE Symposium on Foundations of Computational
    +   Intelligence (IEEE FOCI'22)*, part of the *IEEE Symposium Series on
    +   Computational Intelligence (SSCI 2022)*. December 4-7, 2022, Singapore,
    +   pages 360-367. IEEE. https://doi.org/10.1109/SSCI51031.2022.10022296.
    +2. Pedro Larrañaga, Cindy M. H. Kuijpers, Roberto H. Murga, Iñaki Inza, and
    +   S. Dizdarevic. Genetic Algorithms for the Travelling Salesman Problem: A
    +   Review of Representations and Operators. *Artificial Intelligence Review,*
    +   13(2):129-170, April 1999. Kluwer Academic Publishers, The Netherlands.
    +   https://doi.org/10.1023/A:1006529012972.
    +"""
    +
    +from typing import Callable, Final, cast
    +
    +import numba  # type: ignore
    +import numpy as np
    +from moptipy.api.algorithm import Algorithm
    +from moptipy.api.process import Process
    +from moptipy.utils.logger import KeyValueLogSection
    +from numpy.random import Generator
    +from pycommons.types import type_error
    +
    +from moptipyapps.shared import SCOPE_INSTANCE
    +from moptipyapps.tsp.instance import Instance
    +
    +
    +
    +[docs] +@numba.njit(nogil=True, cache=True, inline="always", fastmath=False, + boundscheck=False) +def rev_if_not_worse(i: int, j: int, n_cities: int, dist: np.ndarray, + x: np.ndarray, y: int) -> int: + """ + Check a reversal move, apply it if it is better, return new tour length. + + :param i: the first, smaller index + :param j: the second, larger index + :param n_cities: the number of cities + :param dist: the problem instance + :param x: the candidate solution + :param y: the tour length + """ + xi: Final[int] = x[i] # the value of x at index i + xim1: Final[int] = x[i - 1] # the value of x at index i-1, wraps at 0 + xj: Final[int] = x[j] # the value of x at index j + xjp1: Final[int] = x[(j + 1) % n_cities] # x[j + 1] with index wrap + + # compute the difference in tour length if we would apply the move + dy: Final[int] = (dist[xim1, xj] + dist[xi, xjp1] + - dist[xim1, xi] - dist[xj, xjp1]) + if dy <= 0: # this is not a worsening improving move? ... so apply it + # reverse the sequence from i to j in the solution + if i == 0: # deal with the special case that i==0 + x[0:j + 1:1] = x[j::-1] + else: # the normal case that i > 0 + x[i:j + 1:1] = x[j:i - 1:-1] + return int(y + dy) # return new tour length + return y # return old tour length
    + + + +
    +[docs] +class TSPEA1p1revn(Algorithm): + """A (1+1) EA using the reversal operator for the TSP.""" + + def __init__(self, instance: Instance) -> None: + """ + Initialize the RLS algorithm for the TSP with reversal move. + + :param instance: the problem instance + """ + super().__init__() + if not isinstance(instance, Instance): + raise type_error(instance, "instance", Instance) + self.instance: Final[Instance] = instance + +
    +[docs] + def solve(self, process: Process) -> None: + """ + Apply an RLS = (1+1) EA optimization process with reversing operator. + + :param process: the process instance which provides random numbers, + functions for creating, copying, and evaluating solutions, as well + as the termination criterion + """ + random: Final[Generator] = process.get_random() + # set up the fast calls + register: Final[Callable[[np.ndarray, int], int]] =\ + cast(Callable[[np.ndarray, int], int], process.register) + should_terminate: Final[Callable[[], bool]] = process.should_terminate + ri: Final[Callable[[int], int]] = random.integers + + instance: Final[Instance] = self.instance # get the instance + n: Final[int] = instance.n_cities # get the number of cities + x: Final[np.ndarray] = process.create() # create the solution + x[:] = range(n) # fill array with 0..n + random.shuffle(x) # randomly generate an initial solution + + y: int = cast(int, process.evaluate(x)) # get length of first tour + nm1: Final[int] = n - 1 # need n-1 in the loop for the random numbers + nm2: Final[int] = n - 2 # we need this to check the move indices + while not should_terminate(): + i = ri(nm1) # get the first index + j = ri(nm1) # get the second index + if i > j: # ensure that i <= j + i, j = j, i # swap indices if i > j + if (i == j) or ((i == 0) and (j == nm2)): + continue # either a nop or a complete reversal + y = rev_if_not_worse(i, j, n, instance, x, y) # apply the move + register(x, y) # register the objective value
    + + + def __str__(self): + """ + Get the name of this algorithm. + + This name is then used in the directory path and file name of the + log files. + + :returns: "tsp_ea1p1_revn" + :retval "tsp_ea1p1_revn": always + """ + return "tsp_ea1p1_revn" + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log the parameters of the algorithm to the given logger. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + with logger.scope(SCOPE_INSTANCE) as kv: + self.instance.log_parameters_to(kv)
    +
    + +
    diff --git a/_modules/moptipyapps/tsp/fea1p1_revn.html b/_modules/moptipyapps/tsp/fea1p1_revn.html new file mode 100644 index 00000000..4f480943 --- /dev/null +++ b/_modules/moptipyapps/tsp/fea1p1_revn.html @@ -0,0 +1,180 @@ +moptipyapps.tsp.fea1p1_revn — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.tsp.fea1p1_revn

    +"""
    +A (1+1) FEA for the TSP using the reversal move.
    +
    +A (1+1) FEA is the same as the (1+1) EA with Frequency Fitness Assignment.
    +The (1+1) EA using the same search operator as this algorithm here is
    +implemented in module :mod:`~moptipyapps.tsp.ea1p1_revn`.
    +The algorithm implemented here is the same as the basic (1+1) FEA with `rev`
    +operator in the paper [1].
    +
    +The original version of this code has been contributed by Mr. Tianyu LIANG
    +(梁天宇), <liangty@stu.hfuu.edu.cn> a Master's student at the Institute of
    +Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School
    +of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei
    +University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the
    +supervision of Prof. Dr. Thomas Weise (汤卫思教授).
    +
    +1. Tianyu Liang, Zhize Wu, Jörg Lässig, Daan van den Berg, and Thomas Weise.
    +   Solving the Traveling Salesperson Problem using Frequency Fitness
    +   Assignment. In Hisao Ishibuchi, Chee-Keong Kwoh, Ah-Hwee Tan, Dipti
    +   Srinivasan, Chunyan Miao, Anupam Trivedi, and Keeley A. Crockett, editors,
    +   *Proceedings of the IEEE Symposium on Foundations of Computational
    +   Intelligence (IEEE FOCI'22)*, part of the *IEEE Symposium Series on
    +   Computational Intelligence (SSCI 2022)*. December 4-7, 2022, Singapore,
    +   pages 360-367. IEEE. https://doi.org/10.1109/SSCI51031.2022.10022296.
    +2. Pedro Larrañaga, Cindy M. H. Kuijpers, Roberto H. Murga, Iñaki Inza, and
    +   S. Dizdarevic. Genetic Algorithms for the Travelling Salesman Problem: A
    +   Review of Representations and Operators. *Artificial Intelligence Review,*
    +   13(2):129-170, April 1999. Kluwer Academic Publishers, The Netherlands.
    +   https://doi.org/10.1023/A:1006529012972.
    +"""
    +
    +from typing import Callable, Final, cast
    +
    +import numba  # type: ignore
    +import numpy as np
    +from moptipy.algorithms.so.ffa.ffa_h import log_h
    +from moptipy.api.algorithm import Algorithm
    +from moptipy.api.process import Process
    +from moptipy.utils.logger import KeyValueLogSection
    +from moptipy.utils.nputils import DEFAULT_INT
    +from numpy.random import Generator
    +from pycommons.types import type_error
    +
    +from moptipyapps.shared import SCOPE_INSTANCE
    +from moptipyapps.tsp.instance import Instance
    +
    +
    +
    +[docs] +@numba.njit(nogil=True, cache=True, inline="always", fastmath=False, + boundscheck=False) +def rev_if_h_not_worse(i: int, j: int, n_cities: int, dist: np.ndarray, + h: np.ndarray, x: np.ndarray, y: int) -> int: + """ + Apply a reversal move if its tour length frequency is not worse. + + :param i: the first, smaller index + :param j: the second, larger index + :param n_cities: the number of cities + :param dist: the problem instance + :param h: the frequency table + :param x: the candidate solution + :param y: the tour length + """ + xi: Final[int] = x[i] # the value of x at index i + xim1: Final[int] = x[i - 1] # the value of x at index i-1, wraps at 0 + xj: Final[int] = x[j] # the value of x at index j + xjp1: Final[int] = x[(j + 1) % n_cities] # x[j + 1], but index wrapped + + # compute the difference in tour length if we would apply the move + dy: Final[int] = (dist[xim1, xj] + dist[xi, xjp1] + - dist[xim1, xi] - dist[xj, xjp1]) + y2: Final[int] = int(y + dy) # and compute the new tour length + h[y] += 1 # update frequency of the tour length of the current solution + h[y2] += 1 # update frequency of the tour length of the new solution + if h[y2] <= h[y]: # this move does not make the frequency worse? + # so we reverse the sequence from i to j in the solution + if i == 0: # deal with the special case that i==0 + x[0:j + 1:1] = x[j::-1] + else: # the normal case that i > 0 + x[i:j + 1:1] = x[j:i - 1:-1] + return y2 # return new tour length + return y # return old tour length
    + + + +
    +[docs] +class TSPFEA1p1revn(Algorithm): + """A (1+1) FEA using the reversal operator for the TSP.""" + + def __init__(self, instance: Instance, + do_log_h: bool = False) -> None: + """ + Initialize the RLS algorithm for the TSP with reversal move. + + :param instance: the problem instance + :param do_log_h: shall we log the `h`-table? + """ + super().__init__() + if not isinstance(instance, Instance): + raise type_error(instance, "instance", Instance) + #: the instance + self.instance: Final[Instance] = instance + #: shall we log the `h`-table`? + self.do_log_h: Final[bool] = do_log_h + +
    +[docs] + def solve(self, process: Process) -> None: + """ + Apply a (1+1) FEA optimization process with reversing operator. + + :param process: the process instance which provides random numbers, + functions for creating, copying, and evaluating solutions, as well + as the termination criterion + """ + random: Final[Generator] = process.get_random() + # set up the fast calls + register: Final[Callable[[np.ndarray, int], int]] =\ + cast(Callable[[np.ndarray, int], int], process.register) + should_terminate: Final[Callable[[], bool]] = process.should_terminate + ri: Final[Callable[[int], int]] = random.integers + + instance: Final[Instance] = self.instance # get the instance + h: Final[np.ndarray] = np.zeros( # allocate the frequency table + instance.tour_length_upper_bound + 1, DEFAULT_INT) + n: Final[int] = instance.n_cities # get the number of cities + x: Final[np.ndarray] = process.create() # create the solution + x[:] = range(n) # fill array with 0..n + random.shuffle(x) # randomly generate an initial solution + + y: int = cast(int, process.evaluate(x)) # get length of first tour + nm1: Final[int] = n - 1 # need n-1 in the loop for the random numbers + nm2: Final[int] = n - 2 # we need this to check the move indices + while not should_terminate(): + i = ri(nm1) # get the first index + j = ri(nm1) # get the second index + if i > j: # ensure that i <= j + i, j = j, i # swap indices if i > j + if (i == j) or ((i == 0) and (j == nm2)): + continue # either a nop or a complete reversal + y = rev_if_h_not_worse(i, j, n, instance, h, x, y) # move + register(x, y) # register the objective value + + if self.do_log_h: + # we log the frequency table at the very end of the run + if h[y] == 0: + h[y] = 1 + log_h(process, h, 0)
    + + + def __str__(self): + """ + Get the name of this algorithm. + + This name is then used in the directory path and file name of the + log files. + + :returns: "tsp_fea1p1_revn" + :retval "tsp_fea1p1_revn": always + """ + return "tsp_fea1p1_revn" + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log the parameters of the algorithm to the given logger. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + logger.key_value("doLogH", self.do_log_h) + with logger.scope(SCOPE_INSTANCE) as kv: + self.instance.log_parameters_to(kv)
    +
    + +
    diff --git a/_modules/moptipyapps/tsp/instance.html b/_modules/moptipyapps/tsp/instance.html new file mode 100644 index 00000000..5a2a5e8b --- /dev/null +++ b/_modules/moptipyapps/tsp/instance.html @@ -0,0 +1,1156 @@ +moptipyapps.tsp.instance — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.tsp.instance

    +"""
    +An instance of the Traveling Salesperson Problem (TSP) as distance matrix.
    +
    +An instance of the Traveling Salesperson Problem (TSP) is defined as a
    +fully-connected graph with :attr:`Instance.n_cities` nodes. Each edge in the
    +graph has a weight, which identifies the distance between the nodes. The goal
    +is to find the *shortest* tour that visits every single node in the graph
    +exactly once and then returns back to its starting node. Then nodes are
    +usually called cities. In this file, we present methods for loading instances
    +of the TSP as distance matrices `A`. In other words, the value at `A[i, j]`
    +identifies the travel distance from `i` to `j`.
    +
    +We can load files in a subset of the TSPLib format [1, 2] and also include the
    +instances of TSPLib with no more than 2000 cities. We load instances as full
    +distance matrices, which makes writing algorithms to solve them easier but
    +handling instances with more than 2000 cities problematic due to the high
    +memory consumption. Of course, you could still load them, but it would be
    +ill-advised to do so on a normal PC (at the time of this writing).
    +
    +The TSPLib contains many instances of the symmetric TSP, where the distance
    +`A[i, j]` from city `i` to city `j` is the same as the distance `A[j, i]` from
    +`j` to `i`. Here, we provide 111 of them as resource. The cities of some of
    +these instances are points in the Euclidean plain and the distances are the
    +(approximate) Euclidean distances. Others use geographical coordinates
    +(longitude/latitude), and yet others are provides as distances matrices
    +directly. We also provide 19 of the asymmetric TSPLib instances, where the
    +distance `A[i, j]` from `i` to `j` may be different from the distance
    +`A[j, i]` from `j` to `i`.
    +
    +You can obtain lists of either all, only the symmetric, or only the asymmetric
    +instance resources via
    +
    +>>> print(Instance.list_resources()[0:10])  # get all instances (1..10)
    +('a280', 'ali535', 'att48', 'att532', 'bayg29', 'bays29', 'berlin52', \
    +'bier127', 'br17', 'brazil58')
    +
    +>>> print(Instance.list_resources(asymmetric=False)[0:10])  # only symmetric
    +('a280', 'ali535', 'att48', 'att532', 'bayg29', 'bays29', 'berlin52', \
    +'bier127', 'brazil58', 'brg180')
    +
    +>>> print(Instance.list_resources(symmetric=False)[0:10])  # only asymmetric
    +('br17', 'ft53', 'ft70', 'ftv170', 'ftv33', 'ftv35', 'ftv38', 'ftv44', \
    +'ftv47', 'ftv55')
    +
    +You can load any of these instances from the resources via
    +:meth:`Instance.from_resource` as follows:
    +
    +>>> inst = Instance.from_resource("a280")
    +>>> print(inst.n_cities)
    +280
    +
    +If you want to read an instance from an external TSPLib file, you can use
    +:meth:`Instance.from_file`. Be aware that not the whole TSPLib standard is
    +supported right now, but only a reasonably large subset.
    +
    +Every TSP instance automatically provides a lower bound
    +:attr:`Instance.tour_length_lower_bound` and an upper bound
    +:attr:`Instance.tour_length_upper_bound` of the lengths of valid tours.
    +For the TSPLib instances, the globally optimal solutions and their tour
    +lengths are known, so we can use them as lower bounds directly. Otherwise,
    +we currently use a very crude approximation: We assume that, for each city
    +`i`, the next city `j` to be visited would be the nearest neighbor of `i`.
    +Of course, in reality, such a tour may not be feasible, as it could contain
    +disjoint sets of loops. But no tour can be shorter than this.
    +As upper bound, we do the same but assume that `j` would be the cities
    +farthest away from `i`.
    +
    +>>> print(inst.tour_length_lower_bound)
    +2579
    +>>> print(inst.tour_length_upper_bound)
    +65406
    +
    +It should be noted that all TSPLib instances by definition have integer
    +distances. This means that there are never floating point distances and, for
    +example, Euclidean distances are rounded and are only approximate Euclidean.
    +Then again, since floating point numbers could also only represent things such
    +as `sqrt(2)` approximately, using integers instead of floating point numbers
    +does not really change anything - distances would be approximately Euclidean
    +or approximately geographical either way.
    +
    +TSPLib also provides some known optimal solutions in path representation,
    +i.e., as permutations of the numbers `0` to `n_cities-1`. The optimal
    +solutions corresponding to the instances provides as resources can be obtained
    +via :mod:`~moptipyapps.tsp.known_optima`.
    +
    +>>> inst = Instance.from_resource("si175")
    +>>> print(inst.n_cities)
    +175
    +>>> inst[0, 1]
    +113
    +>>> inst[173, 174]
    +337
    +>>> inst[1, 174]
    +384
    +>>> inst[2, 174]
    +384
    +>>> inst[2, 3]
    +248
    +>>> inst[3, 5]
    +335
    +>>> inst[4, 6]
    +134
    +
    +The original data of TSPLib can be found at
    +<http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/>. Before doing
    +anything with these data directly, you should make sure to read the FAQ
    +<http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/TSPFAQ.html> and the
    +documentation
    +<http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/tsp95.pdf>.
    +
    +On 2024-10-18, we added a small eleven city instance based on the car travel
    +distances in km between the Chinese cities
    +Shanghai (上海), Beijing (北京), Nanjing (南京), Hefei (合肥),
    +Harbin (哈尔滨), Kunming (昆明), Wuhan (武汉),
    +Xi'an (西安), Chongqing (重庆), Changsha (长沙),
    +and Hong Kong (香港), determined using BaiDu Maps on 2024-10-18.
    +The optimal solution for this instance has length 9547 (km) and visits the
    +cities in the following order: Shanghai (上海),
    +Nanjing (南京), Hefei (合肥), Wuhan (武汉), Changsha (长沙),
    +Hong Kong (香港), Kunming (昆明), Chongqing (重庆),
    +Xi'an (西安), Beijing (北京), Harbin (哈尔滨).
    +This instance can be used to validate and santity-test algorithms, as its
    +solution can easily be determined using exhaustive enumeration.
    +
    +Interestingly, it holds that the calculated travel distance from
    +Harbin (哈尔滨) to Kunming (昆明) is longer than the travel distance
    +from Harbin (哈尔滨) to Xi'an (西安) and then from
    +Xi'an (西安) to Kunming (昆明).
    +
    +- Harbin (哈尔滨) - Kunming (昆明) = 3781 km
    +- Harbin (哈尔滨) - Xi'an (西安) = 2291 km
    +- Xi'an (西安) - Kunming (昆明) = 1483 km
    +- 2291 km + 1483 km = 3774 km, which is less than 3781 km
    +
    +This may be because BaiduMaps ranked the paths by travel time and not travel
    +distance, or by any other strange effect I cannot account for. Maybe it is
    +related to which lane of a road one would naturally drive on or lengths of
    +intersections depending on the direction one is coming from.
    +Either way, this shows that this simple instance `cn11` may already have
    +interesting properties. It violates the triangle equation and it is
    +non-Euclidean. It is also not based on Geo-coordinates, but on actual street
    +distances and times.
    +
    +>>> inst = Instance.from_resource("cn11")
    +>>> inst[0, 0]
    +0
    +>>> inst[1, 2]
    +1007
    +>>> inst[1, 3]
    +1017
    +>>> inst[9, 10]
    +830
    +>>> inst[5, 6]
    +1560
    +
    +Important initial work on this code has been contributed by Mr. Tianyu LIANG
    +(梁天宇), <liangty@stu.hfuu.edu.cn> a Master's student at the Institute of
    +Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School
    +of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei
    +University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the
    +supervision of Prof. Dr. Thomas Weise (汤卫思教授).
    +
    +1. Gerhard Reinelt. TSPLIB - A Traveling Salesman Problem Library.
    +   *ORSA Journal on Computing* 3(4):376-384. November 1991.
    +   https://doi.org/10.1287/ijoc.3.4.376.
    +   http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/
    +2. Gerhard Reinelt. *TSPLIB95.* Heidelberg, Germany: Universität
    +   Heidelberg, Institut für Angewandte Mathematik. 1995.
    +   http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/tsp95.pdf
    +3. David Lee Applegate, Robert E. Bixby, Vašek Chvátal, and William John Cook.
    +   *The Traveling Salesman Problem: A Computational Study.* Second Edition,
    +   2007. Princeton, NJ, USA: Princeton University Press. Volume 17 of
    +   Princeton Series in Applied Mathematics. ISBN: 0-691-12993-2.
    +4. Gregory Z. Gutin and Abraham P. Punnen. *The Traveling Salesman Problem and
    +   its Variations.* 2002. Kluwer Academic Publishers. Volume 12 of
    +   Combinatorial Optimization. https://doi.org/10.1007/b101971.
    +5. Pedro Larrañaga, Cindy M. H. Kuijpers, Roberto H. Murga, Iñaki Inza, and
    +   Sejla Dizdarevic. Genetic Algorithms for the Travelling Salesman Problem: A
    +   Review of Representations and Operators. *Artificial Intelligence Review*
    +   13(2):129-170. April 1999. https://doi.org/10.1023/A:1006529012972.
    +6. Eugene Leighton Lawler, Jan Karel Lenstra, Alexander Hendrik George Rinnooy
    +   Kan, and David B. Shmoys. *The Traveling Salesman Problem: A Guided Tour of
    +   Combinatorial Optimization.* September 1985. Chichester, West Sussex, UK:
    +   Wiley Interscience. In Estimation, Simulation, and
    +   Control - Wiley-Interscience Series in Discrete Mathematics and
    +   Optimization. ISBN: 0-471-90413-9
    +7. Tianyu Liang, Zhize Wu, Jörg Lässig, Daan van den Berg, and Thomas Weise.
    +   Solving the Traveling Salesperson Problem using Frequency Fitness
    +   Assignment. In *Proceedings of the IEEE Symposium on Foundations of
    +   Computational Intelligence (IEEE FOCI'22),* part of the *IEEE Symposium
    +   Series on Computational Intelligence (SSCI'22),* December 4-7, 2022,
    +   Singapore. Pages 360-367. IEEE.
    +   https://doi.org/10.1109/SSCI51031.2022.10022296.
    +8. Thomas Weise, Raymond Chiong, Ke Tang, Jörg Lässig, Shigeyoshi Tsutsui,
    +   Wenxiang Chen, Zbigniew Michalewicz, and Xin Yao. Benchmarking Optimization
    +   Algorithms: An Open Source Framework for the Traveling Salesman Problem.
    +   *IEEE Computational Intelligence Magazine.* 9(3):40-52. August 2014.
    +   https://doi.org/10.1109/MCI.2014.2326101.
    +"""
    +
    +from math import acos, cos, isfinite, sqrt
    +from typing import Any, Callable, Final, Iterable, TextIO, cast
    +
    +import moptipy.utils.nputils as npu
    +import numpy as np
    +from moptipy.api.component import Component
    +from moptipy.utils.logger import KeyValueLogSection
    +from moptipy.utils.nputils import int_range_to_dtype
    +from moptipy.utils.strings import sanitize_name
    +from pycommons.io.path import Path, file_path
    +from pycommons.types import check_int_range, check_to_int_range, type_error
    +
    +from moptipyapps.tsp.tsplib import open_resource_stream
    +
    +#: the known optimal tour lengths and lower bounds of TSP Lib
    +_LOWER_BOUNDS: dict[str, int] = {
    +    "a280": 2579, "ali535": 202339, "att48": 10628, "att532": 27686,
    +    "bayg29": 1610, "bays29": 2020, "berlin52": 7542, "bier127": 118282,
    +    "br17": 39, "brazil58": 25395, "brd14051": 469385, "brg180": 1950,
    +    "burma14": 3323, "ch130": 6110, "ch150": 6528, "cn11": 9547,
    +    "d1291": 50801, "d15112": 1573084, "d1655": 62128, "d18512": 645238,
    +    "d198": 15780, "d2103": 80450, "d493": 35002, "d657": 48912,
    +    "dantzig42": 699, "dsj1000": 18660188, "eil101": 629, "eil51": 426,
    +    "eil76": 538, "fl1400": 20127, "fl1577": 22249, "fl3795": 28772,
    +    "fl417": 11861, "fnl4461": 182566, "fri26": 937, "ft53": 6905,
    +    "ft70": 38673, "ftv100": 1788, "ftv110": 1958, "ftv120": 2166,
    +    "ftv130": 2307, "ftv140": 2420, "ftv150": 2611, "ftv160": 2683,
    +    "ftv170": 2755, "ftv33": 1286, "ftv35": 1473, "ftv38": 1530,
    +    "ftv44": 1613, "ftv47": 1776, "ftv55": 1608, "ftv64": 1839,
    +    "ftv70": 1950, "ftv90": 1579, "gil262": 2378, "gr120": 6942,
    +    "gr137": 69853, "gr17": 2085, "gr202": 40160, "gr21": 2707,
    +    "gr229": 134602, "gr24": 1272, "gr431": 171414, "gr48": 5046,
    +    "gr666": 294358, "gr96": 55209, "hk48": 11461, "kro124p": 36230,
    +    "kroA100": 21282, "kroA150": 26524, "kroA200": 29368, "kroB100": 22141,
    +    "kroB150": 26130, "kroB200": 29437, "kroC100": 20749, "kroD100": 21294,
    +    "kroE100": 22068, "lin105": 14379, "lin318": 42029, "nrw1379": 56638,
    +    "p43": 5620, "p654": 34643, "pa561": 2763, "pcb1173": 56892,
    +    "pcb3038": 137694, "pcb442": 50778, "pla33810": 66048945,
    +    "pla7397": 23260728, "pla85900": 142382641, "pr1002": 259045,
    +    "pr107": 44303, "pr124": 59030, "pr136": 96772, "pr144": 58537,
    +    "pr152": 73682, "pr226": 80369, "pr2392": 378032, "pr264": 49135,
    +    "pr299": 48191, "pr439": 107217, "pr76": 108159, "rat195": 2323,
    +    "rat575": 6773, "rat783": 8806, "rat99": 1211, "rbg323": 1326,
    +    "rbg358": 1163, "rbg403": 2465, "rbg443": 2720, "rd100": 7910,
    +    "rd400": 15281, "rl11849": 923288, "rl1304": 252948, "rl1323": 270199,
    +    "rl1889": 316536, "rl5915": 565530, "rl5934": 556045, "ry48p": 14422,
    +    "si1032": 92650, "si175": 21407, "si535": 48450, "st70": 675,
    +    "swiss42": 1273, "ts225": 126643, "tsp225": 3916, "u1060": 224094,
    +    "u1432": 152970, "u159": 42080, "u1817": 57201, "u2152": 64253,
    +    "u2319": 234256, "u574": 36905, "u724": 41910, "ulysses16": 6859,
    +    "ulysses22": 7013, "usa13509": 19982859, "vm1084": 239297,
    +    "vm1748": 336556}
    +
    +#: the TSPLib instances
    +_SYMMETRIC_INSTANCES: Final[tuple[str, ...]] = (
    +    "a280", "ali535", "att48", "att532", "bayg29", "bays29", "berlin52",
    +    "bier127", "brazil58", "brg180", "burma14", "ch130", "ch150", "cn11",
    +    "d1291", "d1655", "d198", "d493", "d657", "dantzig42", "eil101", "eil51",
    +    "eil76", "fl1400", "fl1577", "fl417", "fri26", "gil262", "gr120", "gr137",
    +    "gr17", "gr202", "gr21", "gr229", "gr24", "gr431", "gr48", "gr666",
    +    "gr96", "hk48", "kroA100", "kroA150", "kroA200", "kroB100", "kroB150",
    +    "kroB200", "kroC100", "kroD100", "kroE100", "lin105", "lin318", "nrw1379",
    +    "p654", "pcb1173", "pcb442", "pr1002", "pr107", "pr124", "pr136", "pr144",
    +    "pr152", "pr226", "pr264", "pr299", "pr439", "pr76", "rat195", "rat575",
    +    "rat783", "rat99", "rd100", "rd400", "rl1304", "rl1323", "rl1889",
    +    "si1032", "si175", "si535", "st70", "swiss42", "ts225", "tsp225", "u1060",
    +    "u1432", "u159", "u1817", "u574", "u724", "ulysses16", "ulysses22",
    +    "vm1084", "vm1748")
    +
    +#: The set of asymmetric instances
    +_ASYMMETRIC_INSTANCES: Final[tuple[str, ...]] = (
    +    "br17", "ft53", "ft70", "ftv170", "ftv33", "ftv35", "ftv38", "ftv44",
    +    "ftv47", "ftv55", "ftv64", "ftv70", "kro124p", "p43", "rbg323", "rbg358",
    +    "rbg403", "rbg443", "ry48p")
    +
    +#: The set of all TSP instances
    +_INSTANCES: Final[tuple[str, ...]] = tuple(sorted(
    +    _SYMMETRIC_INSTANCES + _ASYMMETRIC_INSTANCES))
    +
    +#: the set of asymmetric resources
    +_ASYMMETRIC_RESOURCES: Final[set[str]] = set(_ASYMMETRIC_INSTANCES)
    +
    +#: the problem is a symmetric tsp
    +_TYPE_SYMMETRIC_TSP: Final[str] = "TSP"
    +#: the problem is an asymmetric tsp
    +_TYPE_ASYMMETRIC_TSP: Final[str] = "ATSP"
    +#: the permitted types
    +_TYPES: Final[set[str]] = {_TYPE_SYMMETRIC_TSP, _TYPE_ASYMMETRIC_TSP}
    +#: the name start
    +_KEY_NAME: Final[str] = "NAME"
    +#: the type start
    +_KEY_TYPE: Final[str] = "TYPE"
    +#: the dimension start
    +_KEY_DIMENSION: Final[str] = "DIMENSION"
    +#: the comment start
    +_KEY_COMMENT: Final[str] = "COMMENT"
    +#: EUC_2D coordinates
    +__EWT_EUC_2D: Final[str] = "EUC_2D"
    +#: geographical coordinates
    +__EWT_GEO: Final[str] = "GEO"
    +#: ATT coordinates
    +__EWT_ATT: Final[str] = "ATT"
    +#: ceiling 2D coordinates
    +__EWT_CEIL2D: Final[str] = "CEIL_2D"
    +#: the explicit edge weight type
    +_EWT_EXPLICIT: Final[str] = "EXPLICIT"
    +#: the edge weight type start
    +_KEY_EDGE_WEIGHT_TYPE: Final[str] = "EDGE_WEIGHT_TYPE"
    +#: the permitted edge weight types
    +_EDGE_WEIGHT_TYPES: Final[set[str]] = {
    +    __EWT_EUC_2D, __EWT_GEO, __EWT_ATT, __EWT_CEIL2D, _EWT_EXPLICIT}
    +#: the edge weight format "function"
    +__EWF_FUNCTION: Final[str] = "FUNCTION"
    +#: the full matrix edge weight format
    +_EWF_FULL_MATRIX: Final[str] = "FULL_MATRIX"
    +#: the upper row edge weight format
    +_EWF_UPPER_ROW: Final[str] = "UPPER_ROW"
    +#: the lower diagonal row
    +__EWF_LOWER_DIAG_ROW: Final[str] = "LOWER_DIAG_ROW"
    +#: the upper diagonal row
    +__EWF_UPPER_DIAG_ROW: Final[str] = "UPPER_DIAG_ROW"
    +#: the edge weight format start
    +_KEY_EDGE_WEIGHT_FORMAT: Final[str] = "EDGE_WEIGHT_FORMAT"
    +#: the permitted edge weight formats
    +_EDGE_WEIGHT_FORMATS: Final[set[str]] = {
    +    __EWF_FUNCTION, _EWF_FULL_MATRIX, _EWF_UPPER_ROW,
    +    __EWF_LOWER_DIAG_ROW, __EWF_UPPER_DIAG_ROW}
    +#: the start of the node coord type
    +_KEY_NODE_COORD_TYPE: Final[str] = "NODE_COORD_TYPE"
    +#: 2d coordinates
    +__NODE_COORD_TYPE_2D: Final[str] = "TWOD_COORDS"
    +#: no coordinates
    +__NODE_COORD_TYPE_NONE: Final[str] = "NO_COORDS"
    +#: the permitted node coordinate types
    +_NODE_COORD_TYPES: Final[set[str]] = {
    +    __NODE_COORD_TYPE_2D, __NODE_COORD_TYPE_NONE}
    +#: the node coordinate section starts
    +_START_NODE_COORD_SECTION: Final[str] = "NODE_COORD_SECTION"
    +#: start the edge weight section
    +_START_EDGE_WEIGHT_SECTION: Final[str] = "EDGE_WEIGHT_SECTION"
    +#: the end of the file
    +_EOF: Final[str] = "EOF"
    +#: the fixed edges section
    +_FIXED_EDGES: Final[str] = "FIXED_EDGES_SECTION"
    +
    +
    +def __line_to_nums(line: str,
    +                   collector: Callable[[int | float], Any]) -> None:
    +    """
    +    Split a line to a list of integers.
    +
    +    :param line: the line string
    +    :param collector: the collector
    +    """
    +    if not isinstance(line, str):
    +        raise type_error(line, "line", str)
    +    idx: int = 0
    +    line = line.strip()
    +    str_len: Final[int] = len(line)
    +
    +    while idx < str_len:
    +        while (idx < str_len) and (line[idx] == " "):
    +            idx += 1
    +        if idx >= str_len:
    +            return
    +
    +        next_space = line.find(" ", idx)
    +        if next_space < 0:
    +            next_space = str_len
    +
    +        part: str = line[idx:next_space]
    +        if ("." in part) or ("E" in part) or ("e" in part):
    +            f: float = float(part)
    +            if not isfinite(f):
    +                raise ValueError(
    +                    f"{part!r} translates to non-finite float {f}.")
    +            collector(f)
    +        else:
    +            collector(check_to_int_range(
    +                part, "line fragment", -1_000_000_000_000, 1_000_000_000_000))
    +        idx = next_space
    +
    +
    +def __nint(v: int | float) -> int:
    +    """
    +    Get the nearest integer in the TSPLIB format.
    +
    +    :param v: the value
    +    :return: the integer
    +    """
    +    if isinstance(v, int):
    +        return v
    +    if isinstance(v, float):
    +        return int(0.5 + v)
    +    raise type_error(v, "value", (int, float))
    +
    +
    +def __dist_2deuc(a: list[int | float], b: list[int | float]) -> int:
    +    """
    +    Compute the two-dimensional Euclidean distance function.
    +
    +    :param a: the first point
    +    :param b: the second point
    +    :return: the distance
    +    """
    +    return __nint(sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2)))
    +
    +
    +def __matrix_from_points(
    +        n_cities: int, coord_dim: int, stream: Iterable[str],
    +        dist_func: Callable[[list[int | float], list[int | float]], int]) \
    +        -> np.ndarray:
    +    """
    +    Load a distance matrix from 2D coordinates.
    +
    +    :param n_cities: the dimension
    +    :param coord_dim: the coordinate dimension
    +    :param stream: the stream
    +    :param dist_func: the distance function
    +    :return: the matrix
    +    """
    +    index: int = 0
    +    coordinates: Final[list[list[int | float]]] = []
    +    row: Final[list[int | float]] = []
    +    for the_line in stream:
    +        if not isinstance(the_line, str):
    +            raise type_error(the_line, "line", str)
    +        line = the_line.strip()
    +        if len(line) <= 0:
    +            continue
    +        if line == _EOF:
    +            break
    +        __line_to_nums(line, row.append)
    +        index += 1
    +        if (len(row) != (coord_dim + 1)) or (not isinstance(row[0], int)) \
    +                or (row[0] != index):
    +            raise ValueError(f"invalid row {line!r} at index {index}, "
    +                             f"gives values {row}.")
    +        coordinates.append(row[1:])
    +        row.clear()
    +    if index != n_cities:
    +        raise ValueError(f"only found {index} rows, but expected {n_cities}")
    +
    +    # now construct the matrix
    +    matrix: Final[np.ndarray] = np.zeros((n_cities, n_cities),
    +                                         npu.DEFAULT_INT)
    +    for i in range(n_cities):
    +        a = coordinates[i]
    +        for j in range(i):
    +            b = coordinates[j]
    +            dist = dist_func(a, b)
    +            if not isinstance(dist, int):
    +                raise type_error(dist, f"distance[{i},{j}]", int)
    +            if dist < 0:
    +                raise ValueError(
    +                    f"Cannot have node distance {dist}: ({a}) at index="
    +                    f"{i + 1} and ({b} at index={j + 1}.")
    +            matrix[i, j] = dist
    +            matrix[j, i] = dist
    +    return matrix
    +
    +
    +def __coord_to_rad(x: int | float) -> float:
    +    """
    +    Convert coordinates to longitude/latitude.
    +
    +    :param x: the coordinate
    +    """
    +    degrees: int = int(x)
    +    return (3.141592 * (degrees + (5.0 * (x - degrees)) / 3.0)) / 180.0
    +
    +
    +def __dist_loglat(a: list[int | float], b: list[int | float]) -> int:
    +    """
    +    Convert a longitude-latitude pair to a distance.
    +
    +    :param a: the first point
    +    :param b: the second point
    +    :return: the distance
    +    """
    +    lat1: float = __coord_to_rad(a[0])
    +    long1: float = __coord_to_rad(a[1])
    +    lat2: float = __coord_to_rad(b[0])
    +    long2: float = __coord_to_rad(b[1])
    +    q1: Final[float] = cos(long1 - long2)
    +    q2: Final[float] = cos(lat1 - lat2)
    +    q3: Final[float] = cos(lat1 + lat2)
    +    return int(6378.388 * acos(0.5 * (
    +        (1.0 + q1) * q2 - (1.0 - q1) * q3)) + 1.0)
    +
    +
    +def __dist_att(a: list[int | float], b: list[int | float]) -> int:
    +    """
    +    Compute the ATT Pseudo-Euclidean distance function.
    +
    +    :param a: the first point
    +    :param b: the second point
    +    :return: the distance
    +    """
    +    xd: Final[int | float] = a[0] - b[0]
    +    yd: Final[int | float] = a[1] - b[1]
    +    rij: Final[float] = sqrt((xd * xd + yd * yd) / 10.0)
    +    tij: Final[int] = __nint(rij)
    +    return (tij + 1) if tij < rij else tij
    +
    +
    +def __dist_2dceil(a: list[int | float], b: list[int | float]) -> int:
    +    """
    +    Compute the ceiling of the two-dimensional Euclidean distance function.
    +
    +    :param a: the first point
    +    :param b: the second point
    +    :return: the distance
    +    """
    +    dist: Final[float] = sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2))
    +    disti: Final[int] = int(dist)
    +    return disti if dist == disti else (disti + 1)
    +
    +
    +def _matrix_from_node_coord_section(
    +        n_cities: int | None, edge_weight_type: str | None,
    +        node_coord_type: str | None, stream: Iterable[str]) -> np.ndarray:
    +    """
    +    Get a data matrix from a node coordinate section.
    +
    +    :param n_cities: the dimension
    +    :param edge_weight_type: the edge weight type
    +    :param node_coord_type: the node coordinate type
    +    :param stream: the node coordinate stream
    +    :return: the data matrix
    +    """
    +    check_int_range(n_cities, "n_cities", 2, 1_000_000_000_000)
    +    if (node_coord_type is not None) and \
    +            (not isinstance(node_coord_type, str)):
    +        raise type_error(node_coord_type, "node_coord_type", str)
    +    if not isinstance(edge_weight_type, str):
    +        raise type_error(edge_weight_type, "edge_weight_type", str)
    +
    +    dist_fun = None
    +    coord_dim: int | None = None
    +    if (edge_weight_type == __EWT_EUC_2D) \
    +            and (node_coord_type in (None, __NODE_COORD_TYPE_2D)):
    +        coord_dim = 2
    +        dist_fun = __dist_2deuc
    +    elif (edge_weight_type == __EWT_GEO) \
    +            and (node_coord_type in (None, __NODE_COORD_TYPE_2D)):
    +        coord_dim = 2
    +        dist_fun = __dist_loglat
    +    elif (edge_weight_type == __EWT_ATT) \
    +            and (node_coord_type in (None, __NODE_COORD_TYPE_2D)):
    +        coord_dim = 2
    +        dist_fun = __dist_att
    +    elif (edge_weight_type == __EWT_CEIL2D) \
    +            and (node_coord_type in (None, __NODE_COORD_TYPE_2D)):
    +        coord_dim = 2
    +        dist_fun = __dist_2dceil
    +
    +    if (coord_dim is not None) and (dist_fun is not None):
    +        return __matrix_from_points(n_cities, coord_dim, stream, dist_fun)
    +
    +    raise ValueError(f"invalid combination of {_KEY_EDGE_WEIGHT_TYPE} "
    +                     f"and {_KEY_NODE_COORD_TYPE}")
    +
    +
    +def __read_n_ints(n: int, stream: Iterable[str]) -> list[int]:
    +    """
    +    Read exactly `n` integers from a stream.
    +
    +    :param n: the number of integers to read
    +    :param stream: the stream to read from
    +    :return: the list of integers
    +    """
    +    res: list[int] = []
    +
    +    def __append(i: int | float, fwd=res.append) -> None:
    +        if isinstance(i, int):
    +            fwd(i)
    +        else:
    +            i2 = int(i)
    +            if i2 != i:
    +                raise ValueError(f"{i} is not integer")
    +            fwd(i2)
    +
    +    for line in stream:
    +        __line_to_nums(line, __append)
    +        if len(res) == n:
    +            break
    +
    +    if len(res) != n:
    +        raise ValueError(f"expected {n} integers, got {len(res)}.")
    +    return res
    +
    +
    +def _matrix_from_edge_weights(
    +        n_cities: int | None, edge_weight_type: str | None,
    +        edge_weight_format: str | None, stream: Iterable[str]) -> np.ndarray:
    +    """
    +    Get a data matrix from a edge weights section.
    +
    +    :param n_cities: the dimension
    +    :param edge_weight_type: the edge weight type
    +    :param edge_weight_format: the edge weight format
    +    :param stream: the node coordinate stream
    +    :return: the data matrix
    +    """
    +    check_int_range(n_cities, "n_cities", 2, 1_000_000_000_000)
    +    if not isinstance(edge_weight_type, str):
    +        raise type_error(edge_weight_type, "node_coord_type", str)
    +    if not isinstance(edge_weight_type, str):
    +        raise type_error(edge_weight_type, "edge_weight_type", str)
    +    if edge_weight_type == _EWT_EXPLICIT:
    +        if edge_weight_format == _EWF_FULL_MATRIX:
    +            res = np.array(__read_n_ints(n_cities * n_cities, stream),
    +                           dtype=npu.DEFAULT_INT).reshape(
    +                (n_cities, n_cities))
    +            np.fill_diagonal(res, 0)
    +            return res
    +        if edge_weight_format == _EWF_UPPER_ROW:
    +            ints = __read_n_ints((n_cities * (n_cities - 1)) // 2, stream)
    +            res = np.zeros((n_cities, n_cities), dtype=npu.DEFAULT_INT)
    +            i: int = 1
    +            j: int = 0
    +            for v in ints:
    +                res[j, i] = res[i, j] = v
    +                i = i + 1
    +                if i >= n_cities:
    +                    j = j + 1
    +                    i = j + 1
    +            return res
    +        if edge_weight_format == __EWF_LOWER_DIAG_ROW:
    +            ints = __read_n_ints(
    +                n_cities + ((n_cities * (n_cities - 1)) // 2), stream)
    +            res = np.zeros((n_cities, n_cities), dtype=npu.DEFAULT_INT)
    +            i = 0
    +            j = 0
    +            for v in ints:
    +                if i != j:
    +                    res[j, i] = res[i, j] = v
    +                i = i + 1
    +                if i > j:
    +                    j = j + 1
    +                    i = 0
    +            return res
    +        if edge_weight_format == __EWF_UPPER_DIAG_ROW:
    +            ints = __read_n_ints(
    +                n_cities + ((n_cities * (n_cities - 1)) // 2), stream)
    +            res = np.zeros((n_cities, n_cities), dtype=npu.DEFAULT_INT)
    +            i = 0
    +            j = 0
    +            for v in ints:
    +                if i != j:
    +                    res[j, i] = res[i, j] = v
    +                i = i + 1
    +                if i >= n_cities:
    +                    j = j + 1
    +                    i = j
    +            return res
    +    raise ValueError(
    +        f"unsupported combination of {_KEY_EDGE_WEIGHT_TYPE}="
    +        f"{edge_weight_type!r} and {_KEY_EDGE_WEIGHT_FORMAT}="
    +        f"{edge_weight_format!r}")
    +
    +
    +def _from_stream(
    +        stream: Iterable[str],
    +        lower_bound_getter: Callable[[str], int] | None =
    +        _LOWER_BOUNDS.__getitem__) -> "Instance":
    +    """
    +    Read a TSP Lib instance from a TSP-lib formatted stream.
    +
    +    :param stream: the text stream
    +    :param lower_bound_getter: a function returning a lower bound for an
    +        instance name, or `None` to use a simple lower bound approximation
    +    :return: the instance
    +    """
    +    if (lower_bound_getter is not None) \
    +            and (not callable(lower_bound_getter)):
    +        raise type_error(
    +            lower_bound_getter, "lower_bound_getter", None, call=True)
    +
    +    the_name: str | None = None
    +    the_type: str | None = None
    +    the_n_cities: int | None = None
    +    the_ewt: str | None = None
    +    the_ewf: str | None = None
    +    the_nct: str | None = None
    +    the_matrix: np.ndarray | None = None
    +
    +    for the_line in stream:
    +        if not isinstance(the_line, str):
    +            raise type_error(the_line, "line", str)
    +        line = the_line.strip()
    +        if len(line) <= 0:
    +            continue
    +
    +        sep_idx: int = line.find(":")
    +        if sep_idx > 0:
    +            key: str = line[:sep_idx].strip()
    +            value: str = line[sep_idx + 1:].strip()
    +            if len(value) <= 0:
    +                raise ValueError(f"{line!r} has empty value "
    +                                 f"{value!r} for key {key!r}.")
    +
    +            if key == _KEY_NAME:
    +                if the_name is not None:
    +                    raise ValueError(
    +                        f"{line!r} cannot come at this position,"
    +                        f" already got {_KEY_NAME}={the_name!r}.")
    +                if value.endswith(".tsp"):
    +                    value = value[0:-4]
    +                the_name = value
    +                continue
    +
    +            if key == _KEY_TYPE:
    +                if the_type is not None:
    +                    raise ValueError(
    +                        f"{line!r} cannot come at this position, already "
    +                        f"got {_KEY_TYPE}={the_type!r}.")
    +                the_type = _TYPE_SYMMETRIC_TSP \
    +                    if value == "TSP (M.~Hofmeister)" else value
    +                if the_type not in _TYPES:
    +                    raise ValueError(
    +                        f"only {_TYPES!r} are permitted as {_KEY_TYPE}, "
    +                        f"but got {the_type!r} from {line!r}.")
    +                continue
    +
    +            if key == _KEY_DIMENSION:
    +                if the_n_cities is not None:
    +                    raise ValueError(
    +                        f"{line!r} cannot come at this position,"
    +                        f" already got {_KEY_DIMENSION}={the_n_cities}.")
    +                the_n_cities = check_to_int_range(value, "dimension",
    +                                                  2, 1_000_000_000)
    +
    +            if key == _KEY_EDGE_WEIGHT_TYPE:
    +                if the_ewt is not None:
    +                    raise ValueError(
    +                        f"{line!r} cannot come at this position, already "
    +                        f"got {_KEY_EDGE_WEIGHT_TYPE}={the_ewt!r}.")
    +                the_ewt = value
    +                if the_ewt not in _EDGE_WEIGHT_TYPES:
    +                    raise ValueError(
    +                        f"only {_EDGE_WEIGHT_TYPES!r} are permitted as "
    +                        f"{_KEY_EDGE_WEIGHT_TYPE}, but got {the_ewt!r} "
    +                        f"in {line!r}")
    +                continue
    +
    +            if key == _KEY_EDGE_WEIGHT_FORMAT:
    +                if the_ewf is not None:
    +                    raise ValueError(
    +                        f"{line!r} cannot come at this position, already "
    +                        f"got {_KEY_EDGE_WEIGHT_FORMAT}={the_ewf!r}.")
    +                the_ewf = value
    +                if the_ewf not in _EDGE_WEIGHT_FORMATS:
    +                    raise ValueError(
    +                        f"only {_EDGE_WEIGHT_FORMATS!r} are permitted as "
    +                        f"{_KEY_EDGE_WEIGHT_FORMAT}, but got {the_ewf} "
    +                        f"in {line!r}")
    +                continue
    +            if key == _KEY_NODE_COORD_TYPE:
    +                if the_nct is not None:
    +                    raise ValueError(
    +                        f"{line!r} cannot come at this position, already "
    +                        f"got {_KEY_NODE_COORD_TYPE}={the_nct!r}.")
    +                the_nct = value
    +                if the_nct not in _NODE_COORD_TYPES:
    +                    raise ValueError(
    +                        f"only {_NODE_COORD_TYPES!r} are permitted as node "
    +                        f"{_KEY_NODE_COORD_TYPE}, but got {the_nct!r} "
    +                        f"in {line!r}")
    +                continue
    +        elif line == _START_NODE_COORD_SECTION:
    +            if the_matrix is not None:
    +                raise ValueError(
    +                    f"already got matrix, cannot have {line!r} here!")
    +            the_matrix = _matrix_from_node_coord_section(
    +                the_n_cities, the_ewt, the_nct, stream)
    +            continue
    +        elif line == _START_EDGE_WEIGHT_SECTION:
    +            if the_matrix is not None:
    +                raise ValueError(
    +                    f"already got matrix, cannot have {line!r} here!")
    +            the_matrix = _matrix_from_edge_weights(
    +                the_n_cities, the_ewt, the_ewf, stream)
    +            continue
    +        elif line == _EOF:
    +            break
    +        elif line == _FIXED_EDGES:
    +            raise ValueError(f"{_FIXED_EDGES!r} not supported")
    +
    +    if the_name is None:
    +        raise ValueError("did not find any name.")
    +    if the_matrix is None:
    +        raise ValueError(f"did not find any matrix for {the_name!r}.")
    +
    +    inst: Final[Instance] = Instance(
    +        the_name, 0 if (lower_bound_getter is None) else
    +        lower_bound_getter(the_name), the_matrix)
    +    if (the_type == _TYPE_SYMMETRIC_TSP) and (not inst.is_symmetric):
    +        raise ValueError("found asymmetric TSP instance but expected "
    +                         f"{the_name!r} to be a symmetric one?")
    +
    +    return inst
    +
    +
    +
    +[docs] +def ncities_from_tsplib_name(name: str) -> int: + """ + Compute the instance scale from the instance name. + + :param name: the instance name + :return: the instance scale + """ + if name == "kro124p": + return 100 + if name == "ry48p": + return 48 + idx: int = len(name) + while name[idx - 1] in "0123456789": + idx -= 1 + scale: Final[int] = int(name[idx:]) + if name.startswith("ftv"): + return scale + 1 + return scale
    + + + +
    +[docs] +class Instance(Component, np.ndarray): + """An instance of the Traveling Salesperson Problem.""" + + #: the name of the instance + name: str + #: the number of cities + n_cities: int + #: the lower bound of the tour length + tour_length_lower_bound: int + #: the upper bound of the tour length + tour_length_upper_bound: int + #: is the TSP instance symmetric? + is_symmetric: bool + + def __new__(cls, name: str, tour_length_lower_bound: int, + matrix: np.ndarray, + upper_bound_range_multiplier: int = 1) -> "Instance": + """ + Create an instance of the Traveling Salesperson Problem. + + :param cls: the class + :param name: the name of the instance + :param tour_length_lower_bound: the lower bound of the tour length + :param matrix: the matrix with the data (will be copied) + :param upper_bound_range_multiplier: a multiplier for the upper bound + to fix the data range, by default `1` + """ + use_name: Final[str] = sanitize_name(name) + if name != use_name: + raise ValueError(f"Name {name!r} is not a valid name.") + + check_int_range(tour_length_lower_bound, "tour_length_lower_bound", + 0, 1_000_000_000_000_000) + + n_cities: int = len(matrix) + if n_cities <= 1: + raise ValueError(f"There must be at least two cities in a TSP " + f"instance, but we got {n_cities}.") + + use_shape: Final[tuple[int, int]] = (n_cities, n_cities) + if isinstance(matrix, np.ndarray): + if matrix.shape != use_shape: + raise ValueError( + f"Unexpected shape {matrix.shape} for {n_cities} cities, " + f"expected {use_shape}.") + else: + raise type_error(matrix, "matrix", np.ndarray) + + # validate the matrix and compute the upper bound + upper_bound: int = 0 + lower_bound_2: int = 0 + is_symmetric: bool = True + for i in range(n_cities): + farthest_neighbor: int = -1 + nearest_neighbor: int = 9_223_372_036_854_775_807 + + for j in range(n_cities): + dist = int(matrix[i, j]) + if i == j: + if dist != 0: + raise ValueError( + f"if i=j={i}, then dist must be zero " + f"but is {dist}.") + continue + farthest_neighbor = max(farthest_neighbor, dist) + nearest_neighbor = min(nearest_neighbor, dist) + if dist != matrix[j, i]: + is_symmetric = False + if farthest_neighbor <= 0: + raise ValueError(f"farthest neighbor distance of node {i} is" + f" {farthest_neighbor}?") + upper_bound = upper_bound + farthest_neighbor + lower_bound_2 = lower_bound_2 + nearest_neighbor + + tour_length_lower_bound = max( + tour_length_lower_bound, check_int_range( + lower_bound_2, "lower_bound_2", 0, 1_000_000_000_000_000)) + check_int_range(upper_bound, "upper_bound", + tour_length_lower_bound, 1_000_000_000_000_001) + + # create the object and ensure that the backing integer type is + # large enough to accommodate all possible tour lengths + limit: Final[int] = (check_int_range( + upper_bound_range_multiplier, "upper_bound_range_multiplier", 1) + * max(upper_bound, n_cities)) + obj: Final[Instance] = super().__new__( + cls, use_shape, int_range_to_dtype( + min_value=-limit, max_value=limit)) + np.copyto(obj, matrix, "unsafe") + for i in range(n_cities): + for j in range(n_cities): + if obj[i, j] != matrix[i, j]: + raise ValueError( + f"error when copying: {obj[i, j]} != {matrix[i, j]}") + + #: the name of the instance + obj.name = use_name + #: the number of cities + obj.n_cities = n_cities + #: the lower bound of the tour length + obj.tour_length_lower_bound = tour_length_lower_bound + #: the upper bound of the tour length + obj.tour_length_upper_bound = upper_bound + #: is this instance symmetric? + obj.is_symmetric = is_symmetric + return obj + + def __str__(self): + """ + Get the name of this instance. + + :return: the name of this instance + + >>> str(Instance.from_resource("gr17")) + 'gr17' + """ + return self.name + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log the parameters of the instance to the given logger. + + :param logger: the logger for the parameters + + >>> from moptipy.utils.logger import InMemoryLogger + >>> with InMemoryLogger() as l: + ... with l.key_values("I") as kv: + ... Instance.from_resource("kroE100").log_parameters_to(kv) + ... print(repr('@'.join(l.get_log()))) + 'BEGIN_I@name: kroE100@class: moptipyapps.tsp.instance.Instance\ +@nCities: 100@tourLengthLowerBound: 22068@tourLengthUpperBound: 330799@\ +symmetric: T@dtype: i@END_I' + """ + super().log_parameters_to(logger) + logger.key_value("nCities", self.n_cities) + logger.key_value("tourLengthLowerBound", self.tour_length_lower_bound) + logger.key_value("tourLengthUpperBound", self.tour_length_upper_bound) + logger.key_value("symmetric", self.is_symmetric) + logger.key_value(npu.KEY_NUMPY_TYPE, self.dtype.char)
    + + +
    +[docs] + @staticmethod + def from_file( + path: str, + lower_bound_getter: Callable[[str], int] | None = + _LOWER_BOUNDS.__getitem__) -> "Instance": + """ + Read a TSP Lib instance from a TSP-lib formatted file. + + :param path: the path to the file + :param lower_bound_getter: a function returning a lower bound for an + instance name, or `None` to use a simple lower bound approximation + :return: the instance + + >>> from os.path import dirname + >>> inst = Instance.from_file(dirname(__file__) + "/tsplib/br17.atsp") + >>> inst.name + 'br17' + """ + file: Final[Path] = file_path(path) + with file.open_for_read() as stream: + try: + return _from_stream( + cast(TextIO, stream), lower_bound_getter) + except (TypeError, ValueError) as err: + raise ValueError(f"error when parsing file {file!r}") from err
    + + +
    +[docs] + @staticmethod + def from_resource(name: str) -> "Instance": + """ + Load a TSP instance from a resource. + + :param name: the name string + :return: the instance + + >>> Instance.from_resource("br17").n_cities + 17 + """ + if not isinstance(name, str): + raise type_error(name, "name", str) + container: Final = Instance.from_resource + inst_attr: Final[str] = f"__inst_{name}" + if hasattr(container, inst_attr): # instance loaded? + return cast(Instance, getattr(container, inst_attr)) + + is_symmetric: Final[bool] = name not in _ASYMMETRIC_INSTANCES + suffix: Final[str] = ".tsp" if is_symmetric else ".atsp" + with open_resource_stream(f"{name}{suffix}") as stream: + inst: Final[Instance] = _from_stream(stream) + + if inst.name != name: + raise ValueError(f"got {inst.name!r} for instance {name!r}?") + sc: int = ncities_from_tsplib_name(name) + if sc != inst.n_cities: + raise ValueError(f"expected to get n_cities={sc} from name " + f"{name!r} but got {inst.n_cities}.") + if is_symmetric and (not inst.is_symmetric): + raise ValueError(f"{name!r} should be symmetric but is not?") + if inst.n_cities <= 1000: + setattr(container, inst_attr, inst) + return inst
    + + +
    +[docs] + @staticmethod + def list_resources(symmetric: bool = True, + asymmetric: bool = True) -> tuple[str, ...]: + """ + Get a tuple of all the TSP instances available as resource. + + :param symmetric: include the symmetric instances + :param asymmetric: include the asymmetric instances + :return: the tuple with the instance names + + >>> a = len(Instance.list_resources(True, True)) + >>> print(a) + 111 + >>> b = len(Instance.list_resources(True, False)) + >>> print(b) + 92 + >>> c = len(Instance.list_resources(False, True)) + >>> print(c) + 19 + >>> print(a == (b + c)) + True + >>> print(len(Instance.list_resources(False, False))) + 0 + """ + return _INSTANCES if (symmetric and asymmetric) else ( + _SYMMETRIC_INSTANCES if symmetric else ( + _ASYMMETRIC_INSTANCES if asymmetric else ()))
    + + +
    +[docs] + def to_stream(self, collector: Callable[[str], Any], + comments: Iterable[str] = ()) -> None: + """ + Convert this instance to a stream. + + :param collector: the string collector + :param comments: a stream of comments + + >>> orig = Instance.from_resource("br17") + >>> text = [] + >>> orig.to_stream(text.append) + >>> reload = _from_stream(iter(text), + ... lambda _: orig.tour_length_lower_bound) + >>> orig.n_cities == reload.n_cities + True + >>> orig.name == reload.name + True + >>> list(orig.flatten()) == list(reload.flatten()) + True + + >>> orig = Instance.from_resource("att48") + >>> text = [] + >>> orig.to_stream(text.append) + >>> reload = _from_stream(iter(text), + ... lambda _: orig.tour_length_lower_bound) + >>> orig.n_cities == reload.n_cities + True + >>> orig.name == reload.name + True + >>> list(orig.flatten()) == list(reload.flatten()) + True + + >>> orig = Instance.from_resource("berlin52") + >>> text = [] + >>> orig.to_stream(text.append) + >>> reload = _from_stream(iter(text), + ... lambda _: orig.tour_length_lower_bound) + >>> orig.n_cities == reload.n_cities + True + >>> orig.name == reload.name + True + >>> list(orig.flatten()) == list(reload.flatten()) + True + + >>> orig = Instance.from_resource("ft53") + >>> text = [] + >>> orig.to_stream(text.append) + >>> reload = _from_stream(iter(text), + ... lambda _: orig.tour_length_lower_bound) + >>> orig.n_cities == reload.n_cities + True + >>> orig.name == reload.name + True + >>> list(orig.flatten()) == list(reload.flatten()) + True + """ + if not callable(collector): + raise type_error(collector, "collector", call=True) + if not isinstance(comments, Iterable): + raise type_error(comments, "comments", Iterable) + collector(f"{_KEY_NAME}: {self.name}") + t: str = _TYPE_SYMMETRIC_TSP if self.is_symmetric \ + else _TYPE_ASYMMETRIC_TSP + collector(f"{_KEY_TYPE}: {t}") + for comment in comments: + collector(f"{_KEY_COMMENT}: {str.strip(comment)}") + collector(f"{_KEY_DIMENSION}: {self.n_cities}") + collector(f"{_KEY_EDGE_WEIGHT_TYPE}: {_EWT_EXPLICIT}") + t = _EWF_UPPER_ROW if self.is_symmetric else _EWF_FULL_MATRIX + collector(f"{_KEY_EDGE_WEIGHT_FORMAT}: {t}") + collector(_START_EDGE_WEIGHT_SECTION) + + if self.is_symmetric: + for i in range(self.n_cities): + collector(" ".join(map(str, list(self[i][i + 1:])))) + else: + for i in range(self.n_cities): + collector(" ".join(map(str, self[i]))) + collector(_EOF)
    +
    + +
    diff --git a/_modules/moptipyapps/tsp/known_optima.html b/_modules/moptipyapps/tsp/known_optima.html new file mode 100644 index 00000000..5fb3cf22 --- /dev/null +++ b/_modules/moptipyapps/tsp/known_optima.html @@ -0,0 +1,141 @@ +moptipyapps.tsp.known_optima — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.tsp.known_optima

    +"""
    +A set of tools to load known optima in the TSPLib format.
    +
    +The TSPLib provides benchmark instances for the Traveling Salesperson
    +Problem (TSP). We provide a subset of these instances with up to 2000 cities
    +as resources in :mod:`~moptipyapps.tsp.instance`. Additionally, TSPLib
    +provides the optimal solutions for a subset of these instances. Within this
    +module here, we provide methods for reading the optimal solution files
    +in the TSPLib format. We also include as resources the optimal solutions to
    +the instances that our package provide as resources as well.
    +
    +You can get the list of instance names for which the optimal tours are
    +included in this package via :func:`list_resource_tours` and then load a tour
    +from a resource via :func:`opt_tour_from_resource`. If you want to read a tour
    +from an external file that obeys the TSPLib format, you can do so via
    +:func:`opt_tour_from_file`.
    +
    +1. Gerhard Reinelt. TSPLIB - A Traveling Salesman Problem Library.
    +   *ORSA Journal on Computing* 3(4):376-384. November 1991.
    +   https://doi.org/10.1287/ijoc.3.4.376.
    +   http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/
    +2. Gerhard Reinelt. *TSPLIB95.* Heidelberg, Germany: Universität
    +   Heidelberg, Institut für Angewandte Mathematik. 1995.
    +   http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/tsp95.pdf
    +"""
    +
    +from typing import Final, TextIO, cast
    +
    +import moptipy.utils.nputils as npu
    +import numpy as np
    +from pycommons.io.path import Path, file_path
    +from pycommons.types import check_to_int_range, type_error
    +
    +from moptipyapps.tsp.tsplib import open_resource_stream
    +
    +#: the set of known optimal tours
    +_TOURS: Final[tuple[str, ...]] = (
    +    "a280", "att48", "bayg29", "bays29", "berlin52", "brg180", "ch130",
    +    "ch150", "cn11", "eil101", "eil51", "eil76", "fri26", "gr120", "gr202",
    +    "gr24", "gr48", "gr666", "gr96", "kroA100", "kroC100", "kroD100",
    +    "lin105", "pcb442", "pr1002", "pr76", "rd100", "st70", "tsp225",
    +    "ulysses16", "ulysses22")
    +
    +
    +def _from_stream(stream: TextIO) -> np.ndarray:
    +    """
    +    Read an optimal tour from a stream.
    +
    +    :param stream: the text stream
    +    :return: the tour
    +    """
    +    nodes: list[int] = []
    +    in_tour: bool = False
    +    done_nodes: set[int] = set()
    +    max_node: int = -1
    +
    +    for the_line in stream:
    +        if not isinstance(the_line, str):
    +            raise type_error(the_line, "line", str)
    +        line = the_line.strip().upper()
    +        if len(line) <= 0:
    +            continue
    +        if line == "TOUR_SECTION":
    +            in_tour = True
    +            continue
    +        if line in ("-1", "EOF"):
    +            break
    +        if in_tour:
    +            for node_str in line.rsplit():
    +                node = check_to_int_range(
    +                    node_str, "node", 1, 1_000_000_000_000)
    +                if node in done_nodes:
    +                    raise ValueError(f"encountered node {node} twice")
    +                done_nodes.add(node)
    +                max_node = max(max_node, node)
    +                nodes.append(node - 1)
    +    if len(nodes) != max_node:
    +        raise ValueError(
    +            f"expected {max_node} nodes, got {len(nodes)} instead.")
    +    return np.array(nodes, npu.int_range_to_dtype(0, max_node - 1))
    +
    +
    +
    +[docs] +def opt_tour_from_file(path: str) -> np.ndarray: + """ + Read a known optimal tour from a file. + + :param path: the path to the file + :return: the tour + """ + file: Final[Path] = file_path(path) + with file.open_for_read() as stream: + try: + return _from_stream(cast(TextIO, stream)) + except (TypeError, ValueError) as err: + raise ValueError(f"error when parsing file {file!r}") from err
    + + + +
    +[docs] +def opt_tour_from_resource(name: str) -> np.ndarray: + """ + Load an optimal tour from a resource. + + >>> np.array2string(opt_tour_from_resource("ulysses16")) + '[ 0 13 12 11 6 5 14 4 10 8 9 15 2 1 3 7]' + + >>> np.array2string(opt_tour_from_resource("cn11")) + '[ 0 2 3 6 9 10 5 8 7 1 4]' + + :param name: the name string + :return: the optimal tour + """ + if not isinstance(name, str): + raise type_error(name, "name", str) + with open_resource_stream(f"{name}.opt.tour") as stream: + return _from_stream(stream)
    + + + +
    +[docs] +def list_resource_tours() -> tuple[str, ...]: + """ + Get a tuple of the names of the optimal tours in the resources. + + >>> list_resource_tours() + ('a280', 'att48', 'bayg29', 'bays29', 'berlin52', 'brg180', 'ch130', \ +'ch150', 'cn11', 'eil101', 'eil51', 'eil76', 'fri26', 'gr120', 'gr202', \ +'gr24', 'gr48', 'gr666', 'gr96', 'kroA100', 'kroC100', 'kroD100', 'lin105', \ +'pcb442', 'pr1002', 'pr76', 'rd100', 'st70', 'tsp225', 'ulysses16', \ +'ulysses22') + + :return: the tuple + """ + return _TOURS
    + +
    diff --git a/_modules/moptipyapps/tsp/tour_length.html b/_modules/moptipyapps/tsp/tour_length.html new file mode 100644 index 00000000..e6f70b4a --- /dev/null +++ b/_modules/moptipyapps/tsp/tour_length.html @@ -0,0 +1,176 @@ +moptipyapps.tsp.tour_length — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.tsp.tour_length

    +"""
    +The tour length objective function for tours in path representation.
    +
    +A Traveling Salesperson Problem (TSP) instance  is defined as a
    +fully-connected graph with
    +:attr:`~moptipyapps.tsp.instance.Instance.n_cities` nodes. Each edge in the
    +graph has a weight, which identifies the distance between the nodes. The goal
    +is to find the *shortest* tour that visits every single node in the graph
    +exactly once and then returns back to its starting node. Then nodes are
    +usually called cities. In this file, we present methods for loading instances
    +of the TSP as distance matrices `A`. In other words, the value at `A[i, j]`
    +identifies the travel distance from `i` to `j`.
    +
    +A tour can be represented in path representation, which means that it is
    +stored as a permutation of the numbers `0` to `n_cities-1`. The number at
    +index `k` identifies that `k`-th city to visit. So the first number in the
    +permutation identifies the first city, the second number the second city,
    +and so on.
    +
    +The length of the tour can be computed by summing up the distances from the
    +`k`-th city to the `k+1`-st city, for `k` in `0..n_cities-2` and then adding
    +the distance from the last city to the first city. This is what the function
    +:func:`tour_length` is doing. This function is then wrapped as objective
    +function object in :class:`TourLength`.
    +
    +Important initial work on this code has been contributed by Mr. Tianyu LIANG
    +(梁天宇), <liangty@stu.hfuu.edu.cn> a Master's student at the Institute of
    +Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School
    +of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei
    +University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the
    +supervision of Prof. Dr. Thomas Weise (汤卫思教授).
    +
    +1. Gerhard Reinelt. TSPLIB - A Traveling Salesman Problem Library.
    +   *ORSA Journal on Computing* 3(4):376-384. November 1991.
    +   https://doi.org/10.1287/ijoc.3.4.376.
    +   http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/
    +2. Gerhard Reinelt. *TSPLIB95.* Heidelberg, Germany: Universität
    +   Heidelberg, Institut für Angewandte Mathematik. 1995.
    +   http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/tsp95.pdf
    +3. David Lee Applegate, Robert E. Bixby, Vašek Chvátal, and William John Cook.
    +   *The Traveling Salesman Problem: A Computational Study.* Second Edition,
    +   2007. Princeton, NJ, USA: Princeton University Press. Volume 17 of
    +   Princeton Series in Applied Mathematics. ISBN: 0-691-12993-2.
    +4. Gregory Z. Gutin and Abraham P. Punnen. *The Traveling Salesman Problem and
    +   its Variations.* 2002. Kluwer Academic Publishers. Volume 12 of
    +   Combinatorial Optimization. https://doi.org/10.1007/b101971.
    +5. Pedro Larrañaga, Cindy M. H. Kuijpers, Roberto H. Murga, Iñaki Inza, and
    +   Sejla Dizdarevic. Genetic Algorithms for the Travelling Salesman Problem: A
    +   Review of Representations and Operators. *Artificial Intelligence Review*
    +   13(2):129-170. April 1999. https://doi.org/10.1023/A:1006529012972.
    +6. Eugene Leighton Lawler, Jan Karel Lenstra, Alexander Hendrik George Rinnooy
    +   Kan, and David B. Shmoys. *The Traveling Salesman Problem: A Guided Tour of
    +   Combinatorial Optimization.* September 1985. Chichester, West Sussex, UK:
    +   Wiley Interscience. In Estimation, Simulation, and
    +   Control - Wiley-Interscience Series in Discrete Mathematics and
    +   Optimization. ISBN: 0-471-90413-9
    +7. Tianyu Liang, Zhize Wu, Jörg Lässig, Daan van den Berg, and Thomas Weise.
    +   Solving the Traveling Salesperson Problem using Frequency Fitness
    +   Assignment. In *Proceedings of the IEEE Symposium on Foundations of
    +   Computational Intelligence (IEEE FOCI'22),* part of the *IEEE Symposium
    +   Series on Computational Intelligence (SSCI'22),* December 4-7, 2022,
    +   Singapore. Pages 360-367. IEEE.
    +   https://doi.org/10.1109/SSCI51031.2022.10022296.
    +8. Thomas Weise, Raymond Chiong, Ke Tang, Jörg Lässig, Shigeyoshi Tsutsui,
    +   Wenxiang Chen, Zbigniew Michalewicz, and Xin Yao. Benchmarking Optimization
    +   Algorithms: An Open Source Framework for the Traveling Salesman Problem.
    +   *IEEE Computational Intelligence Magazine.* 9(3):40-52. August 2014.
    +   https://doi.org/10.1109/MCI.2014.2326101.
    +"""
    +
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from moptipy.api.objective import Objective
    +from moptipy.utils.logger import KeyValueLogSection
    +from pycommons.types import type_error
    +
    +from moptipyapps.shared import SCOPE_INSTANCE
    +from moptipyapps.tsp.instance import Instance
    +
    +
    +
    +[docs] +@numba.njit(cache=True, inline="always", fastmath=False, boundscheck=False) +def tour_length(instance: np.ndarray, x: np.ndarray) -> int: + """ + Compute the length of a tour. + + :param instance: the distance matrix + :param x: the tour + :return: the length of the tour `x` + """ + result: int = 0 + last: int = x[-1] + for cur in x: + result = result + instance[last, cur] + last = cur + return result
    + + + +
    +[docs] +class TourLength(Objective): + """The tour length objective function.""" + + def __init__(self, instance: Instance) -> None: + """ + Initialize the tour length objective function. + + :param instance: the tsp instance + """ + if not isinstance(instance, Instance): + raise type_error(instance, "instance", Instance) + #: the TSP instance we are trying to solve + self.instance: Final[Instance] = instance + +
    +[docs] + def evaluate(self, x) -> int: + """ + Compute the length of a tour in path representation. + + :param x: the tour in path representation + :return: the tour length + """ + return tour_length(self.instance, x)
    + + +
    +[docs] + def lower_bound(self) -> int: + """ + Get the lower bound of the tour length. + + :return: the lower bound of the tour length + """ + return self.instance.tour_length_lower_bound
    + + +
    +[docs] + def upper_bound(self) -> int: + """ + Get the upper bound of the tour length. + + :return: the upper bound of the tour length + """ + return self.instance.tour_length_upper_bound
    + + + def __str__(self): + """ + Get the name of this objective function: always "tourLength". + + :return: "tourLength" + :retval "tourLength": always + """ + return "tourLength" + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log the parameters of the space to the given logger. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + with logger.scope(SCOPE_INSTANCE) as kv: + self.instance.log_parameters_to(kv)
    +
    + +
    diff --git a/_modules/moptipyapps/tsp/tsplib.html b/_modules/moptipyapps/tsp/tsplib.html new file mode 100644 index 00000000..2ec92ca4 --- /dev/null +++ b/_modules/moptipyapps/tsp/tsplib.html @@ -0,0 +1,43 @@ +moptipyapps.tsp.tsplib — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.tsp.tsplib

    +"""
    +The TSPLib example data for the Traveling Salesperson Problem (TSP).
    +
    +This package does not offer anything useful except for holding the TSPLib
    +files. You can find the documentation and actual classes for solving and
    +playing around with the TSP in package :mod:`~moptipyapps.tsp`.
    +
    +The original data of TSPLib can be found at
    +<http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/>. Before doing
    +anything with these data directly, you should make sure to read the FAQ
    +<http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/TSPFAQ.html> and the
    +documentation
    +<http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/tsp95.pdf>.
    +
    +1. Gerhard Reinelt. TSPLIB - A Traveling Salesman Problem Library.
    +   *ORSA Journal on Computing* 3(4):376-384. November 1991.
    +   https://doi.org/10.1287/ijoc.3.4.376.
    +   http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/
    +2. Gerhard Reinelt. *TSPLIB95.* Heidelberg, Germany: Universität
    +   Heidelberg, Institut für Angewandte Mathematik. 1995.
    +   http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/tsp95.pdf
    +"""
    +
    +from importlib import resources  # nosem
    +from typing import TextIO, cast
    +
    +from pycommons.io.path import UTF8
    +
    +
    +
    +[docs] +def open_resource_stream(file_name: str) -> TextIO: + """ + Open a TSPLib resource stream. + + :param file_name: the file name of the resource + :return: the stream + """ + return cast(TextIO, resources.files(__package__).joinpath( + file_name).open("r", encoding=UTF8))
    + +
    diff --git a/_modules/moptipyapps/ttp/.nojekyll b/_modules/moptipyapps/ttp/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_modules/moptipyapps/ttp/errors.html b/_modules/moptipyapps/ttp/errors.html new file mode 100644 index 00000000..84c071d9 --- /dev/null +++ b/_modules/moptipyapps/ttp/errors.html @@ -0,0 +1,388 @@ +moptipyapps.ttp.errors — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.ttp.errors

    +"""
    +An objective that counts constraint violations.
    +
    +The idea is that we will probably not be able to always produce game plans
    +that adhere to all the constraints imposed by a Traveling Tournament Problem
    +:mod:`~moptipyapps.ttp` :mod:`~moptipyapps.ttp.instance`, so we will instead
    +probably usually generate game plans that may contain errors.
    +
    +We will hope that optimization can take care of this by applying this
    +objective function here to get rid of them. In the documentation of function
    +:func:`~moptipyapps.ttp.errors.count_errors`, we explain the different types
    +of errors that may occur and that are counted.
    +
    +This objective function plays thus well with encodings that produce infeasible
    +schedules, such as the very simple :mod:`~moptipyapps.ttp.game_encoding`.
    +"""
    +
    +
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from moptipy.api.objective import Objective
    +from moptipy.utils.nputils import int_range_to_dtype
    +from pycommons.types import type_error
    +
    +from moptipyapps.ttp.game_plan import GamePlan
    +from moptipyapps.ttp.instance import Instance
    +
    +
    +
    +[docs] +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False) +def count_errors(y: np.ndarray, home_streak_min: int, + home_streak_max: int, away_streak_min: int, + away_streak_max: int, separation_min: int, + separation_max: int, temp_1: np.ndarray, + temp_2: np.ndarray) -> int: + """ + Compute the number of errors in a game plan. + + This method counts the total number of the violations of any of the + following constraints over `D = (n - 1) * rounds` days for `n`-team + tournaments, where `rounds == 2` for double-round robin. The following + kinds of errors are counted: + + 1. If a team `A` plays a team `B` on a given day, then `B` must play + against `A` on that day and if `A` plays at home, then `B` must play + away. If not, then that's an error. This can result in at most + `D * n` errors, because each of the `n` teams has (at most) one game + on each of the `D` days and if the *other* team could play against + the wrong team (or does not play at all), then that's one error. + 2. If a team has no other team assigned to play with, this is designated + by value `0` and causes 1 error. This error also ends all ongoing + streaks, i.e., may additionally lead to a streak violation of at + most `max(home_streak_min, away_streak_min) - 1`. However, this + cannot be more then two errors in sum per day (minus 1, for the + first day). Also, this error is mutually exclusive with error 1. + This can result in at most `D * n + (D - 1) * n = (2*D - 1) * n` + errors. Since this error is also mutually exclusive with the errors + from constraints 3 to 8 below, this gives us an upper bound of + `(2*D - 1) * n` errors for all of the constraints (1-8) together. + 3. A team has a home streak shorter than `home_streak_min`. No such error + can occur on the first day. This error is mutually exclusive with + error 2, as the streak violation is already counted there. + This can result in at most `(D - 1) * n` errors, but this number is + shared with the following constraints (4-6), because a streak can only + either be a home streak or an away streak but not both and it can + either be too short or too long, but not both. + 4. A team has a home streak longer than `home_streak_max`. No such error + can occur on the first day. This error is mutually exclusive with + error 2. + 5. A team has an away streak shorter than `away_streak_min`. No such + error can occur on the first day. This error is mutually exclusive + with error 2, as the streak violation is already counted there. + 6. A team has an away streak longer than `away_streak_max`. No such + error can occur on the first day. This error is mutually exclusive + with error 2. + 7. Team `A` plays team `B` *again* before the team has played at least + `separation_min` games against other teams. This error cannot occur + on the first day and is mutually exclusive with error 2. + There can be most 1 such error per day for any pairing of teams and + there are `n//2` pairings per day, giving us an upper bound of + `D * n//2` errors in total. This error is mutually exclusive with + the next constraint 8 (and constraint 2). + 8. Team `A` plays team `B` *again* after the team has played more than + `separation_max` games against other teams. This error cannot occur + on the first day and is mutually exclusive with error 2. + There can be most 1 such error per day for any pairing of teams and + there are `n//2` pairings per day, giving us an upper bound of + `D * n//2` errors in total. This error is mutually exclusive with + the previous constraint 7 (and constraint 2). + 9. If team `A` plays team `B` at home `a` times, then team `B` must play + team `A` at home at least `a-1` and at most `a+1` times. + In total, we have `D*n` games. There cannot be more than `(D*n) - 1` + such errors. Notice that this kind of error can never occur if we use + our :mod:`~moptipyapps.ttp.game_encoding` as representation. + 10. Each pairing of teams occurs as same as often, namely `rounds` times, + with `rounds = 2` for double-round robin. + In total, we have `D*n` games. There cannot be more than `D*n` such + errors. Notice that this kind of error can never occur if we use + our :mod:`~moptipyapps.ttp.game_encoding` as representation. + + The violations are counted on a per-day basis. For example, if + `home_streak_max` is `3` and a team has a home streak of length `5`, then + this counts as `2` errors. However, the errors are also counted in a + non-redundant fashion: If a team `A` violates `separation_min` by, say, + two days, then this counts as two errors. However, in this case, its + opposing team `B` would have necessarily incured the exactly same + violations. These are then not counted. + + As upper bound for the number of errors, we therefore have to add those of + constraints 2, 9, and 10 and get `(2*D - 1) * n + D*n - 1 + D*n`, which + gives us `(4*D - 1) * n - 1, where `D = (n - 1) * rounds`. + The lower bound is obviously `0`. + + :param y: the game plan + :param home_streak_min: the minimum permitted home streak length + :param home_streak_max: the maximum permitted home streak length + :param away_streak_min: the minimum permitted away streak length + :param away_streak_max: the maximum permitted away streak length + :param separation_min: the minimum number of games between a repetition + :param separation_max: the maximum number games between a repetition + :param temp_1: a temporary `n*(n-1)/2` integer array, which is used to + hold, for each pairing, when the last game was played + :param temp_2: a temporary `n,n` integer array, which is used to hold, + how often each team played each other team + :returns: the total number of errors. `0` if the game plan is feasible + + >>> count_errors(np.array([[-2, 1], [2, -1]], int), + ... 1, 3, 1, 3, 1, 2, np.empty(1, int), + ... np.empty((2, 2), int)) + 1 + >>> count_errors(np.array([[2, -1], [-2, 1]], int), + ... 1, 3, 1, 3, 1, 2, np.empty(1, int), + ... np.empty((2, 2), int)) + 1 + >>> count_errors(np.array([[ 2, -1, 4, -3], + ... [ 4, 3, -2, -1], + ... [-2, 1, -4, 3], + ... [-4, -3, 2, 1], + ... [ 3, 4, -1, -2], + ... [-3, -4, 1, 2]], int), + ... 1, 3, 1, 3, 1, 2, np.empty(6, int), + ... np.empty((4, 4), int)) + 2 + >>> count_errors(np.array([[ 2, -1, 4, -3], + ... [ 4, 3, -2, -1], + ... [-2, 1, -4, 3], + ... [ 3, 4, -1, -2], + ... [-4, -3, 2, 1], + ... [-3, -4, 1, 2]], int), + ... 1, 3, 1, 3, 1, 2, np.empty(6, int), + ... np.empty((4, 4), int)) + 0 + >>> count_errors(np.array([[ 2, -1, 4, -3], + ... [ 4, 3, -2, -1], + ... [ 3, 4, -1, -2], + ... [-2, 1, -4, 3], + ... [-4, -3, 2, 1], + ... [-3, -4, 1, 2]], int), + ... 1, 3, 1, 3, 1, 2, np.empty(6, int), + ... np.empty((4, 4), int)) + 0 + >>> count_errors(np.array([[ 2, -1, 4, -3], + ... [ 4, 3, -2, -1], + ... [ 3, 4, -1, -2], + ... [-2, 1, -4, 3], + ... [-4, -3, 2, 1], + ... [-3, -4, 1, 2]], int), + ... 1, 2, 1, 3, 1, 2, np.empty(6, int), + ... np.empty((4, 4), int)) + 3 + >>> count_errors(np.array([[ 2, -1, 4, -3], + ... [ 4, 3, -2, -1], + ... [ 3, 4, -1, -2], + ... [-2, 1, -4, 3], + ... [-4, -3, 2, 1], + ... [-3, -4, 1, 2]], int), + ... 1, 2, 1, 2, 1, 2, np.empty(6, int), + ... np.empty((4, 4), int)) + 6 + >>> count_errors(np.array([[ 2, -1, 4, -3], + ... [ 4, 3, -2, -1], + ... [ 3, 4, -1, -2], + ... [-2, 1, -4, 3], + ... [-4, -3, 2, 1], + ... [-3, -4, 1, 2]], int), + ... 1, 3, 1, 3, 1, 1, np.empty(6, int), + ... np.empty((4, 4), int)) + 6 + """ + days, teams = y.shape # get the number of days and teams + errors: int = 0 # the error counter + temp_1.fill(-1) # last time the teams played each other + temp_2.fill(0) + for team_1 in range(teams): + col = y[:, team_1] + team_1_id: int = team_1 + 1 + is_in_home_streak: bool = False + home_streak_len: int = -1 + is_in_away_streak: bool = False + away_streak_len: int = -1 + + for day, team_2_id in enumerate(col): + if team_2_id == 0: # is there no game on this day? + errors += 1 # no game on this day == 1 error + + if is_in_away_streak: # this ends away streaks + is_in_away_streak = False + if away_streak_len < away_streak_min: + errors += (away_streak_min - away_streak_len) + away_streak_len = -1 + elif is_in_home_streak: # this ends home streaks, too + is_in_home_streak = False + if home_streak_len < home_streak_min: + errors += (home_streak_min - home_streak_len) + home_streak_len = -1 + continue # nothing more to do here + + if team_2_id > 0: # our team plays a home game + + # If team_2 > 0, this is a home game. So the other team + # must have the corresponding index. + team_2 = team_2_id - 1 + if y[day, team_2] != -team_1_id: + errors += 1 + # increase number of home games of team 1 against team 2 + temp_2[team_1, team_2] += 1 + + if is_in_home_streak: # if we are in a home streak... + home_streak_len += 1 # ...it continues + if home_streak_len > home_streak_max: + errors += 1 # too long? add to errors + else: # if we are not in home streak, it begins + is_in_home_streak = True + home_streak_len = 1 + # if a home streak begins, any away streak ends + if is_in_away_streak: + if away_streak_len < away_streak_min: + errors += (away_streak_min - away_streak_len) + away_streak_len = -1 + is_in_away_streak = False + else: # else: team_2 < 0 --> team_2 at home, team_1 away + team_2 = (-team_2_id) - 1 + + # This is an away game, so the other team must have the + # corresponding id + if y[day, team_2] != team_1_id: + errors += 1 + + if is_in_away_streak: # if we are in an away streak... + away_streak_len += 1 # ...the streak continues + if away_streak_len > away_streak_max: + errors += 1 # away streak too long? add to error + else: # team_1 away, but not in away streak + is_in_away_streak = True + away_streak_len = 1 + if is_in_home_streak: + if home_streak_len < home_streak_min: + errors += (home_streak_min - home_streak_len) + is_in_home_streak = False + home_streak_len = 0 + + # now we need to check for the game separation difference + idx: int = ((team_1 * (team_1 - 1) // 2) + team_2) \ + if team_1 > team_2 \ + else ((team_2 * (team_2 - 1) // 2) + team_1) + last_time: int = temp_1[idx] + if last_time >= 0: + if last_time < day: + difference = day - last_time - 1 + if difference < separation_min: + errors += (separation_min - difference) + elif difference > separation_max: + errors += (difference - separation_max) + else: + continue + temp_1[idx] = day + + # sum up the team games + games_per_combo: Final[int] = days // (teams - 1) + for i in range(teams): + for j in range(i): + ij = temp_2[i, j] + ji = temp_2[j, i] + errors += abs(ij + ji - games_per_combo) + diff = abs(ij - ji) + if diff > 1: + errors += diff - 1 + + return int(errors)
    + + + +
    +[docs] +class Errors(Objective): + """ + Compute the errors in a game plan. + + This objective function encompasses all the constraints imposed on + standard TTP instances in one summarizing number. See the documentation + of :func:`count_errors` for more information. + """ + + def __init__(self, instance: Instance) -> None: + """ + Initialize the errors objective function. + + :param instance: the TTP instance + """ + if not isinstance(instance, Instance): + raise type_error(instance, "instance", Instance) + super().__init__() + + #: the TTP instance + self.instance: Final[Instance] = instance + n: Final[int] = instance.n_cities + # the data type for the temporary arrays + dtype: Final[np.dtype] = int_range_to_dtype( + -1, (n - 1) * instance.rounds) + #: the internal temporary array 1 + self.__temp_1: Final[np.ndarray] = np.empty(n * (n - 1) // 2, dtype) + #: the internal temporary array 2 + self.__temp_2: Final[np.ndarray] = np.empty((n, n), dtype) + +
    +[docs] + def evaluate(self, x: GamePlan) -> int: + """ + Count the errors in a game plan as objective value. + + :param x: the game plan + :return: the number of errors in the plan + """ + inst: Final[Instance] = x.instance + return count_errors(x, inst.home_streak_min, inst.home_streak_max, + inst.away_streak_min, inst.away_streak_max, + inst.separation_min, inst.separation_max, + self.__temp_1, self.__temp_2)
    + + +
    +[docs] + def lower_bound(self) -> int: + """ + Obtain the lower bound for errors: `0`, which means error-free. + + :return: `0` + """ + return 0
    + + +
    +[docs] + def upper_bound(self) -> int: + """ + Compute upper bound for errors: `(4*D - 1) * n - 1`. + + Here `D` is the number of days, `n` is the number of teams, and + `D = (n - 1) * rounds`. See the documentation of :func:`count_errors`. + + :return: `(4*D - 1) * n - 1` + """ + n: Final[int] = self.instance.n_cities + rounds: Final[int] = self.instance.rounds + days: Final[int] = (n - 1) * rounds + return (4 * days - 1) * n - 1
    + + +
    +[docs] + def is_always_integer(self) -> bool: + """ + State that this objective function is always integer-valued. + + :return: `True` + """ + return True
    + + + def __str__(self) -> str: + """Get the name of this objective function.""" + return "errors"
    + +
    diff --git a/_modules/moptipyapps/ttp/game_encoding.html b/_modules/moptipyapps/ttp/game_encoding.html new file mode 100644 index 00000000..c87f71ee --- /dev/null +++ b/_modules/moptipyapps/ttp/game_encoding.html @@ -0,0 +1,245 @@ +moptipyapps.ttp.game_encoding — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.ttp.game_encoding

    +"""
    +A permutation-with-repetition-based encoding based on games.
    +
    +A point in the search space is a permutation (potentially with repetitions)
    +that can be translated to a :class:`~moptipyapps.ttp.game_plan.GamePlan`.
    +Each value `v` in the permutation represents a game to be played by two of
    +the `n` teams. There are `n(n-1)` possible games between `n` teams,
    +distinguishing home and away teams. Given a value `v` from `0..n(n-1)-1`,
    +we can get the zero-based index of the home team as
    +`home_idx = (game // (n - 1)) % n`. The away index is computed in two steps,
    +first we set `away_idx = game % (n - 1)` and if `away_idx >= home_idx`, we
    +do `away_idx = away_idy + 1`. (Because a team can never play against itself,
    +the situation that `home_idx == away_idx` does not need to be represented, so
    +we can "skip" over this possible value by doing the `away_idx = away_idy + 1`
    +and thus get a more "compact" numeric range for the permutation elements.)
    +
    +A game schedule for any round-robin tournament with any given number of rounds
    +can then be represented as permutation (potentially with repetitions) of these
    +game values. In the decoding procedure, it is processed from beginning to end
    +each game is then placed into the earliest slot not already occupied by
    +another game. In other words, it is placed at the earliest day at which both
    +involved teams do not yet have other games. If no such slot is available, this
    +game is not placed at all. In this case, there will be some zeros in the game
    +plan after the encoding. No other constraint is considered at this stage.
    +
    +In other words, this encoding may produce game plans that violate constraints.
    +It does not care about the streak length constraints.
    +It does not ensure that each team always has a game.
    +Therefore, it should only be used in conjunction with objective functions that
    +force the search towards feasible solutions, such as the
    +:mod:`~moptipyapps.ttp.errors` objective.
    +"""
    +
    +
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from moptipy.api.encoding import Encoding
    +from moptipy.spaces.permutations import Permutations
    +from pycommons.types import check_int_range
    +
    +from moptipyapps.ttp.instance import Instance
    +
    +
    +
    +[docs] +def search_space_for_n_and_rounds(n: int, rounds: int) -> Permutations: + """ + Create a proper search space for the given number of teams and rounds. + + If the instance prescribes a double-round robin tournament, then this + is just the :meth:`~moptipy.spaces.permutations.Permutations.standard` + permutations set. Otherwise, it will be a permutation where some + elements are omitted (for + :attr:`~moptipyapps.ttp.instance.Instance.rounds` == 1) or duplicated + (if :attr:`~moptipyapps.ttp.instance.Instance.rounds` > 2). + + If an odd number of rounds is played, then it is not possible that all + teams have the same number of games at home and away. Then, the + permutation is generated such that, if the highest numbers of games at + home for any team is `k`, no other team has less than `k - 1` games at + home. If the number of rounds is even, then all teams will have the + same number of home and away games, that is, the number of teams + divided by two and multiplied by the number of rounds. + + :param n: the number of teams + :param rounds: the number of rounds + :return: the search space + + >>> ";".join(map(str, search_space_for_n_and_rounds(2, 2).blueprint)) + '0;1' + >>> ";".join(map(str, search_space_for_n_and_rounds(2, 3).blueprint)) + '0;1;1' + >>> ";".join(map(str, search_space_for_n_and_rounds(2, 4).blueprint)) + '0;0;1;1' + >>> ";".join(map(str, search_space_for_n_and_rounds(2, 5).blueprint)) + '0;0;1;1;1' + >>> ";".join(map(str, search_space_for_n_and_rounds(3, 1).blueprint)) + '1;2;5' + >>> ";".join(map(str, search_space_for_n_and_rounds(3, 2).blueprint)) + '0;1;2;3;4;5' + >>> ";".join(map(str, search_space_for_n_and_rounds(3, 3).blueprint)) + '0;1;1;2;2;3;4;5;5' + >>> ";".join(map(str, search_space_for_n_and_rounds(4, 1).blueprint)) + '1;2;3;7;8;10' + >>> ";".join(map(str, search_space_for_n_and_rounds(4, 2).blueprint)) + '0;1;2;3;4;5;6;7;8;9;10;11' + >>> ";".join(map(str, search_space_for_n_and_rounds(4, 3).blueprint)) + '0;1;1;2;2;3;3;4;5;6;7;7;8;8;9;10;10;11' + >>> ";".join(map(str, search_space_for_n_and_rounds(4, 4).blueprint)) + '0;0;1;1;2;2;3;3;4;4;5;5;6;6;7;7;8;8;9;9;10;10;11;11' + >>> ";".join(map(str, search_space_for_n_and_rounds(4, 5).blueprint)) + '0;0;1;1;1;2;2;2;3;3;3;4;4;5;5;6;6;7;7;7;8;8;8;9;9;10;10;10;11;11' + >>> ";".join(map(str, search_space_for_n_and_rounds(5, 1).blueprint)) + '1;2;4;7;9;10;13;15;16;18' + >>> ";".join(map(str, search_space_for_n_and_rounds(5, 2).blueprint)) + '0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19' + >>> ";".join(map(str, search_space_for_n_and_rounds(5, 3).blueprint)) + '0;1;1;2;2;3;4;4;5;6;7;7;8;9;9;10;10;11;12;13;13;14;15;15;16;16;17;18;\ +18;19' + """ + check_int_range(n, "n", 2, 100000) + check_int_range(n, "rounds", 1, 100000) + div: Final[int] = n - 1 + games: Final[list[int]] = [] + order: bool = False + for r in range(rounds): + # If we have an odd round of games, the very last round needs + # to be treated differently to ensure that the home-away games + # distribution is fair. + normal: bool = (r < (rounds - 1)) or ((rounds % 2) == 0) + for i in range(n): # for each city + for j in range(i): # for each other city + order = ((r % 2) == 0) if normal else (not order) + m1 = i if order else j # determine home city + m2 = j if order else i # determine away city + if m2 > m1: + m2 -= 1 + games.append(m1 * div + m2) # add encoded game tuple + games.sort() + return Permutations(games) # create permutations with repetition
    + + + +
    +[docs] +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False) +def map_games(x: np.ndarray, y: np.ndarray) -> None: + """ + Translate a permutation of games to a game plan. + + This is a straightforward decoding that places the games into the map one + by one. Each game is placed at the earliest slot in which it can be + placed. If a game cannot be placed, it is ignored. This will lead to many + errors, which can be counted via the :mod:`~moptipyapps.ttp.errors` + objective. + + :param x: the source permutation + :param y: the destination game plan + + >>> from moptipy.utils.nputils import int_range_to_dtype + >>> teams = 2 + >>> rounds = 2 + >>> perm = search_space_for_n_and_rounds(teams, rounds).blueprint + >>> dest = np.empty((rounds * (teams - 1), teams), + ... int_range_to_dtype(-teams, teams)) + >>> map_games(perm, dest) + >>> print(dest) + [[ 2 -1] + [-2 1]] + >>> teams = 4 + >>> rounds = 2 + >>> perm = search_space_for_n_and_rounds(teams, rounds).blueprint + >>> dest = np.empty((rounds * (teams - 1), teams), + ... int_range_to_dtype(-teams, teams)) + >>> map_games(perm, dest) + >>> print(dest) + [[ 2 -1 4 -3] + [ 3 4 -1 -2] + [ 4 3 -2 -1] + [-2 1 -4 3] + [-3 -4 1 2] + [-4 -3 2 1]] + """ + y.fill(0) # first zero the output matrix + days, n = y.shape # the number of days and teams to be scheduled + div: Final[int] = n - 1 # the divisor for permutation values -> teams + + for game in x: + home_idx: int = (game // div) % n # home idx is in 0..n-1 + away_idx: int = game % div # away index in 0..n-2 + if away_idx >= home_idx: # "A vs. A" games impossible + away_idx += 1 # away index in 0..n-1, but != home_idx + + for day in range(days): # iterate over all possible rows for game + if (y[day, home_idx] != 0) or (y[day, away_idx] != 0): + continue # day already blocked + y[day, home_idx] = away_idx + 1 + y[day, away_idx] = -(home_idx + 1) + break
    + + + +
    +[docs] +class GameEncoding(Encoding): + """An encoding that transforms strings of games to game plans.""" + + def __init__(self, instance: Instance) -> None: + """ + Create the game-based encoding. + + :param instance: the instance + """ + super().__init__() + #: the instance + self.instance: Final[Instance] = instance + self.decode = map_games # type: ignore + +
    +[docs] + def search_space(self) -> Permutations: + """ + Create a proper search space for this game-based encoding. + + The search space is a set of :mod:`~moptipy.spaces.permutations` that + represents all the games that can take place in the tournament. + Depending on the number of + :attr:`~moptipyapps.ttp.instance.Instance.rounds` in the tournament, + some games may appear multiple times. Home and away games are + distributed in a fair and deterministic mannner between the teams. + + :return: the search space + + >>> inst = Instance.from_resource("circ4") + >>> inst.n_cities + 4 + >>> inst.rounds + 2 + >>> ";".join(map(str, GameEncoding(inst).search_space().blueprint)) + '0;1;2;3;4;5;6;7;8;9;10;11' + >>> inst = Instance(inst.name, inst, inst.teams, inst.rounds, + ... inst.home_streak_min, inst.home_streak_max, + ... inst.away_streak_min, inst.away_streak_max, + ... inst.separation_min, inst.separation_max) + >>> inst.rounds = 1 # modify number of rounds for copied instance + >>> ";".join(map(str, GameEncoding(inst).search_space().blueprint)) + '1;2;3;7;8;10' + >>> inst.rounds = 3 # modify number of rounds for copied instance + >>> ";".join(map(str, GameEncoding(inst).search_space().blueprint)) + '0;1;1;2;2;3;3;4;5;6;7;7;8;8;9;10;10;11' + >>> inst.rounds = 4 # modify number of rounds for copied instance + >>> ";".join(map(str, GameEncoding(inst).search_space().blueprint)) + '0;0;1;1;2;2;3;3;4;4;5;5;6;6;7;7;8;8;9;9;10;10;11;11' + >>> inst.rounds = 5 # modify number of rounds for copied instance + >>> ";".join(map(str, GameEncoding(inst).search_space().blueprint)) + '0;0;1;1;1;2;2;2;3;3;3;4;4;5;5;6;6;7;7;7;8;8;8;9;9;10;10;10;11;11' + """ + return search_space_for_n_and_rounds( + self.instance.n_cities, self.instance.rounds)
    +
    + +
    diff --git a/_modules/moptipyapps/ttp/game_plan.html b/_modules/moptipyapps/ttp/game_plan.html new file mode 100644 index 00000000..60ea1c07 --- /dev/null +++ b/_modules/moptipyapps/ttp/game_plan.html @@ -0,0 +1,125 @@ +moptipyapps.ttp.game_plan — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.ttp.game_plan

    +"""
    +A game plan assigns teams to games.
    +
    +A game plan is a two-dimensional matrix `G`. The rows are the time slots.
    +There is one column for each time. If `G` has value `v` at row `i` and
    +column `j`, then this means:
    +
    +- at the time slot `i` ...
    +- the team with name `j+1` plays
    +    + no team if `v == 0`,
    +    + *at home* against the team `v` if `v > 0`, i.e., team `v` travels
    +      to the home stadium of team `j+1`
    +    + *away* against the team `-v` if `v < 0`, i.e., team `j+1` travels
    +      to the home stadium of team `-v` and plays against them there
    +
    +Indices in matrices are zero-based, i.e., the lowest index for a row `i` is
    +`0` and the lowest index for a column `j` is also `0`. However, team names
    +are one-based, i.e., that with `1`. Therefore, we need to translate the
    +zero-based column index `j` to a team name by adding `1` to it.
    +
    +This is just a numerical variant of the game plan representation given at
    +<https://robinxval.ugent.be/RobinX/travelRepo.php>. Indeed, the `str(...)`
    +representation of a game plan is exactly the table shown there.
    +
    +Of course, if `G[i, j] = v`, then `G[i, v - 1] = -(j + 1)` should hold if
    +`v > 0`, for example. Vice versa, if `v < 0` and `G[i, j] = v`, then
    +`G[i, (-v) - 1] = j + 1` should hold. Such constraints are checked by the
    +:mod:`~moptipyapps.ttp.errors` objective function.
    +
    +The corresponding space implementation,
    +:mod:`~moptipyapps.ttp.game_plan_space`, offers the functionality to convert
    +strings to game plans as well as to instantiate them in a black-box algorithm.
    +"""
    +
    +from io import StringIO
    +from typing import Final
    +
    +import numpy as np
    +from moptipy.api.component import Component
    +from moptipy.utils.logger import CSV_SEPARATOR
    +from pycommons.types import type_error
    +
    +from moptipyapps.ttp.instance import Instance
    +
    +
    +
    +[docs] +class GamePlan(Component, np.ndarray): + """A game plan, i.e., a solution to the Traveling Tournament Problem.""" + + #: the TTP instance + instance: Instance + + def __new__(cls, instance: Instance) -> "GamePlan": + """ + Create a solution record for the Traveling Tournament Problem. + + :param cls: the class + :param instance: the solution record + """ + if not isinstance(instance, Instance): + raise type_error(instance, "instance", Instance) + + n: Final[int] = instance.n_cities # the number of teams + # each team plays every other team 'rounds' times + n_days: Final[int] = (n - 1) * instance.rounds + obj: Final[GamePlan] = super().__new__( + cls, (n_days, n), instance.game_plan_dtype) + #: the TTP instance + obj.instance = instance + return obj + + def __str__(self): + """ + Convert the game plan to a compact string. + + The first line of the output is a flattened version of this matrix + with the values being separated by `;`. Then we place an empty line. + + We then put a more easy-to-read representation and follow the pattern + given at https://robinxval.ugent.be/RobinX/travelRepo.php, which is + based upon the notation by Easton et al. Here, first, a row with the + team names separated by spaces is generated. Then, each row contains + the opponents of these teams, again separated by spaces. If an + opponent plays at their home, this is denoted by an `@`. + If a team has no scheduled opponent, then this is denoted as `-`. + + :return: the compact string + """ + csv: Final[str] = CSV_SEPARATOR + sep: str = "" + teams: Final[tuple[str, ...]] = self.instance.teams + len(teams) + + with StringIO() as sio: + for k in self.flatten(): + sio.write(sep) + sio.write(str(k)) + sep = csv + + sio.write("\n\n") + + sep = "" + for t in teams: + sio.write(sep) + sio.write(t) + sep = " " + + for row in self: + sio.write("\n") + sep = "" + for d in row: + sio.write(sep) + if d < 0: + sio.write(f"@{teams[-d - 1]}") + elif d > 0: + sio.write(teams[d - 1]) + else: + sio.write("-") + sep = " " + + return sio.getvalue()
    + +
    diff --git a/_modules/moptipyapps/ttp/game_plan_space.html b/_modules/moptipyapps/ttp/game_plan_space.html new file mode 100644 index 00000000..fccb82ee --- /dev/null +++ b/_modules/moptipyapps/ttp/game_plan_space.html @@ -0,0 +1,231 @@ +moptipyapps.ttp.game_plan_space — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.ttp.game_plan_space

    +"""
    +Here we provide a :class:`~moptipy.api.space.Space` of bin game plans.
    +
    +The bin game plans object is defined in module
    +:mod:`~moptipyapps.ttp.game_plan`. Basically, it is a
    +two-dimensional numpy array holding, for each day (or time slot) for each team
    +the opposing team.
    +"""
    +from typing import Final
    +
    +import numpy as np
    +from moptipy.api.space import Space
    +from moptipy.utils.logger import CSV_SEPARATOR, KeyValueLogSection
    +from pycommons.types import type_error
    +
    +from moptipyapps.shared import SCOPE_INSTANCE
    +from moptipyapps.ttp.game_plan import GamePlan
    +from moptipyapps.ttp.instance import Instance
    +
    +
    +
    +[docs] +class GamePlanSpace(Space): + """An implementation of the `Space` API of for game plans.""" + + def __init__(self, instance: Instance) -> None: + """ + Create a 2D packing space. + + :param instance: the 2d bin packing instance + + >>> inst = Instance.from_resource("circ4") + >>> space = GamePlanSpace(inst) + >>> space.instance is inst + True + """ + if not isinstance(instance, Instance): + raise type_error(instance, "instance", Instance) + #: The instance to which the packings apply. + self.instance: Final[Instance] = instance + self.copy = np.copyto # type: ignore + self.to_str = GamePlan.__str__ # type: ignore + +
    +[docs] + def create(self) -> GamePlan: + """ + Create a game plan without assigning items to locations. + + :return: the (empty, uninitialized) packing object + + >>> inst = Instance.from_resource("circ8") + >>> space = GamePlanSpace(inst) + >>> x = space.create() + >>> print(inst.rounds) + 2 + >>> print(inst.n_cities) + 8 + >>> x.shape + (14, 8) + >>> x.instance is inst + True + >>> type(x) + <class 'moptipyapps.ttp.game_plan.GamePlan'> + """ + return GamePlan(self.instance)
    + + +
    +[docs] + def is_equal(self, x1: GamePlan, x2: GamePlan) -> bool: + """ + Check if two bin game plans have the same contents. + + :param x1: the first game plan + :param x2: the second game plan + :return: `True` if both game plans are for the same instance and have + the same structure + + >>> inst = Instance.from_resource("circ4") + >>> space = GamePlanSpace(inst) + >>> y1 = space.create() + >>> y1.fill(0) + >>> y2 = space.create() + >>> y2.fill(0) + >>> space.is_equal(y1, y2) + True + >>> y1 is y2 + False + >>> y1[0, 0] = 1 + >>> space.is_equal(y1, y2) + False + """ + return (x1.instance is x2.instance) and np.array_equal(x1, x2)
    + + +
    +[docs] + def from_str(self, text: str) -> GamePlan: + """ + Convert a string to a packing. + + :param text: the string + :return: the packing + + >>> inst = Instance.from_resource("circ6") + >>> space = GamePlanSpace(inst) + >>> y1 = space.create() + >>> y1.fill(0) + >>> y2 = space.from_str(space.to_str(y1)) + >>> space.is_equal(y1, y2) + True + >>> y1 is y2 + False + """ + if not isinstance(text, str): + raise type_error(text, "packing text", str) + + # we only want the very first line + text = text.lstrip() + lb: int = text.find("\n") + if lb > 0: + text = text[:lb].rstrip() + + x: Final[GamePlan] = self.create() + np.copyto(x, np.fromstring(text, dtype=x.dtype, sep=CSV_SEPARATOR) + .reshape(x.shape)) + self.validate(x) + return x
    + + +
    +[docs] + def validate(self, x: GamePlan) -> None: + """ + Check if a game plan is an instance of the right object. + + This method performs a superficial feasibility check, as in the TTP, + we try to find feasible game plans and may have infeasible ones. All + we check here is that the object is of the right type and dimensions + and that it does not contain some out-of-bounds value. + + :param x: the game plan + :raises TypeError: if any component of the game plan is of the wrong + type + :raises ValueError: if the game plan is not feasible + """ + if not isinstance(x, GamePlan): + raise type_error(x, "x", GamePlan) + inst: Final[Instance] = self.instance + if inst is not x.instance: + raise ValueError( + f"x.instance must be {inst} but is {x.instance}.") + if inst.game_plan_dtype is not x.dtype: + raise ValueError(f"inst.game_plan_dtype = {inst.game_plan_dtype}" + f" but x.dtype={x.dtype}") + + n: Final[int] = inst.n_cities # the number of teams + # each team plays every other team 'rounds' times + n_days: Final[int] = (n - 1) * inst.rounds + + needed_shape: Final[tuple[int, int]] = (n_days, n) + if x.shape != needed_shape: + raise ValueError(f"x.shape={x.shape}, but must be {needed_shape}.") + min_id: Final[int] = -n + + for i in range(n_days): + for j in range(n): + v = x[i, j] + if not (min_id <= v <= n): + raise ValueError(f"value {v} at x[{i}, {j}] should be in " + f"{min_id}...{n}, but is not.")
    + + +
    +[docs] + def n_points(self) -> int: + """ + Get the number of game plans. + + The values in a game plan go from `-n..n`, including zero, and we have + `days*n` values. This gives `(2n + 1) ** (days * n)`, where `days` + equals `(n - 1) * rounds` and `rounds` is the number of rounds. In + total, this gives `(2n + 1) ** ((n - 1) * rounds * n)`. + + :return: the number of possible game plans + + >>> space = GamePlanSpace(Instance.from_resource("circ6")) + >>> print((2 * 6 + 1) ** ((6 - 1) * 2 * 6)) + 6864377172744689378196133203444067624537070830997366604446306636401 + >>> space.n_points() + 6864377172744689378196133203444067624537070830997366604446306636401 + >>> space = GamePlanSpace(Instance.from_resource("circ4")) + >>> space.n_points() + 79766443076872509863361 + >>> print((2 * 4 + 1) ** ((4 - 1) * 2 * 4)) + 79766443076872509863361 + """ + inst: Final[Instance] = self.instance + n: Final[int] = inst.n_cities + n_days: Final[int] = (n - 1) * inst.rounds + total_values: Final[int] = 2 * n + 1 + return total_values ** (n_days * n)
    + + + def __str__(self) -> str: + """ + Get the name of the game plan space. + + :return: the name, simply `gp_` + the instance name + + >>> print(GamePlanSpace(Instance.from_resource("bra24"))) + gp_bra24 + """ + return f"gp_{self.instance}" + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log the parameters of the space to the given logger. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + with logger.scope(SCOPE_INSTANCE) as kv: + self.instance.log_parameters_to(kv)
    +
    + +
    diff --git a/_modules/moptipyapps/ttp/instance.html b/_modules/moptipyapps/ttp/instance.html new file mode 100644 index 00000000..4f9ee8c0 --- /dev/null +++ b/_modules/moptipyapps/ttp/instance.html @@ -0,0 +1,568 @@ +moptipyapps.ttp.instance — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.ttp.instance

    +"""
    +An instance of the Traveling Tournament Problem (TTP).
    +
    +The Traveling Tournament Problem (TTP) describes the logistics of a sports
    +league. In this league, `n` teams compete. In each time slot, each team plays
    +against one other team. In each game, one team plays at home and one team
    +plays away with the other team. In each round, every team plays once against
    +every other team. The league may have multiple :attr:`~moptipyapps.ttp.\
    +instance.Instance.rounds`. If there are two rounds, then each team plays
    +against each other team once at home and once abroad. If a team plays at home
    +(or abroad) several times in a row, this is called a "streak". There are
    +minimum and maximum streak length constraints defined, for both at home and
    +abroad. Additionally, if team A plays a team B in one time slot, then the
    +exact inverse game cannot take place in the next time slot. A minimum
    +number of games must take place in between for separation. There can also be
    +a maximum separation length.
    +
    +David Van Bulck of the Sports Scheduling Research group, part of the
    +Faculty of Economics and Business Administration at Ghent University, Belgium,
    +maintains "RobinX: An XML-driven Classification for Round-Robin Sports
    +Timetabling", a set of benchmark data instances and results of the TTP.
    +We provide some of these instances as resources here. You can also download
    +them directly at <https://robinxval.ugent.be/RobinX/travelRepo.php>. Also,
    +see <https://robinxval.ugent.be/> for more information.
    +
    +1. David Van Bulck. Minimum Travel Objective Repository. *RobinX: An
    +   XML-driven Classification for Round-Robin Sports Timetabling.* Faculty of
    +   Economics and Business Administration at Ghent University, Belgium.
    +   https://robinxval.ugent.be/
    +2. Kelly Easton, George L. Nemhauser, and Michael K. Trick. The Traveling
    +   Tournament Problem Description and Benchmarks. In *Principles and Practice
    +   of Constraint Programming (CP'01),*  November 26 - December 1, 2001, Paphos,
    +   Cyprus, pages 580-584, Berlin/Heidelberg, Germany: Springer.
    +   ISBN: 978-3-540-42863-3. https://doi.org/10.1007/3-540-45578-7_43
    +   https://www.researchgate.net/publication/220270875
    +"""
    +
    +from typing import Callable, Final, Iterable, TextIO, cast
    +
    +import numpy as np
    +from defusedxml import ElementTree  # type: ignore
    +from moptipy.utils.logger import KeyValueLogSection
    +from moptipy.utils.nputils import DEFAULT_INT, int_range_to_dtype
    +from moptipy.utils.strings import sanitize_name
    +from pycommons.io.path import Path, file_path
    +from pycommons.types import check_int_range, check_to_int_range, type_error
    +
    +from moptipyapps.tsp.instance import Instance as TSPInstance
    +from moptipyapps.ttp.robinx import open_resource_stream
    +
    +
    +def _from_stream(stream: TextIO) -> "Instance":
    +    """
    +    Read a TTP instance from an `robinxval.ugent.be`-formatted XML file.
    +
    +    This procedure ignores most of the data in the file and only focuses on
    +    the instance name, the team names, and the distance matrix as well as the
    +    constraints for home streak length, away streak length, and same-game
    +    separations. Everything else is ignored.
    +
    +    :param stream: the text stream
    +    :return: the instance
    +    """
    +    used_names: set[str] = set()
    +    team_names: dict[int, str] = {}
    +    distances: dict[tuple[int, int], int] = {}
    +    name: str | None = None
    +    rounds: int | None = None
    +    home_streak_min: int | None = None
    +    home_streak_max: int | None = None
    +    away_streak_min: int | None = None
    +    away_streak_max: int | None = None
    +    separation_min: int | None = None
    +    separation_max: int | None = None
    +
    +    for _event, element in ElementTree.iterparse(stream, forbid_dtd=True,
    +                                                 forbid_entities=True,
    +                                                 forbid_external=True):
    +        if element.tag is None:
    +            continue
    +        tag: str = element.tag.strip().lower()
    +        if tag == "instancename":
    +            if name is None:
    +                name = sanitize_name(element.text).lower()
    +                if name in used_names:
    +                    raise ValueError(
    +                        f"name {element.text!r} invalid, as it "
    +                        f"maps to {name!r}, which is already used.")
    +                used_names.add(name)
    +            else:
    +                raise ValueError(f"already got name={name!r}, but tag "
    +                                 f"'InstanceName' appears again?")
    +        elif tag == "distance":
    +            t1: int = check_to_int_range(element.attrib["team1"],
    +                                         "team1", 0, 1_000_000)
    +            t2: int = check_to_int_range(element.attrib["team2"],
    +                                         "team2", 0, 1_000_000)
    +            dst: int = check_to_int_range(
    +                element.attrib["dist"], "dist", 0, 1_000_000_000_000)
    +            if t1 == t2:
    +                if dst == 0:
    +                    continue
    +                raise ValueError(f"distance for team1={t1}, team2={t2} is"
    +                                 f" {dst} but must be 0.")
    +            tpl: tuple[int, int] = (t1, t2)
    +            if tpl in distances:
    +                raise ValueError(
    +                    f"got distance={dst} for {tpl!r}, but "
    +                    f"{distances[tpl]} was already specified before")
    +            distances[tpl] = dst
    +        elif element.tag == "team":
    +            team: int = check_to_int_range(element.attrib["id"], "id",
    +                                           0, 1_000_000)
    +            nn: str = element.attrib["name"]
    +            tname: str = nn.strip()
    +            if tname in used_names:
    +                raise ValueError(f"name {nn!r} is invalid, as it maps to "
    +                                 f"{tname!r}, which is already used.")
    +            used_names.add(tname)
    +            team_names[team] = tname
    +        elif element.tag == "numberroundrobin":
    +            if rounds is not None:
    +                raise ValueError(f"rounds already set to {rounds}")
    +            rounds = check_to_int_range(element.text, "rounds", 1, 1000)
    +        elif tag == "ca3":
    +            if "mode1" not in element.attrib:
    +                continue
    +            if "mode2" not in element.attrib:
    +                continue
    +            if element.attrib["mode2"].lower() != "games":
    +                continue
    +            mode = element.attrib["mode1"].lower()
    +            mi = check_to_int_range(
    +                element.attrib["min"], "min", 0, 1_000_000) \
    +                if "min" in element.attrib else None
    +            ma = check_to_int_range(
    +                element.attrib["max"], "max", 1, 1_000_000) \
    +                if "max" in element.attrib else None
    +            if mode == "h":
    +                if mi is not None:
    +                    if home_streak_min is not None:
    +                        raise ValueError("minimum home streak already defined")
    +                    home_streak_min = max(mi, 1)
    +                if ma is not None:
    +                    if home_streak_max is not None:
    +                        raise ValueError("maximum home streak already defined")
    +                    home_streak_max = ma
    +            elif mode == "a":
    +                if mi is not None:
    +                    if away_streak_min is not None:
    +                        raise ValueError("minimum away streak already defined")
    +                    away_streak_min = max(mi, 1)
    +                if ma is not None:
    +                    if away_streak_max is not None:
    +                        raise ValueError("maximum away streak already defined")
    +                    away_streak_max = ma
    +        elif tag == "se1":
    +            mi = check_to_int_range(
    +                element.attrib["min"], "min", 0, 1_000_000) \
    +                if "min" in element.attrib else None
    +            ma = check_to_int_range(
    +                element.attrib["max"], "max", 0, 1_000_000) \
    +                if "max" in element.attrib else None
    +            if mi is not None:
    +                if separation_min is not None:
    +                    raise ValueError("minimum separation already defined")
    +                separation_min = mi
    +            if ma is not None:
    +                if separation_max is not None:
    +                    raise ValueError("maximum separation already defined")
    +                separation_max = ma
    +
    +    if name is None:
    +        raise ValueError("did not find instance name")
    +    n_teams: Final[int] = len(team_names)
    +    if n_teams <= 0:
    +        raise ValueError("did not find any team name")
    +    if len(used_names) != (n_teams + 1):
    +        raise ValueError(f"set of used names {used_names!r} has wrong "
    +                         f"length, should be {n_teams + 1}.")
    +    dm: np.ndarray = np.zeros((n_teams, n_teams), DEFAULT_INT)
    +    for tup, dst in distances.items():
    +        dm[tup[0], tup[1]] = dst
    +
    +    if rounds is None:
    +        rounds = 2
    +    ll: Final[int] = rounds * n_teams - 1
    +    if home_streak_min is None:
    +        home_streak_min = 1
    +    if home_streak_max is None:
    +        home_streak_max = min(max(home_streak_min, 3), ll)
    +    if away_streak_min is None:
    +        away_streak_min = 1
    +    if away_streak_max is None:
    +        away_streak_max = min(max(away_streak_min, 3), ll)
    +    if separation_min is None:
    +        separation_min = 1
    +    if separation_max is None:
    +        separation_max = min(max(separation_min, 1), ll)
    +
    +    return Instance(name, dm, [team_names[i] for i in range(n_teams)],
    +                    rounds, home_streak_min, home_streak_max, away_streak_min,
    +                    away_streak_max, separation_min, separation_max)
    +
    +
    +#: The instances made available within this package are taken from
    +#: <https://robinxval.ugent.be/RobinX/travelRepo.php>, where the following
    +#: descriptions are given:
    +#: - *Constant Distance (`con*`):* The constant distance instances are the
    +#:   most simple instances in which the distance between the home venues of
    +#:   any two teams is one. In this case, Urrutia and Ribeiro showed that
    +#:   distance minimization is equivalent with break maximization.
    +#: - *Circular Distance (`circ*`):* Somewhat similar are the circular
    +#:   distance instances in which the teams' venues are placed on a
    +#:   circle. Any two consecutive teams are connected by an edge and the
    +#:   distance between two teams is equal to the minimal number of edges that
    +#:   must be traversed to get to the other team. Although traveling
    +#:   salesperson problems with a circular distance matrix have a trivial
    +#:   solution, it remains challenging to solve circular traveling tournament
    +#:   instances.
    +#: - *Galaxy (`gal*`):* This artificial instance class consists of the Galaxy
    +#:   instances that use a 3D-space that embeds the Earth and 39 other
    +#:   exoplanets.
    +#: - *National league (`nl*`):* The `nl`-instances are based on air distance
    +#:   between the city centers from teams in the National League of the Major
    +#:   League Baseball.
    +#: - *National football league (`nfl*`):* The NFL-instances are based on air
    +#:   distance between the city centers from teams in the National Football
    +#:   League.
    +#: - *Super 14 (`sup*`):* The super 14 instances are based on air distance
    +#:   between the city centers from teams in the Super 14 rugby cup.
    +#: - *Brazilian (`bra24`)):* The Brazilian instance is based on the air
    +#:   distance between the home cities of 24 teams in the main division of the
    +#:   2003 edition of the Brazilian soccer championship.
    +#: - *Linear (`line*`):* In the linear instances, `n` teams are located on a
    +#:   straight line with a distance of one unit separating each pair of
    +#:   adjacent teams.
    +#: - *Increasing distance (`incr*`):* In the increasing distance instances,
    +#:   `n` teams are located on a straight line with an increasing distance
    +#:   separating each pair of adjacent teams such that the distance between
    +#:   team `k` and `k+1` equals `k`.
    +_INSTANCES: Final[tuple[str, ...]] = (
    +    "bra24", "circ4", "circ6", "circ8", "circ10", "circ12", "circ14",
    +    "circ16", "circ18", "circ20", "circ22", "circ24", "circ26", "circ28",
    +    "circ30", "circ32", "circ34", "circ36", "circ38", "circ40", "con4",
    +    "con6", "con8", "con10", "con12", "con14", "con16", "con18", "con20",
    +    "con22", "con24", "con26", "con28", "con30", "con32", "con34", "con36",
    +    "con38", "con40", "gal4", "gal6", "gal8", "gal10", "gal12", "gal14",
    +    "gal16", "gal18", "gal20", "gal22", "gal24", "gal26", "gal28", "gal30",
    +    "gal32", "gal34", "gal36", "gal38", "gal40", "incr4", "incr6", "incr8",
    +    "incr10", "incr12", "incr14", "incr16", "incr18", "incr20", "incr22",
    +    "incr24", "incr26", "incr28", "incr30", "incr32", "incr34", "incr36",
    +    "incr38", "incr40", "line4", "line6", "line8", "line10", "line12",
    +    "line14", "line16", "line18", "line20", "line22", "line24", "line26",
    +    "line28", "line30", "line32", "line34", "line36", "line38", "line40",
    +    "nfl16", "nfl18", "nfl20", "nfl22", "nfl24", "nfl26", "nfl28", "nfl30",
    +    "nfl32", "nl4", "nl6", "nl8", "nl10", "nl12", "nl14", "nl16", "sup4",
    +    "sup6", "sup8", "sup10", "sup12", "sup14")
    +
    +
    +#: The lower and upper bound for the *optimal* total tournament length, taken
    +#: from https://robinxval.ugent.be/RobinX/travelRepo.php on 2024-05-10.
    +_OPT_DISTANCE_BOUNDS: Final[dict[str, tuple[int, int]]] = {
    +    "bra24": (451406, 538866), "circ4": (20, 20), "circ6": (64, 64),
    +    "circ8": (132, 132), "circ10": (242, 242), "circ12": (388, 400),
    +    "circ14": (588, 616), "circ16": (846, 898), "circ18": (1188, 1268),
    +    "circ20": (1600, 1724), "circ22": (2068, 2366), "circ24": (2688, 3146),
    +    "circ26": (3380, 3992), "circ28": (4144, 4642), "circ30": (5100, 5842),
    +    "circ32": (6144, 7074), "circ34": (7276, 8042), "circ36": (8640, 9726),
    +    "circ38": (10108, 11424), "circ40": (11680, 12752), "con4": (17, 17),
    +    "con6": (43, 43), "con8": (80, 80), "con10": (124, 124),
    +    "con12": (181, 181), "con14": (252, 252), "con16": (327, 327),
    +    "con18": (414, 416), "con20": (520, 520), "con22": (626, 626),
    +    "con24": (744, 747), "con26": (884, 884), "con28": (1021, 1021),
    +    "con30": (1170, 1177), "con32": (1344, 1359), "con34": (1512, 1512),
    +    "con36": (1692, 1703), "con38": (1900, 1918), "con40": (2099, 2099),
    +    "gal4": (416, 416), "gal6": (1365, 1365), "gal8": (2373, 2373),
    +    "gal10": (4535, 4535), "gal12": (7034, 7135), "gal14": (10255, 10840),
    +    "gal16": (13619, 14583), "gal18": (19050, 20205), "gal20": (23738, 25401),
    +    "gal22": (31461, 33901), "gal24": (41287, 44260), "gal26": (53802, 58968),
    +    "gal28": (69992, 75276), "gal30": (88831, 95158),
    +    "gal32": (108374, 119665), "gal34": (133976, 143298),
    +    "gal36": (158549, 169387), "gal38": (189126, 204980),
    +    "gal40": (226820, 241908), "incr4": (48, 48), "incr6": (228, 228),
    +    "incr8": (624, 638), "incr10": (1440, 1612), "incr12": (2880, 3398),
    +    "incr14": (5180, 6488), "incr16": (8640, 10332), "incr18": (13548, 17278),
    +    "incr20": (20368, 25672), "incr22": (29484, 40944),
    +    "incr24": (41360, 56602), "incr26": (56500, 81866),
    +    "incr28": (75456, 106870), "incr30": (98820, 136810),
    +    "incr32": (127224, 177990), "incr34": (161348, 222082),
    +    "incr36": (201912, 278060), "incr38": (249686, 336008),
    +    "incr40": (305470, 406960), "line4": (24, 24), "line6": (76, 76),
    +    "line8": (156, 162), "line10": (288, 370), "line12": (480, 584),
    +    "line14": (740, 918), "line16": (1080, 1320), "line18": (1512, 1926),
    +    "line20": (2044, 2548), "line22": (2688, 3684), "line24": (3456, 4732),
    +    "line26": (4356, 6382), "line28": (5400, 7778), "line30": (6600, 9312),
    +    "line32": (7964, 11234), "line34": (9504, 13190),
    +    "line36": (11232, 15536), "line38": (13156, 17862),
    +    "line40": (15294, 20546), "nfl16": (223800, 231483),
    +    "nfl18": (272834, 282258), "nfl20": (316721, 332041),
    +    "nfl22": (378813, 400636), "nfl24": (431226, 463657),
    +    "nfl26": (495982, 536792), "nfl28": (560697, 598123),
    +    "nfl30": (688875, 739697), "nfl32": (836031, 914620),
    +    "nl4": (8276, 8276), "nl6": (23916, 23916), "nl8": (39721, 39721),
    +    "nl10": (59436, 59436), "nl12": (108629, 110729),
    +    "nl14": (183354, 188728), "nl16": (249477, 261687),
    +    "sup4": (63405, 63405), "sup6": (130365, 130365),
    +    "sup8": (182409, 182409), "sup10": (316329, 316329),
    +    "sup12": (453860, 458810), "sup14": (557354, 567891),
    +}
    +
    +
    +
    +[docs] +class Instance(TSPInstance): + """An instance of Traveling Tournament Problem (TTP).""" + + #: the names of the teams + teams: tuple[str, ...] + #: the number of rounds + rounds: int + #: the minimum number of games that can be played at home in a row + home_streak_min: int + #: the maximum number of games that can be played at home in a row + home_streak_max: int + #: the minimum number of games that can be played away in a row + away_streak_min: int + #: the maximum number of games that can be played away in a row + away_streak_max: int + #: the minimum number of games between a repetition of a game setup + separation_min: int + #: the maximum number of games between a repetition of a game setup + separation_max: int + #: the data type to be used for plans + game_plan_dtype: np.dtype + + def __new__(cls, name: str, matrix: np.ndarray, teams: Iterable[str], + rounds: int, home_streak_min: int, home_streak_max: int, + away_streak_min: int, away_streak_max: int, + separation_min: int, separation_max: int, + tour_length_lower_bound: int = 0) -> "Instance": + """ + Create an instance of the Traveling Salesperson Problem. + + :param cls: the class + :param name: the name of the instance + :param matrix: the matrix with the data (will be copied) + :param teams: the iterable with the team names + :param rounds: the number of rounds + :param tour_length_lower_bound: the lower bound of the tour length + :param home_streak_min: the minimum number of games that can be played + at home in a row + :param home_streak_max: the maximum number of games that can be played + at home in a row + :param away_streak_min: the minimum number of games that can be played + away in a row + :param away_streak_max: the maximum number of games that can be played + away in a row + :param separation_min: the minimum number of games between a repetition + of a game setup + :param separation_max: the maximum number of games between a repetition + of a game setup + """ + names: Final[tuple[str, ...]] = tuple(map(str.strip, teams)) + n: Final[int] = len(names) + if (n % 2) != 0: + raise ValueError(f"the number of teams must be even, but is {n}.") + if n != len(set(names)): + raise ValueError(f"some team name appears twice in {teams!r} " + f"after fixing it to {names!r}.") + for nn in names: + for char in nn: + if char.isspace(): + raise ValueError( + f"team name must not contain space, but {nn} does.") + + obj: Final[Instance] = cast(Instance, super().__new__( + cls, name, tour_length_lower_bound, matrix, rounds * n)) + + if (obj.shape[0] != n) or (obj.shape[1] != n) or (obj.n_cities != n): + raise ValueError(f"inconsistent n_teams={n}, n_cities=" + f"{obj.n_cities} and shape={obj.shape}") + #: the names of the teams that compete + obj.teams = names + #: the number of rounds + obj.rounds = check_int_range(rounds, "rounds", 1, 100) + ll: Final[int] = rounds * n - 1 # an upper bound for streaks + #: the minimum number of games that can be played at home in a row + obj.home_streak_min = check_int_range( + home_streak_min, "home_streak_min", 1, ll) + #: the maximum number of games that can be played at home in a row + obj.home_streak_max = check_int_range( + home_streak_max, "home_streak_max", home_streak_min, ll) + #: the minimum number of games that can be played away in a row + obj.away_streak_min = check_int_range( + away_streak_min, "away_streak_min", 1, ll) + #: the maximum number of games that can be played away in a row + obj.away_streak_max = check_int_range( + away_streak_max, "away_streak_max", away_streak_min, ll) + #: the minimum number of games between a repetition of a game setup + obj.separation_min = check_int_range( + separation_min, "separation_min", 0, ll) + #: the maximum number of games between a repetition of a game setup + obj.separation_max = check_int_range( + separation_max, "separation_max", separation_min, ll) + #: the data type to be used for the game plans + obj.game_plan_dtype = int_range_to_dtype(-n, n) + return obj + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log the parameters of the instance to the given logger. + + :param logger: the logger for the parameters + + >>> from moptipy.utils.logger import InMemoryLogger + >>> with InMemoryLogger() as l: + ... with l.key_values("I") as kv: + ... Instance.from_resource("gal4").log_parameters_to(kv) + ... print(repr('@'.join(l.get_log()))) + 'BEGIN_I@name: gal4@class: moptipyapps.ttp.instance.Instance@\ +nCities: 4@tourLengthLowerBound: 67@tourLengthUpperBound: 160@symmetric: T@\ +dtype: h@rounds: 2@homeStreakMin: 1@homeStreakMax: 3@\ +awayStreakMin: 1@awayStreakMax: 3@separationMin: 1@separationMax: 6@\ +gamePlanDtype: b@END_I' + """ + super().log_parameters_to(logger) + logger.key_value("rounds", self.rounds) + logger.key_value("homeStreakMin", self.home_streak_min) + logger.key_value("homeStreakMax", self.home_streak_max) + logger.key_value("awayStreakMin", self.away_streak_min) + logger.key_value("awayStreakMax", self.away_streak_max) + logger.key_value("separationMin", self.separation_min) + logger.key_value("separationMax", self.separation_max) + logger.key_value("gamePlanDtype", self.game_plan_dtype.char)
    + + +
    +[docs] + def get_optimal_plan_length_bounds(self) -> tuple[int, int]: + """ + Get lower and upper bounds in which the *optimal* plan length resides. + + These are the bounds for the optimal tour length of *feasible* + solutions. If we know the feasible solution with the smallest possible + tour length, then the :class:`~moptipyapps.ttp.game_plan` objective + function would return a value within these limits for this solution. + The limits for the RobinX instance have been taken from + https://robinxval.ugent.be/RobinX/travelRepo.php on 2024-05-10. + + :return: a tuple of the lower and upper limit for the optimal + plan length + """ + if self.name in _OPT_DISTANCE_BOUNDS: + return _OPT_DISTANCE_BOUNDS[self.name] + # unknown instance, compute bounds including penalty + n: Final[int] = self.n_cities + rounds: Final[int] = self.rounds + days: Final[int] = (n - 1) * rounds + return 0, ((2 * int(self.max())) + 1) * n * days
    + + +
    +[docs] + @staticmethod + def from_file(path: str, lower_bound_getter: Callable[[ + str], int] | None = None) -> "Instance": + """ + Read a TTP instance from a `robinX` formatted XML file. + + :param path: the path to the file + :param lower_bound_getter: ignored + :return: the instance + + >>> from os.path import dirname + >>> inst = Instance.from_file(dirname(__file__) + "/robinx/con20.xml") + >>> inst.name + 'con20' + """ + file: Final[Path] = file_path(path) + with file.open_for_read() as stream: + try: + return _from_stream(cast(TextIO, stream)) + except (TypeError, ValueError) as err: + raise ValueError(f"error when parsing file {file!r}") from err
    + + +
    +[docs] + @staticmethod + def list_resources(symmetric: bool = True, + asymmetric: bool = True) -> tuple[str, ...]: + """ + Get a tuple of all the TTP instances available as resource. + + All instances of the `robinX` set provided here are symmetric. + + :param symmetric: include the instances with symmetric distance + matrices + :param asymmetric: include the asymmetric instances with asymmetric + distance matrices + :return: the tuple with the instance names + + >>> len(Instance.list_resources()) + 118 + >>> len(Instance.list_resources(False, True)) + 0 + >>> len(Instance.list_resources(True, False)) + 118 + """ + return _INSTANCES if symmetric else ()
    + + +
    +[docs] + @staticmethod + def from_resource(name: str) -> "Instance": + """ + Load a TTP instance from a resource. + + :param name: the name string + :return: the instance + + >>> insta = Instance.from_resource("bra24") + >>> insta.n_cities + 24 + >>> insta.name + 'bra24' + >>> insta.teams[0] + 'Atl.Mineiro' + >>> insta.teams[1] + 'Atl.Paranaense' + >>> insta.rounds + 2 + >>> insta.home_streak_min + 1 + >>> insta.home_streak_max + 3 + >>> insta.away_streak_min + 1 + >>> insta.away_streak_max + 3 + >>> insta.separation_min + 1 + >>> insta.separation_max + 46 + """ + if not isinstance(name, str): + raise type_error(name, "name", str) + container: Final = Instance.from_resource + inst_attr: Final[str] = f"__inst_{name}" + if hasattr(container, inst_attr): # instance loaded? + return cast(Instance, getattr(container, inst_attr)) + + with open_resource_stream(f"{name}.xml") as stream: + inst: Final[Instance] = _from_stream(stream) + + if inst.name != name: + raise ValueError(f"got {inst.name!r} for instance {name!r}?") + if inst.n_cities <= 1000: + setattr(container, inst_attr, inst) + return inst
    +
    + +
    diff --git a/_modules/moptipyapps/ttp/plan_length.html b/_modules/moptipyapps/ttp/plan_length.html new file mode 100644 index 00000000..3b717aaf --- /dev/null +++ b/_modules/moptipyapps/ttp/plan_length.html @@ -0,0 +1,224 @@ +moptipyapps.ttp.plan_length — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.ttp.plan_length

    +"""
    +An objective computing the total travel length of all teams in a game plan.
    +
    +This objective function takes a game plan as argument and computes the total
    +travel length for all teams.
    +A :mod:`~moptipyapps.ttp.game_plan` is basically a matrix that, for each day
    +(first dimension) stores against which each team (second dimension) plays.
    +If a team plays at home (has a home game), its opponent is stored as a
    +positive number.
    +If the team has an away game, i.e., needs to visit the opponent, then this
    +opponent is stored as a negative number.
    +Team IDs go from `1` to `n`, i.e., a value in `1..n` indicates a home game
    +and a value in `-n..-1` indicates an away game.
    +The value `0` denotes a `bye`, i.e., that no game is scheduled for a team
    +at the given day.
    +
    +The total game plan length is computed as follows:
    +
    +1. the total length = 0
    +2. for each team,
    +    1. start at the current location = home
    +    2. for each day,
    +        1. if the opponent number is negative, the next location is the
    +           opponent's hometown;
    +        2. else if the opponent number is positive, the next location is the
    +           own hometown;
    +        3. else (if the opponent number is 0): add the `bye penalty` to the
    +           total length and jump to the next iteration
    +        4. add the distance from the current to the next location to the total
    +           length
    +        5. set the current location = the next location
    +    3. if the current location != own hometown, add the travel distance back
    +       from the current location to the hometown to the total travel length.
    +
    +As penalty for the `bye` situation where no game is scheduled, we use twice
    +the maximum distance between any two teams plus 1.
    +The logic is that if a `bye` (i.e., a `0`) inserted into a game plan, it
    +replaces one game. Since it replaces one game, it affects up to two travels,
    +namely from the previous location to the game location and from the game
    +location to the next location.
    +So the optimization process could sneakily try to cut longer legs of the
    +tournament by inserting a `bye`.
    +The longest imaginable travel would be between the two cities that are
    +farthest away from each other and back.
    +By making the penalty for a `bye` exactly one distance unit longer than
    +this longest imaginable distance, we ensure that the travel length can
    +never be reduced by inserting a `bye`.
    +Thus, having a `bye` is always more costly than any other travel it could
    +replace.
    +"""
    +
    +
    +from typing import Final
    +
    +import numba  # type: ignore
    +import numpy as np
    +from moptipy.api.objective import Objective
    +from moptipy.utils.logger import KeyValueLogSection
    +from pycommons.types import type_error
    +
    +from moptipyapps.ttp.game_plan import GamePlan
    +from moptipyapps.ttp.instance import Instance
    +
    +
    +
    +[docs] +@numba.njit(cache=True, inline="always", fastmath=True, boundscheck=False) +def game_plan_length( + y: np.ndarray, distances: np.ndarray, bye_penalty: int) -> int: + """ + Compute the total travel length of a game plan. + + :param y: the game plan + :param distances: the distance matrix + :param bye_penalty: the penalty for `bye = 0` entries, i.e., days where + no game is scheduled + :returns: the total plan length + + >>> yy = np.array([[ 2, -1, 4, -3], + ... [-2, 1, -4, 3], + ... [ 3, 4, -1, -2], + ... [-3, -4, 1, 2], + ... [ 4, 3, -2, -1], + ... [-4, -3, 2, 1]], int) + >>> dd = np.array([[ 0, 1, 2, 3], + ... [ 7, 0, 4, 5], + ... [ 8, 10, 0, 6], + ... [ 9, 11, 12, 0]], int) + >>> 0 + 1 + 7 + 2 + 8 + 3 + 9 # team 1 + 30 + >>> 7 + 1 + 0 + 5 + 11 + 4 + 10 # team 2 + 38 + >>> 0 + 6 + 9 + 2 + 10 + 4 # team 3 + 31 + >>> 12 + 6 + 11 + 5 + 9 + 3 # team 4 + 46 + >>> 30 + 38 + 31 + 46 # total sum + 145 + >>> game_plan_length(yy, dd, 0) + 145 + + >>> yy[1, 0] = 0 # add a bye + >>> 0 + 25 + 0 + 2 + 8 + 3 + 9 # team 1 + 47 + >>> game_plan_length(yy, dd, 2 * 12 + 1) + 162 + """ + days, teams = y.shape # get the number of days and teams + length: int = 0 + + for team in range(teams): # for each team + current_location: int = team # start at home + for day in range(days): # for each day + next_location: int = y[day, team] + if next_location < 0: # away game at other team + next_location = (-next_location) - 1 + elif next_location > 0: # home game at home + next_location = team + else: # bye = no game = penalty + length += bye_penalty + continue # team stays in current location + if current_location == next_location: + continue # no move + length += distances[current_location, next_location] + current_location = next_location + + if current_location != team: # go back home + length += distances[current_location, team] + + return int(length)
    + + + +
    +[docs] +class GamePlanLength(Objective): + """ + Compute the total travel length of a game plan. + + This objective function sums up all the travel lengths over all teams. + Days without game (`bye`) are penalized. + """ + + def __init__(self, instance: Instance) -> None: + """ + Initialize the game plan length objective function. + + :param instance: the TTP instance + """ + if not isinstance(instance, Instance): + raise type_error(instance, "instance", Instance) + super().__init__() + + #: the TTP instance + self.instance: Final[Instance] = instance + #: the bye penalty + self.bye_penalty: Final[int] = (2 * int(instance.max())) + 1 + +
    +[docs] + def evaluate(self, x: GamePlan) -> int: + """ + Count the errors in a game plan as objective value. + + :param x: the game plan + :return: the number of errors in the plan + """ + return game_plan_length(x, x.instance, self.bye_penalty)
    + + +
    +[docs] + def lower_bound(self) -> int: + """ + Obtain the lower bound for the travel length. + + :return: `0` + """ + return 0
    + + +
    +[docs] + def upper_bound(self) -> int: + """ + Compute upper bound for the travel length: All `n*days*bye_penalty`. + + :returns: `n * days * self.bye_penalty` + """ + n: Final[int] = self.instance.n_cities + rounds: Final[int] = self.instance.rounds + days: Final[int] = (n - 1) * rounds + return n * days * self.bye_penalty
    + + +
    +[docs] + def is_always_integer(self) -> bool: + """ + State that this objective function is always integer-valued. + + :return: `True` + """ + return True
    + + + def __str__(self) -> str: + """Get the name of this objective function.""" + return "planLength" + +
    +[docs] + def log_parameters_to(self, logger: KeyValueLogSection) -> None: + """ + Log the parameters of the instance to the given logger. + + :param logger: the logger for the parameters + """ + super().log_parameters_to(logger) + logger.key_value("byePenalty", self.bye_penalty)
    +
    + +
    diff --git a/_modules/moptipyapps/ttp/robinx.html b/_modules/moptipyapps/ttp/robinx.html new file mode 100644 index 00000000..347e8b3d --- /dev/null +++ b/_modules/moptipyapps/ttp/robinx.html @@ -0,0 +1,37 @@ +moptipyapps.ttp.robinx — moptipyapps 0.8.62 documentation

    Source code for moptipyapps.ttp.robinx

    +"""
    +The `RobinX` example data for the Traveling Tournament Problem (TTP).
    +
    +David Van Bulck of the Sports Scheduling Research group, part of the
    +Faculty of Economics and Business Administration at Ghent University, Belgium,
    +maintains "RobinX: An XML-driven Classification for Round-Robin Sports
    +Timetabling", a set of benchmark data instances and results of the TTP.
    +Here we include some of these TTP instances into our package.
    +
    +This package does not offer anything useful except for holding the TTP
    +files. You can find the documentation and actual classes for solving and
    +playing around with the TSP in package :mod:`~moptipyapps.ttp`.
    +
    +The original data of `robinX` can be found at
    +<https://robinxval.ugent.be/RobinX/travelRepo.php>
    +"""
    +
    +from importlib import resources  # nosem
    +from typing import TextIO, cast
    +
    +from pycommons.io.path import UTF8
    +
    +
    +
    +[docs] +def open_resource_stream(file_name: str) -> TextIO: + """ + Open a RobinX resource stream. + + :param file_name: the file name of the resource + :return: the stream + """ + return cast(TextIO, resources.files(__package__).joinpath( + file_name).open("r", encoding=UTF8))
    + +
    diff --git a/_sources/.nojekyll b/_sources/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_sources/README.md.txt b/_sources/README.md.txt new file mode 100644 index 00000000..fc2aef10 --- /dev/null +++ b/_sources/README.md.txt @@ -0,0 +1,326 @@ +[![build](https://github.com/thomasWeise/moptipyapps/actions/workflows/build.yml/badge.svg)](https://github.com/thomasWeise/moptipy/actions/workflows/build.yml) +[![pypi version](https://img.shields.io/pypi/v/moptipyapps)](https://pypi.org/project/moptipyapps) +[![pypi downloads](https://img.shields.io/pypi/dw/moptipyapps.svg)](https://pypistats.org/packages/moptipyapps) +[![coverage report](https://thomasweise.github.io/moptipyapps/tc/badge.svg)](https://thomasweise.github.io/moptipyapps/tc/index.html) + +# 1. Introduction + +[`moptipy`](https://thomasweise.github.io/moptipy/) is a library with implementations of metaheuristic optimization methods in Python 3.12 that also offers an environment for replicable experiments ([`flyer`](https://thomasweise.github.io/moptipy/_static/moptipy_flyer.pdf)). +[`moptipyapps`](./) is a collection of applications and experiments based on `moptipy`. + + +# 2. Installation + +In order to use this package and to, e.g., run the example codes, you need to first install it using [`pip`](https://pypi.org/project/pip/) or some other tool that can install packages from [PyPi](https://pypi.org). +You can install the newest version of this library from [PyPi](https://pypi.org/project/moptipyapps/) using [`pip`](https://pypi.org/project/pip/) by doing + +```shell +pip install moptipyapps +``` + +This will install the latest official release of our package as well as [all dependencies](./requirements_txt.html). +If you want to install the latest source code version from GitHub (which may not yet be officially released), you can do + +```shell +pip install git+https://github.com/thomasWeise/moptipyapps.git +``` + +If you want to install the latest source code version from GitHub (which may not yet be officially released) and you have set up a private/public key for GitHub, you can also do: + +```shell +git clone ssh://git@github.com/thomasWeise/moptipyapps +pip install moptipyapps +``` + +This may sometimes work better if you are having trouble reaching GitHub via `https` or `http`. + +You can also clone the repository and then run a [`make` build](./Makefile.html), which will automatically install all dependencies, run all the tests, and then install the package on your system, too. +This will work only on Linux, though. +It also installs the [dependencies for building](./requirements-dev_txt.html), which include, e.g., those for [unit testing and static analysis](#unit-tests-and-static-analysis). +If this build completes successful, you can be sure that [`moptipyapps`](./) will work properly on your machine. + +All dependencies for using and running `moptipyapps` are listed at [here](./requirements_txt.html). +The additional dependencies for a [full `make` build](./Makefile.html), including unit tests, static analysis, and the generation of documentation are listed [here](./requirements-dev_txt.html). + + +# 3. Applications +Here we list the applications of [`moptipy`](https://thomasweise.github.io/moptipy). +Step by step, we will add more and more interesting optimization problems. +For each problem, we provide means to load the problem instances and a basic infrastructure to construct optimization algorithms for solving them. + + +## 3.1. Two-Dimensional Bin Packing Problem +In the package [`moptipyapps.binpacking2d`](./moptipyapps.binpacking2d.html#module-moptipyapps.binpacking2d), we provide tools for experimenting and playing around with the two-dimensional bin packing problem. +Bin packing is a classical domain from Operations Research. +The goal is to pack objects into containers, the so-called bins. +We address [two-dimensional rectangular bin packing](./moptipyapps.binpacking2d.html#module-moptipyapps.binpacking2d). +We provide the bin packing [instances](./moptipyapps.binpacking2d.html#module-moptipyapps.binpacking2d.instance) from [2DPackLib](https://site.unibo.it/operations-research/en/research/2dpacklib) as [resources](./moptipyapps.binpacking2d.html#moptipyapps.binpacking2d.instance.Instance.from_resource) together with [this package](./moptipyapps.binpacking2d.html#module-moptipyapps.binpacking2d) as well as the four non-trivial "[Almost Squares in Almost Squares](https://hdl.handle.net/11245/1.545914)" instances. +Each such instances defines a set of `n_different_items` objects `Oi` with `i` from `1..n_different_objects`. +Each object `Oi` is a rectangle with a given width and height. +The object occur is a given multiplicity `repetitions(O_i)`, i.e., either only once or multiple times. +The bins are rectangles with a given width and height too. +The goal of tackling such an instance is to package all the objects into as few as possible bins. +The objects therefore may be rotated by 90 degrees. + +We address this problem by representing a packing as a [signed permutation with repetitions](https://thomasweise.github.io/moptipy/moptipy.spaces.html#module-moptipy.spaces.signed_permutations) of the numbers `1..n_different_objects`, where the number `i` occurs `repetitions(O_i)` times. +If an object is to be placed in a rotated way, this is denoted by using `-i` instead of `i`. +Such permutations are processed from beginning to end, placing the objects into bins as they come according to some heuristic encoding. +We provide two variants of the Improved Bottom Left encoding. +[The first one](./moptipyapps.binpacking2d.encodings.html#module-moptipyapps.binpacking2d.encodings.ibl_encoding_1) closes bins as soon as one object cannot be placed into them. +[The second one](./moptipyapps.binpacking2d.encodings.html#module-moptipyapps.binpacking2d.encodings.ibl_encoding_2) tries to put each object in the earliest possible bin. +While the former one is faster, the latter one leads to better packings. + +We can then apply a black-box metaheuristic to search in the space of these signed permutations with repetitions. +The objective function would be some measure consistent with the goal of minimizing the number of bins used. + +*Examples:* +- [plot a packing chart](./examples/binpacking2d_plot_py.html) +- [apply a randomized local search to one 2D bin packing instance](./examples/binpacking2d_rls_py.html) +- [measure the runtime of the different encodings for the 2D bin packing problem](./examples/binpacking2d_timing_py.html) + +Important work on this code has been contributed by Mr. Rui ZHAO (赵睿), , a Master's student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥学院) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授), who then refined the implementations. + + +## 3.2. The Traveling Salesperson Problem (TSP) +In the package [`moptipyapps.tsp`](./moptipyapps.tsp.html#module-moptipyapps.tsp), we provide tools to run experiments and play around with the Traveling Salesperson Problem (TSP) . +A TSP instance is defined as a fully-connected graph with `n_cities` nodes. +Each edge in the graph has a weight, which identifies the distance between the nodes. +The goal is to find the *shortest* tour that visits every single node in the graph exactly once and then returns back to its starting node. +Then nodes are usually called cities. +A tour can be represented in path representation, which means that it is stored as a permutation of the numbers `0` to `n_cities-1`. +The number at index `k` identifies that `k`-th city to visit. +So the first number in the permutation identifies the first city, the second number the second city, +and so on. +The length of the tour can be computed by summing up the distances from the `k`-th city to the `k+1`-st city, for `k` in `0..n_cities-2` and then adding the distance from the last city to the first city. + +We use the TSP instances from [TSPLib](http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/), the maybe most important benchmark set for the TSP. +110 of these instances are included as resources in this package. + +*Examples:* +- [apply a randomized local search to one TSP instance](./examples/tsp_rls_py.html) +- [apply a some FFA-based algorithms to one TSP instance](./examples/tsp_special_algorithms_py.html) + +Important work on this code has been contributed by Mr. Tianyu LIANG (梁天宇), a Master's student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥学院) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授). + +The Traveling Tournament Problem ([TTP](#the-traveling-tournament-problem-ttp)) is related to the TTP. + + +## 3.3. Dynamic Controller Synthesis +Another interesting example for optimization is the synthesis of [active controllers for dynamic systems](./moptipyapps.dynamic_control.html). +Dynamic systems have a state that changes over time based on some laws. +These laws may be expressed as ordinary differential equations, for example. +The classical [Stuart-Landau system](./moptipyapps.dynamic_control.systems.html#module-moptipyapps.dynamic_control.systems.stuart_landau), for instance, represents an object whose coordinates on a two-dimensional plane change as follows: + +``` +sigma = 0.1 - x² - y² +dx/dt = sigma * x - y +dy/dt = sigma * y + x +``` + +Regardless on which `(x, y)` the object initially starts, it tends to move to a circular rotation path centered around the origin with radius `sqrt(0.1)`. +Now we try to create a controller `ctrl` for such a system that moves the object from this periodic circular path into a fixed and stable location. +The controller `ctrl` receives the current state, i.e., the object location, as input and can influence the system as follows: + +``` +sigma = 0.1 - x² - y² +c = ctrl(x, y) +dx/dt = sigma * x - y +dy/dt = sigma * y + x + c +``` + +What we try to find is the controller which can bring move object to the origin `(0, 0)` as quickly as possible while expending the least amount of force, i.e., having the smallest aggregated `c` values over time. + + +## 3.4. The Traveling Tournament Problem (TTP) +In the package [`moptipyapps.ttp`](./moptipyapps.ttp.html#module-moptipyapps.ttp), we provide a set of classes and tools to explore the *Traveling Tournament Problem (TTP)*. +In a TTP, we have an even number of `n` teams. +Each team plays a tournament against every other team. +If the tournament is a single round-robin tournament, each team plays exactly once against every other team. +In the more common double round-robin tournament, each team plays twice against every other team — once at home and once at the place of the other team. +A tournament takes `(n - 1) * rounds` days in total, where `rounds = 2` for double round-robin. +Now additionally to the basic constraints dictated by logic (if team `A` plays at home against team `B` on day `d`, then team `B` has an "away" game against team `A` on that day `d` and so on), there are also additional constraints. +For instance, no team should play a continuous streak of home (or away) games longer than `m` days, where `m` usually is `m = 3`. +Also, if teams `A` and `B` play against each other, then there must be at least `p` games in between before they play each other again, usually with `p = 1`. + +Now the first hurdle is to find a game plan that has `n / 2` games on each day (since there are `n` teams and each plays against one other team) that satisfies the above constraints. +The second problem is that this is not all: +For each TTP, a distance matrix is defined, very much like for the [TSP](#the-traveling-salesperson-problem-tsp). +The goal is to find a feasible game schedule where the overall travel distances are minimal. + +*Examples:* +- [apply a local search to find a feasible TTP plan](./examples/ttp_example_experiment_rls_rs_py.html) +- [tackle the TTP in a multi-objective manner](./examples/ttp_example_experiment_mo_py.html) + + +## 3.5. The Quadratic Assignment Problem (QAP) +In the package [`moptipyapps.qap`](./moptipyapps.qap.html#module-moptipyapps.qap), we implement some utilities to play with the Quadratic Assignment Problem (QAP). +The QAP is one of the very classical problems from Operations Research. +Imagine you are planning the layout for a factory. +The goal is to assign `n` facilities (say, machines or workshops) to `n` locations. +Now between the facilities, there exists a flow of goods. +The output of one facility may be the input of another one and vice versa. +The amount of stuff to be transported is likely to be different between different facilities. +Between some facilities, a lot of things may need to be transport. +Between others, there could be no exchange of material or only very little. +The available locations also have different distances among each other. +Some locations are closer, some are farther from each other. +The goal is to find an assignment of facilities to locations such that the overall sum of the product of flow and distance for each facility pair gets minimized. +To this end, solutions can be represented as permutations of facilities determining the order in which they are placed on the locations `1` to `n`. + +*Examples:* +- See [one-dimensional ordering](#one-dimensional-ordering) +- [run a QAP experiment with RLS and random sampling](./examples/qap_example_experiment_rls_rs_py.html) + + +## 3.6. One-Dimensional Ordering +In the package [`moptipyapps.order1d`](./moptipyapps.order1d.html#module-moptipyapps.order1d), we implement what I would like to call the "one-dimensional ordering problem". +Imagine that you have `n` objects and you only know the distances between them. +You want to arrange these objects on one axis, e.g., along the horizontal (`x`) axis, i.e., in a one-dimensional space. +Now what you care about is to reflect the neighborhood structure among the objects (as defined by the distance matrix that you got) to the one-dimensional space. +So the closest neighbor of a given object based on the distance matrix should also be the closest neighbor on the one-dimensional axis. + +The goal of solving this problem is thus to arrange the `n` objects on a 1-dimensional (e.g., horizontal) axis given a distance matrix describing (maybe derived from their location in a potentially high-dimensional or unstructured space). +The objects should be arranged in such a way that, for each object, + +- the nearest neighbors on the 1-dimensional axis are also the nearest neighbors in the original space (according to the distance matrix provided), +- the second nearest neighbors on the 1-dimensional axis are also the second nearest neighbors in the original space (according to the distance matrix provided), +- the third nearest neighbors on the 1-dimensional axis are also the third nearest neighbors in the original space (according to the distance matrix provided), +- and so on; with (quadratically) decreasing weights of neighbor distance ranks. + +The original distances be limited to integers for the sake of simplicity, but we may use floats as well if we want to. +Either way, we do not care about the actual precise distances (e.g., something like "0.001") between the objects on either the one-dimensional nor the original space. +Only about the distance ranks, i.e., about "2nd nearest neighbor," but not "0.012 distance units away." +The solutions of this problem are thus permutations (orders) of the objects. +Of course, if we really want to plot the objects, such a permutation can easily be translated to `x`-coordinates, say, by dividing the index of an object by the number of objects, which nets values in `[0,1]`. +But basically, we reduce the task to finding permutations of objects that reflect the neighbor structure of the original space as closely as possible. + +If such a problem is solved correctly, then the arrangement on the one-dimensional axis should properly reflect the arrangement of the objects in the original space. +Of course, solving this problem exactly may not actually be possible, since an object on a one-dimensional axis may either have exactly two `i`-nearest-neighbors (if it is at least `i` slots away from either end of the permutation) or exactly `1` such neighbor, if it is closer that `i` units. +The object directly at the start of the permutation has only 1 nearest neighbor (the object that comes next). +That next object, however, has two, namely the first object and the third object. +In the original space where the objects come from, however, there may be any number of "nearest neighbors." +Imagine a two-dimensional space where one object sits at the center of a circle of other objects. +Then all other objects are its nearest neighbors, whereas an object on the circle either has exactly two nearest neighbors or, maybe, in the odd situation that the radius equals a multiple of the distance to the neighbors on the circle, three. +Such a structure cannot be represented exactly in one dimension. + +But that's OK. +Because we mainly do this for visualization purposes anyway. + +*Examples:* +- [use one-dimensional ordering to for search trajectory charts](./examples/order1_from_dat_py.html) + + +# 4. Unit Tests and Static Analysis +When developing and applying randomized algorithms, proper testing and checking of the source code is of utmost importance. +If we apply a randomized metaheuristic to an optimization problem, then we usually do not which solution quality we can achieve. +Therefore, we can usually not know whether we have implemented the algorithm correctly. +In other words, detecting bugs is very hard. +Unfortunately, this holds also for the components of the algorithms, such as the search operators, especially if they are randomized as well. +A bug may lead to worse results and we might not even notice that the worse result quality is caused by the bug. +We may think that the algorithm is just not working well on the problem. + +Therefore, we need to test all components of the algorithm as far as we can. +We can try check, for example, if a randomized nullary search operator indeed creates different solutions when invoked several times. +We can try to check whether an algorithm fails with an exception. +We can try to check whether the search operators create valid solutions and whether the algorithm passes valid solutions to the objective function. +We can try to whether an objective function produces finite objective values and if bounds are specified for the objective values, we can check whether they indeed fall within these bounds. +Now we cannot prove that there are no such bugs, due to the randomization. +But by testing a few hundred times, we can at least detect very obvious and pathological bugs. + +To ease such testing for you, we provide a set of tools for testing implemented algorithms, spaces, and operators in the package [moptipyapps.tests](./moptipyapps.tests.html). +Here, you can find functions where you pass in instances of your implemented components and they are checked for compliance with the [moptipy API](https://thomasweise.github.io/moptipy/moptipy.api.html) and the problem setups defined in `moptipyapps`. +In other words, if you go and implement your own algorithms, operators, and optimization problems, you can use our pre-defined unit tests to give them a thorough check before using them in production. +Again, such tests cannot prove the absence of bugs. +But they can at least give you a fair shot to detect pathological errors before wasting serious experimentation time. + +We also try to extensively test our own code, see the coverage report of [`moptipy`](https://thomasweise.github.io/moptipy/tc/index.html) and [`moptipyapps`](./tc/index.html). + +Another way to try to improve and maintain code quality is to use static code analysis and type hints where possible and reasonable. +A static analysis tool can inform you about, e.g., unused variables, which often result from a coding error. +It can tell you if the types of expressions do not match, which usually indicates a coding error, too. +It can tell you if you perform some security-wise unsafe operations (which is less often a problem in optimization, but it does not hurt to check). +Code analysis tools can also help you to enforce best practices, which are good for performance, readability, and maintainability. +They can push you to properly format and document your code, which, too, improve readability, maintainability, and usability. +They even can detect a set of well-known and frequently-occurring bugs. +We therefore also run a variety of such tools on our code base, including (in alphabetical order): + +- [`autoflake`](https://pypi.org/project/autoflake/), a tool for finding unused imports and variables +- [`bandit`](https://pypi.org/project/bandit/), a linter for finding security issues +- [`dodgy`](https://pypi.org/project/dodgy/), for checking for dodgy looking values in the code +- [`flake8`](https://pypi.org/project/flake8/), a collection of linters +- [`flake8-bugbear`](http://pypi.org/project/flake8-bugbear), for finding common bugs +- [`flake8-eradicate`](http://pypi.org/project/flake8-eradicate), for finding commented-out code +- [`flake8-use-fstring`](http://pypi.org/project/flake8-use-fstring), for checking the correct use of f-strings +- [`mypy`](https://pypi.org/project/mypy/), for checking types and type annotations +- [`pycodestyle`](https://pypi.org/project/pycodestyle/), for checking the formatting and coding style of the source +- [`pydocstyle`](https://pypi.org/project/pydocstyle/), for checking the format of the docstrings +- [`pyflakes`](https://pypi.org/project/pyflakes/), for detecting some errors in the code +- [`pylint`](https://pypi.org/project/pylint/), another static analysis tool +- [`pyroma`](https://pypi.org/project/pyroma/), for checking whether the code complies with various best practices +- [`ruff`](https://pypi.org/project/ruff/), a static analysis tool checking a wide range of coding conventions +- [`semgrep`](https://pypi.org/project/semgrep/), another static analyzer for finding bugs and problems +- [`tryceratops`](https://pypi.org/project/tryceratops/), for checking against exception handling anti-patterns +- [`unimport`](https://pypi.org/project/unimport/), for checking against unused import statements +- [`vulture`](https://pypi.org/project/vulture/), for finding dead code + +On git pushes, GitHub also automatically runs [CodeQL](https://codeql.github.com/) to check for common vulnerabilities and coding errors. +We also turned on GitHub's [private vulnerability reporting](https://docs.github.com/en/code-security/security-advisories/repository-security-advisories/configuring-private-vulnerability-reporting-for-a-repository) and the Dependabot [vulnerability](https://docs.github.com/en/code-security/dependabot/dependabot-alerts/configuring-dependabot-alerts) and [security](https://docs.github.com/en/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates) alerts. + +Using all of these tools increases the build time. +However, combined with thorough unit testing and documentation, it should help to prevent bugs, to improve readability, maintainability, and usability of the code. +It does not matter whether we are doing research or try to solve practical problems in the industry — we should always strive to make good software with high code quality. + +Often, researchers in particular think that hacking something together that works is enough, that documentation is unimportant, that code style best practices can be ignored, and so on. +And then they wonder why they cannot understand their own code a few years down the line (at least, this happened to me in the past…). +Or why no one can use their code to build atop of their research (which is the normal case for me). + +Improving code quality can *never* come later. +We *always* must maintain high coding and documentation standards from the very beginning. +While `moptipy` may still be far from achieving these goals, at least we try to get there. + +Anyway, you can find our full build script running all the tests, doing all the static analyses, creating the documentation, and creating and packaging the distribution files in the repository, too. +Besides the [basic `moptipyapps` dependencies](./requirements-dev_txt.html), it requires [a set of additional dependencies](./requirements-dev_txt.html). +These are all automatically installed during the build procedure. +The build only works under Linux. + + +# 5. License +[`moptipyapps`](./) is a library for implementing, using, and experimenting with metaheuristic optimization algorithms. +Our project is developed for scientific, educational, and industrial applications. + +Copyright (C) 2023 [Thomas Weise](http://iao.hfuu.edu.cn/5) (汤卫思教授) + +Dr. Thomas Weise (see [Contact](#contact)) holds the copyright of this package *except* for the data of the benchmark sets we imported from other sources. +`moptipyapps` is provided to the public as open source software under the [GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007](./LICENSE.html). +Terms for other licenses, e.g., for specific industrial applications, can be negotiated with Dr. Thomas Weise (who can be reached via the [contact information](#contact) below). + +This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +You should have received a copy of the GNU General Public License along with this program. +If not, see . + +Please visit the [contributions guidelines](./CONTRIBUTING_md.html) for `moptipy` if you would like to contribute to our package. +If you have any concerns regarding security, please visit our [security policy](./SECURITY_md.html). + + +## 5.1. Exceptions +- Most of the included benchmark instance data of the [two-dimensional bin packing problem](#two-dimensional-bin-packing-problem) is taken from [2DPackLib](https://site.unibo.it/operations-research/en/research/2dpacklib). + It has been stored in a more size-efficient way and some unnecessary information has been stripped from it (as we really only need the raw bin packing data). + Nevertheless, the copyright of the original data lies with the authors [2DPackLib](https://site.unibo.it/operations-research/en/research/2dpacklib) or the original authors of the datasets used by them. +- The included benchmark instances for the [Traveling Salesperson Problem](#the-traveling-salesperson-problem-tsp) are taken from [TSPLib](http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/). + The copyright of the original data lies with Gerhard Reinelt, the original author of TSPLib, or the original authors of the datasets used by him. +- The included benchmark instances for the [Traveling Tournament Problem](./#the-traveling-tournament-problem-ttp) are taken from [RobinX](https://robinxval.ugent.be/RobinX/travelRepo.php). + The copyright of the original data lies with the [authors](https://robinxval.ugent.be/RobinX/contact.php) of the dataset, presumably D. Van Bulck, D. Goossens, J. Schönberger, and M. Guajardo. +- The included benchmark instances for the Quadratic Assignment Problem are taken from QAPLib, which is available at and +. + The copyright of the original repository lies with R.E. Burkard, E. Çela, S.E. Karisch and F. Rendl as well as Peter Hahn and Miguel Anjos. + + +# 6. Contact +If you have any questions or suggestions, please contact +Prof. Dr. [Thomas Weise](http://iao.hfuu.edu.cn/5) (汤卫思教授) of the +Institute of Applied Optimization (应用优化研究所, [IAO](http://iao.hfuu.edu.cn)) of the +School of Artificial Intelligence and Big Data ([人工智能与大数据学院](http://www.hfuu.edu.cn/aibd/)) at +[Hefei University](http://www.hfuu.edu.cn/english/) ([合肥大学](http://www.hfuu.edu.cn/)) in +Hefei, Anhui, China (中国安徽省合肥市) via +email to [tweise@hfuu.edu.cn](mailto:tweise@hfuu.edu.cn) with CC to [tweise@ustc.edu.cn](mailto:tweise@ustc.edu.cn). diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 00000000..e1ef6b96 --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,17 @@ +moptipyapps: Applications of Metaheuristic Optimization in Python +================================================================= + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + +.. include:: README.md + :parser: myst_parser.sphinx_ + +7. Modules and Code +------------------- + +.. toctree:: + :maxdepth: 4 + + modules diff --git a/_sources/modules.rst.txt b/_sources/modules.rst.txt new file mode 100644 index 00000000..ae7a9a31 --- /dev/null +++ b/_sources/modules.rst.txt @@ -0,0 +1,7 @@ +moptipyapps +=========== + +.. toctree:: + :maxdepth: 4 + + moptipyapps diff --git a/_sources/moptipyapps.binpacking2d.encodings.rst.txt b/_sources/moptipyapps.binpacking2d.encodings.rst.txt new file mode 100644 index 00000000..7afb31d1 --- /dev/null +++ b/_sources/moptipyapps.binpacking2d.encodings.rst.txt @@ -0,0 +1,26 @@ +moptipyapps.binpacking2d.encodings package +========================================== + +.. automodule:: moptipyapps.binpacking2d.encodings + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +moptipyapps.binpacking2d.encodings.ibl\_encoding\_1 module +---------------------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.encodings.ibl_encoding_1 + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.encodings.ibl\_encoding\_2 module +---------------------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.encodings.ibl_encoding_2 + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/moptipyapps.binpacking2d.instgen.rst.txt b/_sources/moptipyapps.binpacking2d.instgen.rst.txt new file mode 100644 index 00000000..a6bf19b8 --- /dev/null +++ b/_sources/moptipyapps.binpacking2d.instgen.rst.txt @@ -0,0 +1,66 @@ +moptipyapps.binpacking2d.instgen package +======================================== + +.. automodule:: moptipyapps.binpacking2d.instgen + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +moptipyapps.binpacking2d.instgen.errors module +---------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.instgen.errors + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.instgen.errors\_and\_hardness module +------------------------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.instgen.errors_and_hardness + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.instgen.experiment module +-------------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.instgen.experiment + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.instgen.hardness module +------------------------------------------------ + +.. automodule:: moptipyapps.binpacking2d.instgen.hardness + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.instgen.inst\_decoding module +------------------------------------------------------ + +.. automodule:: moptipyapps.binpacking2d.instgen.inst_decoding + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.instgen.instance\_space module +------------------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.instgen.instance_space + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.instgen.problem module +----------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.instgen.problem + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/moptipyapps.binpacking2d.objectives.rst.txt b/_sources/moptipyapps.binpacking2d.objectives.rst.txt new file mode 100644 index 00000000..37b362bd --- /dev/null +++ b/_sources/moptipyapps.binpacking2d.objectives.rst.txt @@ -0,0 +1,66 @@ +moptipyapps.binpacking2d.objectives package +=========================================== + +.. automodule:: moptipyapps.binpacking2d.objectives + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +moptipyapps.binpacking2d.objectives.bin\_count module +----------------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.objectives.bin_count + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.objectives.bin\_count\_and\_empty module +----------------------------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.objectives.bin_count_and_empty + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.objectives.bin\_count\_and\_last\_empty module +----------------------------------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.objectives.bin_count_and_last_empty + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.objectives.bin\_count\_and\_last\_skyline module +------------------------------------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.objectives.bin\_count\_and\_last\_small module +----------------------------------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.objectives.bin_count_and_last_small + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.objectives.bin\_count\_and\_lowest\_skyline module +--------------------------------------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.objectives.bin\_count\_and\_small module +----------------------------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.objectives.bin_count_and_small + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/moptipyapps.binpacking2d.rst.txt b/_sources/moptipyapps.binpacking2d.rst.txt new file mode 100644 index 00000000..452ffb2f --- /dev/null +++ b/_sources/moptipyapps.binpacking2d.rst.txt @@ -0,0 +1,92 @@ +moptipyapps.binpacking2d package +================================ + +.. automodule:: moptipyapps.binpacking2d + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + moptipyapps.binpacking2d.encodings + moptipyapps.binpacking2d.instgen + moptipyapps.binpacking2d.objectives + +Submodules +---------- + +moptipyapps.binpacking2d.bks module +----------------------------------- + +.. automodule:: moptipyapps.binpacking2d.bks + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.experiment module +------------------------------------------ + +.. automodule:: moptipyapps.binpacking2d.experiment + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.instance module +---------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.instance + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.make\_instances module +----------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.make_instances + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.packing module +--------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.packing + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.packing\_result module +----------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.packing_result + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.packing\_space module +---------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.packing_space + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.packing\_statistics module +--------------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.packing_statistics + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.binpacking2d.plot\_packing module +--------------------------------------------- + +.. automodule:: moptipyapps.binpacking2d.plot_packing + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/moptipyapps.dynamic_control.controllers.rst.txt b/_sources/moptipyapps.dynamic_control.controllers.rst.txt new file mode 100644 index 00000000..e727b95f --- /dev/null +++ b/_sources/moptipyapps.dynamic_control.controllers.rst.txt @@ -0,0 +1,82 @@ +moptipyapps.dynamic\_control.controllers package +================================================ + +.. automodule:: moptipyapps.dynamic_control.controllers + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +moptipyapps.dynamic\_control.controllers.ann module +--------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.controllers.ann + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.controllers.codegen module +------------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.controllers.codegen + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.controllers.cubic module +----------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.controllers.cubic + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.controllers.linear module +------------------------------------------------------ + +.. automodule:: moptipyapps.dynamic_control.controllers.linear + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.controllers.min\_ann module +-------------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.controllers.min_ann + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.controllers.partially\_linear module +----------------------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.controllers.partially_linear + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.controllers.peaks module +----------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.controllers.peaks + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.controllers.predefined module +---------------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.controllers.predefined + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.controllers.quadratic module +--------------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.controllers.quadratic + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/moptipyapps.dynamic_control.rst.txt b/_sources/moptipyapps.dynamic_control.rst.txt new file mode 100644 index 00000000..cc13485b --- /dev/null +++ b/_sources/moptipyapps.dynamic_control.rst.txt @@ -0,0 +1,123 @@ +moptipyapps.dynamic\_control package +==================================== + +.. automodule:: moptipyapps.dynamic_control + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + moptipyapps.dynamic_control.controllers + moptipyapps.dynamic_control.systems + +Submodules +---------- + +moptipyapps.dynamic\_control.controller module +---------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.controller + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.experiment\_raw module +--------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.experiment_raw + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.experiment\_surrogate module +--------------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.experiment_surrogate + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.instance module +-------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.instance + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.model\_objective module +---------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.model_objective + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.objective module +--------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.objective + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.ode module +--------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.ode + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.results\_log module +------------------------------------------------ + +.. automodule:: moptipyapps.dynamic_control.results_log + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.results\_plot module +------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.results_plot + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.starting\_points module +---------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.starting_points + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.surrogate\_optimizer module +-------------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.surrogate_optimizer + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.system module +------------------------------------------ + +.. automodule:: moptipyapps.dynamic_control.system + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.system\_model module +------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.system_model + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/moptipyapps.dynamic_control.systems.rst.txt b/_sources/moptipyapps.dynamic_control.systems.rst.txt new file mode 100644 index 00000000..55543c3b --- /dev/null +++ b/_sources/moptipyapps.dynamic_control.systems.rst.txt @@ -0,0 +1,34 @@ +moptipyapps.dynamic\_control.systems package +============================================ + +.. automodule:: moptipyapps.dynamic_control.systems + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +moptipyapps.dynamic\_control.systems.lorenz module +-------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.systems.lorenz + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.systems.stuart\_landau module +---------------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.systems.stuart_landau + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.dynamic\_control.systems.three\_coupled\_oscillators module +----------------------------------------------------------------------- + +.. automodule:: moptipyapps.dynamic_control.systems.three_coupled_oscillators + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/moptipyapps.order1d.rst.txt b/_sources/moptipyapps.order1d.rst.txt new file mode 100644 index 00000000..9494b275 --- /dev/null +++ b/_sources/moptipyapps.order1d.rst.txt @@ -0,0 +1,34 @@ +moptipyapps.order1d package +=========================== + +.. automodule:: moptipyapps.order1d + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +moptipyapps.order1d.distances module +------------------------------------ + +.. automodule:: moptipyapps.order1d.distances + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.order1d.instance module +----------------------------------- + +.. automodule:: moptipyapps.order1d.instance + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.order1d.space module +-------------------------------- + +.. automodule:: moptipyapps.order1d.space + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/moptipyapps.qap.qaplib.rst.txt b/_sources/moptipyapps.qap.qaplib.rst.txt new file mode 100644 index 00000000..21727ce3 --- /dev/null +++ b/_sources/moptipyapps.qap.qaplib.rst.txt @@ -0,0 +1,7 @@ +moptipyapps.qap.qaplib package +============================== + +.. automodule:: moptipyapps.qap.qaplib + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/moptipyapps.qap.rst.txt b/_sources/moptipyapps.qap.rst.txt new file mode 100644 index 00000000..73833272 --- /dev/null +++ b/_sources/moptipyapps.qap.rst.txt @@ -0,0 +1,34 @@ +moptipyapps.qap package +======================= + +.. automodule:: moptipyapps.qap + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + moptipyapps.qap.qaplib + +Submodules +---------- + +moptipyapps.qap.instance module +------------------------------- + +.. automodule:: moptipyapps.qap.instance + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.qap.objective module +-------------------------------- + +.. automodule:: moptipyapps.qap.objective + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/moptipyapps.rst.txt b/_sources/moptipyapps.rst.txt new file mode 100644 index 00000000..4a0fd6bb --- /dev/null +++ b/_sources/moptipyapps.rst.txt @@ -0,0 +1,40 @@ +moptipyapps package +=================== + +.. automodule:: moptipyapps + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + moptipyapps.binpacking2d + moptipyapps.dynamic_control + moptipyapps.order1d + moptipyapps.qap + moptipyapps.tests + moptipyapps.tsp + moptipyapps.ttp + +Submodules +---------- + +moptipyapps.shared module +------------------------- + +.. automodule:: moptipyapps.shared + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.version module +-------------------------- + +.. automodule:: moptipyapps.version + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/moptipyapps.tests.rst.txt b/_sources/moptipyapps.tests.rst.txt new file mode 100644 index 00000000..b2080f3f --- /dev/null +++ b/_sources/moptipyapps.tests.rst.txt @@ -0,0 +1,26 @@ +moptipyapps.tests package +========================= + +.. automodule:: moptipyapps.tests + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +moptipyapps.tests.on\_binpacking2d module +----------------------------------------- + +.. automodule:: moptipyapps.tests.on_binpacking2d + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.tests.on\_tsp module +-------------------------------- + +.. automodule:: moptipyapps.tests.on_tsp + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/moptipyapps.tsp.rst.txt b/_sources/moptipyapps.tsp.rst.txt new file mode 100644 index 00000000..9992565c --- /dev/null +++ b/_sources/moptipyapps.tsp.rst.txt @@ -0,0 +1,58 @@ +moptipyapps.tsp package +======================= + +.. automodule:: moptipyapps.tsp + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + moptipyapps.tsp.tsplib + +Submodules +---------- + +moptipyapps.tsp.ea1p1\_revn module +---------------------------------- + +.. automodule:: moptipyapps.tsp.ea1p1_revn + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.tsp.fea1p1\_revn module +----------------------------------- + +.. automodule:: moptipyapps.tsp.fea1p1_revn + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.tsp.instance module +------------------------------- + +.. automodule:: moptipyapps.tsp.instance + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.tsp.known\_optima module +------------------------------------ + +.. automodule:: moptipyapps.tsp.known_optima + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.tsp.tour\_length module +----------------------------------- + +.. automodule:: moptipyapps.tsp.tour_length + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/moptipyapps.tsp.tsplib.rst.txt b/_sources/moptipyapps.tsp.tsplib.rst.txt new file mode 100644 index 00000000..8989f42e --- /dev/null +++ b/_sources/moptipyapps.tsp.tsplib.rst.txt @@ -0,0 +1,7 @@ +moptipyapps.tsp.tsplib package +============================== + +.. automodule:: moptipyapps.tsp.tsplib + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/moptipyapps.ttp.robinx.rst.txt b/_sources/moptipyapps.ttp.robinx.rst.txt new file mode 100644 index 00000000..3d415aa2 --- /dev/null +++ b/_sources/moptipyapps.ttp.robinx.rst.txt @@ -0,0 +1,7 @@ +moptipyapps.ttp.robinx package +============================== + +.. automodule:: moptipyapps.ttp.robinx + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/moptipyapps.ttp.rst.txt b/_sources/moptipyapps.ttp.rst.txt new file mode 100644 index 00000000..49f0084e --- /dev/null +++ b/_sources/moptipyapps.ttp.rst.txt @@ -0,0 +1,66 @@ +moptipyapps.ttp package +======================= + +.. automodule:: moptipyapps.ttp + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + moptipyapps.ttp.robinx + +Submodules +---------- + +moptipyapps.ttp.errors module +----------------------------- + +.. automodule:: moptipyapps.ttp.errors + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.ttp.game\_encoding module +------------------------------------- + +.. automodule:: moptipyapps.ttp.game_encoding + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.ttp.game\_plan module +--------------------------------- + +.. automodule:: moptipyapps.ttp.game_plan + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.ttp.game\_plan\_space module +---------------------------------------- + +.. automodule:: moptipyapps.ttp.game_plan_space + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.ttp.instance module +------------------------------- + +.. automodule:: moptipyapps.ttp.instance + :members: + :undoc-members: + :show-inheritance: + +moptipyapps.ttp.plan\_length module +----------------------------------- + +.. automodule:: moptipyapps.ttp.plan_length + :members: + :undoc-members: + :show-inheritance: diff --git a/_static/.nojekyll b/_static/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/_static/background_b01.png b/_static/background_b01.png new file mode 100644 index 0000000000000000000000000000000000000000..353f26dde0803aa172c23e21ef6ac068e1253bc8 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^%plAGBp8aFUnK)6QBN1gkP61+AN9}d56}GnU-I97 adu9eB2afnIr`wM~3O!x@T-G@yGywpsd=;et literal 0 HcmV?d00001 diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 00000000..5e1cb131 --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,914 @@ +/* + * Sphinx stylesheet -- basic theme. + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 210px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin-top: 10px; +} + +ul.search li { + padding: 5px 0; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/bizstyle.css b/_static/bizstyle.css new file mode 100644 index 00000000..2b46ec39 --- /dev/null +++ b/_static/bizstyle.css @@ -0,0 +1,505 @@ +/* + * Sphinx stylesheet -- business style theme. + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; + font-size: 14px; + letter-spacing: -0.01em; + line-height: 150%; + text-align: center; + background-color: white; + background-image: url(background_b01.png); + color: black; + padding: 0; + border-right: 1px solid #336699; + border-left: 1px solid #336699; + + margin: 0px 40px 0px 40px; +} + +div.document { + background-color: white; + text-align: left; + background-repeat: repeat-x; + + -moz-box-shadow: 2px 2px 5px #000; + -webkit-box-shadow: 2px 2px 5px #000; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 240px; + border-left: 1px solid #ccc; +} + +div.body { + margin: 0; + padding: 0.5em 20px 20px 20px; +} +div.bodywrapper { + margin: 0 0 0 calc(210px + 30px); +} + +div.related { + font-size: 1em; + + -moz-box-shadow: 2px 2px 5px #000; + -webkit-box-shadow: 2px 2px 5px #000; +} + +div.related ul { + background-color: #336699; + height: 100%; + overflow: hidden; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; +} + +div.related ul li { + color: white; + margin: 0; + padding: 0; + height: 2em; + float: left; +} + +div.related ul li.right { + float: right; + margin-right: 5px; +} + +div.related ul li a { + margin: 0; + padding: 0 5px 0 5px; + line-height: 1.75em; + color: #fff; +} + +div.related ul li a:hover { + color: #fff; + text-decoration: underline; +} + +div.sphinxsidebarwrapper { + padding: 0; +} + +div.sphinxsidebar { + padding: 0.5em 12px 12px 12px; + width: 210px; + font-size: 1em; + text-align: left; +} + +div.sphinxsidebar h3, div.sphinxsidebar h4 { + margin: 1em 0 0.5em 0; + font-size: 1em; + padding: 0.1em 0 0.1em 0.5em; + color: white; + border: 1px solid #336699; + background-color: #336699; +} + +div.sphinxsidebar h3 a { + color: white; +} + +div.sphinxsidebar ul { + padding-left: 1.5em; + margin-top: 7px; + padding: 0; + line-height: 130%; +} + +div.sphinxsidebar ul ul { + margin-left: 20px; +} + +div.sphinxsidebar input { + border: 1px solid #336699; +} + +div.footer { + background-color: white; + color: #336699; + padding: 3px 8px 3px 0; + clear: both; + font-size: 0.8em; + text-align: right; + border-bottom: 1px solid #336699; + + -moz-box-shadow: 2px 2px 5px #000; + -webkit-box-shadow: 2px 2px 5px #000; +} + +div.footer a { + color: #336699; + text-decoration: underline; +} + +/* -- body styles ----------------------------------------------------------- */ + +p { + margin: 0.8em 0 0.5em 0; +} + +a { + color: #336699; + text-decoration: none; +} + +a:hover { + color: #336699; + text-decoration: underline; +} + +a:visited { + color: #551a8b; +} + +div.body a { + text-decoration: underline; +} + +h1, h2, h3 { + color: #336699; +} + +h1 { + margin: 0; + padding: 0.7em 0 0.3em 0; + font-size: 1.5em; +} + +h2 { + margin: 1.3em 0 0.2em 0; + font-size: 1.35em; + padding-bottom: .5em; + border-bottom: 1px solid #336699; +} + +h3 { + margin: 1em 0 -0.3em 0; + font-size: 1.2em; + padding-bottom: .3em; + border-bottom: 1px solid #CCCCCC; +} + +div.body h1 a, div.body h2 a, div.body h3 a, +div.body h4 a, div.body h5 a, div.body h6 a { + color: black!important; +} + +h1 a.anchor, h2 a.anchor, h3 a.anchor, +h4 a.anchor, h5 a.anchor, h6 a.anchor { + display: none; + margin: 0 0 0 0.3em; + padding: 0 0.2em 0 0.2em; + color: #aaa!important; +} + +h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, +h5:hover a.anchor, h6:hover a.anchor { + display: inline; +} + +h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, +h5 a.anchor:hover, h6 a.anchor:hover { + color: #777; + background-color: #eee; +} + +a.headerlink { + color: #c60f0f!important; + font-size: 1em; + margin-left: 6px; + padding: 0 4px 0 4px; + text-decoration: none!important; +} + +a.headerlink:hover { + background-color: #ccc; + color: white!important; +} + +cite, code, tt { + font-family: 'Consolas', 'Deja Vu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 0.95em; + letter-spacing: 0.01em; +} + +code { + background-color: #F2F2F2; + border-bottom: 1px solid #ddd; + color: #333; +} + +code.descname, code.descclassname, code.xref { + border: 0; +} + +hr { + border: 1px solid #abc; + margin: 2em; +} + +a code { + border: 0; + color: #CA7900; +} + +a code:hover { + color: #2491CF; +} + +pre { + background-color: transparent !important; + font-family: 'Consolas', 'Deja Vu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 0.95em; + letter-spacing: 0.015em; + line-height: 120%; + padding: 0.5em; + border-right: 5px solid #ccc; + border-left: 5px solid #ccc; +} + +pre a { + color: inherit; + text-decoration: underline; +} + +td.linenos pre { + padding: 0.5em 0; +} + +div.quotebar { + background-color: #f8f8f8; + max-width: 250px; + float: right; + padding: 2px 7px; + border: 1px solid #ccc; +} + +nav.contents, +aside.topic, +div.topic { + background-color: #f8f8f8; +} + +table { + border-collapse: collapse; + margin: 0 -0.5em 0 -0.5em; +} + +table td, table th { + padding: 0.2em 0.5em 0.2em 0.5em; +} + +div.admonition { + font-size: 0.9em; + margin: 1em 0 1em 0; + border: 3px solid #cccccc; + background-color: #f7f7f7; + padding: 0; +} + +div.admonition p { + margin: 0.5em 1em 0.5em 1em; + padding: 0; +} + +div.admonition li p { + margin-left: 0; +} + +div.admonition pre, div.warning pre { + margin: 0; +} + +div.highlight { + margin: 0.4em 1em; +} + +div.admonition p.admonition-title { + margin: 0; + padding: 0.1em 0 0.1em 0.5em; + color: white; + border-bottom: 3px solid #cccccc; + font-weight: bold; + background-color: #165e83; +} + +div.danger { border: 3px solid #f0908d; background-color: #f0cfa0; } +div.error { border: 3px solid #f0908d; background-color: #ede4cd; } +div.warning { border: 3px solid #f8b862; background-color: #f0cfa0; } +div.caution { border: 3px solid #f8b862; background-color: #ede4cd; } +div.attention { border: 3px solid #f8b862; background-color: #f3f3f3; } +div.important { border: 3px solid #f0cfa0; background-color: #ede4cd; } +div.note { border: 3px solid #f0cfa0; background-color: #f3f3f3; } +div.hint { border: 3px solid #bed2c3; background-color: #f3f3f3; } +div.tip { border: 3px solid #bed2c3; background-color: #f3f3f3; } + +div.danger p.admonition-title, div.error p.admonition-title { + background-color: #b7282e; + border-bottom: 3px solid #f0908d; +} + +div.caution p.admonition-title, +div.warning p.admonition-title, +div.attention p.admonition-title { + background-color: #f19072; + border-bottom: 3px solid #f8b862; +} + +div.note p.admonition-title, div.important p.admonition-title { + background-color: #f8b862; + border-bottom: 3px solid #f0cfa0; +} + +div.hint p.admonition-title, div.tip p.admonition-title { + background-color: #7ebea5; + border-bottom: 3px solid #bed2c3; +} + +div.admonition ul, div.admonition ol, +div.warning ul, div.warning ol { + margin: 0.1em 0.5em 0.5em 3em; + padding: 0; +} + +div.versioninfo { + margin: 1em 0 0 0; + border: 1px solid #ccc; + background-color: #DDEAF0; + padding: 8px; + line-height: 1.3em; + font-size: 0.9em; +} + +.viewcode-back { + font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} + +p.versionchanged span.versionmodified { + font-size: 0.9em; + margin-right: 0.2em; + padding: 0.1em; + background-color: #DCE6A0; +} + +dl.field-list > dt { + color: white; + background-color: #82A0BE; +} + +dl.field-list > dd { + background-color: #f7f7f7; +} + +/* -- table styles ---------------------------------------------------------- */ + +table.docutils { + margin: 1em 0; + padding: 0; + border: 1px solid white; + background-color: #f7f7f7; +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 1px solid white; + border-bottom: 1px solid white; +} + +table.docutils td p { + margin-top: 0; + margin-bottom: 0.3em; +} + +table.field-list td, table.field-list th { + border: 0 !important; + word-break: break-word; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + color: white; + text-align: left; + padding-right: 5px; + background-color: #82A0BE; +} + +div.literal-block-wrapper div.code-block-caption { + background-color: #EEE; + border-style: solid; + border-color: #CCC; + border-width: 1px 5px; +} + +/* WIDE DESKTOP STYLE */ +@media only screen and (min-width: 1176px) { +body { + margin: 0 40px 0 40px; +} +} + +/* TABLET STYLE */ +@media only screen and (min-width: 768px) and (max-width: 991px) { +body { + margin: 0 40px 0 40px; +} +} + +/* MOBILE LAYOUT (PORTRAIT/320px) */ +@media only screen and (max-width: 767px) { +body { + margin: 0; +} +div.bodywrapper { + margin: 0; + width: 100%; + border: none; +} +div.sphinxsidebar { + display: none; +} +} + +/* MOBILE LAYOUT (LANDSCAPE/480px) */ +@media only screen and (min-width: 480px) and (max-width: 767px) { +body { + margin: 0 20px 0 20px; +} +} + +/* RETINA OVERRIDES */ +@media +only screen and (-webkit-min-device-pixel-ratio: 2), +only screen and (min-device-pixel-ratio: 2) { +} + +/* -- end ------------------------------------------------------------------- */ \ No newline at end of file diff --git a/_static/bizstyle.js b/_static/bizstyle.js new file mode 100644 index 00000000..82b87b0f --- /dev/null +++ b/_static/bizstyle.js @@ -0,0 +1,24 @@ +/* + * Sphinx javascript -- for bizstyle theme. + * + * This theme was created by referring to 'sphinxdoc' + */ +const initialiseBizStyle = () => { + if (navigator.userAgent.indexOf("iPhone") > 0 || navigator.userAgent.indexOf("Android") > 0) { + document.querySelector("li.nav-item-0 a").innerText = "Top" + } + const truncator = item => {if (item.textContent.length > 20) { + item.title = item.innerText + item.innerText = item.innerText.substr(0, 17) + "..." + } + } + document.querySelectorAll("div.related:first ul li:not(.right) a").slice(1).forEach(truncator); + document.querySelectorAll("div.related:last ul li:not(.right) a").slice(1).forEach(truncator); +} + +window.addEventListener("resize", + () => (document.querySelector("li.nav-item-0 a").innerText = (window.innerWidth <= 776) ? "Top" : "moptipyapps 0.8.62 documentation") +) + +if (document.readyState !== "loading") initialiseBizStyle() +else document.addEventListener("DOMContentLoaded", initialiseBizStyle) \ No newline at end of file diff --git a/_static/css3-mediaqueries.js b/_static/css3-mediaqueries.js new file mode 100644 index 00000000..59735f59 --- /dev/null +++ b/_static/css3-mediaqueries.js @@ -0,0 +1 @@ +if(typeof Object.create!=="function"){Object.create=function(e){function t(){}t.prototype=e;return new t}}var ua={toString:function(){return navigator.userAgent},test:function(e){return this.toString().toLowerCase().indexOf(e.toLowerCase())>-1}};ua.version=(ua.toString().toLowerCase().match(/[\s\S]+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1];ua.webkit=ua.test("webkit");ua.gecko=ua.test("gecko")&&!ua.webkit;ua.opera=ua.test("opera");ua.ie=ua.test("msie")&&!ua.opera;ua.ie6=ua.ie&&document.compatMode&&typeof document.documentElement.style.maxHeight==="undefined";ua.ie7=ua.ie&&document.documentElement&&typeof document.documentElement.style.maxHeight!=="undefined"&&typeof XDomainRequest==="undefined";ua.ie8=ua.ie&&typeof XDomainRequest!=="undefined";var domReady=function(){var e=[];var t=function(){if(!arguments.callee.done){arguments.callee.done=true;for(var t=0;t=200&&r.status<300||r.status===304||navigator.userAgent.indexOf("Safari")>-1&&typeof r.status==="undefined"){t(r.responseText)}else{n()}document.documentElement.style.cursor="";r=null}};r.send("")};var l=function(t){t=t.replace(e.REDUNDANT_COMPONENTS,"");t=t.replace(e.REDUNDANT_WHITESPACE,"$1");t=t.replace(e.WHITESPACE_IN_PARENTHESES,"($1)");t=t.replace(e.MORE_WHITESPACE," ");t=t.replace(e.FINAL_SEMICOLONS,"}");return t};var c={stylesheet:function(t){var n={};var r=[],i=[],s=[],o=[];var u=t.cssHelperText;var a=t.getAttribute("media");if(a){var f=a.toLowerCase().split(",")}else{var f=["all"]}for(var l=0;l-1&&a.href&&a.href.length!==0&&!a.disabled){r[r.length]=a}}if(r.length>0){var c=0;var d=function(){c++;if(c===r.length){i()}};var v=function(t){var n=t.href;f(n,function(r){r=l(r).replace(e.RELATIVE_URLS,"url("+n.substring(0,n.lastIndexOf("/"))+"/$1)");t.cssHelperText=r;d()},d)};for(u=0;u0){r.setAttribute("media",t.join(","))}document.getElementsByTagName("head")[0].appendChild(r);if(r.styleSheet){r.styleSheet.cssText=e}else{r.appendChild(document.createTextNode(e))}r.addedWithCssHelper=true;if(typeof n==="undefined"||n===true){cssHelper.parsed(function(t){var n=p(r,e);for(var i in n){if(n.hasOwnProperty(i)){g(i,n[i])}}a("newStyleParsed",r)})}else{r.parsingDisallowed=true}return r},removeStyle:function(e){return e.parentNode.removeChild(e)},parsed:function(e){if(n){s(e)}else{if(typeof t!=="undefined"){if(typeof e==="function"){e(t)}}else{s(e);d()}}},stylesheets:function(e){cssHelper.parsed(function(t){e(m.stylesheets||y("stylesheets"))})},mediaQueryLists:function(e){cssHelper.parsed(function(t){e(m.mediaQueryLists||y("mediaQueryLists"))})},rules:function(e){cssHelper.parsed(function(t){e(m.rules||y("rules"))})},selectors:function(e){cssHelper.parsed(function(t){e(m.selectors||y("selectors"))})},declarations:function(e){cssHelper.parsed(function(t){e(m.declarations||y("declarations"))})},properties:function(e){cssHelper.parsed(function(t){e(m.properties||y("properties"))})},broadcast:a,addListener:function(e,t){if(typeof t==="function"){if(!u[e]){u[e]={listeners:[]}}u[e].listeners[u[e].listeners.length]=t}},removeListener:function(e,t){if(typeof t==="function"&&u[e]){var n=u[e].listeners;for(var r=0;r=a||s&&l0}}else if("device-height"===e.substring(r-13,r)){c=screen.height;if(t!==null){if(u==="length"){return i&&c>=a||s&&c0}}else if("width"===e.substring(r-5,r)){l=document.documentElement.clientWidth||document.body.clientWidth;if(t!==null){if(u==="length"){return i&&l>=a||s&&l0}}else if("height"===e.substring(r-6,r)){c=document.documentElement.clientHeight||document.body.clientHeight;if(t!==null){if(u==="length"){return i&&c>=a||s&&c0}}else if("device-aspect-ratio"===e.substring(r-19,r)){return u==="aspect-ratio"&&screen.width*a[1]===screen.height*a[0]}else if("color-index"===e.substring(r-11,r)){var h=Math.pow(2,screen.colorDepth);if(t!==null){if(u==="absolute"){return i&&h>=a||s&&h0}}else if("color"===e.substring(r-5,r)){var p=screen.colorDepth;if(t!==null){if(u==="absolute"){return i&&p>=a||s&&p0}}else if("resolution"===e.substring(r-10,r)){var d;if(f==="dpcm"){d=o("1cm")}else{d=o("1in")}if(t!==null){if(u==="resolution"){return i&&d>=a||s&&d0}}else{return false}};var a=function(e){var t=e.getValid();var n=e.getExpressions();var r=n.length;if(r>0){for(var i=0;i0){u=false;for(var f=0;f0){l[c++]=","}l[c++]=h}}if(l.length>0){r[r.length]=cssHelper.addStyle("@media "+l.join("")+"{"+e.getCssText()+"}",t,false)}};var l=function(e,t){for(var n=0;n0}}var o=[],u=[];for(var f in i){if(i.hasOwnProperty(f)){o[o.length]=f;if(i[f]){u[u.length]=f}if(f==="all"){n=true}}}if(u.length>0){r[r.length]=cssHelper.addStyle(e.getCssText(),u,false)}var c=e.getMediaQueryLists();if(n){l(c)}else{l(c,o)}};var h=function(e){for(var t=0;td||Math.abs(s-t)>d){e=n;t=s;clearTimeout(r);r=setTimeout(function(){if(!i()){p()}else{cssHelper.broadcast("cssMediaQueriesTested")}},500)}};window.onresize=function(){var e=window.onresize||function(){};return function(){e();s()}}()};var m=document.documentElement;m.style.marginLeft="-32767px";setTimeout(function(){m.style.marginLeft=""},5e3);return function(){if(!i()){cssHelper.addListener("newStyleParsed",function(e){c(e.cssHelperParsed.stylesheet)});cssHelper.addListener("cssMediaQueriesTested",function(){if(ua.ie){m.style.width="1px"}setTimeout(function(){m.style.width="";m.style.marginLeft=""},0);cssHelper.removeListener("cssMediaQueriesTested",arguments.callee)});s();p()}else{m.style.marginLeft=""}v()}}());try{document.execCommand("BackgroundImageCache",false,true)}catch(e){} diff --git a/_static/css3-mediaqueries_src.js b/_static/css3-mediaqueries_src.js new file mode 100644 index 00000000..8aedaab9 --- /dev/null +++ b/_static/css3-mediaqueries_src.js @@ -0,0 +1,1104 @@ +/* +css3-mediaqueries.js - CSS Helper and CSS3 Media Queries Enabler + +author: Wouter van der Graaf +version: 1.0 (20110330) +license: MIT +website: https://code.google.com/p/css3-mediaqueries-js/ + +W3C spec: https://www.w3.org/TR/css3-mediaqueries/ + +Note: use of embedded

    """The configuration for py.test."""
    +
    diff --git a/examples/.nojekyll b/examples/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/examples/binpacking2d_plot_py.html b/examples/binpacking2d_plot_py.html new file mode 100644 index 00000000..6e9042d1 --- /dev/null +++ b/examples/binpacking2d_plot_py.html @@ -0,0 +1,113 @@ +

    """
    +Plot a 2-dimensional packing.
    +
    +Here we try out the two different variants of the improved-bottom-left
    +encoding. `ImprovedBottomLeftEncoding1` inserts objects one by one and moves
    +on to a new bin once an object doesn't fit into the current bin. It will then
    +never consider the filled bin again. `ImprovedBottomLeftEncoding2` always
    +tries all bins for any object.
    +
    +We try both encodings for instance `a10` and fixed (but randomly chosen)
    +signed permutation as input string.
    +
    +You will see that `ImprovedBottomLeftEncoding1` needs four bins, whereas
    +`ImprovedBottomLeftEncoding2` needs three.
    +
    +In the file `binpacking2d_rls.py`, we plug `ImprovedBottomLeftEncoding2` into
    +a simple randomized local search. This search runs for 1024 steps and finds a
    +packing that only needs two bins.
    +"""
    +from time import sleep
    +from webbrowser import open_new_tab
    +
    +import numpy as np
    +from moptipy.utils.nputils import rand_generator
    +from moptipy.utils.plot_utils import save_figure
    +from pycommons.io.temp import temp_dir
    +from pycommons.processes.caller import is_build
    +
    +from moptipyapps.binpacking2d.encodings.ibl_encoding_1 import (
    +    ImprovedBottomLeftEncoding1,
    +)
    +from moptipyapps.binpacking2d.encodings.ibl_encoding_2 import (
    +    ImprovedBottomLeftEncoding2,
    +)
    +from moptipyapps.binpacking2d.instance import Instance
    +from moptipyapps.binpacking2d.packing_space import PackingSpace
    +from moptipyapps.binpacking2d.plot_packing import plot_packing
    +
    +random = rand_generator(3)  # get a random number generator
    +instance = Instance.from_resource("a10")  # pick instance a10
    +space = PackingSpace(instance)  # create the packing space
    +
    +# We test two versions of the Improved Bottom Left Encoding
    +encodings = [ImprovedBottomLeftEncoding1(instance),  # the 1st encoding
    +             ImprovedBottomLeftEncoding2(instance)]  # the 2nd encoding
    +
    +# The data that the encoding can convert to a packing is an array with
    +# the same length as the total number n_items of objects to pack. Now a
    +# packing instance has n_different_items different items, each of which
    +# can occur multiple times, i.e., may occur repeatedly.
    +# So we include each of n_different_items item IDs exactly as often as
    +# it should be repeated. We sometimes include it directly and sometimes
    +# in the negated form, which is interpreted as a 90deg rotation by the
    +# encoding.
    +# Then, we convert the list of item IDs to a numpy array and, finally, shuffle
    +# the array. The encoding then inserts the items in the same sequence they
    +# appear in the array into bins.
    +
    +# generate the data for a random packing
    +x_data = instance.get_standard_item_sequence()
    +for i, e in enumerate(x_data):
    +    if random.integers(2) != 0:
    +        x_data[i] = -e
    +x = np.array(x_data, instance.dtype)  # convert the data to a numpy array
    +random.shuffle(x)  # shuffle the data, i.e., the insertion sequence
    +
    +# The packing is a two-dimensional matrix of items.
    +# Each row corresponds to one item. It stores the item ID, the ID of the bin
    +# into which the item is to be inserted, as well as the left-x, bottom-y,
    +# right-x, and top-y coordinates of the item.
    +# We now allocate one packing record for each encoding and apply the
    +# encodings.
    +ys = []
    +for encoding in encodings:
    +    y = space.create()  # allocate the packing
    +    encoding.decode(x, y)  # perform the encoding
    +    space.validate(y)  # check
    +    ys.append(y)
    +
    +
    +# We can now plot the packing.  We create the figures in a temp directory.
    +# To keep the figures, you would put an existing directory path into `td` by
    +# doing `from pycommons.io.path import Path; td = Path("mydir")` and not use
    +# the `with` block.
    +with temp_dir() as td:  # create temporary directory `td`
    +    files = []  # the collection of files
    +
    +# Plot the packings. The default plotting includes the item ID into each
    +# rectangle. If enough space is there, it will also include the index of the
    +# item in the bin (starting at 1), and, if then there is still enough space,
    +# also the overall index of the item in the encoding (starting at 1).
    +    for i, y in enumerate(ys):
    +        fig = plot_packing(y, max_bins_per_row=2, max_rows=2)
    +
    +        # Save the image as svg and png.
    +        files.extend(save_figure(
    +            fig=fig,  # store fig to a file
    +            file_name=f"packing_plot_a10_ibl{i + 1}",  # base name
    +            dir_name=td,  # store graphic in temp directory
    +            formats=("svg", "png")))  # file types: svg and png
    +        del fig  # dispose figure
    +
    +# OK, we have now generated and saved the plot in a file.
    +# We will open it in the web browser if we are not in a make build.
    +    if not is_build():
    +        for file in files:  # for each file we generated
    +            open_new_tab(f"file://{file}")  # open a browser tab
    +        sleep(10)  # sleep 10 seconds (enough time for the browser to load)
    +# The temp directory is deleted as soon as we leave the `with` block.
    +# Hence, all the figures generated above as well as the experimental results
    +# now have disappeared.
    +
    diff --git a/examples/binpacking2d_rls_py.html b/examples/binpacking2d_rls_py.html new file mode 100644 index 00000000..839b5a19 --- /dev/null +++ b/examples/binpacking2d_rls_py.html @@ -0,0 +1,94 @@ +

    """
    +Run a small experiment applying RLS to one 2d bin packing instance.
    +
    +We plug the second variant (`ImprovedBottomLeftEncoding2`) of the
    +improved-bottom-left encoding into a simple randomized local search (RLS).
    +The encoding processes a signed permutation from the beginning to the end and
    +places objects iteratively into bins. For each object, it will always try all
    +bins.
    +
    +We apply the algorithm to instance `a10`. The result of a short run with 1024
    +steps of the algorithm is a packing that needs two bins only. You can compare
    +this with the example file `binpacking2d_plot.py`, where three bins are needed
    +by the same encoding (or four by `ImprovedBottomLeftEncoding1`).
    +"""
    +from time import sleep
    +from webbrowser import open_new_tab
    +
    +from moptipy.algorithms.so.rls import RLS
    +from moptipy.api.execution import Execution
    +from moptipy.operators.signed_permutations.op0_shuffle_and_flip import (
    +    Op0ShuffleAndFlip,
    +)
    +from moptipy.operators.signed_permutations.op1_swap_2_or_flip import (
    +    Op1Swap2OrFlip,
    +)
    +from moptipy.spaces.signed_permutations import SignedPermutations
    +from moptipy.utils.plot_utils import save_figure
    +from pycommons.io.temp import temp_dir
    +from pycommons.processes.caller import is_build
    +
    +from moptipyapps.binpacking2d.encodings.ibl_encoding_2 import (
    +    ImprovedBottomLeftEncoding2,
    +)
    +from moptipyapps.binpacking2d.instance import Instance
    +from moptipyapps.binpacking2d.objectives.bin_count_and_last_empty import (
    +    BinCountAndLastEmpty,
    +)
    +from moptipyapps.binpacking2d.packing_space import PackingSpace
    +from moptipyapps.binpacking2d.plot_packing import plot_packing
    +
    +# load the problem instance
    +instance = Instance.from_resource("a10")  # pick instance a10
    +
    +search_space = SignedPermutations(
    +    instance.get_standard_item_sequence())  # Create the search space.
    +solution_space = PackingSpace(instance)  # Create the space of packings.
    +y = solution_space.create()  # Here we will put the best solution.
    +
    +# Build a single execution of a single run of a single algorithm, execute it,
    +# and store the best solution discovered in y.
    +with Execution()\
    +        .set_rand_seed(1)\
    +        .set_search_space(search_space)\
    +        .set_solution_space(solution_space)\
    +        .set_encoding(ImprovedBottomLeftEncoding2(instance))\
    +        .set_algorithm(  # This is the algorithm: Randomized Local Search.
    +            RLS(Op0ShuffleAndFlip(search_space), Op1Swap2OrFlip()))\
    +        .set_objective(BinCountAndLastEmpty(instance))\
    +        .set_max_fes(1024)\
    +        .execute() as process:
    +    process.get_copy_of_best_y(y)
    +
    +# We can now plot the best packing. We create the figures in a temp directory.
    +# To keep the figures, you would put an existing directory path into `td` by
    +# doing `from pycommons.io.path import Path; td = Path("mydir")` and not use
    +# the `with` block.
    +with temp_dir() as td:  # create temporary directory `td`
    +    files = []  # the collection of files
    +
    +# Plot the packing. The default plotting includes the item ID into each
    +# rectangle. If enough space is there, it will also include the index of the
    +# item in the bin (starting at 1), and, if then there is still enough space,
    +# also the overall index of the item in the encoding (starting at 1).
    +    fig = plot_packing(y, max_bins_per_row=2, max_rows=2)
    +
    +    # Save the image as svg and png.
    +    files.extend(save_figure(
    +        fig=fig,  # store fig to a file
    +        file_name="packing_plot_a10",  # base name
    +        dir_name=td,  # store graphic in temp directory
    +        formats=("svg", "png")))  # file types: svg and png
    +    del fig  # dispose figure
    +
    +# OK, we have now generated and saved the plot in a file.
    +# We will open it in the web browser if we are not in a make build.
    +    if not is_build():
    +        for file in files:  # for each file we generated
    +            open_new_tab(f"file://{file}")  # open a browser tab
    +        sleep(10)  # sleep 10 seconds (enough time for the browser to load)
    +# The temp directory is deleted as soon as we leave the `with` block.
    +# Hence, all the figures generated above as well as the experimental results
    +# now have disappeared.
    +
    diff --git a/examples/binpacking2d_timing_py.html b/examples/binpacking2d_timing_py.html new file mode 100644 index 00000000..106245f7 --- /dev/null +++ b/examples/binpacking2d_timing_py.html @@ -0,0 +1,88 @@ +

    """Compare the runtime of encodings on several problem instances."""
    +from statistics import mean, median
    +from timeit import timeit
    +from typing import Any, Callable, cast
    +
    +import numpy as np
    +from moptipy.utils.nputils import rand_generator
    +from pycommons.processes.caller import is_build
    +from pycommons.types import type_name
    +
    +from moptipyapps.binpacking2d.encodings.ibl_encoding_1 import (
    +    ImprovedBottomLeftEncoding1,
    +)
    +from moptipyapps.binpacking2d.encodings.ibl_encoding_2 import (
    +    ImprovedBottomLeftEncoding2,
    +)
    +from moptipyapps.binpacking2d.instance import Instance
    +from moptipyapps.binpacking2d.packing_space import PackingSpace
    +
    +# Create the random number generator.
    +random = rand_generator(1)
    +
    +# If it is a make build, use only 1 repetition, otherwise 20.
    +REPETITIONS = 1 if is_build() else 20
    +
    +# The instances to iterate over: All if not make build, 20 otherwise.
    +INSTANCES = random.choice(Instance.list_resources(), 20, False) \
    +    if is_build() else Instance.list_resources()
    +
    +
    +# We test two versions of the Improved Bottom Left Encoding
    +encodings = [ImprovedBottomLeftEncoding1,  # the 1st encoding
    +             ImprovedBottomLeftEncoding2]  # the 2nd encoding
    +
    +# The array to receive the timing measurements
    +timings = [[] for _ in encodings]
    +
    +# Iterate over all instances.
    +for inst_name in INSTANCES:
    +    instance = Instance.from_resource(inst_name)  # load the instance
    +
    +# We create 10 points in the search space to be mapped by the encodings.
    +    all_x_data_lst: list[np.ndarray] = []
    +    for _ in range(10):
    +        x_data = instance.get_standard_item_sequence()
    +        for i, e in enumerate(x_data):
    +            if random.integers(2) != 0:
    +                x_data[i] = -e
    +        x = np.array(x_data, instance.dtype)
    +        random.shuffle(x)
    +        all_x_data_lst.append(x)
    +    all_x_data: tuple[np.ndarray, ...] = tuple(all_x_data_lst)
    +
    +    y_space = PackingSpace(instance)
    +    y = y_space.create()
    +    benchmarks = []
    +    for encoding in encodings:
    +        def __f(_x=all_x_data, _y=y,
    +                _e=cast(Callable[[Any, Any], Any],
    +                        encoding(instance).decode)) -> None:
    +            for __x in _x:
    +                _e(__x, _y)
    +        benchmarks.append(__f)
    +
    +    for f in benchmarks:
    +        timeit(f, number=2)
    +
    +    for i, f in enumerate(benchmarks):
    +        t = timeit(f, number=10)
    +        timings[i].append(t)
    +
    +
    +def get_short_name(the_type) -> str:
    +    """Get the short name of the type."""
    +    s = type_name(the_type)
    +    last_dot = s.rfind(".")
    +    if last_dot > 0:
    +        return s[(last_dot + 1):]
    +    return s
    +
    +
    +# Print the times measured for the different encodings.
    +for i, e in enumerate(encodings):
    +    print(f"{get_short_name(e)}: "
    +          f"{min(timings[i]):.4f}/{mean(timings[i]):.4f}/"
    +          f"{median(timings[i]):.4f}/{max(timings[i]):.4f}")
    +
    diff --git a/examples/order1_from_dat_py.html b/examples/order1_from_dat_py.html new file mode 100644 index 00000000..4515e7cc --- /dev/null +++ b/examples/order1_from_dat_py.html @@ -0,0 +1,255 @@ +

    """
    +Find a reasonable one-dimensional order for permutations.
    +
    +Solve the one-dimensional ordering problem for permutations with fitness
    +stored in the `dat` file format as used by Thomson et al. This program
    +loads permutations from one or multiple files of this type and then tries
    +to arrange them on a horizontal axis such that their neighborhood relation
    +on the one-dimensional axis represents their neighborhood based one the
    +swap distance metric in the permutation space. It does this re-arrangement
    +by applying a randomized local search (RLS) to find the right permutation
    +of these permutations to be mapped to one-dimensional coordinates.
    +
    +You can call this program as follows:
    +
    +`python3 order1_from_dat.py sourceData outputFile \
    +[fitnessCap] [maxFEs] [fileNameRegEx]`
    +
    +where
    +- `sourceData` is the path to a file or folder with the original data.
    +  If it is a file, the file will be loaded if it matches `fileNameRegEx`.
    +  If it is a folder, all files in this folder and all sub-folders will
    +  recursively be parsed for input data.
    +- `outputFile` is the path to a file where to store the result.
    +- `fitnessCap` is an upper limit for the fitness values stored in the files,
    +  all points with higher fitness are ignored. (default: So high that it does
    +  not matter.)
    +- `maxFEs` are the maximum number of optimization steps until done. By
    +  default, these are `10000`.
    +- `fileNameRegEx` is a regular expression. Only file names matching this
    +  regular expression are parsed. By default, it matches all files. But you
    +  could provide `tai27e01.*`, e.g., to only match files starting with
    +  `tai27e01` (make sure to write `"tai27e01.*"` on the command line to prevent
    +  the dot-start from being expanded by the shell),
    +
    +The input format of this program are `dat` files of the format
    +```
    +EVALS    GENOTYPE    FITNESS
    +1    [22, 7, 6, 26, 27, 19, 3, 1, ... 5, 21, 8, 17, 2, 16, 9, 23]    87018
    +13    [20, 7, 6, 26, 18, 19, 9, 1, ... 25, 13, 23, 16, 15, 24]    85456
    +20    [20, 7, 18, 26, 6, 16, 9, 1,  ...  21, 13, 12, 19, 15, 17]    84152
    +29    [20, 11, 14, 25, 5, 16, 15, 1,  ...  21, 13, 12, 9, 19, 17]    83180
    +32    [20, 10, 14, 25, 5, 12, 15, 1,  ... 17, 13, 16, 9, 19, 21]    82846
    +34    [20, 15, 14, 25, 5, 12, 10, 1,  ...  6, 17, 13, 16, 9, 19, 21]    78204
    +```
    +
    +`fitnessCap` reflects an upper limit to the `FITNESS` column. Setting it to
    +`80000` would, for example, lead to ignoring all but the last line in the
    +above example.
    +"""
    +
    +import argparse
    +from os import listdir
    +from os.path import basename, dirname, isdir, isfile, join
    +from re import Pattern
    +from re import compile as re_compile
    +from typing import Any, Callable, Final
    +
    +import numpy as np
    +from matplotlib.axes import Axes
    +from matplotlib.figure import Figure
    +from moptipy.algorithms.so.rls import RLS
    +from moptipy.api.execution import Execution
    +from moptipy.operators.permutations.op0_shuffle import Op0Shuffle
    +from moptipy.operators.permutations.op1_swap2 import Op1Swap2
    +from moptipy.utils.nputils import rand_seeds_from_str
    +from moptipy.utils.plot_defaults import distinct_colors, distinct_markers
    +from moptipy.utils.plot_utils import create_figure, get_axes, save_figure
    +from pycommons.io.console import logger
    +from pycommons.io.path import Path, directory_path
    +from pycommons.types import check_to_int_range
    +
    +from moptipyapps.order1d.distances import swap_distance
    +from moptipyapps.order1d.instance import Instance
    +from moptipyapps.order1d.space import OrderingSpace
    +from moptipyapps.qap.objective import QAPObjective
    +from moptipyapps.shared import moptipyapps_argparser
    +
    +#: the impact of rank differences
    +POWER: Final[float] = 2.0
    +#: ignore everything that is farther away than the 64th nearest neighbor
    +HORIZON: Final[int] = 1024
    +#: the fitness tag
    +TAG_FITNESS: Final[str] = "fitness"
    +#: the evaluation tag
    +TAG_EVAL: Final[str] = "evaluations"
    +#: the permutation
    +TAG_PERM: Final[str] = "permutation"
    +#: the file
    +TAG_FILE: Final[str] = "file"
    +
    +
    +def parse_data(path: str, collector: Callable[[
    +        tuple[str, int, int, np.ndarray]], Any],
    +        fitness_limit: int, pattern: Pattern) -> None:
    +    """
    +    Parse a dat file.
    +
    +    :param path: the path
    +    :param collector: the collector function to invoke when loading data
    +    :param fitness_limit: the minimum acceptable fitness
    +    :param pattern: the file name pattern
    +    """
    +    the_path: Final[Path] = Path(path)
    +    if isdir(the_path):  # recursively parse directories
    +        logger(f"recursing into directory '{the_path}'.")
    +        for subpath in listdir(the_path):
    +            parse_data(join(the_path, subpath), collector, fitness_limit,
    +                       pattern)
    +        return
    +
    +    if not isfile(the_path):
    +        return  # if it is not a file, we quit
    +    the_name: Final[str] = basename(the_path)
    +    if not pattern.match(the_name):
    +        return  # file does not match
    +
    +    # parse the file
    +    for oline in the_path.open_for_read():
    +        line = oline.strip()
    +        if len(line) <= 0:
    +            continue
    +        bracket_open: int = line.find("[")
    +        if bracket_open <= 0:
    +            continue
    +        bracket_close: int = line.find("]", bracket_open + 1)
    +        if bracket_close <= bracket_open:
    +            continue
    +        f: int = check_to_int_range(line[bracket_close + 1:],
    +                                    TAG_FITNESS, 0, 1_000_000_000_000)
    +        if f > fitness_limit:
    +            continue
    +        evals: int = check_to_int_range(line[:bracket_open].strip(),
    +                                        TAG_EVAL, 1, 1_000_000_000_000_000)
    +        perm: list[int] = [
    +            check_to_int_range(s, TAG_PERM, 1, 1_000_000_000) - 1
    +            for s in line[bracket_open + 1:bracket_close].split(",")]
    +        collector((the_name, evals, f, np.array(perm)))
    +
    +
    +def get_tags(data: tuple[str, int, int, np.ndarray]) \
    +        -> tuple[str, str, str, str]:
    +    """
    +    Get the tags to store along with the data.
    +
    +    :param data: the data
    +    :return: the tags
    +    """
    +    return (data[0], str(data[1]), str(data[2]),
    +            f"\"[{','.join(str(a + 1) for a in data[3])}]\"")
    +
    +
    +def get_distance(a: tuple[str, int, int, np.ndarray],
    +                 b: tuple[str, int, int, np.ndarray]) -> int:
    +    """
    +    Get the distance between two data elements.
    +
    +    The distance here is the swap distance.
    +
    +    :param a: the first element
    +    :param b: the second element
    +    :return: the swap distance
    +    """
    +    return swap_distance(a[3], b[3])
    +
    +
    +def run(source: str, dest: str, max_fes: int, fitness_limit: int,
    +        file_name_regex: str) -> None:
    +    """
    +    Run the RLS algorithm to optimize a horizontal layout permutation.
    +
    +    :param source: the source file or directory
    +    :param dest: the destination file
    +    :param max_fes: the maximum FEs
    +    :param fitness_limit: the minimum acceptable fitness
    +    :param file_name_regex: the file name regular expression
    +    """
    +    logger(f"invoked program with source='{source}', dest='{dest}', "
    +           f"max_fes={max_fes}, fitness_limit={fitness_limit}, and "
    +           f"file_name_regex='{file_name_regex}'.")
    +    # first, we load all the data to construct a distance rank matrix
    +    pattern: Final[Pattern] = re_compile(file_name_regex)
    +    logger(f"now loading data from '{source}' matching to '{pattern}'.")
    +
    +    data: list[tuple[str, int, int, np.ndarray]] = []
    +    parse_data(source, data.append, fitness_limit, pattern)
    +    logger(f"finished loading {len(data)} rows of data, "
    +           "now constructing distance rank matrix.")
    +    instance: Final[Instance] = Instance.from_sequence_and_distance(
    +        data, get_distance, POWER, HORIZON,
    +        (TAG_FILE, TAG_EVAL, TAG_FITNESS, TAG_PERM), get_tags)
    +    del data  # free the now useless data
    +
    +    # run the algorithm
    +    dest_file: Final[Path] = Path(f"{dest}.txt")
    +    logger(f"finished constructing matrix with {instance.n} rows, "
    +           "now doing optimization for "
    +           f"{max_fes} FEs and, afterwards, writing result to '{dest_file}'.")
    +    space: Final[OrderingSpace] = OrderingSpace(instance)
    +    result: Final[np.ndarray] = space.create()
    +    with (Execution().set_solution_space(space)
    +          .set_objective(QAPObjective(instance))
    +          .set_algorithm(RLS(Op0Shuffle(space), Op1Swap2()))
    +          .set_max_fes(max_fes)
    +          .set_log_improvements(True)
    +          .set_log_file(dest_file)
    +          .set_rand_seed(rand_seeds_from_str(source, 1)[0])
    +            .execute()) as proc:
    +        proc.get_copy_of_best_y(result)
    +    logger("finished optimizing, got the solution "
    +           f"{','.join(map(str, result))!r}.")
    +
    +    files: Final[list[str]] = sorted({f[0][0] for f in instance.tags})
    +    logger(f"now we begin plotting the data from {len(files)} files.")
    +    dest_dir: Final[Path] = directory_path(dirname(dest_file))
    +    figure: Final[Figure] = create_figure()
    +    colors: Final[tuple[tuple[float, float, float], ...]] \
    +        = distinct_colors(len(files))
    +    markers: Final[tuple[str, ...]] = distinct_markers(4)
    +    axes: Final[Axes] = get_axes(figure)
    +    for i, file in enumerate(files):
    +        plot_data = np.array(
    +            sorted([(result[idx], int(tags[2])) for tags, idx in
    +                    instance.tags if tags[0] == file],
    +                   key=lambda a: (a[1], a[0])), dtype=int)
    +        axes.plot(plot_data[:, 0], plot_data[:, 1], color=colors[i],
    +                  marker=markers[i % len(markers)])
    +    axes.set_xticks([])
    +    save_figure(figure, basename(dest), dest_dir, "pdf")
    +    logger("finished plotting.")
    +
    +
    +# Perform the optimization
    +if __name__ == "__main__":
    +    parser: Final[argparse.ArgumentParser] = moptipyapps_argparser(
    +        __file__, "One-Dimensional Ordering of Permutations",
    +        "Run the one-dimensional order of permutations experiment.")
    +    parser.add_argument(
    +        "source", help="the directory or file with the input data",
    +        type=Path, nargs="?", default="./")
    +    parser.add_argument(
    +        "dest", help="the file to write the output to",
    +        type=Path, nargs="?", default="./result.txt")
    +    parser.add_argument("fitnessLimit", help="the minimum acceptable fitness",
    +                        type=int, nargs="?", default=1_000_000_000)
    +    parser.add_argument("maxFEs", help="the maximum FEs to perform",
    +                        type=int, nargs="?", default=10_000)
    +    parser.add_argument(
    +        "fileNameRegEx",
    +        help="a regular expression that file names must match",
    +        type=str, nargs="?", default=".*")
    +    args: Final[argparse.Namespace] = parser.parse_args()
    +    run(args.source, args.dest, args.maxFEs, args.fitnessLimit,
    +        args.fileNameRegEx)
    +
    diff --git a/examples/qap_example_experiment_rls_rs_py.html b/examples/qap_example_experiment_rls_rs_py.html new file mode 100644 index 00000000..d8fe99dd --- /dev/null +++ b/examples/qap_example_experiment_rls_rs_py.html @@ -0,0 +1,92 @@ +

    """An example experiment for the Quadratic Assignment Problem."""
    +
    +import argparse
    +from typing import Callable, Final, Iterable
    +
    +from moptipy.algorithms.random_sampling import RandomSampling
    +from moptipy.algorithms.so.rls import RLS
    +from moptipy.api.execution import Execution
    +from moptipy.api.experiment import run_experiment
    +from moptipy.operators.permutations.op0_shuffle import Op0Shuffle
    +from moptipy.operators.permutations.op1_swap2 import Op1Swap2
    +from moptipy.spaces.permutations import Permutations
    +from pycommons.io.path import Path
    +
    +from moptipyapps.qap.instance import Instance
    +from moptipyapps.qap.objective import QAPObjective
    +from moptipyapps.shared import moptipyapps_argparser
    +
    +
    +def make_instances() -> Iterable[Callable[[], Instance]]:
    +    """
    +    Create the instances to be used in the QAP experiment.
    +
    +    :return: the instances to be used in the QAP experiment.
    +    """
    +    return map(lambda i: lambda _i=i: Instance.from_resource(i),
    +               Instance.list_resources())
    +
    +
    +def base_setup(instance: Instance) -> tuple[Permutations, Execution]:
    +    """
    +    Create the basic setup.
    +
    +    :param instance: the instance to use
    +    :return: the basic execution
    +    """
    +    perms: Final[Permutations] = Permutations.standard(instance.n)
    +    return (perms, Execution().set_max_fes(32768).set_log_improvements(
    +        True).set_objective(QAPObjective(instance)).set_solution_space(perms))
    +
    +
    +def rls(instance: Instance) -> Execution:
    +    """
    +    Create the RLS execution.
    +
    +    :param instance: the problem instance
    +    :return: the setup
    +    """
    +    space, exe = base_setup(instance)
    +    return exe.set_algorithm(RLS(Op0Shuffle(space), Op1Swap2()))
    +
    +
    +def rs(instance: Instance) -> Execution:
    +    """
    +    Create the random sampling execution.
    +
    +    :param instance: the problem instance
    +    :return: the setup
    +    """
    +    space, exe = base_setup(instance)
    +    return exe.set_algorithm(RandomSampling(Op0Shuffle(space)))
    +
    +
    +def run(base_dir: str, n_runs: int = 3) -> None:
    +    """
    +    Run the experiment.
    +
    +    :param base_dir: the base directory
    +    :param n_runs: the number of runs
    +    """
    +    use_dir: Final[Path] = Path(base_dir)
    +    use_dir.ensure_dir_exists()
    +
    +    run_experiment(
    +        base_dir=use_dir,
    +        instances=make_instances(),
    +        setups=[rls, rs],
    +        n_runs=n_runs)
    +
    +
    +# Run the experiment from the command line
    +if __name__ == "__main__":
    +    parser: Final[argparse.ArgumentParser] = moptipyapps_argparser(
    +        __file__, "Quadratic Assignment Problem (QAP)",
    +        "Run the QAP experiment.")
    +    parser.add_argument(
    +        "dest", help="the directory to store the experimental results under",
    +        type=Path, nargs="?", default="./results/")
    +    args: Final[argparse.Namespace] = parser.parse_args()
    +    run(args.dest)
    +
    diff --git a/examples/tsp_rls_py.html b/examples/tsp_rls_py.html new file mode 100644 index 00000000..828dfddb --- /dev/null +++ b/examples/tsp_rls_py.html @@ -0,0 +1,35 @@ +

    """Run a small experiment applying RLS to one TSP instance."""
    +
    +from moptipy.algorithms.so.rls import RLS
    +from moptipy.api.execution import Execution
    +from moptipy.operators.permutations.op0_shuffle import Op0Shuffle
    +from moptipy.operators.permutations.op1_swapn import Op1SwapN
    +from moptipy.spaces.permutations import Permutations
    +
    +from moptipyapps.tsp.instance import Instance
    +from moptipyapps.tsp.tour_length import TourLength
    +
    +# load the problem instance and define search space
    +instance = Instance.from_resource("gr17")  # pick instance gr17
    +space = Permutations.standard(instance.n_cities)
    +
    +y = space.create()  # will later be used to hold the best solution found
    +
    +# Build a single execution of a single run of a single algorithm, execute it,
    +# and store the best solution discovered in y and its length in `length`.
    +with Execution()\
    +        .set_rand_seed(1)\
    +        .set_solution_space(space)\
    +        .set_algorithm(  # This is the algorithm: Randomized Local Search.
    +            RLS(Op0Shuffle(space), Op1SwapN()))\
    +        .set_objective(TourLength(instance))\
    +        .set_max_fes(2048)\
    +        .execute() as process:
    +    process.get_copy_of_best_y(y)
    +    length = process.get_best_f()
    +
    +print(f"tour length: {length}")
    +print(f"optimal length: {instance.tour_length_lower_bound}")
    +print(f"tour: {', '.join(str(i) for i in y)}")
    +
    diff --git a/examples/tsp_special_algorithms_py.html b/examples/tsp_special_algorithms_py.html new file mode 100644 index 00000000..d61a07ba --- /dev/null +++ b/examples/tsp_special_algorithms_py.html @@ -0,0 +1,30 @@ +

    """Run small experiments applying Algorithms Specialized to the TSP."""
    +
    +from moptipy.api.execution import Execution
    +from moptipy.spaces.permutations import Permutations
    +
    +from moptipyapps.tsp.ea1p1_revn import TSPEA1p1revn
    +from moptipyapps.tsp.fea1p1_revn import TSPFEA1p1revn
    +from moptipyapps.tsp.instance import Instance
    +from moptipyapps.tsp.tour_length import TourLength
    +
    +# load the problem instance and define search space
    +instance = Instance.from_resource("burma14")  # pick instance burma14
    +space = Permutations.standard(instance.n_cities)
    +
    +# the specialized algorithms that we will try out
    +algorithms = [TSPEA1p1revn, TSPFEA1p1revn]
    +
    +# Apply the algorithms to the smallest instance, burma14.
    +for constructor in algorithms:
    +    algorithm = constructor(instance)
    +    with Execution()\
    +            .set_rand_seed(1)\
    +            .set_solution_space(space)\
    +            .set_algorithm(algorithm)\
    +            .set_objective(TourLength(instance))\
    +            .set_max_fes(1000)\
    +            .execute() as process:
    +        print(f"{algorithm}: {process.get_best_f()}")
    +
    diff --git a/examples/ttp_example_experiment_mo_py.html b/examples/ttp_example_experiment_mo_py.html new file mode 100644 index 00000000..7761c941 --- /dev/null +++ b/examples/ttp_example_experiment_mo_py.html @@ -0,0 +1,116 @@ +

    """
    +An example experiment for the multi-objective Traveling Tournament Problem.
    +
    +In this experiment, we apply multi-objective methods to the TTP. The idea
    +is to treat the feasibility constraint :mod:`~moptipyapps.ttp.errors` as an
    +objective function and optimize it together with the actual
    +:mod:`~moptipyapps.ttp.plan_length` objective measuring the travel time.
    +We can do this either in a multi-objective fashion or in a single objective
    +fashion where we prioritize the number of errors over the length of the game
    +plans.
    +"""
    +
    +import argparse
    +from typing import Callable, Final, Iterable
    +
    +from moptipy.algorithms.mo.nsga2 import NSGA2
    +from moptipy.algorithms.so.rls import RLS
    +from moptipy.api.experiment import run_experiment
    +from moptipy.api.mo_execution import MOExecution
    +from moptipy.mo.problem.weighted_sum import Prioritize
    +from moptipy.operators.permutations.op0_shuffle import Op0Shuffle
    +from moptipy.operators.permutations.op1_swap2 import Op1Swap2
    +from moptipy.operators.permutations.op2_gap import (
    +    Op2GeneralizedAlternatingPosition,
    +)
    +from moptipy.spaces.permutations import Permutations
    +from pycommons.io.path import Path
    +
    +from moptipyapps.shared import moptipyapps_argparser
    +from moptipyapps.ttp.errors import Errors
    +from moptipyapps.ttp.game_encoding import GameEncoding
    +from moptipyapps.ttp.game_plan_space import GamePlanSpace
    +from moptipyapps.ttp.instance import Instance
    +from moptipyapps.ttp.plan_length import GamePlanLength
    +
    +
    +def make_instances() -> Iterable[Callable[[], Instance]]:
    +    """
    +    Create the instances to be used in the TTP experiment.
    +
    +    :return: the instances to be used in the TTP experiment.
    +    """
    +    return map(lambda i: lambda _i=i: Instance.from_resource(i),
    +               Instance.list_resources())
    +
    +
    +def base_setup(instance: Instance) -> tuple[Permutations, MOExecution]:
    +    """
    +    Create the basic setup.
    +
    +    :param instance: the instance to use
    +    :return: the basic execution
    +    """
    +    ge: Final[GameEncoding] = GameEncoding(instance)
    +    perms: Final[Permutations] = ge.search_space()
    +    return (perms, MOExecution().set_max_fes(512 * 1024).
    +            set_log_improvements(True).set_objective(
    +        Prioritize((Errors(instance), GamePlanLength(instance))))
    +        .set_search_space(perms).set_solution_space(
    +        GamePlanSpace(instance)).set_encoding(
    +        GameEncoding(instance)))
    +
    +
    +def rls(instance: Instance) -> MOExecution:
    +    """
    +    Create the priority-based RLS execution.
    +
    +    :param instance: the problem instance
    +    :return: the setup
    +    """
    +    space, exe = base_setup(instance)
    +    return exe.set_algorithm(RLS(Op0Shuffle(space), Op1Swap2()))
    +
    +
    +def mo_nsga2(instance: Instance) -> MOExecution:
    +    """
    +    Create the multi-objective NSGA-2 execution.
    +
    +    :param instance: the problem instance
    +    :return: the setup
    +    """
    +    space, exe = base_setup(instance)
    +    return exe.set_algorithm(NSGA2(Op0Shuffle(space), Op1Swap2(),
    +                                   Op2GeneralizedAlternatingPosition(space),
    +                                   16, 1 / 16))
    +
    +
    +def run(base_dir: str, n_runs: int = 3) -> None:
    +    """
    +    Run the experiment.
    +
    +    :param base_dir: the base directory
    +    :param n_runs: the number of runs
    +    """
    +    use_dir: Final[Path] = Path(base_dir)
    +    use_dir.ensure_dir_exists()
    +
    +    run_experiment(
    +        base_dir=use_dir,
    +        instances=make_instances(),
    +        setups=[rls, mo_nsga2],
    +        n_runs=n_runs)
    +
    +
    +# Run the experiment from the command line
    +if __name__ == "__main__":
    +    parser: Final[argparse.ArgumentParser] = moptipyapps_argparser(
    +        __file__, "Traveling Tournament Problem (TTP)",
    +        "Run the Multi-Objective TTP experiment.")
    +    parser.add_argument(
    +        "dest", help="the directory to store the experimental results under",
    +        type=Path, nargs="?", default="./results/")
    +    args: Final[argparse.Namespace] = parser.parse_args()
    +    run(args.dest)
    +
    diff --git a/examples/ttp_example_experiment_rls_rs_py.html b/examples/ttp_example_experiment_rls_rs_py.html new file mode 100644 index 00000000..36a01b6a --- /dev/null +++ b/examples/ttp_example_experiment_rls_rs_py.html @@ -0,0 +1,134 @@ +

    """
    +An example experiment for the Traveling Tournament Problem.
    +
    +In this experiment, we apply both a random sampling algorithm (RS) and a
    +randomized local search (RLS) to the Traveling Tournament Problem (TTP).
    +
    +Our goal is only to find feasible game plans, not feasible + short ones.
    +So we only use the "errors" objective function. Since we only want to find
    +feasible plans, we also do not need to consider the different distance
    +matrices that are available. Thus, we only use the 19 `circ*` instances
    +with numbers of teams ranging from 4 to 40. (See `make_instances`.)
    +
    +We apply both algorithms on a permutation-based search spaces using the
    +very simple game encoding procedure (which may produce infeasible plans)
    +for 32768 FEs and log all improving moves under the "errors" objective
    +function. (See `base_setup`.)
    +
    +Both algorithms use random permutation shuffling as their nullary operator.
    +Random sampling only applies this operator again and again and only creates
    +random solutions. It thus is rarely able to find a feasible solution and
    +does so only on the smallest problem instances. This random sampling algorithm
    +is set up in function `rs`.
    +
    +Randomized local search - set up in function `rls` - additionally uses a unary
    +operator that receives an existing permutation as input and produces a
    +slightly modified copy as output. This enables it to try to improve the best
    +solution that it has encountered so far. It does so by applying the unary
    +operator to it, obtaining a new slightly modified copy of that best solution,
    +and keeping this copy as new best-so-far solution if it is *not worse*, i.e.,
    +better or equally good. As unary operator, it applies a simple swap-2 method
    +that exchanges two randomly chosen (different) elements in the permutation.
    +
    +Three runs are executed for every algorithm-instance combination (see function
    +`run`).
    +"""
    +
    +import argparse
    +from typing import Callable, Final, Iterable, cast
    +
    +from moptipy.algorithms.random_sampling import RandomSampling
    +from moptipy.algorithms.so.rls import RLS
    +from moptipy.api.execution import Execution
    +from moptipy.api.experiment import run_experiment
    +from moptipy.operators.permutations.op0_shuffle import Op0Shuffle
    +from moptipy.operators.permutations.op1_swap2 import Op1Swap2
    +from moptipy.spaces.permutations import Permutations
    +from pycommons.io.path import Path
    +
    +from moptipyapps.shared import moptipyapps_argparser
    +from moptipyapps.ttp.errors import Errors
    +from moptipyapps.ttp.game_encoding import GameEncoding
    +from moptipyapps.ttp.game_plan_space import GamePlanSpace
    +from moptipyapps.ttp.instance import Instance
    +
    +
    +def make_instances() -> Iterable[Callable[[], Instance]]:
    +    """
    +    Create the instances to be used in the TTP experiment.
    +
    +    Here, we simply load all the `circ*` instances. Here, all cities
    +    are located on a circle.
    +
    +    :return: the instances to be used in the TTP experiment.
    +    """
    +    return (cast(Callable[[], Instance], lambda j=i: Instance.from_resource(
    +        f"circ{j}")) for i in range(4, 42, 2))
    +
    +
    +def base_setup(instance: Instance) -> tuple[Permutations, Execution]:
    +    """
    +    Create the basic setup.
    +
    +    :param instance: the instance to use
    +    :return: the basic execution
    +    """
    +    ge: Final[GameEncoding] = GameEncoding(instance)
    +    perms: Final[Permutations] = ge.search_space()
    +    return (perms, Execution().set_max_fes(32768).set_log_improvements(
    +        True).set_objective(Errors(instance)).set_search_space(perms)
    +        .set_solution_space(GamePlanSpace(instance)).set_encoding(
    +        GameEncoding(instance)))
    +
    +
    +def rls(instance: Instance) -> Execution:
    +    """
    +    Create the RLS execution.
    +
    +    :param instance: the problem instance
    +    :return: the setup
    +    """
    +    space, exe = base_setup(instance)
    +    return exe.set_algorithm(RLS(Op0Shuffle(space), Op1Swap2()))
    +
    +
    +def rs(instance: Instance) -> Execution:
    +    """
    +    Create the random sampling execution.
    +
    +    :param instance: the problem instance
    +    :return: the setup
    +    """
    +    space, exe = base_setup(instance)
    +    return exe.set_algorithm(RandomSampling(Op0Shuffle(space)))
    +
    +
    +def run(base_dir: str, n_runs: int = 3) -> None:
    +    """
    +    Run the experiment.
    +
    +    :param base_dir: the base directory
    +    :param n_runs: the number of runs
    +    """
    +    use_dir: Final[Path] = Path(base_dir)
    +    use_dir.ensure_dir_exists()
    +
    +    run_experiment(
    +        base_dir=use_dir,
    +        instances=make_instances(),
    +        setups=[rls, rs],
    +        n_runs=n_runs)
    +
    +
    +# Run the experiment from the command line
    +if __name__ == "__main__":
    +    parser: Final[argparse.ArgumentParser] = moptipyapps_argparser(
    +        __file__, "Traveling Tournament Problem (TTP)",
    +        "Run the TTP experiment.")
    +    parser.add_argument(
    +        "dest", help="the directory to store the experimental results under",
    +        type=Path, nargs="?", default="./results/")
    +    args: Final[argparse.Namespace] = parser.parse_args()
    +    run(args.dest)
    +
    diff --git a/genindex.html b/genindex.html new file mode 100644 index 00000000..d592e622 --- /dev/null +++ b/genindex.html @@ -0,0 +1 @@ +Index — moptipyapps 0.8.62 documentation

    Index

    A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W

    A

    B

    C

    D

    E

    F

    G

    H

    I

    J

    K

    L

    M

    N

    O

    P

    Q

    R

    S

    T

    U

    V

    W

    diff --git a/index.html b/index.html new file mode 100644 index 00000000..25b4e3be --- /dev/null +++ b/index.html @@ -0,0 +1,12 @@ +moptipyapps: Applications of Metaheuristic Optimization in Python — moptipyapps 0.8.62 documentation

    moptipyapps: Applications of Metaheuristic Optimization in Python

    build pypi version pypi downloads coverage report

    1. Introduction

    moptipy is a library with implementations of metaheuristic optimization methods in Python 3.12 that also offers an environment for replicable experiments (flyer). moptipyapps is a collection of applications and experiments based on moptipy.

    2. Installation

    In order to use this package and to, e.g., run the example codes, you need to first install it using pip or some other tool that can install packages from PyPi. You can install the newest version of this library from PyPi using pip by doing

    pip install moptipyapps
    +

    This will install the latest official release of our package as well as all dependencies. If you want to install the latest source code version from GitHub (which may not yet be officially released), you can do

    pip install git+https://github.com/thomasWeise/moptipyapps.git
    +

    If you want to install the latest source code version from GitHub (which may not yet be officially released) and you have set up a private/public key for GitHub, you can also do:

    git clone ssh://git@github.com/thomasWeise/moptipyapps
    +pip install moptipyapps
    +

    This may sometimes work better if you are having trouble reaching GitHub via https or http.

    You can also clone the repository and then run a make build, which will automatically install all dependencies, run all the tests, and then install the package on your system, too. This will work only on Linux, though. It also installs the dependencies for building, which include, e.g., those for unit testing and static analysis. If this build completes successful, you can be sure that moptipyapps will work properly on your machine.

    All dependencies for using and running moptipyapps are listed at here. The additional dependencies for a full make build, including unit tests, static analysis, and the generation of documentation are listed here.

    3. Applications

    Here we list the applications of moptipy. Step by step, we will add more and more interesting optimization problems. For each problem, we provide means to load the problem instances and a basic infrastructure to construct optimization algorithms for solving them.

    3.1. Two-Dimensional Bin Packing Problem

    In the package moptipyapps.binpacking2d, we provide tools for experimenting and playing around with the two-dimensional bin packing problem. Bin packing is a classical domain from Operations Research. The goal is to pack objects into containers, the so-called bins. We address two-dimensional rectangular bin packing. We provide the bin packing instances from 2DPackLib as resources together with this package as well as the four non-trivial “Almost Squares in Almost Squares” instances. Each such instances defines a set of n_different_items objects Oi with i from 1..n_different_objects. Each object Oi is a rectangle with a given width and height. The object occur is a given multiplicity repetitions(O_i), i.e., either only once or multiple times. The bins are rectangles with a given width and height too. The goal of tackling such an instance is to package all the objects into as few as possible bins. The objects therefore may be rotated by 90 degrees.

    We address this problem by representing a packing as a signed permutation with repetitions of the numbers 1..n_different_objects, where the number i occurs repetitions(O_i) times. If an object is to be placed in a rotated way, this is denoted by using -i instead of i. Such permutations are processed from beginning to end, placing the objects into bins as they come according to some heuristic encoding. We provide two variants of the Improved Bottom Left encoding. The first one closes bins as soon as one object cannot be placed into them. The second one tries to put each object in the earliest possible bin. While the former one is faster, the latter one leads to better packings.

    We can then apply a black-box metaheuristic to search in the space of these signed permutations with repetitions. The objective function would be some measure consistent with the goal of minimizing the number of bins used.

    Examples:

    Important work on this code has been contributed by Mr. Rui ZHAO (赵睿), zr1329142665@163.com, a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥学院) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授), who then refined the implementations.

    3.2. The Traveling Salesperson Problem (TSP)

    In the package moptipyapps.tsp, we provide tools to run experiments and play around with the Traveling Salesperson Problem (TSP) . A TSP instance is defined as a fully-connected graph with n_cities nodes. Each edge in the graph has a weight, which identifies the distance between the nodes. The goal is to find the shortest tour that visits every single node in the graph exactly once and then returns back to its starting node. Then nodes are usually called cities. A tour can be represented in path representation, which means that it is stored as a permutation of the numbers 0 to n_cities-1. The number at index k identifies that k-th city to visit. So the first number in the permutation identifies the first city, the second number the second city, and so on. The length of the tour can be computed by summing up the distances from the k-th city to the k+1-st city, for k in 0..n_cities-2 and then adding the distance from the last city to the first city.

    We use the TSP instances from TSPLib, the maybe most important benchmark set for the TSP. 110 of these instances are included as resources in this package.

    Examples:

    Important work on this code has been contributed by Mr. Tianyu LIANG (梁天宇), liangty@stu.hfuu.edu.cn a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥学院) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    The Traveling Tournament Problem (TTP) is related to the TTP.

    3.3. Dynamic Controller Synthesis

    Another interesting example for optimization is the synthesis of active controllers for dynamic systems. Dynamic systems have a state that changes over time based on some laws. These laws may be expressed as ordinary differential equations, for example. The classical Stuart-Landau system, for instance, represents an object whose coordinates on a two-dimensional plane change as follows:

    sigma = 0.1 - x² - y²
    +dx/dt = sigma * x - y
    +dy/dt = sigma * y + x
    +

    Regardless on which (x, y) the object initially starts, it tends to move to a circular rotation path centered around the origin with radius sqrt(0.1). Now we try to create a controller ctrl for such a system that moves the object from this periodic circular path into a fixed and stable location. The controller ctrl receives the current state, i.e., the object location, as input and can influence the system as follows:

    sigma = 0.1 - x² - y²
    +c = ctrl(x, y)
    +dx/dt = sigma * x - y
    +dy/dt = sigma * y + x + c
    +

    What we try to find is the controller which can bring move object to the origin (0, 0) as quickly as possible while expending the least amount of force, i.e., having the smallest aggregated c values over time.

    3.4. The Traveling Tournament Problem (TTP)

    In the package moptipyapps.ttp, we provide a set of classes and tools to explore the Traveling Tournament Problem (TTP). In a TTP, we have an even number of n teams. Each team plays a tournament against every other team. If the tournament is a single round-robin tournament, each team plays exactly once against every other team. In the more common double round-robin tournament, each team plays twice against every other team — once at home and once at the place of the other team. A tournament takes (n - 1) * rounds days in total, where rounds = 2 for double round-robin. Now additionally to the basic constraints dictated by logic (if team A plays at home against team B on day d, then team B has an “away” game against team A on that day d and so on), there are also additional constraints. For instance, no team should play a continuous streak of home (or away) games longer than m days, where m usually is m = 3. Also, if teams A and B play against each other, then there must be at least p games in between before they play each other again, usually with p = 1.

    Now the first hurdle is to find a game plan that has n / 2 games on each day (since there are n teams and each plays against one other team) that satisfies the above constraints. The second problem is that this is not all: For each TTP, a distance matrix is defined, very much like for the TSP. The goal is to find a feasible game schedule where the overall travel distances are minimal.

    Examples:

    3.5. The Quadratic Assignment Problem (QAP)

    In the package moptipyapps.qap, we implement some utilities to play with the Quadratic Assignment Problem (QAP). The QAP is one of the very classical problems from Operations Research. Imagine you are planning the layout for a factory. The goal is to assign n facilities (say, machines or workshops) to n locations. Now between the facilities, there exists a flow of goods. The output of one facility may be the input of another one and vice versa. The amount of stuff to be transported is likely to be different between different facilities. Between some facilities, a lot of things may need to be transport. Between others, there could be no exchange of material or only very little. The available locations also have different distances among each other. Some locations are closer, some are farther from each other. The goal is to find an assignment of facilities to locations such that the overall sum of the product of flow and distance for each facility pair gets minimized. To this end, solutions can be represented as permutations of facilities determining the order in which they are placed on the locations 1 to n.

    Examples:

    3.6. One-Dimensional Ordering

    In the package moptipyapps.order1d, we implement what I would like to call the “one-dimensional ordering problem”. Imagine that you have n objects and you only know the distances between them. You want to arrange these objects on one axis, e.g., along the horizontal (x) axis, i.e., in a one-dimensional space. Now what you care about is to reflect the neighborhood structure among the objects (as defined by the distance matrix that you got) to the one-dimensional space. So the closest neighbor of a given object based on the distance matrix should also be the closest neighbor on the one-dimensional axis.

    The goal of solving this problem is thus to arrange the n objects on a 1-dimensional (e.g., horizontal) axis given a distance matrix describing (maybe derived from their location in a potentially high-dimensional or unstructured space). The objects should be arranged in such a way that, for each object,

    • the nearest neighbors on the 1-dimensional axis are also the nearest neighbors in the original space (according to the distance matrix provided),

    • the second nearest neighbors on the 1-dimensional axis are also the second nearest neighbors in the original space (according to the distance matrix provided),

    • the third nearest neighbors on the 1-dimensional axis are also the third nearest neighbors in the original space (according to the distance matrix provided),

    • and so on; with (quadratically) decreasing weights of neighbor distance ranks.

    The original distances be limited to integers for the sake of simplicity, but we may use floats as well if we want to. Either way, we do not care about the actual precise distances (e.g., something like “0.001”) between the objects on either the one-dimensional nor the original space. Only about the distance ranks, i.e., about “2nd nearest neighbor,” but not “0.012 distance units away.” The solutions of this problem are thus permutations (orders) of the objects. Of course, if we really want to plot the objects, such a permutation can easily be translated to x-coordinates, say, by dividing the index of an object by the number of objects, which nets values in [0,1]. But basically, we reduce the task to finding permutations of objects that reflect the neighbor structure of the original space as closely as possible.

    If such a problem is solved correctly, then the arrangement on the one-dimensional axis should properly reflect the arrangement of the objects in the original space. Of course, solving this problem exactly may not actually be possible, since an object on a one-dimensional axis may either have exactly two i-nearest-neighbors (if it is at least i slots away from either end of the permutation) or exactly 1 such neighbor, if it is closer that i units. The object directly at the start of the permutation has only 1 nearest neighbor (the object that comes next). That next object, however, has two, namely the first object and the third object. In the original space where the objects come from, however, there may be any number of “nearest neighbors.” Imagine a two-dimensional space where one object sits at the center of a circle of other objects. Then all other objects are its nearest neighbors, whereas an object on the circle either has exactly two nearest neighbors or, maybe, in the odd situation that the radius equals a multiple of the distance to the neighbors on the circle, three. Such a structure cannot be represented exactly in one dimension.

    But that’s OK. Because we mainly do this for visualization purposes anyway.

    Examples:

    4. Unit Tests and Static Analysis

    When developing and applying randomized algorithms, proper testing and checking of the source code is of utmost importance. If we apply a randomized metaheuristic to an optimization problem, then we usually do not which solution quality we can achieve. Therefore, we can usually not know whether we have implemented the algorithm correctly. In other words, detecting bugs is very hard. Unfortunately, this holds also for the components of the algorithms, such as the search operators, especially if they are randomized as well. A bug may lead to worse results and we might not even notice that the worse result quality is caused by the bug. We may think that the algorithm is just not working well on the problem.

    Therefore, we need to test all components of the algorithm as far as we can. We can try check, for example, if a randomized nullary search operator indeed creates different solutions when invoked several times. We can try to check whether an algorithm fails with an exception. We can try to check whether the search operators create valid solutions and whether the algorithm passes valid solutions to the objective function. We can try to whether an objective function produces finite objective values and if bounds are specified for the objective values, we can check whether they indeed fall within these bounds. Now we cannot prove that there are no such bugs, due to the randomization. But by testing a few hundred times, we can at least detect very obvious and pathological bugs.

    To ease such testing for you, we provide a set of tools for testing implemented algorithms, spaces, and operators in the package moptipyapps.tests. Here, you can find functions where you pass in instances of your implemented components and they are checked for compliance with the moptipy API and the problem setups defined in moptipyapps. In other words, if you go and implement your own algorithms, operators, and optimization problems, you can use our pre-defined unit tests to give them a thorough check before using them in production. Again, such tests cannot prove the absence of bugs. But they can at least give you a fair shot to detect pathological errors before wasting serious experimentation time.

    We also try to extensively test our own code, see the coverage report of moptipy and moptipyapps.

    Another way to try to improve and maintain code quality is to use static code analysis and type hints where possible and reasonable. A static analysis tool can inform you about, e.g., unused variables, which often result from a coding error. It can tell you if the types of expressions do not match, which usually indicates a coding error, too. It can tell you if you perform some security-wise unsafe operations (which is less often a problem in optimization, but it does not hurt to check). Code analysis tools can also help you to enforce best practices, which are good for performance, readability, and maintainability. They can push you to properly format and document your code, which, too, improve readability, maintainability, and usability. They even can detect a set of well-known and frequently-occurring bugs. We therefore also run a variety of such tools on our code base, including (in alphabetical order):

    • autoflake, a tool for finding unused imports and variables

    • bandit, a linter for finding security issues

    • dodgy, for checking for dodgy looking values in the code

    • flake8, a collection of linters

    • flake8-bugbear, for finding common bugs

    • flake8-eradicate, for finding commented-out code

    • flake8-use-fstring, for checking the correct use of f-strings

    • mypy, for checking types and type annotations

    • pycodestyle, for checking the formatting and coding style of the source

    • pydocstyle, for checking the format of the docstrings

    • pyflakes, for detecting some errors in the code

    • pylint, another static analysis tool

    • pyroma, for checking whether the code complies with various best practices

    • ruff, a static analysis tool checking a wide range of coding conventions

    • semgrep, another static analyzer for finding bugs and problems

    • tryceratops, for checking against exception handling anti-patterns

    • unimport, for checking against unused import statements

    • vulture, for finding dead code

    On git pushes, GitHub also automatically runs CodeQL to check for common vulnerabilities and coding errors. We also turned on GitHub’s private vulnerability reporting and the Dependabot vulnerability and security alerts.

    Using all of these tools increases the build time. However, combined with thorough unit testing and documentation, it should help to prevent bugs, to improve readability, maintainability, and usability of the code. It does not matter whether we are doing research or try to solve practical problems in the industry — we should always strive to make good software with high code quality.

    Often, researchers in particular think that hacking something together that works is enough, that documentation is unimportant, that code style best practices can be ignored, and so on. And then they wonder why they cannot understand their own code a few years down the line (at least, this happened to me in the past…). Or why no one can use their code to build atop of their research (which is the normal case for me).

    Improving code quality can never come later. We always must maintain high coding and documentation standards from the very beginning. While moptipy may still be far from achieving these goals, at least we try to get there.

    Anyway, you can find our full build script running all the tests, doing all the static analyses, creating the documentation, and creating and packaging the distribution files in the repository, too. Besides the basic moptipyapps dependencies, it requires a set of additional dependencies. These are all automatically installed during the build procedure. The build only works under Linux.

    5. License

    moptipyapps is a library for implementing, using, and experimenting with metaheuristic optimization algorithms. Our project is developed for scientific, educational, and industrial applications.

    Copyright (C) 2023 Thomas Weise (汤卫思教授)

    Dr. Thomas Weise (see Contact) holds the copyright of this package except for the data of the benchmark sets we imported from other sources. moptipyapps is provided to the public as open source software under the GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007. Terms for other licenses, e.g., for specific industrial applications, can be negotiated with Dr. Thomas Weise (who can be reached via the contact information below).

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

    Please visit the contributions guidelines for moptipy if you would like to contribute to our package. If you have any concerns regarding security, please visit our security policy.

    5.1. Exceptions

    • Most of the included benchmark instance data of the two-dimensional bin packing problem is taken from 2DPackLib. It has been stored in a more size-efficient way and some unnecessary information has been stripped from it (as we really only need the raw bin packing data). Nevertheless, the copyright of the original data lies with the authors 2DPackLib or the original authors of the datasets used by them.

    • The included benchmark instances for the Traveling Salesperson Problem are taken from TSPLib. The copyright of the original data lies with Gerhard Reinelt, the original author of TSPLib, or the original authors of the datasets used by him.

    • The included benchmark instances for the Traveling Tournament Problem are taken from RobinX. The copyright of the original data lies with the authors of the dataset, presumably D. Van Bulck, D. Goossens, J. Schönberger, and M. Guajardo.

    • The included benchmark instances for the Quadratic Assignment Problem are taken from QAPLib, which is available at https://qaplib.mgi.polymtl.ca and https://coral.ise.lehigh.edu/data-sets/qaplib. The copyright of the original repository lies with R.E. Burkard, E. Çela, S.E. Karisch and F. Rendl as well as Peter Hahn and Miguel Anjos.

    6. Contact

    If you have any questions or suggestions, please contact Prof. Dr. Thomas Weise (汤卫思教授) of the Institute of Applied Optimization (应用优化研究所, IAO) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) via email to tweise@hfuu.edu.cn with CC to tweise@ustc.edu.cn.

    7. Modules and Code

    diff --git a/make_sh.html b/make_sh.html new file mode 100644 index 00000000..18122ea9 --- /dev/null +++ b/make_sh.html @@ -0,0 +1,87 @@ +

    #!/bin/bash
    +
    +# Make the moptipyapps package.
    +
    +# strict error handling
    +set -o pipefail  # trace ERR through pipes
    +set -o errtrace  # trace ERR through 'time command' and other functions
    +set -o nounset   # set -u : exit the script if you try to use an uninitialized variable
    +set -o errexit   # set -e : exit the script if any statement returns a non-true return value
    +
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Welcome to the build script."
    +
    +export BUILD_SCRIPT="${BASH_SOURCE[0]}"
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): We set the environment variable BUILD_SCRIPT='$BUILD_SCRIPT'."
    +
    +currentDir="$(pwd)"
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): We are working in directory: '$currentDir'."
    +
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Cleaning up old files."
    +rm -rf *.whl
    +find -type d -name "__pycache__" -prune -exec rm -rf {} \;
    +find -type d -name ".ruff_cache" -prune -exec rm -rf {} \;
    +rm -rf .mypy_cache
    +rm -rf .ruff_cache
    +rm -rf .pytest_cache
    +rm -rf build
    +rm -rf dist
    +rm -rf docs/build
    +rm -rf docs/source/*.rst
    +rm -rf moptipyapps.egg-info
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Done cleaning up old files."
    +
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): We setup a virtual environment in a temp directory."
    +venvDir="$(mktemp -d)"
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Got temp dir '$venvDir', now creating environment in it."
    +python3 -m venv --upgrade-deps --copies "$venvDir"
    +
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Activating virtual environment in '$venvDir'."
    +source "$venvDir/bin/activate"
    +
    +export PYTHON_INTERPRETER="$venvDir/bin/python3"
    +oldPythonPath="${PYTHONPATH:-}"
    +if [ -n "$oldPythonPath" ]; then
    +  export PYTHONPATH="$currentDir:$oldPythonPath"
    +else
    +  export PYTHONPATH="$currentDir"
    +fi
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): PYTHONPATH='$PYTHONPATH', PYTHON_INTERPRETER='$PYTHON_INTERPRETER'."
    +
    +cycle=1
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Installing requirements."
    +while ! (timeout --kill-after=60m 58m "$PYTHON_INTERPRETER" -m pip install --no-input --default-timeout=300 --timeout=300 --retries=100 -r requirements.txt && timeout --kill-after=60m 58m "$PYTHON_INTERPRETER" -m pip install --no-input --default-timeout=300 --timeout=300 --retries=100 -r requirements-dev.txt) ; do
    +    cycle=$((cycle+1))
    +    if (("$cycle" > 100)) ; then
    +        echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Something odd is happening: We have performed $cycle cycles of pip install and all failed. That's too many. Let's quit."
    +        exit 2
    +    fi
    +    echo "$(date +'%0Y-%0m-%0d %0R:%0S'): pip install failed, we will try again."
    +done
    +
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Printing the list of installed packages."
    +"$PYTHON_INTERPRETER" -m pip freeze
    +
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Now performing unit tests."
    +"$PYTHON_INTERPRETER" -m pycommons.dev.building.run_tests --package moptipyapps
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Finished running unit tests."
    +
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Now performing static analysis."
    +"$PYTHON_INTERPRETER" -m pycommons.dev.building.static_analysis --package moptipyapps
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Done: All static checks passed."
    +
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Now building documentation."
    +"$PYTHON_INTERPRETER" -m pycommons.dev.building.make_documentation --root "$currentDir" --package moptipyapps
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Done building documentation."
    +
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Now building source distribution file."
    +"$PYTHON_INTERPRETER" -m pycommons.dev.building.make_dist --root "$currentDir" --package moptipyapps
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Successfully finished building source distribution."
    +
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Now trying to install moptipyapps."
    +"$PYTHON_INTERPRETER" -m pip install --no-input --timeout 360 --retries 100 -v "$currentDir"
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): Successfully installed moptipyapps."
    +
    +
    +echo "$(date +'%0Y-%0m-%0d %0R:%0S'): We have finished the build process."
    +
    diff --git a/modules.html b/modules.html new file mode 100644 index 00000000..b1e94441 --- /dev/null +++ b/modules.html @@ -0,0 +1 @@ +moptipyapps — moptipyapps 0.8.62 documentation

    moptipyapps

    diff --git a/moptipyapps.binpacking2d.encodings.html b/moptipyapps.binpacking2d.encodings.html new file mode 100644 index 00000000..da27aa86 --- /dev/null +++ b/moptipyapps.binpacking2d.encodings.html @@ -0,0 +1 @@ +moptipyapps.binpacking2d.encodings package — moptipyapps 0.8.62 documentation

    moptipyapps.binpacking2d.encodings package

    Different encodings for the two-dimensional bin packing problem.

    The following encodings are implemented:

    • The improved bottom-left encoding 1, ibl_encoding_1, processes a permutation of objects from beginning to end and places the objects into the last bin (according to the improved-bottom-left method) until that bin is full and then begins to put them into the next bin.

    • The improved bottom-left encoding 2, ibl_encoding_2, processes a permutation of objects from beginning to end and places the objects into the first bin into which they fit (according to the improved-bottom-left method). It is slower than ibl_encoding_1 but its results are never worse for any permutation and better for several.

    Important initial work on this code has been contributed by Mr. Rui ZHAO (赵睿), <zr1329142665@163.com> a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    Submodules

    moptipyapps.binpacking2d.encodings.ibl_encoding_1 module

    An improved bottom left encoding by Liu and Teng extended to multiple bins.

    Here we provide an implementation of the improved bottom left encoding by Liu and Teng [1], but extended to bins with limited height. If the height of the bin is a limiting factor, then our implementation will automatically use multiple bins. Another implementation is given in moptipyapps.binpacking2d.encodings.ibl_encoding_2.

    An instance of the two-dimensional bin packing problem defines a set of objects to be packed and a bin size (width and height). Each object to be packed has itself a width and a height as well as a repetition counter, which is 1 if the object only occurs a single time and larger otherwise (i.e., if the repetition counter is 5, the object needs to be packaged five times).

    The encoding receives signed permutations with repetitions as input. Each element of the permutation identifies one object from the bin packing instance. Each such object ID must occur exactly as often as the repetition counter of the object in the instance data suggest. But the ID may also occur negated, in which case the object is supposed to rotated by 90°.

    Now our encoding processes such a permutation from beginning to end. It starts with an empty bin 1. Each object is first placed with its right end at the right end of the bin and with its bottom line exactly at the top of the bin, i.e., outside of the bin. Then, in each step, we move the object as far down as possible. Then, we move it to the left as far as possible, but we immediately stop if there was another chance to move the object down. In other words, downward movements are preferred over left movements. This is repeated until no movement of the object is possible anymore.

    Once the object cannot be moved anymore, we check if it is fully inside the bin. If yes, then the object is included in the bin and we continue with the next object. If not, it does not fit into the bin.

    This is the “Improved Bottom Left” heuristic by Liu and Teng [1].

    If the object does not fit into the current bin, we place it at the bottom-left corner of a new bin. We therefore increase the bin counter. From now on, all the following objects will be placed into this bin until the bin is full as well, in which case we move to the next bin again. This means that the current bin is closed at the same moment the first object is encountered that does not fit into it anymore. Therefore, the objects in a closed bin do no longer need to be considered when packing subsequent objects.

    This is different from the second variant of this encoding implemented in file moptipyapps.binpacking2d.encodings.ibl_encoding_2, which always checks all the bins, starting at bin 1, when placing any object. That other encoding variant therefore must always consider all bins and is thus slower, but tends to yield better packings.

    This procedure has originally been developed and implemented by Mr. Rui ZHAO (赵睿), <zr1329142665@163.com> a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    1. Dequan Liu and Hongfei Teng. An Improved BL-Algorithm for Genetic Algorithm of the Orthogonal Packing of Rectangles. European Journal of Operational Research. 112(2):413-420. January (1999). https://doi.org/10.1016/S0377-2217(97)00437-2. http://www.paper.edu.cn/scholar/showpdf/MUT2AN0IOTD0Mxxh.

    class moptipyapps.binpacking2d.encodings.ibl_encoding_1.ImprovedBottomLeftEncoding1(instance)[source]

    Bases: Encoding

    An Improved Bottem Left Encoding by Liu and Teng for multiple bins.

    decode(x, y)[source]

    Map a potentially signed permutation to a packing.

    Parameters:
    Return type:

    None

    log_parameters_to(logger)[source]

    Log all parameters of this component as key-value pairs.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    moptipyapps.binpacking2d.encodings.ibl_encoding_2 module

    An improved bottom left encoding by Liu and Teng extended to multiple bins.

    Here we provide an implementation of the improved bottom left encoding by Liu and Teng [1], but extended to bins with limited height. If the height of the bin is a limiting factor, then our implementation will automatically use multiple bins. Another variant is given in moptipyapps.binpacking2d.encodings.ibl_encoding_1.

    An instance instance of the two-dimensional bin packing problem defines a set of objects to be packed and a bin size (width and height). Each object to be packed has itself a width and a height as well as a repetition counter, which is 1 if the object only occurs a single time and larger otherwise (i.e., if the repetition counter is 5, the object needs to be packaged five times).

    The encoding receives signed permutations with repetitions as input. Each element of the permutation identifies one object from the bin packing instance. Each such object ID must occur exactly as often as the repetition counter of the object in the instance data suggest. But the ID may also occur negated, in which case the object is supposed to rotated by 90°.

    Now our encoding processes such a permutation from beginning to end. It starts with an empty bin 1. Each object is first placed with its right end at the right end of the first bin and with its bottom line exactly at the top of the bin, i.e., outside of the bin. Then, in each step, we move the object as far down as possible. Then, we move it to the left as far as possible, but we immediately stop if there was another chance to move the object down. In other words, downward movements are preferred over left movements. This is repeated until no movement of the object is possible anymore.

    Once the object cannot be moved anymore, we check if it is fully inside the bin. If yes, then the object is included in the bin and we continue with the next object. If not, it does not fit into the bin.

    This is the “Improved Bottom Left” heuristic by Liu and Teng [1].

    If the object does not fit into the first bin and we already “opened” a second bin, then we try to place it into the second bin using the same procedure. And then into the third bin if that does not work out, and so on. Until we have tried unsuccessfully all the bins that we have opened.

    In this case, we “open” the next bin and we place the object at the bottom-left corner of a new bin. Then we continue with the next object, again trying to put it into the first bin, then the second bin, and so on.

    This is different from the first variant of this encoding implemented in file moptipyapps.binpacking2d.encodings.ibl_encoding_2, which always and only tries to put objects into the last bin that was opened (and moves to a new bin if that does not work out). That variant of the encoding is therefore faster than the one here, but the one here tends to yield better packings.

    The problem with this is that we need to basically first try to put the object into the first bin. For this we need to look at all the objects that we have already placed, because it could be that we already have one object in the first bin, then one in the second bin that did not fit into the first bin, then one smaller object in the first bin again, and so on. If our new object does not fit into the first bin, then we need to do the same with the second bin, and so on. So for every bin we try, we need to look at all objects already placed. And the number of bins we could try could be equal to the number of objects that we have already placed (if each object occupies one bin alone). So we have a worst case complexity of O(n ** 2) for placing one object. And we do this for all objects, so we would have a O(n ** 3) overall complexity. Well, actually, it is worse: Because we repeat the process of looking at all the objects several times while moving our new item to the left and down and to the left and down. So I suspect that we actually have O(n ** 4). That is annoying.

    We try to alleviate this a little bit by remembering, for each bin, the index of the first object that we put in there and the index of the last object we put in there. Now within these two indices, there also might be objects that we placed into other bins. But for a very little overhead (remembering two values per bin), we have a certain chance to speed up the process in several situations. For instance, the worst case from above, that each object occupies exactly one bin by itself becomes easier because we would only look at one already placed object per bin.

    This procedure has originally been developed and implemented by Mr. Rui ZHAO (赵睿), <zr1329142665@163.com>, a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    1. Dequan Liu and Hongfei Teng. An Improved BL-Algorithm for Genetic Algorithm of the Orthogonal Packing of Rectangles. European Journal of Operational Research. 112(2):413-420. January (1999). https://doi.org/10.1016/S0377-2217(97)00437-2. http://www.paper.edu.cn/scholar/showpdf/MUT2AN0IOTD0Mxxh.

    class moptipyapps.binpacking2d.encodings.ibl_encoding_2.ImprovedBottomLeftEncoding2(instance)[source]

    Bases: Encoding

    An Improved Bottem Left Encoding by Liu and Teng for multiple bins.

    decode(x, y)[source]

    Map a potentially signed permutation to a packing.

    Parameters:
    Return type:

    None

    log_parameters_to(logger)[source]

    Log all parameters of this component as key-value pairs.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    diff --git a/moptipyapps.binpacking2d.html b/moptipyapps.binpacking2d.html new file mode 100644 index 00000000..eb4771cb --- /dev/null +++ b/moptipyapps.binpacking2d.html @@ -0,0 +1,133 @@ +moptipyapps.binpacking2d package — moptipyapps 0.8.62 documentation

    moptipyapps.binpacking2d package

    Codes for the two-dimensional bin packing problem.

    • instance provides the instance data of two-dimensional bin packing problems. The instance data comprises the object sizes and multiplicities as well as the bin sizes. Several default instances from 2DPackLib (https://site.unibo.it/operations-research/en/research/2dpacklib) can be loaded from resources.

    • packing can store a packing, i.e., an assignment of objects to coordinates and bins. Such packings are solutions to the bin packing problem.

    • packing_space provides an implementation of the space interface for the packing objects. This class allows, for example, to instantiate the packings, to verify whether they are correct, and to convert them to and from strings.

    • plot_packing allows you to plot a packing.

    • ibl_encoding_1 is an implementation of the improved bottom-left encoding which closes bins immediately once an object does not fit.

    • ibl_encoding_2 is another implementation of the improved bottom-left encoding which tests each bin for each object.

    • bin_count_and_last_empty provides an objective function that tries to minimize the number of bins and pushes towards decreasing the number of objects in the very last bin used.

    • make_instances offers a method to download the two-dimensional bin packing instances from the original sources in the [2DPackLib](https://site.unibo.it/operations-research/en/research/2dpacklib) format.

    Important initial work on this code has been contributed by Mr. Rui ZHAO (赵睿), <zr1329142665@163.com> a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    Subpackages

    Submodules

    moptipyapps.binpacking2d.bks module

    In this file, we provide a set of best-known solutions for the 2D-BPP.

    moptipyapps.binpacking2d.bks.ASQAS: Final[Element] = Element(name='asqas', name_suffix='', reference='vdBBMSB2016ASIASSTFI')

    the asqas

    moptipyapps.binpacking2d.bks.A_LARGE: Final[Element] = Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP')

    the large A instances

    moptipyapps.binpacking2d.bks.A_MED: Final[Element] = Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP')

    the median sized A instances

    moptipyapps.binpacking2d.bks.A_SMALL: Final[Element] = Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP')

    the small A instances

    moptipyapps.binpacking2d.bks.BENG_1_8: Final[Element] = Element(name='beng', name_suffix='1-8', reference='B1982PRPAHA')

    the first part of the Beng instances

    moptipyapps.binpacking2d.bks.BENG_9_10: Final[Element] = Element(name='beng', name_suffix='9-10', reference='B1982PRPAHA')

    the second part of the Beng instances

    moptipyapps.binpacking2d.bks.BRKGA_BPP_2R: Final[Element] = Element(name='BRKGA', name_suffix='BRKGABPPRTR', reference='GR2013ABRKGAF2A3BPP')

    the BRKGA for 2D bin packing with rotation

    moptipyapps.binpacking2d.bks.BRKGA_BPP_ANB: Final[Element] = Element(name='BRKGA', name_suffix='BRKGABPPRANB', reference='GR2013ABRKGAF2A3BPP')

    the BRKGA for 2D bin packing without rotation

    moptipyapps.binpacking2d.bks.CLASS_10_100: Final[Element] = Element(name='class 10', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 6-100 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_10_20: Final[Element] = Element(name='class 10', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 10-20 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_10_40: Final[Element] = Element(name='class 10', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 10-40 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_10_60: Final[Element] = Element(name='class 10', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 10-60 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_10_80: Final[Element] = Element(name='class 10', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 10-80 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_1_100: Final[Element] = Element(name='class 1', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 1-100 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_1_20: Final[Element] = Element(name='class 1', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 1-20 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_1_40: Final[Element] = Element(name='class 1', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 1-40 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_1_60: Final[Element] = Element(name='class 1', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 1-60 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_1_80: Final[Element] = Element(name='class 1', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 1-80 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_2_100: Final[Element] = Element(name='class 2', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 1-100 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_2_20: Final[Element] = Element(name='class 2', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 2-20 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_2_40: Final[Element] = Element(name='class 2', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 2-40 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_2_60: Final[Element] = Element(name='class 2', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 2-60 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_2_80: Final[Element] = Element(name='class 2', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 2-80 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_3_100: Final[Element] = Element(name='class 3', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 3-100 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_3_20: Final[Element] = Element(name='class 3', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 3-20 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_3_40: Final[Element] = Element(name='class 3', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 1-40 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_3_60: Final[Element] = Element(name='class 3', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 3-60 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_3_80: Final[Element] = Element(name='class 3', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 3-80 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_4_100: Final[Element] = Element(name='class 4', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 4-100 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_4_20: Final[Element] = Element(name='class 4', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 4-20 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_4_40: Final[Element] = Element(name='class 4', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 4-40 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_4_60: Final[Element] = Element(name='class 4', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 4-60 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_4_80: Final[Element] = Element(name='class 4', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 4-80 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_5_100: Final[Element] = Element(name='class 5', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 5-100 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_5_20: Final[Element] = Element(name='class 5', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 5-20 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_5_40: Final[Element] = Element(name='class 5', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 5-40 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_5_60: Final[Element] = Element(name='class 5', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 5-60 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_5_80: Final[Element] = Element(name='class 5', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 5-80 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_6_100: Final[Element] = Element(name='class 6', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 6-100 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_6_20: Final[Element] = Element(name='class 6', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 6-20 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_6_40: Final[Element] = Element(name='class 6', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 6-40 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_6_60: Final[Element] = Element(name='class 6', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 6-60 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_6_80: Final[Element] = Element(name='class 6', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 6-80 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_7_100: Final[Element] = Element(name='class 7', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 7-100 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_7_20: Final[Element] = Element(name='class 7', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 7-20 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_7_40: Final[Element] = Element(name='class 7', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 7-40 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_7_60: Final[Element] = Element(name='class 7', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 7-60 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_7_80: Final[Element] = Element(name='class 7', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 7-80 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_8_100: Final[Element] = Element(name='class 8', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 8-100 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_8_20: Final[Element] = Element(name='class 8', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 8-20 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_8_40: Final[Element] = Element(name='class 8', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 8-40 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_8_60: Final[Element] = Element(name='class 8', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 8-60 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_8_80: Final[Element] = Element(name='class 8', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 8-80 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_9_100: Final[Element] = Element(name='class 9', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 9-100 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_9_20: Final[Element] = Element(name='class 9', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 9-20 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_9_40: Final[Element] = Element(name='class 9', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 9-40 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_9_60: Final[Element] = Element(name='class 9', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 9-60 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_9_80: Final[Element] = Element(name='class 9', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP')

    the class 9-80 benchmarks

    moptipyapps.binpacking2d.bks.CLASS_AND_BENG: Final[tuple[Element, ...]] = (Element(name='beng', name_suffix='1-8', reference='B1982PRPAHA'), Element(name='beng', name_suffix='9-10', reference='B1982PRPAHA'), Element(name='class 1', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 1', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 1', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 1', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 1', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 2', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 2', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 2', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 2', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 2', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 3', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 3', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 3', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 3', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 3', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 4', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 4', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 4', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 4', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 4', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 5', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 5', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 5', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 5', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 5', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 6', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 6', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 6', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 6', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 6', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 7', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 7', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 7', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 7', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 7', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 8', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 8', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 8', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 8', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 8', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 9', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 9', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 9', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 9', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 9', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 10', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 10', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 10', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 10', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), Element(name='class 10', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'))

    The set of class and beng instance groups

    moptipyapps.binpacking2d.bks.EALGFI: Final[Element] = Element(name='EALGFIEA', name_suffix='EALGFILGFI', reference='BS2013ST2BPPBMOAHEA')

    the LGFi algorithm

    class moptipyapps.binpacking2d.bks.Element(name, name_suffix, reference='{{NO_REF}}')[source]

    Bases: object

    The algorithm or instance group specification.

    get_bibtex()[source]

    Get the BibTeX for this element.

    Return type:

    Iterable[str]

    Returns:

    the BibTeX string

    name: str

    the name or name prefix

    name_suffix: str

    the name suffix, if any, and the empty string otherwise

    reference: str

    the reference to the related work

    moptipyapps.binpacking2d.bks.GRASP_VND: Final[Element] = Element(name='GRASPVNDGRASP', name_suffix='GRASPVNDVND', reference='PAVOT2010AHGVAFTATDBP')

    the grasp/vnd for 2D bin packing without rotation

    moptipyapps.binpacking2d.bks.GROUPS_TO_INSTANCES: Final[Mapping[Element, tuple[str, ...]]] = mappingproxy({Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP'): ('a01', 'a02', 'a03', 'a04', 'a06', 'a08', 'a10', 'a12', 'a22', 'a30', 'a34', 'a39', 'a42', 'a43'), Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP'): ('a05', 'a07', 'a17', 'a25', 'a26', 'a27', 'a28', 'a31', 'a35', 'a36', 'a37', 'a38', 'a40', 'a41'), Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'): ('a09', 'a11', 'a13', 'a14', 'a15', 'a16', 'a18', 'a19', 'a20', 'a21', 'a23', 'a24', 'a29', 'a32', 'a33'), Element(name='beng', name_suffix='1-8', reference='B1982PRPAHA'): ('beng01', 'beng02', 'beng03', 'beng04', 'beng05', 'beng06', 'beng07', 'beng08'), Element(name='beng', name_suffix='9-10', reference='B1982PRPAHA'): ('beng09', 'beng10'), Element(name='class 1', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl01_020_01', 'cl01_020_02', 'cl01_020_03', 'cl01_020_04', 'cl01_020_05', 'cl01_020_06', 'cl01_020_07', 'cl01_020_08', 'cl01_020_09', 'cl01_020_10'), Element(name='class 1', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl01_040_01', 'cl01_040_02', 'cl01_040_03', 'cl01_040_04', 'cl01_040_05', 'cl01_040_06', 'cl01_040_07', 'cl01_040_08', 'cl01_040_09', 'cl01_040_10'), Element(name='class 1', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl01_060_01', 'cl01_060_02', 'cl01_060_03', 'cl01_060_04', 'cl01_060_05', 'cl01_060_06', 'cl01_060_07', 'cl01_060_08', 'cl01_060_09', 'cl01_060_10'), Element(name='class 1', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl01_080_01', 'cl01_080_02', 'cl01_080_03', 'cl01_080_04', 'cl01_080_05', 'cl01_080_06', 'cl01_080_07', 'cl01_080_08', 'cl01_080_09', 'cl01_080_10'), Element(name='class 1', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl01_100_01', 'cl01_100_02', 'cl01_100_03', 'cl01_100_04', 'cl01_100_05', 'cl01_100_06', 'cl01_100_07', 'cl01_100_08', 'cl01_100_09', 'cl01_100_10'), Element(name='class 2', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl02_020_01', 'cl02_020_02', 'cl02_020_03', 'cl02_020_04', 'cl02_020_05', 'cl02_020_06', 'cl02_020_07', 'cl02_020_08', 'cl02_020_09', 'cl02_020_10'), Element(name='class 2', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl02_040_01', 'cl02_040_02', 'cl02_040_03', 'cl02_040_04', 'cl02_040_05', 'cl02_040_06', 'cl02_040_07', 'cl02_040_08', 'cl02_040_09', 'cl02_040_10'), Element(name='class 2', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl02_060_01', 'cl02_060_02', 'cl02_060_03', 'cl02_060_04', 'cl02_060_05', 'cl02_060_06', 'cl02_060_07', 'cl02_060_08', 'cl02_060_09', 'cl02_060_10'), Element(name='class 2', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl02_080_01', 'cl02_080_02', 'cl02_080_03', 'cl02_080_04', 'cl02_080_05', 'cl02_080_06', 'cl02_080_07', 'cl02_080_08', 'cl02_080_09', 'cl02_080_10'), Element(name='class 2', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl02_100_01', 'cl02_100_02', 'cl02_100_03', 'cl02_100_04', 'cl02_100_05', 'cl02_100_06', 'cl02_100_07', 'cl02_100_08', 'cl02_100_09', 'cl02_100_10'), Element(name='class 3', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl03_020_01', 'cl03_020_02', 'cl03_020_03', 'cl03_020_04', 'cl03_020_05', 'cl03_020_06', 'cl03_020_07', 'cl03_020_08', 'cl03_020_09', 'cl03_020_10'), Element(name='class 3', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl03_040_01', 'cl03_040_02', 'cl03_040_03', 'cl03_040_04', 'cl03_040_05', 'cl03_040_06', 'cl03_040_07', 'cl03_040_08', 'cl03_040_09', 'cl03_040_10'), Element(name='class 3', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl03_060_01', 'cl03_060_02', 'cl03_060_03', 'cl03_060_04', 'cl03_060_05', 'cl03_060_06', 'cl03_060_07', 'cl03_060_08', 'cl03_060_09', 'cl03_060_10'), Element(name='class 3', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl03_080_01', 'cl03_080_02', 'cl03_080_03', 'cl03_080_04', 'cl03_080_05', 'cl03_080_06', 'cl03_080_07', 'cl03_080_08', 'cl03_080_09', 'cl03_080_10'), Element(name='class 3', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl03_100_01', 'cl03_100_02', 'cl03_100_03', 'cl03_100_04', 'cl03_100_05', 'cl03_100_06', 'cl03_100_07', 'cl03_100_08', 'cl03_100_09', 'cl03_100_10'), Element(name='class 4', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl04_020_01', 'cl04_020_02', 'cl04_020_03', 'cl04_020_04', 'cl04_020_05', 'cl04_020_06', 'cl04_020_07', 'cl04_020_08', 'cl04_020_09', 'cl04_020_10'), Element(name='class 4', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl04_040_01', 'cl04_040_02', 'cl04_040_03', 'cl04_040_04', 'cl04_040_05', 'cl04_040_06', 'cl04_040_07', 'cl04_040_08', 'cl04_040_09', 'cl04_040_10'), Element(name='class 4', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl04_060_01', 'cl04_060_02', 'cl04_060_03', 'cl04_060_04', 'cl04_060_05', 'cl04_060_06', 'cl04_060_07', 'cl04_060_08', 'cl04_060_09', 'cl04_060_10'), Element(name='class 4', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl04_080_01', 'cl04_080_02', 'cl04_080_03', 'cl04_080_04', 'cl04_080_05', 'cl04_080_06', 'cl04_080_07', 'cl04_080_08', 'cl04_080_09', 'cl04_080_10'), Element(name='class 4', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl04_100_01', 'cl04_100_02', 'cl04_100_03', 'cl04_100_04', 'cl04_100_05', 'cl04_100_06', 'cl04_100_07', 'cl04_100_08', 'cl04_100_09', 'cl04_100_10'), Element(name='class 5', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl05_020_01', 'cl05_020_02', 'cl05_020_03', 'cl05_020_04', 'cl05_020_05', 'cl05_020_06', 'cl05_020_07', 'cl05_020_08', 'cl05_020_09', 'cl05_020_10'), Element(name='class 5', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl05_040_01', 'cl05_040_02', 'cl05_040_03', 'cl05_040_04', 'cl05_040_05', 'cl05_040_06', 'cl05_040_07', 'cl05_040_08', 'cl05_040_09', 'cl05_040_10'), Element(name='class 5', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl05_060_01', 'cl05_060_02', 'cl05_060_03', 'cl05_060_04', 'cl05_060_05', 'cl05_060_06', 'cl05_060_07', 'cl05_060_08', 'cl05_060_09', 'cl05_060_10'), Element(name='class 5', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl05_080_01', 'cl05_080_02', 'cl05_080_03', 'cl05_080_04', 'cl05_080_05', 'cl05_080_06', 'cl05_080_07', 'cl05_080_08', 'cl05_080_09', 'cl05_080_10'), Element(name='class 5', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl05_100_01', 'cl05_100_02', 'cl05_100_03', 'cl05_100_04', 'cl05_100_05', 'cl05_100_06', 'cl05_100_07', 'cl05_100_08', 'cl05_100_09', 'cl05_100_10'), Element(name='class 6', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl06_020_01', 'cl06_020_02', 'cl06_020_03', 'cl06_020_04', 'cl06_020_05', 'cl06_020_06', 'cl06_020_07', 'cl06_020_08', 'cl06_020_09', 'cl06_020_10'), Element(name='class 6', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl06_040_01', 'cl06_040_02', 'cl06_040_03', 'cl06_040_04', 'cl06_040_05', 'cl06_040_06', 'cl06_040_07', 'cl06_040_08', 'cl06_040_09', 'cl06_040_10'), Element(name='class 6', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl06_060_01', 'cl06_060_02', 'cl06_060_03', 'cl06_060_04', 'cl06_060_05', 'cl06_060_06', 'cl06_060_07', 'cl06_060_08', 'cl06_060_09', 'cl06_060_10'), Element(name='class 6', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl06_080_01', 'cl06_080_02', 'cl06_080_03', 'cl06_080_04', 'cl06_080_05', 'cl06_080_06', 'cl06_080_07', 'cl06_080_08', 'cl06_080_09', 'cl06_080_10'), Element(name='class 6', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl06_100_01', 'cl06_100_02', 'cl06_100_03', 'cl06_100_04', 'cl06_100_05', 'cl06_100_06', 'cl06_100_07', 'cl06_100_08', 'cl06_100_09', 'cl06_100_10'), Element(name='class 7', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl07_020_01', 'cl07_020_02', 'cl07_020_03', 'cl07_020_04', 'cl07_020_05', 'cl07_020_06', 'cl07_020_07', 'cl07_020_08', 'cl07_020_09', 'cl07_020_10'), Element(name='class 7', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl07_040_01', 'cl07_040_02', 'cl07_040_03', 'cl07_040_04', 'cl07_040_05', 'cl07_040_06', 'cl07_040_07', 'cl07_040_08', 'cl07_040_09', 'cl07_040_10'), Element(name='class 7', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl07_060_01', 'cl07_060_02', 'cl07_060_03', 'cl07_060_04', 'cl07_060_05', 'cl07_060_06', 'cl07_060_07', 'cl07_060_08', 'cl07_060_09', 'cl07_060_10'), Element(name='class 7', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl07_080_01', 'cl07_080_02', 'cl07_080_03', 'cl07_080_04', 'cl07_080_05', 'cl07_080_06', 'cl07_080_07', 'cl07_080_08', 'cl07_080_09', 'cl07_080_10'), Element(name='class 7', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl07_100_01', 'cl07_100_02', 'cl07_100_03', 'cl07_100_04', 'cl07_100_05', 'cl07_100_06', 'cl07_100_07', 'cl07_100_08', 'cl07_100_09', 'cl07_100_10'), Element(name='class 8', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl08_020_01', 'cl08_020_02', 'cl08_020_03', 'cl08_020_04', 'cl08_020_05', 'cl08_020_06', 'cl08_020_07', 'cl08_020_08', 'cl08_020_09', 'cl08_020_10'), Element(name='class 8', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl08_040_01', 'cl08_040_02', 'cl08_040_03', 'cl08_040_04', 'cl08_040_05', 'cl08_040_06', 'cl08_040_07', 'cl08_040_08', 'cl08_040_09', 'cl08_040_10'), Element(name='class 8', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl08_060_01', 'cl08_060_02', 'cl08_060_03', 'cl08_060_04', 'cl08_060_05', 'cl08_060_06', 'cl08_060_07', 'cl08_060_08', 'cl08_060_09', 'cl08_060_10'), Element(name='class 8', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl08_080_01', 'cl08_080_02', 'cl08_080_03', 'cl08_080_04', 'cl08_080_05', 'cl08_080_06', 'cl08_080_07', 'cl08_080_08', 'cl08_080_09', 'cl08_080_10'), Element(name='class 8', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl08_100_01', 'cl08_100_02', 'cl08_100_03', 'cl08_100_04', 'cl08_100_05', 'cl08_100_06', 'cl08_100_07', 'cl08_100_08', 'cl08_100_09', 'cl08_100_10'), Element(name='class 9', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl09_020_01', 'cl09_020_02', 'cl09_020_03', 'cl09_020_04', 'cl09_020_05', 'cl09_020_06', 'cl09_020_07', 'cl09_020_08', 'cl09_020_09', 'cl09_020_10'), Element(name='class 9', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl09_040_01', 'cl09_040_02', 'cl09_040_03', 'cl09_040_04', 'cl09_040_05', 'cl09_040_06', 'cl09_040_07', 'cl09_040_08', 'cl09_040_09', 'cl09_040_10'), Element(name='class 9', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl09_060_01', 'cl09_060_02', 'cl09_060_03', 'cl09_060_04', 'cl09_060_05', 'cl09_060_06', 'cl09_060_07', 'cl09_060_08', 'cl09_060_09', 'cl09_060_10'), Element(name='class 9', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl09_080_01', 'cl09_080_02', 'cl09_080_03', 'cl09_080_04', 'cl09_080_05', 'cl09_080_06', 'cl09_080_07', 'cl09_080_08', 'cl09_080_09', 'cl09_080_10'), Element(name='class 9', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl09_100_01', 'cl09_100_02', 'cl09_100_03', 'cl09_100_04', 'cl09_100_05', 'cl09_100_06', 'cl09_100_07', 'cl09_100_08', 'cl09_100_09', 'cl09_100_10'), Element(name='class 10', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl10_020_01', 'cl10_020_02', 'cl10_020_03', 'cl10_020_04', 'cl10_020_05', 'cl10_020_06', 'cl10_020_07', 'cl10_020_08', 'cl10_020_09', 'cl10_020_10'), Element(name='class 10', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl10_040_01', 'cl10_040_02', 'cl10_040_03', 'cl10_040_04', 'cl10_040_05', 'cl10_040_06', 'cl10_040_07', 'cl10_040_08', 'cl10_040_09', 'cl10_040_10'), Element(name='class 10', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl10_060_01', 'cl10_060_02', 'cl10_060_03', 'cl10_060_04', 'cl10_060_05', 'cl10_060_06', 'cl10_060_07', 'cl10_060_08', 'cl10_060_09', 'cl10_060_10'), Element(name='class 10', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl10_080_01', 'cl10_080_02', 'cl10_080_03', 'cl10_080_04', 'cl10_080_05', 'cl10_080_06', 'cl10_080_07', 'cl10_080_08', 'cl10_080_09', 'cl10_080_10'), Element(name='class 10', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'): ('cl10_100_01', 'cl10_100_02', 'cl10_100_03', 'cl10_100_04', 'cl10_100_05', 'cl10_100_06', 'cl10_100_07', 'cl10_100_08', 'cl10_100_09', 'cl10_100_10'), Element(name='asqas', name_suffix='', reference='vdBBMSB2016ASIASSTFI'): ('asqas03', 'asqas08', 'asqas20', 'asqas34')})

    a mapping of instance groups to instances

    moptipyapps.binpacking2d.bks.HHANO_R: Final[Element] = Element(name='HHANO', name_suffix='HHANOR', reference='BDC2015RHHAFTOONO2BPP')

    the HHANO-R algorithm for 2D bin packing with rotation

    moptipyapps.binpacking2d.bks.HHANO_SR: Final[Element] = Element(name='HHANO', name_suffix='HHANOSR', reference='BDC2015RHHAFTOONO2BPP')

    the HHANO-SR algorithm for 2D bin packing with rotation

    moptipyapps.binpacking2d.bks.INSTANCES_TO_GROUPS: Final[Mapping[str, Element]] = mappingproxy({'a01': Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP'), 'a02': Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP'), 'a03': Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP'), 'a04': Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP'), 'a05': Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP'), 'a06': Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP'), 'a07': Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP'), 'a08': Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP'), 'a09': Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'), 'a10': Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP'), 'a11': Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'), 'a12': Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP'), 'a13': Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'), 'a14': Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'), 'a15': Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'), 'a16': Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'), 'a17': Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP'), 'a18': Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'), 'a19': Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'), 'a20': Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'), 'a21': Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'), 'a22': Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP'), 'a23': Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'), 'a24': Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'), 'a25': Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP'), 'a26': Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP'), 'a27': Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP'), 'a28': Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP'), 'a29': Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'), 'a30': Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP'), 'a31': Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP'), 'a32': Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'), 'a33': Element(name='a', name_suffix='large', reference='MAVdC2010AFMFTTDGCSP'), 'a34': Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP'), 'a35': Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP'), 'a36': Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP'), 'a37': Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP'), 'a38': Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP'), 'a39': Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP'), 'a40': Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP'), 'a41': Element(name='a', name_suffix='med', reference='MAVdC2010AFMFTTDGCSP'), 'a42': Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP'), 'a43': Element(name='a', name_suffix='small', reference='MAVdC2010AFMFTTDGCSP'), 'beng01': Element(name='beng', name_suffix='1-8', reference='B1982PRPAHA'), 'beng02': Element(name='beng', name_suffix='1-8', reference='B1982PRPAHA'), 'beng03': Element(name='beng', name_suffix='1-8', reference='B1982PRPAHA'), 'beng04': Element(name='beng', name_suffix='1-8', reference='B1982PRPAHA'), 'beng05': Element(name='beng', name_suffix='1-8', reference='B1982PRPAHA'), 'beng06': Element(name='beng', name_suffix='1-8', reference='B1982PRPAHA'), 'beng07': Element(name='beng', name_suffix='1-8', reference='B1982PRPAHA'), 'beng08': Element(name='beng', name_suffix='1-8', reference='B1982PRPAHA'), 'beng09': Element(name='beng', name_suffix='9-10', reference='B1982PRPAHA'), 'beng10': Element(name='beng', name_suffix='9-10', reference='B1982PRPAHA'), 'cl01_020_01': Element(name='class 1', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_020_02': Element(name='class 1', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_020_03': Element(name='class 1', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_020_04': Element(name='class 1', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_020_05': Element(name='class 1', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_020_06': Element(name='class 1', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_020_07': Element(name='class 1', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_020_08': Element(name='class 1', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_020_09': Element(name='class 1', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_020_10': Element(name='class 1', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_040_01': Element(name='class 1', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_040_02': Element(name='class 1', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_040_03': Element(name='class 1', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_040_04': Element(name='class 1', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_040_05': Element(name='class 1', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_040_06': Element(name='class 1', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_040_07': Element(name='class 1', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_040_08': Element(name='class 1', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_040_09': Element(name='class 1', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_040_10': Element(name='class 1', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_060_01': Element(name='class 1', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_060_02': Element(name='class 1', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_060_03': Element(name='class 1', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_060_04': Element(name='class 1', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_060_05': Element(name='class 1', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_060_06': Element(name='class 1', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_060_07': Element(name='class 1', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_060_08': Element(name='class 1', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_060_09': Element(name='class 1', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_060_10': Element(name='class 1', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_080_01': Element(name='class 1', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_080_02': Element(name='class 1', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_080_03': Element(name='class 1', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_080_04': Element(name='class 1', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_080_05': Element(name='class 1', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_080_06': Element(name='class 1', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_080_07': Element(name='class 1', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_080_08': Element(name='class 1', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_080_09': Element(name='class 1', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_080_10': Element(name='class 1', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_100_01': Element(name='class 1', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_100_02': Element(name='class 1', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_100_03': Element(name='class 1', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_100_04': Element(name='class 1', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_100_05': Element(name='class 1', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_100_06': Element(name='class 1', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_100_07': Element(name='class 1', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_100_08': Element(name='class 1', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_100_09': Element(name='class 1', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl01_100_10': Element(name='class 1', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_020_01': Element(name='class 2', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_020_02': Element(name='class 2', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_020_03': Element(name='class 2', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_020_04': Element(name='class 2', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_020_05': Element(name='class 2', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_020_06': Element(name='class 2', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_020_07': Element(name='class 2', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_020_08': Element(name='class 2', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_020_09': Element(name='class 2', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_020_10': Element(name='class 2', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_040_01': Element(name='class 2', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_040_02': Element(name='class 2', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_040_03': Element(name='class 2', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_040_04': Element(name='class 2', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_040_05': Element(name='class 2', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_040_06': Element(name='class 2', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_040_07': Element(name='class 2', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_040_08': Element(name='class 2', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_040_09': Element(name='class 2', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_040_10': Element(name='class 2', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_060_01': Element(name='class 2', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_060_02': Element(name='class 2', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_060_03': Element(name='class 2', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_060_04': Element(name='class 2', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_060_05': Element(name='class 2', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_060_06': Element(name='class 2', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_060_07': Element(name='class 2', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_060_08': Element(name='class 2', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_060_09': Element(name='class 2', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_060_10': Element(name='class 2', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_080_01': Element(name='class 2', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_080_02': Element(name='class 2', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_080_03': Element(name='class 2', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_080_04': Element(name='class 2', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_080_05': Element(name='class 2', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_080_06': Element(name='class 2', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_080_07': Element(name='class 2', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_080_08': Element(name='class 2', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_080_09': Element(name='class 2', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_080_10': Element(name='class 2', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_100_01': Element(name='class 2', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_100_02': Element(name='class 2', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_100_03': Element(name='class 2', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_100_04': Element(name='class 2', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_100_05': Element(name='class 2', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_100_06': Element(name='class 2', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_100_07': Element(name='class 2', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_100_08': Element(name='class 2', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_100_09': Element(name='class 2', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl02_100_10': Element(name='class 2', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_020_01': Element(name='class 3', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_020_02': Element(name='class 3', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_020_03': Element(name='class 3', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_020_04': Element(name='class 3', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_020_05': Element(name='class 3', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_020_06': Element(name='class 3', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_020_07': Element(name='class 3', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_020_08': Element(name='class 3', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_020_09': Element(name='class 3', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_020_10': Element(name='class 3', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_040_01': Element(name='class 3', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_040_02': Element(name='class 3', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_040_03': Element(name='class 3', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_040_04': Element(name='class 3', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_040_05': Element(name='class 3', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_040_06': Element(name='class 3', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_040_07': Element(name='class 3', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_040_08': Element(name='class 3', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_040_09': Element(name='class 3', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_040_10': Element(name='class 3', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_060_01': Element(name='class 3', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_060_02': Element(name='class 3', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_060_03': Element(name='class 3', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_060_04': Element(name='class 3', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_060_05': Element(name='class 3', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_060_06': Element(name='class 3', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_060_07': Element(name='class 3', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_060_08': Element(name='class 3', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_060_09': Element(name='class 3', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_060_10': Element(name='class 3', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_080_01': Element(name='class 3', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_080_02': Element(name='class 3', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_080_03': Element(name='class 3', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_080_04': Element(name='class 3', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_080_05': Element(name='class 3', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_080_06': Element(name='class 3', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_080_07': Element(name='class 3', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_080_08': Element(name='class 3', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_080_09': Element(name='class 3', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_080_10': Element(name='class 3', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_100_01': Element(name='class 3', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_100_02': Element(name='class 3', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_100_03': Element(name='class 3', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_100_04': Element(name='class 3', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_100_05': Element(name='class 3', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_100_06': Element(name='class 3', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_100_07': Element(name='class 3', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_100_08': Element(name='class 3', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_100_09': Element(name='class 3', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl03_100_10': Element(name='class 3', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_020_01': Element(name='class 4', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_020_02': Element(name='class 4', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_020_03': Element(name='class 4', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_020_04': Element(name='class 4', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_020_05': Element(name='class 4', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_020_06': Element(name='class 4', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_020_07': Element(name='class 4', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_020_08': Element(name='class 4', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_020_09': Element(name='class 4', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_020_10': Element(name='class 4', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_040_01': Element(name='class 4', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_040_02': Element(name='class 4', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_040_03': Element(name='class 4', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_040_04': Element(name='class 4', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_040_05': Element(name='class 4', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_040_06': Element(name='class 4', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_040_07': Element(name='class 4', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_040_08': Element(name='class 4', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_040_09': Element(name='class 4', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_040_10': Element(name='class 4', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_060_01': Element(name='class 4', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_060_02': Element(name='class 4', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_060_03': Element(name='class 4', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_060_04': Element(name='class 4', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_060_05': Element(name='class 4', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_060_06': Element(name='class 4', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_060_07': Element(name='class 4', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_060_08': Element(name='class 4', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_060_09': Element(name='class 4', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_060_10': Element(name='class 4', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_080_01': Element(name='class 4', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_080_02': Element(name='class 4', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_080_03': Element(name='class 4', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_080_04': Element(name='class 4', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_080_05': Element(name='class 4', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_080_06': Element(name='class 4', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_080_07': Element(name='class 4', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_080_08': Element(name='class 4', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_080_09': Element(name='class 4', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_080_10': Element(name='class 4', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_100_01': Element(name='class 4', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_100_02': Element(name='class 4', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_100_03': Element(name='class 4', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_100_04': Element(name='class 4', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_100_05': Element(name='class 4', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_100_06': Element(name='class 4', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_100_07': Element(name='class 4', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_100_08': Element(name='class 4', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_100_09': Element(name='class 4', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl04_100_10': Element(name='class 4', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_020_01': Element(name='class 5', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_020_02': Element(name='class 5', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_020_03': Element(name='class 5', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_020_04': Element(name='class 5', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_020_05': Element(name='class 5', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_020_06': Element(name='class 5', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_020_07': Element(name='class 5', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_020_08': Element(name='class 5', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_020_09': Element(name='class 5', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_020_10': Element(name='class 5', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_040_01': Element(name='class 5', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_040_02': Element(name='class 5', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_040_03': Element(name='class 5', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_040_04': Element(name='class 5', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_040_05': Element(name='class 5', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_040_06': Element(name='class 5', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_040_07': Element(name='class 5', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_040_08': Element(name='class 5', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_040_09': Element(name='class 5', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_040_10': Element(name='class 5', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_060_01': Element(name='class 5', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_060_02': Element(name='class 5', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_060_03': Element(name='class 5', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_060_04': Element(name='class 5', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_060_05': Element(name='class 5', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_060_06': Element(name='class 5', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_060_07': Element(name='class 5', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_060_08': Element(name='class 5', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_060_09': Element(name='class 5', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_060_10': Element(name='class 5', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_080_01': Element(name='class 5', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_080_02': Element(name='class 5', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_080_03': Element(name='class 5', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_080_04': Element(name='class 5', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_080_05': Element(name='class 5', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_080_06': Element(name='class 5', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_080_07': Element(name='class 5', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_080_08': Element(name='class 5', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_080_09': Element(name='class 5', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_080_10': Element(name='class 5', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_100_01': Element(name='class 5', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_100_02': Element(name='class 5', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_100_03': Element(name='class 5', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_100_04': Element(name='class 5', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_100_05': Element(name='class 5', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_100_06': Element(name='class 5', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_100_07': Element(name='class 5', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_100_08': Element(name='class 5', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_100_09': Element(name='class 5', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl05_100_10': Element(name='class 5', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_020_01': Element(name='class 6', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_020_02': Element(name='class 6', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_020_03': Element(name='class 6', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_020_04': Element(name='class 6', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_020_05': Element(name='class 6', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_020_06': Element(name='class 6', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_020_07': Element(name='class 6', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_020_08': Element(name='class 6', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_020_09': Element(name='class 6', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_020_10': Element(name='class 6', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_040_01': Element(name='class 6', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_040_02': Element(name='class 6', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_040_03': Element(name='class 6', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_040_04': Element(name='class 6', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_040_05': Element(name='class 6', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_040_06': Element(name='class 6', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_040_07': Element(name='class 6', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_040_08': Element(name='class 6', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_040_09': Element(name='class 6', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_040_10': Element(name='class 6', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_060_01': Element(name='class 6', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_060_02': Element(name='class 6', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_060_03': Element(name='class 6', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_060_04': Element(name='class 6', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_060_05': Element(name='class 6', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_060_06': Element(name='class 6', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_060_07': Element(name='class 6', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_060_08': Element(name='class 6', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_060_09': Element(name='class 6', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_060_10': Element(name='class 6', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_080_01': Element(name='class 6', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_080_02': Element(name='class 6', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_080_03': Element(name='class 6', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_080_04': Element(name='class 6', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_080_05': Element(name='class 6', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_080_06': Element(name='class 6', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_080_07': Element(name='class 6', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_080_08': Element(name='class 6', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_080_09': Element(name='class 6', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_080_10': Element(name='class 6', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_100_01': Element(name='class 6', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_100_02': Element(name='class 6', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_100_03': Element(name='class 6', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_100_04': Element(name='class 6', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_100_05': Element(name='class 6', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_100_06': Element(name='class 6', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_100_07': Element(name='class 6', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_100_08': Element(name='class 6', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_100_09': Element(name='class 6', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl06_100_10': Element(name='class 6', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_020_01': Element(name='class 7', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_020_02': Element(name='class 7', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_020_03': Element(name='class 7', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_020_04': Element(name='class 7', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_020_05': Element(name='class 7', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_020_06': Element(name='class 7', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_020_07': Element(name='class 7', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_020_08': Element(name='class 7', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_020_09': Element(name='class 7', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_020_10': Element(name='class 7', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_040_01': Element(name='class 7', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_040_02': Element(name='class 7', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_040_03': Element(name='class 7', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_040_04': Element(name='class 7', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_040_05': Element(name='class 7', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_040_06': Element(name='class 7', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_040_07': Element(name='class 7', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_040_08': Element(name='class 7', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_040_09': Element(name='class 7', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_040_10': Element(name='class 7', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_060_01': Element(name='class 7', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_060_02': Element(name='class 7', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_060_03': Element(name='class 7', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_060_04': Element(name='class 7', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_060_05': Element(name='class 7', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_060_06': Element(name='class 7', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_060_07': Element(name='class 7', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_060_08': Element(name='class 7', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_060_09': Element(name='class 7', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_060_10': Element(name='class 7', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_080_01': Element(name='class 7', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_080_02': Element(name='class 7', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_080_03': Element(name='class 7', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_080_04': Element(name='class 7', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_080_05': Element(name='class 7', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_080_06': Element(name='class 7', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_080_07': Element(name='class 7', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_080_08': Element(name='class 7', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_080_09': Element(name='class 7', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_080_10': Element(name='class 7', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_100_01': Element(name='class 7', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_100_02': Element(name='class 7', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_100_03': Element(name='class 7', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_100_04': Element(name='class 7', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_100_05': Element(name='class 7', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_100_06': Element(name='class 7', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_100_07': Element(name='class 7', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_100_08': Element(name='class 7', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_100_09': Element(name='class 7', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl07_100_10': Element(name='class 7', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_020_01': Element(name='class 8', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_020_02': Element(name='class 8', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_020_03': Element(name='class 8', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_020_04': Element(name='class 8', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_020_05': Element(name='class 8', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_020_06': Element(name='class 8', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_020_07': Element(name='class 8', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_020_08': Element(name='class 8', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_020_09': Element(name='class 8', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_020_10': Element(name='class 8', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_040_01': Element(name='class 8', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_040_02': Element(name='class 8', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_040_03': Element(name='class 8', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_040_04': Element(name='class 8', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_040_05': Element(name='class 8', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_040_06': Element(name='class 8', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_040_07': Element(name='class 8', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_040_08': Element(name='class 8', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_040_09': Element(name='class 8', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_040_10': Element(name='class 8', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_060_01': Element(name='class 8', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_060_02': Element(name='class 8', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_060_03': Element(name='class 8', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_060_04': Element(name='class 8', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_060_05': Element(name='class 8', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_060_06': Element(name='class 8', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_060_07': Element(name='class 8', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_060_08': Element(name='class 8', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_060_09': Element(name='class 8', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_060_10': Element(name='class 8', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_080_01': Element(name='class 8', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_080_02': Element(name='class 8', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_080_03': Element(name='class 8', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_080_04': Element(name='class 8', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_080_05': Element(name='class 8', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_080_06': Element(name='class 8', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_080_07': Element(name='class 8', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_080_08': Element(name='class 8', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_080_09': Element(name='class 8', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_080_10': Element(name='class 8', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_100_01': Element(name='class 8', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_100_02': Element(name='class 8', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_100_03': Element(name='class 8', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_100_04': Element(name='class 8', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_100_05': Element(name='class 8', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_100_06': Element(name='class 8', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_100_07': Element(name='class 8', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_100_08': Element(name='class 8', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_100_09': Element(name='class 8', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl08_100_10': Element(name='class 8', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_020_01': Element(name='class 9', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_020_02': Element(name='class 9', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_020_03': Element(name='class 9', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_020_04': Element(name='class 9', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_020_05': Element(name='class 9', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_020_06': Element(name='class 9', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_020_07': Element(name='class 9', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_020_08': Element(name='class 9', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_020_09': Element(name='class 9', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_020_10': Element(name='class 9', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_040_01': Element(name='class 9', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_040_02': Element(name='class 9', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_040_03': Element(name='class 9', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_040_04': Element(name='class 9', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_040_05': Element(name='class 9', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_040_06': Element(name='class 9', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_040_07': Element(name='class 9', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_040_08': Element(name='class 9', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_040_09': Element(name='class 9', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_040_10': Element(name='class 9', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_060_01': Element(name='class 9', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_060_02': Element(name='class 9', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_060_03': Element(name='class 9', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_060_04': Element(name='class 9', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_060_05': Element(name='class 9', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_060_06': Element(name='class 9', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_060_07': Element(name='class 9', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_060_08': Element(name='class 9', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_060_09': Element(name='class 9', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_060_10': Element(name='class 9', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_080_01': Element(name='class 9', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_080_02': Element(name='class 9', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_080_03': Element(name='class 9', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_080_04': Element(name='class 9', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_080_05': Element(name='class 9', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_080_06': Element(name='class 9', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_080_07': Element(name='class 9', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_080_08': Element(name='class 9', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_080_09': Element(name='class 9', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_080_10': Element(name='class 9', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_100_01': Element(name='class 9', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_100_02': Element(name='class 9', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_100_03': Element(name='class 9', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_100_04': Element(name='class 9', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_100_05': Element(name='class 9', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_100_06': Element(name='class 9', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_100_07': Element(name='class 9', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_100_08': Element(name='class 9', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_100_09': Element(name='class 9', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl09_100_10': Element(name='class 9', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_020_01': Element(name='class 10', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_020_02': Element(name='class 10', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_020_03': Element(name='class 10', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_020_04': Element(name='class 10', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_020_05': Element(name='class 10', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_020_06': Element(name='class 10', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_020_07': Element(name='class 10', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_020_08': Element(name='class 10', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_020_09': Element(name='class 10', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_020_10': Element(name='class 10', name_suffix='20', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_040_01': Element(name='class 10', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_040_02': Element(name='class 10', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_040_03': Element(name='class 10', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_040_04': Element(name='class 10', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_040_05': Element(name='class 10', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_040_06': Element(name='class 10', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_040_07': Element(name='class 10', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_040_08': Element(name='class 10', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_040_09': Element(name='class 10', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_040_10': Element(name='class 10', name_suffix='40', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_060_01': Element(name='class 10', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_060_02': Element(name='class 10', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_060_03': Element(name='class 10', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_060_04': Element(name='class 10', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_060_05': Element(name='class 10', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_060_06': Element(name='class 10', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_060_07': Element(name='class 10', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_060_08': Element(name='class 10', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_060_09': Element(name='class 10', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_060_10': Element(name='class 10', name_suffix='60', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_080_01': Element(name='class 10', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_080_02': Element(name='class 10', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_080_03': Element(name='class 10', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_080_04': Element(name='class 10', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_080_05': Element(name='class 10', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_080_06': Element(name='class 10', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_080_07': Element(name='class 10', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_080_08': Element(name='class 10', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_080_09': Element(name='class 10', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_080_10': Element(name='class 10', name_suffix='80', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_100_01': Element(name='class 10', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_100_02': Element(name='class 10', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_100_03': Element(name='class 10', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_100_04': Element(name='class 10', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_100_05': Element(name='class 10', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_100_06': Element(name='class 10', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_100_07': Element(name='class 10', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_100_08': Element(name='class 10', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_100_09': Element(name='class 10', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'cl10_100_10': Element(name='class 10', name_suffix='100', reference='BW1987TDFBPA,MV1998ESOTTDFBPP'), 'asqas03': Element(name='asqas', name_suffix='', reference='vdBBMSB2016ASIASSTFI'), 'asqas08': Element(name='asqas', name_suffix='', reference='vdBBMSB2016ASIASSTFI'), 'asqas20': Element(name='asqas', name_suffix='', reference='vdBBMSB2016ASIASSTFI'), 'asqas34': Element(name='asqas', name_suffix='', reference='vdBBMSB2016ASIASSTFI')})

    a mapping of instances to instance groups

    moptipyapps.binpacking2d.bks.INST_GROUP_SORT_KEY(value, start=0, stop=9223372036854775807, /)

    A sort key function for instance groups

    moptipyapps.binpacking2d.bks.MXGA: Final[Element] = Element(name='MXGA', name_suffix='', reference='L2008AGAFTDBPP')

    the MXGA algorithm for 2D bin packing with rotation

    moptipyapps.binpacking2d.bks.NO_REF: Final[str] = '{{NO_REF}}'

    a constant for no reference

    moptipyapps.binpacking2d.bks.PAC: Final[Element] = Element(name='PAC', name_suffix='', reference='CGRS2020PACATSMTOOSFT2BPP')

    the price-and-cut algorithm for 2D bin packing with rotation

    Get the related work of a given type.

    Parameters:
    • with_rotation (bool | None, default: None) – include the data with rotation

    • without_rotation (bool | None, default: None) – include the data without rotation

    • algo_select (Callable[[Element], bool], default: <function <lambda> at 0x7f2d913daa20>) – the algorithm selector

    • inst_group_select (Callable[[Element], bool], default: <function <lambda> at 0x7f2d913daac0>) – the instance group selector

    Return type:

    tuple[tuple[bool, Element, Element, int], ...]

    Returns:

    An iterable with the related works

    moptipyapps.binpacking2d.bks.make_comparison_table(dest, data, name_to_strs=<function <lambda>>, format_best=<function <lambda>>, count_best_over=())[source]

    Make a comparison table in LaTeX.

    Parameters:
    Return type:

    None

    moptipyapps.binpacking2d.bks.make_comparison_table_data(data, with_rotation, algo_from_pr=<function <lambda>>, algo_sort_key=<function <lambda>>, rw_algo_selector=<function <lambda>>, aggregator=<function mean>, additional=<function <lambda>>)[source]

    Create the data for an end result comparison table.

    Parameters:
    Return type:

    tuple[tuple[Element, ...], tuple[tuple[Element, tuple[int | float | None, ...]], ...]]

    Returns:

    the table data: the title row columns followed by the data row-by-row, each row leading with an instance group identifier

    moptipyapps.binpacking2d.experiment module

    An example experiment for bin packing.

    moptipyapps.binpacking2d.experiment.MAX_FES: Final[int] = 1000000

    the maximum number of FEs

    moptipyapps.binpacking2d.experiment.base_setup(instance, encoding, objective)[source]

    Create the basic setup.

    Parameters:
    Return type:

    tuple[SignedPermutations, Execution]

    Returns:

    the search space and the basic execution

    moptipyapps.binpacking2d.experiment.fea(instance, encoding, objective)[source]

    Create the FEA setup.

    Parameters:
    Return type:

    Execution

    Returns:

    the RLS execution

    moptipyapps.binpacking2d.experiment.rls(instance, encoding, objective)[source]

    Create the RLS setup.

    Parameters:
    Return type:

    Execution

    Returns:

    the RLS execution

    moptipyapps.binpacking2d.experiment.run(base_dir, n_runs=23)[source]

    Run the experiment.

    Parameters:
    • base_dir (str) – the base directory

    • n_runs (int, default: 23) – the number of runs, by default 23

    Return type:

    None

    moptipyapps.binpacking2d.instance module

    A Two-Dimensional Bin Packing instance.

    This module provides an instance of the two-dimensional bin packing problem as defined in 2DPackLib [1, 2] as well as the four non-trivial ‘Almost Squares in Almost Squares’ instances [6, 7].

    All instances of Instance are two-dimensional numpy ndarrays with additional attributes. Each instance has a name. Instances also specify a bin_width and bin_height. They define the number n_different_items of items with different IDs. Notice that in the 2DPackLib dataset, a benchmark instance may contain the same item multiple times. Obviously, all items of the same ID have the exact same width and height, meaning that we only need to store them once and remember how often they occur. (Notice that the opposite is not true, i.e., not all items with the same width and height do have the same ID.) Anyway, the total number n_items of items, i.e., the sum of all the repetitions of all items, is also stored.

    The matrix data of the instance class is laid out as follows: There is one row for each item. The row contains the width of the item, the height of the item, and the number of times the item will occur. The row at index i stands for the item with ID i+1.

    Instances can be loaded directly from a 2DPackLib file via Instance.from_2dpacklib(). They can also be loaded from a compact string representation (via Instance.from_compact_str()) and can also be converted to such a compact representation (via Instance.to_compact_str()). This library ships with a set of pre-defined instances as resource which can be obtained via Instance.from_resource() and listed via Instance.list_resources().

    We provide the instances of the sets A [3], BENG [4], and CLASS [5] from 2DPackLib. Additionally, we include the four non-trivial ‘Almost Squares in Almost Squares’ instances [6,7].

    Initial work on this code has been contributed by Mr. Rui ZHAO (赵睿), <zr1329142665@163.com> a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    1. Manuel Iori, Vinícius Loti de Lima, Silvano Martello, and Michele Monaci. 2DPackLib. https://site.unibo.it/operations-research/en/research/2dpacklib

    2. Manuel Iori, Vinícius Loti de Lima, Silvano Martello, and Michele Monaci. 2DPackLib: A Two-Dimensional Cutting and Packing Library. Optimization Letters 16(2):471-480. March 2022. https://doi.org/10.1007/s11590-021-01808-y

    3. Rita Macedo, Cláudio Alves, and José M. Valério de Carvalho. Arc-Flow Model for the Two-Dimensional Guillotine Cutting Stock Problem. Computers & Operations Research 37(6):991-1001. June 2010. https://doi.org/10.1016/j.cor.2009.08.005.

    4. Bengt-Erik Bengtsson. Packing Rectangular Pieces - A Heuristic Approach. The Computer Journal 25(3):353-357, August 1982. https://doi.org/10.1093/comjnl/25.3.353

    5. J.O. Berkey and P.Y. Wang. Two Dimensional Finite Bin Packing Algorithms. Journal of the Operational Research Society 38(5):423-429. May 1987. https://doi.org/10.1057/jors.1987.70

    6. Daan van den Berg, Florian Braam, Mark Moes, Emiel Suilen, and Sandjai Bhulai. Almost Squares in Almost Squares: Solving the Final Instance. In The Fifth International Conference on Data Analytics (DATA ANALYTICS’16) October 9-13, 2016, Venice, Italy, pages 69-74. IARIA. ISBN: 9781612085104. https://hdl.handle.net/11245/1.545914. https://math.vu.nl/~sbhulai/publications/data_analytics2016b.pdf.

    7. H. Simonis and B. O’Sullivan. Almost Square Packing in 8th International Conference on Integration of AI and OR Techniques in Constraint Programming for Combinatorial Optimization Problems (CPAIOR’11), May 23-27, 2011, Berlin, Germany, pages 196-209. Berlin, Germany: Springer-Verlag. doi:10.1007/978-3-642-21311-3_19.

    >>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]])
    +>>> ins.name
    +'a'
    +>>> ins.bin_width
    +100
    +>>> ins.bin_height
    +50
    +>>> ins.dtype
    +dtype('int8')
    +>>> ins.n_different_items
    +3
    +>>> ins.to_compact_str()
    +'a;3;100;50;10,5;3,3;5,5'
    +>>> ins = Instance("b", 100, 50, np.array([[10, 5, 1], [3, 3, 1], [3, 3, 1]]))
    +>>> ins.name
    +'b'
    +>>> ins.bin_width
    +100
    +>>> ins.bin_height
    +50
    +>>> ins.dtype
    +dtype('int8')
    +>>> ins.to_compact_str()
    +'b;3;100;50;10,5;3,3;3,3'
    +>>> ins = Instance.from_resource("cl02_020_06")
    +>>> ins.dtype
    +dtype('int8')
    +>>> ins.n_different_items
    +20
    +>>> ins.n_items
    +20
    +>>> ins = Instance.from_resource("a25")
    +>>> ins.dtype
    +dtype('int16')
    +>>> ins.n_different_items
    +75
    +>>> ins.n_items
    +156
    +
    moptipyapps.binpacking2d.instance.BIN_HEIGHT: Final[str] = 'binHeight'

    the bin height

    moptipyapps.binpacking2d.instance.BIN_WIDTH: Final[str] = 'binWidth'

    the bin width

    moptipyapps.binpacking2d.instance.IDX_HEIGHT: Final[int] = 1

    the index of the height element in an item of an instance

    moptipyapps.binpacking2d.instance.IDX_REPETITION: Final[int] = 2

    the index of the repetitions element in an item of an instance

    moptipyapps.binpacking2d.instance.IDX_WIDTH: Final[int] = 0

    the index of the width element in an item of an instance

    moptipyapps.binpacking2d.instance.INSTANCES_RESOURCE: Final[str] = 'instances.txt'

    the instances resource name

    moptipyapps.binpacking2d.instance.INTERNAL_SEP: Final[str] = ','

    The internal item separator

    class moptipyapps.binpacking2d.instance.Instance(name: str, bin_width: int, bin_height: int, matrix: ndarray | list[list[int]])[source]

    Bases: Component, ndarray

    An instance of the 2D Bin Packing Problem.

    Each row of the matrix contains three values: 1. the item’s width, 2. the item’s height, 3. how often the item occurs.

    bin_height: int

    the bin height

    bin_width: int

    the bin width

    static from_2dpacklib(file)[source]

    Load a problem instance from the 2dpacklib format.

    Parameters:

    file (str) – the file path

    Return type:

    Instance

    Returns:

    the instance

    static from_compact_str(data)[source]

    Transform a compact string back to an instance.

    Parameters:

    data (str) – the string data

    Return type:

    Instance

    Returns:

    the instance

    >>> ins = Instance("x", 500, 50, [[3, 5, 1], [2, 5, 2]])
    +>>> Instance.from_compact_str(ins.to_compact_str()).to_compact_str()
    +'x;2;500;50;3,5;2,5,2'
    +
    static from_resource(name)[source]

    Load an instance from a resource.

    Parameters:

    name (str) – the name string

    Return type:

    Instance

    Returns:

    the instance

    >>> Instance.from_resource("a01").to_compact_str()
    +'a01;2;2750;1220;463,386,18;1680,420,6'
    +>>> Instance.from_resource("a07").to_compact_str()
    +'a07;5;2750;1220;706,286,8;706,516,16;986,433,10;1120,486,12;1120,986,12'
    +>>> Instance.from_resource("a08") is Instance.from_resource("a08")
    +True
    +>>> Instance.from_resource("a08") is Instance.from_resource("a09")
    +False
    +
    get_standard_item_sequence()[source]

    Get the standardized item sequence.

    Return type:

    list[int]

    Returns:

    the standardized item sequence

    >>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]])
    +>>> ins.get_standard_item_sequence()
    +[1, 2, 3]
    +>>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 2]])
    +>>> ins.get_standard_item_sequence()
    +[1, 2, 3, 3]
    +>>> ins = Instance("a", 100, 50, [[10, 5, 2], [3, 3, 3], [5, 5, 4]])
    +>>> ins.get_standard_item_sequence()
    +[1, 1, 2, 2, 2, 3, 3, 3, 3]
    +
    static list_resources()[source]

    Get a tuple of all the instances available as resource.

    Return type:

    tuple[str, ...]

    Returns:

    the tuple with the instance names

    >>> len(list(Instance.list_resources()))
    +557
    +
    static list_resources_groups()[source]

    List the instance groups in the resources.

    One problem of the benchmark set for 2-dimensional bin packing is that it has many instances:

    >>> len(Instance.list_resources())
    +557
    +

    With this function, we can group several of these instances together in a way that is compliant with literature in order to then compute statistics over these groups. Presenting data gathered over…

    >>> len(Instance.list_resources_groups())
    +56
    +

    …groups is much easier than dealing with over 500 instances.

    Return type:

    tuple[tuple[str, str | None, tuple[str, ...]], ...]

    Returns:

    the instance groups, in a two level hierarchy. The result is a sequence of tuples. Each tuple has the top-level group name and, optionally, a second-level group name (or None if no second level group exists). The third tuple element is a sequence of instance names.

    >>> [(v[0], v[1], len(v[2])) for v in
    +...     Instance.list_resources_groups()]
    +[('a', 'small', 14), ('a', 'med', 14), ('a', 'large', 15), ('beng', '1-8', 8), ('beng', '9-10', 2), ('class 1', '20', 10), ('class 1', '40', 10), ('class 1', '60', 10), ('class 1', '80', 10), ('class 1', '100', 10), ('class 2', '20', 10), ('class 2', '40', 10), ('class 2', '60', 10), ('class 2', '80', 10), ('class 2', '100', 10), ('class 3', '20', 10), ('class 3', '40', 10), ('class 3', '60', 10), ('class 3', '80', 10), ('class 3', '100', 10), ('class 4', '20', 10), ('class 4', '40', 10), ('class 4', '60', 10), ('class 4', '80', 10), ('class 4', '100', 10), ('class 5', '20', 10), ('class 5', '40', 10), ('class 5', '60', 10), ('class 5', '80', 10), ('class 5', '100', 10), ('class 6', '20', 10), ('class 6', '40', 10), ('class 6', '60', 10), ('class 6', '80', 10), ('class 6', '100', 10), ('class 7', '20', 10), ('class 7', '40', 10), ('class 7', '60', 10), ('class 7', '80', 10), ('class 7', '100', 10), ('class 8', '20', 10), ('class 8', '40', 10), ('class 8', '60', 10), ('class 8', '80', 10), ('class 8', '100', 10), ('class 9', '20', 10), ('class 9', '40', 10), ('class 9', '60', 10), ('class 9', '80', 10), ('class 9', '100', 10), ('class 10', '20', 10), ('class 10', '40', 10), ('class 10', '60', 10), ('class 10', '80', 10), ('class 10', '100', 10), ('asqas', None, 4)]
    +
    log_parameters_to(logger)[source]

    Log the parameters describing this bin packing instance to the logger.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    >>> from moptipy.utils.logger import InMemoryLogger
    +>>> with InMemoryLogger() as l:
    +...     with l.key_values("I") as kv:
    +...         Instance.from_resource("beng05").log_parameters_to(kv)
    +...     print(repr('@'.join(l.get_log())))
    +'BEGIN_I@name: beng05@class: moptipyapps.binpacking2d.instance.Instance@nItems: 100@nDifferentItems: 100@binWidth: 25@binHeight: 10@dtype: b@END_I'
    +
    lower_bound_bins: int

    the minimum number of bins that this instance requires

    n_different_items: int

    the number of different items

    n_items: int

    the total number of items (including repetitions)

    name: str

    the name of the instance

    to_compact_str()[source]

    Convert the instance to a compact string.

    The format of the string is a single line of semi-colon separated values. The values are: name;n_items;bin_width;bin_height, followed by the sequence of items, each in the form of ;width,heigh[,times], where times is optional and only added if the item occurs more than once.

    Return type:

    str

    Returns:

    a single line string with all the instance data

    >>> ins = Instance("x", 500, 50, [[3, 5, 1], [2, 5, 2]])
    +>>> ins.to_compact_str()
    +'x;2;500;50;3,5;2,5,2'
    +>>> ins.n_different_items
    +2
    +
    total_item_area: int

    the total area occupied by all items

    moptipyapps.binpacking2d.instance.N_DIFFERENT_ITEMS: Final[str] = 'nDifferentItems'

    the number of different items.

    moptipyapps.binpacking2d.instance.N_ITEMS: Final[str] = 'nItems'

    the total number of items

    moptipyapps.binpacking2d.make_instances module

    Obtain Instances of the 2D-dimensional Bin Packing Problem.

    With this program, we can obtain the instances of the two-dimensional bin packing problem and convert them to a singular resource file. The resource file holds one instance per line.

    1. Manuel Iori, Vinícius Loti de Lima, Silvano Martello, and Michele Monaci. 2DPackLib. https://site.unibo.it/operations-research/en/research/2dpacklib

    2. Manuel Iori, Vinícius Loti de Lima, Silvano Martello, and Michele Monaci. 2DPackLib: A Two-Dimensional Cutting and Packing Library. Optimization Letters 16(2):471-480. March 2022. https://doi.org/10.1007/s11590-021-01808-y

    moptipyapps.binpacking2d.make_instances.append_almost_squares_strings(collector)[source]

    Append the strings of the almost squares instances.

    Parameters:

    collector (Callable[[tuple[str, str]], Any]) – the instance collector

    Return type:

    None

    Returns:

    the strings

    moptipyapps.binpacking2d.make_instances.download_2dpacklib_instances(dest_dir, source_urls=('https://site.unibo.it/operations-research/en/research/2dpacklib/a.zip', 'https://site.unibo.it/operations-research/en/research/2dpacklib/beng.zip', 'https://site.unibo.it/operations-research/en/research/2dpacklib/class.zip'), http=<urllib3.poolmanager.PoolManager object>)[source]

    Download the instances from 2DPackLib to a folder.

    This function downloads the instances from 2DPackLib, which are provided as zip archives containing one file per instance. It will extract all the instances into the folder dest_dir and return a tuple of the extracted files. You can specify the source URLs of the zip archives if you want, but by default we use the three instance sets A, BENG, and CLASS.

    Parameters:
    • dest_dir (str) – the destination directory

    • source_urls (Iterable[str], default: ('https://site.unibo.it/operations-research/en/research/2dpacklib/a.zip', 'https://site.unibo.it/operations-research/en/research/2dpacklib/beng.zip', 'https://site.unibo.it/operations-research/en/research/2dpacklib/class.zip')) – the source URLs from which to download the zip archives with the 2DPackLib-formatted instances

    • http (PoolManager, default: <urllib3.poolmanager.PoolManager object at 0x7f2d90720770>) – the HTTP pool

    Return type:

    Iterable[Path]

    Returns:

    the list of unpackaged files

    moptipyapps.binpacking2d.make_instances.join_instances_to_compact(binpacklib2d_files, dest_file, normalizer=<function __normalize_2dpacklib_inst_name>)[source]

    Join all instances from a set of 2DPackLib files to one compact file.

    Parameters:
    • binpacklib2d_files (Iterable[str]) – the iterable of 2DPackLib file paths

    • dest_file (str) – the destination file

    • normalizer (Callable[[str], str], default: <function __normalize_2dpacklib_inst_name at 0x7f2d911a4900>) – the name normalizer, i.e., a function that processes and/or transforms an instance name

    Return type:

    tuple[Path, Iterable[str]]

    Returns:

    the canonical destination path and the list of instance names stored

    moptipyapps.binpacking2d.make_instances.make_2dpacklib_resource(dest_file=None, source_urls=('https://site.unibo.it/operations-research/en/research/2dpacklib/a.zip', 'https://site.unibo.it/operations-research/en/research/2dpacklib/beng.zip', 'https://site.unibo.it/operations-research/en/research/2dpacklib/class.zip'), normalizer=<function __normalize_2dpacklib_inst_name>)[source]

    Make the resource with all the relevant 2DPackLib instances.

    Parameters:
    • dest_file (str | None, default: None) – the optional path to the destination file

    • source_urls (Iterable[str], default: ('https://site.unibo.it/operations-research/en/research/2dpacklib/a.zip', 'https://site.unibo.it/operations-research/en/research/2dpacklib/beng.zip', 'https://site.unibo.it/operations-research/en/research/2dpacklib/class.zip')) – the source URLs from which to download the zip archives with the 2DPackLib-formatted instances

    • normalizer (Callable[[str], str], default: <function __normalize_2dpacklib_inst_name at 0x7f2d911a4900>) – the name normalizer, i.e., a function that processes and/or transforms an instance name

    Return type:

    tuple[Path, Iterable[str]]

    Returns:

    the canonical path to the and the list of instance names stored

    moptipyapps.binpacking2d.packing module

    A two-dimensional packing.

    moptipyapps.binpacking2d.packing.IDX_BIN: Final[int] = 1

    the index of the bin in a Packing row

    moptipyapps.binpacking2d.packing.IDX_BOTTOM_Y: Final[int] = 3

    the index of the bottom y coordinate in a Packing row

    moptipyapps.binpacking2d.packing.IDX_ID: Final[int] = 0

    the index of the ID in a Packing row

    moptipyapps.binpacking2d.packing.IDX_LEFT_X: Final[int] = 2

    the index of the left x coordinate in a Packing row

    moptipyapps.binpacking2d.packing.IDX_RIGHT_X: Final[int] = 4

    the index of the right x coordinate in a Packing row

    moptipyapps.binpacking2d.packing.IDX_TOP_Y: Final[int] = 5

    the index of the top y coordinate in a Packing row

    class moptipyapps.binpacking2d.packing.Packing(instance: Instance)[source]

    Bases: Component, ndarray

    A packing, i.e., a solution to an 2D bin packing instance.

    A packing is a two-dimensional numpy array. In each row, the position of one item is stored: 1. the item ID (starts at 1), 2. the bin into which the item is packaged (starts at 1), 3. the left x coordinate, 4. the bottom y coordinate, 5. the right x coordinate, 6. the top y coordinate.

    static from_log(file, instance=None)[source]

    Load a packing from a log file.

    Parameters:
    • file (str) – the log file path

    • instance (Instance | None, default: None) – the optional Packing instance: if None is provided, we try to load it from the resources

    Return type:

    Packing

    Returns:

    the Packing

    instance: Instance

    the 2d bin packing instance

    n_bins: int

    the number of bins

    moptipyapps.binpacking2d.packing_result module

    An extended end result record to represent packings.

    This class extends the information provided by end_results. It allows us to compare the results of experiments over different objective functions. It also represents the bounds for the number of bins and for the objective functions. It also includes the problem-specific information of two-dimensional bin packing instances.

    class moptipyapps.binpacking2d.packing_result.CsvReader(columns)[source]

    Bases: object

    A class for CSV reading of PackingResult instances.

    parse_row(data)[source]

    Parse a row of data.

    Parameters:

    data (list[str]) – the data row

    Return type:

    PackingResult

    Returns:

    the end result statistics

    class moptipyapps.binpacking2d.packing_result.CsvWriter(scope=None)[source]

    Bases: object

    A class for CSV writing of PackingResult.

    get_column_titles()[source]

    Get the column titles.

    Return type:

    Iterable[str]

    Returns:

    the column titles

    Get the bottom footer comments.

    Parameters:

    dest – the destination

    Return type:

    Iterable[str]

    Get any possible footer comments.

    Return type:

    Iterable[str]

    Returns:

    the footer comments

    get_header_comments()[source]

    Get any possible header comments.

    Return type:

    Iterable[str]

    Returns:

    the header comments

    get_row(data)[source]

    Render a single packing result record to a CSV row.

    Parameters:

    data (PackingResult) – the end result record

    Return type:

    Iterable[str]

    Returns:

    the iterable with the row data

    scope: Final[str | None]

    an optional scope

    setup(data)[source]

    Set up this csv writer based on existing data.

    Parameters:

    data (Iterable[PackingResult]) – the data to setup with

    Return type:

    CsvWriter

    Returns:

    this writer

    moptipyapps.binpacking2d.packing_result.DEFAULT_OBJECTIVES: Final[tuple[Callable[[Instance], Objective], ...]] = (<class 'moptipyapps.binpacking2d.objectives.bin_count.BinCount'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.BinCountAndLastEmpty'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_small.BinCountAndLastSmall'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline.BinCountAndLastSkyline'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_empty.BinCountAndEmpty'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_small.BinCountAndSmall'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline.BinCountAndLowestSkyline'>)

    the default objective functions

    moptipyapps.binpacking2d.packing_result.KEY_BIN_HEIGHT: Final[str] = 'binHeight'

    the bin height

    moptipyapps.binpacking2d.packing_result.KEY_BIN_WIDTH: Final[str] = 'binWidth'

    the bin width

    moptipyapps.binpacking2d.packing_result.KEY_N_DIFFERENT_ITEMS: Final[str] = 'nDifferentItems'

    the number of different items

    moptipyapps.binpacking2d.packing_result.KEY_N_ITEMS: Final[str] = 'nItems'

    the number of items

    moptipyapps.binpacking2d.packing_result.LOWER_BOUNDS_BIN_COUNT: Final[str] = 'bins.lowerBound'

    the start string for bin bounds

    class moptipyapps.binpacking2d.packing_result.PackingResult(end_result, n_items, n_different_items, bin_width, bin_height, objectives, objective_bounds, bin_bounds)[source]

    Bases: EvaluationDataElement

    An end result record of one run of one packing algorithm on one problem.

    This record provides the information of the outcome of one application of one algorithm to one problem instance in an immutable way.

    bin_bounds: Mapping[str, int]

    the bounds for the minimum number of bins of the instance

    bin_height: int

    the bin height

    bin_width: int

    the bin width

    end_result: EndResult

    the original end result record

    n_different_items: int

    the number of different items in the instance

    n_items: int

    the number of items in the instance

    objective_bounds: Mapping[str, int | float]

    the bounds for the objective values (append “.lowerBound” and “.upperBound” to all objective function names)

    objectives: Mapping[str, int | float]

    the objective values evaluated after the optimization

    moptipyapps.binpacking2d.packing_result.from_csv(file)[source]

    Load the packing results from a CSV file.

    Parameters:

    file (str) – the file to read from

    Return type:

    Iterable[PackingResult]

    Returns:

    the iterable with the packing result

    moptipyapps.binpacking2d.packing_result.from_logs(directory, consumer, objectives=(<class 'moptipyapps.binpacking2d.objectives.bin_count.BinCount'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.BinCountAndLastEmpty'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_small.BinCountAndLastSmall'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline.BinCountAndLastSkyline'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_empty.BinCountAndEmpty'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_small.BinCountAndSmall'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline.BinCountAndLowestSkyline'>), bin_bounds=mappingproxy({'bins.lowerBound': <function <lambda>>, 'bins.lowerBound.geometric': <function __lb_geometric>, 'bins.lowerBound.damv': <function <lambda>>}))[source]

    Parse a directory recursively to get all packing results.

    Parameters:
    • directory (str) – the directory to parse

    • consumer (Callable[[PackingResult], None]) – the consumer for receiving the results

    • objectives (Iterable[Callable[[Instance], Objective]], default: (<class 'moptipyapps.binpacking2d.objectives.bin_count.BinCount'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.BinCountAndLastEmpty'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_small.BinCountAndLastSmall'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline.BinCountAndLastSkyline'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_empty.BinCountAndEmpty'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_small.BinCountAndSmall'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline.BinCountAndLowestSkyline'>)) – the objective function factories

    • bin_bounds (Mapping[str, Callable[[Instance], int]], default: mappingproxy({'bins.lowerBound': <function <lambda> at 0x7f2d9174d580>, 'bins.lowerBound.geometric': <function __lb_geometric at 0x7f2d913656c0>, 'bins.lowerBound.damv': <function <lambda> at 0x7f2d91722b60>})) – the bin bounds calculators

    Return type:

    None

    moptipyapps.binpacking2d.packing_result.from_packing_and_end_result(end_result, packing, objectives=(<class 'moptipyapps.binpacking2d.objectives.bin_count.BinCount'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.BinCountAndLastEmpty'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_small.BinCountAndLastSmall'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline.BinCountAndLastSkyline'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_empty.BinCountAndEmpty'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_small.BinCountAndSmall'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline.BinCountAndLowestSkyline'>), bin_bounds=mappingproxy({'bins.lowerBound': <function <lambda>>, 'bins.lowerBound.geometric': <function __lb_geometric>, 'bins.lowerBound.damv': <function <lambda>>}), cache=None)[source]

    Create a PackingResult from an EndResult and a Packing.

    Parameters:
    • end_result (EndResult) – the end results record

    • packing (Packing) – the packing

    • bin_bounds (Mapping[str, Callable[[Instance], int]], default: mappingproxy({'bins.lowerBound': <function <lambda> at 0x7f2d9174d580>, 'bins.lowerBound.geometric': <function __lb_geometric at 0x7f2d913656c0>, 'bins.lowerBound.damv': <function <lambda> at 0x7f2d91722b60>})) – the bounds computing functions

    • objectives (Iterable[Callable[[Instance], Objective]], default: (<class 'moptipyapps.binpacking2d.objectives.bin_count.BinCount'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.BinCountAndLastEmpty'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_small.BinCountAndLastSmall'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline.BinCountAndLastSkyline'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_empty.BinCountAndEmpty'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_small.BinCountAndSmall'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline.BinCountAndLowestSkyline'>)) – the objective function factories

    • cache (Optional[Mapping[str, tuple[Mapping[str, int], tuple[Objective, ...], Mapping[str, int | float]]]], default: None) – a cache that can store stuff if this function is to be called repeatedly

    Return type:

    PackingResult

    Returns:

    the packing result

    moptipyapps.binpacking2d.packing_result.from_single_log(file, objectives=(<class 'moptipyapps.binpacking2d.objectives.bin_count.BinCount'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.BinCountAndLastEmpty'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_small.BinCountAndLastSmall'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline.BinCountAndLastSkyline'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_empty.BinCountAndEmpty'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_small.BinCountAndSmall'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline.BinCountAndLowestSkyline'>), bin_bounds=mappingproxy({'bins.lowerBound': <function <lambda>>, 'bins.lowerBound.geometric': <function __lb_geometric>, 'bins.lowerBound.damv': <function <lambda>>}), cache=None)[source]

    Create a PackingResult from a file.

    Parameters:
    • file (str) – the file path

    • objectives (Iterable[Callable[[Instance], Objective]], default: (<class 'moptipyapps.binpacking2d.objectives.bin_count.BinCount'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.BinCountAndLastEmpty'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_small.BinCountAndLastSmall'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline.BinCountAndLastSkyline'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_empty.BinCountAndEmpty'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_small.BinCountAndSmall'>, <class 'moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline.BinCountAndLowestSkyline'>)) – the objective function factories

    • bin_bounds (Mapping[str, Callable[[Instance], int]], default: mappingproxy({'bins.lowerBound': <function <lambda> at 0x7f2d9174d580>, 'bins.lowerBound.geometric': <function __lb_geometric at 0x7f2d913656c0>, 'bins.lowerBound.damv': <function <lambda> at 0x7f2d91722b60>})) – the bounds computing functions

    • cache (Optional[Mapping[str, tuple[Mapping[str, int], tuple[Objective, ...], Mapping[str, int | float]]]], default: None) – a cache that can store stuff if this function is to be called repeatedly

    Return type:

    PackingResult

    Returns:

    the packing result

    moptipyapps.binpacking2d.packing_result.to_csv(results, file)[source]

    Write a sequence of packing results to a file in CSV format.

    Parameters:
    Return type:

    Path

    Returns:

    the path of the file that was written

    moptipyapps.binpacking2d.packing_space module

    Here we provide a Space of bin packings.

    The bin packing object is defined in module packing. Basically, it is a two-dimensional numpy array holding, for each item, its ID, its bin ID, as well as its location defined by four coordinates.

    1. Dequan Liu and Hongfei Teng. An Improved BL-Algorithm for Genetic Algorithm of the Orthogonal Packing of Rectangles. European Journal of Operational Research. 112(2):413-420. January (1999). https://doi.org/10.1016/S0377-2217(97)00437-2. http://www.paper.edu.cn/scholar/showpdf/MUT2AN0IOTD0Mxxh.

    class moptipyapps.binpacking2d.packing_space.PackingSpace(instance)[source]

    Bases: Space

    An implementation of the Space API of for 2D bin packings charts.

    copy(dest, source)[source]

    Copy one packing to another one.

    Parameters:
    • dest (Packing) – the destination packing

    • source (Packing) – the source packing

    Return type:

    None

    create()[source]

    Create a packing object without assigning items to locations.

    Return type:

    Packing

    Returns:

    the (empty, uninitialized) packing object

    >>> inst = Instance.from_resource("a01")
    +>>> space = PackingSpace(inst)
    +>>> x = space.create()
    +>>> x.shape
    +(24, 6)
    +>>> x.instance is inst
    +True
    +>>> type(x)
    +<class 'moptipyapps.binpacking2d.packing.Packing'>
    +
    from_str(text)[source]

    Convert a string to a packing.

    Parameters:

    text (str) – the string

    Return type:

    Packing

    Returns:

    the packing

    >>> inst = Instance.from_resource("a01")
    +>>> space = PackingSpace(inst)
    +>>> y1 = space.create()
    +>>> xx = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +...                1, 2, 2, 2, 2, 2, 2])
    +>>> import moptipyapps.binpacking2d.encodings.ibl_encoding_1 as e
    +>>> y1.n_bins = e._decode(
    +...     xx, y1, inst, inst.bin_width, inst.bin_height)
    +>>> y2 = space.from_str(space.to_str(y1))
    +>>> space.is_equal(y1, y2)
    +True
    +>>> y1 is y2
    +False
    +
    instance: Final[Instance]

    The instance to which the packings apply.

    is_equal(x1, x2)[source]

    Check if two bin packings have the same contents.

    Parameters:
    Return type:

    bool

    Returns:

    True if both packings are for the same instance and have the same structure

    >>> inst = Instance.from_resource("a01")
    +>>> space = PackingSpace(inst)
    +>>> y1 = space.create()
    +>>> y1.fill(0)
    +>>> y2 = space.create()
    +>>> y2.fill(0)
    +>>> space.is_equal(y1, y2)
    +True
    +>>> y1 is y2
    +False
    +>>> y1[0, 0] = 1
    +>>> space.is_equal(y1, y2)
    +False
    +
    log_parameters_to(logger)[source]

    Log the parameters of the space to the given logger.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    n_points()[source]

    Get the number of possible packings.

    If we indeed consider that any object could be at any place, then there would be an incomprehensibly large number of possible packings. Here, we consider the bottom-left condition and the idea of encoding packings as signed permutations, as in the Liu and Teng paper “An Improved BL-Algorithm for Genetic Algorithm of the Orthogonal Packing of Rectangles.” In this case, if n items are to be packed, the number of possible packings won’t exceed 2^n * n!.

    Return type:

    int

    Returns:

    the approximate number of packings

    >>> inst = Instance.from_resource("a01")
    +>>> inst.n_items
    +24
    +>>> space = PackingSpace(inst)
    +>>> space.n_points()
    +10409396852733332453861621760000
    +>>> from math import factorial
    +>>> (2 ** 24) * factorial(24)
    +10409396852733332453861621760000
    +
    to_str(x)[source]

    Convert a packing to a string.

    Parameters:

    x (Packing) – the packing

    Return type:

    str

    Returns:

    a string corresponding to the flattened packing array

    >>> inst = Instance.from_resource("a01")
    +>>> space = PackingSpace(inst)
    +>>> y = space.create()
    +>>> xx = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +...                1, 2, 2, 2, 2, 2, 2])
    +>>> import moptipyapps.binpacking2d.encodings.ibl_encoding_1 as e
    +>>> e._decode(xx, y, inst, inst.bin_width, inst.bin_height)
    +5
    +>>> space.to_str(y)
    +'1;1;0;0;463;386;1;1;463;0;926;386;1;1;926;0;1389;386;1;1;1389;0;1852;386;1;1;1852;0;2315;386;1;1;0;386;463;772;1;1;463;386;926;772;1;1;926;386;1389;772;1;1;1389;386;1852;772;1;1;1852;386;2315;772;1;1;0;772;463;1158;1;1;463;772;926;1158;1;1;926;772;1389;1158;1;1;1389;772;1852;1158;1;1;1852;772;2315;1158;1;2;0;0;463;386;1;2;463;0;926;386;1;2;926;0;1389;386;2;2;0;386;1680;806;2;3;0;0;1680;420;2;3;0;420;1680;840;2;4;0;0;1680;420;2;4;0;420;1680;840;2;5;0;0;1680;420'
    +
    validate(x)[source]

    Check if a packing is valid and feasible.

    This method performs a comprehensive feasibility and sanity check of a packing. It ensures that the packing could be implemented in the real world exactly as it is given here and that all data are valid and that it matches to the bin packing instance. This includes:

    • checking that all data types, numpy dtypes, and matrix shapes are correct

    • checking that the packing belongs to the same instance as this space

    • checking that no objects in the same bin overlap

    • checking that all objects occur exactly as often as prescribed by the instance

    • checking that no object extends outside of its bin

    • checking that all objects have the same width/height as prescribed in the instance (with possible rotations)

    • check that bin ids are assigned starting at 1 and incrementing in steps of 1

    Parameters:

    x (Packing) – the packing

    Raises:
    • TypeError – if any component of the packing is of the wrong type

    • ValueError – if the packing is not feasible

    Return type:

    None

    moptipyapps.binpacking2d.packing_statistics module

    An extended end result statistics record to represent packings.

    class moptipyapps.binpacking2d.packing_statistics.CsvReader(columns)[source]

    Bases: object

    A class for CSV parsing to get PackingStatistics.

    parse_row(data)[source]

    Parse a row of data.

    Parameters:

    data (list[str]) – the data row

    Return type:

    PackingStatistics

    Returns:

    the end result statistics

    class moptipyapps.binpacking2d.packing_statistics.CsvWriter(scope=None)[source]

    Bases: object

    A class for CSV writing of PackingStatistics.

    get_column_titles()[source]

    Get the column titles.

    Parameters:

    dest – the destination string consumer

    Return type:

    Iterable[str]

    Get the bottom footer comments.

    Parameters:

    dest – the destination

    Return type:

    Iterable[str]

    Get any possible footer comments.

    Return type:

    Iterable[str]

    Returns:

    the footer comments

    get_header_comments()[source]

    Get any possible header comments.

    Return type:

    Iterable[str]

    Returns:

    the header comments

    get_row(data)[source]

    Render a single packing result record to a CSV row.

    Parameters:

    data (PackingStatistics) – the end result record

    Return type:

    Iterable[str]

    Returns:

    the iterable with the row text

    scope: Final[str | None]

    an optional scope

    setup(data)[source]

    Set up this csv writer based on existing data.

    Parameters:

    data (Iterable[PackingStatistics]) – the data to setup with

    Return type:

    CsvWriter

    Returns:

    this writer

    class moptipyapps.binpacking2d.packing_statistics.PackingStatistics(end_statistics, n_items, n_different_items, bin_width, bin_height, objectives, objective_bounds, bin_bounds)[source]

    Bases: EvaluationDataElement

    An end statistics record of one run of one algorithm on one problem.

    This record provides the information of the outcome of one application of one algorithm to one problem instance in an immutable way.

    bin_bounds: Mapping[str, int]

    the bounds for the minimum number of bins of the instance

    bin_height: int

    the bin height

    bin_width: int

    the bin width

    end_statistics: EndStatistics

    the original end statistics record

    n_different_items: int

    the number of different items in the instance

    n_items: int

    the number of items in the instance

    objective_bounds: Mapping[str, int | float]

    the bounds for the objective values (append “.lowerBound” and “.upperBound” to all objective function names)

    objectives: Mapping[str, SampleStatistics]

    the objective values evaluated after the optimization

    moptipyapps.binpacking2d.packing_statistics.from_csv(file)[source]

    Load the packing statistics from a CSV file.

    Parameters:

    file (str) – the file to read from

    Return type:

    Iterable[PackingStatistics]

    Returns:

    the iterable with the packing statistics

    moptipyapps.binpacking2d.packing_statistics.from_packing_results(results, consumer)[source]

    Create packing statistics from a sequence of packing results.

    Parameters:
    Return type:

    None

    moptipyapps.binpacking2d.packing_statistics.to_csv(results, file)[source]

    Write a sequence of packing statistics to a file in CSV format.

    Parameters:
    Return type:

    Path

    Returns:

    the path of the file that was written

    moptipyapps.binpacking2d.plot_packing module

    Plot a packing into one figure.

    moptipyapps.binpacking2d.plot_packing.default_packing_item_str(item_id, item_index, item_in_bin_index)[source]

    Get a packing item string(s).

    The default idea is to include the item id, the index of the item in the bin, and the overall index of the item. If the space is insufficient, we remove the latter or the latter two. Hence, this function returns a tuple of three strings.

    Parameters:
    • item_id (int) – the ID of the packing item

    • item_index (int) – the item index

    • item_in_bin_index (int) – the index of the item in its bin

    Return type:

    Iterable[str]

    Returns:

    the string

    moptipyapps.binpacking2d.plot_packing.plot_packing(packing, max_rows=3, max_bins_per_row=3, default_width_per_bin=8.6, max_width=8.6, default_height_per_bin=5.315092303249095, max_height=9, packing_item_str=<function default_packing_item_str>, importance_to_font_size_func=<function importance_to_font_size>, dpi=384.0)[source]

    Plot a packing.

    Each item is drawn in a different color. Each item rectangle includes, if there is enough space, the item-ID. If there is more space, also the index of the item inside the bin (starting at 1) is included. If there is yet more space, even the overall index of the item is included.

    Parameters:
    • packing (Packing | str) – the packing or the file to load it from

    • max_rows (int, default: 3) – the maximum number of rows

    • max_bins_per_row (int, default: 3) – the maximum number of bins per row

    • default_width_per_bin (float | int | None, default: 8.6) – the optional default width of a column

    • max_height (float | int | None, default: 9) – the maximum height

    • default_height_per_bin (float | int | None, default: 5.315092303249095) – the optional default height per row

    • max_width (float | int | None, default: 8.6) – the maximum width

    • packing_item_str (Callable[[int, int, int], Union[str, Iterable[str]]], default: <function default_packing_item_str at 0x7f2d9126f2e0>) – the function converting an item id, item index, and item-in-bin index to a string or sequence of strings (of decreasing length)

    • importance_to_font_size_func (Callable[[int], float], default: <function importance_to_font_size at 0x7f2d7fd1d800>) – the function converting importance values to font sizes

    • dpi (float | int | None, default: 384.0) – the dpi value

    Return type:

    Figure

    Returns:

    the Figure object to allow you to add further plot elements

    diff --git a/moptipyapps.binpacking2d.instgen.html b/moptipyapps.binpacking2d.instgen.html new file mode 100644 index 00000000..6cd33b32 --- /dev/null +++ b/moptipyapps.binpacking2d.instgen.html @@ -0,0 +1,260 @@ +moptipyapps.binpacking2d.instgen package — moptipyapps 0.8.62 documentation

    moptipyapps.binpacking2d.instgen package

    Tools for generating 2d bin packing instances.

    We want to generate instances of the two-dimensional bin packing problem. These instances should have some pre-defined characteristics, e.g., width and height of the bins, number of items to pack, lower bound/optimal number of bins required by any solution, and so on.

    At the same time, the instances should be hard.

    We treat this whole thing as an optimization problem. Here, given are the pre-defined instance characteristics and the goal is to find instances that are hard to solve.

    Important work on this code has been contributed by Mr. Rui ZHAO (赵睿), <zr1329142665@163.com> a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    Submodules

    moptipyapps.binpacking2d.instgen.errors module

    An objective function counting deviations from the instance definition.

    This objective function will be the smaller, the closer the structure of an instance is to the original instance. Due to our encoding, we create instances whose bin width, bin height, and the number of items is the same as in an existing instance. The lower bound for the required number of bins is also the same.

    This objective function here also incorporates some additional features, such as:

    1. Is the number of different items similar to those in the original instance? In an existing instance, some items of same width and height could be grouped together. We may have 10 items to pack, but only 3 different item sizes exist. We here compare the number of different item sizes of a generated instance with the number in the instance definition.

    2. In a given instance, we can observe the minimum and maximum width and height of any item. If an item in the generated instance is smaller than the minimum or larger than the maximum permitted value in one dimension, this will increase the error count.

    3. Additionally, we want the actual minimum and maximum width and height of any item in the generated instance is the same as in the original instance.

    4. Finally, we want that the total area covered by all items is the same in the generated instance as in the original instance.

    All of these potential violations are counted and added up. Using this objective function should drive the search towards generating instances that are structurally similar to an existing instance, at least in some parameters.

    We could push this arbitrarily further, trying to emulate the exact distribution of the item sizes, etc. But this may just lead to the reproduction of the original instance by the search and not add anything interesting.

    >>> orig = Instance.from_resource("a04")
    +>>> space = InstanceSpace(orig)
    +>>> print(f"{space.inst_name!r} with {space.n_different_items}/"
    +...       f"{space.n_items} items with area {space.total_item_area} "
    +...       f"in {space.min_bins} bins of "
    +...       f"size {space.bin_width}*{space.bin_height}.")
    +'a04n' with 2/16 items with area 7305688 in 3 bins of size 2750*1220.
    +
    >>> from moptipyapps.binpacking2d.instgen.inst_decoding import InstanceDecoder
    +>>> decoder = InstanceDecoder(space)
    +>>> import numpy as np
    +>>> x = np.array([ 0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 15/16 items with area 10065000 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;15;2750;1220;1101,1098;2750,244;2750,98;1101,171;1649,171;2750,976;441,122;1649,122;2750,10;2750,1,2;2750,3;1649,1098;2750,878;2750,58;660,122
    +
    >>> errors = Errors(space)
    +>>> errors.lower_bound()
    +0.0
    +>>> errors.upper_bound()
    +1.0
    +>>> errors.evaluate(y)
    +0.3778740795710009
    +
    >>> y[0] = orig
    +>>> errors.evaluate(y)
    +0.0
    +
    class moptipyapps.binpacking2d.instgen.errors.Errors(space)[source]

    Bases: Objective

    Compute the deviation of an instance from the definition.

    evaluate(x)[source]

    Compute the deviations from the instance definition.

    Parameters:

    x (list[Instance] | Instance) – the instance

    Return type:

    float

    Returns:

    the number of deviations divided by the maximum of the deviations

    is_always_integer()[source]

    Return True because there are only integer errors.

    Retval False:

    always

    Return type:

    bool

    log_parameters_to(logger)[source]

    Log the parameters of this instance.

    Parameters:

    logger (KeyValueLogSection) – the logger

    Return type:

    None

    lower_bound()[source]

    Get the lower bound of the instance template deviations.

    Returs 0.0:

    always

    Return type:

    float

    space: Final[InstanceSpace]

    the instance description

    upper_bound()[source]

    Get the upper bound of the number of deviations.

    Returs 1.0:

    always

    Return type:

    float

    moptipyapps.binpacking2d.instgen.errors_and_hardness module

    A combination of the errors and the hardness objective.

    >>> orig = Instance.from_resource("a04")
    +>>> space = InstanceSpace(orig)
    +>>> print(f"{space.inst_name!r} with {space.n_different_items}/"
    +...       f"{space.n_items} items with area {space.total_item_area} "
    +...       f"in {space.min_bins} bins of "
    +...       f"size {space.bin_width}*{space.bin_height}.")
    +'a04n' with 2/16 items with area 7305688 in 3 bins of size 2750*1220.
    +
    >>> from moptipyapps.binpacking2d.instgen.inst_decoding import InstanceDecoder
    +>>> decoder = InstanceDecoder(space)
    +>>> import numpy as np
    +>>> x = np.array([ 0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 15/16 items with area 10065000 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;15;2750;1220;1101,1098;2750,244;2750,98;1101,171;1649,171;2750,976;441,122;1649,122;2750,10;2750,1,2;2750,3;1649,1098;2750,878;2750,58;660,122
    +
    >>> obj = ErrorsAndHardness(space, max_fes=100)
    +>>> obj.lower_bound()
    +0.0
    +>>> obj.upper_bound()
    +1.0
    +>>> obj.evaluate(y)
    +0.8776461858988774
    +
    >>> obj.evaluate(orig)
    +0.9866528870384179
    +
    class moptipyapps.binpacking2d.instgen.errors_and_hardness.ErrorsAndHardness(space, max_fes=1000000, n_runs=3, executors=(<function setup_rs_f1>, <function setup_rls_f1>, <function setup_rls_f7>))[source]

    Bases: Objective

    Compute the errors and hardness.

    errors: Final[Errors]

    the errors objective

    evaluate(x)[source]

    Compute the combination of hardness and errors.

    Parameters:

    x (list[Instance] | Instance) – the instance

    Return type:

    float

    Returns:

    the hardness and errors

    hardness: Final[Hardness]

    the hardness objective function

    is_always_integer()[source]

    Return False because the hardness function returns float.

    Retval False:

    always

    Return type:

    bool

    log_parameters_to(logger)[source]

    Log the parameters of this instance.

    Parameters:

    logger (KeyValueLogSection) – the logger

    Return type:

    None

    lower_bound()[source]

    Get the lower bound of the instance error and hardness.

    Returns 0.0:

    always

    Return type:

    float

    upper_bound()[source]

    Get the upper bound of the instance error and hardness.

    Returns 1.0:

    always

    Return type:

    float

    moptipyapps.binpacking2d.instgen.experiment module

    An example experiment for generating bin packing instances.

    moptipyapps.binpacking2d.instgen.experiment.INNER_MAX_FES: Final[int] = 100000

    the maximum number of FEs in for the algorithm runs inside the objective

    moptipyapps.binpacking2d.instgen.experiment.INNER_RUNS: Final[int] = 3

    the numbe rof runs of the algorithms inside the objective

    moptipyapps.binpacking2d.instgen.experiment.MAX_FES: Final[int] = 10000

    the maximum number of FEs

    moptipyapps.binpacking2d.instgen.experiment.cmaes(problem)[source]

    Create the basic BiPop-CMA-ES setup.

    Parameters:

    problem (Problem) – the problem to solve

    Return type:

    Execution

    Returns:

    the execution

    moptipyapps.binpacking2d.instgen.experiment.run(base_dir)[source]

    Run the experiment.

    Parameters:

    base_dir (str) – the base directory

    Return type:

    None

    moptipyapps.binpacking2d.instgen.hardness module

    An objective function assessing the hardness of an instance.

    >>> from moptipyapps.binpacking2d.instgen.instance_space import InstanceSpace
    +>>> orig = Instance.from_resource("a04")
    +>>> space = InstanceSpace(orig)
    +>>> print(f"{space.inst_name!r} with {space.n_different_items}/"
    +...       f"{space.n_items} items with area {space.total_item_area} "
    +...       f"in {space.min_bins} bins of "
    +...       f"size {space.bin_width}*{space.bin_height}.")
    +'a04n' with 2/16 items with area 7305688 in 3 bins of size 2750*1220.
    +
    >>> from moptipyapps.binpacking2d.instgen.inst_decoding import InstanceDecoder
    +>>> decoder = InstanceDecoder(space)
    +>>> import numpy as np
    +>>> x = np.array([ 0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 15/16 items with area 10065000 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;15;2750;1220;1101,1098;2750,244;2750,98;1101,171;1649,171;2750,976;441,122;1649,122;2750,10;2750,1,2;2750,3;1649,1098;2750,878;2750,58;660,122
    +
    >>> hardness = Hardness(max_fes=100)
    +>>> hardness.lower_bound()
    +0.0
    +>>> hardness.upper_bound()
    +1.0
    +>>> hardness.evaluate(y)
    +0.8781459580052053
    +
    >>> y[0] = orig
    +>>> hardness.evaluate(y)
    +0.9876395399254564
    +
    >>> z = Instance.from_compact_str(
    +...     "cl04_020_01n;19;100;100;1,10;2,38;2,62;1,4,2;3,38;1,7;27,93;1,62;1,"
    +...     "3;13,38;1,38;1,17;1,45;36,62;39,3;1,2;20,10;3,24;12,4")
    +>>> hardness.evaluate(z)
    +0.9995959203471327
    +
    moptipyapps.binpacking2d.instgen.hardness.DEFAULT_EXECUTORS: Final[tuple[Callable[[Instance], tuple[Execution, Objective]], ...]] = (<function setup_rs_f1>, <function setup_rls_f1>, <function setup_rls_f7>)

    the default executors

    class moptipyapps.binpacking2d.instgen.hardness.Hardness(max_fes=1000000, n_runs=3, executors=(<function setup_rs_f1>, <function setup_rls_f1>, <function setup_rls_f7>))[source]

    Bases: Objective

    Compute the hardness of an instance.

    evaluate(x)[source]

    Compute the hardness of an instance.

    Parameters:

    x (list[Instance] | Instance) – the instance

    Return type:

    float

    Returns:

    the hardness

    executors: Final[tuple[Callable[[Instance], tuple[Execution, Objective]], ...]]

    the executors

    is_always_integer()[source]

    Return False because the hardness function returns float.

    Retval False:

    always

    Return type:

    bool

    log_parameters_to(logger)[source]

    Log the parameters of this instance.

    Parameters:

    logger (KeyValueLogSection) – the logger

    Return type:

    None

    lower_bound()[source]

    Get the lower bound of the instance hardness.

    Return type:

    float

    Returns:

    the lower bound for the instance hardness

    Returns 0.0:

    always

    max_fes: Final[int]

    the maximum FEs per setup.

    n_runs: Final[int]

    the maximum FEs per setup.

    upper_bound()[source]

    Get the upper bound of the instance hardness.

    Return type:

    float

    Returns:

    the upper bound for the instance hardness

    Returns 1.0:

    always

    moptipyapps.binpacking2d.instgen.hardness.setup_rls_f1(instance)[source]

    Set up the randomized local search for an instance.

    Parameters:

    instance (Instance) – the instance

    Return type:

    tuple[Execution, Objective]

    Returns:

    the execution

    moptipyapps.binpacking2d.instgen.hardness.setup_rls_f7(instance)[source]

    Set up the randomized local search for an instance.

    Parameters:

    instance (Instance) – the instance

    Return type:

    tuple[Execution, Objective]

    Returns:

    the execution and upper bound of the objective

    moptipyapps.binpacking2d.instgen.hardness.setup_rs_f1(instance)[source]

    Set up the randomized sampling for an instance.

    Parameters:

    instance (Instance) – the instance

    Return type:

    tuple[Execution, Objective]

    Returns:

    the execution

    moptipyapps.binpacking2d.instgen.inst_decoding module

    A decoder for 2D BPP instances.

    The goal of developing this decoding procedure is that we need a deterministic mapping of some easy-to-process data structure to an instance of the two-dimensional bin packing problem. The instance produced by the mapping should use a pre-defined bin width, bin height, and number of items. It should also have a pre-defined lower bound for the number of bins required and it must be ensured that this lower bound can also be reached, i.e., that at least one solution exists that can indeed pack all items into this number of bins.

    As source data structure to be mapped, we choose the real vectors of a fixed length (discussed later on).

    The idea is that we take the bin width, bin height, and lower bound of the number of bins (let’s call it lb) from a template instance. We also take the number items (let’s call it n) from that instance.

    Now we begin with lb items, each of which exactly of the size and dimensions of a bin. At the end, we want to have n items. To get there, in each step of our decoding, we split one existing item into two items. This means that each step will create one additional item for the instance (while making one existing item smaller). This, in turn, means that we have to do n - lb decoding steps, as we start with lb items and, after n - lb steps, will have lb + n - lb = n items.

    So far so good. But how do we split?

    Each split that we want to perform be defined by four features:

    1. the index of the item that we are going to split,

    2. whether we split it horizontally or vertically,

    3. where we are going to split it,

    4. and how to continue if the proposed split is not possible, e.g., because it would lead to a zero-width or zero-height item.

    Now we can encode this in two real numbers selector and cutter from the interval [-1,1].

    First, we multiply the absolute value of the selector with the current number of items that we have. This is initially 2, will then be 3 in the next iteration, then 4, and so on. Converted to an int, the result of this multiplication gives us the index of the item to split.

    Then, if cutter >= 0, we will cut the item horizontally. Otherwise, i.e., if cutter < 0, we cut vertically. Where to cut is then decided by multiplying the absolute value of cutter with the length of the item in the selected cutting dimension.

    If that is not possible, we move to the next item and try again. If selector < 0, we move towards smaller indices and wrap after 0. Otherwise, we move towards higher indices and wrap at the end of the item list. If we arrive back at the first object, this means that the split was not possible for any of the existing items. We now rotate the split by 90°, i.e., if we tried horizontal splits, we now try vertical ones and vice versa.

    It is easy to see that it must always be possible to split at least one item in at least one direction. Since we took the bin dimensions and numbers of items from an existing instance of the benchmark set, it must be possible to divide the bins into n items in one way or another. Therefore, the loop will eventually terminate and yield the right amount of items.

    This means that with 2 * (n - lb) floating point numbers, we can describe an instance whose result is a perfect packing, without any wasted space.

    Now the benchmark instances are not just instances that can only be solved by perfect packings. Instead, they have some wasted space.

    We now want to add some wasted space to our instance. So far, our items occupy exactly lb * bin_width * bin_height space units. We can cut at most bin_width * bin_height - 1 of these units without changing the required bins of the packing: We would end up with (lb - 1) * bin_width * bin_height + 1 space units required by our items, which is 1 too large to fit into lb - 1 bins.

    So we just do the same thing again: We again use two real numbers to describe each split. Like before, we loop through these numbers, pick the object to split, and compute where to split it. Just now we throw away the piece that was cut off. (Of course, we compute the split positions such that we never dip under the area requirement discussed above).

    This allows us to use additional real variables to define how the space should be reduced. 2 * (n - lb) variables, we get instances requiring perfect packing. With every additional pair of variables, we cut some more space. If we would use 2 * (n - lb) + 10 variables, then we would try to select five items from which we can cut off a bit. This number of additional variables can be chosen by the user.

    Finally, we merge all items that have the same dimension into groups, as is the case in some of the original instances. We then shuffle these groups randomly, to give the instances a bit of a more unordered texture. The random shuffling is seeded with the binary representation of the input vectors.

    In the end, we have translated a real vector to a two-dimensional bin packing instance. Hurray.

    >>> space = InstanceSpace(Instance.from_resource("a04"))
    +>>> print(f"{space.inst_name!r} with {space.n_different_items}/"
    +...       f"{space.n_items} items with area {space.total_item_area} "
    +...       f"in {space.min_bins} bins of "
    +...       f"size {space.bin_width}*{space.bin_height}.")
    +'a04n' with 2/16 items with area 7305688 in 3 bins of size 2750*1220.
    +
    >>> decoder = InstanceDecoder(space)
    +>>> import numpy as np
    +>>> x = np.array([ 0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, -0.1,  0.3,  0.5, -0.6, -0.7,  0.9,
    +...                0.0,  0.2, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 15/16 items with area 10065000 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;15;2750;1220;1101,1098;2750,244;2750,98;1101,171;1649,171;2750,976;441,122;1649,122;2750,10;2750,1,2;2750,3;1649,1098;2750,878;2750,58;660,122
    +
    >>> x = np.array([ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 3/16 items with area 10065000 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;3;2750;1220;2750,1216,2;2750,1,13;2750,1215
    +
    >>> from math import nextafter
    +>>> a1 = nextafter(1.0, -10)
    +>>> x = np.array([ a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 4/16 items with area 10065000 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;4;2750;1220;2750,1208;2750,1219;2750,1220;2750,1,13
    +
    >>> from math import nextafter
    +>>> a1 = nextafter(-1.0, 10)
    +>>> x = np.array([ a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 5/16 items with area 10065000 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;5;2750;1220;2750,1220;2730,1220;2748,1220;1,1220,4;2,1220,9
    +
    >>> from math import nextafter
    +>>> a1 = nextafter(-1.0, 10)
    +>>> x = np.array([ a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, 0.3, 0.7 ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 6/16 items with area 10064146 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;6;2750;1220;2,1220,9;1,1220,3;2748,1220;1,366;2750,1220;2730,1220
    +
    >>> from math import nextafter
    +>>> a1 = nextafter(-1.0, 10)
    +>>> x = np.array([ a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, a1, a1, a1, a1, a1, a1,
    +...                a1, a1, 0.3, 0.7, -0.2, -0.3,
    +...                0.5, -0.3])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 6/16 items with area 10061706 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;6;2750;1220;2,1220,7;2750,1220;2730,1220;1,1220,5;1,366;2748,1220
    +
    >>> x = np.array([ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    +...                1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
    +...                1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
    +...                1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
    +...                1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
    +...                1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
    +...                1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
    +...                1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
    +...                0.0, 0.0, ])
    +>>> y = space.create()
    +>>> decoder.decode(x, y)
    +>>> space.validate(y)
    +>>> res: Instance = y[0]
    +>>> print(f"{res.name!r} with {res.n_different_items}/"
    +...       f"{res.n_items} items with area {res.total_item_area} "
    +...       f"in {res.lower_bound_bins} bins of "
    +...       f"size {res.bin_width}*{res.bin_height}.")
    +'a04n' with 5/16 items with area 9910948 in 3 bins of size 2750*1220.
    +>>> print(space.to_str(y))
    +a04n;5;2750;1220;2698,1;2750,1,12;2750,1216;2750,1215;2750,1160
    +
    class moptipyapps.binpacking2d.instgen.inst_decoding.InstanceDecoder(space)[source]

    Bases: Encoding

    Decode a string of n real values in [0,1] to an instance.

    decode(x, y)[source]

    Decode the real-valued array to a 2D BPP instance.

    Parameters:
    Return type:

    None

    get_x_dim(slack=0)[source]

    Get the minimum dimension that a real vector must have.

    Parameters:

    slack (float | int, default: 0) – a parameter denoting the amount of slack for reducing the item size

    Return type:

    int

    Returns:

    the minimum dimension

    space: Final[InstanceSpace]

    the instance description

    moptipyapps.binpacking2d.instgen.instance_space module

    An encoding that is inspired by a given instance.

    class moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace(source)[source]

    Bases: Space

    An space structure for the instance generation problem and space.

    bin_height: Final[int]

    the bin height

    bin_width: Final[int]

    the bin width

    copy(dest, source)[source]

    Copy the instance list.

    Parameters:
    Return type:

    None

    create()[source]

    Generate a list for receiving an instance.

    Return type:

    list[Instance]

    Returns:

    the new instance list

    from_str(text)[source]

    Convert an instance string to a list with an instance.

    Parameters:

    text (str) – the input string

    Return type:

    list[Instance]

    Returns:

    the element in the space corresponding to text

    inst_name: Final[str]

    the instance name

    is_equal(x1, x2)[source]

    Check if the contents of two instances of the data structure are equal.

    Parameters:
    Return type:

    bool

    Returns:

    True if the contents are equal, False otherwise

    item_height_max: Final[int]

    the maximum item height

    item_height_min: Final[int]

    the minimum item height

    item_width_max: Final[int]

    the maximum item width

    item_width_min: Final[int]

    the minimum item width

    log_parameters_to(logger)[source]

    Log the parameters of this instance.

    Parameters:

    logger (KeyValueLogSection) – the logger

    Return type:

    None

    min_bins: Final[int]

    the minimum number of bins that this instance requires

    n_different_items: Final[int]

    the target number of unique items

    n_items: Final[int]

    the target number of items (including repetitions)

    n_points()[source]

    Get the approximate number of different elements in the space.

    Return type:

    int

    Returns:

    the approximate scale of the space

    to_str(x)[source]

    Convert an instance list to a string.

    Parameters:

    x (list[Instance]) – the instance list

    Return type:

    str

    Returns:

    the string representation of x

    total_item_area: Final[int]

    the total item area

    validate(x)[source]

    Check whether a given point in the space is valid.

    Parameters:

    x (list[Instance]) – the point

    Raises:
    • TypeError – if the point x (or one of its elements, if applicable) has the wrong data type

    • ValueError – if the point x is invalid and/or simply is not an element of this space

    Return type:

    None

    moptipyapps.binpacking2d.instgen.problem module

    An instance of the instance generation problem.

    class moptipyapps.binpacking2d.instgen.problem.Problem(name, slack)[source]

    Bases: Component

    An instance of the 2D Bin Packing Instance Generation Problem.

    encoding: Final[InstanceDecoder]

    the internal decoding

    search_space: Final[VectorSpace]

    the search space

    solution_space: Final[InstanceSpace]

    the instance to be used as template

    diff --git a/moptipyapps.binpacking2d.objectives.html b/moptipyapps.binpacking2d.objectives.html new file mode 100644 index 00000000..99f7d31b --- /dev/null +++ b/moptipyapps.binpacking2d.objectives.html @@ -0,0 +1,288 @@ +moptipyapps.binpacking2d.objectives package — moptipyapps 0.8.62 documentation

    moptipyapps.binpacking2d.objectives package

    Different objective functions for two-dimensional bin packing.

    The following objective functions are implemented:

    • bin_count returns the number of bins occupied by a given packing.

    • bin_count_and_empty returns a combination of the number of bins occupied by a given packing and the fewest number of objects located in any bin.

    • bin_count_and_last_empty returns a combination of the number of bins occupied by a given packing and the number of objects located in the last bin.

    • bin_count_and_small returns a combination of the number of bins occupied by a given packing and the smallest area occupied by objects in any bin.

    • bin_count_and_last_small returns a combination of the number of bins occupied by a given packing and the area occupied by the objects in the last bin.

    • bin_count_and_lowest_skyline returns a combination of the number of bins occupied by a given packing and the smallest area under the skyline in any bin, where the “skyline” is the upper border of the space occupied by objects.

    • bin_count_and_last_skyline returns a combination of the number of bins occupied by a given packing and the smallest area under the skyline in the last bin, where the “skyline” is the upper border of the space occupied by objects.

    Important initial work on this code has been contributed by Mr. Rui ZHAO (赵睿), <zr1329142665@163.com> a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    Submodules

    moptipyapps.binpacking2d.objectives.bin_count module

    An objective function for minimizing the number of bins in packings.

    This function returns the number of bins.

    moptipyapps.binpacking2d.objectives.bin_count.BIN_COUNT_NAME: Final[str] = 'binCount'

    the name of the bin count objective function

    class moptipyapps.binpacking2d.objectives.bin_count.BinCount(instance)[source]

    Bases: Objective

    Compute the number of bins.

    evaluate(x)[source]

    Get the number of bins.

    Parameters:

    x – the packing

    Return type:

    int

    Returns:

    the number of bins used

    is_always_integer()[source]

    Return True because there are only integer bins.

    Retval True:

    always

    Return type:

    bool

    lower_bound()[source]

    Get the lower bound of the number of bins objective.

    Return type:

    int

    Returns:

    the lower bound for the number of required bins, i.e., lower_bound_bins

    >>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]])
    +>>> ins.lower_bound_bins
    +1
    +>>> BinCount(ins).lower_bound()
    +1
    +
    >>> ins = Instance("b", 10, 50, [[10, 5, 10], [3, 3, 1], [5, 5, 1]])
    +>>> ins.lower_bound_bins
    +2
    +>>> BinCount(ins).lower_bound()
    +2
    +
    >>> ins = Instance("c", 10, 50, [[10, 5, 20], [30, 3, 10], [5, 5, 1]])
    +>>> ins.lower_bound_bins
    +4
    +>>> BinCount(ins).lower_bound()
    +4
    +
    to_bin_count(z)[source]

    Get the bin count corresponding to an objective value.

    Parameters:

    z (int)

    Return type:

    int

    Returns:

    the value itself

    upper_bound()[source]

    Get the upper bound of the number of bins.

    Return type:

    int

    Returns:

    the number of items in the instance, i.e., n_items

    >>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]])
    +>>> ins.n_items
    +3
    +>>> BinCount(ins).upper_bound()
    +3
    +
    >>> ins = Instance("b", 10, 50, [[10, 5, 10], [3, 3, 1], [5, 5, 1]])
    +>>> ins.n_items
    +12
    +>>> BinCount(ins).upper_bound()
    +12
    +
    >>> ins = Instance("c", 10, 50, [[10, 5, 20], [30, 3, 10], [5, 5, 1]])
    +>>> ins.n_items
    +31
    +>>> BinCount(ins).upper_bound()
    +31
    +

    moptipyapps.binpacking2d.objectives.bin_count_and_empty module

    An objective function indirectly minimizing the number of bins in packings.

    This objective function first computes the number of bins used. Let’s call it n_bins. We know the total number of items, n_items, as well (because this is also the number of rows in the packing). Now we return (n_items * (n_bins - 1)) + min_items, where min_items is the number of items in the bin with the fewest items.

    This is similar to bin_count_and_last_small, but instead of focussing on the very last bin, it uses the minimum element count over all bins. It has the same lower- and upper bound, though.

    class moptipyapps.binpacking2d.objectives.bin_count_and_empty.BinCountAndEmpty(instance)[source]

    Bases: BinCountAndLastEmpty

    Get the number of bins and number of elements in the emptiest one.

    evaluate(x)[source]

    Evaluate the objective function.

    Parameters:

    x – the solution

    Return type:

    int

    Returns:

    the bin size and smallest-bin-area factor

    moptipyapps.binpacking2d.objectives.bin_count_and_empty.bin_count_and_empty(y, temp)[source]

    Get the number of bins and number of elements in the emptiest one.

    We compute the total number of bins minus 1 and multiply it with the number of items. We then add the smallest number of elements in any bin.

    Parameters:
    Return type:

    int

    Returns:

    the objective value

    >>> tempa = np.empty(10, int)
    +>>> bin_count_and_empty(np.array([[1, 1, 10, 10, 20, 20],
    +...                               [1, 1, 30, 30, 40, 40],
    +...                               [1, 1, 20, 20, 30, 30]], int), tempa)
    +3
    +>>> bin_count_and_empty(np.array([[1, 1, 10, 10, 20, 20],
    +...                               [1, 2, 30, 30, 40, 40],  # bin 2!
    +...                               [1, 1, 20, 20, 30, 30]], int), tempa)
    +4
    +>>> bin_count_and_empty(np.array([[1, 2, 10, 10, 20, 20],  # bin 2!
    +...                               [1, 2, 30, 30, 40, 40],  # bin 2!
    +...                               [1, 1, 20, 20, 30, 30]], int), tempa)
    +4
    +>>> bin_count_and_empty(np.array([[1, 3, 10, 10, 20, 20],  # bin 3!
    +...                               [1, 2, 30, 30, 40, 40],  # bin 2!
    +...                               [1, 1, 20, 20, 30, 30]], int), tempa)
    +7
    +

    moptipyapps.binpacking2d.objectives.bin_count_and_last_empty module

    An objective function indirectly minimizing the number of bins in packings.

    This objective function first computes the number of bins used. Let’s call it n_bins. We know the total number of items, n_items, as well (because this is also the number of rows in the packing). Now we return (n_items * (n_bins - 1)) + number_of_items_in_last_bin, where number_of_items_in_last_bin is, well, the number of items in the very last bin.

    The idea behind this is: If one of two packings has the smaller number of bins, then this one will always have the smaller objective value. If two packings have the same number of bins, but one has fewer items in the very last bin, then that one is better. With this mechanism, we drive the search towards “emptying” the last bin. If the number of items in the last bin would reach 0, that last bin would disappear - and we have one bin less.

    class moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.BinCountAndLastEmpty(instance)[source]

    Bases: BinCount

    Compute the number of bins and the emptiness of the last one.

    evaluate(x)[source]

    Evaluate the objective function.

    Parameters:

    x – the solution

    Return type:

    int

    Returns:

    the bin size and emptyness factor

    lower_bound()[source]

    Get the lower bound of the number of bins and emptiness objective.

    We know from the instance (lower_bound_bins) that we require at least as many bins such that they can accommodate the total area of all items together. Let’s call this number lb. Now if lb is one, then all objects could be in the first bin, in which case the objective value would equal to n_items, i.e., the total number of items in the first = last bin. If it is lb=2, then we know that we will need at least two bins. The best case would be that n_items - 1 items are in the first bin and one is in the last bin. This means that we would get 1 * n_items + 1 as objective value. If we have lb=3 bins, then we could have n_items - 1 items distributed over the first two bins with one item left over in the last bin, i.e., would get (2 * n_items) + 1. And so on.

    Return type:

    int

    Returns:

    max(n_items, (lb - 1) * n_items + 1)

    >>> from moptipyapps.binpacking2d.instance import Instance
    +>>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]])
    +>>> ins.n_items
    +3
    +>>> ins.lower_bound_bins
    +1
    +>>> BinCountAndLastEmpty(ins).lower_bound()
    +3
    +
    >>> ins = Instance("b", 10, 50, [[10, 5, 10], [3, 3, 1], [5, 5, 1]])
    +>>> ins.n_items
    +12
    +>>> ins.lower_bound_bins
    +2
    +>>> BinCountAndLastEmpty(ins).lower_bound()
    +13
    +
    >>> ins = Instance("c", 10, 50, [[10, 5, 20], [30, 3, 10], [5, 5, 1]])
    +>>> ins.n_items
    +31
    +>>> ins.lower_bound_bins
    +4
    +>>> BinCountAndLastEmpty(ins).lower_bound()
    +94
    +
    to_bin_count(z)[source]

    Convert an objective value to a bin count.

    Parameters:

    z (int) – the objective value

    Return type:

    int

    Returns:

    the bin count

    upper_bound()[source]

    Get the upper bound of the number of bins plus emptiness.

    Return type:

    int

    Returns:

    the number of items in the instance to the square

    >>> from moptipyapps.binpacking2d.instance import Instance
    +>>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]])
    +>>> ins.n_items
    +3
    +>>> BinCountAndLastEmpty(ins).upper_bound()
    +9
    +
    >>> ins = Instance("b", 10, 50, [[10, 5, 10], [3, 3, 1], [5, 5, 1]])
    +>>> ins.n_items
    +12
    +>>> BinCountAndLastEmpty(ins).upper_bound()
    +144
    +
    >>> ins = Instance("c", 10, 50, [[10, 5, 20], [30, 3, 10], [5, 5, 1]])
    +>>> ins.n_items
    +31
    +>>> BinCountAndLastEmpty(ins).upper_bound()
    +961
    +
    moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.bin_count_and_last_empty(y)[source]

    Compute the number of bins and the emptiness of the last bin.

    We compute the total number of bins minus 1 and multiply it with the number of items. We then add the number of items in the last bin.

    Parameters:

    y (ndarray) – the packing

    Return type:

    int

    Returns:

    the objective value

    >>> bin_count_and_last_empty(np.array([[1, 1, 10, 10, 20, 20],
    +...                                    [1, 1, 30, 30, 40, 40],
    +...                                    [1, 1, 20, 20, 30, 30]], int))
    +3
    +>>> bin_count_and_last_empty(np.array([[1, 1, 10, 10, 20, 20],
    +...                                    [1, 2, 30, 30, 40, 40],  # bin 2!
    +...                                    [1, 1, 20, 20, 30, 30]], int))
    +4
    +>>> bin_count_and_last_empty(np.array([[1, 2, 10, 10, 20, 20],  # bin 2!
    +...                                    [1, 2, 30, 30, 40, 40],  # bin 2!
    +...                                    [1, 1, 20, 20, 30, 30]], int))
    +5
    +>>> bin_count_and_last_empty(np.array([[1, 3, 10, 10, 20, 20],  # bin 3!
    +...                                    [1, 2, 30, 30, 40, 40],  # bin 2!
    +...                                    [1, 1, 20, 20, 30, 30]], int))
    +7
    +

    moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline module

    An objective function indirectly minimizing the number of bins in packings.

    This objective function minimizes the number of bins and maximizes the “usable” space in the last bin.

    Which space is actually useful for our encodings? Let’s say we have filled a bin to a certain degree and somewhere there is a “hole” in the filled area, but this hole is covered by another object. The area of the hole is not used, but it also cannot be used anymore. The area that we can definitely use is the area above the “skyline” of the objects in the bin. The skyline at any horizontal x coordinate be the highest border of any object that intersects with x horizontally. In other words, it is the y value at and above which no other object is located at this x coordinate. The area below the skyline cannot be used anymore. The area above the skyline can.

    If we minimize the area below the skyline in the very last bin, then this will a similar impact as minimizing the overall object area in the last bin (see bin_count_and_last_small). We push the skyline lower and lower and, if we are lucky, the last bin eventually becomes empty.

    The objective bin_count_and_lowest_skyline works quite similarly to this one, but minimizes the lowest skyline over any bin.

    class moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline.BinCountAndLastSkyline(instance)[source]

    Bases: BinCountAndLastSmall

    Compute the number of bins and the useful area in the last bin.

    evaluate(x)[source]

    Evaluate the objective function.

    Parameters:

    x – the solution

    Return type:

    int

    Returns:

    the bin size and last-bin-small-area factor

    moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline.bin_count_and_last_skyline(y, bin_width, bin_height)[source]

    Compute the bin count-1 times the bin size + the space below the skyline.

    Parameters:
    • y (ndarray) – the packing

    • bin_width (int) – the bin width

    • bin_height (int) – the bin height

    Return type:

    int

    Returns:

    the objective value

    >>> 10*0 + 10*20 + 10*30 + 10*40 + 10*0
    +900
    +>>> bin_count_and_last_skyline(np.array([[1, 1, 10, 10, 20, 20],
    +...                                      [1, 1, 30, 30, 40, 40],
    +...                                      [1, 1, 20, 20, 30, 30]], int),
    +...                            50, 50)
    +900
    +>>> 5 * 0 + 5 * 10 + 10 * 20 + 5 * 10 + 25 * 0
    +300
    +>>> bin_count_and_last_skyline(np.array([[1, 1,  5,  0, 15, 10],
    +...                                      [1, 1, 10, 10, 20, 20],
    +...                                      [1, 1, 15,  0, 25, 10]], int),
    +...                            50, 50)
    +300
    +>>> 50*50 + 0*10 + 10*20 + 30*0
    +2700
    +>>> bin_count_and_last_skyline(np.array([[1, 1,  5,  0, 15, 10],
    +...                                      [1, 2, 10, 10, 20, 20],
    +...                                      [1, 1, 15,  0, 25, 10]], int),
    +...                            50, 50)
    +2700
    +>>> 5 * 0 + 5 * 10 + 3 * 20 + (50 - 13) * 25
    +1035
    +>>> bin_count_and_last_skyline(np.array([[1, 1,  5,  0, 15, 10],
    +...                                      [1, 1, 10, 10, 20, 20],
    +...                                      [1, 1, 15,  0, 25, 10],
    +...                                      [2, 1, 13, 20, 50, 25]], int),
    +...                            50, 50)
    +1035
    +>>> 50*50*3 + 25*50
    +8750
    +>>> bin_count_and_last_skyline(np.array([[1, 1, 0, 0, 10, 10],
    +...                                      [2, 2, 0, 0, 20, 20],
    +...                                      [3, 3, 0, 0, 25, 10],
    +...                                      [4, 4, 0, 0, 50, 25]], int),
    +...                            50, 50)
    +8750
    +>>> 50*50*3 + 25*10 + 25*0
    +7750
    +>>> bin_count_and_last_skyline(np.array([[1, 1, 0, 0, 10, 10],
    +...                                      [2, 2, 0, 0, 20, 20],
    +...                                      [3, 4, 0, 0, 25, 10],
    +...                                      [4, 3, 0, 0, 50, 25]], int),
    +...                            50, 50)
    +7750
    +>>> 50*50*3 + 20*20 + 30*0
    +7900
    +>>> bin_count_and_last_skyline(np.array([[1, 1, 0, 0, 10, 10],
    +...                                      [2, 4, 0, 0, 20, 20],
    +...                                      [3, 2, 0, 0, 25, 10],
    +...                                      [4, 3, 0, 0, 50, 25]], int),
    +...                            50, 50)
    +7900
    +>>> 50*50*3 + 20*10 + 30*20 + 20*0
    +8300
    +>>> bin_count_and_last_skyline(np.array([[1, 1, 0, 0, 10, 10],
    +...                                      [2, 4, 0, 0, 20, 20],
    +...                                      [3, 2, 0, 0, 25, 10],
    +...                                      [2, 4, 10, 20, 30, 30],
    +...                                      [4, 3, 0, 0, 50, 25]], int),
    +...                            50, 50)
    +8300
    +

    moptipyapps.binpacking2d.objectives.bin_count_and_last_small module

    An objective function indirectly minimizing the number of bins in packings.

    This objective function computes the number of bins used. Let’s call it n_bins. We know the area bin_area of a bin as well. Now we return (bin_area * (n_bins - 1)) + area_of_items_in_last_bin, where area_of_items_in_last_bin is, well, the area covered by items in the very last bin.

    The idea behind this is: If one of two packings has the smaller number of bins, then this one will always have the smaller objective value. If two packings have the same number of bins, but one requires less space in the very last bin, then that one is better. With this mechanism, we drive the search towards “emptying” the last bin. If the number of items in the last bin would reach 0, that last bin would disappear - and we have one bin less.

    This objective is similar to bin_count_and_small, with the difference that it focuses on the last bin whereas bin_count_and_small tries to minimize the area in any bin.

    class moptipyapps.binpacking2d.objectives.bin_count_and_last_small.BinCountAndLastSmall(instance)[source]

    Bases: BinCount

    Compute the number of bins and the area in the last one.

    evaluate(x)[source]

    Evaluate the objective function.

    Parameters:

    x – the solution

    Return type:

    int

    Returns:

    the bin size and last-bin-small-area factor

    lower_bound()[source]

    Get the lower bound of the number of bins and small-size objective.

    We know from the instance (lower_bound_bins) that we require at least as many bins such that they can accommodate the total area of all items together. Let’s call this number lb. Now if lb is one, then all objects could be in the first bin, in which case the objective value would equal to the total area of all items (total_item_area). If it is lb=2, then we know that we will need at least two bins. The best case would be that almost all items are in the first bin and only the smallest object is in the last bin. This means that we would get 1 * bin_area + smallest_area as objective value. If we have lb=3 bins, then we could again have all but the smallest items distributed over the first two bins and only the smallest one in the last bin, i.e., would get (2 * bin_area) + smallest_area. And so on.

    Return type:

    int

    Returns:

    total_item_area if the lower bound lb of the number of bins is 1, else (lb - 1) * bin_area + smallest_area, where bin_area is the area of a bin, total_item_area is the area of all items added up, and smallest_area is the area of the smallest item

    >>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]])
    +>>> ins.total_item_area
    +84
    +>>> ins.lower_bound_bins
    +1
    +>>> BinCountAndLastSmall(ins).lower_bound()
    +84
    +
    >>> ins = Instance("b", 10, 50, [[10, 5, 10], [3, 3, 1], [5, 5, 1]])
    +>>> ins.total_item_area
    +534
    +>>> ins.lower_bound_bins
    +2
    +>>> BinCountAndLastSmall(ins).lower_bound()
    +509
    +
    >>> ins = Instance("c", 10, 50, [[10, 5, 10], [30, 3, 1], [5, 5, 1]])
    +>>> ins.total_item_area
    +615
    +>>> ins.lower_bound_bins
    +2
    +>>> BinCountAndLastSmall(ins).lower_bound()
    +525
    +
    to_bin_count(z)[source]

    Convert an objective value to a bin count.

    Parameters:

    z (int) – the objective value

    Return type:

    int

    Returns:

    the bin count

    upper_bound()[source]

    Get the upper bound of this objective function.

    Return type:

    int

    Returns:

    a very coarse estimate of the upper bound

    >>> ins = Instance("a", 100, 50, [[10, 5, 1], [3, 3, 1], [5, 5, 1]])
    +>>> ins.n_items
    +3
    +>>> BinCountAndLastSmall(ins).upper_bound()
    +15000
    +
    >>> ins = Instance("b", 10, 50, [[10, 5, 10], [3, 3, 1], [5, 5, 1]])
    +>>> ins.n_items
    +12
    +>>> BinCountAndLastSmall(ins).upper_bound()
    +6000
    +
    >>> ins = Instance("c", 10, 50, [[10, 5, 10], [30, 3, 1], [5, 5, 10]])
    +>>> ins.n_items
    +21
    +>>> BinCountAndLastSmall(ins).upper_bound()
    +10500
    +
    moptipyapps.binpacking2d.objectives.bin_count_and_last_small.bin_count_and_last_small(y, bin_area)[source]

    Compute the number of bins and the occupied area in the last bin.

    We compute the total number of bins minus 1 and multiply it with the total area of items. We then add the area of items in the last bin.

    Parameters:
    • y (ndarray) – the packing

    • bin_area (int) – the area of a single bin

    Return type:

    int

    Returns:

    the objective value

    >>> bin_count_and_last_small(np.array([[1, 1, 10, 10, 20, 20],
    +...                                    [1, 1, 30, 30, 40, 40],
    +...                                    [1, 1, 20, 20, 30, 30]], int),
    +...                                    50*50)
    +300
    +>>> bin_count_and_last_small(np.array([[1, 1, 10, 10, 20, 20],
    +...                                    [1, 2, 30, 30, 40, 40],  # bin 2!
    +...                                    [1, 1, 20, 20, 30, 30]], int),
    +...                                    50*50)
    +2600
    +>>> bin_count_and_last_small(np.array([[1, 2, 10, 10, 20, 20],  # bin 2!
    +...                                    [1, 2, 30, 30, 40, 40],  # bin 2!
    +...                                    [1, 1, 20, 20, 30, 30]], int),
    +...                                    50*50)
    +2700
    +>>> bin_count_and_last_small(np.array([[1, 3, 10, 10, 20, 20],  # bin 3!
    +...                                    [1, 2, 30, 30, 40, 40],  # bin 2!
    +...                                    [1, 1, 20, 20, 30, 30]], int),
    +...                                    50*50)
    +5100
    +>>> bin_count_and_last_small(np.array([[1, 3, 10, 10, 50, 50],  # bin 3!
    +...                                    [1, 2, 30, 30, 60, 60],  # bin 2!
    +...                                    [1, 1, 20, 20, 30, 30]], np.int8),
    +...                                    50*50)
    +6600
    +

    moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline module

    An objective function indirectly minimizing the number of bins in packings.

    This objective function minimizes the number of bins and maximizes the “useable” space in any bin.

    Which space is actually useful for our encodings? Let’s say we have filled a bin to a certain degree and somewhere there is a “hole” in the filled area, but this hole is covered by another object. The area of the hole is not used, but it also cannot be used anymore. The area that we can definitely use is the area above the “skyline” of the objects in the bin. The skyline at any horizontal x coordinate be the highest border of any object that intersects with x horizontally. In other words, it is the y value at and above which no other object is located at this x coordinate. The area below the skyline cannot be used anymore. The area above the skyline can.

    If we minimize the area below the skyline in the very last bin, then this will a similar impact as minimizing the overall object area in the last bin (see bin_count_and_last_small). We push the skyline lower and lower and, if we are lucky, the last bin eventually becomes empty. This is done with the objective bin_count_and_last_skyline.

    But we could also minimize the area under the skylines in the other bins. Because a) if we can get any skyline in any bin to become 0, then this bin disappears and b) if we can free up space in the bins by lowering the skylines, then we have a better chance to move an object from the next bin forward into that bin, which increases the chance to make that bin empty.

    In this objective function, we therefore use the smallest skyline area over all bins to distinguish between packings of the same number of bins. For all intents and purposes, it has the same lower and upper bound as the bin_count_and_last_small objective.

    class moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline.BinCountAndLowestSkyline(instance)[source]

    Bases: BinCountAndLastSmall

    Compute the number of bins and the largest useful area.

    evaluate(x)[source]

    Evaluate the objective function.

    Parameters:

    x – the solution

    Return type:

    int

    Returns:

    the bin size and last-bin-small-area factor

    moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline.bin_count_and_lowest_skyline(y, bin_width, bin_height)[source]

    Compute the bin count-1 times the bin size + the space below the skyline.

    Parameters:
    • y (ndarray) – the packing

    • bin_width (int) – the bin width

    • bin_height (int) – the bin height

    Return type:

    int

    Returns:

    the objective value

    >>> 10*0 + 10*20 + 10*30 + 10*40 + 10*0
    +900
    +>>> bin_count_and_lowest_skyline(np.array([[1, 1, 10, 10, 20, 20],
    +...                                        [1, 1, 30, 30, 40, 40],
    +...                                        [1, 1, 20, 20, 30, 30]], int),
    +...                              50, 50)
    +900
    +>>> 5 * 0 + 5 * 10 + 10 * 20 + 5 * 10 + 25 * 0
    +300
    +>>> bin_count_and_lowest_skyline(np.array([[1, 1,  5,  0, 15, 10],
    +...                                        [1, 1, 10, 10, 20, 20],
    +...                                        [1, 1, 15,  0, 25, 10]], int),
    +...                              50, 50)
    +300
    +>>> 50*50 + min(5*0 + 10*10 + 10*10 + 25*0, 10*0 + 10*20 + 30*0)
    +2700
    +>>> bin_count_and_lowest_skyline(np.array([[1, 1,  5,  0, 15, 10],
    +...                                        [1, 2, 10, 10, 20, 20],
    +...                                        [1, 1, 15,  0, 25, 10]], int),
    +...                              50, 50)
    +2700
    +>>> 5 * 0 + 5 * 10 + 3 * 20 + (50 - 13) * 25
    +1035
    +>>> bin_count_and_lowest_skyline(np.array([[1, 1,  5,  0, 15, 10],
    +...                                        [1, 1, 10, 10, 20, 20],
    +...                                        [1, 1, 15,  0, 25, 10],
    +...                                        [2, 1, 13, 20, 50, 25]], int),
    +...                              50, 50)
    +1035
    +>>> 2500*3 + min(10*10, 20*20, 25*10, 50*25)
    +7600
    +>>> bin_count_and_lowest_skyline(np.array([[1, 1, 0, 0, 10, 10],
    +...                                        [2, 2, 0, 0, 20, 20],
    +...                                        [3, 3, 0, 0, 25, 10],
    +...                                        [4, 4, 0, 0, 50, 25]], int),
    +...                              50, 50)
    +7600
    +

    moptipyapps.binpacking2d.objectives.bin_count_and_small module

    An objective function indirectly minimizing the number of bins in packings.

    This objective function computes the number of bins used. Let’s call it n_bins. We know the area bin_area of a bin as well. We then compute the minimum area occupied in any bin, min_area. Now we return (bin_area * (n_bins - 1)) + min_area.

    This function always prefers a packing that has fewer bins over a packing with more bins duw to the term bin_area * (n_bins - 1) and bin_area >= min_area (let us ignore the case where bin_area == min_area, which does not make practical sense). Since min_area < bin_area in all practically relevant cases, the offset min_area just distinguishes packings that have same number of bins. Amongst such packings, those whose least-occupied bin is closer to being empty are preferred (regardless where this bin is). The idea is that this will eventually allow us to get rid of that least-occupied bin in subsequent optimization steps, i.e., to reduce the number of bins.

    This is similar to the bin_count_and_small objective, except that we do not try to expunge the last bin, but any bin. It has the same lower and upper bound, though.

    class moptipyapps.binpacking2d.objectives.bin_count_and_small.BinCountAndSmall(instance)[source]

    Bases: BinCountAndLastSmall

    Compute the number of bins and the area in the smallest one.

    evaluate(x)[source]

    Evaluate the objective function.

    Parameters:

    x – the solution

    Return type:

    int

    Returns:

    the bin size and smallest-bin-area factor

    moptipyapps.binpacking2d.objectives.bin_count_and_small.bin_count_and_small(y, bin_area, temp)[source]

    Compute the number of bins and the smallest occupied area in any bin.

    We compute the total number of bins minus 1 and multiply it with the total area of items. We then add the area of items in the smallest bin.

    Parameters:
    • y (ndarray) – the packing

    • bin_area (int) – the area of a single bin

    • temp (ndarray) – a temporary array to hold the current area counters

    Return type:

    int

    Returns:

    the objective value

    >>> tempa = np.empty(10, int)
    +>>> bin_count_and_small(np.array([[1, 1, 10, 10, 20, 20],
    +...                               [1, 1, 30, 30, 40, 40],
    +...                               [1, 1, 20, 20, 30, 30]], int),
    +...                              50*50, tempa)
    +300
    +>>> bin_count_and_small(np.array([[1, 1, 10, 10, 20, 20],
    +...                               [1, 2, 30, 30, 40, 40],  # bin 2!
    +...                               [1, 1, 20, 20, 30, 30]], int),
    +...                              50*50, tempa)
    +2600
    +>>> bin_count_and_small(np.array([[1, 2, 10, 10, 20, 20],  # bin 2!
    +...                               [1, 2, 30, 30, 40, 40],  # bin 2!
    +...                               [1, 1, 20, 20, 30, 30]], int),
    +...                               50*50, tempa)
    +2600
    +>>> bin_count_and_small(np.array([[1, 3, 10, 10, 20, 20],  # bin 3!
    +...                               [1, 2, 30, 30, 40, 40],  # bin 2!
    +...                               [1, 1, 20, 20, 30, 30]], int),
    +...                              50*50, tempa)
    +5100
    +>>> bin_count_and_small(np.array([[1, 3, 10, 10, 50, 50],  # bin 3!
    +...                               [1, 2, 30, 30, 60, 60],  # bin 2!
    +...                               [1, 1, 20, 20, 30, 30]], np.int8),
    +...                              50*50, tempa)
    +5100
    +
    diff --git a/moptipyapps.dynamic_control.controllers.html b/moptipyapps.dynamic_control.controllers.html new file mode 100644 index 00000000..9dc2b0ad --- /dev/null +++ b/moptipyapps.dynamic_control.controllers.html @@ -0,0 +1 @@ +moptipyapps.dynamic_control.controllers package — moptipyapps 0.8.62 documentation

    moptipyapps.dynamic_control.controllers package

    Several possible controllers for the dynamic control scenarios.

    • linear offers simple linear controllers.

    • quadratic offers simple quadratic controllers.

    • cubic offers simple cubic controllers.

    • ann offers poor man’s artificial neural networks (ANNs), i.e., networks represented as plain functions whose parameter vectors are subject to optimization.

    • predefined provides a set of controllers taken from the works of NOACK, CORNEJO MACEDA, LI, and SUN.

    • partially_linear offers several linear controllers anchored at certain points in the state space and always uses the controller closest to the current state.

    • min_ann offers controllers similar to min_ann, but instead of using the ANN output as controller value, these ANNs have an additional input z and then use the value z* as controller output for which the ANNs take on the smallest value.

    • peaks provides controllers similar to ANNs but using peak functions (exp(-a²)) as activation functions.

    These controller blueprints can be used in two ways. The basic use case is to synthesize, well, controllers for the dynamic system. In the dynamic system controller synthesis problem, we have a system of differential equations D=ds/dt where D depends on the current system state s and the output of a controller c. So D is actually a function D(s, c). Now the goal is to get the dynamic system to move into a nice and stable state. We want to find a controller c that can do this. Now c is actually a function c(s, p) that takes as input the current system state s and its own parameterization p. Imagine c to be, for example, an artificial neural network (an ann), then p is its weight vector and p is subject to optimization. We would try to find the values p that minimize a certain objective function that could, let’s say, represent the cost or energy in the system. So use case number one of our controllers is to represent the controller blueprints for this process.

    Use case number two is to use the controllers as blueprints for system models M. Basically, a system model M should be a drop-in replacement for the system equations D. In the real world, obviously, we do not have the system equations that govern a complex system like a helicopter or something. But we can test a helicopter controller in a wind tunnel. In such a scenario, evaluating the objective function is very costly. If, instead, we could learn a model M that can reasonably accurately describe the helicopter-experiment behavior D, then we could replace the actual experiment with a simulation. Since computing power is cheap, that would be awesome. Now it turns out that the structure of the equations, i.e., a parameterized function relating inputs to outputs, that we need for this, is pretty much the same as in use case number one above. So we can re-use the same code, the basic controller blueprints, also for the purpose of synthesizing models using a model_objective function.

    Submodules

    moptipyapps.dynamic_control.controllers.ann module

    Poor man’s Artificial Neural Networks.

    Here, artificial neural networks (ANNs) are defined as plain mathematical functions which are parameterized by their weights. The weights are subject to black-box optimization and all together put into a single vector. In other words, we do not use proper back-propagation learning or any other sophisticated neural network specific training strategy. Instead, we treat the neural networks as black boxes that can be parameterized using the weight vector. Different ANN architectures have different weight vectors. As activation functions, we use arctan.

    The neural networks here are automatically generated via code generation provided by module codegen. This allows us to have networks of arbitrary shape for arbitrary input and output dimensions. Since code generation followed by on-the-fly compilation via numba is time and memory consuming, we cache all neural network-based instances of Controller.

    moptipyapps.dynamic_control.controllers.ann.anns(system)[source]

    Create poor man’s ANNs fitting to a given system.

    Based on the dimensionality of the state space, we generate a set of ANNs with different numbers of layers and neurons. The weights of the neurons can then directly be optimized by a numerical optimization algorithm. This is, of course, probably much less efficient that doing some proper learning like back-propagation. However, it allows us to easily plug the ANNs into the same optimization routines as other controllers.

    Parameters:

    system (System) – the equations object

    Return type:

    Iterable[Controller]

    Returns:

    the ANNs

    moptipyapps.dynamic_control.controllers.ann.make_ann(state_dims, control_dims, layers)[source]

    Dynamically create an ANN.

    Parameters:
    • state_dims (int) – the state or input dimension

    • control_dims (int) – the output dimension

    • layers (list[int]) – the sizes of the hidden layers

    Return type:

    Controller

    Returns:

    the controller

    moptipyapps.dynamic_control.controllers.codegen module

    A simple code generator.

    class moptipyapps.dynamic_control.controllers.codegen.CodeGenerator(args='', retval='None', fastmath=True)[source]

    Bases: object

    A simple code generator.

    build()[source]

    Compile the generated code.

    Return type:

    Callable

    Returns:

    the generated function

    endline()[source]

    End a line.

    Return type:

    None

    indent()[source]

    Increase the indent.

    Return type:

    None

    unindent()[source]

    Increase the indent.

    Return type:

    None

    write(text)[source]

    Write some code.

    Parameters:

    text (str) – the code text

    Return type:

    None

    writeln(text='')[source]

    End a line.

    Parameters:

    text (str, default: '') – the text to be written

    Return type:

    None

    moptipyapps.dynamic_control.controllers.cubic module

    A cubic controller.

    A cubic controller is a function where all value of the state vector enter the computation plainly, squared, and raised to the third power. The powers of their combinations do not exceed the third power, e.g., the controller is a linear combination of A, B, A², AB, B², A³, A²B, B²A, and B³ if the state has values A and B. The controller represents the multipliers for these coefficients.

    moptipyapps.dynamic_control.controllers.cubic.cubic(system)[source]

    Create a cubic controller for the given equations object.

    Parameters:

    system (System) – the equations object

    Return type:

    Controller

    Returns:

    the cubic controller

    moptipyapps.dynamic_control.controllers.linear module

    A linear controller.

    In a linear controller, all values of the state vector enter only as-is, i.e., it is a linear combination of A and B if the state is composed of the two values A and B. We then optimize the weights of these coefficients.

    moptipyapps.dynamic_control.controllers.linear.linear(system)[source]

    Create a linear controller for the given equations object.

    Parameters:

    system (System) – the equations object

    Return type:

    Controller

    Returns:

    the linear controller

    moptipyapps.dynamic_control.controllers.min_ann module

    Poor man’s Artificial Neural Networks with minimized input.

    ANNs that include the state as input variable together with an additional variable, say z. The controller output is then the value z* for which the ANN takes on the smallest value (under the current state). In other words, the ANN is supposed to model the system’s objective function. The idea is similar to ann, but instead of using the output of the ANNs as controller values, we use the value z* for which the output of the ANN becomes minimal as controller value.

    moptipyapps.dynamic_control.controllers.min_ann.PHI: Final[float] = 1.618033988749895

    the golden ratio

    moptipyapps.dynamic_control.controllers.min_ann.min_anns(system)[source]

    Create poor man’s ANNs for modeling the objective function.

    Based on the dimensionality of the state space, we generate a set of ANNs with different numbers of layers and neurons. The weights of the neurons can then directly be optimized by a numerical optimization algorithm. This is, of course, probably much less efficient that doing some proper learning like back-propagation. However, it allows us to easily plug the ANNs into the same optimization routines as other controllers.

    Parameters:

    system (System) – the equations object

    Return type:

    Iterable[Controller]

    Returns:

    the ANNs

    moptipyapps.dynamic_control.controllers.partially_linear module

    Partially linear controllers.

    Partially linear controllers are encoded as sets of linear controllers and anchor points. The anchors are coordinates in the state space. For each state, the linear controller with the closest anchor point is used. In other words, these controllers are basically choices among multiple linear controllers.

    moptipyapps.dynamic_control.controllers.partially_linear.partially_linear(system)[source]

    Create a several linear controllers for the given equations object.

    Parameters:

    system (System) – the equations object

    Return type:

    Iterable[Controller]

    Returns:

    the partially linear controllers

    moptipyapps.dynamic_control.controllers.peaks module

    Peak functions.

    Instead of synthesizing ann with arctan as activation function, we here use exp(-a²) as activation function. This function does not represent a transition from -1 to 1, but a single peak around 0.

    moptipyapps.dynamic_control.controllers.peaks.peaks(system)[source]

    Create poor man’s PNNs fitting to a given system.

    Based on the dimensionality of the state space, we generate a set of PNNs with different numbers of layers and neurons. The weights of the neurons can then directly be optimized by a numerical optimization algorithm. This is, of course, probably much less efficient that doing some proper learning like back-propagation. However, it allows us to easily plug the PNNs into the same optimization routines as other controllers.

    Parameters:

    system (System) – the equations object

    Return type:

    Iterable[Controller]

    Returns:

    the PNNs

    moptipyapps.dynamic_control.controllers.predefined module

    A set of pre-defined controllers.

    In this module, we provide a set of pre-defined controllers taken from the works of NOACK, CORNEJO MACEDA, LI, and SUN of the Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)). We ignore the parameterizations offered in the original works and instead synthesize the parameter values by ourselves.

    1. Yuxiang LI (李宇翔). Jet Mixing Enhancement using Deep Reinforcement Learning (基于深度强化学习的射流混合增强控制). MSc Thesis. Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)). January 2023.

    2. Wei SUN (孙伟). Wake Control of 1-2-3 Fluidic Pinball using Deep Reinforcement Learning (基于深度强化学习方法的 1-2-3 流体弹球尾流控制). MSc Thesis. Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)). January 2023.

    3. Guy Yoslan CORNEJO MACEDA, François LUSSEYRAN, and Bernd R. NOACK. xMLC: A Toolkit for Machine Learning Control, First Edition. Machine Learning Tools in Fluid Mechanics, Vol 2. Shenzhen & Paris; Universitätsbibliothek der Technischen Universität Braunschweig. 2022 https://doi.org/10.24355/dbbs.084-202208220937-0

    moptipyapps.dynamic_control.controllers.predefined.predefined(system)[source]

    Create a set of pre-defined controllers for the given equations object.

    Parameters:

    system (System) – the equations object

    Return type:

    tuple[Controller, ...]

    Returns:

    the linear controller

    moptipyapps.dynamic_control.controllers.quadratic module

    A quadratic controller.

    A quadratic controller is a function where all value of the state vector enter the computation plainly and squared. The powers of their combinations do not exceed two, e.g., the controller is a linear combination of A, B, A², AB, and B² if the state has values A and B. The controller represents the multipliers for these coefficients.

    moptipyapps.dynamic_control.controllers.quadratic.quadratic(system)[source]

    Create a quadratic controller for the given equations object.

    Parameters:

    system (System) – the equations object

    Return type:

    Controller

    Returns:

    the quadratic controller

    diff --git a/moptipyapps.dynamic_control.html b/moptipyapps.dynamic_control.html new file mode 100644 index 00000000..d7de0b8e --- /dev/null +++ b/moptipyapps.dynamic_control.html @@ -0,0 +1,153 @@ +moptipyapps.dynamic_control package — moptipyapps 0.8.62 documentation

    moptipyapps.dynamic_control package

    Examples of dynamic control problems.

    Here we have examples for dynamic control problems. An instance of the dynamic control problem is composed of

    • a system of differential equations that govern the state of a system and that also incorporate the output of a controller,

    • a controller blueprint, i.e., a function that can be parameterized and that computes a controller output from the system state, and

    • an objective that rates how well-behaved the system driven by the controller is in a simulation.

    Such systems can serve as primitive testbeds of actual dynamic control scenarios such as flight control or other fluid dynamic systems. Different from such more complicated systems, they are much faster and easier to simulate, though. So we can play with them much more easily and quickly.

    The initial starting point of the work here were conversations with Prof. Dr. Bernd NOACK and Guy Yoslan CORNEJO MACEDA of the Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)) as well as the following two MSc theses and book:

    1. Yuxiang LI (李宇翔). Jet Mixing Enhancement using Deep Reinforcement Learning (基于深度强化学习的射流混合增强控制). MSc Thesis. Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)). January 2023.

    2. Wei SUN (孙伟). Wake Control of 1-2-3 Fluidic Pinball using Deep Reinforcement Learning (基于深度强化学习方法的 1-2-3 流体弹球尾流控制). MSc Thesis. Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)). January 2023.

    3. Guy Yoslan CORNEJO MACEDA, François LUSSEYRAN, and Bernd R. NOACK. xMLC: A Toolkit for Machine Learning Control, First Edition. Machine Learning Tools in Fluid Mechanics, Vol 2. Shenzhen & Paris; Universitätsbibliothek der Technischen Universität Braunschweig. 2022 https://doi.org/10.24355/dbbs.084-202208220937-0

    Subpackages

    Submodules

    moptipyapps.dynamic_control.controller module

    A base class for implementing controllers.

    A controller basically is a parameterizable function that receives the current state and time of a system as input and computes one or multiple controller values as output. These controller values are then used to influence how the state of the system changes in the next iteration. In the dynamic systems control optimization task, the goal is to find the right parameterization for the controller such that an objective is minimized.

    Examples for different controllers for dynamic systems are given in package controllers.

    class moptipyapps.dynamic_control.controller.Controller(name, state_dims, control_dims, param_dims, func=None)[source]

    Bases: Component

    A class for governing a system via differential equations.

    control_dims: Final[int]

    the dimensions of the controller output

    controller(state, time, params, out)[source]

    Compute the control value and store it in out.

    Parameters:
    • state (ndarray) – the state vector

    • time (float) – the time value

    • params (ndarray) – the controller variables

    • out (ndarray) – the output array to receive the controller values

    Return type:

    None

    log_parameters_to(logger)[source]

    Log all parameters of this component as key-value pairs.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    name: Final[str]

    the controller name

    param_dims: Final[int]

    the dimensions of the controller parameter

    parameter_space()[source]

    Create a vector space to represent the possible parameterizations.

    Return type:

    VectorSpace

    Returns:

    a vector space for the possible parameterizations of this controller.

    state_dims: Final[int]

    the dimensions of the state variable

    moptipyapps.dynamic_control.experiment_raw module

    An example experiment for dynamic control.

    In this experiment, we try to synthesize (i.e., parameterize) controllers (controller) that steer a dynamic system (system) into a state by using a figure of merit (objective) which minimizes both the squared system state and controller effort.

    A model-based experiment variant is given in experiment_surrogate.

    moptipyapps.dynamic_control.experiment_raw.base_setup(instance)[source]

    Create the basic setup.

    Parameters:

    instance (Instance) – the instance to use

    Return type:

    Execution

    Returns:

    the basic execution

    moptipyapps.dynamic_control.experiment_raw.cmaes(instance)[source]

    Create the Bi-Pop-CMA-ES setup.

    Parameters:

    instance (Instance) – the problem instance

    Return type:

    Execution

    Returns:

    the setup

    moptipyapps.dynamic_control.experiment_raw.make_instances()[source]

    Create the instances to be used in the dynamic control experiment.

    Return type:

    Iterable[Callable[[], Instance]]

    Returns:

    the instances to be used in the dynamic control experiment.

    moptipyapps.dynamic_control.experiment_raw.on_completion(instance, log_file, process)[source]

    Plot the corresponding figures and print the objective value components.

    Parameters:
    • instance (Any) – the problem instance

    • log_file (Path) – the log file

    • process (Process) – the process

    Return type:

    None

    moptipyapps.dynamic_control.experiment_raw.run(base_dir, n_runs=5)[source]

    Run the experiment.

    Parameters:
    • base_dir (str) – the base directory

    • n_runs (int, default: 5) – the number of runs

    Return type:

    None

    moptipyapps.dynamic_control.experiment_surrogate module

    An example experiment for dynamic control using surrogate system models.

    In this experiment, we again try to synthesize (i.e., parameterize) controllers (controller) that steer a dynamic system (system) into a state by using a figure of merit (objective) which minimizes both the squared system state and controller effort.

    The difference compared to experiment_raw is that we also try to synthesize a system model at the same time. We employ the procedure detailed in surrogate_optimizer for this purpose.

    Word of advice: This experiment takes extremely long and needs a lot of memory!

    The starting points of the work here were conversations with Prof. Dr. Bernd NOACK and Guy Yoslan CORNEJO MACEDA of the Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)).

    moptipyapps.dynamic_control.experiment_surrogate.MAX_FES: Final[int] = 64

    the total objective function evaluations

    moptipyapps.dynamic_control.experiment_surrogate.base_setup(instance)[source]

    Create the basic setup.

    Parameters:

    instance (Instance) – the instance to use

    Return type:

    tuple[Execution, FigureOfMerit, VectorSpace]

    Returns:

    the basic execution

    moptipyapps.dynamic_control.experiment_surrogate.cmaes_raw(instance)[source]

    Create the Bi-Pop-CMA-ES setup.

    Parameters:

    instance (Instance) – the problem instance

    Return type:

    Execution

    Returns:

    the setup

    moptipyapps.dynamic_control.experiment_surrogate.cmaes_surrogate(instance, fes_for_warmup=16, fes_for_training=128, fes_per_model_run=128, fancy_logs=True)[source]

    Create the Bi-Pop-CMA-ES setup.

    Parameters:
    • instance (SystemModel) – the problem instance

    • fes_for_warmup (int, default: 16) – the FEs to be used for warmup

    • fes_for_training (int, default: 128) – the milliseconds for training

    • fes_per_model_run (int, default: 128) – the milliseconds per model run

    • fancy_logs (bool, default: True) – should we do fancy logging?

    Return type:

    Execution

    Returns:

    the setup

    moptipyapps.dynamic_control.experiment_surrogate.make_instances()[source]

    Create the instances to be used in the dynamic control experiment.

    Return type:

    Iterable[Callable[[], SystemModel]]

    Returns:

    the instances to be used in the dynamic control experiment.

    moptipyapps.dynamic_control.experiment_surrogate.on_completion(instance, log_file, process)[source]

    Plot the corresponding figures and print the objective value components.

    Parameters:
    • instance (Any) – the problem instance

    • log_file (Path) – the log file

    • process (Process) – the process

    Return type:

    None

    moptipyapps.dynamic_control.experiment_surrogate.run(base_dir, n_runs=64)[source]

    Run the experiment.

    Parameters:
    • base_dir (str) – the base directory

    • n_runs (int, default: 64) – the number of runs

    Return type:

    None

    moptipyapps.dynamic_control.instance module

    An instance of the dynamic control synthesis problem.

    An instance of the dynamic control synthesis problem is comprised of two components: a system of differential equations governing how the state of a system changes over time and a controller that uses the current system state as input and computes a controller value as output that influences the state change. Notice that the controller here is a parametric function. The goal of the dynamic system control is to find the right parameterization of the controller such that an objective is minimized. The objective here usually has the goal to bring the dynamic system into a stable state while using as little controller “energy” as possible.

    An instance of the simultaneous control and model synthesis problem is an instance of the class SystemModel, which is a subclass of Instance. It also adds a controller blueprint for modelling the systems response (state differential) based on the system state and controller output.

    The starting point of the work here were conversations with Prof. Dr. Bernd NOACK and Guy Yoslan CORNEJO MACEDA of the Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)).

    class moptipyapps.dynamic_control.instance.Instance(system, controller, name_base=None)[source]

    Bases: Component

    An instance of the dynamic control problem.

    controller: Final[Controller]

    the controller applied to the system

    describe_parameterization(title, parameters, base_name, dest_dir)[source]

    Describe the performance of a given system of system.

    Parameters:
    • title (str | None) – the optional title

    • parameters (ndarray) – the controller parameters

    • base_name (str) – the base name of the file to produce

    • dest_dir (str) – the destination directory

    Return type:

    tuple[Path, ...]

    Returns:

    the paths of the generated files

    log_parameters_to(logger)[source]

    Log all parameters of this component as key-value pairs.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    name: Final[str]

    the name of this instance

    system: Final[System]

    the system governing the dynamic system

    moptipyapps.dynamic_control.model_objective module

    An objective function that can be used to synthesize system models.

    We consider the dynamic system to be a function D(s, c) = ds/dt, where

    • s is the state vector (e.g., two-dimensional for the Stuart-Landau system, see stuart_landau, and three-dimensional for the Lorenz system, see lorenz),

    • c is the control vector (one-dimensional in both cases), and

    • ds/dt is the state differential (again two respectively three-dimensional).

    The FigureOfMerit objective function allows us to collect tuples of (s,c) and ds/dt vectors. So all we need to do is to train a model M that receives as input a vector x=(s,c) (where (s,c) be the concatenation of s and c) and fill as output a vector ds/dt.

    The objective function in this module minimizes the root mean square error over the model-computed ds/dt vectors and the actual ds/dt vectors. The model objective function is used by the surrogate_optimizer algorithm.

    class moptipyapps.dynamic_control.model_objective.ModelObjective(real, model)[source]

    Bases: Objective

    The objective for modeling.

    This objective function works on sequences of tuples (s, c) of the system state s and controller output c as well as the corresponding ds/dt differentials. The goal is to train a model M(s, c, q) that will compute the ds/dt values reasonably accurately. The model is parameterized with some vector q, think of M being, e.g., an artificial neural network and q being its weight vector. To find good values of q, this objective here computes the squared differences between the values M(s, c, q) and the expected outputs ds/dt.

    These squared differences are then either averaged directly or the expm1(mean(logp1(…)))) hack of the FigureOfMeritLE is used to alleviate the impact of large differentials, depending on which “real” (controller-synthesis) objective is passed into the constructor).

    The tuples (s, c) and ds/dt are pulled from the real objective with the method begin(). The ds/dt rows are flattened for performance reasons.

    begin()[source]

    Begin a model optimization run.

    This function pulls the training data from the actual controller-synthesis objective function, which is an instance of FigureOfMerit, via the method get_differentials() and allocates internal data structures accordingly.

    Return type:

    None

    end()[source]

    End a model optimization run and free the associated memory.

    Return type:

    None

    evaluate(x)[source]

    Evaluate a model parameterization.

    Parameters:

    x (ndarray) – the model parameterization

    Return type:

    float

    Returns:

    the objective value

    log_parameters_to(logger)[source]

    Log all parameters of this component as key-value pairs.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    lower_bound()[source]

    Get the lower bound of the model objective, which is 0.

    Return type:

    float

    Returns:

    0.0

    moptipyapps.dynamic_control.objective module

    An objective functions for the dynamic control problem.

    The dynamic control problem means that our system starts in a given state and we try to move it to a stable state by using control effort. Controllers are trained over several training states, for each of which we can compute a figure of merit.

    We offer two different approaches for this:

    • FigureOfMerit computes the arithmetic mean z over the separate figures of merit J of the training cases.

    • FigureOfMeritLE tries to smooth out the impact of bad starting states by computing exp(mean[log(J + 1)]) - 1.

    These objective functions also offer a way to collect the state+control and corresponding differential vectors.

    class moptipyapps.dynamic_control.objective.FigureOfMerit(instance, supports_model_mode=False)[source]

    Bases: Objective

    A base class for figures of merit.

    evaluate(x)[source]

    Evaluate the parameterization of a controller.

    Parameters:

    x (ndarray) – the controller parameters

    Return type:

    float

    Returns:

    the figure of merit

    get_differentials()[source]

    Get the collected differentials.

    If supports_model_mode was set to True in the creating of this objective function, then the system will gather tuples (s, c) and ds/dt when in raw mode (see set_raw()) and make them available here to train system models (see set_model()). Notice that gathering training data is a very memory intense process.

    Return type:

    tuple[ndarray, ndarray]

    Returns:

    the collected differentials

    initialize()[source]

    Initialize the objective for use.

    Return type:

    None

    instance: Final[Instance]

    the dynamic control instance

    log_parameters_to(logger)[source]

    Log all parameters of this component as key-value pairs.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    lower_bound()[source]

    Get the lower bound of the figure of merit, which is 0.

    Return type:

    float

    Returns:

    0.0

    set_model(equations)[source]

    Set the model-driven mode for the evaluation.

    In this modus, the internal system equations are replaced by the callable equations passed into this function and the data collection is stopped. The idea is that equations could be a model synthesized on the data gathered (see get_differentials()) and thus does not represent the actual dynamic system but a model thereof. We could synthesize a controller for this model and for this purpose would use the exactly same objective function – just instead of using the actual system equations, we use the system model. Of course, we then need to deactivate the data gathering mechanism (see again get_differentials()), because the data would then not be real system data. You can toggle back to the actual system using set_raw().

    Parameters:

    equations (Callable[[ndarray, float, ndarray, ndarray], None]) – the equations to be used instead of the actual system’s differential equations.

    Return type:

    None

    set_raw()[source]

    Let this objective work on the original system equations.

    The objective function here can be used in two modi: a) based on the original systems model, as given in system, or b) on a learned model of the system. This function here toggles to the former mode, i.e., to the actual system mode. In this modus, training data for training the system model will be gathered if the objective function is configured to do so. In that case, you can toggle to model mode via set_model().

    Return type:

    None

    sum_up_results(results)[source]

    Compute the final objective value from several single J values.

    When synthesizing controllers, we do not just apply them to a single simulation run. Instead, we use multiple training cases (see training_starting_states) and perform training_steps simulation steps on each of them. Each such training starting state will result in a single J value, which is the sum of squared state and control values. We now compute the end objective value from these different J values by using this function here.

    This will destroy the contents of results.

    Parameters:

    results (ndarray) – the array of J values

    Return type:

    float

    Returns:

    the final result

    class moptipyapps.dynamic_control.objective.FigureOfMeritLE(instance, supports_model_mode=False)[source]

    Bases: FigureOfMerit

    Compute a exp(mean(log(z+1)))-1 over the figures of merit z.

    Different from FigureOfMerit, we compute the mean of log(z + 1) where z be the figures of merit of the single training cases. We then return exp(mean[log(z + 1)]) - 1 as final result. The goal is to reduce the impact of training cases that require more control effort.

    If we solve the dynamic control problem for diverse training cases, then we may have some very easy cases, where the system just needs a small control impulse to move into a stable and cheap state. Others may have very far out and expensive starting states that require lots of control efforts to be corrected. If we simply average over all states, then these expensive states will dominate whatever good we are doing in the cheap states. Averaging over the log(J+1) reduces such impact. We then compute exp[…]-1 of the result as cosmetics to get back into the original range of the figure of merits.

    sum_up_results(results)[source]

    Compute the final objective value from several single J values.

    For each training case, there is one basic figure of merit J and here we compute exp(mean[log(J + 1)]) - 1 over all of these values.

    Parameters:

    results (ndarray) – the array of J values

    Return type:

    float

    Returns:

    the final result

    moptipyapps.dynamic_control.ode module

    A primitive integrator for systems of ordinary differential equations.

    Many dynamic systems can be modeled as systems of ordinary differential equations that govern their progress over time. Trying to find out in which state such systems are at a given point in time means to integrate these equations until that point in time (starting from a starting state).

    What we want to play around with, however, is synthesizing controllers. In this case, the differential equations also merge the output of the controller with the current state. If the controller behaves inappropriately, this may make the system diverge, i.e., some of its state variables go to infinity over time or sometimes rather quickly.

    Using ODE integrators that compute the system state at pre-defined time steps is thus cumbersome, as the system may have already exploded at these goal times. Therefore, we perform ODE integration in several steps. First, we try it the “normal” way. However, as soon as the system escapes the sane parameter range, we stop. We then use the last point where the system was stable and the first point where it escaped the reasonable range to estimate a new reasonable end time for the integration. We do this until we finally succeed.

    Thus, we can simulate a well-behaved system over a long time and an ill-behaved system for a shorter time period. Neither system will diverge.

    The following functions are provided:

    • run_ode() executes a set of differential system equations and controller equations and returns an array with the system state, controller output, and time at the different interpolation steps.

    • t_from_ode() returns the total time over which the result of run_ode() was simulated.

    • j_from_ode() returns a figure of merit, i.e., a weighted sum of (a part of) the system state and the controller output from the result of run_ode().

    • diff_from_ode() extracts state difference information from the result of run_ode().

    class moptipyapps.dynamic_control.ode.T

    the type variable for ODE controller parameters

    alias of TypeVar(‘T’)

    moptipyapps.dynamic_control.ode.diff_from_ode(ode, state_dim)[source]

    Compute all the state+control vectors and the resulting differentials.

    This function returns two matrices. Each row of both matrices corresponds to a time slot. Each row in the first matrix holds the state vector and the control vector (that was computed by the controller). The corresponding row in the second matrix then holds the state differential resulting from the control vector being applied in the differential equations that govern the system state change.

    The idea is that this function basically provides the data that we would like to learn when training a surrogate model for a system: From the current state and the computed control vector, we want that our model can give us the resulting system differential. If we have such a model and it works reasonably well, then we could essentially plug this model into run_ode() instead of the original equations parameter.

    What this function does to compute the differential is to basically “invert” the dynamic weighting done by run_ode(). run_ode() starts in a given starting state s. It then computes the control vector c as a function of s, i.e., c(s). Then, the equations of the dynamic system (see module system) to compute the state differential D=ds/dt as a function of c(s) and s, i.e., as something like D(s, c(s)). The next step would be to update the state, i.e., to set s=s+D(s, c(s)). Unfortunately, this can make s go to infinity. So run_ode() will compute a dynamic weight w and do s=s+w*D(s, c(s)), where w is chosen such that the state vector s does not grow unboundedly. While s and c(s) and w are stored in one row of the result matrix of run_ode(), s+w*D(s,c(s)) is stored as state s in the next row. So what this function here basically does is to subtract the old state from the next state and divide the result by w to get D(s, c(s)). s and c(s) are already available directly in the ODE result and w is not needed anymore.

    We then get the rows s, c(s) and D(s, c(s)) in the first and second result matrix, respectively. This can then be used to train a system model as proposed in model system_model.

    Parameters:
    Return type:

    tuple[ndarray, ndarray]

    Returns:

    a tuple of the state+control vectors and the resulting state differential vectors

    >>> od = np.array([
    +...     [0, 0, 0, 0, 0, 0],  # state 0,0,0; control 0,0; time 0
    +...     [1, 2, 3, 4, 5, 1],  # state 1,2,3; control 4,5; time 1
    +...     [2, 3, 4, 5, 6, 3],  # state 2,3,4; control 5,6; time 3
    +...     [4, 6, 8, 7, 7, 7]])    # state 4,6,8; control 7,7, time 7
    +>>> res = diff_from_ode(od, 3)
    +>>> res[0]  # state and control vectors, time col and last row removed
    +array([[0, 0, 0, 0, 0],
    +       [1, 2, 3, 4, 5],
    +       [2, 3, 4, 5, 6]])
    +>>> res[1]  # (state[i + 1] - state[i]) / (time[i + 1] / time[i])
    +array([[1.  , 2.  , 3.  ],
    +       [0.5 , 0.5 , 0.5 ],
    +       [0.5 , 0.75, 1.  ]])
    +
    moptipyapps.dynamic_control.ode.j_from_ode(ode, state_dim, use_state_dims=-1, gamma=0.1)[source]

    Compute the original figure of merit from an ODE array.

    The figure of merit is the sum of state variable squares plus 0.1 times the control variable squares. We disregard the state variable values of the starting states (because they are the same for all controllers on a given training case and because the control cannot influence them) and we also disregard the final state and final controller output (as there is no time slice associated with them, i.e., we only “arrive” in them but basically spent 0 time in them in our simulation).

    Parameters:
    • ode (ndarray) – the array returned by the ODE function, i.e., run_ode()

    • state_dim (int) – the state dimension

    • use_state_dims (int, default: -1) – the dimension until which the state is used, -1 for using the complete state

    • gamma (float, default: 0.1) – the weight of the controller input

    Return type:

    float

    Returns:

    the figure of merit

    >>> od = np.array([[1, 2, 3, 4, 0],
    +...                [5, 6, 7, 8, 1],
    +...                [9, 6, 4, 3, 3],
    +...                [7, 4, 2, 1, 7]])
    +>>> sta_dim = 3
    +>>> print(f"{j_from_ode(od, sta_dim):.10f}")
    +110.0000000000
    +>>> print((1.6 + 12.8 + 98 + 72 + 50 + 3.6 + 64 + 144 + 324) / 7)
    +110.0
    +>>> sta_dim = 3
    +>>> print(f"{j_from_ode(od, 3, 2, 0.5):.10f}")
    +97.1428571429
    +>>> print((8 + 64 + 72 + 50 + 18 + 144 + 324) / 7)
    +97.14285714285714
    +
    moptipyapps.dynamic_control.ode.multi_run_ode(test_starting_states, training_starting_states, collector, equations, controller, parameters, controller_dim=1, test_steps=5000, test_time=50.0, training_steps=5000, training_time=50.0, use_state_dims=-1, gamma=0.1)[source]

    Invoke run_ode() multiple times and pass the result to collector.

    This function allows us to perform multiple runs of the differential equation simulator, using different starting points. It also allows us to distinguish training and test points and to assign them different numbers of steps. For each of them, run_ode() will be applied and the returned matrix is passed to the collector function.

    Parameters:
    • test_starting_states (Iterable[ndarray]) – the iterable of test starting states

    • training_starting_states (Iterable[ndarray]) – the iterable of training starting states

    • collector (Union[Callable[[int, ndarray, float, float], None], Iterable[Callable[[int, ndarray, float, float], None]]]) – the destination to receive the results, in the form of index, ode array, j, and t.

    • equations (Callable[[ndarray, float, ndarray, ndarray], None]) – the differential system

    • controller (Callable[[ndarray, float, TypeVar(T), ndarray], None]) – the controller function

    • parameters (TypeVar(T)) – the controller parameters

    • controller_dim (int, default: 1) – the dimension of the controller result

    • test_steps (int, default: 5000) – the number of test steps to simulate

    • test_time (float, default: 50.0) – the time limit for tests

    • training_steps (int, default: 5000) – the number of training steps to simulate

    • training_time (float, default: 50.0) – the time limit for training

    • use_state_dims (int, default: -1) – the dimension until which the state is used, -1 for using the complete state

    • gamma (float, default: 0.1) – the weight of the controller input

    Return type:

    None

    moptipyapps.dynamic_control.ode.run_ode(starting_state, equations, controller, parameters, controller_dim=1, steps=5000, max_time=50.0)[source]

    Simulate a set of controlled differential system.

    The system begins in the starting state stored in the vector starting_state. In each time step, first, the controller is invoked. It receives the current system state vector as input, the current time t, its parameters (parameters), and an output array to store its computed control values into. This array has dimension controller_dim, which usually is 1. Then, the function system will be called and receives the current state vector, the time step t, and the controller output as input, as well as an output array to store the result of the differential into. This output array has the same dimension as the state vector.

    Now the run_ode function simulates such a system over steps time steps over the closed interval [0, max_time]. If both the system and the controller are well-behaved, then the output array will contain steps rows with the state, controller, and time information of each step. If the system diverges at some point in time but we can simulate it reasonably well before that, then we try to simulate steps, but on a shorter time frame. If even that fails, you will get a single row output with 1e100 as the controller value.

    This function returns a matrix where each row corresponds to a simulated time step. Each row contains three components in a concatenated fashion: 1. the state vector, 2. the control vector, 3. the time value

    Parameters:
    Return type:

    ndarray

    Returns:

    a matrix where each row represents a point in time, composed of the current state, the controller output, and the length of the time slice

    If we simulate the flight of a projectile with our ODE execution, then both the flight time as well as the flight length are about 0.12% off from what the mathematical solution of the flight system prescribe. That’s actually not bad for a crude and fast integration method…

    >>> v = 100.0
    +>>> angle = np.deg2rad(45.0)
    +>>> v_x = v * np.cos(angle)
    +>>> print(f"{v_x:.10f}")
    +70.7106781187
    +>>> v_y = v * np.sin(angle)
    +>>> print(f"{v_y:.10f}")
    +70.7106781187
    +>>> def projectile(position, ttime, ctrl, out):
    +...     out[0] = 70.71067811865474
    +...     out[1] = 70.71067811865474 - ttime * 9.80665
    +>>> param = 0.0   # ignore
    +>>> def contrl(position, ttime, params, dest):
    +...     dest[0] = 0.0  #  controller that does nothing
    +>>> strt = np.array([0.0, 1.0])
    +>>> ode = run_ode(strt, projectile, contrl, param, 1, 10000)
    +>>> print(len(ode))
    +10000
    +>>> time_of_flight = 2 * v_y / 9.80665
    +>>> print(f"{time_of_flight:.10f}")
    +14.4209649817
    +>>> travel_distance_x = time_of_flight * v_x
    +>>> print(f"{travel_distance_x:.10f}")
    +1019.7162129779
    +>>> idx = np.argwhere(ode[:, 1] <= 0.0)[0][0]
    +>>> print(idx)
    +2887
    +>>> print(f"{ode[idx - 1, 0]:.10f}")
    +1020.4571309653
    +>>> print(f"{ode[idx, 0]:.10f}")
    +1020.8107197148
    +>>> print(f"{ode[idx - 1, -1]:.10f}")
    +14.4314431443
    +>>> print(f"{ode[idx, -1]:.10f}")
    +14.4364436444
    +>>> print(ode[-1, -1])
    +50.0
    +
    >>> def contrl2(position, ttime, params, dest):
    +...     dest[0] = 1e50  #  controller that is ill-behaved
    +>>> run_ode(strt, projectile, contrl2, param, 1, 10000)
    +array([[0.e+000, 1.e+000, 1.e+100, 0.e+000]])
    +
    >>> def contrl3(position, ttime, params, dest):
    +...     dest[0] = 1e50 if ttime > 10 else 0.0  # diverging controller
    +>>> ode = run_ode(strt, projectile, contrl3, param, 1, 10000)
    +>>> print(len(ode))
    +10000
    +>>> print(ode[-1])
    +[690.10677249 224.06765771   0.           9.75958357]
    +
    >>> def projectile2(position, ttime, ctrl, out):
    +...     out[:] = 0
    +>>> ode = run_ode(strt, projectile2, contrl, param, 1, 10000)
    +>>> print(len(ode))
    +10000
    +>>> print(ode[-1])
    +[ 0.  1.  0. 50.]
    +>>> ode = run_ode(strt, projectile2, contrl3, param, 1, 10000)
    +>>> print(len(ode))
    +10000
    +>>> print(ode[-1])
    +[0.         1.         0.         9.41234557]
    +
    moptipyapps.dynamic_control.ode.t_from_ode(ode)[source]

    Get the time sum from an ODE solution.

    The total time that we simulate a system depends on the behavior of the system.

    Parameters:

    ode (ndarray) – the ODE solution, as return from run_ode().

    Return type:

    float

    Returns:

    the total consumed time

    >>> od = np.array([[1, 2, 3, 4, 0.1],
    +...                [5, 6, 7, 8, 0.2],
    +...                [9, 6, 4, 3, 0.3],
    +...                [7, 4, 2, 1, 0.4]])
    +>>> print(t_from_ode(od))
    +0.4
    +

    moptipyapps.dynamic_control.results_log module

    A logger for results gathered from ODE integration to a text file.

    class moptipyapps.dynamic_control.results_log.ResultsLog(state_dim, out)[source]

    Bases: AbstractContextManager

    A class for logging results via multi_run_ode.

    Function moptipyapps.dynamic_control.ode.multi_run_ode() can pass its results to various output generating procedures. This class here offers a procedure for writing them to a log file.

    >>> def projectile(position, ttime, ctrl, out):
    +...     out[0] = 70.71067811865474
    +...     out[1] = 70.71067811865474 - ttime * 9.80665
    +>>> param: np.ndarray = np.array([1])   # ignore
    +>>> def contrl(position, ttime, params, dest):
    +...     dest[0] = params[0]  #  controller that returns param
    +>>> from io import StringIO
    +>>> from moptipyapps.dynamic_control.ode import multi_run_ode
    +>>> with StringIO() as sio:
    +...     with ResultsLog(2, sio) as log:
    +...         multi_run_ode([np.array([0.0, 1.0])],
    +...                       [np.array([1.0, 1.0])],
    +...                       log.collector, projectile, contrl, param,
    +...                       1, 10000, 14.890, 10000, 14.961)
    +...         x=sio.getvalue()
    +>>> tt = x.split()
    +>>> print(tt[0])
    +figureOfMerit;totalTime;nSteps;start0;start1;end0;end1
    +>>> for y in tt[1:]:
    +...     print(";".join(f"{float(v):.3f}" for v in y.split(";")))
    +403374.924;14.890;10000.000;0.000;1.000;1052.882;-33.244
    +407810.750;14.961;10000.000;1.000;1.000;1058.902;-38.616
    +
    collector(index, ode, j, time)[source]

    Log the result of a multi-ode run.

    Parameters:
    • index (int) – the index of the result

    • ode (ndarray) – the ode result matrix

    • j (float) – the figure of merit

    • time (float) – the time value

    Return type:

    None

    moptipyapps.dynamic_control.results_plot module

    An illustrator for results gathered from ODE integration to multi-plots.

    This evaluator will create figures where each sub-plot corresponds to one evolution of the system over time. The starting state is marked with a blue cross, the final state with a red one. Both states are connected with a line that marks the progress over time. The line begins with blue color and changes its color over violet/pinkish towards yellow the farther in time the system progresses.

    moptipyapps.dynamic_control.results_plot.END_COLOR: Final[str] = 'red'

    the end point color

    moptipyapps.dynamic_control.results_plot.END_MARKER: Final[str] = 'o●'

    the end marker

    class moptipyapps.dynamic_control.results_plot.ResultsPlot(dest_file, sup_title, state_dims, plot_indices=(0,), state_dim_mod=0)[source]

    Bases: AbstractContextManager

    A class for plotting results via multi_run_ode.

    Function moptipyapps.dynamic_control.ode.multi_run_ode() can pass its results to various output generating procedures. This class here offers a procedure for plotting them to a file.

    collector(index, ode, j, time)[source]

    Plot the result of a multi-ode run.

    Parameters:
    • index (int) – the index of the result

    • ode (ndarray) – the ode result matrix

    • j (float) – the figure of merit

    • time (float) – the time value

    Return type:

    None

    moptipyapps.dynamic_control.results_plot.START_COLOR: Final[str] = 'blue'

    the start point color

    moptipyapps.dynamic_control.results_plot.START_MARKER: Final[str] = '++'

    the start marker

    moptipyapps.dynamic_control.starting_points module

    Synthesize some interesting starting points.

    Here we have some basic functionality to synthesize starting points, i.e., training cases, for the dynamic systems control task. The points synthesized here by function make_interesting_starting_points() try to fulfill two goals:

    1. the points should be as far away from each other as possible in the state space,

    2. there should be points of many different distances from the state space origin, and

    3. compared to the coordinates of the other points, the coordinates of the synthesized points should be sometimes smaller and sometimes larger (where sometimes should ideally mean “equally often”).

    These two goals are slightly contradicting and are achieved by forcing the points to be located on rings of increasing distance from the origin via interesting_point_transform() while maximizing their mean distance to each other via interesting_point_objective(). Since make_interesting_starting_points() is a bit slow, it makes sense to pre-compute the points and then store them as array constants.

    moptipyapps.dynamic_control.starting_points.interesting_point_objective(x, other, max_radius, dim)[source]

    Compute the point diversity. :rtype: float

    1. the distance between the points

    2. the distance to the other points

    3. the coordinates in the different dimensions should be equally often smaller and larger than those of the starting points

    moptipyapps.dynamic_control.starting_points.interesting_point_transform(x, max_radius, dim)[source]

    Transform interesting points.

    Return type:

    ndarray

    >>> xx = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12.0])
    +>>> ppp = interesting_point_transform(xx, 10.0, 3)
    +>>> print(ppp)
    +[[0.6681531  1.33630621 2.00445931]
    + [2.27921153 2.84901441 3.41881729]
    + [3.76928033 4.30774895 4.84621757]
    + [5.23423923 5.75766315 6.28108707]]
    +>>> print(xx)
    +[0.6681531  1.33630621 2.00445931 2.27921153 2.84901441 3.41881729
    + 3.76928033 4.30774895 4.84621757 5.23423923 5.75766315 6.28108707]
    +>>> print([np.sqrt(np.square(pppp).sum()) for pppp in ppp])
    +[2.5, 5.0, 7.5, 10.0]
    +>>> ppp = interesting_point_transform(xx, 10.0, 3)
    +>>> print(ppp)
    +[[0.6681531  1.33630621 2.00445931]
    + [2.27921153 2.84901441 3.41881729]
    + [3.76928033 4.30774895 4.84621757]
    + [5.23423923 5.75766315 6.28108707]]
    +>>> print([np.sqrt(np.square(pppp).sum()) for pppp in ppp])
    +[2.5, 5.0, 7.5, 10.0]
    +>>> ppp = interesting_point_transform(xx, 10.0, 2)
    +>>> print(ppp)
    +[[0.74535599 1.49071198]
    + [2.20132119 2.50305736]
    + [3.200922   3.8411064 ]
    + [4.39003072 5.01717796]
    + [5.66154475 6.11484713]
    + [6.75724629 7.3715414 ]]
    +
    moptipyapps.dynamic_control.starting_points.make_interesting_starting_points(n, other, log=True)[source]

    Create some reasonably diverse starting points.

    Parameters:
    • n (int) – the number of starting points

    • other (Iterable[Iterable[float]]) – the other points

    • log (bool, default: True) – write log output

    Return type:

    ndarray

    Returns:

    the starting points

    >>> p = make_interesting_starting_points(
    +...     3, np.array([[1.0, 2.0], [3.0, 2.9]]), False)
    +>>> print(",".join(";".join(f"{x:.5f}" for x in row) for row in p))
    +1.77767;0.33029,1.10482;3.44328,3.18515;-4.39064
    +
    >>> p = make_interesting_starting_points(
    +...     3, np.array([[1.0, 2.0, 7.0], [3.0, 2.9, 1.1]]), False)
    +>>> print(",".join(";".join(f"{x:.5f}" for x in row) for row in p))
    +1.51392;-2.66567;0.86153,3.26154;-5.07757;2.03484,3.75627;5.88214;6.52310
    +

    moptipyapps.dynamic_control.surrogate_optimizer module

    A surrogate system model-based Optimization approach.

    In the real world, we want to synthesize a controller c(s, p) that can drive a dynamic system into a good state. The controller receives as input the current state s, say, from sensor readings. It can also be parameterized by a vector p, imagine c to be, for example, an artificial neural network and then p would be its weight vector. The output of c will influence the system in some way. In our example experiments, this is done by becoming part of the state differential ds/dt. Anyway, in the real world, the controller may steer the rotation speed of a rotor or the angles of rotor blades or whatever. Now you can imagine that doing real-world experiments is costly and takes a long time. Everytime we want to test a parameterization p, some form experiment, maybe in a wind tunnel, has to be done.

    So it would be beneficial if we could replace the actual experiment by a simulation. This would mean that we learn a model M that can compute the state change ds/dt based on the current state s and controller output c at reasonable accuracy. If we had such a computational model, then we could run the controller optimization process on that model. Once finished, we could apply and evaluate the best controller that we have discovered in a real experiment. With the observed behavior of the actual controller system, we may even be able to update and improve our system model to become more accurate. So we could alternate between real experiments and optimization runs on the simulation. Of course, we would always need to do some real experiments at first to gather the data to obtain our initial model M. But if we can get this to work, then we could probably get much better controllers with fewer actual experiments.

    This here is an algorithm that tries to implement the above pattern. This algorithm employs three different sub-algorithms:

    1. For sampling the initial fes_for_warmup FEs, it uses a warm-up algorithm - by default, this is done by random_sampling.

    2. Then, it spends fes_for_training steps on the collected data to train the model using the model training algorithm, which, by default, is BiPopCMAES.

    3. Then, it spends fes_per_model_run steps to train controllers on the model, by default again with a BiPopCMAES.

    For the model and controller optimization, it thus uses by default the BiPop-CMA-ES offered by moptipy (BiPopCMAES). But it uses two instances of this algorithm, namely one to optimize the controller parameters and one that optimizes the model parameters. And, as said, a random sampling method to gather the initial samples.

    The idea is that we divide the computational budget into a warmup and a model-based phase. In the warmup phase, we use CMA-ES to normally optimize the controller based on the actual simulation of the dynamic system. However, while doing so, for every time step in the simulation, we collect three things: The current state vector s, the control vector c, and the resulting state differential ds/dt. Now if we have such data, we can look at the dynamic system as a function D(s, c) = ds/dt. If we consider the dynamic system to be such a function and we have collected the vectors (s, c) and ds/dt, then we may as well attempt to learn this system. So after the warmup phase, our algorithm does the following: In a loop (for the rest of the computational budget), it first tries to learn a model M of D. Then, it replaces the actual differential equations of the system in ODE solution approach of the objective function with M. In other words, we kick out the actual system and instead use the learned system model M. We replace the differential equations that describe the system using M. We can now run an entire optimization process on this learned model only, with ODE integration and all. This optimization process gives us one new solution which we then evaluate on the real objective function (which costs 1 FE and gives us a new heap of (s, c) and ds/dt vectors). With this new data, we again learn a new and hopefully more accurate model M. This process is iterated until the rest of the computational budget is exhausted.

    This approach hopefully allows us to learn a model of a dynamic system while synthesizing a controller for it. Since we can have infinitely more time to synthesize the controller on a learned system model compared to an actual model, this may give us much better results.

    The starting points of the work here were conversations with Prof. Dr. Bernd NOACK and Guy Yoslan CORNEJO MACEDA of the Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)).

    class moptipyapps.dynamic_control.surrogate_optimizer.SurrogateOptimizer(system_model, controller_space, objective, fes_for_warmup, fes_for_training=None, ms_for_training=None, fes_per_model_run=None, ms_per_model_run=None, fancy_logs=False, warmup_algorithm=<function SurrogateOptimizer.<lambda>>, model_training_algorithm=<function _bpcmaes>, controller_training_algorithm=<function _bpcmaes>)[source]

    Bases: Algorithm

    A surrogate model-based CMA-ES algorithm.

    fancy_logs: Final[bool]

    should we do fancy logging?

    fes_for_training: Final[int | None]

    the FEs for training the model

    fes_for_warmup: Final[int]

    the number of objective function evaluations to be used for warmup

    fes_per_model_run: Final[int | None]

    the FEs for each run on the model

    initialize()[source]

    Initialize.

    Return type:

    None

    log_parameters_to(logger)[source]

    Log all parameters of this component as key-value pairs.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    ms_for_training: Final[int | None]

    the ms for training the model

    ms_per_model_run: Final[int | None]

    the ms for each run on the model

    solve(process)[source]

    Solve the modelling problem.

    This function begins by spending fes_for_warmup objective function evaluations (FEs) on the actual problem, i.e., by trying to synthesize controllers for the “real” system, using process to evaluate the controller performance. The objective function passed to the constructor (an instance of FigureOfMerit) must be used by process as well. This way, during the warm-up phase, we can collect tuples of the (system state, controller output) and the resulting system differential for each simulated time step. This is done via set_raw().

    After the warm-up phase, we can obtain these collected data via get_differentials(). The data is then used to train a model via the model objective function model_objective. The system model is again basically a Controller which is parameterized appropriately. For this, we use a CMA-ES algorithm for fes_for_training FEs.

    Once the model training is completed, we switch the objective function to use the model instead of the actual system for evaluating controllers, which is done via set_model(). We then train a completely new controller on the model objective function. Notice that now, the actual system is not involved at all. We do this again using a CMA-ES algorithm for fes_per_model_run FEs.

    After training the controller, we can evaluate it on the real system using the evaluate() method of the actual process (after switching back to the real model via set_raw()). This nets us a) the actual controller performance and b) a new set of (system state, controller output) + system state differential tuples.

    Since we now have more data, we can go back and train a new system model and then use this model for another model-based optimization run. And so on, and so on. Until the budget is exhausted.

    Parameters:

    process (Process) – the original optimization process, which must use the objective function (an instance of FigureOfMerit) as its objective function.

    Return type:

    None

    system_model: Final[SystemModel]

    the system model

    moptipyapps.dynamic_control.system module

    A class to model a dynamic system governed by differential equations.

    A system has a current state vector at any point in time. The state changes over time based on differential equations. These equations can be influenced by the output of a controller. Our System presents the state dimension and differential equations. It also presents several starting states for simulating the system. The starting states are divided into training and testing states. The training states can be used for, well, training controllers to learn how to handle the system. The testing states are then used to verify whether a synthesized controller actually works.

    Examples for different dynamic systems are given in package systems.

    class moptipyapps.dynamic_control.system.System(name, state_dims, control_dims, state_dim_mod, state_dims_in_j, gamma, test_starting_states, training_starting_states, test_steps=5000, test_time=50.0, training_steps=1000, training_time=50.0, plot_examples=(0,))[source]

    Bases: Component

    A class for governing a system via differential system.

    control_dims: Final[int]

    the dimensions of the controller output

    describe_system(title, controller, parameters, base_name, dest_dir, skip_if_exists=False)[source]

    Describe the performance of a given system of system.

    Parameters:
    • title (str | None) – the title

    • controller (Callable[[ndarray, float, TypeVar(T), ndarray], None]) – the controller to simulate

    • parameters (TypeVar(T)) – the controller parameters

    • base_name (str) – the base name of the file to produce

    • dest_dir (str) – the destination directory

    • skip_if_exists (bool, default: False) – if the file already exists

    Return type:

    tuple[Path, ...]

    Returns:

    the paths of the generated files

    describe_system_without_control(dest_dir, skip_if_exists=True)[source]

    Describe the performance of a given system of system.

    Parameters:
    • dest_dir (str) – the destination directory

    • skip_if_exists (bool, default: True) – if the file already exists

    Return type:

    tuple[Path, ...]

    Returns:

    the paths of the generated files

    equations(state, time, control, out)[source]

    Compute the values of the differential equations to be simulated.

    Parameters:
    • state (ndarray) – the state of the system

    • time (float) – the time index

    • control (ndarray) – the output of the controller

    • out (ndarray) – the differential, i.e., the output of this function

    Return type:

    None

    gamma: Final[float]

    The Weight of the control values in the figure of merit computation.

    log_parameters_to(logger)[source]

    Log all parameters of this component as key-value pairs.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    name: Final[str]

    the name of the model

    plot_examples: Final[tuple[int, ...]]

    the plot examples

    plot_points(dest_dir, skip_if_exists=True)[source]

    Plot the training and testing points of the equation.

    Parameters:
    • dest_dir (str) – the destination directory

    • skip_if_exists (bool, default: True) – True to skip existing files, False otherwise

    Return type:

    Path

    Returns:

    the plotted file

    state_dim_mod: Final[int]

    The modulus for the state dimensions for plotting

    state_dims: Final[int]

    the dimensions of the state variable

    state_dims_in_j: Final[int]

    The number of dimensions used in the J computation

    test_starting_states: Final[ndarray]

    the test starting states

    test_steps: Final[int]

    the test simulation steps

    test_time: Final[float]

    the test time

    training_starting_states: Final[ndarray]

    the test starting states

    training_steps: Final[int]

    the training simulation steps

    training_time: Final[float]

    the training time

    class moptipyapps.dynamic_control.system.T

    the type variable for ODE controller parameters

    alias of TypeVar(‘T’)

    moptipyapps.dynamic_control.system_model module

    An extended dynamic control problem Instance with a model for the dynamics.

    An Instance is a combination of

    • a set of differential equations (system) that govern the change D=ds/dt of the state s of a dynamic system (based on its current state s and the controller output c(s)), i.e., ds/dt=D(s,c(s)) and

    • a blueprint c(s, p) of the controller c(s) (controller).

    The blueprint of the controller is basically a function that can be parameterized, so it is actually a function c(s, p) and the goal of optimization is to parameterize it in such a way that the figure of merit, i.e., the objective value (objective) of the system (usually the sum of squared state values and squared controller outputs) is minimized. Parameterization means finding good values p such that the above goal is reached. In other words, we want to synthesize a controller (by finding good values of p) in such a way that the state equations drive the system into a stable state, usually ideally the origin of the coordinate system.

    Now here this Instance is extended to a SystemModel by adding a parameterized model M(s, c(s), q) to the mix. The idea is to develop the parameterization q of the model M that can replace the actual system equations D. Such a model receives as input the current system state vector s and the controller output c(s) for the state vector s. It will return the differential D of the system state, i.e., ds/dt. In other words, a properly constructed model can replace the equations parameter in the ODE integrator run_ode(). The input used for training is provided by diff_from_ode().

    What we do here is to re-use the same function models as used in controllers (controller) and learn their parameterizations from the observed data. If successful, we can wrap everything together into a Callable and plug it into the system instead of the original equations.

    The thing that SystemModel offers is thus a blueprint of the model M. Obviously, we can conceive many different such blueprints. We could have a linear model, a quadratic model, or maybe neural network (in which case, we need to decide about the number of layers and layer sizes). So an instance of this surrogate model based approach has an equation system, a controller blueprint, and a model blueprint.

    An example implementation of the concept of synthesizing models for a dynamic system in order to synthesize controllers is given as the surrogate_optimizer algorithm. Examples for different dynamic systems controllers (which we here also use to model the systems themselves) are given in package controllers.

    The starting points of the work here were conversations with Prof. Dr. Bernd NOACK and Guy Yoslan CORNEJO MACEDA of the Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)).

    class moptipyapps.dynamic_control.system_model.SystemModel(system, controller, model)[source]

    Bases: Instance

    A dynamic system control Instance with a system model blueprint.

    log_parameters_to(logger)[source]

    Log all parameters of this component as key-value pairs.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    model: Final[Controller]

    the model blueprint that can be trained to hopefully replace the system in the ODE integration / system simulation procedure

    diff --git a/moptipyapps.dynamic_control.systems.html b/moptipyapps.dynamic_control.systems.html new file mode 100644 index 00000000..17a19c94 --- /dev/null +++ b/moptipyapps.dynamic_control.systems.html @@ -0,0 +1 @@ +moptipyapps.dynamic_control.systems package — moptipyapps 0.8.62 documentation

    moptipyapps.dynamic_control.systems package

    Examples for differential equations systems with dynamic control.

    Here we provide several systems whose state is governed by differential equations that allow us to plug in a controller. The controller receives the state of the system as input and its output is added to one (or more) of the differential equations.

    • The stuart_landau system has a two-dimensional state space. The goal is to navigate the system into the origin. Without control, the system will converge to oscillate in a circle around the origin with a diameter of sqrt(0.1).

    • The lorenz system has a three-dimensional state space. The goal is again to move the system to the origin using a control strategy (and to keep it there). Without control, it will converge to a double-circle oscillation.

    Submodules

    moptipyapps.dynamic_control.systems.lorenz module

    The three-dimensional Lorenz system.

    The initial starting point of the work here were conversations with Prof. Dr. Bernd NOACK and Guy Yoslan CORNEJO MACEDA of the Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)) as well as the following two MSc theses and book:

    1. Yuxiang LI (李宇翔). Jet Mixing Enhancement using Deep Reinforcement Learning (基于深度强化学习的射流混合增强控制). MSc Thesis. Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)). January 2023.

    2. Wei SUN (孙伟). Wake Control of 1-2-3 Fluidic Pinball using Deep Reinforcement Learning (基于深度强化学习方法的 1-2-3 流体弹球尾流控制). MSc Thesis. Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)). January 2023.

    3. Guy Yoslan CORNEJO MACEDA, François LUSSEYRAN, and Bernd R. NOACK. xMLC: A Toolkit for Machine Learning Control, First Edition. Machine Learning Tools in Fluid Mechanics, Vol 2. Shenzhen & Paris; Universitätsbibliothek der Technischen Universität Braunschweig. 2022 https://doi.org/10.24355/dbbs.084-202208220937-0

    moptipyapps.dynamic_control.systems.lorenz.LORENZ_111: Final[System] = lorenz

    The Lorenz system with 111 training points.

    moptipyapps.dynamic_control.systems.lorenz.LORENZ_4: Final[System] = lorenz

    The Lorenz system with 4 training points.

    moptipyapps.dynamic_control.systems.lorenz.make_lorenz(n_points)[source]

    Create the Lorenz system.

    Parameters:

    n_points (int) – the number of training points

    Return type:

    System

    Returns:

    the Lorenz system

    moptipyapps.dynamic_control.systems.stuart_landau module

    The two-dimensional Stuart-Landau system.

    The initial starting point of the work here were conversations with Prof. Dr. Bernd NOACK and Guy Yoslan CORNEJO MACEDA of the Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)) as well as the following two MSc theses and book:

    1. Yuxiang LI (李宇翔). Jet Mixing Enhancement using Deep Reinforcement Learning (基于深度强化学习的射流混合增强控制). MSc Thesis. Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)). January 2023.

    2. Wei SUN (孙伟). Wake Control of 1-2-3 Fluidic Pinball using Deep Reinforcement Learning (基于深度强化学习方法的 1-2-3 流体弹球尾流控制). MSc Thesis. Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)). January 2023.

    3. Guy Yoslan CORNEJO MACEDA, François LUSSEYRAN, and Bernd R. NOACK. xMLC: A Toolkit for Machine Learning Control, First Edition. Machine Learning Tools in Fluid Mechanics, Vol 2. Shenzhen & Paris; Universitätsbibliothek der Technischen Universität Braunschweig. 2022 https://doi.org/10.24355/dbbs.084-202208220937-0

    moptipyapps.dynamic_control.systems.stuart_landau.STUART_LANDAU_111: Final[System] = stuart_landau

    The Stuart-Landau system with 111 training points.

    moptipyapps.dynamic_control.systems.stuart_landau.STUART_LANDAU_4: Final[System] = stuart_landau

    The Stuart-Landau system with 4 training points.

    moptipyapps.dynamic_control.systems.stuart_landau.make_stuart_landau(n_points)[source]

    Create the Stuart-Landau system.

    Parameters:

    n_points (int) – the number of training points

    Return type:

    System

    Returns:

    the Stuart-Landau system

    moptipyapps.dynamic_control.systems.three_coupled_oscillators module

    A system of three coupled oscillators.

    There are three oscillators located in a two-dimensional plane. Thus, there are a total of six coordinates.

    The initial starting point of the work here were conversations with Prof. Dr. Bernd NOACK and Guy Yoslan CORNEJO MACEDA of the Harbin Institute of Technology in Shenzhen, China (哈尔滨工业大学(深圳)) as well as the following paper:

    1. Ruiying Li, Bernd R. Noack, Laurent Cordier, Jacques Borée, Eurika Kaiser, and Fabien Harambat. Linear genetic programming control for strongly nonlinear dynamics with frequency crosstalk. Archives of Mechanics. 70(6):505-534. Warszawa 2018. Seventy Years of the Archives of Mechanics. https://doi.org/10.24423/aom.3000. Also: arXiv:1705.00367v1 [physics.flu-dyn] 30 Apr 2017. https://arxiv.org/abs/1705.00367.

    moptipyapps.dynamic_control.systems.three_coupled_oscillators.THREE_COUPLED_OSCILLATORS: Final[System] = 3oscillators

    The 3 oscillators system with 4 training points.

    moptipyapps.dynamic_control.systems.three_coupled_oscillators.make_3_couple_oscillators(n_points)[source]

    Create the oscillator system.

    Parameters:

    n_points (int) – the number of training points

    Return type:

    System

    Returns:

    the Lorenz system

    diff --git a/moptipyapps.html b/moptipyapps.html new file mode 100644 index 00000000..a86fb615 --- /dev/null +++ b/moptipyapps.html @@ -0,0 +1,16 @@ +moptipyapps package — moptipyapps 0.8.62 documentation

    moptipyapps package

    Applications of Metaheuristic Optimization in Python.

    Currently, the following applications are implemented:

    • binpacking2d provides methods to solve two-dimensional bin packing instances,

    • dynamic_control can simulate controlled dynamic systems of differential equations and our goal is to synthesize controllers that can steer such systems into beneficial states,

    • mod:~moptipyapps.tsp offers instances of the well-known Traveling Salesperson Problem (TSP) and some very basic algorithms to tackle it.

    The following additional tools are implemented:

    • tests offers unit tests to try out optimization algorithms and other instances of component on the different problems that are provided above.

    • shared offers shared constants and tools.

    Subpackages

    Submodules

    moptipyapps.shared module

    Some shared variables and constants.

    moptipyapps.shared.SCOPE_INSTANCE: Final[str] = 'inst'

    the instance scope

    moptipyapps.shared.moptipyapps_argparser(file, description, epilog)[source]

    Create an argument parser with default settings.

    Parameters:
    • file (str) – the __file__ special variable of the calling script

    • description (str) – the description string

    • epilog (str) – the epilogue string

    Return type:

    ArgumentParser

    Returns:

    the argument parser

    >>> ap = moptipyapps_argparser(
    +...     __file__, "This is a test program.", "This is a test.")
    +>>> isinstance(ap, argparse.ArgumentParser)
    +True
    +>>> "Copyright" in ap.epilog
    +True
    +

    Print the standard csv footer for moptipyapps.

    Parameters:
    • _ – the setup object, ignored

    • additional (str | None, default: None) – any additional output string

    Return type:

    Iterable[str]

    Returns:

    the comments

    >>> for s in motipyapps_footer_bottom_comments(None, "bla"):
    +...     print(s[:49])
    +This data has been generated with moptipyapps ver
    +bla
    +You can find moptipyapps at https://thomasweise.g
    +
    >>> for s in motipyapps_footer_bottom_comments(None, None):
    +...     print(s[:49])
    +This data has been generated with moptipyapps ver
    +You can find moptipyapps at https://thomasweise.g
    +

    moptipyapps.version module

    An internal file with the version of the moptipyapps package.

    diff --git a/moptipyapps.order1d.html b/moptipyapps.order1d.html new file mode 100644 index 00000000..1115aa9f --- /dev/null +++ b/moptipyapps.order1d.html @@ -0,0 +1,211 @@ +moptipyapps.order1d package — moptipyapps 0.8.62 documentation

    moptipyapps.order1d package

    A set of tools for ordering objects in 1 dimension.

    Let’s assume that we have n objects and a distance metric that can compute the distance between two objects. We do not know and also do not care about in how many dimension the objects exist - we just have objects and a distance metric.

    Now we want to find a one-dimensional order of the objects that reflects their original distance-based topology. For each object a, we want that its closest neighbor in the order is also its actual closest neighbor according to the distance metric. It’s second-closest neighbor should be the actual second-closest neighbor according to the distance metric. And so on.

    Since we only care about the object order and do not want to metrically map the distances to one dimension, we can represent the solution as permutation of natural numbers.

    Of course, in a one-dimensional order, each object has exactly two closest neighbors (the one on its left and the one on its right) unless it is situated either at the beginning or end of the order, in which case it has exactly one closest neighbor. Based on the actual distance metric, an object may have any number of closest neighbors, maybe only one, or maybe three equally-far away objects. So it is not clear whether a perfect mapping to the one-dimensional permutations even exists. Probably it will not, but this shall not bother us.

    Either way, we can try to find one that comes as close as possible to the real deal.

    Another way to describe this problem is as follows: Imagine that you have n objects and only know their mutual distances. You want to arrange them on a one-dimensional axis in a way that does sort of reflect their neighborhood structure in whatever space they are originally located in.

    The goal of solving this one-dimensional ordering problem is then to arrange n objects on a 1-dimensional (e.g., horizontal) axis given a distance matrix describing their location in a potentially high-dimensional or unstructured space. The objects should be arranged in such a way that, for each object,

    • the nearest neighbors on the 1-dimensional axis are also the nearest neighbors in the original space (according to the distance matrix provided),

    • the second nearest neighbors on the 1-dimensional axis are also the second nearest neighbors in the original space (according to the distance matrix provided),

    • the third nearest neighbors on the 1-dimensional axis are also the third nearest neighbors in the original space (according to the distance matrix provided),

    • and so on; with (e.g., quadratically) decreasing weights of neighbor distance ranks.

    We do not care about the actual precise distances (e.g., something like “0.001”) between the objects on either the one-dimensional nor the original space. We only care about the distance ranks, i.e., about “2nd nearest neighbor,” but not “0.012 distance units away.” The solutions of this problem are thus permutations (orders) of the objects. Of course, if we really want to plot the objects, such a permutation can easily be translated to x-coordinates, say, by dividing the index of an object by the number of objects, which nets values in [0,1]. But basically, we reduce the task to finding permutations of objects that reflect the neighbor structure of the original space as closely as possible.

    If such a problem is solved correctly, then the arrangement on the one-dimensional axis should properly reflect the arrangement of the objects in the original space. Of course, solving this problem exactly may not actually be possible, since an object on a one-dimensional axis may either have exactly two i-nearest-neighbors (if it is at least i slots away from either end of the permutation) or exactly 1 such neighbor, if it is closer that i units. The object directly at the start of the permutation has only 1 nearest neighbor (the object that comes next). That next object, however, has two, namely the first object and the third object. In the original space where the objects come from, however, there may be any number of “nearest neighbors.” Imagine a two-dimensional space where one object sits at the center of a circle of other objects. Then all other objects are its nearest neighbors, whereas an object on the circle either has exactly two nearest neighbors or, maybe, in the odd situation that the radius equals a multiple of the distance to the neighbors on the circle, three. Such a structure cannot be represented exactly in one dimension.

    But that’s OK. Because we mainly do this for visualization purposes anyway.

    Now here comes the cool thing: We can cast this problem to a Quadratic Assignment Problem (qap). A QAP is defined by a distance matrix and a flow matrix. The idea is to assign n facilities to locations. The distances between the locations are given by the distance matrix. At the same time, the flow matrix defines the flows between the facilities. The goal is to find the assignment of facilities to locations that minimizes the overall “flow times distance” product sum.

    We can translate the “One-Dimensional Ordering Problem” to the QAP as follows: Imagine that we have n unique objects and know the (symmetric) distances between them.

    Let’s say that we have four numbers as objects, 1, 2, 3, 4. >>> data = [1, 2, 3, 4] >>> n = len(data)

    The distance between two numbers a and b be abs(a - b). >>> def dist(a, b): … return abs(a - b)

    The original distance matrix would be

    >>> dm = [[dist(i, j) for j in range(n)] for i in range(n)]
    +>>> print(dm)
    +[[0, 1, 2, 3], [1, 0, 1, 2], [2, 1, 0, 1], [3, 2, 1, 0]]
    +

    Now from this matrix, we can find the nearest neighbors as follows:

    >>> from scipy.stats import rankdata  # type: ignore
    +>>> import numpy as np
    +>>> rnks = rankdata(dm, axis=1, method="average") - 1
    +>>> print(rnks)
    +[[0.  1.  2.  3. ]
    + [1.5 0.  1.5 3. ]
    + [3.  1.5 0.  1.5]
    + [3.  2.  1.  0. ]]
    +

    From the perspective of “1”, “2” is the first nearest neighbor, “3” is the second-nearest neighbor, and “4” is the third-nearest neighbor. From the perspective of “2”, both “1” and “3” are nearest neighbors, so they share rank 1.5. And so on.

    Let’s multiply this by 2 to get integers: [If no fractional ranks appear, then we do not need to multiply by 2.]

    >>> rnks = np.array(rnks * 2, dtype=int)
    +>>> print(rnks)
    +[[0 2 4 6]
    + [3 0 3 6]
    + [6 3 0 3]
    + [6 4 2 0]]
    +

    Now we want to translate this to a flow matrix (NOT a distance matrix). What we want is that there is a big flow from each object to its nearest neighbor, a smaller flow from each object to its second-nearest neighbor, a yet smaller flow to the third nearest neighbor, and so on. So all we need to do is to subtract the elements off the diagonal from 8 = 2*n. [If no fractional elements were there, then we would use n instead of 2*n.] Anyway, we get:

    >>> rnks = np.array([[0 if x == 0 else 2*n - x for x in a]
    +...                  for a in rnks], int)
    +>>> print(rnks)
    +[[0 6 4 2]
    + [5 0 5 2]
    + [2 5 0 5]
    + [2 4 6 0]]
    +

    We can see: The flow from “1” to “2” is 6, which higher than the flow from “1” to “3” (namely 4), and so on. The low from “2” to “1” is 5, which is a bit lower than 6 but higher than 4, because “1” is the “1.5th nearest neighbor of 2”.

    Just for good measures, we can weight this qudratically, so we get:

    >>> rnks = rnks ** 2
    +>>> print(rnks)
    +[[ 0 36 16  4]
    + [25  0 25  4]
    + [ 4 25  0 25]
    + [ 4 16 36  0]]
    +

    This way, we give much more importance to “getting the nearest neighbors right” than getting “far-away neighbors” right. Nice.

    OK, but how about the distance matrix for the QAP? What’s the distance? Well, it’s the distance that I would get by arranging the objects in a specific order. It is the difference of the indices in the permutation:

    >>> print(np.array([[abs(i - j) for j in range(n)] for i in range(n)], int))
    +[[0 1 2 3]
    + [1 0 1 2]
    + [2 1 0 1]
    + [3 2 1 0]]
    +

    This means: The object that I will place at index 1 has a distance of “1” to the object at index 2. It has a distance of “2” to the object at index 3. It has a distance of “3” to the object at index 4. The object at index 2 will have a distance of “1” to both the objects at indices 1 and 3 and a distance of “2” to the object at index 4. And so on.

    In other words, objects that are close in their original space have a big flow between each other. If we put them at directly neighboring indexes, then we will multiply this big flow with a small number. If we put them at distant indices, then we will multiply this big flow with a large number.

    Objects that are far away from each other in their original space have a small flow between each other. If we put them at indices that are far apart, we will multiply the larger index-difference = distance with a small number. If we put them close, then we multiply a small distance with a small flow - but we will have to pay for this elsewhere, because then we may need to put objects with a larger flow between each other farther apart.

    >>> from moptipyapps.order1d.instance import Instance
    +>>> the_instance = Instance.from_sequence_and_distance(
    +...     [1, 2, 3, 4], dist, 2, 100, ("bla", ), lambda i: str(i))
    +>>> print(the_instance.flows)
    +[[ 0 36 16  4]
    + [25  0 25  4]
    + [ 4 25  0 25]
    + [ 4 16 36  0]]
    +>>> print(the_instance.distances)
    +[[0 1 2 3]
    + [1 0 1 2]
    + [2 1 0 1]
    + [3 2 1 0]]
    +

    There is one little thing that needs to be done: If we have many objects, then the QAP objective values can get very large. So it makes sense to define a “horizon” after which the relationship for objects are ignored. Above, we chose “100”, which had no impact. If we choose “2”, then only the two nearest neighbors would be considered and we get:

    >>> the_instance = Instance.from_sequence_and_distance(
    +...     [1, 2, 3, 4], dist, 2, 2, ("bla", ), lambda i: str(i))
    +>>> print(the_instance.flows)
    +[[ 0 16  4  0]
    + [ 9  0  9  0]
    + [ 0  9  0  9]
    + [ 0  4 16  0]]
    +>>> print(the_instance.distances)
    +[[0 1 2 3]
    + [1 0 1 2]
    + [2 1 0 1]
    + [3 2 1 0]]
    +

    The distance matrix of the QAP stays the same, but the flow matrix now has several zeros. Anything farther away than the second-nearest neighbor will be ignored, i.e., get a flow of 0.

    Submodules

    moptipyapps.order1d.distances module

    Some examples for distance metrics.

    moptipyapps.order1d.distances.swap_distance(p1, p2)[source]

    Compute the swap distance between two permutations p1 and p1.

    This is the minimum number of swaps required to translate p1 to p2 and vice versa. This function is symmatric.

    An upper bound for the number of maximum number of swaps that could be required is the length of the permutation. This upper bound can be derived from Selection Sort. Imagine that I want to translate the array p1 to p2. I go through p1 from beginning to end. If, at index i, I find the right element (p1[i] == p2[i]), then I do nothing. If not, then the right element must come at some index j>i (because all elements before I already have fixed). So I swap p1[i] with p1[j]. Now p1[i] == p2[i] and I increment i. Once I arrive at the end of p1, it must hold that all(p1[i] == p2[i]). At the same time, I have performed at most one swap at each index during the iteration. Hence, I can never need more swaps than the arrays are long.

    Parameters:
    • p1 (ndarray) – the first permutation

    • p2 (ndarray) – the second permutation

    Return type:

    int

    Returns:

    the swap distance, always between 0 and len(p1)

    >>> swap_distance(np.array([0, 1, 2, 3]), np.array([3, 1, 2, 0]))
    +1
    +>>> swap_distance(np.array([0, 1, 2]), np.array([0, 1, 2]))
    +0
    +>>> swap_distance(np.array([1, 0, 2]), np.array([0, 1, 2]))
    +1
    +>>> swap_distance(np.array([0, 1, 2]), np.array([1, 0, 2]))
    +1
    +>>> swap_distance(np.array([0, 1, 2]), np.array([2, 0, 1]))
    +2
    +>>> swap_distance(np.array([2, 0, 1]), np.array([0, 1, 2]))
    +2
    +>>> swap_distance(np.arange(10), np.array([4, 8, 1, 5, 9, 3, 6, 0, 7, 2]))
    +7
    +>>> swap_distance(np.array([4, 8, 1, 5, 9, 3, 6, 0, 7, 2]), np.arange(10))
    +7
    +

    moptipyapps.order1d.instance module

    An instance of the ordering problem.

    class moptipyapps.order1d.instance.Instance(distances, flow_power, horizon, tag_titles, tags, name=None)[source]

    Bases: Instance

    An instance of the One-Dimensional Ordering Problem.

    Such an instance represents the ranking of objects by their distance to each other as a qap problem.

    >>> def _dist(a, b):
    +...     return abs(a - b)
    +>>> def _tags(a):
    +...     return f"t{a}"
    +>>> the_instance = Instance.from_sequence_and_distance(
    +...     [1, 2, 3], _dist, 1, 100, ("bla", ), _tags)
    +>>> print(the_instance)
    +order1d_3_1
    +>>> print(the_instance.distances)
    +[[0 1 2]
    + [1 0 1]
    + [2 1 0]]
    +>>> print(the_instance.flows)
    +[[0 4 2]
    + [3 0 3]
    + [2 4 0]]
    +
    flow_power: Final[int | float]

    the flow power

    static from_sequence_and_distance(data, get_distance, flow_power, horizon, tag_titles, get_tags, name=None)[source]

    Turn a sequence of objects into a One-Dimensional Ordering instance.

    Parameters:
    Return type:

    Instance

    Returns:

    the ordering instance

    >>> def _dist(a, b):
    +...     return abs(a - b)
    +>>> def _tags(a):
    +...     return f"x{a}", f"b{a}"
    +>>> res = Instance.from_sequence_and_distance(
    +...     [1, 2, 5], _dist, 2, 100, ("a", "b"), _tags)
    +>>> print(res)
    +order1d_3_2
    +>>> print(res.flows)
    +[[0 4 1]
    + [4 0 1]
    + [1 4 0]]
    +>>> print(res.distances)
    +[[0 1 2]
    + [1 0 1]
    + [2 1 0]]
    +>>> res = Instance.from_sequence_and_distance(
    +...     [1, 2, 35, 4], _dist, 2, 100, ("a", "b"), _tags)
    +>>> print(res)
    +order1d_4_2
    +>>> print(res.flows)
    +[[0 9 1 4]
    + [9 0 1 4]
    + [1 4 0 9]
    + [4 9 1 0]]
    +>>> print(res.distances)
    +[[0 1 2 3]
    + [1 0 1 2]
    + [2 1 0 1]
    + [3 2 1 0]]
    +>>> res = Instance.from_sequence_and_distance(
    +...     [1, 2, 4, 4], _dist, 2, 100, ("a", "b"), _tags)
    +>>> print(res)
    +order1d_3_2
    +>>> print(res.flows)
    +[[0 4 1]
    + [4 0 1]
    + [1 4 0]]
    +>>> print(res.distances)
    +[[0 1 2]
    + [1 0 1]
    + [2 1 0]]
    +>>> print(res.tags)
    +((('x1', 'b1'), 0), (('x2', 'b2'), 1), (('x4', 'b4'), 2), (('x4', 'b4'), 2))
    +>>> def _dist2(a, b):
    +...     return abs(abs(a) - abs(b)) + 1
    +>>> res = Instance.from_sequence_and_distance(
    +...     [1, 2, -4, 4], _dist2, 2, 100, ("a", "b"), _tags)
    +>>> print(res)
    +order1d_4_2
    +>>> print(res.flows)
    +[[ 0 36  9  9]
    + [36  0  9  9]
    + [ 4 16  0 36]
    + [ 4 16 36  0]]
    +>>> print(res.distances)
    +[[0 1 2 3]
    + [1 0 1 2]
    + [2 1 0 1]
    + [3 2 1 0]]
    +>>> res = Instance.from_sequence_and_distance(
    +...     [1, 2, -4, 4], _dist2, 3, 100, ("a", "b"), _tags)
    +>>> print(res)
    +order1d_4_3
    +>>> print(res.flows)
    +[[  0 216  27  27]
    + [216   0  27  27]
    + [  8  64   0 216]
    + [  8  64 216   0]]
    +>>> print(res.distances)
    +[[0 1 2 3]
    + [1 0 1 2]
    + [2 1 0 1]
    + [3 2 1 0]]
    +>>> print(res.tags)
    +((('x1', 'b1'), 0), (('x2', 'b2'), 1), (('x-4', 'b-4'), 2), (('x4', 'b4'), 3))
    +>>> res = Instance.from_sequence_and_distance(
    +...     [1, 2, -4, 4], _dist2, 3, 2, ("a", "b"), _tags)
    +>>> print(res)
    +order1d_4_3_2
    +>>> print(res.flows)
    +[[0 8 0 0]
    + [8 0 0 0]
    + [0 1 0 8]
    + [0 1 8 0]]
    +>>> print(res.distances)
    +[[0 1 2 3]
    + [1 0 1 2]
    + [2 1 0 1]
    + [3 2 1 0]]
    +>>> print(res.tags)
    +((('x1', 'b1'), 0), (('x2', 'b2'), 1), (('x-4', 'b-4'), 2), (('x4', 'b4'), 3))
    +>>> res = Instance.from_sequence_and_distance(
    +...     [1, 2, -4, 4], _dist2, 2, 2, ("a", "b"), _tags)
    +>>> print(res)
    +order1d_4_2_2
    +>>> print(res.flows)
    +[[0 4 0 0]
    + [4 0 0 0]
    + [0 1 0 4]
    + [0 1 4 0]]
    +>>> print(res.distances)
    +[[0 1 2 3]
    + [1 0 1 2]
    + [2 1 0 1]
    + [3 2 1 0]]
    +
    horizon: Final[int]

    the horizon

    log_parameters_to(logger)[source]

    Log all parameters of this component as key-value pairs.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    tag_titles: Final[tuple[str, ...]]

    the tag titles

    tags: Final[tuple[tuple[tuple[str, ...], int], ...]]

    the tags, i.e., additional data for each original element

    class moptipyapps.order1d.instance.T

    the type variable for the source object

    alias of TypeVar(‘T’)

    moptipyapps.order1d.space module

    An extension of the permutation space for one-dimensional ordering.

    The main difference is how the to_str result is noted, namely that it contains the mapping of tags to locations.

    >>> def _dist(a, b):
    +...     return abs(a - b)
    +>>> def _tags(a):
    +...     return f"t{a}"
    +>>> the_instance = Instance.from_sequence_and_distance(
    +...     [1, 2, 3, 3, 2, 3], _dist, 2, 10, ("x", ), _tags)
    +>>> the_space = OrderingSpace(the_instance)
    +>>> the_str = the_space.to_str(np.array([0, 2, 1]))
    +>>> the_str.splitlines()
    +['0;2;1', '', 'indexZeroBased;suggestedXin01;x', '0;0;t1', '2;1;t2', '2;1;t2', '1;0.5;t3', '1;0.5;t3', '1;0.5;t3']
    +>>> print(the_space.from_str(the_str))
    +[0 2 1]
    +
    class moptipyapps.order1d.space.OrderingSpace(instance)[source]

    Bases: Permutations

    A space for one-dimensional orderings.

    from_str(text)[source]

    Get the string version from the given text.

    Parameters:

    text (str) – the text

    Return type:

    ndarray

    Returns:

    the string

    instance: Final[Instance]

    the instance

    to_str(x)[source]

    Convert a solution to a string.

    Parameters:

    x (ndarray) – the permutation

    Return type:

    str

    Returns:

    the string

    diff --git a/moptipyapps.qap.html b/moptipyapps.qap.html new file mode 100644 index 00000000..f0aca682 --- /dev/null +++ b/moptipyapps.qap.html @@ -0,0 +1,55 @@ +moptipyapps.qap package — moptipyapps 0.8.62 documentation

    moptipyapps.qap package

    The Quadratic Assignment Problem (QAP).

    The quadratic assignment problem represents assignments of facilities to locations. Between each pair of facilities, there is a flow of goods. Between each two locations, there is a distance. The goal is to assign facilities to locations such that the overall sum of the products of distance and flow gets minimized. Each instance therefore presents a matrix with distances and a matrix with flows flows. The objective is then to minimize said product sum.

    1. Eliane Maria Loiola, Nair Maria Maia de Abreu, Paulo Oswaldo Boaventura-Netto, Peter Hahn, and Tania Querido. A survey for the Quadratic Assignment Problem. European Journal of Operational Research. 176(2):657-690. January 2007. https://doi.org/10.1016/j.ejor.2005.09.032.

    2. Rainer E. Burkard, Eranda Çela, Panos M. Pardalos, and Leonidas S. Pitsoulis. The Quadratic Assignment Problem. In Ding-Zhu Du, Panos M. Pardalos, eds., Handbook of Combinatorial Optimization, pages 1713-1809, 1998, Springer New York, NY, USA. https://doi.org/10.1007/978-1-4613-0303-9_27.

    This is code is part of the research work of Mr. Jiayang Chen (陈嘉阳), a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    Subpackages

    Submodules

    moptipyapps.qap.instance module

    An instance of the Quadratic Assignment Problem.

    In this module, we provide the class Instance that encapsulates all information of a problem instance of the Quadratic Assignment Problem (QAP). The QAP aims to locate facilities at locations such that the flow-distance product sum combining a flows of goods between instances with the distances of the locations becomes minimal. Each instance therefore presents a matrix with distances and a matrix with flows flows.

    1. Eliane Maria Loiola, Nair Maria Maia de Abreu, Paulo Oswaldo Boaventura-Netto, Peter Hahn, and Tania Querido. A survey for the Quadratic Assignment Problem. European Journal of Operational Research. 176(2):657-690. January 2007. https://doi.org/10.1016/j.ejor.2005.09.032.

    2. Rainer E. Burkard, Eranda Çela, Panos M. Pardalos, and Leonidas S. Pitsoulis. The Quadratic Assignment Problem. In Ding-Zhu Du, Panos M. Pardalos, eds., Handbook of Combinatorial Optimization, pages 1713-1809, 1998, Springer New York, NY, USA. https://doi.org/10.1007/978-1-4613-0303-9_27.

    We additionally provide access to several standard QAP benchmark instances via the from_resource() and list_resources() methods. The standard benchmark instances stem from QAPLIB, a library of QAP instances, which can be found at <https://qaplib.mgi.polymtl.ca> and <https://coral.ise.lehigh.edu/data-sets/qaplib>.

    1. QAPLIB - A Quadratic Assignment Problem Library. The Websites <https://qaplib.mgi.polymtl.ca/> (updated 2018) and <https://coral.ise.lehigh.edu/data-sets/qaplib/> (updated 2011), including the benchmark instances, on visited 2023-10-21.

    2. Rainer E. Burkard, Stefan E. Karisch, and Franz Rendl. QAPLIB - A Quadratic Assignment Problem Library. Journal of Global Optimization. 10:391-403, 1997. https://doi.org/10.1023/A:1008293323270.

    class moptipyapps.qap.instance.Instance(distances, flows, lower_bound=None, upper_bound=None, name=None)[source]

    Bases: Component

    An instance of the Quadratic Assignment Problem.

    bks()[source]

    Get the best-known solution, if known, the optimum, or lower bound.

    A tuple with a string identifying the source of the value and a value corresponding to the best-known solution:

    • (“OPT”, xxx): the problem instance has been solved to optimality and xxx is the objective value of the optimum

    • (“LB”, xxx): neither the optimum nor a best-known solution are available for this instance, so we return the lower bound

    The data is based on https://qaplib.mgi.polymtl.ca/, visited on 2024-05-09. The following sources are included:

    • “FF1993GHFTQAP”: Charles Fleurent and Jacques A. Ferland. Genetic Hybrids for the Quadratic Assignment Problem. In Panos M. Pardalos and Henry Wolkowicz, eds, Quadratic Assignment and Related Problems, Proceedings of a DIMACS Workshop, May 20-21, 1993. pages 173-187. Providence, RI, USA: American Mathematical Society.

    • “M2003AMSAAFTQAP”: Alfonsas Misevičius, A Modified Simulated Annealing Algorithm for the Quadratic Assignment Problem. Informatica 14(4):497-514. January 2003. https://doi.org/10.15388/Informatica.2003.037.

    • “M2005ATSAFTQAP”: Alfonsas Misevičius. A Tabu Search Algorithm for the Quadratic Assignment Problem. Computational Optimization and Applications 30(1):95-111. 2005. https://doi.org/10.1007/s10589-005-4562-x.

    • “M2008AIOTITSAFTQAP”: Alfonsas Misevičius. An Implementation of the Iterated Tabu Search Algorithm for the Quadratic Assignment Problem. Working Paper. 2008. Kaunas, Lithuania: Kaunas University of Technology.

    • “S1997MMASFQAP”: Thomas Stützle. MAX-MIN Ant System for Quadratic Assignment Problems. Research Report AIDA-97-04. 1997. Darmstadt, Germany: Department of Computer Schience, Darmstadt University of Technology.

    • “T1991RTSFTQAP”: Éric Taillard. Robust Taboo Search for the Quadratic Assignment Problem. Parallel Computing. 17(4-5):443-455. July 1991.

    • “T1995COISFTQAP”: Éric D. Taillard. Comparison of Iterative Searches for the Quadratic Assignment Problem. Location Science 3(2):87-105. 1995.

    • “TB1994AISAAFTQAP”: Ulrich Wilhelm Thonemann and Andreas Bölte. An Improved Simulated Annealing Algorithm for the Quadratic Assignment Problem. Working Paper 1994. Paderborn, Germany: School of Business, Department of Production and Operations Research, University of Paderborn.

    • “TG1997AMFTQAP”: Éric D. Taillard and Luca-Maria Gambardella. Adaptive Memories for the Quadratic Assignment Problem. 1997. Technical Report IDSIA-87-97. Lugano, Switzerland: IDSIA.

    Return type:

    tuple[str, int]

    Returns:

    a tuple[str, int] with the objective value of the best-known (if any is available), the optimum, or the lower bound.

    distances: Final[ndarray]

    the distance matrix

    flows: Final[ndarray]

    the flows

    static from_qaplib_stream(stream, lower_bound=None, upper_bound=None, name=None)[source]

    Load an instance from a QAPLib-formatted stream.

    Parameters:
    • stream (Iterable[str]) – the stream to load the data from

    • lower_bound (int | None, default: None) – the optional lower bound

    • upper_bound (int | None, default: None) – the optional upper bound

    • name (str | None, default: None) – the name of this instance

    Return type:

    Instance

    Returns:

    the instance

    >>> ins = Instance.from_qaplib_stream([
    +...         "4", "",
    +...         "1 2 3 4 5 6 7 8 9 10 11 12 13",
    +...         "   14    15   16  ", "",
    +...         "17 18 19 20 21 22 23 24 25 26     27",
    +...         " 28   29 30 31   32"])
    +>>> ins.distances
    +array([[17, 18, 19, 20],
    +       [21, 22, 23, 24],
    +       [25, 26, 27, 28],
    +       [29, 30, 31, 32]], dtype=int16)
    +>>> ins.flows
    +array([[ 1,  2,  3,  4],
    +       [ 5,  6,  7,  8],
    +       [ 9, 10, 11, 12],
    +       [13, 14, 15, 16]], dtype=int16)
    +>>> ins.lower_bound
    +2992
    +>>> ins.upper_bound
    +3672
    +>>> ins.name
    +'qap4_2992_3672'
    +
    static from_resource(name)[source]

    Load a QAP-Lib instance from a resource.

    The original data can be found at <https://qaplib.mgi.polymtl.ca> and <https://coral.ise.lehigh.edu/data-sets/qaplib>.

    Parameters:

    name (str) – the name string

    Return type:

    Instance

    Returns:

    the instance

    >>> insta = Instance.from_resource("chr25a")
    +>>> print(insta.n)
    +25
    +>>> print(insta.name)
    +chr25a
    +>>> print(insta.lower_bound)
    +3796
    +>>> print(insta.upper_bound)
    +50474
    +
    static list_resources()[source]

    Get a tuple of all the QAP-lib instances available as resource.

    The original data can be found at <https://qaplib.mgi.polymtl.ca> and <https://coral.ise.lehigh.edu/data-sets/qaplib>.

    Return type:

    tuple[str, ...]

    Returns:

    the tuple with the instance names

    >>> len(Instance.list_resources())
    +134
    +
    log_parameters_to(logger)[source]

    Log all parameters of this instance as key-value pairs.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    lower_bound: Final[int]

    the lower bound for the QAP objective

    n: Final[int]

    the scale of the problem

    name: Final[str]

    the name of this instance

    upper_bound: Final[int]

    the upper bound for the QAP objective

    moptipyapps.qap.instance.trivial_bounds(distances, flows)[source]

    Compute the trivial bounds for the QAP objective.

    A trivial upper bound is to multiply the largest flow with the largest distance, the second-largest flow with the second-largest distance, the third-largest flow with the third-largest distance, and so on.

    A trivial lower bound is to multiply the largest flow with the shortest distance, the second-largest flow with the second-shortest distance, the third-largest flow with the third-shortest distance, and so on.

    Parameters:
    • distances (ndarray) – the distance matrix

    • flows (ndarray) – the flow matrix

    Return type:

    tuple[int, int]

    Returns:

    the lower and upper bounds

    >>> dst = np.array([[0, 1, 2], [3, 0, 4], [5, 6, 0]])
    +>>> flws = np.array([[0, 95, 86], [23, 0, 55], [24, 43, 0]])
    +>>> 0*95 + 0*86 + 0*55 + 1*43 + 2*24 + 3*23 + 4*0 + 5*0 + 6*0
    +160
    +>>> 6*95 + 5*86 + 4*55 + 3*43 + 2*24 + 1*23 + 0*0 + 0*0 + 0*0
    +1420
    +>>> trivial_bounds(dst, flws)
    +(160, 1420)
    +

    moptipyapps.qap.objective module

    The objective function for the Quadratic Assignment Problem.

    The candidate solutions to the QAP are permutations p of length n of the numbers 0, 1, …, n-1. An instance of the Quadratic Assignment Problem (QAP) presents a n*n matrix D with distances and a n*n matrix F with flows flows. The objective value, subject to minimization, is then the sum( F[i,j] * D[p[i], p[j]] for i, j in 0..n-1 ), i.e., the sum of the products of the flows between facilities and the distances of their assigned locations.

    1. Eliane Maria Loiola, Nair Maria Maia de Abreu, Paulo Oswaldo Boaventura-Netto, Peter Hahn, and Tania Querido. A survey for the Quadratic Assignment Problem. European Journal of Operational Research. 176(2):657-690. January 2007. https://doi.org/10.1016/j.ejor.2005.09.032.

    2. Rainer E. Burkard, Eranda Çela, Panos M. Pardalos, and Leonidas S. Pitsoulis. The Quadratic Assignment Problem. In Ding-Zhu Du, Panos M. Pardalos, eds., Handbook of Combinatorial Optimization, pages 1713-1809, 1998, Springer New York, NY, USA. https://doi.org/10.1007/978-1-4613-0303-9_27.

    >>> inst = Instance.from_resource("bur26a")
    +>>> QAPObjective(inst).evaluate(np.array([
    +...     25, 14, 10, 6, 3, 11, 12, 1, 5, 17, 0, 4, 8, 20,
    +...     7, 13, 2, 19, 18, 24, 16, 9, 15, 23, 22, 21]))
    +5426670
    +
    >>> inst = Instance.from_resource("nug12")
    +>>> QAPObjective(inst).evaluate(np.array([
    +...     11, 6, 8, 2, 3, 7, 10, 0, 4, 5, 9, 1]))
    +578
    +
    >>> inst = Instance.from_resource("tai12a")
    +>>> QAPObjective(inst).evaluate(np.array([
    +...     7, 0, 5, 1, 10, 9, 2, 4, 8, 6, 11, 3]))
    +224416
    +
    class moptipyapps.qap.objective.QAPObjective(instance)[source]

    Bases: Objective

    An objective function for the quadratic assignment problem.

    evaluate(x)[source]

    Compute the quadratic assignment problem objective value.

    Parameters:

    x – the permutation of elements

    Return type:

    float

    Returns:

    the sum of flows times distances

    instance: Final[Instance]

    the instance data

    log_parameters_to(logger)[source]

    Log all parameters of this component as key-value pairs.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    lower_bound()[source]

    Get the lower bound of this objective function.

    Return type:

    float

    Returns:

    the lower bound

    upper_bound()[source]

    Get the upper bound of this objective function.

    Return type:

    float

    Returns:

    the upper bound

    diff --git a/moptipyapps.qap.qaplib.html b/moptipyapps.qap.qaplib.html new file mode 100644 index 00000000..95149c37 --- /dev/null +++ b/moptipyapps.qap.qaplib.html @@ -0,0 +1 @@ +moptipyapps.qap.qaplib package — moptipyapps 0.8.62 documentation

    moptipyapps.qap.qaplib package

    QAPLIB – A Quadratic Assignment Problem Library.

    1. QAPLIB - A Quadratic Assignment Problem Library. The Websites <https://qaplib.mgi.polymtl.ca/> (updated 2018) and <https://coral.ise.lehigh.edu/data-sets/qaplib/> (updated 2011), including the benchmark instances, on visited 2023-10-21.

    2. Rainer E. Burkard, Stefan E. Karisch, and Franz Rendl. QAPLIB - A Quadratic Assignment Problem Library. Journal of Global Optimization. 10:391-403, 1997. https://doi.org/10.1023/A:1008293323270.

    moptipyapps.qap.qaplib.open_resource_stream(file_name)[source]

    Open a QAPLib resource stream.

    Parameters:

    file_name (str) – the file name of the resource

    Return type:

    TextIO

    Returns:

    the stream

    diff --git a/moptipyapps.tests.html b/moptipyapps.tests.html new file mode 100644 index 00000000..261731ae --- /dev/null +++ b/moptipyapps.tests.html @@ -0,0 +1 @@ +moptipyapps.tests package — moptipyapps 0.8.62 documentation

    moptipyapps.tests package

    Unit tests that you can use to check your moptipyapps based experiments.

    Submodules

    moptipyapps.tests.on_binpacking2d module

    Perform tests on the Two-Dimensional Bin Packing Problem.

    moptipyapps.tests.on_binpacking2d.binpacking_instances_for_tests(random=Generator(PCG64) at 0x7F2D51E91B60)[source]

    Get a sequence of 2D Bin Packing instances to test on.

    Parameters:

    random (Generator, default: Generator(PCG64) at 0x7F2D51E91B60) – the random number generator to use

    Return type:

    Iterable[str]

    Returns:

    an iterable of 2D Bin Packing instance names

    moptipyapps.tests.on_binpacking2d.make_packing_invalid(random=Generator(PCG64) at 0x7F2D51E91B60)[source]

    Make a function that creates invalid packings.

    Parameters:

    random (Generator, default: Generator(PCG64) at 0x7F2D51E91B60) – the random number generator to use

    Return type:

    Callable[[Packing], Packing]

    Returns:

    a function that can make packings invalid

    moptipyapps.tests.on_binpacking2d.make_packing_valid(inst, random=Generator(PCG64) at 0x7F2D51E91B60)[source]

    Make a function that creates valid packings.

    Parameters:
    • inst (Instance) – the two-dimensional bin packing instance

    • random (Generator, default: Generator(PCG64) at 0x7F2D51E91B60) – the random number generator to use

    Return type:

    Callable[[Generator, Packing], Packing]

    Returns:

    a function that can make packings valid

    moptipyapps.tests.on_binpacking2d.validate_algorithm_on_1_2dbinpacking(algorithm, instance=None, max_fes=100, random=Generator(PCG64) at 0x7F2D51E91B60)[source]

    Check the validity of a black-box algorithm on the 2d bin packing.

    Parameters:
    Return type:

    None

    moptipyapps.tests.on_binpacking2d.validate_algorithm_on_2dbinpacking(algorithm, max_fes=100, random=Generator(PCG64) at 0x7F2D51E91B60)[source]

    Validate an algorithm on a set of bin packing instances.

    Parameters:
    Return type:

    None

    moptipyapps.tests.on_binpacking2d.validate_objective_on_1_2dbinpacking(objective, instance=None, random=Generator(PCG64) at 0x7F2D51E91B60)[source]

    Validate an objective function on 1 2D bin packing instance.

    Parameters:
    Return type:

    None

    moptipyapps.tests.on_binpacking2d.validate_objective_on_2dbinpacking(objective, random=Generator(PCG64) at 0x7F2D51E91B60)[source]

    Validate an objective function on bin packing instances.

    Parameters:
    Return type:

    None

    moptipyapps.tests.on_binpacking2d.validate_signed_permutation_encoding_on_1_2dbinpacking(encoding, instance=None, random=Generator(PCG64) at 0x7F2D51E91B60)[source]

    Validate a signed permutation encoding on one 2D bin packing instance.

    Parameters:
    Return type:

    None

    moptipyapps.tests.on_binpacking2d.validate_signed_permutation_encoding_on_2dbinpacking(encoding, random=Generator(PCG64) at 0x7F2D51E91B60)[source]

    Validate a signed permutation encoding function on bin packing instances.

    Parameters:
    Return type:

    None

    moptipyapps.tests.on_tsp module

    Perform tests on the Traveling Salesperson Problem.

    moptipyapps.tests.on_tsp.make_tour_invalid(random, y)[source]

    Create invalid tours.

    Parameters:
    • random (Generator) – the random number generator to use

    • y (ndarray) – the input tour

    Return type:

    ndarray

    Returns:

    the invalid version of y

    moptipyapps.tests.on_tsp.make_tour_valid(random, y)[source]

    Create valid TSP tours.

    Parameters:
    • random (Generator) – the random number generator to use

    • y (ndarray) – the input tour

    Return type:

    ndarray

    Returns:

    the valid version of y

    moptipyapps.tests.on_tsp.tsp_instances_for_tests(random=Generator(PCG64) at 0x7F2D51E93A00, symmetric=True, asymmetric=True)[source]

    Get a sequence of TSP instances to test on.

    Parameters:
    • random (Generator, default: Generator(PCG64) at 0x7F2D51E93A00) – the random number generator to use

    • symmetric (bool, default: True) – include symmetric instances

    • asymmetric (bool, default: True) – include asymmetric instances

    Return type:

    Iterable[str]

    Returns:

    an iterable of TSP instance names

    moptipyapps.tests.on_tsp.validate_algorithm_on_1_tsp(algorithm, instance=None, max_fes=256, random=Generator(PCG64) at 0x7F2D51E93A00)[source]

    Check the validity of a black-box algorithm on one TSP instance.

    Parameters:
    • algorithm (Union[Algorithm, Callable[[Instance, Permutations], Algorithm]]) – the algorithm or algorithm factory

    • instance (str | None, default: None) – the instance name, or None to randomly pick one

    • max_fes (int, default: 256) – the maximum number of FEs

    • random (Generator, default: Generator(PCG64) at 0x7F2D51E93A00) – the default random generator to use

    Return type:

    None

    moptipyapps.tests.on_tsp.validate_algorithm_on_tsp(algorithm, symmetric=True, asymmetric=True, max_fes=256, random=Generator(PCG64) at 0x7F2D51E93A00)[source]

    Validate an algorithm on a set of TSP instances.

    Parameters:
    • algorithm (Callable[[Instance, Permutations], Algorithm]) – the algorithm factory

    • symmetric (bool, default: True) – include symmetric instances

    • asymmetric (bool, default: True) – include asymmetric instances

    • max_fes (int, default: 256) – the maximum FEs

    • random (Generator, default: Generator(PCG64) at 0x7F2D51E93A00) – the random number generator

    Return type:

    None

    moptipyapps.tests.on_tsp.validate_objective_on_1_tsp(objective, instance=None, random=Generator(PCG64) at 0x7F2D51E93A00)[source]

    Validate an objective function on 1 TSP instance.

    Parameters:
    Return type:

    None

    moptipyapps.tests.on_tsp.validate_objective_on_tsp(objective, symmetric=True, asymmetric=True, random=Generator(PCG64) at 0x7F2D51E93A00)[source]

    Validate an objective function on TSP instances.

    Parameters:
    • objective (Union[Objective, Callable[[Instance], Objective]]) – the objective function or a factory creating it

    • symmetric (bool, default: True) – include symmetric instances

    • asymmetric (bool, default: True) – include asymmetric instances

    • random (Generator, default: Generator(PCG64) at 0x7F2D51E93A00) – the random number generator

    Return type:

    None

    diff --git a/moptipyapps.tsp.html b/moptipyapps.tsp.html new file mode 100644 index 00000000..7be8add2 --- /dev/null +++ b/moptipyapps.tsp.html @@ -0,0 +1,117 @@ +moptipyapps.tsp package — moptipyapps 0.8.62 documentation

    moptipyapps.tsp package

    Experiments with the Traveling Salesperson Problem (TSP).

    A Traveling Salesperson Problem (TSP) is defined as a fully-connected graph with n_cities nodes. Each edge in the graph has a weight, which identifies the distance between the nodes. The goal is to find the shortest tour that visits every single node in the graph exactly once and then returns back to its starting node. Then nodes are usually called cities. In this file, we present methods for loading instances of the TSP as distance matrices A. In other words, the value at A[i, j] identifies the travel distance from i to j. Such instance data can be loaded via class instance.

    In this package, we provide the following tools:

    • instance allows you to load instance data in the TSPLib format and it provides several instances from TSPLib as resources.

    • known_optima provides known optimal solutions for some of the TSPLib instances. These should mainly be used for testing purposes.

    • tour_length is an objective function that can efficiently computed the length of a tour in path representation.

    • tsplib is just a dummy package holding the actual TSPLib data resources.

    Important initial work on this code has been contributed by Mr. Tianyu LIANG (梁天宇), <liangty@stu.hfuu.edu.cn> a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    Subpackages

    Submodules

    moptipyapps.tsp.ea1p1_revn module

    A (1+1) EA for the TSP using the reversal move.

    A (1+1) EA is basically a local search rls algorithm that starts with a random solution as the current solution x. In each iteration, it samples one new solution from the neighborhood of x and accepts it (as the new x), if it is better or equally good. The algorithm here applies the reversal move, i.e., a two-opt move, as the unary search operator used for sampling the neighborhood of x. The interesting thing about this operator, when applied to the TSP, is that we can compute the tour length of the new solution in O(1) from the tour length of the current solution. This means we can very quickly decide whether the move would be acceptable - and only apply it (in O(n)) if its.

    The algorithm implemented here is the same as the basic (1+1) EA with rev operator in the paper [1].

    The original version of this code has been contributed by Mr. Tianyu LIANG (梁天宇), <liangty@stu.hfuu.edu.cn> a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    1. Tianyu Liang, Zhize Wu, Jörg Lässig, Daan van den Berg, and Thomas Weise. Solving the Traveling Salesperson Problem using Frequency Fitness Assignment. In Hisao Ishibuchi, Chee-Keong Kwoh, Ah-Hwee Tan, Dipti Srinivasan, Chunyan Miao, Anupam Trivedi, and Keeley A. Crockett, editors, Proceedings of the IEEE Symposium on Foundations of Computational Intelligence (IEEE FOCI’22), part of the IEEE Symposium Series on Computational Intelligence (SSCI 2022). December 4-7, 2022, Singapore, pages 360-367. IEEE. https://doi.org/10.1109/SSCI51031.2022.10022296.

    2. Pedro Larrañaga, Cindy M. H. Kuijpers, Roberto H. Murga, Iñaki Inza, and S. Dizdarevic. Genetic Algorithms for the Travelling Salesman Problem: A Review of Representations and Operators. Artificial Intelligence Review, 13(2):129-170, April 1999. Kluwer Academic Publishers, The Netherlands. https://doi.org/10.1023/A:1006529012972.

    class moptipyapps.tsp.ea1p1_revn.TSPEA1p1revn(instance)[source]

    Bases: Algorithm

    A (1+1) EA using the reversal operator for the TSP.

    log_parameters_to(logger)[source]

    Log the parameters of the algorithm to the given logger.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    solve(process)[source]

    Apply an RLS = (1+1) EA optimization process with reversing operator.

    Parameters:

    process (Process) – the process instance which provides random numbers, functions for creating, copying, and evaluating solutions, as well as the termination criterion

    Return type:

    None

    moptipyapps.tsp.ea1p1_revn.rev_if_not_worse(i, j, n_cities, dist, x, y)[source]

    Check a reversal move, apply it if it is better, return new tour length.

    Parameters:
    • i (int) – the first, smaller index

    • j (int) – the second, larger index

    • n_cities (int) – the number of cities

    • dist (ndarray) – the problem instance

    • x (ndarray) – the candidate solution

    • y (int) – the tour length

    Return type:

    int

    moptipyapps.tsp.fea1p1_revn module

    A (1+1) FEA for the TSP using the reversal move.

    A (1+1) FEA is the same as the (1+1) EA with Frequency Fitness Assignment. The (1+1) EA using the same search operator as this algorithm here is implemented in module ea1p1_revn. The algorithm implemented here is the same as the basic (1+1) FEA with rev operator in the paper [1].

    The original version of this code has been contributed by Mr. Tianyu LIANG (梁天宇), <liangty@stu.hfuu.edu.cn> a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    1. Tianyu Liang, Zhize Wu, Jörg Lässig, Daan van den Berg, and Thomas Weise. Solving the Traveling Salesperson Problem using Frequency Fitness Assignment. In Hisao Ishibuchi, Chee-Keong Kwoh, Ah-Hwee Tan, Dipti Srinivasan, Chunyan Miao, Anupam Trivedi, and Keeley A. Crockett, editors, Proceedings of the IEEE Symposium on Foundations of Computational Intelligence (IEEE FOCI’22), part of the IEEE Symposium Series on Computational Intelligence (SSCI 2022). December 4-7, 2022, Singapore, pages 360-367. IEEE. https://doi.org/10.1109/SSCI51031.2022.10022296.

    2. Pedro Larrañaga, Cindy M. H. Kuijpers, Roberto H. Murga, Iñaki Inza, and S. Dizdarevic. Genetic Algorithms for the Travelling Salesman Problem: A Review of Representations and Operators. Artificial Intelligence Review, 13(2):129-170, April 1999. Kluwer Academic Publishers, The Netherlands. https://doi.org/10.1023/A:1006529012972.

    class moptipyapps.tsp.fea1p1_revn.TSPFEA1p1revn(instance, do_log_h=False)[source]

    Bases: Algorithm

    A (1+1) FEA using the reversal operator for the TSP.

    do_log_h: Final[bool]

    shall we log the h-table`?

    instance: Final[Instance]

    the instance

    log_parameters_to(logger)[source]

    Log the parameters of the algorithm to the given logger.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    solve(process)[source]

    Apply a (1+1) FEA optimization process with reversing operator.

    Parameters:

    process (Process) – the process instance which provides random numbers, functions for creating, copying, and evaluating solutions, as well as the termination criterion

    Return type:

    None

    moptipyapps.tsp.fea1p1_revn.rev_if_h_not_worse(i, j, n_cities, dist, h, x, y)[source]

    Apply a reversal move if its tour length frequency is not worse.

    Parameters:
    • i (int) – the first, smaller index

    • j (int) – the second, larger index

    • n_cities (int) – the number of cities

    • dist (ndarray) – the problem instance

    • h (ndarray) – the frequency table

    • x (ndarray) – the candidate solution

    • y (int) – the tour length

    Return type:

    int

    moptipyapps.tsp.instance module

    An instance of the Traveling Salesperson Problem (TSP) as distance matrix.

    An instance of the Traveling Salesperson Problem (TSP) is defined as a fully-connected graph with Instance.n_cities nodes. Each edge in the graph has a weight, which identifies the distance between the nodes. The goal is to find the shortest tour that visits every single node in the graph exactly once and then returns back to its starting node. Then nodes are usually called cities. In this file, we present methods for loading instances of the TSP as distance matrices A. In other words, the value at A[i, j] identifies the travel distance from i to j.

    We can load files in a subset of the TSPLib format [1, 2] and also include the instances of TSPLib with no more than 2000 cities. We load instances as full distance matrices, which makes writing algorithms to solve them easier but handling instances with more than 2000 cities problematic due to the high memory consumption. Of course, you could still load them, but it would be ill-advised to do so on a normal PC (at the time of this writing).

    The TSPLib contains many instances of the symmetric TSP, where the distance A[i, j] from city i to city j is the same as the distance A[j, i] from j to i. Here, we provide 111 of them as resource. The cities of some of these instances are points in the Euclidean plain and the distances are the (approximate) Euclidean distances. Others use geographical coordinates (longitude/latitude), and yet others are provides as distances matrices directly. We also provide 19 of the asymmetric TSPLib instances, where the distance A[i, j] from i to j may be different from the distance A[j, i] from j to i.

    You can obtain lists of either all, only the symmetric, or only the asymmetric instance resources via

    >>> print(Instance.list_resources()[0:10])  # get all instances (1..10)
    +('a280', 'ali535', 'att48', 'att532', 'bayg29', 'bays29', 'berlin52', 'bier127', 'br17', 'brazil58')
    +
    >>> print(Instance.list_resources(asymmetric=False)[0:10])  # only symmetric
    +('a280', 'ali535', 'att48', 'att532', 'bayg29', 'bays29', 'berlin52', 'bier127', 'brazil58', 'brg180')
    +
    >>> print(Instance.list_resources(symmetric=False)[0:10])  # only asymmetric
    +('br17', 'ft53', 'ft70', 'ftv170', 'ftv33', 'ftv35', 'ftv38', 'ftv44', 'ftv47', 'ftv55')
    +

    You can load any of these instances from the resources via Instance.from_resource() as follows:

    >>> inst = Instance.from_resource("a280")
    +>>> print(inst.n_cities)
    +280
    +

    If you want to read an instance from an external TSPLib file, you can use Instance.from_file(). Be aware that not the whole TSPLib standard is supported right now, but only a reasonably large subset.

    Every TSP instance automatically provides a lower bound Instance.tour_length_lower_bound and an upper bound Instance.tour_length_upper_bound of the lengths of valid tours. For the TSPLib instances, the globally optimal solutions and their tour lengths are known, so we can use them as lower bounds directly. Otherwise, we currently use a very crude approximation: We assume that, for each city i, the next city j to be visited would be the nearest neighbor of i. Of course, in reality, such a tour may not be feasible, as it could contain disjoint sets of loops. But no tour can be shorter than this. As upper bound, we do the same but assume that j would be the cities farthest away from i.

    >>> print(inst.tour_length_lower_bound)
    +2579
    +>>> print(inst.tour_length_upper_bound)
    +65406
    +

    It should be noted that all TSPLib instances by definition have integer distances. This means that there are never floating point distances and, for example, Euclidean distances are rounded and are only approximate Euclidean. Then again, since floating point numbers could also only represent things such as sqrt(2) approximately, using integers instead of floating point numbers does not really change anything - distances would be approximately Euclidean or approximately geographical either way.

    TSPLib also provides some known optimal solutions in path representation, i.e., as permutations of the numbers 0 to n_cities-1. The optimal solutions corresponding to the instances provides as resources can be obtained via known_optima.

    >>> inst = Instance.from_resource("si175")
    +>>> print(inst.n_cities)
    +175
    +>>> inst[0, 1]
    +113
    +>>> inst[173, 174]
    +337
    +>>> inst[1, 174]
    +384
    +>>> inst[2, 174]
    +384
    +>>> inst[2, 3]
    +248
    +>>> inst[3, 5]
    +335
    +>>> inst[4, 6]
    +134
    +

    The original data of TSPLib can be found at <http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/>. Before doing anything with these data directly, you should make sure to read the FAQ <http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/TSPFAQ.html> and the documentation <http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/tsp95.pdf>.

    On 2024-10-18, we added a small eleven city instance based on the car travel distances in km between the Chinese cities Shanghai (上海), Beijing (北京), Nanjing (南京), Hefei (合肥), Harbin (哈尔滨), Kunming (昆明), Wuhan (武汉), Xi’an (西安), Chongqing (重庆), Changsha (长沙), and Hong Kong (香港), determined using BaiDu Maps on 2024-10-18. The optimal solution for this instance has length 9547 (km) and visits the cities in the following order: Shanghai (上海), Nanjing (南京), Hefei (合肥), Wuhan (武汉), Changsha (长沙), Hong Kong (香港), Kunming (昆明), Chongqing (重庆), Xi’an (西安), Beijing (北京), Harbin (哈尔滨). This instance can be used to validate and santity-test algorithms, as its solution can easily be determined using exhaustive enumeration.

    Interestingly, it holds that the calculated travel distance from Harbin (哈尔滨) to Kunming (昆明) is longer than the travel distance from Harbin (哈尔滨) to Xi’an (西安) and then from Xi’an (西安) to Kunming (昆明).

    • Harbin (哈尔滨) - Kunming (昆明) = 3781 km

    • Harbin (哈尔滨) - Xi’an (西安) = 2291 km

    • Xi’an (西安) - Kunming (昆明) = 1483 km

    • 2291 km + 1483 km = 3774 km, which is less than 3781 km

    This may be because BaiduMaps ranked the paths by travel time and not travel distance, or by any other strange effect I cannot account for. Maybe it is related to which lane of a road one would naturally drive on or lengths of intersections depending on the direction one is coming from. Either way, this shows that this simple instance cn11 may already have interesting properties. It violates the triangle equation and it is non-Euclidean. It is also not based on Geo-coordinates, but on actual street distances and times.

    >>> inst = Instance.from_resource("cn11")
    +>>> inst[0, 0]
    +0
    +>>> inst[1, 2]
    +1007
    +>>> inst[1, 3]
    +1017
    +>>> inst[9, 10]
    +830
    +>>> inst[5, 6]
    +1560
    +

    Important initial work on this code has been contributed by Mr. Tianyu LIANG (梁天宇), <liangty@stu.hfuu.edu.cn> a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    1. Gerhard Reinelt. TSPLIB - A Traveling Salesman Problem Library. ORSA Journal on Computing 3(4):376-384. November 1991. https://doi.org/10.1287/ijoc.3.4.376. http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/

    2. Gerhard Reinelt. TSPLIB95. Heidelberg, Germany: Universität Heidelberg, Institut für Angewandte Mathematik. 1995. http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/tsp95.pdf

    3. David Lee Applegate, Robert E. Bixby, Vašek Chvátal, and William John Cook. The Traveling Salesman Problem: A Computational Study. Second Edition, 2007. Princeton, NJ, USA: Princeton University Press. Volume 17 of Princeton Series in Applied Mathematics. ISBN: 0-691-12993-2.

    4. Gregory Z. Gutin and Abraham P. Punnen. The Traveling Salesman Problem and its Variations. 2002. Kluwer Academic Publishers. Volume 12 of Combinatorial Optimization. https://doi.org/10.1007/b101971.

    5. Pedro Larrañaga, Cindy M. H. Kuijpers, Roberto H. Murga, Iñaki Inza, and Sejla Dizdarevic. Genetic Algorithms for the Travelling Salesman Problem: A Review of Representations and Operators. Artificial Intelligence Review 13(2):129-170. April 1999. https://doi.org/10.1023/A:1006529012972.

    6. Eugene Leighton Lawler, Jan Karel Lenstra, Alexander Hendrik George Rinnooy Kan, and David B. Shmoys. The Traveling Salesman Problem: A Guided Tour of Combinatorial Optimization. September 1985. Chichester, West Sussex, UK: Wiley Interscience. In Estimation, Simulation, and Control - Wiley-Interscience Series in Discrete Mathematics and Optimization. ISBN: 0-471-90413-9

    7. Tianyu Liang, Zhize Wu, Jörg Lässig, Daan van den Berg, and Thomas Weise. Solving the Traveling Salesperson Problem using Frequency Fitness Assignment. In Proceedings of the IEEE Symposium on Foundations of Computational Intelligence (IEEE FOCI’22), part of the IEEE Symposium Series on Computational Intelligence (SSCI’22), December 4-7, 2022, Singapore. Pages 360-367. IEEE. https://doi.org/10.1109/SSCI51031.2022.10022296.

    8. Thomas Weise, Raymond Chiong, Ke Tang, Jörg Lässig, Shigeyoshi Tsutsui, Wenxiang Chen, Zbigniew Michalewicz, and Xin Yao. Benchmarking Optimization Algorithms: An Open Source Framework for the Traveling Salesman Problem. IEEE Computational Intelligence Magazine. 9(3):40-52. August 2014. https://doi.org/10.1109/MCI.2014.2326101.

    class moptipyapps.tsp.instance.Instance(name: str, tour_length_lower_bound: int, matrix: ndarray, upper_bound_range_multiplier: int = 1)[source]

    Bases: Component, ndarray

    An instance of the Traveling Salesperson Problem.

    static from_file(path, lower_bound_getter=<built-in method __getitem__ of dict object>)[source]

    Read a TSP Lib instance from a TSP-lib formatted file.

    Parameters:
    • path (str) – the path to the file

    • lower_bound_getter (Optional[Callable[[str], int]], default: <built-in method __getitem__ of dict object at 0x7f2d51cf11c0>) – a function returning a lower bound for an instance name, or None to use a simple lower bound approximation

    Return type:

    Instance

    Returns:

    the instance

    >>> from os.path import dirname
    +>>> inst = Instance.from_file(dirname(__file__) + "/tsplib/br17.atsp")
    +>>> inst.name
    +'br17'
    +
    static from_resource(name)[source]

    Load a TSP instance from a resource.

    Parameters:

    name (str) – the name string

    Return type:

    Instance

    Returns:

    the instance

    >>> Instance.from_resource("br17").n_cities
    +17
    +
    is_symmetric: bool

    is the TSP instance symmetric?

    static list_resources(symmetric=True, asymmetric=True)[source]

    Get a tuple of all the TSP instances available as resource.

    Parameters:
    • symmetric (bool, default: True) – include the symmetric instances

    • asymmetric (bool, default: True) – include the asymmetric instances

    Return type:

    tuple[str, ...]

    Returns:

    the tuple with the instance names

    >>> a = len(Instance.list_resources(True, True))
    +>>> print(a)
    +111
    +>>> b = len(Instance.list_resources(True, False))
    +>>> print(b)
    +92
    +>>> c = len(Instance.list_resources(False, True))
    +>>> print(c)
    +19
    +>>> print(a == (b + c))
    +True
    +>>> print(len(Instance.list_resources(False, False)))
    +0
    +
    log_parameters_to(logger)[source]

    Log the parameters of the instance to the given logger.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    >>> from moptipy.utils.logger import InMemoryLogger
    +>>> with InMemoryLogger() as l:
    +...     with l.key_values("I") as kv:
    +...         Instance.from_resource("kroE100").log_parameters_to(kv)
    +...     print(repr('@'.join(l.get_log())))
    +'BEGIN_I@name: kroE100@class: moptipyapps.tsp.instance.Instance@nCities: 100@tourLengthLowerBound: 22068@tourLengthUpperBound: 330799@symmetric: T@dtype: i@END_I'
    +
    n_cities: int

    the number of cities

    name: str

    the name of the instance

    to_stream(collector, comments=())[source]

    Convert this instance to a stream.

    Parameters:
    Return type:

    None

    >>> orig = Instance.from_resource("br17")
    +>>> text = []
    +>>> orig.to_stream(text.append)
    +>>> reload = _from_stream(iter(text),
    +...     lambda _: orig.tour_length_lower_bound)
    +>>> orig.n_cities == reload.n_cities
    +True
    +>>> orig.name == reload.name
    +True
    +>>> list(orig.flatten()) == list(reload.flatten())
    +True
    +
    >>> orig = Instance.from_resource("att48")
    +>>> text = []
    +>>> orig.to_stream(text.append)
    +>>> reload = _from_stream(iter(text),
    +...     lambda _: orig.tour_length_lower_bound)
    +>>> orig.n_cities == reload.n_cities
    +True
    +>>> orig.name == reload.name
    +True
    +>>> list(orig.flatten()) == list(reload.flatten())
    +True
    +
    >>> orig = Instance.from_resource("berlin52")
    +>>> text = []
    +>>> orig.to_stream(text.append)
    +>>> reload = _from_stream(iter(text),
    +...     lambda _: orig.tour_length_lower_bound)
    +>>> orig.n_cities == reload.n_cities
    +True
    +>>> orig.name == reload.name
    +True
    +>>> list(orig.flatten()) == list(reload.flatten())
    +True
    +
    >>> orig = Instance.from_resource("ft53")
    +>>> text = []
    +>>> orig.to_stream(text.append)
    +>>> reload = _from_stream(iter(text),
    +...     lambda _: orig.tour_length_lower_bound)
    +>>> orig.n_cities == reload.n_cities
    +True
    +>>> orig.name == reload.name
    +True
    +>>> list(orig.flatten()) == list(reload.flatten())
    +True
    +
    tour_length_lower_bound: int

    the lower bound of the tour length

    tour_length_upper_bound: int

    the upper bound of the tour length

    moptipyapps.tsp.instance.ncities_from_tsplib_name(name)[source]

    Compute the instance scale from the instance name.

    Parameters:

    name (str) – the instance name

    Return type:

    int

    Returns:

    the instance scale

    moptipyapps.tsp.known_optima module

    A set of tools to load known optima in the TSPLib format.

    The TSPLib provides benchmark instances for the Traveling Salesperson Problem (TSP). We provide a subset of these instances with up to 2000 cities as resources in instance. Additionally, TSPLib provides the optimal solutions for a subset of these instances. Within this module here, we provide methods for reading the optimal solution files in the TSPLib format. We also include as resources the optimal solutions to the instances that our package provide as resources as well.

    You can get the list of instance names for which the optimal tours are included in this package via list_resource_tours() and then load a tour from a resource via opt_tour_from_resource(). If you want to read a tour from an external file that obeys the TSPLib format, you can do so via opt_tour_from_file().

    1. Gerhard Reinelt. TSPLIB - A Traveling Salesman Problem Library. ORSA Journal on Computing 3(4):376-384. November 1991. https://doi.org/10.1287/ijoc.3.4.376. http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/

    2. Gerhard Reinelt. TSPLIB95. Heidelberg, Germany: Universität Heidelberg, Institut für Angewandte Mathematik. 1995. http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/tsp95.pdf

    moptipyapps.tsp.known_optima.list_resource_tours()[source]

    Get a tuple of the names of the optimal tours in the resources.

    >>> list_resource_tours()
    +('a280', 'att48', 'bayg29', 'bays29', 'berlin52', 'brg180', 'ch130', 'ch150', 'cn11', 'eil101', 'eil51', 'eil76', 'fri26', 'gr120', 'gr202', 'gr24', 'gr48', 'gr666', 'gr96', 'kroA100', 'kroC100', 'kroD100', 'lin105', 'pcb442', 'pr1002', 'pr76', 'rd100', 'st70', 'tsp225', 'ulysses16', 'ulysses22')
    +
    Return type:

    tuple[str, ...]

    Returns:

    the tuple

    moptipyapps.tsp.known_optima.opt_tour_from_file(path)[source]

    Read a known optimal tour from a file.

    Parameters:

    path (str) – the path to the file

    Return type:

    ndarray

    Returns:

    the tour

    moptipyapps.tsp.known_optima.opt_tour_from_resource(name)[source]

    Load an optimal tour from a resource.

    >>> np.array2string(opt_tour_from_resource("ulysses16"))
    +'[ 0 13 12 11  6  5 14  4 10  8  9 15  2  1  3  7]'
    +
    >>> np.array2string(opt_tour_from_resource("cn11"))
    +'[ 0  2  3  6  9 10  5  8  7  1  4]'
    +
    Parameters:

    name (str) – the name string

    Return type:

    ndarray

    Returns:

    the optimal tour

    moptipyapps.tsp.tour_length module

    The tour length objective function for tours in path representation.

    A Traveling Salesperson Problem (TSP) instance is defined as a fully-connected graph with n_cities nodes. Each edge in the graph has a weight, which identifies the distance between the nodes. The goal is to find the shortest tour that visits every single node in the graph exactly once and then returns back to its starting node. Then nodes are usually called cities. In this file, we present methods for loading instances of the TSP as distance matrices A. In other words, the value at A[i, j] identifies the travel distance from i to j.

    A tour can be represented in path representation, which means that it is stored as a permutation of the numbers 0 to n_cities-1. The number at index k identifies that k-th city to visit. So the first number in the permutation identifies the first city, the second number the second city, and so on.

    The length of the tour can be computed by summing up the distances from the k-th city to the k+1-st city, for k in 0..n_cities-2 and then adding the distance from the last city to the first city. This is what the function tour_length() is doing. This function is then wrapped as objective function object in TourLength.

    Important initial work on this code has been contributed by Mr. Tianyu LIANG (梁天宇), <liangty@stu.hfuu.edu.cn> a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    1. Gerhard Reinelt. TSPLIB - A Traveling Salesman Problem Library. ORSA Journal on Computing 3(4):376-384. November 1991. https://doi.org/10.1287/ijoc.3.4.376. http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/

    2. Gerhard Reinelt. TSPLIB95. Heidelberg, Germany: Universität Heidelberg, Institut für Angewandte Mathematik. 1995. http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/tsp95.pdf

    3. David Lee Applegate, Robert E. Bixby, Vašek Chvátal, and William John Cook. The Traveling Salesman Problem: A Computational Study. Second Edition, 2007. Princeton, NJ, USA: Princeton University Press. Volume 17 of Princeton Series in Applied Mathematics. ISBN: 0-691-12993-2.

    4. Gregory Z. Gutin and Abraham P. Punnen. The Traveling Salesman Problem and its Variations. 2002. Kluwer Academic Publishers. Volume 12 of Combinatorial Optimization. https://doi.org/10.1007/b101971.

    5. Pedro Larrañaga, Cindy M. H. Kuijpers, Roberto H. Murga, Iñaki Inza, and Sejla Dizdarevic. Genetic Algorithms for the Travelling Salesman Problem: A Review of Representations and Operators. Artificial Intelligence Review 13(2):129-170. April 1999. https://doi.org/10.1023/A:1006529012972.

    6. Eugene Leighton Lawler, Jan Karel Lenstra, Alexander Hendrik George Rinnooy Kan, and David B. Shmoys. The Traveling Salesman Problem: A Guided Tour of Combinatorial Optimization. September 1985. Chichester, West Sussex, UK: Wiley Interscience. In Estimation, Simulation, and Control - Wiley-Interscience Series in Discrete Mathematics and Optimization. ISBN: 0-471-90413-9

    7. Tianyu Liang, Zhize Wu, Jörg Lässig, Daan van den Berg, and Thomas Weise. Solving the Traveling Salesperson Problem using Frequency Fitness Assignment. In Proceedings of the IEEE Symposium on Foundations of Computational Intelligence (IEEE FOCI’22), part of the IEEE Symposium Series on Computational Intelligence (SSCI’22), December 4-7, 2022, Singapore. Pages 360-367. IEEE. https://doi.org/10.1109/SSCI51031.2022.10022296.

    8. Thomas Weise, Raymond Chiong, Ke Tang, Jörg Lässig, Shigeyoshi Tsutsui, Wenxiang Chen, Zbigniew Michalewicz, and Xin Yao. Benchmarking Optimization Algorithms: An Open Source Framework for the Traveling Salesman Problem. IEEE Computational Intelligence Magazine. 9(3):40-52. August 2014. https://doi.org/10.1109/MCI.2014.2326101.

    class moptipyapps.tsp.tour_length.TourLength(instance)[source]

    Bases: Objective

    The tour length objective function.

    evaluate(x)[source]

    Compute the length of a tour in path representation.

    Parameters:

    x – the tour in path representation

    Return type:

    int

    Returns:

    the tour length

    instance: Final[Instance]

    the TSP instance we are trying to solve

    log_parameters_to(logger)[source]

    Log the parameters of the space to the given logger.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    lower_bound()[source]

    Get the lower bound of the tour length.

    Return type:

    int

    Returns:

    the lower bound of the tour length

    upper_bound()[source]

    Get the upper bound of the tour length.

    Return type:

    int

    Returns:

    the upper bound of the tour length

    moptipyapps.tsp.tour_length.tour_length(instance, x)[source]

    Compute the length of a tour.

    Parameters:
    Return type:

    int

    Returns:

    the length of the tour x

    diff --git a/moptipyapps.tsp.tsplib.html b/moptipyapps.tsp.tsplib.html new file mode 100644 index 00000000..e070e710 --- /dev/null +++ b/moptipyapps.tsp.tsplib.html @@ -0,0 +1 @@ +moptipyapps.tsp.tsplib package — moptipyapps 0.8.62 documentation

    moptipyapps.tsp.tsplib package

    The TSPLib example data for the Traveling Salesperson Problem (TSP).

    This package does not offer anything useful except for holding the TSPLib files. You can find the documentation and actual classes for solving and playing around with the TSP in package tsp.

    The original data of TSPLib can be found at <http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/>. Before doing anything with these data directly, you should make sure to read the FAQ <http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/TSPFAQ.html> and the documentation <http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/tsp95.pdf>.

    1. Gerhard Reinelt. TSPLIB - A Traveling Salesman Problem Library. ORSA Journal on Computing 3(4):376-384. November 1991. https://doi.org/10.1287/ijoc.3.4.376. http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/

    2. Gerhard Reinelt. TSPLIB95. Heidelberg, Germany: Universität Heidelberg, Institut für Angewandte Mathematik. 1995. http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/tsp95.pdf

    moptipyapps.tsp.tsplib.open_resource_stream(file_name)[source]

    Open a TSPLib resource stream.

    Parameters:

    file_name (str) – the file name of the resource

    Return type:

    TextIO

    Returns:

    the stream

    diff --git a/moptipyapps.ttp.html b/moptipyapps.ttp.html new file mode 100644 index 00000000..82390d4d --- /dev/null +++ b/moptipyapps.ttp.html @@ -0,0 +1,250 @@ +moptipyapps.ttp package — moptipyapps 0.8.62 documentation

    moptipyapps.ttp package

    The Traveling Tournament Problem (TTP).

    The Traveling Tournament Problem (TTP) models the logistics of a sports league, where each game is defined as two teams playing against each other. In each time slot (let’s call that “day”) of the tournament, each team has one game against one other team. One of the two teams of each game will play “at home,” the other “away.”

    In order to have each of the n teams play once against each of the n-1 other teams, we need to have n - 1 “days”. So in one round of the tournament, there are n - 1 time slots so that each of the teams can play exactly n - 1 games, i.e., once against every other team.

    If the tournament has two rounds (i.e., is a double round-robin tournament), then each game appears twice, but with home and away team switched. There are also constraints for the minimum and maximum number of games at home in a row and away in a row. There are also constraints for the minimum and maximum number in between repeating a game (with home/away team switched).

    1. David Van Bulck. Minimum Travel Objective Repository. RobinX: An XML-driven Classification for Round-Robin Sports Timetabling. Faculty of Economics and Business Administration at Ghent University, Belgium. https://robinxval.ugent.be/. In this repository, you can also find the original instance data, useful descriptions, and many links to related works.

    2. Kelly Easton, George L. Nemhauser, and Michael K. Trick. The Traveling Tournament Problem Description and Benchmarks. In Principles and Practice of Constraint Programming (CP’01), November 26 - December 1, 2001, Paphos, Cyprus, pages 580-584, Berlin/Heidelberg, Germany: Springer. ISBN: 978-3-540-42863-3. https://doi.org/10.1007/3-540-45578-7_43. https://www.researchgate.net/publication/220270875.

    3. Celso C. Ribeiro and Sebastián Urrutia. Heuristics for the Mirrored Traveling Tournament Problem. European Journal of Operational Research (EJOR) 179(3):775-787, June 16, 2007. https://doi.org/10.1016/j.ejor.2005.03.061. https://optimization-online.org/wp-content/uploads/2004/04/851.pdf.

    4. Sebastián Urrutia and Celso C. Ribeiro. Maximizing Breaks and Bounding Solutions to the Mirrored Traveling Tournament Problem. Discrete Applied Mathematics 154(13):1932-1938, August 15, 2006. https://doi.org/10.1016/j.dam.2006.03.030.

    So far, the following components have been implemented:

    1. instance provides the data of a TTP instance, including the number of teams, the constraints, and the distance matrix. Notice that it is an extension of the Traveling Salesperson Problem instance instance data, from which it inherits the distance matrix. This data basically describes the starting situation and the input data when we try to solve a TTP instance. Also, the module provides several of the benchmark instances from <https://robinxval.ugent.be/>.

    2. game_plan provides a class for holding one candidate solution to the TTP, i.e., a game plan. The game plan states, for each day and each team, against which other team it will plan (if any). The game plan may contain errors, which need to be sorted out by optimization.

    3. game_plan_space offers the moptipy Space functionality for such game plans. In other words, it allows us to instantiate game plans in a uniform way and to convert them to and from strings (which is used when writing log files).

    4. game_encoding allows us to decode a permutation (potentially with repetitions, see permutations) into a game plan. We therefore can use optimization algorithms and operators working on the well-understood space of permutations to produce game plans. However, the decoded game plans may have errors, e.g., slots without games or violations of the maximum or minimum streak length constraints.

    5. errors offers an objective function that counts the number of such constraint violations in a game plan. If we can minimize it to zero, then the game plan is feasible.

    This is code is part of the research work of Mr. Xiang Cao (曹翔), a Master’s student at the Institute of Applied Optimization (应用优化研究所, http://iao.hfuu.edu.cn) of the School of Artificial Intelligence and Big Data (人工智能与大数据学院) at Hefei University (合肥大学) in Hefei, Anhui, China (中国安徽省合肥市) under the supervision of Prof. Dr. Thomas Weise (汤卫思教授).

    Subpackages

    Submodules

    moptipyapps.ttp.errors module

    An objective that counts constraint violations.

    The idea is that we will probably not be able to always produce game plans that adhere to all the constraints imposed by a Traveling Tournament Problem ttp instance, so we will instead probably usually generate game plans that may contain errors.

    We will hope that optimization can take care of this by applying this objective function here to get rid of them. In the documentation of function count_errors(), we explain the different types of errors that may occur and that are counted.

    This objective function plays thus well with encodings that produce infeasible schedules, such as the very simple game_encoding.

    class moptipyapps.ttp.errors.Errors(instance)[source]

    Bases: Objective

    Compute the errors in a game plan.

    This objective function encompasses all the constraints imposed on standard TTP instances in one summarizing number. See the documentation of count_errors() for more information.

    evaluate(x)[source]

    Count the errors in a game plan as objective value.

    Parameters:

    x (GamePlan) – the game plan

    Return type:

    int

    Returns:

    the number of errors in the plan

    instance: Final[Instance]

    the TTP instance

    is_always_integer()[source]

    State that this objective function is always integer-valued.

    Return type:

    bool

    Returns:

    True

    lower_bound()[source]

    Obtain the lower bound for errors: 0, which means error-free.

    Return type:

    int

    Returns:

    0

    upper_bound()[source]

    Compute upper bound for errors: (4*D - 1) * n - 1.

    Here D is the number of days, n is the number of teams, and D = (n - 1) * rounds. See the documentation of count_errors().

    Return type:

    int

    Returns:

    (4*D - 1) * n - 1

    moptipyapps.ttp.errors.count_errors(y, home_streak_min, home_streak_max, away_streak_min, away_streak_max, separation_min, separation_max, temp_1, temp_2)[source]

    Compute the number of errors in a game plan.

    This method counts the total number of the violations of any of the following constraints over D = (n - 1) * rounds days for n-team tournaments, where rounds == 2 for double-round robin. The following kinds of errors are counted:

    1. If a team A plays a team B on a given day, then B must play against A on that day and if A plays at home, then B must play away. If not, then that’s an error. This can result in at most D * n errors, because each of the n teams has (at most) one game on each of the D days and if the other team could play against the wrong team (or does not play at all), then that’s one error.

    2. If a team has no other team assigned to play with, this is designated by value 0 and causes 1 error. This error also ends all ongoing streaks, i.e., may additionally lead to a streak violation of at most max(home_streak_min, away_streak_min) - 1. However, this cannot be more then two errors in sum per day (minus 1, for the first day). Also, this error is mutually exclusive with error 1. This can result in at most D * n + (D - 1) * n = (2*D - 1) * n errors. Since this error is also mutually exclusive with the errors from constraints 3 to 8 below, this gives us an upper bound of (2*D - 1) * n errors for all of the constraints (1-8) together.

    3. A team has a home streak shorter than home_streak_min. No such error can occur on the first day. This error is mutually exclusive with error 2, as the streak violation is already counted there. This can result in at most (D - 1) * n errors, but this number is shared with the following constraints (4-6), because a streak can only either be a home streak or an away streak but not both and it can either be too short or too long, but not both.

    4. A team has a home streak longer than home_streak_max. No such error can occur on the first day. This error is mutually exclusive with error 2.

    5. A team has an away streak shorter than away_streak_min. No such error can occur on the first day. This error is mutually exclusive with error 2, as the streak violation is already counted there.

    6. A team has an away streak longer than away_streak_max. No such error can occur on the first day. This error is mutually exclusive with error 2.

    7. Team A plays team B again before the team has played at least separation_min games against other teams. This error cannot occur on the first day and is mutually exclusive with error 2. There can be most 1 such error per day for any pairing of teams and there are n//2 pairings per day, giving us an upper bound of D * n//2 errors in total. This error is mutually exclusive with the next constraint 8 (and constraint 2).

    8. Team A plays team B again after the team has played more than separation_max games against other teams. This error cannot occur on the first day and is mutually exclusive with error 2. There can be most 1 such error per day for any pairing of teams and there are n//2 pairings per day, giving us an upper bound of D * n//2 errors in total. This error is mutually exclusive with the previous constraint 7 (and constraint 2).

    9. If team A plays team B at home a times, then team B must play team A at home at least a-1 and at most a+1 times. In total, we have D*n games. There cannot be more than (D*n) - 1 such errors. Notice that this kind of error can never occur if we use our game_encoding as representation.

    10. Each pairing of teams occurs as same as often, namely rounds times, with rounds = 2 for double-round robin. In total, we have D*n games. There cannot be more than D*n such errors. Notice that this kind of error can never occur if we use our game_encoding as representation.

    The violations are counted on a per-day basis. For example, if home_streak_max is 3 and a team has a home streak of length 5, then this counts as 2 errors. However, the errors are also counted in a non-redundant fashion: If a team A violates separation_min by, say, two days, then this counts as two errors. However, in this case, its opposing team B would have necessarily incured the exactly same violations. These are then not counted.

    As upper bound for the number of errors, we therefore have to add those of constraints 2, 9, and 10 and get (2*D - 1) * n + D*n - 1 + D*n, which gives us (4*D - 1) * n - 1, where `D = (n - 1) * rounds. The lower bound is obviously 0.

    Parameters:
    • y (ndarray) – the game plan

    • home_streak_min (int) – the minimum permitted home streak length

    • home_streak_max (int) – the maximum permitted home streak length

    • away_streak_min (int) – the minimum permitted away streak length

    • away_streak_max (int) – the maximum permitted away streak length

    • separation_min (int) – the minimum number of games between a repetition

    • separation_max (int) – the maximum number games between a repetition

    • temp_1 (ndarray) – a temporary n*(n-1)/2 integer array, which is used to hold, for each pairing, when the last game was played

    • temp_2 (ndarray) – a temporary n,n integer array, which is used to hold, how often each team played each other team

    Return type:

    int

    Returns:

    the total number of errors. 0 if the game plan is feasible

    >>> count_errors(np.array([[-2, 1], [2, -1]], int),
    +...              1, 3, 1, 3, 1, 2, np.empty(1, int),
    +...              np.empty((2, 2), int))
    +1
    +>>> count_errors(np.array([[2, -1], [-2, 1]], int),
    +...              1, 3, 1, 3, 1, 2, np.empty(1, int),
    +...              np.empty((2, 2), int))
    +1
    +>>> count_errors(np.array([[ 2, -1,  4, -3],
    +...                        [ 4,  3, -2, -1],
    +...                        [-2,  1, -4,  3],
    +...                        [-4, -3,  2,  1],
    +...                        [ 3,  4, -1, -2],
    +...                        [-3, -4,  1,  2]], int),
    +...              1, 3, 1, 3, 1, 2, np.empty(6, int),
    +...              np.empty((4, 4), int))
    +2
    +>>> count_errors(np.array([[ 2, -1,  4, -3],
    +...                        [ 4,  3, -2, -1],
    +...                        [-2,  1, -4,  3],
    +...                        [ 3,  4, -1, -2],
    +...                        [-4, -3,  2,  1],
    +...                        [-3, -4,  1,  2]], int),
    +...              1, 3, 1, 3, 1, 2, np.empty(6, int),
    +...              np.empty((4, 4), int))
    +0
    +>>> count_errors(np.array([[ 2, -1,  4, -3],
    +...                        [ 4,  3, -2, -1],
    +...                        [ 3,  4, -1, -2],
    +...                        [-2,  1, -4,  3],
    +...                        [-4, -3,  2,  1],
    +...                        [-3, -4,  1,  2]], int),
    +...              1, 3, 1, 3, 1, 2, np.empty(6, int),
    +...              np.empty((4, 4), int))
    +0
    +>>> count_errors(np.array([[ 2, -1,  4, -3],
    +...                        [ 4,  3, -2, -1],
    +...                        [ 3,  4, -1, -2],
    +...                        [-2,  1, -4,  3],
    +...                        [-4, -3,  2,  1],
    +...                        [-3, -4,  1,  2]], int),
    +...              1, 2, 1, 3, 1, 2, np.empty(6, int),
    +...              np.empty((4, 4), int))
    +3
    +>>> count_errors(np.array([[ 2, -1,  4, -3],
    +...                        [ 4,  3, -2, -1],
    +...                        [ 3,  4, -1, -2],
    +...                        [-2,  1, -4,  3],
    +...                        [-4, -3,  2,  1],
    +...                        [-3, -4,  1,  2]], int),
    +...              1, 2, 1, 2, 1, 2, np.empty(6, int),
    +...              np.empty((4, 4), int))
    +6
    +>>> count_errors(np.array([[ 2, -1,  4, -3],
    +...                        [ 4,  3, -2, -1],
    +...                        [ 3,  4, -1, -2],
    +...                        [-2,  1, -4,  3],
    +...                        [-4, -3,  2,  1],
    +...                        [-3, -4,  1,  2]], int),
    +...              1, 3, 1, 3, 1, 1, np.empty(6, int),
    +...              np.empty((4, 4), int))
    +6
    +

    moptipyapps.ttp.game_encoding module

    A permutation-with-repetition-based encoding based on games.

    A point in the search space is a permutation (potentially with repetitions) that can be translated to a GamePlan. Each value v in the permutation represents a game to be played by two of the n teams. There are n(n-1) possible games between n teams, distinguishing home and away teams. Given a value v from 0..n(n-1)-1, we can get the zero-based index of the home team as home_idx = (game // (n - 1)) % n. The away index is computed in two steps, first we set away_idx = game % (n - 1) and if away_idx >= home_idx, we do away_idx = away_idy + 1. (Because a team can never play against itself, the situation that home_idx == away_idx does not need to be represented, so we can “skip” over this possible value by doing the away_idx = away_idy + 1 and thus get a more “compact” numeric range for the permutation elements.)

    A game schedule for any round-robin tournament with any given number of rounds can then be represented as permutation (potentially with repetitions) of these game values. In the decoding procedure, it is processed from beginning to end each game is then placed into the earliest slot not already occupied by another game. In other words, it is placed at the earliest day at which both involved teams do not yet have other games. If no such slot is available, this game is not placed at all. In this case, there will be some zeros in the game plan after the encoding. No other constraint is considered at this stage.

    In other words, this encoding may produce game plans that violate constraints. It does not care about the streak length constraints. It does not ensure that each team always has a game. Therefore, it should only be used in conjunction with objective functions that force the search towards feasible solutions, such as the errors objective.

    class moptipyapps.ttp.game_encoding.GameEncoding(instance)[source]

    Bases: Encoding

    An encoding that transforms strings of games to game plans.

    instance: Final[Instance]

    the instance

    search_space()[source]

    Create a proper search space for this game-based encoding.

    The search space is a set of permutations that represents all the games that can take place in the tournament. Depending on the number of rounds in the tournament, some games may appear multiple times. Home and away games are distributed in a fair and deterministic mannner between the teams.

    Return type:

    Permutations

    Returns:

    the search space

    >>> inst = Instance.from_resource("circ4")
    +>>> inst.n_cities
    +4
    +>>> inst.rounds
    +2
    +>>> ";".join(map(str, GameEncoding(inst).search_space().blueprint))
    +'0;1;2;3;4;5;6;7;8;9;10;11'
    +>>> inst = Instance(inst.name, inst, inst.teams, inst.rounds,
    +...                 inst.home_streak_min, inst.home_streak_max,
    +...                 inst.away_streak_min, inst.away_streak_max,
    +...                 inst.separation_min, inst.separation_max)
    +>>> inst.rounds = 1  # modify number of rounds for copied instance
    +>>> ";".join(map(str, GameEncoding(inst).search_space().blueprint))
    +'1;2;3;7;8;10'
    +>>> inst.rounds = 3  # modify number of rounds for copied instance
    +>>> ";".join(map(str, GameEncoding(inst).search_space().blueprint))
    +'0;1;1;2;2;3;3;4;5;6;7;7;8;8;9;10;10;11'
    +>>> inst.rounds = 4  # modify number of rounds for copied instance
    +>>> ";".join(map(str, GameEncoding(inst).search_space().blueprint))
    +'0;0;1;1;2;2;3;3;4;4;5;5;6;6;7;7;8;8;9;9;10;10;11;11'
    +>>> inst.rounds = 5  # modify number of rounds for copied instance
    +>>> ";".join(map(str, GameEncoding(inst).search_space().blueprint))
    +'0;0;1;1;1;2;2;2;3;3;3;4;4;5;5;6;6;7;7;7;8;8;8;9;9;10;10;10;11;11'
    +
    moptipyapps.ttp.game_encoding.map_games(x, y)[source]

    Translate a permutation of games to a game plan.

    This is a straightforward decoding that places the games into the map one by one. Each game is placed at the earliest slot in which it can be placed. If a game cannot be placed, it is ignored. This will lead to many errors, which can be counted via the errors objective.

    Parameters:
    • x (ndarray) – the source permutation

    • y (ndarray) – the destination game plan

    Return type:

    None

    >>> from moptipy.utils.nputils import int_range_to_dtype
    +>>> teams = 2
    +>>> rounds = 2
    +>>> perm = search_space_for_n_and_rounds(teams, rounds).blueprint
    +>>> dest = np.empty((rounds * (teams - 1), teams),
    +...                 int_range_to_dtype(-teams, teams))
    +>>> map_games(perm, dest)
    +>>> print(dest)
    +[[ 2 -1]
    + [-2  1]]
    +>>> teams = 4
    +>>> rounds = 2
    +>>> perm = search_space_for_n_and_rounds(teams, rounds).blueprint
    +>>> dest = np.empty((rounds * (teams - 1), teams),
    +...                 int_range_to_dtype(-teams, teams))
    +>>> map_games(perm, dest)
    +>>> print(dest)
    +[[ 2 -1  4 -3]
    + [ 3  4 -1 -2]
    + [ 4  3 -2 -1]
    + [-2  1 -4  3]
    + [-3 -4  1  2]
    + [-4 -3  2  1]]
    +
    moptipyapps.ttp.game_encoding.search_space_for_n_and_rounds(n, rounds)[source]

    Create a proper search space for the given number of teams and rounds.

    If the instance prescribes a double-round robin tournament, then this is just the standard() permutations set. Otherwise, it will be a permutation where some elements are omitted (for rounds == 1) or duplicated (if rounds > 2).

    If an odd number of rounds is played, then it is not possible that all teams have the same number of games at home and away. Then, the permutation is generated such that, if the highest numbers of games at home for any team is k, no other team has less than k - 1 games at home. If the number of rounds is even, then all teams will have the same number of home and away games, that is, the number of teams divided by two and multiplied by the number of rounds.

    Parameters:
    • n (int) – the number of teams

    • rounds (int) – the number of rounds

    Return type:

    Permutations

    Returns:

    the search space

    >>> ";".join(map(str, search_space_for_n_and_rounds(2, 2).blueprint))
    +'0;1'
    +>>> ";".join(map(str, search_space_for_n_and_rounds(2, 3).blueprint))
    +'0;1;1'
    +>>> ";".join(map(str, search_space_for_n_and_rounds(2, 4).blueprint))
    +'0;0;1;1'
    +>>> ";".join(map(str, search_space_for_n_and_rounds(2, 5).blueprint))
    +'0;0;1;1;1'
    +>>> ";".join(map(str, search_space_for_n_and_rounds(3, 1).blueprint))
    +'1;2;5'
    +>>> ";".join(map(str, search_space_for_n_and_rounds(3, 2).blueprint))
    +'0;1;2;3;4;5'
    +>>> ";".join(map(str, search_space_for_n_and_rounds(3, 3).blueprint))
    +'0;1;1;2;2;3;4;5;5'
    +>>> ";".join(map(str, search_space_for_n_and_rounds(4, 1).blueprint))
    +'1;2;3;7;8;10'
    +>>> ";".join(map(str, search_space_for_n_and_rounds(4, 2).blueprint))
    +'0;1;2;3;4;5;6;7;8;9;10;11'
    +>>> ";".join(map(str, search_space_for_n_and_rounds(4, 3).blueprint))
    +'0;1;1;2;2;3;3;4;5;6;7;7;8;8;9;10;10;11'
    +>>> ";".join(map(str, search_space_for_n_and_rounds(4, 4).blueprint))
    +'0;0;1;1;2;2;3;3;4;4;5;5;6;6;7;7;8;8;9;9;10;10;11;11'
    +>>> ";".join(map(str, search_space_for_n_and_rounds(4, 5).blueprint))
    +'0;0;1;1;1;2;2;2;3;3;3;4;4;5;5;6;6;7;7;7;8;8;8;9;9;10;10;10;11;11'
    +>>> ";".join(map(str, search_space_for_n_and_rounds(5, 1).blueprint))
    +'1;2;4;7;9;10;13;15;16;18'
    +>>> ";".join(map(str, search_space_for_n_and_rounds(5, 2).blueprint))
    +'0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19'
    +>>> ";".join(map(str, search_space_for_n_and_rounds(5, 3).blueprint))
    +'0;1;1;2;2;3;4;4;5;6;7;7;8;9;9;10;10;11;12;13;13;14;15;15;16;16;17;18;18;19'
    +

    moptipyapps.ttp.game_plan module

    A game plan assigns teams to games.

    A game plan is a two-dimensional matrix G. The rows are the time slots. There is one column for each time. If G has value v at row i and column j, then this means:

    • at the time slot i

    • the team with name j+1 plays
      • no team if v == 0,

      • at home against the team v if v > 0, i.e., team v travels to the home stadium of team j+1

      • away against the team -v if v < 0, i.e., team j+1 travels to the home stadium of team -v and plays against them there

    Indices in matrices are zero-based, i.e., the lowest index for a row i is 0 and the lowest index for a column j is also 0. However, team names are one-based, i.e., that with 1. Therefore, we need to translate the zero-based column index j to a team name by adding 1 to it.

    This is just a numerical variant of the game plan representation given at <https://robinxval.ugent.be/RobinX/travelRepo.php>. Indeed, the str(…) representation of a game plan is exactly the table shown there.

    Of course, if G[i, j] = v, then G[i, v - 1] = -(j + 1) should hold if v > 0, for example. Vice versa, if v < 0 and G[i, j] = v, then G[i, (-v) - 1] = j + 1 should hold. Such constraints are checked by the errors objective function.

    The corresponding space implementation, game_plan_space, offers the functionality to convert strings to game plans as well as to instantiate them in a black-box algorithm.

    class moptipyapps.ttp.game_plan.GamePlan(instance: Instance)[source]

    Bases: Component, ndarray

    A game plan, i.e., a solution to the Traveling Tournament Problem.

    instance: Instance

    the TTP instance

    moptipyapps.ttp.game_plan_space module

    Here we provide a Space of bin game plans.

    The bin game plans object is defined in module game_plan. Basically, it is a two-dimensional numpy array holding, for each day (or time slot) for each team the opposing team.

    class moptipyapps.ttp.game_plan_space.GamePlanSpace(instance)[source]

    Bases: Space

    An implementation of the Space API of for game plans.

    create()[source]

    Create a game plan without assigning items to locations.

    Return type:

    GamePlan

    Returns:

    the (empty, uninitialized) packing object

    >>> inst = Instance.from_resource("circ8")
    +>>> space = GamePlanSpace(inst)
    +>>> x = space.create()
    +>>> print(inst.rounds)
    +2
    +>>> print(inst.n_cities)
    +8
    +>>> x.shape
    +(14, 8)
    +>>> x.instance is inst
    +True
    +>>> type(x)
    +<class 'moptipyapps.ttp.game_plan.GamePlan'>
    +
    from_str(text)[source]

    Convert a string to a packing.

    Parameters:

    text (str) – the string

    Return type:

    GamePlan

    Returns:

    the packing

    >>> inst = Instance.from_resource("circ6")
    +>>> space = GamePlanSpace(inst)
    +>>> y1 = space.create()
    +>>> y1.fill(0)
    +>>> y2 = space.from_str(space.to_str(y1))
    +>>> space.is_equal(y1, y2)
    +True
    +>>> y1 is y2
    +False
    +
    instance: Final[Instance]

    The instance to which the packings apply.

    is_equal(x1, x2)[source]

    Check if two bin game plans have the same contents.

    Parameters:
    Return type:

    bool

    Returns:

    True if both game plans are for the same instance and have the same structure

    >>> inst = Instance.from_resource("circ4")
    +>>> space = GamePlanSpace(inst)
    +>>> y1 = space.create()
    +>>> y1.fill(0)
    +>>> y2 = space.create()
    +>>> y2.fill(0)
    +>>> space.is_equal(y1, y2)
    +True
    +>>> y1 is y2
    +False
    +>>> y1[0, 0] = 1
    +>>> space.is_equal(y1, y2)
    +False
    +
    log_parameters_to(logger)[source]

    Log the parameters of the space to the given logger.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    n_points()[source]

    Get the number of game plans.

    The values in a game plan go from -n..n, including zero, and we have days*n values. This gives (2n + 1) ** (days * n), where days equals (n - 1) * rounds and rounds is the number of rounds. In total, this gives (2n + 1) ** ((n - 1) * rounds * n).

    Return type:

    int

    Returns:

    the number of possible game plans

    >>> space = GamePlanSpace(Instance.from_resource("circ6"))
    +>>> print((2 * 6 + 1) ** ((6 - 1) * 2 * 6))
    +6864377172744689378196133203444067624537070830997366604446306636401
    +>>> space.n_points()
    +6864377172744689378196133203444067624537070830997366604446306636401
    +>>> space = GamePlanSpace(Instance.from_resource("circ4"))
    +>>> space.n_points()
    +79766443076872509863361
    +>>> print((2 * 4 + 1) ** ((4 - 1) * 2 * 4))
    +79766443076872509863361
    +
    validate(x)[source]

    Check if a game plan is an instance of the right object.

    This method performs a superficial feasibility check, as in the TTP, we try to find feasible game plans and may have infeasible ones. All we check here is that the object is of the right type and dimensions and that it does not contain some out-of-bounds value.

    Parameters:

    x (GamePlan) – the game plan

    Raises:
    • TypeError – if any component of the game plan is of the wrong type

    • ValueError – if the game plan is not feasible

    Return type:

    None

    moptipyapps.ttp.instance module

    An instance of the Traveling Tournament Problem (TTP).

    The Traveling Tournament Problem (TTP) describes the logistics of a sports league. In this league, n teams compete. In each time slot, each team plays against one other team. In each game, one team plays at home and one team plays away with the other team. In each round, every team plays once against every other team. The league may have multiple rounds. If there are two rounds, then each team plays against each other team once at home and once abroad. If a team plays at home (or abroad) several times in a row, this is called a “streak”. There are minimum and maximum streak length constraints defined, for both at home and abroad. Additionally, if team A plays a team B in one time slot, then the exact inverse game cannot take place in the next time slot. A minimum number of games must take place in between for separation. There can also be a maximum separation length.

    David Van Bulck of the Sports Scheduling Research group, part of the Faculty of Economics and Business Administration at Ghent University, Belgium, maintains “RobinX: An XML-driven Classification for Round-Robin Sports Timetabling”, a set of benchmark data instances and results of the TTP. We provide some of these instances as resources here. You can also download them directly at <https://robinxval.ugent.be/RobinX/travelRepo.php>. Also, see <https://robinxval.ugent.be/> for more information.

    1. David Van Bulck. Minimum Travel Objective Repository. RobinX: An XML-driven Classification for Round-Robin Sports Timetabling. Faculty of Economics and Business Administration at Ghent University, Belgium. https://robinxval.ugent.be/

    2. Kelly Easton, George L. Nemhauser, and Michael K. Trick. The Traveling Tournament Problem Description and Benchmarks. In Principles and Practice of Constraint Programming (CP’01), November 26 - December 1, 2001, Paphos, Cyprus, pages 580-584, Berlin/Heidelberg, Germany: Springer. ISBN: 978-3-540-42863-3. https://doi.org/10.1007/3-540-45578-7_43 https://www.researchgate.net/publication/220270875

    class moptipyapps.ttp.instance.Instance(name: str, matrix: ndarray, teams: Iterable[str], rounds: int, home_streak_min: int, home_streak_max: int, away_streak_min: int, away_streak_max: int, separation_min: int, separation_max: int, tour_length_lower_bound: int = 0)[source]

    Bases: Instance

    An instance of Traveling Tournament Problem (TTP).

    away_streak_max: int

    the maximum number of games that can be played away in a row

    away_streak_min: int

    the minimum number of games that can be played away in a row

    static from_file(path, lower_bound_getter=None)[source]

    Read a TTP instance from a robinX formatted XML file.

    Parameters:
    Return type:

    Instance

    Returns:

    the instance

    >>> from os.path import dirname
    +>>> inst = Instance.from_file(dirname(__file__) + "/robinx/con20.xml")
    +>>> inst.name
    +'con20'
    +
    static from_resource(name)[source]

    Load a TTP instance from a resource.

    Parameters:

    name (str) – the name string

    Return type:

    Instance

    Returns:

    the instance

    >>> insta = Instance.from_resource("bra24")
    +>>> insta.n_cities
    +24
    +>>> insta.name
    +'bra24'
    +>>> insta.teams[0]
    +'Atl.Mineiro'
    +>>> insta.teams[1]
    +'Atl.Paranaense'
    +>>> insta.rounds
    +2
    +>>> insta.home_streak_min
    +1
    +>>> insta.home_streak_max
    +3
    +>>> insta.away_streak_min
    +1
    +>>> insta.away_streak_max
    +3
    +>>> insta.separation_min
    +1
    +>>> insta.separation_max
    +46
    +
    game_plan_dtype: dtype

    the data type to be used for plans

    get_optimal_plan_length_bounds()[source]

    Get lower and upper bounds in which the optimal plan length resides.

    These are the bounds for the optimal tour length of feasible solutions. If we know the feasible solution with the smallest possible tour length, then the game_plan objective function would return a value within these limits for this solution. The limits for the RobinX instance have been taken from https://robinxval.ugent.be/RobinX/travelRepo.php on 2024-05-10.

    Return type:

    tuple[int, int]

    Returns:

    a tuple of the lower and upper limit for the optimal plan length

    home_streak_max: int

    the maximum number of games that can be played at home in a row

    home_streak_min: int

    the minimum number of games that can be played at home in a row

    static list_resources(symmetric=True, asymmetric=True)[source]

    Get a tuple of all the TTP instances available as resource.

    All instances of the robinX set provided here are symmetric.

    Parameters:
    • symmetric (bool, default: True) – include the instances with symmetric distance matrices

    • asymmetric (bool, default: True) – include the asymmetric instances with asymmetric distance matrices

    Return type:

    tuple[str, ...]

    Returns:

    the tuple with the instance names

    >>> len(Instance.list_resources())
    +118
    +>>> len(Instance.list_resources(False, True))
    +0
    +>>> len(Instance.list_resources(True, False))
    +118
    +
    log_parameters_to(logger)[source]

    Log the parameters of the instance to the given logger.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    >>> from moptipy.utils.logger import InMemoryLogger
    +>>> with InMemoryLogger() as l:
    +...     with l.key_values("I") as kv:
    +...         Instance.from_resource("gal4").log_parameters_to(kv)
    +...     print(repr('@'.join(l.get_log())))
    +'BEGIN_I@name: gal4@class: moptipyapps.ttp.instance.Instance@nCities: 4@tourLengthLowerBound: 67@tourLengthUpperBound: 160@symmetric: T@dtype: h@rounds: 2@homeStreakMin: 1@homeStreakMax: 3@awayStreakMin: 1@awayStreakMax: 3@separationMin: 1@separationMax: 6@gamePlanDtype: b@END_I'
    +
    rounds: int

    the number of rounds

    separation_max: int

    the maximum number of games between a repetition of a game setup

    separation_min: int

    the minimum number of games between a repetition of a game setup

    teams: tuple[str, ...]

    the names of the teams

    moptipyapps.ttp.plan_length module

    An objective computing the total travel length of all teams in a game plan.

    This objective function takes a game plan as argument and computes the total travel length for all teams. A game_plan is basically a matrix that, for each day (first dimension) stores against which each team (second dimension) plays. If a team plays at home (has a home game), its opponent is stored as a positive number. If the team has an away game, i.e., needs to visit the opponent, then this opponent is stored as a negative number. Team IDs go from 1 to n, i.e., a value in 1..n indicates a home game and a value in -n..-1 indicates an away game. The value 0 denotes a bye, i.e., that no game is scheduled for a team at the given day.

    The total game plan length is computed as follows:

    1. the total length = 0

    2. for each team,
      1. start at the current location = home

      2. for each day,
        1. if the opponent number is negative, the next location is the opponent’s hometown;

        2. else if the opponent number is positive, the next location is the own hometown;

        3. else (if the opponent number is 0): add the bye penalty to the total length and jump to the next iteration

        4. add the distance from the current to the next location to the total length

        5. set the current location = the next location

      3. if the current location != own hometown, add the travel distance back from the current location to the hometown to the total travel length.

    As penalty for the bye situation where no game is scheduled, we use twice the maximum distance between any two teams plus 1. The logic is that if a bye (i.e., a 0) inserted into a game plan, it replaces one game. Since it replaces one game, it affects up to two travels, namely from the previous location to the game location and from the game location to the next location. So the optimization process could sneakily try to cut longer legs of the tournament by inserting a bye. The longest imaginable travel would be between the two cities that are farthest away from each other and back. By making the penalty for a bye exactly one distance unit longer than this longest imaginable distance, we ensure that the travel length can never be reduced by inserting a bye. Thus, having a bye is always more costly than any other travel it could replace.

    class moptipyapps.ttp.plan_length.GamePlanLength(instance)[source]

    Bases: Objective

    Compute the total travel length of a game plan.

    This objective function sums up all the travel lengths over all teams. Days without game (bye) are penalized.

    bye_penalty: Final[int]

    the bye penalty

    evaluate(x)[source]

    Count the errors in a game plan as objective value.

    Parameters:

    x (GamePlan) – the game plan

    Return type:

    int

    Returns:

    the number of errors in the plan

    instance: Final[Instance]

    the TTP instance

    is_always_integer()[source]

    State that this objective function is always integer-valued.

    Return type:

    bool

    Returns:

    True

    log_parameters_to(logger)[source]

    Log the parameters of the instance to the given logger.

    Parameters:

    logger (KeyValueLogSection) – the logger for the parameters

    Return type:

    None

    lower_bound()[source]

    Obtain the lower bound for the travel length.

    Return type:

    int

    Returns:

    0

    upper_bound()[source]

    Compute upper bound for the travel length: All n*days*bye_penalty.

    Return type:

    int

    Returns:

    n * days * self.bye_penalty

    moptipyapps.ttp.plan_length.game_plan_length(y, distances, bye_penalty)[source]

    Compute the total travel length of a game plan.

    Parameters:
    • y (ndarray) – the game plan

    • distances (ndarray) – the distance matrix

    • bye_penalty (int) – the penalty for bye = 0 entries, i.e., days where no game is scheduled

    Return type:

    int

    Returns:

    the total plan length

    >>> yy = np.array([[ 2, -1,  4, -3],
    +...                [-2,  1, -4,  3],
    +...                [ 3,  4, -1, -2],
    +...                [-3, -4,  1,  2],
    +...                [ 4,  3, -2, -1],
    +...                [-4, -3,  2,  1]], int)
    +>>> dd = np.array([[ 0,  1,  2,  3],
    +...                [ 7,  0,  4,  5],
    +...                [ 8, 10,  0,  6],
    +...                [ 9, 11, 12,  0]], int)
    +>>> 0 + 1 + 7 + 2 + 8 + 3 + 9  # team 1
    +30
    +>>> 7 + 1 + 0 + 5 + 11 + 4 + 10  # team 2
    +38
    +>>> 0 + 6 + 9 + 2 + 10 + 4  # team 3
    +31
    +>>> 12 + 6 + 11 + 5 + 9 + 3  # team 4
    +46
    +>>> 30 + 38 + 31 + 46  # total sum
    +145
    +>>> game_plan_length(yy, dd, 0)
    +145
    +
    >>> yy[1, 0] = 0  # add a bye
    +>>> 0 + 25 + 0 + 2 + 8 + 3 + 9  # team 1
    +47
    +>>> game_plan_length(yy, dd, 2 * 12 + 1)
    +162
    +
    diff --git a/moptipyapps.ttp.robinx.html b/moptipyapps.ttp.robinx.html new file mode 100644 index 00000000..43219fd3 --- /dev/null +++ b/moptipyapps.ttp.robinx.html @@ -0,0 +1 @@ +moptipyapps.ttp.robinx package — moptipyapps 0.8.62 documentation

    moptipyapps.ttp.robinx package

    The RobinX example data for the Traveling Tournament Problem (TTP).

    David Van Bulck of the Sports Scheduling Research group, part of the Faculty of Economics and Business Administration at Ghent University, Belgium, maintains “RobinX: An XML-driven Classification for Round-Robin Sports Timetabling”, a set of benchmark data instances and results of the TTP. Here we include some of these TTP instances into our package.

    This package does not offer anything useful except for holding the TTP files. You can find the documentation and actual classes for solving and playing around with the TSP in package ttp.

    The original data of robinX can be found at <https://robinxval.ugent.be/RobinX/travelRepo.php>

    moptipyapps.ttp.robinx.open_resource_stream(file_name)[source]

    Open a RobinX resource stream.

    Parameters:

    file_name (str) – the file name of the resource

    Return type:

    TextIO

    Returns:

    the stream

    diff --git a/objects.inv b/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..3f764f38bec9068d113a2dafdebc82fde8ed218d GIT binary patch literal 5170 zcmX}ibvzt^|HpCNou^ONm^w8KcTP8_nPKuAr%jAax6`rdZo{cz>hxwzo0@Jj+nD|Q z9>4GJ``7F7{(PR?Kw~c#SI3Ic&2Dn5HH|5LH*uQ1ohvK?e+j>2l-kg$WE&058V)nQxMU?HY z#AW>62<_EsI1eK1es6#8-T0Ywa(GkwQ`YcsxC~APtzaorJ_ofziMZ|GmpwG-_TjqE znRuoY>J{7Hdx?pEJzH1(SkFH4MUZvF%*S890pt8^=<&`WqcY|@;>O|9uNkQJ`wunl4@m`q_!6-nZ;JWIL^uTwn8BJ0L|R=?gIQ2y zdINRF4+^m68P!8n{u}X(AM6k7;rE|lgEcuG2)4?9^FXK{)&u!Zh{2lg9tg3@fAc_? z9@Yc-Pw>H-b`Jz!<^Qw2Btnf1khS(v=tf+63JQeyhX`ESQ@*l>;VNC*$a6vumEfO2Un_2Ajpi#s2VTg63iQ8CI7g1uKp z`fS_&u5eZ5+ExqABD}SxHl9qV{M4rZtSTy!rHh*4^mELh-(9SQ>rz`7mO*rmI;cD0@wK>+~si@Akb^KRMII>!|GCCKKCno{MG5HBEy?Gvm=U%xNbkvVM-SOfqhxjkeH9CD}RydeBofxOxDZyIVIa1 z{)r zm%HT9TPsb1_j!VwqHz4~_Tg{Y=7tg5Zu&EZW1xbO@gYdgSXCohhC?)yT$+$kAxAwa;Y56H6X6y@HNtGR7o`v=CC094L zJS)6yySS6U?Bda6CP(q7>9m|yFqN!5zf41JCK#>Ly8~%F;;yM7Y|>e0!s7^k@^FzB_9XCPt-mF~4>^BVl6pU8<9?AzN9yniu-&M} zFrmHw>{sN}yNp4FT1(9|+qGv}ebj^Pa4(ZWaOCrZY=Li+9M0|%EKdbQ3KYvv2M&J8 zSis6pX_FfqJUCL(&P{9vk<$?fWzSRcny>Y!9v_onu>b{b-Co?6U#v1o*A;FYzDY}} zoC{kfV0G2nYGx4hR!Px_JwHb}Gq%P=_SB&S!)sQ=c+#zhR2?M_Zt}FA+w>O;jrnof zS<%$i@47Zzd`^*BxHu?34ABa&sWRovoDTjbI`#c9jL)q5-q$MGx$|`R7@GR-KoF%- zJ0+!sRC(!|b&w8MOE71I3tR4VIa;N~&cm*xz6N?qXTwE=a7;4j`#O~qiupb}^(dQ4 z=Zao0eJ*ECY87heuCHR;;2JU9Gds7|`a>)mT^JTGa}-{P#fEKwUD&vAMR-Z5aJj?4 z?&G#zKNb+US}xmzjT@+Fr<{FKA|~~Un?%n5RW9k-6tk@KGTu%}0ncUOSTKsR_sNsL zJTE}WqJ!0&f@p7A#mCj9FE3ss|2T?uZVqe zNCVncgttYB%vT*4)FtB%K+T;H;WpTG<)X_Eq+63N_c8%t{I1YAWXZyWXlcwJd#dk# zqQ^r29@p>fSK=weE(hKpj|u{kexEouK&qZumD9(;chliA***V$%68kNg{%Xjgy0t0 zLAQiwGs1M~SXk-4BM)FTaDU5ikJ zf%>K}9$WhWS?NL3ffJQshluFws`KdMHjhI8MzRvsCr=upT35PmR7`AOos?XM?KwTT z^sPCx;?6AgawP>=BBw^`5sWXZTZ)J54h7B~#FFZQx5OlZPkJyHIZ#_&=>&%CYW~64 zsf-*6XA5sc8|AobWt zPIJLhtJ3vLpJ!Ja0p&WnT5KLv(+24Uv{Y_2<$SH7&_8JRFv4*(=Agz+AD2bbb@P{>j5D4U=}OkTHZD+__jh{& z?W`zRwS))jhca6}GWfYd)mbmWl3%*LJnl!Mf~91OSzxl$z#Hvwov`#Jr(yj&F>%ht zh0Vy=e+`QBT9vix1=)!)^vJUoRGGu7K-t7jaTe-I!*S3q7EHz$^APv0Yi90*B|G?u z#96QSC~{2(iR~cI+n5Q}7Bo1DS--cPG(UG6bJY0#>TPyyy-cOtNgSU1<=w*PmY}23 zPC<-C?VUN3XmS{T@pU9ka+Oiln&Ptiou4Yt6Df|!?YlR8ke2=wN+G0cV#>sP7-hdf z^gbYZKq;SAT?$>Gfi%T6kN%Mppu)%!1oHzmo4${kuC9-#&*&1e9EdeoE4!hhtbRUj z_K||77j4qSyoaB(T!>ndT1JLg4h0wX)lbrGY@xuOM|fP2IFWZ>AP8#h>34X%TkTpl z>H3dL0Dp*ME`T3qCNiGEzUeu6?5|_DD-&~H!+S$oY(4?XFn)UDqEBN=86SJr3tal_ z9j9;>p0T4*jz#mu5x8Sod5c3e4IxXh4xMT2mZJf9`ByUY!~AwbWLmM-CwZ>TM=Qjf z9K@-Mg!`ovBNx9M)l*_?!{bfG_6v-SV^VVS&_S(fJuSLPAdlZ(kj=juJ;#EXEXY(Y zqI-zi4f>wdyAQyC%_RjE&Yf$xDt%O>+x!N>(|u9m+C!i%t<_8glEk+)NguAK(3k4${iQHVDYOn5)kPam#T0=^z`Q?zYJ^Fw*{yT=4v zsPcV%p7qmQCI5mrhBKLJFISk|bo3}yNmp-5bt1)IW#8VoQhXw^uVP>2cdIfNb)15d zN56%I<)A}di}RHP$Q*7~D&-&Y<1*_EMZos4N=uphBU~H6#L?UKExZJr%qaXLT{Bi& zlXH4fXN$u%@Rla>SyCDOLE30%yiwpkj*5f7?-n6+=$UNs7#Kf5KKq1vnzm#f!s8=t9^1*SnDL`1 zDpuyrB1rh?`@ZOCBn)iv!ZGK2C)8zM8^tLbn(+oGQW=v-#>?nLqj+LW{`iHNks>6c z;;gtaHrra`Zy(5r>C5lgg1_0;Ha3FM3ql2dG3)L{@q>D5-a^ovU~%X%rcl^h2Dq<)wS5x%b<50F|gIXI&f+5uWs0U?2Xar0zTyM94W?2=Wtaj7dA&- zGfM(;ZQ`ytA1n&|81h@#+v$l6kz0^KXG+>cM?d&gSC58|ftXtL?df!XW_gaX{1s<2 zkKsnL7k@Sp1^9bksQ;r5-!dz3KrOxA2QBO2HM&}Xe~PvmH_$3#lZf=j->0}Wv(Y~W z@N2}A_AlutL%mEJ&>q9OtWLF@yqaY{Gx$g;=4Sp{jA3^Gf^#?M136sp^`x_T&^XlN3Aq2)J&LByUeU8!kLU7&X*T()*@%9k%Cd7L5t-?o?b((v( zM)XX~G^_w#!yiDeF8Pw}ii5#TI;FHg&otHZN7eiu^n1%O^H}})KjbVLQuGMR6O{OYK{H`iu@vpI? zMY?m9KJl(m3Vo(YZr*)YDd*@+X+z0N`Q|4!+v>Q?298`m)HewDp0Ys;Xu@Uw>_eg2v#i};KL=RVChzAd+DqRxLdQ_DoBQJc-Ju4-TfoHSm$xGUWxXQ@Htt}X zi-cp>%lx=szl_r!MTwLPj9neMgvg?&r4{A57n9fpTHo%ACnCPHl@oUH#C-Ij>u zOv~PJ@Kz)4k^Y*Vm1-sl@U9#^Wf-NTE6h1VRX$g~(rCJvutS4A-r=@@@d{4z#tm58 zJvTh^!yp^R6|3TVDsLE)GR`baQ~6gW8w9k2_;)p2Q6WiWOUY9N)0gZeh9`P6%sR~- zRoIWMauwxQ5=>H1^*t%$RlSIUui4I;#zhI zqD5-$n&&VlMQ%(uofqZkr`iIh)%%*-(Vv;OWN0h{#DCnTkj^LQ+Fv7LOp{Q5FBX(_ S_ad{$j;P`v_Wc3l!2ba7aL!}^ literal 0 HcmV?d00001 diff --git a/py-modindex.html b/py-modindex.html new file mode 100644 index 00000000..51cce7d4 --- /dev/null +++ b/py-modindex.html @@ -0,0 +1 @@ +Python Module Index — moptipyapps 0.8.62 documentation

    Python Module Index

     
    m
    moptipyapps
        moptipyapps.binpacking2d
        moptipyapps.binpacking2d.bks
        moptipyapps.binpacking2d.encodings
        moptipyapps.binpacking2d.encodings.ibl_encoding_1
        moptipyapps.binpacking2d.encodings.ibl_encoding_2
        moptipyapps.binpacking2d.experiment
        moptipyapps.binpacking2d.instance
        moptipyapps.binpacking2d.instgen
        moptipyapps.binpacking2d.instgen.errors
        moptipyapps.binpacking2d.instgen.errors_and_hardness
        moptipyapps.binpacking2d.instgen.experiment
        moptipyapps.binpacking2d.instgen.hardness
        moptipyapps.binpacking2d.instgen.inst_decoding
        moptipyapps.binpacking2d.instgen.instance_space
        moptipyapps.binpacking2d.instgen.problem
        moptipyapps.binpacking2d.make_instances
        moptipyapps.binpacking2d.objectives
        moptipyapps.binpacking2d.objectives.bin_count
        moptipyapps.binpacking2d.objectives.bin_count_and_empty
        moptipyapps.binpacking2d.objectives.bin_count_and_last_empty
        moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline
        moptipyapps.binpacking2d.objectives.bin_count_and_last_small
        moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline
        moptipyapps.binpacking2d.objectives.bin_count_and_small
        moptipyapps.binpacking2d.packing
        moptipyapps.binpacking2d.packing_result
        moptipyapps.binpacking2d.packing_space
        moptipyapps.binpacking2d.packing_statistics
        moptipyapps.binpacking2d.plot_packing
        moptipyapps.dynamic_control
        moptipyapps.dynamic_control.controller
        moptipyapps.dynamic_control.controllers
        moptipyapps.dynamic_control.controllers.ann
        moptipyapps.dynamic_control.controllers.codegen
        moptipyapps.dynamic_control.controllers.cubic
        moptipyapps.dynamic_control.controllers.linear
        moptipyapps.dynamic_control.controllers.min_ann
        moptipyapps.dynamic_control.controllers.partially_linear
        moptipyapps.dynamic_control.controllers.peaks
        moptipyapps.dynamic_control.controllers.predefined
        moptipyapps.dynamic_control.controllers.quadratic
        moptipyapps.dynamic_control.experiment_raw
        moptipyapps.dynamic_control.experiment_surrogate
        moptipyapps.dynamic_control.instance
        moptipyapps.dynamic_control.model_objective
        moptipyapps.dynamic_control.objective
        moptipyapps.dynamic_control.ode
        moptipyapps.dynamic_control.results_log
        moptipyapps.dynamic_control.results_plot
        moptipyapps.dynamic_control.starting_points
        moptipyapps.dynamic_control.surrogate_optimizer
        moptipyapps.dynamic_control.system
        moptipyapps.dynamic_control.system_model
        moptipyapps.dynamic_control.systems
        moptipyapps.dynamic_control.systems.lorenz
        moptipyapps.dynamic_control.systems.stuart_landau
        moptipyapps.dynamic_control.systems.three_coupled_oscillators
        moptipyapps.order1d
        moptipyapps.order1d.distances
        moptipyapps.order1d.instance
        moptipyapps.order1d.space
        moptipyapps.qap
        moptipyapps.qap.instance
        moptipyapps.qap.objective
        moptipyapps.qap.qaplib
        moptipyapps.shared
        moptipyapps.tests
        moptipyapps.tests.on_binpacking2d
        moptipyapps.tests.on_tsp
        moptipyapps.tsp
        moptipyapps.tsp.ea1p1_revn
        moptipyapps.tsp.fea1p1_revn
        moptipyapps.tsp.instance
        moptipyapps.tsp.known_optima
        moptipyapps.tsp.tour_length
        moptipyapps.tsp.tsplib
        moptipyapps.ttp
        moptipyapps.ttp.errors
        moptipyapps.ttp.game_encoding
        moptipyapps.ttp.game_plan
        moptipyapps.ttp.game_plan_space
        moptipyapps.ttp.instance
        moptipyapps.ttp.plan_length
        moptipyapps.ttp.robinx
        moptipyapps.version
    diff --git a/pyproject_toml.html b/pyproject_toml.html new file mode 100644 index 00000000..cef426db --- /dev/null +++ b/pyproject_toml.html @@ -0,0 +1,5 @@ +

    [build-system]
    +requires = ["setuptools>=75.5.0"]
    +build-backend = "setuptools.build_meta"
    +
    diff --git a/requirements-dev_txt.html b/requirements-dev_txt.html new file mode 100644 index 00000000..740660b1 --- /dev/null +++ b/requirements-dev_txt.html @@ -0,0 +1,38 @@ +

    #
    +# Dependencies Required to Develop `moptipyapps`
    +#
    +# In this file we list all the libraries that are required to develop
    +# `moptipyapps` code. This means that you want to run the complete `make`
    +# process, including all the unit tests, the static analysis, and building the
    +# documentation. Notice that none of this is necessary if you just want to use
    +# `moptipyapps` or even just want to implement an algorithm or problem for your
    +# own purposes. Only if you want to do all the checks and the whole build
    +# process, maybe because you want to submit code to the `moptipy` project,
    +# then you need all of these dependencies. For only using `moptipy`, it is
    +# sufficient to load the dependencies specified in `requirements.txt`.
    +# Nevertheless, I think even then it may still be a good idea to use the full
    +# `make` process, because the static analysis and unit tests are, indeed,
    +# useful. They enforce a uniform coding style, help you to find bugs, and kind
    +# of push you to use best practices. I personally learned a lot from the
    +# static analysis and the unit tests indeed revealed errors.
    +#
    +# For developing or contributing to `moptipyapps`, you should install the
    +# dependencies below. You can do this via
    +# `pip install --no-input --timeout 360 --retries 100 -r requirements-dev.txt`
    +# with a text file `requirements-dev.txt` that has the exact same contents as
    +# this file here.
    +#
    +# `moptipyapps` is available at https://thomasweise.github.io/moptipyapps.
    +# This file is available at https://github.com/thomasWeise/moptipyapps.
    +#
    +# Below, we list each library required for development and specify the reason
    +# why it is needed. Notice that these libraries may, in turn, depend on other
    +# libraries. We cannot maintain a full list of these recursive dependencies.
    +# Here we only list the top-level dependencies that are actually used in the
    +# `moptipyapps` build process.
    +#
    +
    +# pycommons provides lots of utilities
    +pycommons[dev] >= 0.8.58
    +
    diff --git a/requirements_txt.html b/requirements_txt.html new file mode 100644 index 00000000..dcd6bc7e --- /dev/null +++ b/requirements_txt.html @@ -0,0 +1,51 @@ +

    #
    +# Dependencies Required to Use `moptipyapps`
    +#
    +# In this file we list all the libraries that are required to use
    +# `moptipyapps`. You must install them before using `moptipyapps`.
    +# If you install `moptipyapps` via pip, i.e., do
    +# `pip install moptipyapps`, then this is done automatically for you.
    +# Otherwise, you could do
    +# `pip install --no-input --timeout 360 --retries 100 -r requirements.txt`
    +# with a text file `requirements.txt` that has the exact same contents as this
    +# file here.
    +#
    +# `moptipyapps` is available at https://thomasweise.github.io/moptipyapps.
    +# This file is available at https://github.com/thomasWeise/moptipyapps.
    +#
    +# Below, we list each required library and specify the reason why it is
    +# needed. Notice that these libraries may, in turn, depend on other libraries.
    +# We cannot maintain a full list of these recursive dependencies.
    +# Here we only list the top-level dependencies that are actually used by
    +# `moptipyapps` directly.
    +#
    +
    +# `moptipy` provides the basic optimization infrastructure and the spaces and
    +# tools that we use for optimization.
    +moptipy == 0.9.136
    +
    +# the common tools package
    +pycommons == 0.8.58
    +
    +# `numpy` is needed for its efficient data structures.
    +numpy == 1.26.4
    +
    +# numba provides JIT compilers useful making vector/numpy operations efficient
    +numba == 0.60.0
    +
    +# matplotlib is used to create plots in the evaluation procedures.
    +matplotlib == 3.9.2
    +
    +# scipy is used, e.g., for integrating systems of differential equations.
    +scipy == 1.14.1
    +
    +# urllib3 and certifi are used to build instance data from internet resources.
    +# They are also used to check the URLs in the README.md as part of the build
    +# process, we check all the URLs in the README.md file..
    +urllib3 == 2.2.3
    +certifi == 2024.8.30
    +
    +# defusedxml is used as safe alternative for XML parsing the TTP data
    +defusedxml == 0.7.1
    +
    diff --git a/search.html b/search.html new file mode 100644 index 00000000..2e20e4d2 --- /dev/null +++ b/search.html @@ -0,0 +1 @@ +Search — moptipyapps 0.8.62 documentation

    Search

    Searching for multiple words only shows matches that contain all words.

    diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 00000000..56e6defa --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {"1. Introduction": [[0, null], [1, "introduction"]], "2. Installation": [[0, "installation"], [1, "installation"]], "3. Applications": [[0, "applications"], [1, "applications"]], "3.1. Two-Dimensional Bin Packing Problem": [[0, "two-dimensional-bin-packing-problem"], [1, "two-dimensional-bin-packing-problem"]], "3.2. The Traveling Salesperson Problem (TSP)": [[0, "the-traveling-salesperson-problem-tsp"], [1, "the-traveling-salesperson-problem-tsp"]], "3.3. Dynamic Controller Synthesis": [[0, "dynamic-controller-synthesis"], [1, "dynamic-controller-synthesis"]], "3.4. The Traveling Tournament Problem (TTP)": [[0, "the-traveling-tournament-problem-ttp"], [1, "the-traveling-tournament-problem-ttp"]], "3.5. The Quadratic Assignment Problem (QAP)": [[0, "the-quadratic-assignment-problem-qap"], [1, "the-quadratic-assignment-problem-qap"]], "3.6. One-Dimensional Ordering": [[0, "one-dimensional-ordering"], [1, "one-dimensional-ordering"]], "4. Unit Tests and Static Analysis": [[0, "unit-tests-and-static-analysis"], [1, "unit-tests-and-static-analysis"]], "5. License": [[0, "license"], [1, "license"]], "5.1. Exceptions": [[0, "exceptions"], [1, "exceptions"]], "6. Contact": [[0, "contact"], [1, "contact"]], "7. Modules and Code": [[1, "modules-and-code"]], "Submodules": [[3, "submodules"], [4, "submodules"], [5, "submodules"], [6, "submodules"], [7, "submodules"], [8, "submodules"], [9, "submodules"], [10, "submodules"], [11, "submodules"], [12, "submodules"], [14, "submodules"], [15, "submodules"], [17, "submodules"]], "Subpackages": [[3, "subpackages"], [4, "subpackages"], [8, "subpackages"], [12, "subpackages"], [15, "subpackages"], [17, "subpackages"]], "moptipyapps": [[2, null]], "moptipyapps package": [[3, null]], "moptipyapps.binpacking2d package": [[4, null]], "moptipyapps.binpacking2d.bks module": [[4, "module-moptipyapps.binpacking2d.bks"]], "moptipyapps.binpacking2d.encodings package": [[5, null]], "moptipyapps.binpacking2d.encodings.ibl_encoding_1 module": [[5, "module-moptipyapps.binpacking2d.encodings.ibl_encoding_1"]], "moptipyapps.binpacking2d.encodings.ibl_encoding_2 module": [[5, "module-moptipyapps.binpacking2d.encodings.ibl_encoding_2"]], "moptipyapps.binpacking2d.experiment module": [[4, "module-moptipyapps.binpacking2d.experiment"]], "moptipyapps.binpacking2d.instance module": [[4, "module-moptipyapps.binpacking2d.instance"]], "moptipyapps.binpacking2d.instgen package": [[6, null]], "moptipyapps.binpacking2d.instgen.errors module": [[6, "module-moptipyapps.binpacking2d.instgen.errors"]], "moptipyapps.binpacking2d.instgen.errors_and_hardness module": [[6, "module-moptipyapps.binpacking2d.instgen.errors_and_hardness"]], "moptipyapps.binpacking2d.instgen.experiment module": [[6, "module-moptipyapps.binpacking2d.instgen.experiment"]], "moptipyapps.binpacking2d.instgen.hardness module": [[6, "module-moptipyapps.binpacking2d.instgen.hardness"]], "moptipyapps.binpacking2d.instgen.inst_decoding module": [[6, "module-moptipyapps.binpacking2d.instgen.inst_decoding"]], "moptipyapps.binpacking2d.instgen.instance_space module": [[6, "module-moptipyapps.binpacking2d.instgen.instance_space"]], "moptipyapps.binpacking2d.instgen.problem module": [[6, "module-moptipyapps.binpacking2d.instgen.problem"]], "moptipyapps.binpacking2d.make_instances module": [[4, "module-moptipyapps.binpacking2d.make_instances"]], "moptipyapps.binpacking2d.objectives package": [[7, null]], "moptipyapps.binpacking2d.objectives.bin_count module": [[7, "module-moptipyapps.binpacking2d.objectives.bin_count"]], "moptipyapps.binpacking2d.objectives.bin_count_and_empty module": [[7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_empty"]], "moptipyapps.binpacking2d.objectives.bin_count_and_last_empty module": [[7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_last_empty"]], "moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline module": [[7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline"]], "moptipyapps.binpacking2d.objectives.bin_count_and_last_small module": [[7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_last_small"]], "moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline module": [[7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline"]], "moptipyapps.binpacking2d.objectives.bin_count_and_small module": [[7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_small"]], "moptipyapps.binpacking2d.packing module": [[4, "module-moptipyapps.binpacking2d.packing"]], "moptipyapps.binpacking2d.packing_result module": [[4, "module-moptipyapps.binpacking2d.packing_result"]], "moptipyapps.binpacking2d.packing_space module": [[4, "module-moptipyapps.binpacking2d.packing_space"]], "moptipyapps.binpacking2d.packing_statistics module": [[4, "module-moptipyapps.binpacking2d.packing_statistics"]], "moptipyapps.binpacking2d.plot_packing module": [[4, "module-moptipyapps.binpacking2d.plot_packing"]], "moptipyapps.dynamic_control package": [[8, null]], "moptipyapps.dynamic_control.controller module": [[8, "module-moptipyapps.dynamic_control.controller"]], "moptipyapps.dynamic_control.controllers package": [[9, null]], "moptipyapps.dynamic_control.controllers.ann module": [[9, "module-moptipyapps.dynamic_control.controllers.ann"]], "moptipyapps.dynamic_control.controllers.codegen module": [[9, "module-moptipyapps.dynamic_control.controllers.codegen"]], "moptipyapps.dynamic_control.controllers.cubic module": [[9, "module-moptipyapps.dynamic_control.controllers.cubic"]], "moptipyapps.dynamic_control.controllers.linear module": [[9, "module-moptipyapps.dynamic_control.controllers.linear"]], "moptipyapps.dynamic_control.controllers.min_ann module": [[9, "module-moptipyapps.dynamic_control.controllers.min_ann"]], "moptipyapps.dynamic_control.controllers.partially_linear module": [[9, "module-moptipyapps.dynamic_control.controllers.partially_linear"]], "moptipyapps.dynamic_control.controllers.peaks module": [[9, "module-moptipyapps.dynamic_control.controllers.peaks"]], "moptipyapps.dynamic_control.controllers.predefined module": [[9, "module-moptipyapps.dynamic_control.controllers.predefined"]], "moptipyapps.dynamic_control.controllers.quadratic module": [[9, "module-moptipyapps.dynamic_control.controllers.quadratic"]], "moptipyapps.dynamic_control.experiment_raw module": [[8, "module-moptipyapps.dynamic_control.experiment_raw"]], "moptipyapps.dynamic_control.experiment_surrogate module": [[8, "module-moptipyapps.dynamic_control.experiment_surrogate"]], "moptipyapps.dynamic_control.instance module": [[8, "module-moptipyapps.dynamic_control.instance"]], "moptipyapps.dynamic_control.model_objective module": [[8, "module-moptipyapps.dynamic_control.model_objective"]], "moptipyapps.dynamic_control.objective module": [[8, "module-moptipyapps.dynamic_control.objective"]], "moptipyapps.dynamic_control.ode module": [[8, "module-moptipyapps.dynamic_control.ode"]], "moptipyapps.dynamic_control.results_log module": [[8, "module-moptipyapps.dynamic_control.results_log"]], "moptipyapps.dynamic_control.results_plot module": [[8, "module-moptipyapps.dynamic_control.results_plot"]], "moptipyapps.dynamic_control.starting_points module": [[8, "module-moptipyapps.dynamic_control.starting_points"]], "moptipyapps.dynamic_control.surrogate_optimizer module": [[8, "module-moptipyapps.dynamic_control.surrogate_optimizer"]], "moptipyapps.dynamic_control.system module": [[8, "module-moptipyapps.dynamic_control.system"]], "moptipyapps.dynamic_control.system_model module": [[8, "module-moptipyapps.dynamic_control.system_model"]], "moptipyapps.dynamic_control.systems package": [[10, null]], "moptipyapps.dynamic_control.systems.lorenz module": [[10, "module-moptipyapps.dynamic_control.systems.lorenz"]], "moptipyapps.dynamic_control.systems.stuart_landau module": [[10, "module-moptipyapps.dynamic_control.systems.stuart_landau"]], "moptipyapps.dynamic_control.systems.three_coupled_oscillators module": [[10, "module-moptipyapps.dynamic_control.systems.three_coupled_oscillators"]], "moptipyapps.order1d package": [[11, null]], "moptipyapps.order1d.distances module": [[11, "module-moptipyapps.order1d.distances"]], "moptipyapps.order1d.instance module": [[11, "module-moptipyapps.order1d.instance"]], "moptipyapps.order1d.space module": [[11, "module-moptipyapps.order1d.space"]], "moptipyapps.qap package": [[12, null]], "moptipyapps.qap.instance module": [[12, "module-moptipyapps.qap.instance"]], "moptipyapps.qap.objective module": [[12, "module-moptipyapps.qap.objective"]], "moptipyapps.qap.qaplib package": [[13, null]], "moptipyapps.shared module": [[3, "module-moptipyapps.shared"]], "moptipyapps.tests package": [[14, null]], "moptipyapps.tests.on_binpacking2d module": [[14, "module-moptipyapps.tests.on_binpacking2d"]], "moptipyapps.tests.on_tsp module": [[14, "module-moptipyapps.tests.on_tsp"]], "moptipyapps.tsp package": [[15, null]], "moptipyapps.tsp.ea1p1_revn module": [[15, "module-moptipyapps.tsp.ea1p1_revn"]], "moptipyapps.tsp.fea1p1_revn module": [[15, "module-moptipyapps.tsp.fea1p1_revn"]], "moptipyapps.tsp.instance module": [[15, "module-moptipyapps.tsp.instance"]], "moptipyapps.tsp.known_optima module": [[15, "module-moptipyapps.tsp.known_optima"]], "moptipyapps.tsp.tour_length module": [[15, "module-moptipyapps.tsp.tour_length"]], "moptipyapps.tsp.tsplib package": [[16, null]], "moptipyapps.ttp package": [[17, null]], "moptipyapps.ttp.errors module": [[17, "module-moptipyapps.ttp.errors"]], "moptipyapps.ttp.game_encoding module": [[17, "module-moptipyapps.ttp.game_encoding"]], "moptipyapps.ttp.game_plan module": [[17, "module-moptipyapps.ttp.game_plan"]], "moptipyapps.ttp.game_plan_space module": [[17, "module-moptipyapps.ttp.game_plan_space"]], "moptipyapps.ttp.instance module": [[17, "module-moptipyapps.ttp.instance"]], "moptipyapps.ttp.plan_length module": [[17, "module-moptipyapps.ttp.plan_length"]], "moptipyapps.ttp.robinx package": [[18, null]], "moptipyapps.version module": [[3, "module-moptipyapps.version"]], "moptipyapps: Applications of Metaheuristic Optimization in Python": [[1, null]]}, "docnames": ["README", "index", "modules", "moptipyapps", "moptipyapps.binpacking2d", "moptipyapps.binpacking2d.encodings", "moptipyapps.binpacking2d.instgen", "moptipyapps.binpacking2d.objectives", "moptipyapps.dynamic_control", "moptipyapps.dynamic_control.controllers", "moptipyapps.dynamic_control.systems", "moptipyapps.order1d", "moptipyapps.qap", "moptipyapps.qap.qaplib", "moptipyapps.tests", "moptipyapps.tsp", "moptipyapps.tsp.tsplib", "moptipyapps.ttp", "moptipyapps.ttp.robinx"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1}, "filenames": ["README.md", "index.rst", "modules.rst", "moptipyapps.rst", "moptipyapps.binpacking2d.rst", "moptipyapps.binpacking2d.encodings.rst", "moptipyapps.binpacking2d.instgen.rst", "moptipyapps.binpacking2d.objectives.rst", "moptipyapps.dynamic_control.rst", "moptipyapps.dynamic_control.controllers.rst", "moptipyapps.dynamic_control.systems.rst", "moptipyapps.order1d.rst", "moptipyapps.qap.rst", "moptipyapps.qap.qaplib.rst", "moptipyapps.tests.rst", "moptipyapps.tsp.rst", "moptipyapps.tsp.tsplib.rst", "moptipyapps.ttp.rst", "moptipyapps.ttp.robinx.rst"], "indexentries": {"a_large (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.A_LARGE", false]], "a_med (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.A_MED", false]], "a_small (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.A_SMALL", false]], "anns() (in module moptipyapps.dynamic_control.controllers.ann)": [[9, "moptipyapps.dynamic_control.controllers.ann.anns", false]], "append_almost_squares_strings() (in module moptipyapps.binpacking2d.make_instances)": [[4, "moptipyapps.binpacking2d.make_instances.append_almost_squares_strings", false]], "asqas (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.ASQAS", false]], "away_streak_max (moptipyapps.ttp.instance.instance attribute)": [[17, "moptipyapps.ttp.instance.Instance.away_streak_max", false]], "away_streak_min (moptipyapps.ttp.instance.instance attribute)": [[17, "moptipyapps.ttp.instance.Instance.away_streak_min", false]], "base_setup() (in module moptipyapps.binpacking2d.experiment)": [[4, "moptipyapps.binpacking2d.experiment.base_setup", false]], "base_setup() (in module moptipyapps.dynamic_control.experiment_raw)": [[8, "moptipyapps.dynamic_control.experiment_raw.base_setup", false]], "base_setup() (in module moptipyapps.dynamic_control.experiment_surrogate)": [[8, "moptipyapps.dynamic_control.experiment_surrogate.base_setup", false]], "begin() (moptipyapps.dynamic_control.model_objective.modelobjective method)": [[8, "moptipyapps.dynamic_control.model_objective.ModelObjective.begin", false]], "beng_1_8 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.BENG_1_8", false]], "beng_9_10 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.BENG_9_10", false]], "bin_bounds (moptipyapps.binpacking2d.packing_result.packingresult attribute)": [[4, "moptipyapps.binpacking2d.packing_result.PackingResult.bin_bounds", false]], "bin_bounds (moptipyapps.binpacking2d.packing_statistics.packingstatistics attribute)": [[4, "moptipyapps.binpacking2d.packing_statistics.PackingStatistics.bin_bounds", false]], "bin_count_and_empty() (in module moptipyapps.binpacking2d.objectives.bin_count_and_empty)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_empty.bin_count_and_empty", false]], "bin_count_and_last_empty() (in module moptipyapps.binpacking2d.objectives.bin_count_and_last_empty)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.bin_count_and_last_empty", false]], "bin_count_and_last_skyline() (in module moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline.bin_count_and_last_skyline", false]], "bin_count_and_last_small() (in module moptipyapps.binpacking2d.objectives.bin_count_and_last_small)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_last_small.bin_count_and_last_small", false]], "bin_count_and_lowest_skyline() (in module moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline.bin_count_and_lowest_skyline", false]], "bin_count_and_small() (in module moptipyapps.binpacking2d.objectives.bin_count_and_small)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_small.bin_count_and_small", false]], "bin_count_name (in module moptipyapps.binpacking2d.objectives.bin_count)": [[7, "moptipyapps.binpacking2d.objectives.bin_count.BIN_COUNT_NAME", false]], "bin_height (in module moptipyapps.binpacking2d.instance)": [[4, "moptipyapps.binpacking2d.instance.BIN_HEIGHT", false]], "bin_height (moptipyapps.binpacking2d.instance.instance attribute)": [[4, "moptipyapps.binpacking2d.instance.Instance.bin_height", false]], "bin_height (moptipyapps.binpacking2d.instgen.instance_space.instancespace attribute)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.bin_height", false]], "bin_height (moptipyapps.binpacking2d.packing_result.packingresult attribute)": [[4, "moptipyapps.binpacking2d.packing_result.PackingResult.bin_height", false]], "bin_height (moptipyapps.binpacking2d.packing_statistics.packingstatistics attribute)": [[4, "moptipyapps.binpacking2d.packing_statistics.PackingStatistics.bin_height", false]], "bin_width (in module moptipyapps.binpacking2d.instance)": [[4, "moptipyapps.binpacking2d.instance.BIN_WIDTH", false]], "bin_width (moptipyapps.binpacking2d.instance.instance attribute)": [[4, "moptipyapps.binpacking2d.instance.Instance.bin_width", false]], "bin_width (moptipyapps.binpacking2d.instgen.instance_space.instancespace attribute)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.bin_width", false]], "bin_width (moptipyapps.binpacking2d.packing_result.packingresult attribute)": [[4, "moptipyapps.binpacking2d.packing_result.PackingResult.bin_width", false]], "bin_width (moptipyapps.binpacking2d.packing_statistics.packingstatistics attribute)": [[4, "moptipyapps.binpacking2d.packing_statistics.PackingStatistics.bin_width", false]], "bincount (class in moptipyapps.binpacking2d.objectives.bin_count)": [[7, "moptipyapps.binpacking2d.objectives.bin_count.BinCount", false]], "bincountandempty (class in moptipyapps.binpacking2d.objectives.bin_count_and_empty)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_empty.BinCountAndEmpty", false]], "bincountandlastempty (class in moptipyapps.binpacking2d.objectives.bin_count_and_last_empty)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.BinCountAndLastEmpty", false]], "bincountandlastskyline (class in moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline.BinCountAndLastSkyline", false]], "bincountandlastsmall (class in moptipyapps.binpacking2d.objectives.bin_count_and_last_small)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_last_small.BinCountAndLastSmall", false]], "bincountandlowestskyline (class in moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline.BinCountAndLowestSkyline", false]], "bincountandsmall (class in moptipyapps.binpacking2d.objectives.bin_count_and_small)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_small.BinCountAndSmall", false]], "binpacking_instances_for_tests() (in module moptipyapps.tests.on_binpacking2d)": [[14, "moptipyapps.tests.on_binpacking2d.binpacking_instances_for_tests", false]], "bks() (moptipyapps.qap.instance.instance method)": [[12, "moptipyapps.qap.instance.Instance.bks", false]], "brkga_bpp_2r (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.BRKGA_BPP_2R", false]], "brkga_bpp_anb (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.BRKGA_BPP_ANB", false]], "build() (moptipyapps.dynamic_control.controllers.codegen.codegenerator method)": [[9, "moptipyapps.dynamic_control.controllers.codegen.CodeGenerator.build", false]], "bye_penalty (moptipyapps.ttp.plan_length.gameplanlength attribute)": [[17, "moptipyapps.ttp.plan_length.GamePlanLength.bye_penalty", false]], "class_10_100 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_10_100", false]], "class_10_20 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_10_20", false]], "class_10_40 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_10_40", false]], "class_10_60 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_10_60", false]], "class_10_80 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_10_80", false]], "class_1_100 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_1_100", false]], "class_1_20 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_1_20", false]], "class_1_40 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_1_40", false]], "class_1_60 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_1_60", false]], "class_1_80 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_1_80", false]], "class_2_100 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_2_100", false]], "class_2_20 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_2_20", false]], "class_2_40 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_2_40", false]], "class_2_60 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_2_60", false]], "class_2_80 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_2_80", false]], "class_3_100 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_3_100", false]], "class_3_20 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_3_20", false]], "class_3_40 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_3_40", false]], "class_3_60 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_3_60", false]], "class_3_80 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_3_80", false]], "class_4_100 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_4_100", false]], "class_4_20 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_4_20", false]], "class_4_40 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_4_40", false]], "class_4_60 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_4_60", false]], "class_4_80 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_4_80", false]], "class_5_100 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_5_100", false]], "class_5_20 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_5_20", false]], "class_5_40 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_5_40", false]], "class_5_60 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_5_60", false]], "class_5_80 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_5_80", false]], "class_6_100 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_6_100", false]], "class_6_20 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_6_20", false]], "class_6_40 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_6_40", false]], "class_6_60 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_6_60", false]], "class_6_80 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_6_80", false]], "class_7_100 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_7_100", false]], "class_7_20 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_7_20", false]], "class_7_40 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_7_40", false]], "class_7_60 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_7_60", false]], "class_7_80 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_7_80", false]], "class_8_100 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_8_100", false]], "class_8_20 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_8_20", false]], "class_8_40 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_8_40", false]], "class_8_60 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_8_60", false]], "class_8_80 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_8_80", false]], "class_9_100 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_9_100", false]], "class_9_20 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_9_20", false]], "class_9_40 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_9_40", false]], "class_9_60 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_9_60", false]], "class_9_80 (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_9_80", false]], "class_and_beng (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.CLASS_AND_BENG", false]], "cmaes() (in module moptipyapps.binpacking2d.instgen.experiment)": [[6, "moptipyapps.binpacking2d.instgen.experiment.cmaes", false]], "cmaes() (in module moptipyapps.dynamic_control.experiment_raw)": [[8, "moptipyapps.dynamic_control.experiment_raw.cmaes", false]], "cmaes_raw() (in module moptipyapps.dynamic_control.experiment_surrogate)": [[8, "moptipyapps.dynamic_control.experiment_surrogate.cmaes_raw", false]], "cmaes_surrogate() (in module moptipyapps.dynamic_control.experiment_surrogate)": [[8, "moptipyapps.dynamic_control.experiment_surrogate.cmaes_surrogate", false]], "codegenerator (class in moptipyapps.dynamic_control.controllers.codegen)": [[9, "moptipyapps.dynamic_control.controllers.codegen.CodeGenerator", false]], "collector() (moptipyapps.dynamic_control.results_log.resultslog method)": [[8, "moptipyapps.dynamic_control.results_log.ResultsLog.collector", false]], "collector() (moptipyapps.dynamic_control.results_plot.resultsplot method)": [[8, "moptipyapps.dynamic_control.results_plot.ResultsPlot.collector", false]], "control_dims (moptipyapps.dynamic_control.controller.controller attribute)": [[8, "moptipyapps.dynamic_control.controller.Controller.control_dims", false]], "control_dims (moptipyapps.dynamic_control.system.system attribute)": [[8, "moptipyapps.dynamic_control.system.System.control_dims", false]], "controller (class in moptipyapps.dynamic_control.controller)": [[8, "moptipyapps.dynamic_control.controller.Controller", false]], "controller (moptipyapps.dynamic_control.instance.instance attribute)": [[8, "moptipyapps.dynamic_control.instance.Instance.controller", false]], "controller() (moptipyapps.dynamic_control.controller.controller method)": [[8, "moptipyapps.dynamic_control.controller.Controller.controller", false]], "copy() (moptipyapps.binpacking2d.instgen.instance_space.instancespace method)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.copy", false]], "copy() (moptipyapps.binpacking2d.packing_space.packingspace method)": [[4, "moptipyapps.binpacking2d.packing_space.PackingSpace.copy", false]], "count_errors() (in module moptipyapps.ttp.errors)": [[17, "moptipyapps.ttp.errors.count_errors", false]], "create() (moptipyapps.binpacking2d.instgen.instance_space.instancespace method)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.create", false]], "create() (moptipyapps.binpacking2d.packing_space.packingspace method)": [[4, "moptipyapps.binpacking2d.packing_space.PackingSpace.create", false]], "create() (moptipyapps.ttp.game_plan_space.gameplanspace method)": [[17, "moptipyapps.ttp.game_plan_space.GamePlanSpace.create", false]], "csvreader (class in moptipyapps.binpacking2d.packing_result)": [[4, "moptipyapps.binpacking2d.packing_result.CsvReader", false]], "csvreader (class in moptipyapps.binpacking2d.packing_statistics)": [[4, "moptipyapps.binpacking2d.packing_statistics.CsvReader", false]], "csvwriter (class in moptipyapps.binpacking2d.packing_result)": [[4, "moptipyapps.binpacking2d.packing_result.CsvWriter", false]], "csvwriter (class in moptipyapps.binpacking2d.packing_statistics)": [[4, "moptipyapps.binpacking2d.packing_statistics.CsvWriter", false]], "cubic() (in module moptipyapps.dynamic_control.controllers.cubic)": [[9, "moptipyapps.dynamic_control.controllers.cubic.cubic", false]], "decode() (moptipyapps.binpacking2d.encodings.ibl_encoding_1.improvedbottomleftencoding1 method)": [[5, "moptipyapps.binpacking2d.encodings.ibl_encoding_1.ImprovedBottomLeftEncoding1.decode", false]], "decode() (moptipyapps.binpacking2d.encodings.ibl_encoding_2.improvedbottomleftencoding2 method)": [[5, "moptipyapps.binpacking2d.encodings.ibl_encoding_2.ImprovedBottomLeftEncoding2.decode", false]], "decode() (moptipyapps.binpacking2d.instgen.inst_decoding.instancedecoder method)": [[6, "moptipyapps.binpacking2d.instgen.inst_decoding.InstanceDecoder.decode", false]], "default_executors (in module moptipyapps.binpacking2d.instgen.hardness)": [[6, "moptipyapps.binpacking2d.instgen.hardness.DEFAULT_EXECUTORS", false]], "default_objectives (in module moptipyapps.binpacking2d.packing_result)": [[4, "moptipyapps.binpacking2d.packing_result.DEFAULT_OBJECTIVES", false]], "default_packing_item_str() (in module moptipyapps.binpacking2d.plot_packing)": [[4, "moptipyapps.binpacking2d.plot_packing.default_packing_item_str", false]], "describe_parameterization() (moptipyapps.dynamic_control.instance.instance method)": [[8, "moptipyapps.dynamic_control.instance.Instance.describe_parameterization", false]], "describe_system() (moptipyapps.dynamic_control.system.system method)": [[8, "moptipyapps.dynamic_control.system.System.describe_system", false]], "describe_system_without_control() (moptipyapps.dynamic_control.system.system method)": [[8, "moptipyapps.dynamic_control.system.System.describe_system_without_control", false]], "diff_from_ode() (in module moptipyapps.dynamic_control.ode)": [[8, "moptipyapps.dynamic_control.ode.diff_from_ode", false]], "distances (moptipyapps.qap.instance.instance attribute)": [[12, "moptipyapps.qap.instance.Instance.distances", false]], "do_log_h (moptipyapps.tsp.fea1p1_revn.tspfea1p1revn attribute)": [[15, "moptipyapps.tsp.fea1p1_revn.TSPFEA1p1revn.do_log_h", false]], "download_2dpacklib_instances() (in module moptipyapps.binpacking2d.make_instances)": [[4, "moptipyapps.binpacking2d.make_instances.download_2dpacklib_instances", false]], "ealgfi (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.EALGFI", false]], "element (class in moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.Element", false]], "encoding (moptipyapps.binpacking2d.instgen.problem.problem attribute)": [[6, "moptipyapps.binpacking2d.instgen.problem.Problem.encoding", false]], "end() (moptipyapps.dynamic_control.model_objective.modelobjective method)": [[8, "moptipyapps.dynamic_control.model_objective.ModelObjective.end", false]], "end_color (in module moptipyapps.dynamic_control.results_plot)": [[8, "moptipyapps.dynamic_control.results_plot.END_COLOR", false]], "end_marker (in module moptipyapps.dynamic_control.results_plot)": [[8, "moptipyapps.dynamic_control.results_plot.END_MARKER", false]], "end_result (moptipyapps.binpacking2d.packing_result.packingresult attribute)": [[4, "moptipyapps.binpacking2d.packing_result.PackingResult.end_result", false]], "end_statistics (moptipyapps.binpacking2d.packing_statistics.packingstatistics attribute)": [[4, "moptipyapps.binpacking2d.packing_statistics.PackingStatistics.end_statistics", false]], "endline() (moptipyapps.dynamic_control.controllers.codegen.codegenerator method)": [[9, "moptipyapps.dynamic_control.controllers.codegen.CodeGenerator.endline", false]], "equations() (moptipyapps.dynamic_control.system.system method)": [[8, "moptipyapps.dynamic_control.system.System.equations", false]], "errors (class in moptipyapps.binpacking2d.instgen.errors)": [[6, "moptipyapps.binpacking2d.instgen.errors.Errors", false]], "errors (class in moptipyapps.ttp.errors)": [[17, "moptipyapps.ttp.errors.Errors", false]], "errors (moptipyapps.binpacking2d.instgen.errors_and_hardness.errorsandhardness attribute)": [[6, "moptipyapps.binpacking2d.instgen.errors_and_hardness.ErrorsAndHardness.errors", false]], "errorsandhardness (class in moptipyapps.binpacking2d.instgen.errors_and_hardness)": [[6, "moptipyapps.binpacking2d.instgen.errors_and_hardness.ErrorsAndHardness", false]], "evaluate() (moptipyapps.binpacking2d.instgen.errors.errors method)": [[6, "moptipyapps.binpacking2d.instgen.errors.Errors.evaluate", false]], "evaluate() (moptipyapps.binpacking2d.instgen.errors_and_hardness.errorsandhardness method)": [[6, "moptipyapps.binpacking2d.instgen.errors_and_hardness.ErrorsAndHardness.evaluate", false]], "evaluate() (moptipyapps.binpacking2d.instgen.hardness.hardness method)": [[6, "moptipyapps.binpacking2d.instgen.hardness.Hardness.evaluate", false]], "evaluate() (moptipyapps.binpacking2d.objectives.bin_count.bincount method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count.BinCount.evaluate", false]], "evaluate() (moptipyapps.binpacking2d.objectives.bin_count_and_empty.bincountandempty method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_empty.BinCountAndEmpty.evaluate", false]], "evaluate() (moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.bincountandlastempty method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.BinCountAndLastEmpty.evaluate", false]], "evaluate() (moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline.bincountandlastskyline method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline.BinCountAndLastSkyline.evaluate", false]], "evaluate() (moptipyapps.binpacking2d.objectives.bin_count_and_last_small.bincountandlastsmall method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_last_small.BinCountAndLastSmall.evaluate", false]], "evaluate() (moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline.bincountandlowestskyline method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline.BinCountAndLowestSkyline.evaluate", false]], "evaluate() (moptipyapps.binpacking2d.objectives.bin_count_and_small.bincountandsmall method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_small.BinCountAndSmall.evaluate", false]], "evaluate() (moptipyapps.dynamic_control.model_objective.modelobjective method)": [[8, "moptipyapps.dynamic_control.model_objective.ModelObjective.evaluate", false]], "evaluate() (moptipyapps.dynamic_control.objective.figureofmerit method)": [[8, "moptipyapps.dynamic_control.objective.FigureOfMerit.evaluate", false]], "evaluate() (moptipyapps.qap.objective.qapobjective method)": [[12, "moptipyapps.qap.objective.QAPObjective.evaluate", false]], "evaluate() (moptipyapps.tsp.tour_length.tourlength method)": [[15, "moptipyapps.tsp.tour_length.TourLength.evaluate", false]], "evaluate() (moptipyapps.ttp.errors.errors method)": [[17, "moptipyapps.ttp.errors.Errors.evaluate", false]], "evaluate() (moptipyapps.ttp.plan_length.gameplanlength method)": [[17, "moptipyapps.ttp.plan_length.GamePlanLength.evaluate", false]], "executors (moptipyapps.binpacking2d.instgen.hardness.hardness attribute)": [[6, "moptipyapps.binpacking2d.instgen.hardness.Hardness.executors", false]], "fancy_logs (moptipyapps.dynamic_control.surrogate_optimizer.surrogateoptimizer attribute)": [[8, "moptipyapps.dynamic_control.surrogate_optimizer.SurrogateOptimizer.fancy_logs", false]], "fea() (in module moptipyapps.binpacking2d.experiment)": [[4, "moptipyapps.binpacking2d.experiment.fea", false]], "fes_for_training (moptipyapps.dynamic_control.surrogate_optimizer.surrogateoptimizer attribute)": [[8, "moptipyapps.dynamic_control.surrogate_optimizer.SurrogateOptimizer.fes_for_training", false]], "fes_for_warmup (moptipyapps.dynamic_control.surrogate_optimizer.surrogateoptimizer attribute)": [[8, "moptipyapps.dynamic_control.surrogate_optimizer.SurrogateOptimizer.fes_for_warmup", false]], "fes_per_model_run (moptipyapps.dynamic_control.surrogate_optimizer.surrogateoptimizer attribute)": [[8, "moptipyapps.dynamic_control.surrogate_optimizer.SurrogateOptimizer.fes_per_model_run", false]], "figureofmerit (class in moptipyapps.dynamic_control.objective)": [[8, "moptipyapps.dynamic_control.objective.FigureOfMerit", false]], "figureofmeritle (class in moptipyapps.dynamic_control.objective)": [[8, "moptipyapps.dynamic_control.objective.FigureOfMeritLE", false]], "flow_power (moptipyapps.order1d.instance.instance attribute)": [[11, "moptipyapps.order1d.instance.Instance.flow_power", false]], "flows (moptipyapps.qap.instance.instance attribute)": [[12, "moptipyapps.qap.instance.Instance.flows", false]], "from_2dpacklib() (moptipyapps.binpacking2d.instance.instance static method)": [[4, "moptipyapps.binpacking2d.instance.Instance.from_2dpacklib", false]], "from_compact_str() (moptipyapps.binpacking2d.instance.instance static method)": [[4, "moptipyapps.binpacking2d.instance.Instance.from_compact_str", false]], "from_csv() (in module moptipyapps.binpacking2d.packing_result)": [[4, "moptipyapps.binpacking2d.packing_result.from_csv", false]], "from_csv() (in module moptipyapps.binpacking2d.packing_statistics)": [[4, "moptipyapps.binpacking2d.packing_statistics.from_csv", false]], "from_file() (moptipyapps.tsp.instance.instance static method)": [[15, "moptipyapps.tsp.instance.Instance.from_file", false]], "from_file() (moptipyapps.ttp.instance.instance static method)": [[17, "moptipyapps.ttp.instance.Instance.from_file", false]], "from_log() (moptipyapps.binpacking2d.packing.packing static method)": [[4, "moptipyapps.binpacking2d.packing.Packing.from_log", false]], "from_logs() (in module moptipyapps.binpacking2d.packing_result)": [[4, "moptipyapps.binpacking2d.packing_result.from_logs", false]], "from_packing_and_end_result() (in module moptipyapps.binpacking2d.packing_result)": [[4, "moptipyapps.binpacking2d.packing_result.from_packing_and_end_result", false]], "from_packing_results() (in module moptipyapps.binpacking2d.packing_statistics)": [[4, "moptipyapps.binpacking2d.packing_statistics.from_packing_results", false]], "from_qaplib_stream() (moptipyapps.qap.instance.instance static method)": [[12, "moptipyapps.qap.instance.Instance.from_qaplib_stream", false]], "from_resource() (moptipyapps.binpacking2d.instance.instance static method)": [[4, "moptipyapps.binpacking2d.instance.Instance.from_resource", false]], "from_resource() (moptipyapps.qap.instance.instance static method)": [[12, "moptipyapps.qap.instance.Instance.from_resource", false]], "from_resource() (moptipyapps.tsp.instance.instance static method)": [[15, "moptipyapps.tsp.instance.Instance.from_resource", false]], "from_resource() (moptipyapps.ttp.instance.instance static method)": [[17, "moptipyapps.ttp.instance.Instance.from_resource", false]], "from_sequence_and_distance() (moptipyapps.order1d.instance.instance static method)": [[11, "moptipyapps.order1d.instance.Instance.from_sequence_and_distance", false]], "from_single_log() (in module moptipyapps.binpacking2d.packing_result)": [[4, "moptipyapps.binpacking2d.packing_result.from_single_log", false]], "from_str() (moptipyapps.binpacking2d.instgen.instance_space.instancespace method)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.from_str", false]], "from_str() (moptipyapps.binpacking2d.packing_space.packingspace method)": [[4, "moptipyapps.binpacking2d.packing_space.PackingSpace.from_str", false]], "from_str() (moptipyapps.order1d.space.orderingspace method)": [[11, "moptipyapps.order1d.space.OrderingSpace.from_str", false]], "from_str() (moptipyapps.ttp.game_plan_space.gameplanspace method)": [[17, "moptipyapps.ttp.game_plan_space.GamePlanSpace.from_str", false]], "game_plan_dtype (moptipyapps.ttp.instance.instance attribute)": [[17, "moptipyapps.ttp.instance.Instance.game_plan_dtype", false]], "game_plan_length() (in module moptipyapps.ttp.plan_length)": [[17, "moptipyapps.ttp.plan_length.game_plan_length", false]], "gameencoding (class in moptipyapps.ttp.game_encoding)": [[17, "moptipyapps.ttp.game_encoding.GameEncoding", false]], "gameplan (class in moptipyapps.ttp.game_plan)": [[17, "moptipyapps.ttp.game_plan.GamePlan", false]], "gameplanlength (class in moptipyapps.ttp.plan_length)": [[17, "moptipyapps.ttp.plan_length.GamePlanLength", false]], "gameplanspace (class in moptipyapps.ttp.game_plan_space)": [[17, "moptipyapps.ttp.game_plan_space.GamePlanSpace", false]], "gamma (moptipyapps.dynamic_control.system.system attribute)": [[8, "moptipyapps.dynamic_control.system.System.gamma", false]], "get_bibtex() (moptipyapps.binpacking2d.bks.element method)": [[4, "moptipyapps.binpacking2d.bks.Element.get_bibtex", false]], "get_column_titles() (moptipyapps.binpacking2d.packing_result.csvwriter method)": [[4, "moptipyapps.binpacking2d.packing_result.CsvWriter.get_column_titles", false]], "get_column_titles() (moptipyapps.binpacking2d.packing_statistics.csvwriter method)": [[4, "moptipyapps.binpacking2d.packing_statistics.CsvWriter.get_column_titles", false]], "get_differentials() (moptipyapps.dynamic_control.objective.figureofmerit method)": [[8, "moptipyapps.dynamic_control.objective.FigureOfMerit.get_differentials", false]], "get_footer_bottom_comments() (moptipyapps.binpacking2d.packing_result.csvwriter method)": [[4, "moptipyapps.binpacking2d.packing_result.CsvWriter.get_footer_bottom_comments", false]], "get_footer_bottom_comments() (moptipyapps.binpacking2d.packing_statistics.csvwriter method)": [[4, "moptipyapps.binpacking2d.packing_statistics.CsvWriter.get_footer_bottom_comments", false]], "get_footer_comments() (moptipyapps.binpacking2d.packing_result.csvwriter method)": [[4, "moptipyapps.binpacking2d.packing_result.CsvWriter.get_footer_comments", false]], "get_footer_comments() (moptipyapps.binpacking2d.packing_statistics.csvwriter method)": [[4, "moptipyapps.binpacking2d.packing_statistics.CsvWriter.get_footer_comments", false]], "get_header_comments() (moptipyapps.binpacking2d.packing_result.csvwriter method)": [[4, "moptipyapps.binpacking2d.packing_result.CsvWriter.get_header_comments", false]], "get_header_comments() (moptipyapps.binpacking2d.packing_statistics.csvwriter method)": [[4, "moptipyapps.binpacking2d.packing_statistics.CsvWriter.get_header_comments", false]], "get_optimal_plan_length_bounds() (moptipyapps.ttp.instance.instance method)": [[17, "moptipyapps.ttp.instance.Instance.get_optimal_plan_length_bounds", false]], "get_related_work() (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.get_related_work", false]], "get_row() (moptipyapps.binpacking2d.packing_result.csvwriter method)": [[4, "moptipyapps.binpacking2d.packing_result.CsvWriter.get_row", false]], "get_row() (moptipyapps.binpacking2d.packing_statistics.csvwriter method)": [[4, "moptipyapps.binpacking2d.packing_statistics.CsvWriter.get_row", false]], "get_standard_item_sequence() (moptipyapps.binpacking2d.instance.instance method)": [[4, "moptipyapps.binpacking2d.instance.Instance.get_standard_item_sequence", false]], "get_x_dim() (moptipyapps.binpacking2d.instgen.inst_decoding.instancedecoder method)": [[6, "moptipyapps.binpacking2d.instgen.inst_decoding.InstanceDecoder.get_x_dim", false]], "grasp_vnd (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.GRASP_VND", false]], "groups_to_instances (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.GROUPS_TO_INSTANCES", false]], "hardness (class in moptipyapps.binpacking2d.instgen.hardness)": [[6, "moptipyapps.binpacking2d.instgen.hardness.Hardness", false]], "hardness (moptipyapps.binpacking2d.instgen.errors_and_hardness.errorsandhardness attribute)": [[6, "moptipyapps.binpacking2d.instgen.errors_and_hardness.ErrorsAndHardness.hardness", false]], "hhano_r (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.HHANO_R", false]], "hhano_sr (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.HHANO_SR", false]], "home_streak_max (moptipyapps.ttp.instance.instance attribute)": [[17, "moptipyapps.ttp.instance.Instance.home_streak_max", false]], "home_streak_min (moptipyapps.ttp.instance.instance attribute)": [[17, "moptipyapps.ttp.instance.Instance.home_streak_min", false]], "horizon (moptipyapps.order1d.instance.instance attribute)": [[11, "moptipyapps.order1d.instance.Instance.horizon", false]], "idx_bin (in module moptipyapps.binpacking2d.packing)": [[4, "moptipyapps.binpacking2d.packing.IDX_BIN", false]], "idx_bottom_y (in module moptipyapps.binpacking2d.packing)": [[4, "moptipyapps.binpacking2d.packing.IDX_BOTTOM_Y", false]], "idx_height (in module moptipyapps.binpacking2d.instance)": [[4, "moptipyapps.binpacking2d.instance.IDX_HEIGHT", false]], "idx_id (in module moptipyapps.binpacking2d.packing)": [[4, "moptipyapps.binpacking2d.packing.IDX_ID", false]], "idx_left_x (in module moptipyapps.binpacking2d.packing)": [[4, "moptipyapps.binpacking2d.packing.IDX_LEFT_X", false]], "idx_repetition (in module moptipyapps.binpacking2d.instance)": [[4, "moptipyapps.binpacking2d.instance.IDX_REPETITION", false]], "idx_right_x (in module moptipyapps.binpacking2d.packing)": [[4, "moptipyapps.binpacking2d.packing.IDX_RIGHT_X", false]], "idx_top_y (in module moptipyapps.binpacking2d.packing)": [[4, "moptipyapps.binpacking2d.packing.IDX_TOP_Y", false]], "idx_width (in module moptipyapps.binpacking2d.instance)": [[4, "moptipyapps.binpacking2d.instance.IDX_WIDTH", false]], "improvedbottomleftencoding1 (class in moptipyapps.binpacking2d.encodings.ibl_encoding_1)": [[5, "moptipyapps.binpacking2d.encodings.ibl_encoding_1.ImprovedBottomLeftEncoding1", false]], "improvedbottomleftencoding2 (class in moptipyapps.binpacking2d.encodings.ibl_encoding_2)": [[5, "moptipyapps.binpacking2d.encodings.ibl_encoding_2.ImprovedBottomLeftEncoding2", false]], "indent() (moptipyapps.dynamic_control.controllers.codegen.codegenerator method)": [[9, "moptipyapps.dynamic_control.controllers.codegen.CodeGenerator.indent", false]], "initialize() (moptipyapps.dynamic_control.objective.figureofmerit method)": [[8, "moptipyapps.dynamic_control.objective.FigureOfMerit.initialize", false]], "initialize() (moptipyapps.dynamic_control.surrogate_optimizer.surrogateoptimizer method)": [[8, "moptipyapps.dynamic_control.surrogate_optimizer.SurrogateOptimizer.initialize", false]], "inner_max_fes (in module moptipyapps.binpacking2d.instgen.experiment)": [[6, "moptipyapps.binpacking2d.instgen.experiment.INNER_MAX_FES", false]], "inner_runs (in module moptipyapps.binpacking2d.instgen.experiment)": [[6, "moptipyapps.binpacking2d.instgen.experiment.INNER_RUNS", false]], "inst_group_sort_key() (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.INST_GROUP_SORT_KEY", false]], "inst_name (moptipyapps.binpacking2d.instgen.instance_space.instancespace attribute)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.inst_name", false]], "instance (class in moptipyapps.binpacking2d.instance)": [[4, "moptipyapps.binpacking2d.instance.Instance", false]], "instance (class in moptipyapps.dynamic_control.instance)": [[8, "moptipyapps.dynamic_control.instance.Instance", false]], "instance (class in moptipyapps.order1d.instance)": [[11, "moptipyapps.order1d.instance.Instance", false]], "instance (class in moptipyapps.qap.instance)": [[12, "moptipyapps.qap.instance.Instance", false]], "instance (class in moptipyapps.tsp.instance)": [[15, "moptipyapps.tsp.instance.Instance", false]], "instance (class in moptipyapps.ttp.instance)": [[17, "moptipyapps.ttp.instance.Instance", false]], "instance (moptipyapps.binpacking2d.packing.packing attribute)": [[4, "moptipyapps.binpacking2d.packing.Packing.instance", false]], "instance (moptipyapps.binpacking2d.packing_space.packingspace attribute)": [[4, "moptipyapps.binpacking2d.packing_space.PackingSpace.instance", false]], "instance (moptipyapps.dynamic_control.objective.figureofmerit attribute)": [[8, "moptipyapps.dynamic_control.objective.FigureOfMerit.instance", false]], "instance (moptipyapps.order1d.space.orderingspace attribute)": [[11, "moptipyapps.order1d.space.OrderingSpace.instance", false]], "instance (moptipyapps.qap.objective.qapobjective attribute)": [[12, "moptipyapps.qap.objective.QAPObjective.instance", false]], "instance (moptipyapps.tsp.fea1p1_revn.tspfea1p1revn attribute)": [[15, "moptipyapps.tsp.fea1p1_revn.TSPFEA1p1revn.instance", false]], "instance (moptipyapps.tsp.tour_length.tourlength attribute)": [[15, "moptipyapps.tsp.tour_length.TourLength.instance", false]], "instance (moptipyapps.ttp.errors.errors attribute)": [[17, "moptipyapps.ttp.errors.Errors.instance", false]], "instance (moptipyapps.ttp.game_encoding.gameencoding attribute)": [[17, "moptipyapps.ttp.game_encoding.GameEncoding.instance", false]], "instance (moptipyapps.ttp.game_plan.gameplan attribute)": [[17, "moptipyapps.ttp.game_plan.GamePlan.instance", false]], "instance (moptipyapps.ttp.game_plan_space.gameplanspace attribute)": [[17, "moptipyapps.ttp.game_plan_space.GamePlanSpace.instance", false]], "instance (moptipyapps.ttp.plan_length.gameplanlength attribute)": [[17, "moptipyapps.ttp.plan_length.GamePlanLength.instance", false]], "instancedecoder (class in moptipyapps.binpacking2d.instgen.inst_decoding)": [[6, "moptipyapps.binpacking2d.instgen.inst_decoding.InstanceDecoder", false]], "instances_resource (in module moptipyapps.binpacking2d.instance)": [[4, "moptipyapps.binpacking2d.instance.INSTANCES_RESOURCE", false]], "instances_to_groups (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.INSTANCES_TO_GROUPS", false]], "instancespace (class in moptipyapps.binpacking2d.instgen.instance_space)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace", false]], "interesting_point_objective() (in module moptipyapps.dynamic_control.starting_points)": [[8, "moptipyapps.dynamic_control.starting_points.interesting_point_objective", false]], "interesting_point_transform() (in module moptipyapps.dynamic_control.starting_points)": [[8, "moptipyapps.dynamic_control.starting_points.interesting_point_transform", false]], "internal_sep (in module moptipyapps.binpacking2d.instance)": [[4, "moptipyapps.binpacking2d.instance.INTERNAL_SEP", false]], "is_always_integer() (moptipyapps.binpacking2d.instgen.errors.errors method)": [[6, "moptipyapps.binpacking2d.instgen.errors.Errors.is_always_integer", false]], "is_always_integer() (moptipyapps.binpacking2d.instgen.errors_and_hardness.errorsandhardness method)": [[6, "moptipyapps.binpacking2d.instgen.errors_and_hardness.ErrorsAndHardness.is_always_integer", false]], "is_always_integer() (moptipyapps.binpacking2d.instgen.hardness.hardness method)": [[6, "moptipyapps.binpacking2d.instgen.hardness.Hardness.is_always_integer", false]], "is_always_integer() (moptipyapps.binpacking2d.objectives.bin_count.bincount method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count.BinCount.is_always_integer", false]], "is_always_integer() (moptipyapps.ttp.errors.errors method)": [[17, "moptipyapps.ttp.errors.Errors.is_always_integer", false]], "is_always_integer() (moptipyapps.ttp.plan_length.gameplanlength method)": [[17, "moptipyapps.ttp.plan_length.GamePlanLength.is_always_integer", false]], "is_equal() (moptipyapps.binpacking2d.instgen.instance_space.instancespace method)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.is_equal", false]], "is_equal() (moptipyapps.binpacking2d.packing_space.packingspace method)": [[4, "moptipyapps.binpacking2d.packing_space.PackingSpace.is_equal", false]], "is_equal() (moptipyapps.ttp.game_plan_space.gameplanspace method)": [[17, "moptipyapps.ttp.game_plan_space.GamePlanSpace.is_equal", false]], "is_symmetric (moptipyapps.tsp.instance.instance attribute)": [[15, "moptipyapps.tsp.instance.Instance.is_symmetric", false]], "item_height_max (moptipyapps.binpacking2d.instgen.instance_space.instancespace attribute)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.item_height_max", false]], "item_height_min (moptipyapps.binpacking2d.instgen.instance_space.instancespace attribute)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.item_height_min", false]], "item_width_max (moptipyapps.binpacking2d.instgen.instance_space.instancespace attribute)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.item_width_max", false]], "item_width_min (moptipyapps.binpacking2d.instgen.instance_space.instancespace attribute)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.item_width_min", false]], "j_from_ode() (in module moptipyapps.dynamic_control.ode)": [[8, "moptipyapps.dynamic_control.ode.j_from_ode", false]], "join_instances_to_compact() (in module moptipyapps.binpacking2d.make_instances)": [[4, "moptipyapps.binpacking2d.make_instances.join_instances_to_compact", false]], "key_bin_height (in module moptipyapps.binpacking2d.packing_result)": [[4, "moptipyapps.binpacking2d.packing_result.KEY_BIN_HEIGHT", false]], "key_bin_width (in module moptipyapps.binpacking2d.packing_result)": [[4, "moptipyapps.binpacking2d.packing_result.KEY_BIN_WIDTH", false]], "key_n_different_items (in module moptipyapps.binpacking2d.packing_result)": [[4, "moptipyapps.binpacking2d.packing_result.KEY_N_DIFFERENT_ITEMS", false]], "key_n_items (in module moptipyapps.binpacking2d.packing_result)": [[4, "moptipyapps.binpacking2d.packing_result.KEY_N_ITEMS", false]], "linear() (in module moptipyapps.dynamic_control.controllers.linear)": [[9, "moptipyapps.dynamic_control.controllers.linear.linear", false]], "list_resource_tours() (in module moptipyapps.tsp.known_optima)": [[15, "moptipyapps.tsp.known_optima.list_resource_tours", false]], "list_resources() (moptipyapps.binpacking2d.instance.instance static method)": [[4, "moptipyapps.binpacking2d.instance.Instance.list_resources", false]], "list_resources() (moptipyapps.qap.instance.instance static method)": [[12, "moptipyapps.qap.instance.Instance.list_resources", false]], "list_resources() (moptipyapps.tsp.instance.instance static method)": [[15, "moptipyapps.tsp.instance.Instance.list_resources", false]], "list_resources() (moptipyapps.ttp.instance.instance static method)": [[17, "moptipyapps.ttp.instance.Instance.list_resources", false]], "list_resources_groups() (moptipyapps.binpacking2d.instance.instance static method)": [[4, "moptipyapps.binpacking2d.instance.Instance.list_resources_groups", false]], "log_parameters_to() (moptipyapps.binpacking2d.encodings.ibl_encoding_1.improvedbottomleftencoding1 method)": [[5, "moptipyapps.binpacking2d.encodings.ibl_encoding_1.ImprovedBottomLeftEncoding1.log_parameters_to", false]], "log_parameters_to() (moptipyapps.binpacking2d.encodings.ibl_encoding_2.improvedbottomleftencoding2 method)": [[5, "moptipyapps.binpacking2d.encodings.ibl_encoding_2.ImprovedBottomLeftEncoding2.log_parameters_to", false]], "log_parameters_to() (moptipyapps.binpacking2d.instance.instance method)": [[4, "moptipyapps.binpacking2d.instance.Instance.log_parameters_to", false]], "log_parameters_to() (moptipyapps.binpacking2d.instgen.errors.errors method)": [[6, "moptipyapps.binpacking2d.instgen.errors.Errors.log_parameters_to", false]], "log_parameters_to() (moptipyapps.binpacking2d.instgen.errors_and_hardness.errorsandhardness method)": [[6, "moptipyapps.binpacking2d.instgen.errors_and_hardness.ErrorsAndHardness.log_parameters_to", false]], "log_parameters_to() (moptipyapps.binpacking2d.instgen.hardness.hardness method)": [[6, "moptipyapps.binpacking2d.instgen.hardness.Hardness.log_parameters_to", false]], "log_parameters_to() (moptipyapps.binpacking2d.instgen.instance_space.instancespace method)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.log_parameters_to", false]], "log_parameters_to() (moptipyapps.binpacking2d.packing_space.packingspace method)": [[4, "moptipyapps.binpacking2d.packing_space.PackingSpace.log_parameters_to", false]], "log_parameters_to() (moptipyapps.dynamic_control.controller.controller method)": [[8, "moptipyapps.dynamic_control.controller.Controller.log_parameters_to", false]], "log_parameters_to() (moptipyapps.dynamic_control.instance.instance method)": [[8, "moptipyapps.dynamic_control.instance.Instance.log_parameters_to", false]], "log_parameters_to() (moptipyapps.dynamic_control.model_objective.modelobjective method)": [[8, "moptipyapps.dynamic_control.model_objective.ModelObjective.log_parameters_to", false]], "log_parameters_to() (moptipyapps.dynamic_control.objective.figureofmerit method)": [[8, "moptipyapps.dynamic_control.objective.FigureOfMerit.log_parameters_to", false]], "log_parameters_to() (moptipyapps.dynamic_control.surrogate_optimizer.surrogateoptimizer method)": [[8, "moptipyapps.dynamic_control.surrogate_optimizer.SurrogateOptimizer.log_parameters_to", false]], "log_parameters_to() (moptipyapps.dynamic_control.system.system method)": [[8, "moptipyapps.dynamic_control.system.System.log_parameters_to", false]], "log_parameters_to() (moptipyapps.dynamic_control.system_model.systemmodel method)": [[8, "moptipyapps.dynamic_control.system_model.SystemModel.log_parameters_to", false]], "log_parameters_to() (moptipyapps.order1d.instance.instance method)": [[11, "moptipyapps.order1d.instance.Instance.log_parameters_to", false]], "log_parameters_to() (moptipyapps.qap.instance.instance method)": [[12, "moptipyapps.qap.instance.Instance.log_parameters_to", false]], "log_parameters_to() (moptipyapps.qap.objective.qapobjective method)": [[12, "moptipyapps.qap.objective.QAPObjective.log_parameters_to", false]], "log_parameters_to() (moptipyapps.tsp.ea1p1_revn.tspea1p1revn method)": [[15, "moptipyapps.tsp.ea1p1_revn.TSPEA1p1revn.log_parameters_to", false]], "log_parameters_to() (moptipyapps.tsp.fea1p1_revn.tspfea1p1revn method)": [[15, "moptipyapps.tsp.fea1p1_revn.TSPFEA1p1revn.log_parameters_to", false]], "log_parameters_to() (moptipyapps.tsp.instance.instance method)": [[15, "moptipyapps.tsp.instance.Instance.log_parameters_to", false]], "log_parameters_to() (moptipyapps.tsp.tour_length.tourlength method)": [[15, "moptipyapps.tsp.tour_length.TourLength.log_parameters_to", false]], "log_parameters_to() (moptipyapps.ttp.game_plan_space.gameplanspace method)": [[17, "moptipyapps.ttp.game_plan_space.GamePlanSpace.log_parameters_to", false]], "log_parameters_to() (moptipyapps.ttp.instance.instance method)": [[17, "moptipyapps.ttp.instance.Instance.log_parameters_to", false]], "log_parameters_to() (moptipyapps.ttp.plan_length.gameplanlength method)": [[17, "moptipyapps.ttp.plan_length.GamePlanLength.log_parameters_to", false]], "lorenz_111 (in module moptipyapps.dynamic_control.systems.lorenz)": [[10, "moptipyapps.dynamic_control.systems.lorenz.LORENZ_111", false]], "lorenz_4 (in module moptipyapps.dynamic_control.systems.lorenz)": [[10, "moptipyapps.dynamic_control.systems.lorenz.LORENZ_4", false]], "lower_bound (moptipyapps.qap.instance.instance attribute)": [[12, "moptipyapps.qap.instance.Instance.lower_bound", false]], "lower_bound() (moptipyapps.binpacking2d.instgen.errors.errors method)": [[6, "moptipyapps.binpacking2d.instgen.errors.Errors.lower_bound", false]], "lower_bound() (moptipyapps.binpacking2d.instgen.errors_and_hardness.errorsandhardness method)": [[6, "moptipyapps.binpacking2d.instgen.errors_and_hardness.ErrorsAndHardness.lower_bound", false]], "lower_bound() (moptipyapps.binpacking2d.instgen.hardness.hardness method)": [[6, "moptipyapps.binpacking2d.instgen.hardness.Hardness.lower_bound", false]], "lower_bound() (moptipyapps.binpacking2d.objectives.bin_count.bincount method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count.BinCount.lower_bound", false]], "lower_bound() (moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.bincountandlastempty method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.BinCountAndLastEmpty.lower_bound", false]], "lower_bound() (moptipyapps.binpacking2d.objectives.bin_count_and_last_small.bincountandlastsmall method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_last_small.BinCountAndLastSmall.lower_bound", false]], "lower_bound() (moptipyapps.dynamic_control.model_objective.modelobjective method)": [[8, "moptipyapps.dynamic_control.model_objective.ModelObjective.lower_bound", false]], "lower_bound() (moptipyapps.dynamic_control.objective.figureofmerit method)": [[8, "moptipyapps.dynamic_control.objective.FigureOfMerit.lower_bound", false]], "lower_bound() (moptipyapps.qap.objective.qapobjective method)": [[12, "moptipyapps.qap.objective.QAPObjective.lower_bound", false]], "lower_bound() (moptipyapps.tsp.tour_length.tourlength method)": [[15, "moptipyapps.tsp.tour_length.TourLength.lower_bound", false]], "lower_bound() (moptipyapps.ttp.errors.errors method)": [[17, "moptipyapps.ttp.errors.Errors.lower_bound", false]], "lower_bound() (moptipyapps.ttp.plan_length.gameplanlength method)": [[17, "moptipyapps.ttp.plan_length.GamePlanLength.lower_bound", false]], "lower_bound_bins (moptipyapps.binpacking2d.instance.instance attribute)": [[4, "moptipyapps.binpacking2d.instance.Instance.lower_bound_bins", false]], "lower_bounds_bin_count (in module moptipyapps.binpacking2d.packing_result)": [[4, "moptipyapps.binpacking2d.packing_result.LOWER_BOUNDS_BIN_COUNT", false]], "make_2dpacklib_resource() (in module moptipyapps.binpacking2d.make_instances)": [[4, "moptipyapps.binpacking2d.make_instances.make_2dpacklib_resource", false]], "make_3_couple_oscillators() (in module moptipyapps.dynamic_control.systems.three_coupled_oscillators)": [[10, "moptipyapps.dynamic_control.systems.three_coupled_oscillators.make_3_couple_oscillators", false]], "make_ann() (in module moptipyapps.dynamic_control.controllers.ann)": [[9, "moptipyapps.dynamic_control.controllers.ann.make_ann", false]], "make_comparison_table() (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.make_comparison_table", false]], "make_comparison_table_data() (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.make_comparison_table_data", false]], "make_instances() (in module moptipyapps.dynamic_control.experiment_raw)": [[8, "moptipyapps.dynamic_control.experiment_raw.make_instances", false]], "make_instances() (in module moptipyapps.dynamic_control.experiment_surrogate)": [[8, "moptipyapps.dynamic_control.experiment_surrogate.make_instances", false]], "make_interesting_starting_points() (in module moptipyapps.dynamic_control.starting_points)": [[8, "moptipyapps.dynamic_control.starting_points.make_interesting_starting_points", false]], "make_lorenz() (in module moptipyapps.dynamic_control.systems.lorenz)": [[10, "moptipyapps.dynamic_control.systems.lorenz.make_lorenz", false]], "make_packing_invalid() (in module moptipyapps.tests.on_binpacking2d)": [[14, "moptipyapps.tests.on_binpacking2d.make_packing_invalid", false]], "make_packing_valid() (in module moptipyapps.tests.on_binpacking2d)": [[14, "moptipyapps.tests.on_binpacking2d.make_packing_valid", false]], "make_stuart_landau() (in module moptipyapps.dynamic_control.systems.stuart_landau)": [[10, "moptipyapps.dynamic_control.systems.stuart_landau.make_stuart_landau", false]], "make_tour_invalid() (in module moptipyapps.tests.on_tsp)": [[14, "moptipyapps.tests.on_tsp.make_tour_invalid", false]], "make_tour_valid() (in module moptipyapps.tests.on_tsp)": [[14, "moptipyapps.tests.on_tsp.make_tour_valid", false]], "map_games() (in module moptipyapps.ttp.game_encoding)": [[17, "moptipyapps.ttp.game_encoding.map_games", false]], "max_fes (in module moptipyapps.binpacking2d.experiment)": [[4, "moptipyapps.binpacking2d.experiment.MAX_FES", false]], "max_fes (in module moptipyapps.binpacking2d.instgen.experiment)": [[6, "moptipyapps.binpacking2d.instgen.experiment.MAX_FES", false]], "max_fes (in module moptipyapps.dynamic_control.experiment_surrogate)": [[8, "moptipyapps.dynamic_control.experiment_surrogate.MAX_FES", false]], "max_fes (moptipyapps.binpacking2d.instgen.hardness.hardness attribute)": [[6, "moptipyapps.binpacking2d.instgen.hardness.Hardness.max_fes", false]], "min_anns() (in module moptipyapps.dynamic_control.controllers.min_ann)": [[9, "moptipyapps.dynamic_control.controllers.min_ann.min_anns", false]], "min_bins (moptipyapps.binpacking2d.instgen.instance_space.instancespace attribute)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.min_bins", false]], "model (moptipyapps.dynamic_control.system_model.systemmodel attribute)": [[8, "moptipyapps.dynamic_control.system_model.SystemModel.model", false]], "modelobjective (class in moptipyapps.dynamic_control.model_objective)": [[8, "moptipyapps.dynamic_control.model_objective.ModelObjective", false]], "module": [[3, "module-moptipyapps", false], [3, "module-moptipyapps.shared", false], [3, "module-moptipyapps.version", false], [4, "module-moptipyapps.binpacking2d", false], [4, "module-moptipyapps.binpacking2d.bks", false], [4, "module-moptipyapps.binpacking2d.experiment", false], [4, "module-moptipyapps.binpacking2d.instance", false], [4, "module-moptipyapps.binpacking2d.make_instances", false], [4, "module-moptipyapps.binpacking2d.packing", false], [4, "module-moptipyapps.binpacking2d.packing_result", false], [4, "module-moptipyapps.binpacking2d.packing_space", false], [4, "module-moptipyapps.binpacking2d.packing_statistics", false], [4, "module-moptipyapps.binpacking2d.plot_packing", false], [5, "module-moptipyapps.binpacking2d.encodings", false], [5, "module-moptipyapps.binpacking2d.encodings.ibl_encoding_1", false], [5, "module-moptipyapps.binpacking2d.encodings.ibl_encoding_2", false], [6, "module-moptipyapps.binpacking2d.instgen", false], [6, "module-moptipyapps.binpacking2d.instgen.errors", false], [6, "module-moptipyapps.binpacking2d.instgen.errors_and_hardness", false], [6, "module-moptipyapps.binpacking2d.instgen.experiment", false], [6, "module-moptipyapps.binpacking2d.instgen.hardness", false], [6, "module-moptipyapps.binpacking2d.instgen.inst_decoding", false], [6, "module-moptipyapps.binpacking2d.instgen.instance_space", false], [6, "module-moptipyapps.binpacking2d.instgen.problem", false], [7, "module-moptipyapps.binpacking2d.objectives", false], [7, "module-moptipyapps.binpacking2d.objectives.bin_count", false], [7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_empty", false], [7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_last_empty", false], [7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline", false], [7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_last_small", false], [7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline", false], [7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_small", false], [8, "module-moptipyapps.dynamic_control", false], [8, "module-moptipyapps.dynamic_control.controller", false], [8, "module-moptipyapps.dynamic_control.experiment_raw", false], [8, "module-moptipyapps.dynamic_control.experiment_surrogate", false], [8, "module-moptipyapps.dynamic_control.instance", false], [8, "module-moptipyapps.dynamic_control.model_objective", false], [8, "module-moptipyapps.dynamic_control.objective", false], [8, "module-moptipyapps.dynamic_control.ode", false], [8, "module-moptipyapps.dynamic_control.results_log", false], [8, "module-moptipyapps.dynamic_control.results_plot", false], [8, "module-moptipyapps.dynamic_control.starting_points", false], [8, "module-moptipyapps.dynamic_control.surrogate_optimizer", false], [8, "module-moptipyapps.dynamic_control.system", false], [8, "module-moptipyapps.dynamic_control.system_model", false], [9, "module-moptipyapps.dynamic_control.controllers", false], [9, "module-moptipyapps.dynamic_control.controllers.ann", false], [9, "module-moptipyapps.dynamic_control.controllers.codegen", false], [9, "module-moptipyapps.dynamic_control.controllers.cubic", false], [9, "module-moptipyapps.dynamic_control.controllers.linear", false], [9, "module-moptipyapps.dynamic_control.controllers.min_ann", false], [9, "module-moptipyapps.dynamic_control.controllers.partially_linear", false], [9, "module-moptipyapps.dynamic_control.controllers.peaks", false], [9, "module-moptipyapps.dynamic_control.controllers.predefined", false], [9, "module-moptipyapps.dynamic_control.controllers.quadratic", false], [10, "module-moptipyapps.dynamic_control.systems", false], [10, "module-moptipyapps.dynamic_control.systems.lorenz", false], [10, "module-moptipyapps.dynamic_control.systems.stuart_landau", false], [10, "module-moptipyapps.dynamic_control.systems.three_coupled_oscillators", false], [11, "module-moptipyapps.order1d", false], [11, "module-moptipyapps.order1d.distances", false], [11, "module-moptipyapps.order1d.instance", false], [11, "module-moptipyapps.order1d.space", false], [12, "module-moptipyapps.qap", false], [12, "module-moptipyapps.qap.instance", false], [12, "module-moptipyapps.qap.objective", false], [13, "module-moptipyapps.qap.qaplib", false], [14, "module-moptipyapps.tests", false], [14, "module-moptipyapps.tests.on_binpacking2d", false], [14, "module-moptipyapps.tests.on_tsp", false], [15, "module-moptipyapps.tsp", false], [15, "module-moptipyapps.tsp.ea1p1_revn", false], [15, "module-moptipyapps.tsp.fea1p1_revn", false], [15, "module-moptipyapps.tsp.instance", false], [15, "module-moptipyapps.tsp.known_optima", false], [15, "module-moptipyapps.tsp.tour_length", false], [16, "module-moptipyapps.tsp.tsplib", false], [17, "module-moptipyapps.ttp", false], [17, "module-moptipyapps.ttp.errors", false], [17, "module-moptipyapps.ttp.game_encoding", false], [17, "module-moptipyapps.ttp.game_plan", false], [17, "module-moptipyapps.ttp.game_plan_space", false], [17, "module-moptipyapps.ttp.instance", false], [17, "module-moptipyapps.ttp.plan_length", false], [18, "module-moptipyapps.ttp.robinx", false]], "moptipyapps": [[3, "module-moptipyapps", false]], "moptipyapps.binpacking2d": [[4, "module-moptipyapps.binpacking2d", false]], "moptipyapps.binpacking2d.bks": [[4, "module-moptipyapps.binpacking2d.bks", false]], "moptipyapps.binpacking2d.encodings": [[5, "module-moptipyapps.binpacking2d.encodings", false]], "moptipyapps.binpacking2d.encodings.ibl_encoding_1": [[5, "module-moptipyapps.binpacking2d.encodings.ibl_encoding_1", false]], "moptipyapps.binpacking2d.encodings.ibl_encoding_2": [[5, "module-moptipyapps.binpacking2d.encodings.ibl_encoding_2", false]], "moptipyapps.binpacking2d.experiment": [[4, "module-moptipyapps.binpacking2d.experiment", false]], "moptipyapps.binpacking2d.instance": [[4, "module-moptipyapps.binpacking2d.instance", false]], "moptipyapps.binpacking2d.instgen": [[6, "module-moptipyapps.binpacking2d.instgen", false]], "moptipyapps.binpacking2d.instgen.errors": [[6, "module-moptipyapps.binpacking2d.instgen.errors", false]], "moptipyapps.binpacking2d.instgen.errors_and_hardness": [[6, "module-moptipyapps.binpacking2d.instgen.errors_and_hardness", false]], "moptipyapps.binpacking2d.instgen.experiment": [[6, "module-moptipyapps.binpacking2d.instgen.experiment", false]], "moptipyapps.binpacking2d.instgen.hardness": [[6, "module-moptipyapps.binpacking2d.instgen.hardness", false]], "moptipyapps.binpacking2d.instgen.inst_decoding": [[6, "module-moptipyapps.binpacking2d.instgen.inst_decoding", false]], "moptipyapps.binpacking2d.instgen.instance_space": [[6, "module-moptipyapps.binpacking2d.instgen.instance_space", false]], "moptipyapps.binpacking2d.instgen.problem": [[6, "module-moptipyapps.binpacking2d.instgen.problem", false]], "moptipyapps.binpacking2d.make_instances": [[4, "module-moptipyapps.binpacking2d.make_instances", false]], "moptipyapps.binpacking2d.objectives": [[7, "module-moptipyapps.binpacking2d.objectives", false]], "moptipyapps.binpacking2d.objectives.bin_count": [[7, "module-moptipyapps.binpacking2d.objectives.bin_count", false]], "moptipyapps.binpacking2d.objectives.bin_count_and_empty": [[7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_empty", false]], "moptipyapps.binpacking2d.objectives.bin_count_and_last_empty": [[7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_last_empty", false]], "moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline": [[7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline", false]], "moptipyapps.binpacking2d.objectives.bin_count_and_last_small": [[7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_last_small", false]], "moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline": [[7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline", false]], "moptipyapps.binpacking2d.objectives.bin_count_and_small": [[7, "module-moptipyapps.binpacking2d.objectives.bin_count_and_small", false]], "moptipyapps.binpacking2d.packing": [[4, "module-moptipyapps.binpacking2d.packing", false]], "moptipyapps.binpacking2d.packing_result": [[4, "module-moptipyapps.binpacking2d.packing_result", false]], "moptipyapps.binpacking2d.packing_space": [[4, "module-moptipyapps.binpacking2d.packing_space", false]], "moptipyapps.binpacking2d.packing_statistics": [[4, "module-moptipyapps.binpacking2d.packing_statistics", false]], "moptipyapps.binpacking2d.plot_packing": [[4, "module-moptipyapps.binpacking2d.plot_packing", false]], "moptipyapps.dynamic_control": [[8, "module-moptipyapps.dynamic_control", false]], "moptipyapps.dynamic_control.controller": [[8, "module-moptipyapps.dynamic_control.controller", false]], "moptipyapps.dynamic_control.controllers": [[9, "module-moptipyapps.dynamic_control.controllers", false]], "moptipyapps.dynamic_control.controllers.ann": [[9, "module-moptipyapps.dynamic_control.controllers.ann", false]], "moptipyapps.dynamic_control.controllers.codegen": [[9, "module-moptipyapps.dynamic_control.controllers.codegen", false]], "moptipyapps.dynamic_control.controllers.cubic": [[9, "module-moptipyapps.dynamic_control.controllers.cubic", false]], "moptipyapps.dynamic_control.controllers.linear": [[9, "module-moptipyapps.dynamic_control.controllers.linear", false]], "moptipyapps.dynamic_control.controllers.min_ann": [[9, "module-moptipyapps.dynamic_control.controllers.min_ann", false]], "moptipyapps.dynamic_control.controllers.partially_linear": [[9, "module-moptipyapps.dynamic_control.controllers.partially_linear", false]], "moptipyapps.dynamic_control.controllers.peaks": [[9, "module-moptipyapps.dynamic_control.controllers.peaks", false]], "moptipyapps.dynamic_control.controllers.predefined": [[9, "module-moptipyapps.dynamic_control.controllers.predefined", false]], "moptipyapps.dynamic_control.controllers.quadratic": [[9, "module-moptipyapps.dynamic_control.controllers.quadratic", false]], "moptipyapps.dynamic_control.experiment_raw": [[8, "module-moptipyapps.dynamic_control.experiment_raw", false]], "moptipyapps.dynamic_control.experiment_surrogate": [[8, "module-moptipyapps.dynamic_control.experiment_surrogate", false]], "moptipyapps.dynamic_control.instance": [[8, "module-moptipyapps.dynamic_control.instance", false]], "moptipyapps.dynamic_control.model_objective": [[8, "module-moptipyapps.dynamic_control.model_objective", false]], "moptipyapps.dynamic_control.objective": [[8, "module-moptipyapps.dynamic_control.objective", false]], "moptipyapps.dynamic_control.ode": [[8, "module-moptipyapps.dynamic_control.ode", false]], "moptipyapps.dynamic_control.results_log": [[8, "module-moptipyapps.dynamic_control.results_log", false]], "moptipyapps.dynamic_control.results_plot": [[8, "module-moptipyapps.dynamic_control.results_plot", false]], "moptipyapps.dynamic_control.starting_points": [[8, "module-moptipyapps.dynamic_control.starting_points", false]], "moptipyapps.dynamic_control.surrogate_optimizer": [[8, "module-moptipyapps.dynamic_control.surrogate_optimizer", false]], "moptipyapps.dynamic_control.system": [[8, "module-moptipyapps.dynamic_control.system", false]], "moptipyapps.dynamic_control.system_model": [[8, "module-moptipyapps.dynamic_control.system_model", false]], "moptipyapps.dynamic_control.systems": [[10, "module-moptipyapps.dynamic_control.systems", false]], "moptipyapps.dynamic_control.systems.lorenz": [[10, "module-moptipyapps.dynamic_control.systems.lorenz", false]], "moptipyapps.dynamic_control.systems.stuart_landau": [[10, "module-moptipyapps.dynamic_control.systems.stuart_landau", false]], "moptipyapps.dynamic_control.systems.three_coupled_oscillators": [[10, "module-moptipyapps.dynamic_control.systems.three_coupled_oscillators", false]], "moptipyapps.order1d": [[11, "module-moptipyapps.order1d", false]], "moptipyapps.order1d.distances": [[11, "module-moptipyapps.order1d.distances", false]], "moptipyapps.order1d.instance": [[11, "module-moptipyapps.order1d.instance", false]], "moptipyapps.order1d.space": [[11, "module-moptipyapps.order1d.space", false]], "moptipyapps.qap": [[12, "module-moptipyapps.qap", false]], "moptipyapps.qap.instance": [[12, "module-moptipyapps.qap.instance", false]], "moptipyapps.qap.objective": [[12, "module-moptipyapps.qap.objective", false]], "moptipyapps.qap.qaplib": [[13, "module-moptipyapps.qap.qaplib", false]], "moptipyapps.shared": [[3, "module-moptipyapps.shared", false]], "moptipyapps.tests": [[14, "module-moptipyapps.tests", false]], "moptipyapps.tests.on_binpacking2d": [[14, "module-moptipyapps.tests.on_binpacking2d", false]], "moptipyapps.tests.on_tsp": [[14, "module-moptipyapps.tests.on_tsp", false]], "moptipyapps.tsp": [[15, "module-moptipyapps.tsp", false]], "moptipyapps.tsp.ea1p1_revn": [[15, "module-moptipyapps.tsp.ea1p1_revn", false]], "moptipyapps.tsp.fea1p1_revn": [[15, "module-moptipyapps.tsp.fea1p1_revn", false]], "moptipyapps.tsp.instance": [[15, "module-moptipyapps.tsp.instance", false]], "moptipyapps.tsp.known_optima": [[15, "module-moptipyapps.tsp.known_optima", false]], "moptipyapps.tsp.tour_length": [[15, "module-moptipyapps.tsp.tour_length", false]], "moptipyapps.tsp.tsplib": [[16, "module-moptipyapps.tsp.tsplib", false]], "moptipyapps.ttp": [[17, "module-moptipyapps.ttp", false]], "moptipyapps.ttp.errors": [[17, "module-moptipyapps.ttp.errors", false]], "moptipyapps.ttp.game_encoding": [[17, "module-moptipyapps.ttp.game_encoding", false]], "moptipyapps.ttp.game_plan": [[17, "module-moptipyapps.ttp.game_plan", false]], "moptipyapps.ttp.game_plan_space": [[17, "module-moptipyapps.ttp.game_plan_space", false]], "moptipyapps.ttp.instance": [[17, "module-moptipyapps.ttp.instance", false]], "moptipyapps.ttp.plan_length": [[17, "module-moptipyapps.ttp.plan_length", false]], "moptipyapps.ttp.robinx": [[18, "module-moptipyapps.ttp.robinx", false]], "moptipyapps.version": [[3, "module-moptipyapps.version", false]], "moptipyapps_argparser() (in module moptipyapps.shared)": [[3, "moptipyapps.shared.moptipyapps_argparser", false]], "motipyapps_footer_bottom_comments() (in module moptipyapps.shared)": [[3, "moptipyapps.shared.motipyapps_footer_bottom_comments", false]], "ms_for_training (moptipyapps.dynamic_control.surrogate_optimizer.surrogateoptimizer attribute)": [[8, "moptipyapps.dynamic_control.surrogate_optimizer.SurrogateOptimizer.ms_for_training", false]], "ms_per_model_run (moptipyapps.dynamic_control.surrogate_optimizer.surrogateoptimizer attribute)": [[8, "moptipyapps.dynamic_control.surrogate_optimizer.SurrogateOptimizer.ms_per_model_run", false]], "multi_run_ode() (in module moptipyapps.dynamic_control.ode)": [[8, "moptipyapps.dynamic_control.ode.multi_run_ode", false]], "mxga (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.MXGA", false]], "n (moptipyapps.qap.instance.instance attribute)": [[12, "moptipyapps.qap.instance.Instance.n", false]], "n_bins (moptipyapps.binpacking2d.packing.packing attribute)": [[4, "moptipyapps.binpacking2d.packing.Packing.n_bins", false]], "n_cities (moptipyapps.tsp.instance.instance attribute)": [[15, "moptipyapps.tsp.instance.Instance.n_cities", false]], "n_different_items (in module moptipyapps.binpacking2d.instance)": [[4, "moptipyapps.binpacking2d.instance.N_DIFFERENT_ITEMS", false]], "n_different_items (moptipyapps.binpacking2d.instance.instance attribute)": [[4, "moptipyapps.binpacking2d.instance.Instance.n_different_items", false]], "n_different_items (moptipyapps.binpacking2d.instgen.instance_space.instancespace attribute)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.n_different_items", false]], "n_different_items (moptipyapps.binpacking2d.packing_result.packingresult attribute)": [[4, "moptipyapps.binpacking2d.packing_result.PackingResult.n_different_items", false]], "n_different_items (moptipyapps.binpacking2d.packing_statistics.packingstatistics attribute)": [[4, "moptipyapps.binpacking2d.packing_statistics.PackingStatistics.n_different_items", false]], "n_items (in module moptipyapps.binpacking2d.instance)": [[4, "moptipyapps.binpacking2d.instance.N_ITEMS", false]], "n_items (moptipyapps.binpacking2d.instance.instance attribute)": [[4, "moptipyapps.binpacking2d.instance.Instance.n_items", false]], "n_items (moptipyapps.binpacking2d.instgen.instance_space.instancespace attribute)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.n_items", false]], "n_items (moptipyapps.binpacking2d.packing_result.packingresult attribute)": [[4, "moptipyapps.binpacking2d.packing_result.PackingResult.n_items", false]], "n_items (moptipyapps.binpacking2d.packing_statistics.packingstatistics attribute)": [[4, "moptipyapps.binpacking2d.packing_statistics.PackingStatistics.n_items", false]], "n_points() (moptipyapps.binpacking2d.instgen.instance_space.instancespace method)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.n_points", false]], "n_points() (moptipyapps.binpacking2d.packing_space.packingspace method)": [[4, "moptipyapps.binpacking2d.packing_space.PackingSpace.n_points", false]], "n_points() (moptipyapps.ttp.game_plan_space.gameplanspace method)": [[17, "moptipyapps.ttp.game_plan_space.GamePlanSpace.n_points", false]], "n_runs (moptipyapps.binpacking2d.instgen.hardness.hardness attribute)": [[6, "moptipyapps.binpacking2d.instgen.hardness.Hardness.n_runs", false]], "name (moptipyapps.binpacking2d.bks.element attribute)": [[4, "moptipyapps.binpacking2d.bks.Element.name", false]], "name (moptipyapps.binpacking2d.instance.instance attribute)": [[4, "moptipyapps.binpacking2d.instance.Instance.name", false]], "name (moptipyapps.dynamic_control.controller.controller attribute)": [[8, "moptipyapps.dynamic_control.controller.Controller.name", false]], "name (moptipyapps.dynamic_control.instance.instance attribute)": [[8, "moptipyapps.dynamic_control.instance.Instance.name", false]], "name (moptipyapps.dynamic_control.system.system attribute)": [[8, "moptipyapps.dynamic_control.system.System.name", false]], "name (moptipyapps.qap.instance.instance attribute)": [[12, "moptipyapps.qap.instance.Instance.name", false]], "name (moptipyapps.tsp.instance.instance attribute)": [[15, "moptipyapps.tsp.instance.Instance.name", false]], "name_suffix (moptipyapps.binpacking2d.bks.element attribute)": [[4, "moptipyapps.binpacking2d.bks.Element.name_suffix", false]], "ncities_from_tsplib_name() (in module moptipyapps.tsp.instance)": [[15, "moptipyapps.tsp.instance.ncities_from_tsplib_name", false]], "no_ref (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.NO_REF", false]], "objective_bounds (moptipyapps.binpacking2d.packing_result.packingresult attribute)": [[4, "moptipyapps.binpacking2d.packing_result.PackingResult.objective_bounds", false]], "objective_bounds (moptipyapps.binpacking2d.packing_statistics.packingstatistics attribute)": [[4, "moptipyapps.binpacking2d.packing_statistics.PackingStatistics.objective_bounds", false]], "objectives (moptipyapps.binpacking2d.packing_result.packingresult attribute)": [[4, "moptipyapps.binpacking2d.packing_result.PackingResult.objectives", false]], "objectives (moptipyapps.binpacking2d.packing_statistics.packingstatistics attribute)": [[4, "moptipyapps.binpacking2d.packing_statistics.PackingStatistics.objectives", false]], "on_completion() (in module moptipyapps.dynamic_control.experiment_raw)": [[8, "moptipyapps.dynamic_control.experiment_raw.on_completion", false]], "on_completion() (in module moptipyapps.dynamic_control.experiment_surrogate)": [[8, "moptipyapps.dynamic_control.experiment_surrogate.on_completion", false]], "open_resource_stream() (in module moptipyapps.qap.qaplib)": [[13, "moptipyapps.qap.qaplib.open_resource_stream", false]], "open_resource_stream() (in module moptipyapps.tsp.tsplib)": [[16, "moptipyapps.tsp.tsplib.open_resource_stream", false]], "open_resource_stream() (in module moptipyapps.ttp.robinx)": [[18, "moptipyapps.ttp.robinx.open_resource_stream", false]], "opt_tour_from_file() (in module moptipyapps.tsp.known_optima)": [[15, "moptipyapps.tsp.known_optima.opt_tour_from_file", false]], "opt_tour_from_resource() (in module moptipyapps.tsp.known_optima)": [[15, "moptipyapps.tsp.known_optima.opt_tour_from_resource", false]], "orderingspace (class in moptipyapps.order1d.space)": [[11, "moptipyapps.order1d.space.OrderingSpace", false]], "pac (in module moptipyapps.binpacking2d.bks)": [[4, "moptipyapps.binpacking2d.bks.PAC", false]], "packing (class in moptipyapps.binpacking2d.packing)": [[4, "moptipyapps.binpacking2d.packing.Packing", false]], "packingresult (class in moptipyapps.binpacking2d.packing_result)": [[4, "moptipyapps.binpacking2d.packing_result.PackingResult", false]], "packingspace (class in moptipyapps.binpacking2d.packing_space)": [[4, "moptipyapps.binpacking2d.packing_space.PackingSpace", false]], "packingstatistics (class in moptipyapps.binpacking2d.packing_statistics)": [[4, "moptipyapps.binpacking2d.packing_statistics.PackingStatistics", false]], "param_dims (moptipyapps.dynamic_control.controller.controller attribute)": [[8, "moptipyapps.dynamic_control.controller.Controller.param_dims", false]], "parameter_space() (moptipyapps.dynamic_control.controller.controller method)": [[8, "moptipyapps.dynamic_control.controller.Controller.parameter_space", false]], "parse_row() (moptipyapps.binpacking2d.packing_result.csvreader method)": [[4, "moptipyapps.binpacking2d.packing_result.CsvReader.parse_row", false]], "parse_row() (moptipyapps.binpacking2d.packing_statistics.csvreader method)": [[4, "moptipyapps.binpacking2d.packing_statistics.CsvReader.parse_row", false]], "partially_linear() (in module moptipyapps.dynamic_control.controllers.partially_linear)": [[9, "moptipyapps.dynamic_control.controllers.partially_linear.partially_linear", false]], "peaks() (in module moptipyapps.dynamic_control.controllers.peaks)": [[9, "moptipyapps.dynamic_control.controllers.peaks.peaks", false]], "phi (in module moptipyapps.dynamic_control.controllers.min_ann)": [[9, "moptipyapps.dynamic_control.controllers.min_ann.PHI", false]], "plot_examples (moptipyapps.dynamic_control.system.system attribute)": [[8, "moptipyapps.dynamic_control.system.System.plot_examples", false]], "plot_packing() (in module moptipyapps.binpacking2d.plot_packing)": [[4, "moptipyapps.binpacking2d.plot_packing.plot_packing", false]], "plot_points() (moptipyapps.dynamic_control.system.system method)": [[8, "moptipyapps.dynamic_control.system.System.plot_points", false]], "predefined() (in module moptipyapps.dynamic_control.controllers.predefined)": [[9, "moptipyapps.dynamic_control.controllers.predefined.predefined", false]], "problem (class in moptipyapps.binpacking2d.instgen.problem)": [[6, "moptipyapps.binpacking2d.instgen.problem.Problem", false]], "qapobjective (class in moptipyapps.qap.objective)": [[12, "moptipyapps.qap.objective.QAPObjective", false]], "quadratic() (in module moptipyapps.dynamic_control.controllers.quadratic)": [[9, "moptipyapps.dynamic_control.controllers.quadratic.quadratic", false]], "reference (moptipyapps.binpacking2d.bks.element attribute)": [[4, "moptipyapps.binpacking2d.bks.Element.reference", false]], "resultslog (class in moptipyapps.dynamic_control.results_log)": [[8, "moptipyapps.dynamic_control.results_log.ResultsLog", false]], "resultsplot (class in moptipyapps.dynamic_control.results_plot)": [[8, "moptipyapps.dynamic_control.results_plot.ResultsPlot", false]], "rev_if_h_not_worse() (in module moptipyapps.tsp.fea1p1_revn)": [[15, "moptipyapps.tsp.fea1p1_revn.rev_if_h_not_worse", false]], "rev_if_not_worse() (in module moptipyapps.tsp.ea1p1_revn)": [[15, "moptipyapps.tsp.ea1p1_revn.rev_if_not_worse", false]], "rls() (in module moptipyapps.binpacking2d.experiment)": [[4, "moptipyapps.binpacking2d.experiment.rls", false]], "rounds (moptipyapps.ttp.instance.instance attribute)": [[17, "moptipyapps.ttp.instance.Instance.rounds", false]], "run() (in module moptipyapps.binpacking2d.experiment)": [[4, "moptipyapps.binpacking2d.experiment.run", false]], "run() (in module moptipyapps.binpacking2d.instgen.experiment)": [[6, "moptipyapps.binpacking2d.instgen.experiment.run", false]], "run() (in module moptipyapps.dynamic_control.experiment_raw)": [[8, "moptipyapps.dynamic_control.experiment_raw.run", false]], "run() (in module moptipyapps.dynamic_control.experiment_surrogate)": [[8, "moptipyapps.dynamic_control.experiment_surrogate.run", false]], "run_ode() (in module moptipyapps.dynamic_control.ode)": [[8, "moptipyapps.dynamic_control.ode.run_ode", false]], "scope (moptipyapps.binpacking2d.packing_result.csvwriter attribute)": [[4, "moptipyapps.binpacking2d.packing_result.CsvWriter.scope", false]], "scope (moptipyapps.binpacking2d.packing_statistics.csvwriter attribute)": [[4, "moptipyapps.binpacking2d.packing_statistics.CsvWriter.scope", false]], "scope_instance (in module moptipyapps.shared)": [[3, "moptipyapps.shared.SCOPE_INSTANCE", false]], "search_space (moptipyapps.binpacking2d.instgen.problem.problem attribute)": [[6, "moptipyapps.binpacking2d.instgen.problem.Problem.search_space", false]], "search_space() (moptipyapps.ttp.game_encoding.gameencoding method)": [[17, "moptipyapps.ttp.game_encoding.GameEncoding.search_space", false]], "search_space_for_n_and_rounds() (in module moptipyapps.ttp.game_encoding)": [[17, "moptipyapps.ttp.game_encoding.search_space_for_n_and_rounds", false]], "separation_max (moptipyapps.ttp.instance.instance attribute)": [[17, "moptipyapps.ttp.instance.Instance.separation_max", false]], "separation_min (moptipyapps.ttp.instance.instance attribute)": [[17, "moptipyapps.ttp.instance.Instance.separation_min", false]], "set_model() (moptipyapps.dynamic_control.objective.figureofmerit method)": [[8, "moptipyapps.dynamic_control.objective.FigureOfMerit.set_model", false]], "set_raw() (moptipyapps.dynamic_control.objective.figureofmerit method)": [[8, "moptipyapps.dynamic_control.objective.FigureOfMerit.set_raw", false]], "setup() (moptipyapps.binpacking2d.packing_result.csvwriter method)": [[4, "moptipyapps.binpacking2d.packing_result.CsvWriter.setup", false]], "setup() (moptipyapps.binpacking2d.packing_statistics.csvwriter method)": [[4, "moptipyapps.binpacking2d.packing_statistics.CsvWriter.setup", false]], "setup_rls_f1() (in module moptipyapps.binpacking2d.instgen.hardness)": [[6, "moptipyapps.binpacking2d.instgen.hardness.setup_rls_f1", false]], "setup_rls_f7() (in module moptipyapps.binpacking2d.instgen.hardness)": [[6, "moptipyapps.binpacking2d.instgen.hardness.setup_rls_f7", false]], "setup_rs_f1() (in module moptipyapps.binpacking2d.instgen.hardness)": [[6, "moptipyapps.binpacking2d.instgen.hardness.setup_rs_f1", false]], "solution_space (moptipyapps.binpacking2d.instgen.problem.problem attribute)": [[6, "moptipyapps.binpacking2d.instgen.problem.Problem.solution_space", false]], "solve() (moptipyapps.dynamic_control.surrogate_optimizer.surrogateoptimizer method)": [[8, "moptipyapps.dynamic_control.surrogate_optimizer.SurrogateOptimizer.solve", false]], "solve() (moptipyapps.tsp.ea1p1_revn.tspea1p1revn method)": [[15, "moptipyapps.tsp.ea1p1_revn.TSPEA1p1revn.solve", false]], "solve() (moptipyapps.tsp.fea1p1_revn.tspfea1p1revn method)": [[15, "moptipyapps.tsp.fea1p1_revn.TSPFEA1p1revn.solve", false]], "space (moptipyapps.binpacking2d.instgen.errors.errors attribute)": [[6, "moptipyapps.binpacking2d.instgen.errors.Errors.space", false]], "space (moptipyapps.binpacking2d.instgen.inst_decoding.instancedecoder attribute)": [[6, "moptipyapps.binpacking2d.instgen.inst_decoding.InstanceDecoder.space", false]], "start_color (in module moptipyapps.dynamic_control.results_plot)": [[8, "moptipyapps.dynamic_control.results_plot.START_COLOR", false]], "start_marker (in module moptipyapps.dynamic_control.results_plot)": [[8, "moptipyapps.dynamic_control.results_plot.START_MARKER", false]], "state_dim_mod (moptipyapps.dynamic_control.system.system attribute)": [[8, "moptipyapps.dynamic_control.system.System.state_dim_mod", false]], "state_dims (moptipyapps.dynamic_control.controller.controller attribute)": [[8, "moptipyapps.dynamic_control.controller.Controller.state_dims", false]], "state_dims (moptipyapps.dynamic_control.system.system attribute)": [[8, "moptipyapps.dynamic_control.system.System.state_dims", false]], "state_dims_in_j (moptipyapps.dynamic_control.system.system attribute)": [[8, "moptipyapps.dynamic_control.system.System.state_dims_in_j", false]], "stuart_landau_111 (in module moptipyapps.dynamic_control.systems.stuart_landau)": [[10, "moptipyapps.dynamic_control.systems.stuart_landau.STUART_LANDAU_111", false]], "stuart_landau_4 (in module moptipyapps.dynamic_control.systems.stuart_landau)": [[10, "moptipyapps.dynamic_control.systems.stuart_landau.STUART_LANDAU_4", false]], "sum_up_results() (moptipyapps.dynamic_control.objective.figureofmerit method)": [[8, "moptipyapps.dynamic_control.objective.FigureOfMerit.sum_up_results", false]], "sum_up_results() (moptipyapps.dynamic_control.objective.figureofmeritle method)": [[8, "moptipyapps.dynamic_control.objective.FigureOfMeritLE.sum_up_results", false]], "surrogateoptimizer (class in moptipyapps.dynamic_control.surrogate_optimizer)": [[8, "moptipyapps.dynamic_control.surrogate_optimizer.SurrogateOptimizer", false]], "swap_distance() (in module moptipyapps.order1d.distances)": [[11, "moptipyapps.order1d.distances.swap_distance", false]], "system (class in moptipyapps.dynamic_control.system)": [[8, "moptipyapps.dynamic_control.system.System", false]], "system (moptipyapps.dynamic_control.instance.instance attribute)": [[8, "moptipyapps.dynamic_control.instance.Instance.system", false]], "system_model (moptipyapps.dynamic_control.surrogate_optimizer.surrogateoptimizer attribute)": [[8, "moptipyapps.dynamic_control.surrogate_optimizer.SurrogateOptimizer.system_model", false]], "systemmodel (class in moptipyapps.dynamic_control.system_model)": [[8, "moptipyapps.dynamic_control.system_model.SystemModel", false]], "t (class in moptipyapps.dynamic_control.ode)": [[8, "moptipyapps.dynamic_control.ode.T", false]], "t (class in moptipyapps.dynamic_control.system)": [[8, "moptipyapps.dynamic_control.system.T", false]], "t (class in moptipyapps.order1d.instance)": [[11, "moptipyapps.order1d.instance.T", false]], "t_from_ode() (in module moptipyapps.dynamic_control.ode)": [[8, "moptipyapps.dynamic_control.ode.t_from_ode", false]], "tag_titles (moptipyapps.order1d.instance.instance attribute)": [[11, "moptipyapps.order1d.instance.Instance.tag_titles", false]], "tags (moptipyapps.order1d.instance.instance attribute)": [[11, "moptipyapps.order1d.instance.Instance.tags", false]], "teams (moptipyapps.ttp.instance.instance attribute)": [[17, "moptipyapps.ttp.instance.Instance.teams", false]], "test_starting_states (moptipyapps.dynamic_control.system.system attribute)": [[8, "moptipyapps.dynamic_control.system.System.test_starting_states", false]], "test_steps (moptipyapps.dynamic_control.system.system attribute)": [[8, "moptipyapps.dynamic_control.system.System.test_steps", false]], "test_time (moptipyapps.dynamic_control.system.system attribute)": [[8, "moptipyapps.dynamic_control.system.System.test_time", false]], "three_coupled_oscillators (in module moptipyapps.dynamic_control.systems.three_coupled_oscillators)": [[10, "moptipyapps.dynamic_control.systems.three_coupled_oscillators.THREE_COUPLED_OSCILLATORS", false]], "to_bin_count() (moptipyapps.binpacking2d.objectives.bin_count.bincount method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count.BinCount.to_bin_count", false]], "to_bin_count() (moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.bincountandlastempty method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.BinCountAndLastEmpty.to_bin_count", false]], "to_bin_count() (moptipyapps.binpacking2d.objectives.bin_count_and_last_small.bincountandlastsmall method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_last_small.BinCountAndLastSmall.to_bin_count", false]], "to_compact_str() (moptipyapps.binpacking2d.instance.instance method)": [[4, "moptipyapps.binpacking2d.instance.Instance.to_compact_str", false]], "to_csv() (in module moptipyapps.binpacking2d.packing_result)": [[4, "moptipyapps.binpacking2d.packing_result.to_csv", false]], "to_csv() (in module moptipyapps.binpacking2d.packing_statistics)": [[4, "moptipyapps.binpacking2d.packing_statistics.to_csv", false]], "to_str() (moptipyapps.binpacking2d.instgen.instance_space.instancespace method)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.to_str", false]], "to_str() (moptipyapps.binpacking2d.packing_space.packingspace method)": [[4, "moptipyapps.binpacking2d.packing_space.PackingSpace.to_str", false]], "to_str() (moptipyapps.order1d.space.orderingspace method)": [[11, "moptipyapps.order1d.space.OrderingSpace.to_str", false]], "to_stream() (moptipyapps.tsp.instance.instance method)": [[15, "moptipyapps.tsp.instance.Instance.to_stream", false]], "total_item_area (moptipyapps.binpacking2d.instance.instance attribute)": [[4, "moptipyapps.binpacking2d.instance.Instance.total_item_area", false]], "total_item_area (moptipyapps.binpacking2d.instgen.instance_space.instancespace attribute)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.total_item_area", false]], "tour_length() (in module moptipyapps.tsp.tour_length)": [[15, "moptipyapps.tsp.tour_length.tour_length", false]], "tour_length_lower_bound (moptipyapps.tsp.instance.instance attribute)": [[15, "moptipyapps.tsp.instance.Instance.tour_length_lower_bound", false]], "tour_length_upper_bound (moptipyapps.tsp.instance.instance attribute)": [[15, "moptipyapps.tsp.instance.Instance.tour_length_upper_bound", false]], "tourlength (class in moptipyapps.tsp.tour_length)": [[15, "moptipyapps.tsp.tour_length.TourLength", false]], "training_starting_states (moptipyapps.dynamic_control.system.system attribute)": [[8, "moptipyapps.dynamic_control.system.System.training_starting_states", false]], "training_steps (moptipyapps.dynamic_control.system.system attribute)": [[8, "moptipyapps.dynamic_control.system.System.training_steps", false]], "training_time (moptipyapps.dynamic_control.system.system attribute)": [[8, "moptipyapps.dynamic_control.system.System.training_time", false]], "trivial_bounds() (in module moptipyapps.qap.instance)": [[12, "moptipyapps.qap.instance.trivial_bounds", false]], "tsp_instances_for_tests() (in module moptipyapps.tests.on_tsp)": [[14, "moptipyapps.tests.on_tsp.tsp_instances_for_tests", false]], "tspea1p1revn (class in moptipyapps.tsp.ea1p1_revn)": [[15, "moptipyapps.tsp.ea1p1_revn.TSPEA1p1revn", false]], "tspfea1p1revn (class in moptipyapps.tsp.fea1p1_revn)": [[15, "moptipyapps.tsp.fea1p1_revn.TSPFEA1p1revn", false]], "unindent() (moptipyapps.dynamic_control.controllers.codegen.codegenerator method)": [[9, "moptipyapps.dynamic_control.controllers.codegen.CodeGenerator.unindent", false]], "upper_bound (moptipyapps.qap.instance.instance attribute)": [[12, "moptipyapps.qap.instance.Instance.upper_bound", false]], "upper_bound() (moptipyapps.binpacking2d.instgen.errors.errors method)": [[6, "moptipyapps.binpacking2d.instgen.errors.Errors.upper_bound", false]], "upper_bound() (moptipyapps.binpacking2d.instgen.errors_and_hardness.errorsandhardness method)": [[6, "moptipyapps.binpacking2d.instgen.errors_and_hardness.ErrorsAndHardness.upper_bound", false]], "upper_bound() (moptipyapps.binpacking2d.instgen.hardness.hardness method)": [[6, "moptipyapps.binpacking2d.instgen.hardness.Hardness.upper_bound", false]], "upper_bound() (moptipyapps.binpacking2d.objectives.bin_count.bincount method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count.BinCount.upper_bound", false]], "upper_bound() (moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.bincountandlastempty method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.BinCountAndLastEmpty.upper_bound", false]], "upper_bound() (moptipyapps.binpacking2d.objectives.bin_count_and_last_small.bincountandlastsmall method)": [[7, "moptipyapps.binpacking2d.objectives.bin_count_and_last_small.BinCountAndLastSmall.upper_bound", false]], "upper_bound() (moptipyapps.qap.objective.qapobjective method)": [[12, "moptipyapps.qap.objective.QAPObjective.upper_bound", false]], "upper_bound() (moptipyapps.tsp.tour_length.tourlength method)": [[15, "moptipyapps.tsp.tour_length.TourLength.upper_bound", false]], "upper_bound() (moptipyapps.ttp.errors.errors method)": [[17, "moptipyapps.ttp.errors.Errors.upper_bound", false]], "upper_bound() (moptipyapps.ttp.plan_length.gameplanlength method)": [[17, "moptipyapps.ttp.plan_length.GamePlanLength.upper_bound", false]], "validate() (moptipyapps.binpacking2d.instgen.instance_space.instancespace method)": [[6, "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace.validate", false]], "validate() (moptipyapps.binpacking2d.packing_space.packingspace method)": [[4, "moptipyapps.binpacking2d.packing_space.PackingSpace.validate", false]], "validate() (moptipyapps.ttp.game_plan_space.gameplanspace method)": [[17, "moptipyapps.ttp.game_plan_space.GamePlanSpace.validate", false]], "validate_algorithm_on_1_2dbinpacking() (in module moptipyapps.tests.on_binpacking2d)": [[14, "moptipyapps.tests.on_binpacking2d.validate_algorithm_on_1_2dbinpacking", false]], "validate_algorithm_on_1_tsp() (in module moptipyapps.tests.on_tsp)": [[14, "moptipyapps.tests.on_tsp.validate_algorithm_on_1_tsp", false]], "validate_algorithm_on_2dbinpacking() (in module moptipyapps.tests.on_binpacking2d)": [[14, "moptipyapps.tests.on_binpacking2d.validate_algorithm_on_2dbinpacking", false]], "validate_algorithm_on_tsp() (in module moptipyapps.tests.on_tsp)": [[14, "moptipyapps.tests.on_tsp.validate_algorithm_on_tsp", false]], "validate_objective_on_1_2dbinpacking() (in module moptipyapps.tests.on_binpacking2d)": [[14, "moptipyapps.tests.on_binpacking2d.validate_objective_on_1_2dbinpacking", false]], "validate_objective_on_1_tsp() (in module moptipyapps.tests.on_tsp)": [[14, "moptipyapps.tests.on_tsp.validate_objective_on_1_tsp", false]], "validate_objective_on_2dbinpacking() (in module moptipyapps.tests.on_binpacking2d)": [[14, "moptipyapps.tests.on_binpacking2d.validate_objective_on_2dbinpacking", false]], "validate_objective_on_tsp() (in module moptipyapps.tests.on_tsp)": [[14, "moptipyapps.tests.on_tsp.validate_objective_on_tsp", false]], "validate_signed_permutation_encoding_on_1_2dbinpacking() (in module moptipyapps.tests.on_binpacking2d)": [[14, "moptipyapps.tests.on_binpacking2d.validate_signed_permutation_encoding_on_1_2dbinpacking", false]], "validate_signed_permutation_encoding_on_2dbinpacking() (in module moptipyapps.tests.on_binpacking2d)": [[14, "moptipyapps.tests.on_binpacking2d.validate_signed_permutation_encoding_on_2dbinpacking", false]], "write() (moptipyapps.dynamic_control.controllers.codegen.codegenerator method)": [[9, "moptipyapps.dynamic_control.controllers.codegen.CodeGenerator.write", false]], "writeln() (moptipyapps.dynamic_control.controllers.codegen.codegenerator method)": [[9, "moptipyapps.dynamic_control.controllers.codegen.CodeGenerator.writeln", false]]}, "objects": {"": [[3, 0, 0, "-", "moptipyapps"]], "moptipyapps": [[4, 0, 0, "-", "binpacking2d"], [8, 0, 0, "-", "dynamic_control"], [11, 0, 0, "-", "order1d"], [12, 0, 0, "-", "qap"], [3, 0, 0, "-", "shared"], [14, 0, 0, "-", "tests"], [15, 0, 0, "-", "tsp"], [17, 0, 0, "-", "ttp"], [3, 0, 0, "-", "version"]], "moptipyapps.binpacking2d": [[4, 0, 0, "-", "bks"], [5, 0, 0, "-", "encodings"], [4, 0, 0, "-", "experiment"], [4, 0, 0, "-", "instance"], [6, 0, 0, "-", "instgen"], [4, 0, 0, "-", "make_instances"], [7, 0, 0, "-", "objectives"], [4, 0, 0, "-", "packing"], [4, 0, 0, "-", "packing_result"], [4, 0, 0, "-", "packing_space"], [4, 0, 0, "-", "packing_statistics"], [4, 0, 0, "-", "plot_packing"]], "moptipyapps.binpacking2d.bks": [[4, 1, 1, "", "ASQAS"], [4, 1, 1, "", "A_LARGE"], [4, 1, 1, "", "A_MED"], [4, 1, 1, "", "A_SMALL"], [4, 1, 1, "", "BENG_1_8"], [4, 1, 1, "", "BENG_9_10"], [4, 1, 1, "", "BRKGA_BPP_2R"], [4, 1, 1, "", "BRKGA_BPP_ANB"], [4, 1, 1, "", "CLASS_10_100"], [4, 1, 1, "", "CLASS_10_20"], [4, 1, 1, "", "CLASS_10_40"], [4, 1, 1, "", "CLASS_10_60"], [4, 1, 1, "", "CLASS_10_80"], [4, 1, 1, "", "CLASS_1_100"], [4, 1, 1, "", "CLASS_1_20"], [4, 1, 1, "", "CLASS_1_40"], [4, 1, 1, "", "CLASS_1_60"], [4, 1, 1, "", "CLASS_1_80"], [4, 1, 1, "", "CLASS_2_100"], [4, 1, 1, "", "CLASS_2_20"], [4, 1, 1, "", "CLASS_2_40"], [4, 1, 1, "", "CLASS_2_60"], [4, 1, 1, "", "CLASS_2_80"], [4, 1, 1, "", "CLASS_3_100"], [4, 1, 1, "", "CLASS_3_20"], [4, 1, 1, "", "CLASS_3_40"], [4, 1, 1, "", "CLASS_3_60"], [4, 1, 1, "", "CLASS_3_80"], [4, 1, 1, "", "CLASS_4_100"], [4, 1, 1, "", "CLASS_4_20"], [4, 1, 1, "", "CLASS_4_40"], [4, 1, 1, "", "CLASS_4_60"], [4, 1, 1, "", "CLASS_4_80"], [4, 1, 1, "", "CLASS_5_100"], [4, 1, 1, "", "CLASS_5_20"], [4, 1, 1, "", "CLASS_5_40"], [4, 1, 1, "", "CLASS_5_60"], [4, 1, 1, "", "CLASS_5_80"], [4, 1, 1, "", "CLASS_6_100"], [4, 1, 1, "", "CLASS_6_20"], [4, 1, 1, "", "CLASS_6_40"], [4, 1, 1, "", "CLASS_6_60"], [4, 1, 1, "", "CLASS_6_80"], [4, 1, 1, "", "CLASS_7_100"], [4, 1, 1, "", "CLASS_7_20"], [4, 1, 1, "", "CLASS_7_40"], [4, 1, 1, "", "CLASS_7_60"], [4, 1, 1, "", "CLASS_7_80"], [4, 1, 1, "", "CLASS_8_100"], [4, 1, 1, "", "CLASS_8_20"], [4, 1, 1, "", "CLASS_8_40"], [4, 1, 1, "", "CLASS_8_60"], [4, 1, 1, "", "CLASS_8_80"], [4, 1, 1, "", "CLASS_9_100"], [4, 1, 1, "", "CLASS_9_20"], [4, 1, 1, "", "CLASS_9_40"], [4, 1, 1, "", "CLASS_9_60"], [4, 1, 1, "", "CLASS_9_80"], [4, 1, 1, "", "CLASS_AND_BENG"], [4, 1, 1, "", "EALGFI"], [4, 2, 1, "", "Element"], [4, 1, 1, "", "GRASP_VND"], [4, 1, 1, "", "GROUPS_TO_INSTANCES"], [4, 1, 1, "", "HHANO_R"], [4, 1, 1, "", "HHANO_SR"], [4, 1, 1, "", "INSTANCES_TO_GROUPS"], [4, 5, 1, "", "INST_GROUP_SORT_KEY"], [4, 1, 1, "", "MXGA"], [4, 1, 1, "", "NO_REF"], [4, 1, 1, "", "PAC"], [4, 5, 1, "", "get_related_work"], [4, 5, 1, "", "make_comparison_table"], [4, 5, 1, "", "make_comparison_table_data"]], "moptipyapps.binpacking2d.bks.Element": [[4, 3, 1, "", "get_bibtex"], [4, 4, 1, "", "name"], [4, 4, 1, "", "name_suffix"], [4, 4, 1, "", "reference"]], "moptipyapps.binpacking2d.encodings": [[5, 0, 0, "-", "ibl_encoding_1"], [5, 0, 0, "-", "ibl_encoding_2"]], "moptipyapps.binpacking2d.encodings.ibl_encoding_1": [[5, 2, 1, "", "ImprovedBottomLeftEncoding1"]], "moptipyapps.binpacking2d.encodings.ibl_encoding_1.ImprovedBottomLeftEncoding1": [[5, 3, 1, "", "decode"], [5, 3, 1, "", "log_parameters_to"]], "moptipyapps.binpacking2d.encodings.ibl_encoding_2": [[5, 2, 1, "", "ImprovedBottomLeftEncoding2"]], "moptipyapps.binpacking2d.encodings.ibl_encoding_2.ImprovedBottomLeftEncoding2": [[5, 3, 1, "", "decode"], [5, 3, 1, "", "log_parameters_to"]], "moptipyapps.binpacking2d.experiment": [[4, 1, 1, "", "MAX_FES"], [4, 5, 1, "", "base_setup"], [4, 5, 1, "", "fea"], [4, 5, 1, "", "rls"], [4, 5, 1, "", "run"]], "moptipyapps.binpacking2d.instance": [[4, 1, 1, "", "BIN_HEIGHT"], [4, 1, 1, "", "BIN_WIDTH"], [4, 1, 1, "", "IDX_HEIGHT"], [4, 1, 1, "", "IDX_REPETITION"], [4, 1, 1, "", "IDX_WIDTH"], [4, 1, 1, "", "INSTANCES_RESOURCE"], [4, 1, 1, "", "INTERNAL_SEP"], [4, 2, 1, "", "Instance"], [4, 1, 1, "", "N_DIFFERENT_ITEMS"], [4, 1, 1, "", "N_ITEMS"]], "moptipyapps.binpacking2d.instance.Instance": [[4, 4, 1, "", "bin_height"], [4, 4, 1, "", "bin_width"], [4, 3, 1, "", "from_2dpacklib"], [4, 3, 1, "", "from_compact_str"], [4, 3, 1, "", "from_resource"], [4, 3, 1, "", "get_standard_item_sequence"], [4, 3, 1, "", "list_resources"], [4, 3, 1, "", "list_resources_groups"], [4, 3, 1, "", "log_parameters_to"], [4, 4, 1, "", "lower_bound_bins"], [4, 4, 1, "", "n_different_items"], [4, 4, 1, "", "n_items"], [4, 4, 1, "", "name"], [4, 3, 1, "", "to_compact_str"], [4, 4, 1, "", "total_item_area"]], "moptipyapps.binpacking2d.instgen": [[6, 0, 0, "-", "errors"], [6, 0, 0, "-", "errors_and_hardness"], [6, 0, 0, "-", "experiment"], [6, 0, 0, "-", "hardness"], [6, 0, 0, "-", "inst_decoding"], [6, 0, 0, "-", "instance_space"], [6, 0, 0, "-", "problem"]], "moptipyapps.binpacking2d.instgen.errors": [[6, 2, 1, "", "Errors"]], "moptipyapps.binpacking2d.instgen.errors.Errors": [[6, 3, 1, "", "evaluate"], [6, 3, 1, "", "is_always_integer"], [6, 3, 1, "", "log_parameters_to"], [6, 3, 1, "", "lower_bound"], [6, 4, 1, "", "space"], [6, 3, 1, "", "upper_bound"]], "moptipyapps.binpacking2d.instgen.errors_and_hardness": [[6, 2, 1, "", "ErrorsAndHardness"]], "moptipyapps.binpacking2d.instgen.errors_and_hardness.ErrorsAndHardness": [[6, 4, 1, "", "errors"], [6, 3, 1, "", "evaluate"], [6, 4, 1, "", "hardness"], [6, 3, 1, "", "is_always_integer"], [6, 3, 1, "", "log_parameters_to"], [6, 3, 1, "", "lower_bound"], [6, 3, 1, "", "upper_bound"]], "moptipyapps.binpacking2d.instgen.experiment": [[6, 1, 1, "", "INNER_MAX_FES"], [6, 1, 1, "", "INNER_RUNS"], [6, 1, 1, "", "MAX_FES"], [6, 5, 1, "", "cmaes"], [6, 5, 1, "", "run"]], "moptipyapps.binpacking2d.instgen.hardness": [[6, 1, 1, "", "DEFAULT_EXECUTORS"], [6, 2, 1, "", "Hardness"], [6, 5, 1, "", "setup_rls_f1"], [6, 5, 1, "", "setup_rls_f7"], [6, 5, 1, "", "setup_rs_f1"]], "moptipyapps.binpacking2d.instgen.hardness.Hardness": [[6, 3, 1, "", "evaluate"], [6, 4, 1, "", "executors"], [6, 3, 1, "", "is_always_integer"], [6, 3, 1, "", "log_parameters_to"], [6, 3, 1, "", "lower_bound"], [6, 4, 1, "", "max_fes"], [6, 4, 1, "", "n_runs"], [6, 3, 1, "", "upper_bound"]], "moptipyapps.binpacking2d.instgen.inst_decoding": [[6, 2, 1, "", "InstanceDecoder"]], "moptipyapps.binpacking2d.instgen.inst_decoding.InstanceDecoder": [[6, 3, 1, "", "decode"], [6, 3, 1, "", "get_x_dim"], [6, 4, 1, "", "space"]], "moptipyapps.binpacking2d.instgen.instance_space": [[6, 2, 1, "", "InstanceSpace"]], "moptipyapps.binpacking2d.instgen.instance_space.InstanceSpace": [[6, 4, 1, "", "bin_height"], [6, 4, 1, "", "bin_width"], [6, 3, 1, "", "copy"], [6, 3, 1, "", "create"], [6, 3, 1, "", "from_str"], [6, 4, 1, "", "inst_name"], [6, 3, 1, "", "is_equal"], [6, 4, 1, "", "item_height_max"], [6, 4, 1, "", "item_height_min"], [6, 4, 1, "", "item_width_max"], [6, 4, 1, "", "item_width_min"], [6, 3, 1, "", "log_parameters_to"], [6, 4, 1, "", "min_bins"], [6, 4, 1, "", "n_different_items"], [6, 4, 1, "", "n_items"], [6, 3, 1, "", "n_points"], [6, 3, 1, "", "to_str"], [6, 4, 1, "", "total_item_area"], [6, 3, 1, "", "validate"]], "moptipyapps.binpacking2d.instgen.problem": [[6, 2, 1, "", "Problem"]], "moptipyapps.binpacking2d.instgen.problem.Problem": [[6, 4, 1, "", "encoding"], [6, 4, 1, "", "search_space"], [6, 4, 1, "", "solution_space"]], "moptipyapps.binpacking2d.make_instances": [[4, 5, 1, "", "append_almost_squares_strings"], [4, 5, 1, "", "download_2dpacklib_instances"], [4, 5, 1, "", "join_instances_to_compact"], [4, 5, 1, "", "make_2dpacklib_resource"]], "moptipyapps.binpacking2d.objectives": [[7, 0, 0, "-", "bin_count"], [7, 0, 0, "-", "bin_count_and_empty"], [7, 0, 0, "-", "bin_count_and_last_empty"], [7, 0, 0, "-", "bin_count_and_last_skyline"], [7, 0, 0, "-", "bin_count_and_last_small"], [7, 0, 0, "-", "bin_count_and_lowest_skyline"], [7, 0, 0, "-", "bin_count_and_small"]], "moptipyapps.binpacking2d.objectives.bin_count": [[7, 1, 1, "", "BIN_COUNT_NAME"], [7, 2, 1, "", "BinCount"]], "moptipyapps.binpacking2d.objectives.bin_count.BinCount": [[7, 3, 1, "", "evaluate"], [7, 3, 1, "", "is_always_integer"], [7, 3, 1, "", "lower_bound"], [7, 3, 1, "", "to_bin_count"], [7, 3, 1, "", "upper_bound"]], "moptipyapps.binpacking2d.objectives.bin_count_and_empty": [[7, 2, 1, "", "BinCountAndEmpty"], [7, 5, 1, "", "bin_count_and_empty"]], "moptipyapps.binpacking2d.objectives.bin_count_and_empty.BinCountAndEmpty": [[7, 3, 1, "", "evaluate"]], "moptipyapps.binpacking2d.objectives.bin_count_and_last_empty": [[7, 2, 1, "", "BinCountAndLastEmpty"], [7, 5, 1, "", "bin_count_and_last_empty"]], "moptipyapps.binpacking2d.objectives.bin_count_and_last_empty.BinCountAndLastEmpty": [[7, 3, 1, "", "evaluate"], [7, 3, 1, "", "lower_bound"], [7, 3, 1, "", "to_bin_count"], [7, 3, 1, "", "upper_bound"]], "moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline": [[7, 2, 1, "", "BinCountAndLastSkyline"], [7, 5, 1, "", "bin_count_and_last_skyline"]], "moptipyapps.binpacking2d.objectives.bin_count_and_last_skyline.BinCountAndLastSkyline": [[7, 3, 1, "", "evaluate"]], "moptipyapps.binpacking2d.objectives.bin_count_and_last_small": [[7, 2, 1, "", "BinCountAndLastSmall"], [7, 5, 1, "", "bin_count_and_last_small"]], "moptipyapps.binpacking2d.objectives.bin_count_and_last_small.BinCountAndLastSmall": [[7, 3, 1, "", "evaluate"], [7, 3, 1, "", "lower_bound"], [7, 3, 1, "", "to_bin_count"], [7, 3, 1, "", "upper_bound"]], "moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline": [[7, 2, 1, "", "BinCountAndLowestSkyline"], [7, 5, 1, "", "bin_count_and_lowest_skyline"]], "moptipyapps.binpacking2d.objectives.bin_count_and_lowest_skyline.BinCountAndLowestSkyline": [[7, 3, 1, "", "evaluate"]], "moptipyapps.binpacking2d.objectives.bin_count_and_small": [[7, 2, 1, "", "BinCountAndSmall"], [7, 5, 1, "", "bin_count_and_small"]], "moptipyapps.binpacking2d.objectives.bin_count_and_small.BinCountAndSmall": [[7, 3, 1, "", "evaluate"]], "moptipyapps.binpacking2d.packing": [[4, 1, 1, "", "IDX_BIN"], [4, 1, 1, "", "IDX_BOTTOM_Y"], [4, 1, 1, "", "IDX_ID"], [4, 1, 1, "", "IDX_LEFT_X"], [4, 1, 1, "", "IDX_RIGHT_X"], [4, 1, 1, "", "IDX_TOP_Y"], [4, 2, 1, "", "Packing"]], "moptipyapps.binpacking2d.packing.Packing": [[4, 3, 1, "", "from_log"], [4, 4, 1, "", "instance"], [4, 4, 1, "", "n_bins"]], "moptipyapps.binpacking2d.packing_result": [[4, 2, 1, "", "CsvReader"], [4, 2, 1, "", "CsvWriter"], [4, 1, 1, "", "DEFAULT_OBJECTIVES"], [4, 1, 1, "", "KEY_BIN_HEIGHT"], [4, 1, 1, "", "KEY_BIN_WIDTH"], [4, 1, 1, "", "KEY_N_DIFFERENT_ITEMS"], [4, 1, 1, "", "KEY_N_ITEMS"], [4, 1, 1, "", "LOWER_BOUNDS_BIN_COUNT"], [4, 2, 1, "", "PackingResult"], [4, 5, 1, "", "from_csv"], [4, 5, 1, "", "from_logs"], [4, 5, 1, "", "from_packing_and_end_result"], [4, 5, 1, "", "from_single_log"], [4, 5, 1, "", "to_csv"]], "moptipyapps.binpacking2d.packing_result.CsvReader": [[4, 3, 1, "", "parse_row"]], "moptipyapps.binpacking2d.packing_result.CsvWriter": [[4, 3, 1, "", "get_column_titles"], [4, 3, 1, "", "get_footer_bottom_comments"], [4, 3, 1, "", "get_footer_comments"], [4, 3, 1, "", "get_header_comments"], [4, 3, 1, "", "get_row"], [4, 4, 1, "", "scope"], [4, 3, 1, "", "setup"]], "moptipyapps.binpacking2d.packing_result.PackingResult": [[4, 4, 1, "", "bin_bounds"], [4, 4, 1, "", "bin_height"], [4, 4, 1, "", "bin_width"], [4, 4, 1, "", "end_result"], [4, 4, 1, "", "n_different_items"], [4, 4, 1, "", "n_items"], [4, 4, 1, "", "objective_bounds"], [4, 4, 1, "", "objectives"]], "moptipyapps.binpacking2d.packing_space": [[4, 2, 1, "", "PackingSpace"]], "moptipyapps.binpacking2d.packing_space.PackingSpace": [[4, 3, 1, "", "copy"], [4, 3, 1, "", "create"], [4, 3, 1, "", "from_str"], [4, 4, 1, "", "instance"], [4, 3, 1, "", "is_equal"], [4, 3, 1, "", "log_parameters_to"], [4, 3, 1, "", "n_points"], [4, 3, 1, "", "to_str"], [4, 3, 1, "", "validate"]], "moptipyapps.binpacking2d.packing_statistics": [[4, 2, 1, "", "CsvReader"], [4, 2, 1, "", "CsvWriter"], [4, 2, 1, "", "PackingStatistics"], [4, 5, 1, "", "from_csv"], [4, 5, 1, "", "from_packing_results"], [4, 5, 1, "", "to_csv"]], "moptipyapps.binpacking2d.packing_statistics.CsvReader": [[4, 3, 1, "", "parse_row"]], "moptipyapps.binpacking2d.packing_statistics.CsvWriter": [[4, 3, 1, "", "get_column_titles"], [4, 3, 1, "", "get_footer_bottom_comments"], [4, 3, 1, "", "get_footer_comments"], [4, 3, 1, "", "get_header_comments"], [4, 3, 1, "", "get_row"], [4, 4, 1, "", "scope"], [4, 3, 1, "", "setup"]], "moptipyapps.binpacking2d.packing_statistics.PackingStatistics": [[4, 4, 1, "", "bin_bounds"], [4, 4, 1, "", "bin_height"], [4, 4, 1, "", "bin_width"], [4, 4, 1, "", "end_statistics"], [4, 4, 1, "", "n_different_items"], [4, 4, 1, "", "n_items"], [4, 4, 1, "", "objective_bounds"], [4, 4, 1, "", "objectives"]], "moptipyapps.binpacking2d.plot_packing": [[4, 5, 1, "", "default_packing_item_str"], [4, 5, 1, "", "plot_packing"]], "moptipyapps.dynamic_control": [[8, 0, 0, "-", "controller"], [9, 0, 0, "-", "controllers"], [8, 0, 0, "-", "experiment_raw"], [8, 0, 0, "-", "experiment_surrogate"], [8, 0, 0, "-", "instance"], [8, 0, 0, "-", "model_objective"], [8, 0, 0, "-", "objective"], [8, 0, 0, "-", "ode"], [8, 0, 0, "-", "results_log"], [8, 0, 0, "-", "results_plot"], [8, 0, 0, "-", "starting_points"], [8, 0, 0, "-", "surrogate_optimizer"], [8, 0, 0, "-", "system"], [8, 0, 0, "-", "system_model"], [10, 0, 0, "-", "systems"]], "moptipyapps.dynamic_control.controller": [[8, 2, 1, "", "Controller"]], "moptipyapps.dynamic_control.controller.Controller": [[8, 4, 1, "", "control_dims"], [8, 3, 1, "", "controller"], [8, 3, 1, "", "log_parameters_to"], [8, 4, 1, "", "name"], [8, 4, 1, "", "param_dims"], [8, 3, 1, "", "parameter_space"], [8, 4, 1, "", "state_dims"]], "moptipyapps.dynamic_control.controllers": [[9, 0, 0, "-", "ann"], [9, 0, 0, "-", "codegen"], [9, 0, 0, "-", "cubic"], [9, 0, 0, "-", "linear"], [9, 0, 0, "-", "min_ann"], [9, 0, 0, "-", "partially_linear"], [9, 0, 0, "-", "peaks"], [9, 0, 0, "-", "predefined"], [9, 0, 0, "-", "quadratic"]], "moptipyapps.dynamic_control.controllers.ann": [[9, 5, 1, "", "anns"], [9, 5, 1, "", "make_ann"]], "moptipyapps.dynamic_control.controllers.codegen": [[9, 2, 1, "", "CodeGenerator"]], "moptipyapps.dynamic_control.controllers.codegen.CodeGenerator": [[9, 3, 1, "", "build"], [9, 3, 1, "", "endline"], [9, 3, 1, "", "indent"], [9, 3, 1, "", "unindent"], [9, 3, 1, "", "write"], [9, 3, 1, "", "writeln"]], "moptipyapps.dynamic_control.controllers.cubic": [[9, 5, 1, "", "cubic"]], "moptipyapps.dynamic_control.controllers.linear": [[9, 5, 1, "", "linear"]], "moptipyapps.dynamic_control.controllers.min_ann": [[9, 1, 1, "", "PHI"], [9, 5, 1, "", "min_anns"]], "moptipyapps.dynamic_control.controllers.partially_linear": [[9, 5, 1, "", "partially_linear"]], "moptipyapps.dynamic_control.controllers.peaks": [[9, 5, 1, "", "peaks"]], "moptipyapps.dynamic_control.controllers.predefined": [[9, 5, 1, "", "predefined"]], "moptipyapps.dynamic_control.controllers.quadratic": [[9, 5, 1, "", "quadratic"]], "moptipyapps.dynamic_control.experiment_raw": [[8, 5, 1, "", "base_setup"], [8, 5, 1, "", "cmaes"], [8, 5, 1, "", "make_instances"], [8, 5, 1, "", "on_completion"], [8, 5, 1, "", "run"]], "moptipyapps.dynamic_control.experiment_surrogate": [[8, 1, 1, "", "MAX_FES"], [8, 5, 1, "", "base_setup"], [8, 5, 1, "", "cmaes_raw"], [8, 5, 1, "", "cmaes_surrogate"], [8, 5, 1, "", "make_instances"], [8, 5, 1, "", "on_completion"], [8, 5, 1, "", "run"]], "moptipyapps.dynamic_control.instance": [[8, 2, 1, "", "Instance"]], "moptipyapps.dynamic_control.instance.Instance": [[8, 4, 1, "", "controller"], [8, 3, 1, "", "describe_parameterization"], [8, 3, 1, "", "log_parameters_to"], [8, 4, 1, "", "name"], [8, 4, 1, "", "system"]], "moptipyapps.dynamic_control.model_objective": [[8, 2, 1, "", "ModelObjective"]], "moptipyapps.dynamic_control.model_objective.ModelObjective": [[8, 3, 1, "", "begin"], [8, 3, 1, "", "end"], [8, 3, 1, "", "evaluate"], [8, 3, 1, "", "log_parameters_to"], [8, 3, 1, "", "lower_bound"]], "moptipyapps.dynamic_control.objective": [[8, 2, 1, "", "FigureOfMerit"], [8, 2, 1, "", "FigureOfMeritLE"]], "moptipyapps.dynamic_control.objective.FigureOfMerit": [[8, 3, 1, "", "evaluate"], [8, 3, 1, "", "get_differentials"], [8, 3, 1, "", "initialize"], [8, 4, 1, "", "instance"], [8, 3, 1, "", "log_parameters_to"], [8, 3, 1, "", "lower_bound"], [8, 3, 1, "", "set_model"], [8, 3, 1, "", "set_raw"], [8, 3, 1, "", "sum_up_results"]], "moptipyapps.dynamic_control.objective.FigureOfMeritLE": [[8, 3, 1, "", "sum_up_results"]], "moptipyapps.dynamic_control.ode": [[8, 2, 1, "", "T"], [8, 5, 1, "", "diff_from_ode"], [8, 5, 1, "", "j_from_ode"], [8, 5, 1, "", "multi_run_ode"], [8, 5, 1, "", "run_ode"], [8, 5, 1, "", "t_from_ode"]], "moptipyapps.dynamic_control.results_log": [[8, 2, 1, "", "ResultsLog"]], "moptipyapps.dynamic_control.results_log.ResultsLog": [[8, 3, 1, "", "collector"]], "moptipyapps.dynamic_control.results_plot": [[8, 1, 1, "", "END_COLOR"], [8, 1, 1, "", "END_MARKER"], [8, 2, 1, "", "ResultsPlot"], [8, 1, 1, "", "START_COLOR"], [8, 1, 1, "", "START_MARKER"]], "moptipyapps.dynamic_control.results_plot.ResultsPlot": [[8, 3, 1, "", "collector"]], "moptipyapps.dynamic_control.starting_points": [[8, 5, 1, "", "interesting_point_objective"], [8, 5, 1, "", "interesting_point_transform"], [8, 5, 1, "", "make_interesting_starting_points"]], "moptipyapps.dynamic_control.surrogate_optimizer": [[8, 2, 1, "", "SurrogateOptimizer"]], "moptipyapps.dynamic_control.surrogate_optimizer.SurrogateOptimizer": [[8, 4, 1, "", "fancy_logs"], [8, 4, 1, "", "fes_for_training"], [8, 4, 1, "", "fes_for_warmup"], [8, 4, 1, "", "fes_per_model_run"], [8, 3, 1, "", "initialize"], [8, 3, 1, "", "log_parameters_to"], [8, 4, 1, "", "ms_for_training"], [8, 4, 1, "", "ms_per_model_run"], [8, 3, 1, "", "solve"], [8, 4, 1, "", "system_model"]], "moptipyapps.dynamic_control.system": [[8, 2, 1, "", "System"], [8, 2, 1, "", "T"]], "moptipyapps.dynamic_control.system.System": [[8, 4, 1, "", "control_dims"], [8, 3, 1, "", "describe_system"], [8, 3, 1, "", "describe_system_without_control"], [8, 3, 1, "", "equations"], [8, 4, 1, "", "gamma"], [8, 3, 1, "", "log_parameters_to"], [8, 4, 1, "", "name"], [8, 4, 1, "", "plot_examples"], [8, 3, 1, "", "plot_points"], [8, 4, 1, "", "state_dim_mod"], [8, 4, 1, "", "state_dims"], [8, 4, 1, "", "state_dims_in_j"], [8, 4, 1, "", "test_starting_states"], [8, 4, 1, "", "test_steps"], [8, 4, 1, "", "test_time"], [8, 4, 1, "", "training_starting_states"], [8, 4, 1, "", "training_steps"], [8, 4, 1, "", "training_time"]], "moptipyapps.dynamic_control.system_model": [[8, 2, 1, "", "SystemModel"]], "moptipyapps.dynamic_control.system_model.SystemModel": [[8, 3, 1, "", "log_parameters_to"], [8, 4, 1, "", "model"]], "moptipyapps.dynamic_control.systems": [[10, 0, 0, "-", "lorenz"], [10, 0, 0, "-", "stuart_landau"], [10, 0, 0, "-", "three_coupled_oscillators"]], "moptipyapps.dynamic_control.systems.lorenz": [[10, 1, 1, "", "LORENZ_111"], [10, 1, 1, "", "LORENZ_4"], [10, 5, 1, "", "make_lorenz"]], "moptipyapps.dynamic_control.systems.stuart_landau": [[10, 1, 1, "", "STUART_LANDAU_111"], [10, 1, 1, "", "STUART_LANDAU_4"], [10, 5, 1, "", "make_stuart_landau"]], "moptipyapps.dynamic_control.systems.three_coupled_oscillators": [[10, 1, 1, "", "THREE_COUPLED_OSCILLATORS"], [10, 5, 1, "", "make_3_couple_oscillators"]], "moptipyapps.order1d": [[11, 0, 0, "-", "distances"], [11, 0, 0, "-", "instance"], [11, 0, 0, "-", "space"]], "moptipyapps.order1d.distances": [[11, 5, 1, "", "swap_distance"]], "moptipyapps.order1d.instance": [[11, 2, 1, "", "Instance"], [11, 2, 1, "", "T"]], "moptipyapps.order1d.instance.Instance": [[11, 4, 1, "", "flow_power"], [11, 3, 1, "", "from_sequence_and_distance"], [11, 4, 1, "", "horizon"], [11, 3, 1, "", "log_parameters_to"], [11, 4, 1, "", "tag_titles"], [11, 4, 1, "", "tags"]], "moptipyapps.order1d.space": [[11, 2, 1, "", "OrderingSpace"]], "moptipyapps.order1d.space.OrderingSpace": [[11, 3, 1, "", "from_str"], [11, 4, 1, "", "instance"], [11, 3, 1, "", "to_str"]], "moptipyapps.qap": [[12, 0, 0, "-", "instance"], [12, 0, 0, "-", "objective"], [13, 0, 0, "-", "qaplib"]], "moptipyapps.qap.instance": [[12, 2, 1, "", "Instance"], [12, 5, 1, "", "trivial_bounds"]], "moptipyapps.qap.instance.Instance": [[12, 3, 1, "", "bks"], [12, 4, 1, "", "distances"], [12, 4, 1, "", "flows"], [12, 3, 1, "", "from_qaplib_stream"], [12, 3, 1, "", "from_resource"], [12, 3, 1, "", "list_resources"], [12, 3, 1, "", "log_parameters_to"], [12, 4, 1, "", "lower_bound"], [12, 4, 1, "", "n"], [12, 4, 1, "", "name"], [12, 4, 1, "", "upper_bound"]], "moptipyapps.qap.objective": [[12, 2, 1, "", "QAPObjective"]], "moptipyapps.qap.objective.QAPObjective": [[12, 3, 1, "", "evaluate"], [12, 4, 1, "", "instance"], [12, 3, 1, "", "log_parameters_to"], [12, 3, 1, "", "lower_bound"], [12, 3, 1, "", "upper_bound"]], "moptipyapps.qap.qaplib": [[13, 5, 1, "", "open_resource_stream"]], "moptipyapps.shared": [[3, 1, 1, "", "SCOPE_INSTANCE"], [3, 5, 1, "", "moptipyapps_argparser"], [3, 5, 1, "", "motipyapps_footer_bottom_comments"]], "moptipyapps.tests": [[14, 0, 0, "-", "on_binpacking2d"], [14, 0, 0, "-", "on_tsp"]], "moptipyapps.tests.on_binpacking2d": [[14, 5, 1, "", "binpacking_instances_for_tests"], [14, 5, 1, "", "make_packing_invalid"], [14, 5, 1, "", "make_packing_valid"], [14, 5, 1, "", "validate_algorithm_on_1_2dbinpacking"], [14, 5, 1, "", "validate_algorithm_on_2dbinpacking"], [14, 5, 1, "", "validate_objective_on_1_2dbinpacking"], [14, 5, 1, "", "validate_objective_on_2dbinpacking"], [14, 5, 1, "", "validate_signed_permutation_encoding_on_1_2dbinpacking"], [14, 5, 1, "", "validate_signed_permutation_encoding_on_2dbinpacking"]], "moptipyapps.tests.on_tsp": [[14, 5, 1, "", "make_tour_invalid"], [14, 5, 1, "", "make_tour_valid"], [14, 5, 1, "", "tsp_instances_for_tests"], [14, 5, 1, "", "validate_algorithm_on_1_tsp"], [14, 5, 1, "", "validate_algorithm_on_tsp"], [14, 5, 1, "", "validate_objective_on_1_tsp"], [14, 5, 1, "", "validate_objective_on_tsp"]], "moptipyapps.tsp": [[15, 0, 0, "-", "ea1p1_revn"], [15, 0, 0, "-", "fea1p1_revn"], [15, 0, 0, "-", "instance"], [15, 0, 0, "-", "known_optima"], [15, 0, 0, "-", "tour_length"], [16, 0, 0, "-", "tsplib"]], "moptipyapps.tsp.ea1p1_revn": [[15, 2, 1, "", "TSPEA1p1revn"], [15, 5, 1, "", "rev_if_not_worse"]], "moptipyapps.tsp.ea1p1_revn.TSPEA1p1revn": [[15, 3, 1, "", "log_parameters_to"], [15, 3, 1, "", "solve"]], "moptipyapps.tsp.fea1p1_revn": [[15, 2, 1, "", "TSPFEA1p1revn"], [15, 5, 1, "", "rev_if_h_not_worse"]], "moptipyapps.tsp.fea1p1_revn.TSPFEA1p1revn": [[15, 4, 1, "", "do_log_h"], [15, 4, 1, "", "instance"], [15, 3, 1, "", "log_parameters_to"], [15, 3, 1, "", "solve"]], "moptipyapps.tsp.instance": [[15, 2, 1, "", "Instance"], [15, 5, 1, "", "ncities_from_tsplib_name"]], "moptipyapps.tsp.instance.Instance": [[15, 3, 1, "", "from_file"], [15, 3, 1, "", "from_resource"], [15, 4, 1, "", "is_symmetric"], [15, 3, 1, "", "list_resources"], [15, 3, 1, "", "log_parameters_to"], [15, 4, 1, "", "n_cities"], [15, 4, 1, "", "name"], [15, 3, 1, "", "to_stream"], [15, 4, 1, "", "tour_length_lower_bound"], [15, 4, 1, "", "tour_length_upper_bound"]], "moptipyapps.tsp.known_optima": [[15, 5, 1, "", "list_resource_tours"], [15, 5, 1, "", "opt_tour_from_file"], [15, 5, 1, "", "opt_tour_from_resource"]], "moptipyapps.tsp.tour_length": [[15, 2, 1, "", "TourLength"], [15, 5, 1, "", "tour_length"]], "moptipyapps.tsp.tour_length.TourLength": [[15, 3, 1, "", "evaluate"], [15, 4, 1, "", "instance"], [15, 3, 1, "", "log_parameters_to"], [15, 3, 1, "", "lower_bound"], [15, 3, 1, "", "upper_bound"]], "moptipyapps.tsp.tsplib": [[16, 5, 1, "", "open_resource_stream"]], "moptipyapps.ttp": [[17, 0, 0, "-", "errors"], [17, 0, 0, "-", "game_encoding"], [17, 0, 0, "-", "game_plan"], [17, 0, 0, "-", "game_plan_space"], [17, 0, 0, "-", "instance"], [17, 0, 0, "-", "plan_length"], [18, 0, 0, "-", "robinx"]], "moptipyapps.ttp.errors": [[17, 2, 1, "", "Errors"], [17, 5, 1, "", "count_errors"]], "moptipyapps.ttp.errors.Errors": [[17, 3, 1, "", "evaluate"], [17, 4, 1, "", "instance"], [17, 3, 1, "", "is_always_integer"], [17, 3, 1, "", "lower_bound"], [17, 3, 1, "", "upper_bound"]], "moptipyapps.ttp.game_encoding": [[17, 2, 1, "", "GameEncoding"], [17, 5, 1, "", "map_games"], [17, 5, 1, "", "search_space_for_n_and_rounds"]], "moptipyapps.ttp.game_encoding.GameEncoding": [[17, 4, 1, "", "instance"], [17, 3, 1, "", "search_space"]], "moptipyapps.ttp.game_plan": [[17, 2, 1, "", "GamePlan"]], "moptipyapps.ttp.game_plan.GamePlan": [[17, 4, 1, "", "instance"]], "moptipyapps.ttp.game_plan_space": [[17, 2, 1, "", "GamePlanSpace"]], "moptipyapps.ttp.game_plan_space.GamePlanSpace": [[17, 3, 1, "", "create"], [17, 3, 1, "", "from_str"], [17, 4, 1, "", "instance"], [17, 3, 1, "", "is_equal"], [17, 3, 1, "", "log_parameters_to"], [17, 3, 1, "", "n_points"], [17, 3, 1, "", "validate"]], "moptipyapps.ttp.instance": [[17, 2, 1, "", "Instance"]], "moptipyapps.ttp.instance.Instance": [[17, 4, 1, "", "away_streak_max"], [17, 4, 1, "", "away_streak_min"], [17, 3, 1, "", "from_file"], [17, 3, 1, "", "from_resource"], [17, 4, 1, "", "game_plan_dtype"], [17, 3, 1, "", "get_optimal_plan_length_bounds"], [17, 4, 1, "", "home_streak_max"], [17, 4, 1, "", "home_streak_min"], [17, 3, 1, "", "list_resources"], [17, 3, 1, "", "log_parameters_to"], [17, 4, 1, "", "rounds"], [17, 4, 1, "", "separation_max"], [17, 4, 1, "", "separation_min"], [17, 4, 1, "", "teams"]], "moptipyapps.ttp.plan_length": [[17, 2, 1, "", "GamePlanLength"], [17, 5, 1, "", "game_plan_length"]], "moptipyapps.ttp.plan_length.GamePlanLength": [[17, 4, 1, "", "bye_penalty"], [17, 3, 1, "", "evaluate"], [17, 4, 1, "", "instance"], [17, 3, 1, "", "is_always_integer"], [17, 3, 1, "", "log_parameters_to"], [17, 3, 1, "", "lower_bound"], [17, 3, 1, "", "upper_bound"]], "moptipyapps.ttp.robinx": [[18, 5, 1, "", "open_resource_stream"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "data", "Python data"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"], "4": ["py", "attribute", "Python attribute"], "5": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:data", "2": "py:class", "3": "py:method", "4": "py:attribute", "5": "py:function"}, "terms": {"": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 17], "0": [0, 1, 4, 6, 7, 8, 9, 10, 11, 12, 15, 17], "000": 8, "0000000000": 8, "001": [0, 1, 11], "00367": 10, "00367v1": 10, "00437": [4, 5], "00445931": 8, "005": [4, 12], "01": 17, "012": [0, 1, 11], "01717796": 8, "01808": 4, "021": 4, "03": 17, "030": 17, "0303": 12, "032": 12, "03484": 8, "037": 12, "04": [12, 17], "05": [12, 17], "061": 17, "06765771": 8, "07757": 8, "08": 4, "084": [8, 9, 10], "09": 12, "0x7f2d51cf11c0": 15, "0x7f2d51e91b60": 14, "0x7f2d51e93a00": 14, "0x7f2d7fd1d800": 4, "0x7f2d90720770": 4, "0x7f2d911a4900": 4, "0x7f2d9126f2e0": 4, "0x7f2d9135e7a0": 4, "0x7f2d913656c0": 4, "0x7f2d913daa20": 4, "0x7f2d913daac0": 4, "0x7f2d913dac00": 4, "0x7f2d913daca0": 4, "0x7f2d913dad40": 4, "0x7f2d913dade0": 4, "0x7f2d913daf20": 4, "0x7f2d913dafc0": 4, "0x7f2d91722b60": 4, "0x7f2d9174d580": 4, "1": [4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17], "10": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17], "100": [4, 6, 7, 8, 11, 14, 15], "1000": 8, "10000": [6, 8], "100000": 6, "1000000": [4, 6], "1001": 4, "10022296": 15, "10061706": 6, "10064146": 6, "10065000": 6, "1006529012972": 15, "1007": [4, 12, 15, 17], "1008293323270": [12, 13], "1016": [4, 5, 12, 17], "1017": 15, "1019": 8, "1020": 8, "1023": [12, 13, 15], "1035": 7, "10409396852733332453861621760000": 4, "10482": 8, "105": 12, "10500": 7, "1052": 8, "1057": 4, "1058": 8, "10677249": 8, "1093": 4, "1098": 6, "10f": 8, "11": [4, 8, 12, 15, 17], "110": [0, 1, 8], "1101": 6, "1109": 15, "111": [10, 12, 15], "112": [4, 5], "1120": 4, "11245": 4, "113": 15, "11484713": 8, "1158": 4, "1160": 6, "118": 17, "12": [0, 1, 4, 6, 7, 8, 12, 15, 17], "1208": 6, "1215": 6, "1216": 6, "1219": 6, "122": 6, "1220": [4, 6], "128": 8, "1287": [15, 16], "129": 15, "12993": 15, "13": [4, 6, 7, 12, 15, 17], "134": [12, 15], "1389": 4, "14": [4, 8, 12, 15, 17], "1420": 12, "14285714285714": 8, "1428571429": 8, "144": [7, 8], "145": 17, "1483": 15, "15": [4, 6, 7, 12, 15, 17], "15000": 7, "15388": 12, "154": 17, "156": 4, "1560": 15, "16": [4, 6, 8, 11, 12, 17], "160": [12, 17], "162": 17, "163": [0, 1, 4, 5, 6, 7], "1649": 6, "1680": 4, "17": [6, 12, 15, 17], "170": 15, "1705": 10, "171": 6, "1713": 12, "173": [12, 15], "174": 15, "175": 15, "176": 12, "179": 17, "18": [4, 8, 12, 15, 17], "1809": 12, "18515": 8, "1852": 4, "187": 12, "19": [6, 12, 15, 17], "1932": 17, "1938": 17, "196": 4, "1982": 4, "1985": 15, "1987": 4, "1991": [12, 15, 16], "1993": 12, "1994": 12, "1995": [12, 15, 16], "1997": [12, 13], "1998": 12, "1999": [4, 5, 15], "1e100": 8, "1e50": 8, "2": [4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 17], "20": [4, 6, 7, 12], "2000": 15, "2001": 17, "2002": 15, "2003": 12, "2004": 17, "2005": [12, 17], "2006": 17, "2007": [0, 1, 12, 15, 17], "2008": 12, "2009": 4, "200922": 8, "2010": 4, "2011": [4, 12, 13], "20132119": 8, "2014": 15, "2016": 4, "2017": 10, "2018": [10, 12, 13], "2022": [4, 8, 9, 10, 15], "202208220937": [8, 9, 10], "2023": [0, 1, 8, 9, 10, 12, 13], "2024": [12, 15, 17], "209": 4, "21": [7, 12, 13], "21311": 4, "216": 11, "22": [12, 15], "220270875": 17, "22068": 15, "2217": [4, 5], "224": 8, "224416": 12, "2291": 15, "23": [4, 12], "2315": 4, "2326101": 15, "23423923": 8, "24": [4, 6, 12, 17], "24355": [8, 9, 10], "244": [6, 8], "24423": 10, "248": 15, "25": [4, 7, 11, 12, 17], "2500": 7, "256": 14, "2579": 15, "26": [12, 17], "2600": 7, "26154": 8, "2698": 6, "27": [4, 6, 11, 12], "2700": 7, "2730": 6, "2748": 6, "2750": [4, 6], "27921153": 8, "28": 12, "280": 15, "28108707": 8, "286": 4, "2887": 8, "29": [0, 1, 12], "2992": 12, "2d": [0, 1, 4, 6, 14], "2dpacklib": [0, 1, 4], "2n": 17, "2nd": [0, 1, 11], "3": [4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 16, 17], "30": [7, 10, 12, 17], "300": 7, "3000": 10, "30774895": 8, "31": [7, 12, 17], "315092303249095": 4, "32": 12, "324": 8, "33": 8, "33029": 8, "330799": 15, "335": 15, "33630621": 8, "337": 15, "35": 11, "353": 4, "357": 4, "36": [6, 11], "360": 15, "366": 6, "367": 15, "3672": 12, "37": 4, "3715414": 8, "376": [15, 16], "3774": 15, "3778740795710009": 6, "3781": 15, "3796": 12, "38": [4, 6, 8, 17], "384": [4, 15, 16], "386": 4, "39": 6, "39003072": 8, "39064": 8, "391": [12, 13], "3_19": 4, "3f": 8, "3oscil": 10, "4": [4, 5, 6, 7, 8, 10, 11, 12, 15, 16, 17], "40": [4, 7, 15], "403": [12, 13], "403374": 8, "407810": 8, "41234557": 8, "413": [4, 5], "41881729": 8, "420": [4, 5], "4209649817": 8, "423": 4, "42863": 17, "429": 4, "43": 12, "4314431443": 8, "433": 4, "4364436444": 8, "441": 6, "443": 12, "44328": 8, "45": [6, 8], "455": 12, "45578": 17, "4562": 12, "4571309653": 8, "46": 17, "4613": 12, "463": 4, "47": 17, "471": [4, 15], "480": 4, "486": 4, "49": 3, "49071198": 8, "497": 12, "5": [4, 5, 6, 7, 8, 11, 12, 15, 17], "50": [4, 7, 8], "500": 4, "5000": 8, "50305736": 8, "50474": 12, "505": 10, "509": 7, "5100": 7, "51392": 8, "514": 12, "516": 4, "52": 15, "52310": 8, "525": 7, "534": [7, 10], "540": 17, "5426670": 12, "545914": 4, "55": 12, "557": 4, "56": 4, "578": 12, "58": 6, "580": 17, "584": 17, "5f": 8, "5th": 11, "6": [4, 6, 8, 10, 11, 12, 15, 17], "60": [4, 7], "6000": 7, "615": 7, "616": 8, "618033988749895": 9, "62": 6, "64": [8, 11], "642": 4, "65406": 15, "657": 12, "660": 6, "6600": 7, "66154475": 8, "66567": 8, "6681531": 8, "67": 17, "6864377172744689378196133203444067624537070830997366604446306636401": 17, "69": 4, "690": [8, 12], "691": 15, "7": [4, 6, 7, 8, 11, 12, 15, 17], "70": [4, 8, 10], "706": 4, "71067811865474": 8, "7106781187": 8, "7162129779": 8, "72": 8, "7305688": 6, "74": 4, "74535599": 8, "75": [4, 8], "750": 8, "75627": 8, "75724629": 8, "75766315": 8, "75958357": 8, "7600": 7, "76928033": 8, "772": 4, "775": 17, "7750": 7, "77767": 8, "787": 17, "7900": 7, "79766443076872509863361": 17, "7_43": 17, "8": [4, 8, 11, 12, 15, 17], "80": 4, "806": 4, "80665": 8, "8107197148": 8, "830": 15, "8300": 7, "84": 7, "840": 4, "8411064": 8, "84621757": 8, "84901441": 8, "851": 17, "86": 12, "86153": 8, "87": 12, "8750": 7, "8776461858988774": 6, "878": 6, "8781459580052053": 6, "882": 8, "88214": 8, "890": 8, "8th": 4, "9": [4, 6, 7, 8, 11, 12, 15, 17], "90": [0, 1, 5, 6], "900": 7, "902": 8, "90413": 15, "92": 15, "9223372036854775807": 4, "924": 8, "926": 4, "93": 6, "94": 7, "95": 12, "9547": 15, "961": [7, 8], "97": [4, 5, 8, 12], "976": 6, "978": [4, 12, 17], "9781612085104": 4, "98": [6, 8], "986": 4, "9866528870384179": 6, "9876395399254564": 6, "991": 4, "9910948": 6, "9995959203471327": 6, "9_27": 12, "A": [0, 1, 4, 6, 8, 9, 10, 11, 12, 13, 15, 16, 17], "And": [0, 1, 5, 7, 8, 11], "As": [6, 9, 15, 17], "At": [6, 11], "Be": 15, "But": [0, 1, 5, 6, 7, 8, 9, 11, 15], "By": 17, "FOR": [0, 1], "For": [0, 1, 5, 7, 8, 9, 11, 15, 17], "If": [0, 1, 4, 5, 6, 7, 8, 9, 11, 15, 17], "In": [0, 1, 4, 5, 6, 7, 8, 9, 11, 12, 15, 17], "It": [0, 1, 4, 5, 6, 7, 8, 11, 15, 17], "NOT": 11, "No": 17, "OR": 4, "Of": [0, 1, 6, 8, 11, 15, 17], "On": [0, 1, 15], "One": [4, 11, 17], "Or": [0, 1], "Such": [0, 1, 4, 8, 11, 15, 17], "That": [0, 1, 5, 8, 11], "The": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18], "Then": [0, 1, 5, 6, 8, 11, 15, 17], "There": [4, 10, 11, 17], "These": [0, 1, 6, 8, 9, 15, 17], "To": [0, 1, 6, 8], "With": [4, 6, 7, 8], "_": [3, 15], "__file__": [3, 15, 17], "__getitem__": 15, "__lb_geometr": 4, "__normalize_2dpacklib_inst_nam": 4, "_bpcmae": 8, "_decod": 4, "_dist": 11, "_dist2": 11, "_from_stream": 15, "_tag": 11, "a01": 4, "a02": 4, "a03": 4, "a04": [4, 6], "a04n": 6, "a05": 4, "a06": 4, "a07": 4, "a08": 4, "a09": 4, "a1": 6, "a10": 4, "a11": 4, "a12": 4, "a13": 4, "a14": 4, "a15": 4, "a16": 4, "a17": 4, "a18": 4, "a19": 4, "a20": 4, "a21": 4, "a22": 4, "a23": 4, "a24": 4, "a25": 4, "a26": 4, "a27": 4, "a28": 4, "a280": 15, "a29": 4, "a30": 4, "a31": 4, "a32": 4, "a33": 4, "a34": 4, "a35": 4, "a36": 4, "a37": 4, "a38": 4, "a39": 4, "a40": 4, "a41": 4, "a42": 4, "a43": 4, "a_larg": [3, 4], "a_m": [3, 4], "a_smal": [3, 4], "ab": [9, 10, 11], "abl": [8, 17], "about": [0, 1, 8, 11, 15, 17], "abov": [0, 1, 3, 5, 6, 7, 8, 9, 11], "abraham": 15, "abreu": 12, "abroad": 17, "absenc": [0, 1], "absolut": 6, "abstractcontextmanag": 8, "academ": 15, "accept": 15, "access": 12, "accommod": 7, "accord": [0, 1, 5, 11], "accordingli": 8, "account": 15, "accur": [8, 9], "accuraci": 8, "achiev": [0, 1, 8], "activ": [0, 1, 9], "actual": [0, 1, 5, 6, 7, 8, 9, 11, 15, 16, 18], "ad": [0, 1, 4, 6, 7, 8, 10, 15, 17], "adapt": 12, "add": [0, 1, 4, 6, 7, 8, 17], "addit": [0, 1, 3, 4, 6, 9, 11], "addition": [0, 1, 4, 6, 12, 15, 17], "address": [0, 1], "adher": 17, "administr": [17, 18], "advic": 8, "advis": 15, "affect": 17, "after": [4, 6, 8, 11, 17], "again": [0, 1, 5, 6, 7, 8, 10, 15, 17], "against": [0, 1, 17], "aggreg": [0, 1, 4], "ah": 15, "ai": 4, "aida": 12, "aim": 12, "alert": [0, 1], "alexand": 15, "alfonsa": 12, "algo_from_pr": 4, "algo_select": 4, "algo_sort_kei": 4, "algorithm": [0, 1, 3, 4, 5, 6, 8, 9, 12, 14, 15, 17], "ali535": 15, "alia": [8, 11], "all": [0, 1, 4, 5, 6, 7, 8, 9, 11, 12, 15, 17], "allevi": [5, 8], "alloc": 8, "allow": [4, 6, 7, 8, 9, 10, 15, 17], "almost": [0, 1, 4, 7], "alon": 5, "along": [0, 1], "alphabet": [0, 1], "alreadi": [5, 8, 11, 15, 17], "also": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 15, 17], "altern": 8, "alv": 4, "alwai": [0, 1, 5, 6, 7, 8, 9, 11, 17], "american": 12, "among": [0, 1, 9], "amongst": 7, "amount": [0, 1, 6], "an": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 17, 18], "analys": [0, 1], "analyt": 4, "analyz": [0, 1], "anchor": 9, "andrea": 12, "angewandt": [15, 16], "angl": 8, "anhui": [0, 1, 4, 5, 6, 7, 12, 15, 17], "ani": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 17], "anjo": [0, 1], "ann": [3, 8], "anneal": 12, "annoi": 5, "annot": [0, 1], "anoth": [0, 1, 4, 5, 6, 7, 8, 11, 17], "ant": 12, "anti": [0, 1], "anupam": 15, "anymor": [5, 7, 8], "anyth": [6, 11, 15, 16, 18], "anywai": [0, 1, 4, 8, 11], "aom": 10, "ap": 3, "apart": 11, "api": [0, 1, 4, 17], "appear": [11, 17], "append": [4, 15], "append_almost_squares_str": [3, 4], "appleg": 15, "appli": [0, 1, 4, 5, 6, 7, 8, 12, 15, 17], "applic": [3, 4, 6, 12], "approach": [4, 8], "appropri": 8, "approxim": [4, 6, 15], "apr": 10, "april": 15, "ar": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 17], "arang": 11, "arbitrari": 9, "arbitrarili": 6, "arc": 4, "architectur": 9, "archiv": [4, 10], "arctan": 9, "area": [4, 6, 7], "area_of_items_in_last_bin": 7, "arg": 9, "argpars": 3, "argument": [3, 17], "argumentpars": 3, "argwher": 8, "arithmet": 8, "around": [0, 1, 8, 9, 10, 16, 18], "arrai": [4, 5, 6, 7, 8, 11, 12, 17], "arrang": [0, 1, 11], "array2str": 15, "arriv": [6, 8, 11], "artifici": [0, 1, 4, 5, 6, 7, 8, 9, 12, 15, 17], "arxiv": 10, "asqa": [3, 4], "asqas03": 4, "asqas08": 4, "asqas20": 4, "asqas34": 4, "assess": 6, "assign": [4, 8, 11, 12, 13, 15, 17], "associ": 8, "assum": [11, 15], "asymmetr": [14, 15, 17], "atl": 17, "atop": [0, 1], "atsp": 15, "att48": 15, "att532": 15, "attempt": 8, "attribut": 4, "august": [4, 15, 17], "author": [0, 1], "autoflak": [0, 1], "automat": [0, 1, 5, 9, 15], "avail": [0, 1, 4, 8, 12, 15, 17], "averag": [4, 8, 11], "awai": [0, 1, 6, 8, 11, 15, 17], "awar": 15, "away_idi": 17, "away_idx": 17, "away_streak_max": [3, 17], "away_streak_min": [3, 17], "awaystreakmax": 17, "awaystreakmin": 17, "awesom": 9, "axi": [0, 1, 11], "a\u00b2": 9, "a\u00b2b": 9, "a\u00b3": 9, "b": [0, 1, 4, 7, 8, 9, 11, 15, 17], "b1": 11, "b101971": 15, "b1982prpaha": 4, "b2": 11, "b4": 11, "back": [0, 1, 4, 6, 8, 9, 15, 17], "bad": 8, "baidu": 15, "baidumap": 15, "bandit": [0, 1], "base": [0, 1, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 17], "base_dir": [4, 6, 8], "base_nam": 8, "base_setup": [3, 4, 8], "basi": 17, "basic": [0, 1, 3, 4, 5, 6, 8, 9, 11, 15, 17], "bayg29": 15, "bays29": 15, "bdc2015rhhaftoono2bpp": 4, "becaus": [0, 1, 5, 6, 7, 8, 11, 15, 17], "becom": [5, 7, 8, 9, 12], "been": [0, 1, 3, 4, 5, 6, 7, 12, 15, 17], "befor": [0, 1, 6, 8, 11, 15, 16, 17], "begin": [0, 1, 3, 5, 6, 8, 11, 17], "begin_i": [4, 15, 17], "behav": 8, "behavior": [8, 9], "behind": 7, "beij": 15, "being": [7, 8], "belgium": [17, 18], "belong": 4, "below": [0, 1, 7, 17], "benchmark": [0, 1, 4, 6, 12, 13, 15, 17, 18], "benefici": [3, 8], "beng": 4, "beng01": 4, "beng02": 4, "beng03": 4, "beng04": 4, "beng05": 4, "beng06": 4, "beng07": 4, "beng08": 4, "beng09": 4, "beng10": 4, "beng_1_8": [3, 4], "beng_9_10": [3, 4], "bengt": 4, "bengtsson": 4, "berg": [4, 15], "berkei": 4, "berlin": [4, 17], "berlin52": 15, "bernd": [8, 9, 10], "besid": [0, 1], "best": [0, 1, 4, 7, 8, 12], "better": [0, 1, 5, 7, 8, 15], "between": [0, 1, 7, 8, 11, 12, 15, 17], "bhulai": 4, "bi": 8, "bibtex": 4, "bier127": 15, "big": [0, 1, 4, 5, 6, 7, 11, 12, 15, 17], "bin": [3, 4, 5, 6, 7, 14, 17], "bin_area": 7, "bin_bound": [3, 4], "bin_count": [3, 4], "bin_count_and_empti": [3, 4], "bin_count_and_last_empti": [3, 4], "bin_count_and_last_skylin": [3, 4], "bin_count_and_last_smal": [3, 4], "bin_count_and_lowest_skylin": [3, 4], "bin_count_and_smal": [3, 4], "bin_count_nam": [4, 7], "bin_height": [3, 4, 6, 7], "bin_width": [3, 4, 6, 7], "binari": 6, "bincount": [4, 7], "bincountandempti": [4, 7], "bincountandlastempti": [4, 7], "bincountandlastskylin": [4, 7], "bincountandlastsmal": [4, 7], "bincountandlowestskylin": [4, 7], "bincountandsmal": [4, 7], "binheight": 4, "binpacking2d": [0, 1, 2, 3], "binpacking_instances_for_test": [3, 14], "binpacklib2d_fil": 4, "binwidth": 4, "bipop": [6, 8], "bipopcma": 8, "bit": [5, 6, 8, 11], "bixbi": 15, "bk": [2, 3, 12], "bl": [4, 5], "bla": [3, 11], "black": [0, 1, 9, 14, 17], "blade": 8, "blue": 8, "blueprint": [8, 9, 17], "boaventura": 12, "book": [8, 10], "bool": [4, 6, 7, 8, 14, 15, 17], "border": 7, "bor\u00e9": 10, "both": [4, 8, 11, 17], "bother": 11, "bottem": 5, "bottom": [0, 1, 4, 5], "bound": [0, 1, 4, 6, 7, 8, 11, 12, 15, 17], "box": [0, 1, 9, 14, 17], "bpp": [4, 6], "br17": 15, "bra24": 17, "braam": 4, "braunschweig": [8, 9, 10], "brazil58": 15, "break": 17, "brg180": 15, "bring": [0, 1, 8], "brkga": 4, "brkga_bpp_2r": [3, 4], "brkga_bpp_anb": [3, 4], "brkgabppranb": 4, "brkgabpprtr": 4, "bs2013st2bppbmoahea": 4, "budget": 8, "bug": [0, 1], "bugbear": [0, 1], "build": [0, 1, 8, 9], "built": 15, "bulck": [0, 1, 17, 18], "bur26a": 12, "burkard": [0, 1, 12, 13], "busi": [12, 17, 18], "bw1987tdfbpa": 4, "bye": 17, "bye_penalti": [3, 17], "b\u00b2": 9, "b\u00b2a": 9, "b\u00b3": 9, "b\u00f6lte": 12, "c": [0, 1, 7, 8, 9, 15, 17], "ca": [0, 1, 12, 13], "cach": [4, 9], "calcul": [4, 15], "call": [0, 1, 3, 4, 6, 7, 8, 15, 17], "callabl": [4, 6, 8, 9, 11, 14, 15, 17], "can": [0, 1, 3, 4, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18], "candid": [12, 15, 17], "cannot": [0, 1, 5, 7, 8, 11, 15, 17], "canon": 4, "cao": 17, "car": 15, "care": [0, 1, 11, 17], "carvalho": 4, "case": [0, 1, 4, 5, 6, 7, 8, 9, 11, 17], "cast": 11, "caus": [0, 1, 17], "cc": [0, 1], "celso": 17, "center": [0, 1, 11], "certain": [5, 7, 9], "cgrs2020pacatsmtoosft2bpp": 4, "ch130": 15, "ch150": 15, "chanc": [5, 7], "chang": [0, 1, 6, 8, 15], "changsha": 15, "characterist": 6, "charl": 12, "chart": [0, 1, 4, 5], "cheap": [8, 9], "check": [0, 1, 4, 5, 6, 14, 15, 17], "chee": 15, "chen": [12, 15], "chichest": 15, "china": [0, 1, 4, 5, 6, 7, 8, 9, 10, 12, 15, 17], "chines": 15, "chiong": 15, "choic": 9, "chongq": 15, "choos": [6, 11], "chose": 11, "chosen": [6, 8], "chr25a": 12, "chunyan": 15, "chv\u00e1tal": 15, "cindi": 15, "circ4": 17, "circ6": 17, "circ8": 17, "circl": [0, 1, 10, 11], "circular": [0, 1], "citi": [0, 1, 15, 17], "cl01_020_01": 4, "cl01_020_02": 4, "cl01_020_03": 4, "cl01_020_04": 4, "cl01_020_05": 4, "cl01_020_06": 4, "cl01_020_07": 4, "cl01_020_08": 4, "cl01_020_09": 4, "cl01_020_10": 4, "cl01_040_01": 4, "cl01_040_02": 4, "cl01_040_03": 4, "cl01_040_04": 4, "cl01_040_05": 4, "cl01_040_06": 4, "cl01_040_07": 4, "cl01_040_08": 4, "cl01_040_09": 4, "cl01_040_10": 4, "cl01_060_01": 4, "cl01_060_02": 4, "cl01_060_03": 4, "cl01_060_04": 4, "cl01_060_05": 4, "cl01_060_06": 4, "cl01_060_07": 4, "cl01_060_08": 4, "cl01_060_09": 4, "cl01_060_10": 4, "cl01_080_01": 4, "cl01_080_02": 4, "cl01_080_03": 4, "cl01_080_04": 4, "cl01_080_05": 4, "cl01_080_06": 4, "cl01_080_07": 4, "cl01_080_08": 4, "cl01_080_09": 4, "cl01_080_10": 4, "cl01_100_01": 4, "cl01_100_02": 4, "cl01_100_03": 4, "cl01_100_04": 4, "cl01_100_05": 4, "cl01_100_06": 4, "cl01_100_07": 4, "cl01_100_08": 4, "cl01_100_09": 4, "cl01_100_10": 4, "cl02_020_01": 4, "cl02_020_02": 4, "cl02_020_03": 4, "cl02_020_04": 4, "cl02_020_05": 4, "cl02_020_06": 4, "cl02_020_07": 4, "cl02_020_08": 4, "cl02_020_09": 4, "cl02_020_10": 4, "cl02_040_01": 4, "cl02_040_02": 4, "cl02_040_03": 4, "cl02_040_04": 4, "cl02_040_05": 4, "cl02_040_06": 4, "cl02_040_07": 4, "cl02_040_08": 4, "cl02_040_09": 4, "cl02_040_10": 4, "cl02_060_01": 4, "cl02_060_02": 4, "cl02_060_03": 4, "cl02_060_04": 4, "cl02_060_05": 4, "cl02_060_06": 4, "cl02_060_07": 4, "cl02_060_08": 4, "cl02_060_09": 4, "cl02_060_10": 4, "cl02_080_01": 4, "cl02_080_02": 4, "cl02_080_03": 4, "cl02_080_04": 4, "cl02_080_05": 4, "cl02_080_06": 4, "cl02_080_07": 4, "cl02_080_08": 4, "cl02_080_09": 4, "cl02_080_10": 4, "cl02_100_01": 4, "cl02_100_02": 4, "cl02_100_03": 4, "cl02_100_04": 4, "cl02_100_05": 4, "cl02_100_06": 4, "cl02_100_07": 4, "cl02_100_08": 4, "cl02_100_09": 4, "cl02_100_10": 4, "cl03_020_01": 4, "cl03_020_02": 4, "cl03_020_03": 4, "cl03_020_04": 4, "cl03_020_05": 4, "cl03_020_06": 4, "cl03_020_07": 4, "cl03_020_08": 4, "cl03_020_09": 4, "cl03_020_10": 4, "cl03_040_01": 4, "cl03_040_02": 4, "cl03_040_03": 4, "cl03_040_04": 4, "cl03_040_05": 4, "cl03_040_06": 4, "cl03_040_07": 4, "cl03_040_08": 4, "cl03_040_09": 4, "cl03_040_10": 4, "cl03_060_01": 4, "cl03_060_02": 4, "cl03_060_03": 4, "cl03_060_04": 4, "cl03_060_05": 4, "cl03_060_06": 4, "cl03_060_07": 4, "cl03_060_08": 4, "cl03_060_09": 4, "cl03_060_10": 4, "cl03_080_01": 4, "cl03_080_02": 4, "cl03_080_03": 4, "cl03_080_04": 4, "cl03_080_05": 4, "cl03_080_06": 4, "cl03_080_07": 4, "cl03_080_08": 4, "cl03_080_09": 4, "cl03_080_10": 4, "cl03_100_01": 4, "cl03_100_02": 4, "cl03_100_03": 4, "cl03_100_04": 4, "cl03_100_05": 4, "cl03_100_06": 4, "cl03_100_07": 4, "cl03_100_08": 4, "cl03_100_09": 4, "cl03_100_10": 4, "cl04_020_01": 4, "cl04_020_01n": 6, "cl04_020_02": 4, "cl04_020_03": 4, "cl04_020_04": 4, "cl04_020_05": 4, "cl04_020_06": 4, "cl04_020_07": 4, "cl04_020_08": 4, "cl04_020_09": 4, "cl04_020_10": 4, "cl04_040_01": 4, "cl04_040_02": 4, "cl04_040_03": 4, "cl04_040_04": 4, "cl04_040_05": 4, "cl04_040_06": 4, "cl04_040_07": 4, "cl04_040_08": 4, "cl04_040_09": 4, "cl04_040_10": 4, "cl04_060_01": 4, "cl04_060_02": 4, "cl04_060_03": 4, "cl04_060_04": 4, "cl04_060_05": 4, "cl04_060_06": 4, "cl04_060_07": 4, "cl04_060_08": 4, "cl04_060_09": 4, "cl04_060_10": 4, "cl04_080_01": 4, "cl04_080_02": 4, "cl04_080_03": 4, "cl04_080_04": 4, "cl04_080_05": 4, "cl04_080_06": 4, "cl04_080_07": 4, "cl04_080_08": 4, "cl04_080_09": 4, "cl04_080_10": 4, "cl04_100_01": 4, "cl04_100_02": 4, "cl04_100_03": 4, "cl04_100_04": 4, "cl04_100_05": 4, "cl04_100_06": 4, "cl04_100_07": 4, "cl04_100_08": 4, "cl04_100_09": 4, "cl04_100_10": 4, "cl05_020_01": 4, "cl05_020_02": 4, "cl05_020_03": 4, "cl05_020_04": 4, "cl05_020_05": 4, "cl05_020_06": 4, "cl05_020_07": 4, "cl05_020_08": 4, "cl05_020_09": 4, "cl05_020_10": 4, "cl05_040_01": 4, "cl05_040_02": 4, "cl05_040_03": 4, "cl05_040_04": 4, "cl05_040_05": 4, "cl05_040_06": 4, "cl05_040_07": 4, "cl05_040_08": 4, "cl05_040_09": 4, "cl05_040_10": 4, "cl05_060_01": 4, "cl05_060_02": 4, "cl05_060_03": 4, "cl05_060_04": 4, "cl05_060_05": 4, "cl05_060_06": 4, "cl05_060_07": 4, "cl05_060_08": 4, "cl05_060_09": 4, "cl05_060_10": 4, "cl05_080_01": 4, "cl05_080_02": 4, "cl05_080_03": 4, "cl05_080_04": 4, "cl05_080_05": 4, "cl05_080_06": 4, "cl05_080_07": 4, "cl05_080_08": 4, "cl05_080_09": 4, "cl05_080_10": 4, "cl05_100_01": 4, "cl05_100_02": 4, "cl05_100_03": 4, "cl05_100_04": 4, "cl05_100_05": 4, "cl05_100_06": 4, "cl05_100_07": 4, "cl05_100_08": 4, "cl05_100_09": 4, "cl05_100_10": 4, "cl06_020_01": 4, "cl06_020_02": 4, "cl06_020_03": 4, "cl06_020_04": 4, "cl06_020_05": 4, "cl06_020_06": 4, "cl06_020_07": 4, "cl06_020_08": 4, "cl06_020_09": 4, "cl06_020_10": 4, "cl06_040_01": 4, "cl06_040_02": 4, "cl06_040_03": 4, "cl06_040_04": 4, "cl06_040_05": 4, "cl06_040_06": 4, "cl06_040_07": 4, "cl06_040_08": 4, "cl06_040_09": 4, "cl06_040_10": 4, "cl06_060_01": 4, "cl06_060_02": 4, "cl06_060_03": 4, "cl06_060_04": 4, "cl06_060_05": 4, "cl06_060_06": 4, "cl06_060_07": 4, "cl06_060_08": 4, "cl06_060_09": 4, "cl06_060_10": 4, "cl06_080_01": 4, "cl06_080_02": 4, "cl06_080_03": 4, "cl06_080_04": 4, "cl06_080_05": 4, "cl06_080_06": 4, "cl06_080_07": 4, "cl06_080_08": 4, "cl06_080_09": 4, "cl06_080_10": 4, "cl06_100_01": 4, "cl06_100_02": 4, "cl06_100_03": 4, "cl06_100_04": 4, "cl06_100_05": 4, "cl06_100_06": 4, "cl06_100_07": 4, "cl06_100_08": 4, "cl06_100_09": 4, "cl06_100_10": 4, "cl07_020_01": 4, "cl07_020_02": 4, "cl07_020_03": 4, "cl07_020_04": 4, "cl07_020_05": 4, "cl07_020_06": 4, "cl07_020_07": 4, "cl07_020_08": 4, "cl07_020_09": 4, "cl07_020_10": 4, "cl07_040_01": 4, "cl07_040_02": 4, "cl07_040_03": 4, "cl07_040_04": 4, "cl07_040_05": 4, "cl07_040_06": 4, "cl07_040_07": 4, "cl07_040_08": 4, "cl07_040_09": 4, "cl07_040_10": 4, "cl07_060_01": 4, "cl07_060_02": 4, "cl07_060_03": 4, "cl07_060_04": 4, "cl07_060_05": 4, "cl07_060_06": 4, "cl07_060_07": 4, "cl07_060_08": 4, "cl07_060_09": 4, "cl07_060_10": 4, "cl07_080_01": 4, "cl07_080_02": 4, "cl07_080_03": 4, "cl07_080_04": 4, "cl07_080_05": 4, "cl07_080_06": 4, "cl07_080_07": 4, "cl07_080_08": 4, "cl07_080_09": 4, "cl07_080_10": 4, "cl07_100_01": 4, "cl07_100_02": 4, "cl07_100_03": 4, "cl07_100_04": 4, "cl07_100_05": 4, "cl07_100_06": 4, "cl07_100_07": 4, "cl07_100_08": 4, "cl07_100_09": 4, "cl07_100_10": 4, "cl08_020_01": 4, "cl08_020_02": 4, "cl08_020_03": 4, "cl08_020_04": 4, "cl08_020_05": 4, "cl08_020_06": 4, "cl08_020_07": 4, "cl08_020_08": 4, "cl08_020_09": 4, "cl08_020_10": 4, "cl08_040_01": 4, "cl08_040_02": 4, "cl08_040_03": 4, "cl08_040_04": 4, "cl08_040_05": 4, "cl08_040_06": 4, "cl08_040_07": 4, "cl08_040_08": 4, "cl08_040_09": 4, "cl08_040_10": 4, "cl08_060_01": 4, "cl08_060_02": 4, "cl08_060_03": 4, "cl08_060_04": 4, "cl08_060_05": 4, "cl08_060_06": 4, "cl08_060_07": 4, "cl08_060_08": 4, "cl08_060_09": 4, "cl08_060_10": 4, "cl08_080_01": 4, "cl08_080_02": 4, "cl08_080_03": 4, "cl08_080_04": 4, "cl08_080_05": 4, "cl08_080_06": 4, "cl08_080_07": 4, "cl08_080_08": 4, "cl08_080_09": 4, "cl08_080_10": 4, "cl08_100_01": 4, "cl08_100_02": 4, "cl08_100_03": 4, "cl08_100_04": 4, "cl08_100_05": 4, "cl08_100_06": 4, "cl08_100_07": 4, "cl08_100_08": 4, "cl08_100_09": 4, "cl08_100_10": 4, "cl09_020_01": 4, "cl09_020_02": 4, "cl09_020_03": 4, "cl09_020_04": 4, "cl09_020_05": 4, "cl09_020_06": 4, "cl09_020_07": 4, "cl09_020_08": 4, "cl09_020_09": 4, "cl09_020_10": 4, "cl09_040_01": 4, "cl09_040_02": 4, "cl09_040_03": 4, "cl09_040_04": 4, "cl09_040_05": 4, "cl09_040_06": 4, "cl09_040_07": 4, "cl09_040_08": 4, "cl09_040_09": 4, "cl09_040_10": 4, "cl09_060_01": 4, "cl09_060_02": 4, "cl09_060_03": 4, "cl09_060_04": 4, "cl09_060_05": 4, "cl09_060_06": 4, "cl09_060_07": 4, "cl09_060_08": 4, "cl09_060_09": 4, "cl09_060_10": 4, "cl09_080_01": 4, "cl09_080_02": 4, "cl09_080_03": 4, "cl09_080_04": 4, "cl09_080_05": 4, "cl09_080_06": 4, "cl09_080_07": 4, "cl09_080_08": 4, "cl09_080_09": 4, "cl09_080_10": 4, "cl09_100_01": 4, "cl09_100_02": 4, "cl09_100_03": 4, "cl09_100_04": 4, "cl09_100_05": 4, "cl09_100_06": 4, "cl09_100_07": 4, "cl09_100_08": 4, "cl09_100_09": 4, "cl09_100_10": 4, "cl10_020_01": 4, "cl10_020_02": 4, "cl10_020_03": 4, "cl10_020_04": 4, "cl10_020_05": 4, "cl10_020_06": 4, "cl10_020_07": 4, "cl10_020_08": 4, "cl10_020_09": 4, "cl10_020_10": 4, "cl10_040_01": 4, "cl10_040_02": 4, "cl10_040_03": 4, "cl10_040_04": 4, "cl10_040_05": 4, "cl10_040_06": 4, "cl10_040_07": 4, "cl10_040_08": 4, "cl10_040_09": 4, "cl10_040_10": 4, "cl10_060_01": 4, "cl10_060_02": 4, "cl10_060_03": 4, "cl10_060_04": 4, "cl10_060_05": 4, "cl10_060_06": 4, "cl10_060_07": 4, "cl10_060_08": 4, "cl10_060_09": 4, "cl10_060_10": 4, "cl10_080_01": 4, "cl10_080_02": 4, "cl10_080_03": 4, "cl10_080_04": 4, "cl10_080_05": 4, "cl10_080_06": 4, "cl10_080_07": 4, "cl10_080_08": 4, "cl10_080_09": 4, "cl10_080_10": 4, "cl10_100_01": 4, "cl10_100_02": 4, "cl10_100_03": 4, "cl10_100_04": 4, "cl10_100_05": 4, "cl10_100_06": 4, "cl10_100_07": 4, "cl10_100_08": 4, "cl10_100_09": 4, "cl10_100_10": 4, "class": [0, 1, 4, 5, 6, 7, 8, 9, 11, 12, 15, 16, 17, 18], "class_10_100": [3, 4], "class_10_20": [3, 4], "class_10_40": [3, 4], "class_10_60": [3, 4], "class_10_80": [3, 4], "class_1_100": [3, 4], "class_1_20": [3, 4], "class_1_40": [3, 4], "class_1_60": [3, 4], "class_1_80": [3, 4], "class_2_100": [3, 4], "class_2_20": [3, 4], "class_2_40": [3, 4], "class_2_60": [3, 4], "class_2_80": [3, 4], "class_3_100": [3, 4], "class_3_20": [3, 4], "class_3_40": [3, 4], "class_3_60": [3, 4], "class_3_80": [3, 4], "class_4_100": [3, 4], "class_4_20": [3, 4], "class_4_40": [3, 4], "class_4_60": [3, 4], "class_4_80": [3, 4], "class_5_100": [3, 4], "class_5_20": [3, 4], "class_5_40": [3, 4], "class_5_60": [3, 4], "class_5_80": [3, 4], "class_6_100": [3, 4], "class_6_20": [3, 4], "class_6_40": [3, 4], "class_6_60": [3, 4], "class_6_80": [3, 4], "class_7_100": [3, 4], "class_7_20": [3, 4], "class_7_40": [3, 4], "class_7_60": [3, 4], "class_7_80": [3, 4], "class_8_100": [3, 4], "class_8_20": [3, 4], "class_8_40": [3, 4], "class_8_60": [3, 4], "class_8_80": [3, 4], "class_9_100": [3, 4], "class_9_20": [3, 4], "class_9_40": [3, 4], "class_9_60": [3, 4], "class_9_80": [3, 4], "class_and_beng": [3, 4], "classic": [0, 1], "classif": [17, 18], "clear": 11, "clone": [0, 1], "close": [0, 1, 4, 5, 8, 11], "closer": [0, 1, 6, 7, 11], "closest": [0, 1, 9, 11], "cl\u00e1udio": 4, "cma": [6, 8], "cmae": [3, 4, 6, 8], "cmaes_raw": [3, 8], "cmaes_surrog": [3, 8], "cn": [0, 1, 4, 5, 6, 7, 12, 15, 17], "cn11": 15, "co": 8, "coars": 7, "code": [0, 4, 5, 6, 7, 9, 12, 15, 17], "codegen": [3, 8], "codegener": [8, 9], "codeql": [0, 1], "coeffici": 9, "col": 8, "collect": [0, 1, 8], "collector": [3, 4, 8, 15], "colon": 4, "color": [4, 8], "column": [4, 17], "com": [0, 1, 4, 5, 6, 7], "combin": [0, 1, 6, 7, 8, 9, 12], "combinatori": [4, 12, 15], "come": [0, 1, 11, 15], "comjnl": 4, "comment": [0, 1, 3, 4, 15], "common": [0, 1], "comopt": [15, 16], "compact": [4, 17], "compar": [4, 6, 8], "comparison": [4, 12], "compet": 17, "compil": 9, "complet": [0, 1, 8], "complex": [5, 9], "compli": [0, 1], "complianc": [0, 1], "compliant": 4, "complic": 8, "compon": [0, 1, 3, 4, 5, 6, 8, 11, 12, 15, 17], "compos": [8, 9], "comprehens": 4, "compris": [4, 8], "comput": [0, 1, 4, 6, 7, 8, 9, 11, 12, 15, 16, 17], "con20": 17, "concaten": 8, "conceiv": 8, "concept": 8, "concern": [0, 1], "condit": 4, "confer": 4, "configur": 8, "conjunct": 17, "connect": [0, 1, 8, 15], "consid": [4, 5, 8, 11, 17], "consist": [0, 1], "constant": [3, 4, 8], "constraint": [0, 1, 4, 17], "construct": [0, 1, 8], "constructor": [4, 8], "consum": [4, 8, 9], "consumpt": 15, "contain": [0, 1, 4, 8, 11, 14, 15, 17], "content": [4, 6, 8, 17], "continu": [0, 1, 5, 6], "contradict": 8, "contribut": [0, 1, 4, 5, 6, 7, 15], "contrl": 8, "contrl2": 8, "contrl3": 8, "control": [2, 3, 10, 15], "control_dim": [3, 8, 9], "controller_dim": 8, "controller_spac": 8, "controller_training_algorithm": 8, "convent": [0, 1], "converg": 10, "convers": [8, 10], "convert": [4, 6, 7, 11, 15, 17], "cook": 15, "cool": 11, "coordin": [0, 1, 4, 7, 8, 9, 10, 11, 15], "copi": [0, 1, 3, 4, 6, 15, 17], "copyright": [0, 1, 3], "cor": 4, "coral": [0, 1, 12, 13], "cordier": 10, "cornejo": [8, 9, 10], "corner": 5, "correct": [0, 1, 4, 8], "correctli": [0, 1, 11], "correspond": [4, 6, 7, 8, 12, 15, 17], "cosmet": 8, "cost": [8, 9], "costli": [8, 9, 17], "could": [0, 1, 4, 5, 6, 7, 8, 9, 11, 15, 17], "count": [4, 6, 7, 17], "count_best_ov": 4, "count_error": [3, 17], "counter": [5, 7], "coupl": 10, "cours": [0, 1, 6, 8, 9, 11, 15, 17], "cover": [6, 7], "coverag": [0, 1], "cp": 17, "cpaior": 4, "creat": [0, 1, 3, 4, 6, 8, 9, 10, 14, 15, 17], "criterion": 15, "crockett": 15, "cross": 8, "crosstalk": 10, "crude": [8, 15], "csv": [3, 4], "csvreader": [3, 4], "csvwriter": [3, 4], "ctrl": [0, 1, 8], "cubic": [3, 8], "cumbersom": 8, "current": [0, 1, 3, 5, 6, 7, 8, 9, 15, 17], "cut": [4, 6, 17], "cutter": 6, "cypru": 17, "d": [0, 1, 8, 9, 12, 17], "daan": [4, 15], "dai": [0, 1, 17], "dam": 17, "damv": 4, "darmstadt": 12, "data": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13, 15, 16, 17, 18], "data_analytics2016b": 4, "dataset": [0, 1, 4], "david": [15, 17, 18], "dbb": [8, 9, 10], "dd": 17, "de": [4, 12, 15, 16], "deactiv": 8, "dead": [0, 1], "deal": [4, 11], "decemb": [15, 17], "decid": [6, 8, 15], "decod": [4, 5, 6, 17], "decreas": [0, 1, 4, 11], "deep": [8, 9, 10], "def": [8, 11], "default": [3, 4, 6, 8, 9, 11, 12, 14, 15, 17], "default_executor": [4, 6], "default_height_per_bin": 4, "default_object": [3, 4], "default_packing_item_str": [3, 4], "default_width_per_bin": 4, "defin": [0, 1, 4, 5, 6, 8, 9, 11, 15, 17], "definit": [6, 7, 15], "deg2rad": 8, "degre": [0, 1, 7], "den": [4, 15], "denot": [0, 1, 6, 17], "depart": 12, "depend": [0, 1, 8, 9, 15, 17], "dependabot": [0, 1], "dequan": [4, 5], "der": [8, 9, 10], "deriv": [0, 1, 11], "describ": [0, 1, 4, 6, 8, 9, 11, 17], "describe_parameter": [3, 8], "describe_system": [3, 8], "describe_system_without_control": [3, 8], "descript": [3, 6, 17], "design": 17, "dest": [4, 6, 8, 17], "dest_dir": [4, 8], "dest_fil": [4, 8], "destin": [4, 6, 8, 17], "destroi": 8, "detail": [0, 1, 8], "detect": [0, 1], "determin": [0, 1, 15], "determinist": [6, 17], "develop": [0, 1, 5, 6, 8], "deviat": 6, "diagon": 11, "diamet": 10, "dict": 15, "dictat": [0, 1], "did": 5, "diff_from_od": [3, 8], "differ": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 15, 17], "differenti": [0, 1, 3, 8, 9, 10], "dim": 8, "dimac": 12, "dimens": [0, 1, 6, 8, 9, 11, 17], "dimension": [3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 17], "ding": 12, "dip": 6, "dipti": 15, "direct": [6, 15], "directli": [0, 1, 4, 8, 9, 11, 15, 16, 17], "directori": [4, 6, 8], "dirnam": [15, 17], "disappear": 7, "discov": 8, "discret": [15, 17], "discuss": 6, "disjoint": 15, "disregard": 8, "dist": [11, 15], "distanc": [0, 1, 2, 3, 8, 12, 15, 17], "distant": 11, "distinguish": [7, 8, 17], "distribut": [0, 1, 6, 7, 17], "diverg": 8, "divers": 8, "divid": [0, 1, 6, 8, 11, 17], "dizdarev": 15, "dm": 11, "do": [0, 1, 4, 5, 6, 7, 8, 9, 11, 15, 16, 17], "do_log_h": [3, 15], "docstr": [0, 1], "document": [0, 1, 15, 16, 17, 18], "dodgi": [0, 1], "doe": [0, 1, 4, 5, 7, 8, 9, 11, 15, 16, 17, 18], "doi": [4, 5, 8, 9, 10, 12, 13, 15, 16, 17], "domain": [0, 1], "domin": 8, "done": [7, 8, 11], "doubl": [0, 1, 10, 17], "down": [0, 1, 5], "download": [4, 17], "download_2dpacklib_inst": [3, 4], "downward": 5, "dpi": 4, "dr": [0, 1, 4, 5, 6, 7, 8, 10, 12, 15, 17], "drawn": 4, "drive": [6, 7, 8, 15], "driven": [8, 17, 18], "drop": 9, "dst": 12, "dt": [0, 1, 8, 9], "dtype": [4, 11, 12, 15, 17], "du": 12, "due": [0, 1, 6, 15], "dummi": 15, "duplic": 17, "dure": [0, 1, 8, 11], "duw": 7, "dx": [0, 1], "dy": [0, 1], "dyn": 10, "dynam": [3, 8, 9, 10], "dynamic_control": [1, 2, 3], "e": [0, 1, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 17], "ea": 15, "ea1p1_revn": [2, 3], "each": [0, 1, 4, 5, 6, 8, 9, 11, 12, 15, 17], "ealgfi": [3, 4], "ealgfiea": 4, "ealgfilgfi": 4, "earliest": [0, 1, 17], "eas": [0, 1], "easi": [6, 8], "easier": [4, 5, 8, 15], "easili": [0, 1, 8, 9, 11, 15], "easton": 17, "econom": [17, 18], "ed": 12, "edg": [0, 1, 15], "edit": [8, 9, 10, 15], "editor": 15, "edu": [0, 1, 4, 5, 6, 7, 12, 13, 15, 17], "educ": [0, 1], "effect": 15, "effici": [0, 1, 9, 15], "effort": 8, "eil101": 15, "eil51": 15, "eil76": 15, "either": [0, 1, 8, 11, 15, 17], "ejor": [12, 17], "element": [3, 4, 5, 6, 7, 11, 12, 17], "eleven": 15, "elian": 12, "els": [7, 8, 11, 17], "elsewher": 11, "email": [0, 1], "emiel": 4, "emploi": 8, "empti": [4, 5, 7, 17], "emptiest": 7, "empty": 7, "emul": 6, "en": 4, "encapsul": 12, "encod": [0, 1, 3, 4, 6, 7, 9, 14, 17], "encompass": 17, "encount": 5, "end": [0, 1, 3, 4, 5, 6, 8, 9, 11, 17], "end0": 8, "end1": 8, "end_color": [3, 8], "end_i": [4, 15, 17], "end_mark": [3, 8], "end_result": [3, 4], "end_statist": [3, 4], "endlin": [8, 9], "endresult": 4, "endstatist": 4, "energi": [8, 9], "enforc": [0, 1], "enhanc": [8, 9, 10], "enough": [0, 1, 4], "ensur": [4, 6, 17], "enter": 9, "entir": 8, "entri": 17, "enumer": 15, "environ": [0, 1], "epilog": 3, "epilogu": 3, "equal": [0, 1, 5, 6, 7, 8, 11, 15, 17], "equat": [0, 1, 3, 8, 9, 10, 15], "erad": [0, 1], "eranda": 12, "erik": 4, "error": [0, 1, 2, 3, 4, 8], "errors_and_hard": [3, 4], "errorsandhard": [4, 6], "escap": 8, "especi": [0, 1], "essenti": 8, "estim": [7, 8, 15], "etc": 6, "euclidean": 15, "eugen": 15, "eurika": 10, "european": [4, 5, 12, 17], "evalu": [3, 4, 6, 7, 8, 9, 12, 15, 17], "evaluationdatael": 4, "even": [0, 1, 4, 8, 11, 17], "eventu": [6, 7], "everi": [0, 1, 5, 6, 8, 15, 17], "everyth": 8, "everytim": 8, "evolut": 8, "exact": [4, 6, 17], "exactli": [0, 1, 4, 5, 6, 8, 11, 15, 17], "exampl": [0, 1, 4, 6, 8, 9, 10, 11, 15, 16, 17, 18], "exce": [4, 9], "except": [7, 16, 18], "exchang": [0, 1], "exclus": 17, "execut": [4, 6, 8], "executor": [4, 6], "exhaust": [8, 15], "exist": [0, 1, 4, 6, 8, 11], "exp": [8, 9], "expect": 8, "expend": [0, 1], "expens": 8, "experi": [0, 1, 2, 3, 8, 9, 14, 15], "experiment": [0, 1], "experiment_raw": [2, 3], "experiment_surrog": [2, 3], "explain": 17, "explod": 8, "explor": [0, 1], "expm1": 8, "express": [0, 1], "expung": 7, "extend": [4, 5, 8], "extens": [0, 1, 11, 17], "extern": 15, "extract": [4, 8, 11], "extrem": 8, "f": [0, 1, 6, 8, 11, 12], "fabien": 10, "facil": [0, 1, 11, 12], "factor": [5, 7], "factori": [0, 1, 4, 14], "faculti": [17, 18], "fail": [0, 1, 8], "fair": [0, 1, 17], "fall": [0, 1], "fals": [4, 6, 8, 15, 17], "fanci": 8, "fancy_log": [3, 8], "faq": [15, 16], "far": [0, 1, 5, 6, 8, 11, 17], "farther": [0, 1, 8, 11], "farthest": [15, 17], "fashion": [8, 17], "fast": 8, "faster": [0, 1, 5, 8], "fastmath": 9, "fe": [4, 6, 8, 14], "fea": [3, 4, 15], "fea1p1_revn": [2, 3], "feasibl": [0, 1, 4, 15, 17], "featur": 6, "ferland": 12, "fes_for_train": [3, 8], "fes_for_warmup": [3, 8], "fes_per_model_run": [3, 8], "few": [0, 1], "fewer": [7, 8], "fewest": 7, "ff1993ghftqap": 12, "ffa": [0, 1], "fifth": 4, "figur": [4, 8], "figureofmerit": [3, 8], "figureofmeritl": [3, 8], "file": [0, 1, 3, 4, 5, 8, 13, 15, 16, 17, 18], "file_nam": [13, 16, 18], "fill": [4, 7, 8, 17], "final": [3, 4, 6, 7, 8, 9, 10, 11, 12, 15, 17], "find": [0, 1, 3, 6, 8, 9, 11, 15, 16, 17, 18], "finish": 8, "finit": [0, 1, 4], "first": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 15, 17], "fit": [0, 1, 4, 5, 6, 9, 15], "five": [5, 6], "fix": [0, 1, 6, 11], "flake8": [0, 1], "flatten": [4, 8, 15], "fleurent": 12, "flight": 8, "float": [0, 1, 4, 6, 8, 9, 11, 12, 15], "florian": 4, "flow": [0, 1, 3, 4, 11, 12], "flow_pow": [3, 11], "flu": 10, "fluid": [8, 9, 10], "fluidic": [8, 9, 10], "flw": 12, "fly": 9, "flyer": [0, 1], "foci": 15, "focus": 7, "focuss": 7, "folder": 4, "follow": [0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 15, 17], "font": 4, "footer": [3, 4], "forc": [0, 1, 8, 17], "form": [4, 8], "format": [0, 1, 4, 12, 15, 17], "format_best": 4, "formatt": 4, "former": [0, 1, 8], "forward": 7, "found": [12, 15, 16, 18], "foundat": [0, 1, 15], "four": [0, 1, 4, 6, 11], "fraction": 11, "frame": 8, "framework": 15, "franz": [12, 13], "fran\u00e7oi": [8, 9, 10], "free": [0, 1, 7, 8, 17], "frequenc": [10, 15], "frequent": [0, 1], "fri26": 15, "from": [0, 1, 4, 5, 6, 7, 8, 9, 11, 12, 15, 17], "from_2dpacklib": [3, 4], "from_compact_str": [3, 4, 6], "from_csv": [3, 4], "from_fil": [3, 15, 17], "from_log": [3, 4], "from_packing_and_end_result": [3, 4], "from_packing_result": [3, 4], "from_qaplib_stream": [3, 12], "from_resourc": [3, 4, 6, 12, 15, 17], "from_sequence_and_dist": [3, 11], "from_single_log": [3, 4], "from_str": [3, 4, 6, 11, 17], "fstring": [0, 1], "ft53": 15, "ft70": 15, "ftv170": 15, "ftv33": 15, "ftv35": 15, "ftv38": 15, "ftv44": 15, "ftv47": 15, "ftv55": 15, "fulfil": 8, "full": [0, 1, 5, 15], "fulli": [0, 1, 5, 15], "func": 8, "function": [0, 1, 4, 6, 7, 8, 9, 11, 12, 14, 15, 17], "further": [4, 6], "f\u00fcr": [15, 16], "g": [0, 1, 3, 6, 8, 9, 11, 17], "gal4": 17, "gambardella": 12, "game": [0, 1, 17], "game_encod": [2, 3], "game_plan": [2, 3], "game_plan_dtyp": [3, 17], "game_plan_length": [3, 17], "game_plan_spac": [2, 3], "gameencod": [3, 17], "gameplan": [3, 17], "gameplandtyp": 17, "gameplanlength": [3, 17], "gameplanspac": [3, 17], "gamma": [3, 8], "gantt": 5, "gather": [4, 8], "gener": [0, 1, 3, 6, 8, 9, 14, 17], "genet": [4, 5, 10, 12, 15], "geo": 15, "geograph": 15, "geometr": 4, "georg": [15, 17], "gerhard": [0, 1, 15, 16], "germani": [4, 12, 15, 16, 17], "get": [0, 1, 4, 6, 7, 8, 9, 11, 12, 14, 15, 17], "get_bibtex": [3, 4], "get_column_titl": [3, 4], "get_differenti": [3, 8], "get_dist": 11, "get_footer_bottom_com": [3, 4], "get_footer_com": [3, 4], "get_header_com": [3, 4], "get_log": [4, 15, 17], "get_optimal_plan_length_bound": [3, 17], "get_related_work": [3, 4], "get_row": [3, 4], "get_standard_item_sequ": [3, 4], "get_tag": 11, "get_x_dim": [4, 6], "getvalu": 8, "ghent": [17, 18], "git": [0, 1], "github": [0, 1], "give": [0, 1, 6, 8, 11, 17], "given": [0, 1, 4, 5, 6, 7, 8, 9, 11, 15, 17], "global": [12, 13, 15], "gnu": [0, 1], "go": [0, 1, 6, 8, 11, 17], "goal": [0, 1, 3, 6, 8, 9, 10, 11, 12, 15], "golden": 9, "good": [0, 1, 6, 8, 11, 12, 15], "goossen": [0, 1], "got": [0, 1], "govern": [8, 9, 10], "gr120": 15, "gr2013abrkgaf2a3bpp": 4, "gr202": 15, "gr24": 15, "gr48": 15, "gr666": 15, "gr96": 15, "graph": [0, 1, 15], "grasp": 4, "grasp_vnd": [3, 4], "graspvndgrasp": 4, "graspvndvnd": 4, "gregori": 15, "group": [4, 6, 17, 18], "groups_to_inst": [3, 4], "grow": 8, "guajardo": [0, 1], "gui": [8, 9, 10], "guid": 15, "guidelin": [0, 1], "guillotin": 4, "gutin": 15, "h": [4, 15, 17], "ha": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 17], "hack": [0, 1, 8], "had": [8, 11], "hahn": [0, 1, 12], "handbook": 12, "handl": [0, 1, 4, 8, 15], "happen": [0, 1], "harambat": 10, "harbin": [8, 9, 10, 15], "hard": [0, 1, 3, 4], "have": [0, 1, 4, 5, 6, 7, 8, 9, 11, 15, 17], "hdl": 4, "header": 4, "heap": 8, "hefei": [0, 1, 4, 5, 6, 7, 12, 15, 17], "heidelberg": [15, 16, 17], "heigh": 4, "height": [0, 1, 4, 5, 6, 7], "helicopt": 9, "help": [0, 1], "henc": [4, 11], "hendrik": 15, "henri": 12, "here": [0, 1, 4, 5, 6, 8, 9, 10, 11, 15, 17, 18], "heurist": [0, 1, 4, 5, 17], "hfuu": [0, 1, 4, 5, 6, 7, 12, 15, 17], "hhano": 4, "hhano_r": [3, 4], "hhano_sr": [3, 4], "hhanor": 4, "hhanosr": 4, "hidden": 9, "hierarchi": 4, "high": [0, 1, 11, 15], "higher": [6, 11], "highest": [7, 17], "him": [0, 1], "hint": [0, 1], "hisao": 15, "hold": [0, 1, 4, 7, 8, 11, 15, 16, 17, 18], "hole": 7, "home": [0, 1, 17], "home_idx": 17, "home_streak_max": [3, 17], "home_streak_min": [3, 17], "homestreakmax": 17, "homestreakmin": 17, "hometown": 17, "hong": 15, "hongfei": [4, 5], "hope": [0, 1, 17], "hopefulli": 8, "horizon": [3, 11], "horizont": [0, 1, 6, 7, 11], "how": [4, 6, 8, 11, 17], "howev": [0, 1, 8, 9, 11, 17], "html": [15, 16], "http": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 15, 16, 17, 18], "hundr": [0, 1], "hurdl": [0, 1], "hurrai": 6, "hurt": [0, 1], "hwee": 15, "hybrid": 12, "i": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 17], "iao": [0, 1, 4, 5, 6, 7, 12, 15, 17], "iaria": 4, "ibl_encoding_1": [3, 4], "ibl_encoding_2": [3, 4], "id": [4, 5, 17], "idea": [4, 6, 7, 8, 9, 11, 17], "ideal": 8, "identifi": [0, 1, 4, 5, 12, 15], "idsia": 12, "idx": 8, "idx_bin": [3, 4], "idx_bottom_i": [3, 4], "idx_height": [3, 4], "idx_id": [3, 4], "idx_left_x": [3, 4], "idx_repetit": [3, 4], "idx_right_x": [3, 4], "idx_top_i": [3, 4], "idx_width": [3, 4], "ieee": 15, "ifi": [15, 16], "ignor": [0, 1, 3, 7, 8, 9, 11, 17], "ijoc": [15, 16], "ill": [8, 15], "illustr": 8, "imagin": [0, 1, 8, 9, 11, 17], "immedi": [4, 5], "immut": 4, "impact": [7, 8, 11], "implement": [0, 1, 3, 4, 5, 7, 8, 12, 15, 17], "impli": [0, 1], "import": [0, 1, 4, 5, 6, 7, 8, 11, 15, 17], "importance_to_font_s": 4, "importance_to_font_size_func": 4, "impos": 17, "improv": [0, 1, 4, 5, 8, 12], "improvedbottomleftencoding1": [4, 5], "improvedbottomleftencoding2": [4, 5], "impuls": 8, "inappropri": 8, "includ": [0, 1, 4, 5, 6, 9, 12, 13, 14, 15, 17, 18], "incomprehensibli": 4, "incorpor": [6, 8], "increas": [0, 1, 5, 6, 7, 8, 9], "increment": [4, 11], "incur": 17, "inde": [0, 1, 4, 6, 17], "indent": [8, 9], "index": [0, 1, 4, 5, 6, 8, 11, 15, 17], "indexzerobas": 11, "indic": [0, 1, 5, 6, 11, 17], "indirectli": 7, "industri": [0, 1], "infeas": 17, "infin": 8, "infinit": 8, "influenc": [0, 1, 8], "inform": [0, 1, 4, 8, 12, 17], "informatica": 12, "infrastructur": [0, 1], "inherit": 17, "initi": [0, 1, 3, 4, 5, 6, 7, 8, 10, 15], "inmemorylogg": [4, 15, 17], "inner_max_f": [4, 6], "inner_run": [4, 6], "input": [0, 1, 5, 6, 8, 9, 10, 14, 17], "ins": [4, 7, 12], "insert": 17, "insid": [4, 5, 6], "inspir": 6, "inst": [3, 4, 12, 14, 15, 17], "inst_decod": [3, 4], "inst_group_select": 4, "inst_group_sort_kei": [3, 4], "inst_nam": [4, 6], "insta": [12, 17], "instanc": [0, 1, 2, 3, 5, 6, 7, 9, 13, 14, 18], "instance_spac": [3, 4], "instancedecod": [4, 6], "instances_resourc": [3, 4], "instances_to_group": [3, 4], "instancespac": [4, 6], "instanti": [4, 17], "instead": [0, 1, 6, 7, 8, 9, 11, 15, 17], "instgen": [3, 4], "institut": [0, 1, 4, 5, 6, 7, 8, 9, 10, 12, 15, 16, 17], "insuffici": 4, "int": [4, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17], "int16": [4, 12], "int8": [4, 7], "int_range_to_dtyp": 17, "integ": [0, 1, 6, 7, 11, 15, 17], "integr": [4, 8], "intellig": [0, 1, 4, 5, 6, 7, 12, 15, 17], "intens": 8, "intent": 7, "interest": [0, 1, 6, 8, 15], "interesting_point_object": [3, 8], "interesting_point_transform": [3, 8], "interestingli": 15, "interfac": 4, "intern": [3, 4, 6, 8], "internal_sep": [3, 4], "interpol": 8, "intersci": 15, "intersect": [7, 15], "interv": [6, 8], "invalid": [6, 14], "invers": 17, "invert": 8, "invok": [0, 1, 8], "involv": [8, 17], "inza": 15, "io": 8, "iori": 4, "is_always_integ": [3, 4, 6, 7, 17], "is_equ": [3, 4, 6, 17], "is_symmetr": [3, 15], "isbn": [4, 15, 17], "ise": [0, 1, 12, 13], "ishibuchi": 15, "isinst": 3, "issu": [0, 1], "itali": 4, "item": [4, 5, 6, 7, 17], "item_height_max": [4, 6], "item_height_min": [4, 6], "item_id": 4, "item_in_bin_index": 4, "item_index": 4, "item_width_max": [4, 6], "item_width_min": [4, 6], "iter": [3, 4, 6, 8, 9, 11, 12, 14, 15, 17], "its": [0, 1, 4, 5, 6, 8, 9, 10, 11, 15, 17], "itself": [5, 7, 17], "i\u00f1aki": 15, "j": [0, 1, 4, 8, 11, 12, 15, 17], "j_from_od": [3, 8], "jacqu": [10, 12], "jan": 15, "januari": [4, 5, 8, 9, 10, 12], "jet": [8, 9, 10], "jiayang": 12, "john": 15, "join": [4, 8, 15, 17], "join_instances_to_compact": [3, 4], "jor": 4, "jos\u00e9": 4, "journal": [4, 5, 12, 13, 15, 16, 17], "juli": 12, "jump": 17, "june": [0, 1, 4, 17], "just": [0, 1, 6, 7, 8, 11, 15, 17], "j\u00f6rg": 15, "k": [0, 1, 15, 17], "kaiser": 10, "kan": 15, "karel": 15, "karisch": [0, 1, 12, 13], "kauna": 12, "ke": 15, "keelei": 15, "keep": 10, "kei": [0, 1, 4, 5, 8, 11, 12], "kelli": 17, "keong": 15, "key_bin_height": [3, 4], "key_bin_width": [3, 4], "key_n_different_item": [3, 4], "key_n_item": [3, 4], "key_valu": [4, 15, 17], "keyvaluelogsect": [4, 5, 6, 8, 11, 12, 15, 17], "kick": 8, "kind": 17, "kluwer": 15, "km": 15, "know": [0, 1, 7, 11, 17], "known": [0, 1, 3, 4, 12, 15], "known_optima": [2, 3], "kong": 15, "kroa100": 15, "kroc100": 15, "krod100": 15, "kroe100": 15, "kuijper": 15, "kunm": 15, "kv": [4, 15, 17], "kwoh": 15, "l": [4, 15, 17], "l2008agaftdbpp": 4, "label": 4, "laid": 4, "lambda": [4, 8, 11, 15], "landau": [0, 1, 8, 10], "lane": 15, "larg": [4, 6, 8, 11, 15], "larger": [5, 6, 8, 11, 15], "largest": [7, 12], "larra\u00f1aga": 15, "last": [0, 1, 4, 5, 7, 8, 15, 17], "later": [0, 1, 6], "latest": [0, 1], "latex": 4, "latitud": 15, "latter": [0, 1, 4], "laurent": 10, "law": [0, 1], "lawler": 15, "layer": [8, 9], "layout": [0, 1], "lb": [6, 7, 12], "lead": [0, 1, 4, 6, 17], "leagu": 17, "learn": [8, 9, 10], "least": [0, 1, 6, 7, 11, 17], "lee": 15, "left": [0, 1, 4, 5, 7, 11], "leg": 17, "lehigh": [0, 1, 12, 13], "leighton": 15, "len": [4, 8, 11, 12, 15, 17], "length": [0, 1, 4, 6, 8, 11, 12, 15, 17], "lenstra": 15, "leonida": 12, "less": [0, 1, 7, 9, 15, 17], "let": [6, 7, 8, 9, 11, 17], "letter": 4, "level": 4, "lgfi": 4, "li": [0, 1, 8, 9, 10], "liang": [0, 1, 15], "liangti": [0, 1, 15], "lib": [12, 15], "librari": [0, 1, 4, 12, 13, 15, 16], "like": [0, 1, 6, 8, 9, 11], "lima": 4, "limit": [0, 1, 5, 8, 17], "lin105": 15, "line": [0, 1, 4, 5, 8, 9], "linear": [3, 8, 10], "link": 17, "linter": [0, 1], "linux": [0, 1], "list": [0, 1, 4, 6, 9, 15], "list_resourc": [3, 4, 12, 15, 17], "list_resource_tour": [3, 15], "list_resources_group": [3, 4], "literatur": 4, "lithuania": 12, "littl": [0, 1, 5, 8, 11], "liu": [4, 5], "load": [0, 1, 4, 12, 15, 17], "local": [0, 1, 6, 15], "locat": [0, 1, 4, 7, 8, 10, 11, 12, 17], "log": [4, 5, 6, 8, 11, 12, 15, 17], "log_fil": 8, "log_parameters_to": [3, 4, 5, 6, 8, 11, 12, 15, 17], "logger": [4, 5, 6, 8, 11, 12, 15, 17], "logic": [0, 1, 17], "logist": 17, "logp1": 8, "loiola": 12, "long": [8, 11, 17], "longer": [0, 1, 5, 15, 17], "longest": 17, "longitud": 15, "look": [0, 1, 5, 8], "loop": [6, 8, 15], "lorenz": [3, 8], "lorenz_111": [8, 10], "lorenz_4": [8, 10], "lot": [0, 1, 8], "loti": 4, "low": 11, "lower": [6, 7, 8, 11, 12, 15, 17], "lower_bound": [3, 4, 6, 7, 8, 12, 15, 17], "lower_bound_bin": [3, 4, 6, 7], "lower_bound_gett": [15, 17], "lower_bounds_bin_count": [3, 4], "lowerbound": 4, "lowest": [7, 17], "luca": 12, "lucki": 7, "lugano": 12, "lusseyran": [8, 9, 10], "l\u00e4ssig": 15, "m": [0, 1, 4, 8, 9, 12, 15], "m2003amsaaftqap": 12, "m2005atsaftqap": 12, "m2008aiotitsaftqap": 12, "maceda": [8, 9, 10], "macedo": 4, "machin": [0, 1, 8, 9, 10], "magazin": 15, "mai": [0, 1, 4, 5, 6, 8, 11, 12, 15, 17], "maia": 12, "main": 11, "mainli": [0, 1, 11, 15], "maintain": [0, 1, 17, 18], "make": [0, 1, 4, 6, 7, 8, 11, 14, 15, 16, 17], "make_2dpacklib_resourc": [3, 4], "make_3_couple_oscil": [8, 10], "make_ann": [8, 9], "make_comparison_t": [3, 4], "make_comparison_table_data": [3, 4], "make_inst": [2, 3, 8], "make_interesting_starting_point": [3, 8], "make_lorenz": [8, 10], "make_packing_invalid": [3, 14], "make_packing_valid": [3, 14], "make_stuart_landau": [8, 10], "make_tour_invalid": [3, 14], "make_tour_valid": [3, 14], "man": 9, "mani": [4, 7, 8, 11, 15, 17], "manner": [0, 1], "mannner": 17, "manuel": 4, "map": [4, 5, 6, 11, 15, 17], "map_gam": [3, 17], "mappingproxi": 4, "march": 4, "maria": 12, "mark": [4, 8], "marker": 8, "martello": 4, "master": [0, 1, 4, 5, 6, 7, 12, 15, 17], "match": [0, 1, 4], "materi": [0, 1], "math": [4, 6], "mathemat": [8, 9, 12, 15, 17], "mathematik": [15, 16], "matric": [8, 15, 17], "matrix": [0, 1, 4, 8, 11, 12, 15, 17], "matter": [0, 1], "mavdc2010afmfttdgcsp": 4, "max": [7, 12, 17], "max_bins_per_row": 4, "max_f": [3, 4, 6, 8, 14], "max_height": 4, "max_radiu": 8, "max_row": 4, "max_tim": 8, "max_width": 4, "maxim": [7, 8, 11, 17], "maximum": [4, 6, 8, 11, 14, 17], "mayb": [0, 1, 8, 11, 15], "mci": 15, "me": [0, 1], "mean": [0, 1, 4, 5, 6, 7, 8, 11, 15, 17], "measur": [0, 1, 11], "mechan": [7, 8, 9, 10], "med": 4, "median": 4, "memori": [8, 9, 12, 15], "merchant": [0, 1], "merg": [6, 8], "merit": 8, "metaheurist": [0, 3], "method": [0, 1, 3, 4, 5, 8, 11, 12, 15, 17], "metric": 11, "mgi": [0, 1, 12, 13], "miao": 15, "michael": 17, "michalewicz": 15, "michel": 4, "might": [0, 1, 5], "miguel": [0, 1], "millisecond": 8, "min": [7, 12], "min_ann": [3, 8], "min_area": 7, "min_bin": [4, 6], "min_item": 7, "mineiro": 17, "minim": [0, 1, 4, 7, 8, 9, 11, 12, 17], "minimum": [4, 6, 7, 11, 17], "minu": [7, 17], "mirror": 17, "misevi\u010diu": 12, "mix": [8, 9, 10], "mod": 3, "mode": 8, "model": [3, 4, 8, 9, 17], "model_object": [2, 3, 9], "model_training_algorithm": 8, "modelobject": [3, 8], "modi": 8, "modifi": [0, 1, 12, 17], "modu": 8, "modul": 2, "modulu": 8, "moe": 4, "moment": 5, "monaci": 4, "moptipi": [0, 1, 4, 8, 15, 17], "moptipyapp": 0, "moptipyapps_argpars": [1, 2, 3], "more": [0, 1, 4, 6, 7, 8, 10, 11, 15, 17], "most": [0, 1, 6, 11, 17], "motipyapps_footer_bottom_com": [1, 2, 3], "move": [0, 1, 5, 6, 7, 8, 9, 10, 15], "movement": 5, "mr": [0, 1, 4, 5, 6, 7, 12, 15, 17], "ms_for_train": [3, 8], "ms_per_model_run": [3, 8], "msc": [8, 9, 10], "much": [0, 1, 4, 8, 9, 11], "multi": [0, 1, 8], "multi_run_od": [3, 8], "multipl": [0, 1, 4, 5, 6, 8, 9, 11, 17], "multipli": [6, 7, 9, 11, 12, 17], "murga": 15, "must": [0, 1, 5, 6, 8, 11, 17], "mut2an0iotd0mxxh": [4, 5], "mutual": [11, 17], "mv1998esottdfbpp": 4, "mxga": [3, 4], "mypi": [0, 1], "n": [0, 1, 3, 4, 5, 6, 8, 11, 12, 15, 17], "n_bin": [3, 4, 7], "n_citi": [0, 1, 3, 15, 17], "n_different_item": [0, 1, 3, 4, 6], "n_different_object": [0, 1], "n_item": [3, 4, 6, 7], "n_point": [3, 4, 6, 10, 17], "n_run": [4, 6, 8], "nair": 12, "name": [0, 1, 3, 4, 6, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18], "name_bas": 8, "name_suffix": [3, 4], "name_to_str": 4, "nanj": 15, "natur": [11, 15], "navig": 10, "nciti": [15, 17], "ncities_from_tsplib_nam": [3, 15], "ndarrai": [4, 5, 6, 7, 8, 11, 12, 14, 15, 17], "ndifferentitem": 4, "nearest": [0, 1, 11, 15], "necessarili": 17, "need": [0, 1, 4, 5, 6, 7, 8, 9, 11, 17], "neg": 17, "negat": 5, "negoti": [0, 1], "neighbor": [0, 1, 11, 15], "neighborhood": [0, 1, 11, 15], "neither": [8, 12], "nemhaus": 17, "net": [0, 1, 4, 8, 11, 17], "netherland": 15, "netto": 12, "network": [8, 9], "neural": [8, 9], "neuron": 9, "never": [0, 1, 5, 6, 11, 15, 17], "nevertheless": [0, 1], "new": [5, 6, 8, 12, 15], "newest": [0, 1], "next": [0, 1, 5, 6, 7, 8, 11, 15, 17], "nextaft": 6, "nice": [9, 11], "nitem": 4, "nj": 15, "nl": 4, "no_ref": [3, 4], "noack": [8, 9, 10], "node": [0, 1, 15], "non": [0, 1, 4, 15, 17], "none": [3, 4, 5, 6, 8, 9, 11, 12, 14, 15, 17], "nonlinear": 10, "nor": [0, 1, 11, 12], "normal": [0, 1, 4, 8, 15], "note": [11, 15], "noth": [8, 11], "notic": [0, 1, 4, 8, 17], "novemb": [15, 16, 17], "now": [0, 1, 5, 6, 7, 8, 9, 11, 15], "np": [4, 6, 7, 8, 11, 12, 15, 17], "nputil": 17, "nstep": 8, "nug12": 12, "nullari": [0, 1], "numb": 6, "numba": 9, "number": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17], "number_of_items_in_last_bin": 7, "numer": [9, 17], "numpi": [4, 6, 11, 17], "ny": 12, "o": [4, 5, 8, 15, 17], "o_i": [0, 1], "obei": 15, "obj": 6, "object": [0, 1, 2, 3, 4, 5, 6, 9, 11, 14, 15, 17], "objective_bound": [3, 4], "observ": [6, 8], "obtain": [4, 8, 15, 17], "obviou": [0, 1], "obvious": [4, 8, 9, 17], "occupi": [4, 5, 6, 7, 17], "occur": [0, 1, 4, 5, 17], "octob": 4, "od": [2, 3], "odd": [0, 1, 11, 17], "off": [6, 8, 11], "offer": [0, 1, 3, 4, 8, 9, 16, 17, 18], "offici": [0, 1], "offset": 7, "often": [0, 1, 4, 5, 8, 17], "oi": [0, 1], "ok": [0, 1, 11], "old": 8, "omit": 17, "on_binpacking2d": [2, 3], "on_complet": [3, 8], "on_tsp": [2, 3], "onc": [0, 1, 4, 5, 8, 11, 15, 17], "one": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 17], "ones": [6, 17], "ongo": 17, "onli": [0, 1, 4, 5, 6, 7, 8, 9, 11, 15, 17], "onlin": 17, "open": [0, 1, 5, 13, 15, 16, 18], "open_resource_stream": [3, 12, 13, 15, 16, 17, 18], "oper": [0, 1, 4, 5, 12, 15, 17], "oppon": 17, "oppos": 17, "opposit": 4, "opt": [12, 15], "opt_tour_from_fil": [3, 15], "opt_tour_from_resourc": [3, 15], "optim": [0, 3, 4, 5, 6, 7, 8, 9, 12, 13, 15, 17], "optima": 15, "optimum": 12, "option": [0, 1, 4, 8, 11, 12, 15, 17], "order": [4, 8, 11, 15, 17], "order1d": [0, 1, 2, 3], "order1d_3_1": 11, "order1d_3_2": 11, "order1d_4_2": 11, "order1d_4_2_2": 11, "order1d_4_3": 11, "order1d_4_3_2": 11, "orderingspac": [3, 11], "ordinari": [0, 1, 8], "org": [0, 1, 4, 5, 8, 9, 10, 12, 13, 15, 16, 17], "orig": [6, 15], "origin": [0, 1, 4, 5, 6, 8, 9, 10, 11, 12, 15, 16, 17, 18], "orsa": [15, 16], "orthogon": [4, 5], "oscil": 10, "oswaldo": 12, "other": [0, 1, 3, 5, 7, 8, 9, 11, 15, 17], "otherwis": [4, 5, 6, 8, 15, 17], "our": [0, 1, 3, 5, 6, 7, 8, 9, 15, 17, 18], "ourselv": 9, "out": [0, 1, 3, 4, 5, 8, 9, 17], "outcom": 4, "output": [0, 1, 3, 8, 9, 10], "outsid": [4, 5], "over": [0, 1, 4, 5, 7, 8, 17], "overal": [0, 1, 4, 5, 7, 11, 12], "overhead": 5, "overlap": 4, "own": [0, 1, 9, 17], "p": [0, 1, 4, 8, 9, 12, 15], "p1": 11, "p2": 11, "pac": [3, 4], "pack": [2, 3, 5, 6, 7, 14, 17], "packag": [0, 1, 2], "packing_item_str": 4, "packing_result": [2, 3], "packing_spac": [2, 3], "packing_statist": [2, 3], "packingresult": [3, 4], "packingspac": [3, 4], "packingstatist": [3, 4], "paderborn": 12, "page": [1, 4, 12, 15, 17], "pai": 11, "pair": [0, 1, 5, 6, 8, 11, 12, 17], "pano": 12, "paper": [4, 5, 10, 12, 15], "papho": 17, "parallel": 12, "param": 8, "param_dim": [3, 8], "paramet": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "parameter": [8, 9], "parameter_spac": [3, 8], "parameteriz": 8, "parametr": 8, "paranaens": 17, "pardalo": 12, "pari": [8, 9, 10], "pars": 4, "parse_row": [3, 4], "parser": 3, "part": [4, 8, 12, 15, 17, 18], "partial": 9, "partially_linear": [3, 8], "particular": [0, 1], "pass": [0, 1, 8], "past": [0, 1], "path": [0, 1, 4, 8, 15, 17], "patholog": [0, 1], "pattern": [0, 1, 8], "paulo": 12, "pavot2010ahgvaftatdbp": 4, "pc": 15, "pcb442": 15, "pcg64": 14, "pdf": [4, 15, 16, 17], "peak": [3, 8], "pedro": 15, "penal": 17, "penalti": 17, "per": [4, 5, 6, 8, 17], "perfect": [6, 11], "perform": [0, 1, 4, 6, 8, 11, 14, 17], "period": [0, 1, 8], "perm": 17, "permit": [6, 17], "permut": [0, 1, 4, 5, 11, 12, 14, 15, 17], "perspect": 11, "peter": [0, 1, 12], "phase": 8, "phi": [8, 9], "php": [17, 18], "physic": 10, "pick": [6, 14], "piec": [4, 6], "pinbal": [8, 9, 10], "pinkish": 8, "pip": [0, 1], "pitsouli": 12, "place": [0, 1, 4, 5, 11, 17], "plai": [0, 1, 8, 16, 17, 18], "plain": [9, 15], "plainli": 9, "plan": [0, 1, 17], "plan_length": [2, 3], "plane": [0, 1, 10], "pleas": [0, 1], "plot": [0, 1, 4, 8, 11], "plot_exampl": [3, 8], "plot_indic": 8, "plot_pack": [2, 3], "plot_point": [3, 8], "plu": [7, 8, 17], "plug": [8, 9, 10], "pnn": 9, "point": [6, 8, 9, 10, 15, 17], "polici": [0, 1], "polymtl": [0, 1, 12, 13], "pool": 4, "poolmanag": 4, "poor": 9, "pop": 8, "posit": [4, 6, 8, 17], "possibl": [0, 1, 4, 5, 6, 8, 9, 11, 17], "potenti": [0, 1, 5, 6, 11, 17], "power": [9, 11], "ppp": 8, "pppp": 8, "pr1002": 15, "pr76": 15, "practic": [0, 1, 7, 17], "pre": [0, 1, 4, 6, 8, 9], "precis": [0, 1, 11], "predefin": [3, 8], "prefer": [5, 7], "prefix": 4, "prescrib": [4, 8, 17], "present": [4, 8, 12, 15], "press": 15, "presum": [0, 1], "pretti": 9, "prevent": [0, 1], "previou": 17, "price": 4, "primit": 8, "princeton": 15, "principl": 17, "print": [3, 4, 6, 8, 11, 12, 15, 17], "privat": [0, 1], "probabl": [8, 9, 11, 17], "problem": [3, 4, 5, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18], "problemat": 15, "procedur": [0, 1, 5, 6, 8, 17], "proceed": [12, 15], "process": [0, 1, 4, 5, 6, 8, 9, 15, 17], "produc": [0, 1, 6, 8, 17], "product": [0, 1, 11, 12], "prof": [0, 1, 4, 5, 6, 7, 8, 10, 12, 15, 17], "program": [0, 1, 3, 4, 10, 17], "progress": 8, "project": [0, 1], "projectil": 8, "projectile2": 8, "propag": 9, "proper": [0, 1, 9, 17], "properli": [0, 1, 8, 11], "properti": 15, "propos": [6, 8], "prove": [0, 1], "provid": [0, 1, 3, 4, 5, 8, 9, 10, 11, 12, 15, 17], "public": [0, 1, 4, 17], "publish": [0, 1, 15], "pull": 8, "punnen": 15, "purpos": [0, 1, 7, 8, 9, 11, 15], "push": [0, 1, 4, 6, 7], "put": [0, 1, 5, 9, 11], "pycodestyl": [0, 1], "pydocstyl": [0, 1], "pyflak": [0, 1], "pylint": [0, 1], "pypi": [0, 1], "pyroma": [0, 1], "python": [0, 3], "q": 8, "qap": [2, 3, 11], "qap4_2992_3672": 12, "qaplib": [0, 1, 3, 12], "qapobject": [3, 12], "quadrat": [3, 8, 11, 12, 13], "qualiti": [0, 1], "qudrat": 11, "querido": 12, "question": [0, 1], "quickli": [0, 1, 8, 15], "quit": 7, "r": [0, 1, 4, 6, 8, 9, 10], "radiu": [0, 1, 11], "rainer": [12, 13], "rais": [4, 6, 9, 17], "random": [0, 1, 6, 8, 14, 15], "random_sampl": 8, "randomli": [6, 14], "rang": [0, 1, 8, 11, 17], "rank": [0, 1, 11, 15], "rankdata": 11, "rate": 8, "rather": 8, "ratio": 9, "raw": [0, 1, 8], "raymond": 15, "rd100": 15, "re": [6, 8, 9, 11], "reach": [0, 1, 6, 7, 8], "read": [4, 8, 15, 16, 17], "readabl": [0, 1], "real": [4, 6, 8, 9, 11], "realiti": 15, "realli": [0, 1, 11, 15], "reason": [0, 1, 8, 9, 15], "receiv": [0, 1, 4, 5, 6, 8, 10], "record": 4, "rectangl": [0, 1, 4, 5], "rectangular": [0, 1, 4], "recurs": 4, "red": 8, "redistribut": [0, 1], "reduc": [0, 1, 6, 7, 8, 11, 17], "redund": 17, "refer": [3, 4], "refin": [0, 1], "reflect": [0, 1, 11], "regard": [0, 1], "regardless": [0, 1, 7], "reinelt": [0, 1, 15, 16], "reinforc": [8, 9, 10], "relat": [0, 1, 4, 9, 12, 15, 17], "relationship": 11, "releas": [0, 1], "relev": [4, 7], "reload": 15, "rememb": [4, 5], "remov": [4, 8], "render": 4, "rendl": [0, 1, 12, 13], "repeat": [5, 17], "repeatedli": 4, "repetit": [0, 1, 4, 5, 6, 17], "replac": [8, 9, 17], "replic": [0, 1], "report": [0, 1, 12], "repositori": [0, 1, 17], "repr": [4, 15, 17], "repres": [0, 1, 4, 8, 9, 11, 12, 15, 17], "represent": [0, 1, 4, 6, 15, 17], "reproduct": 6, "requir": [0, 1, 4, 6, 7, 8, 11], "research": [0, 1, 4, 5, 12, 17, 18], "researchg": 17, "resid": 17, "resourc": [0, 1, 4, 12, 13, 15, 16, 17, 18], "respect": 8, "respons": 8, "rest": 8, "result": [0, 1, 4, 5, 6, 8, 11, 17, 18], "results_log": [2, 3], "results_plot": [2, 3], "resultslog": [3, 8], "resultsplot": [3, 8], "retur": 6, "return": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "retval": [6, 7, 9], "rev": 15, "rev_if_h_not_wors": [3, 15], "rev_if_not_wors": [3, 15], "revers": 15, "review": 15, "ri": 12, "ribeiro": 17, "rid": [7, 17], "right": [4, 5, 6, 8, 11, 15, 17], "ring": 8, "rinnooi": 15, "rita": 4, "rl": [0, 1, 3, 4, 15], "rnk": 11, "road": 15, "robert": 15, "roberto": 15, "robin": [0, 1, 17, 18], "robinx": [0, 1, 3, 17], "robinxv": [17, 18], "robust": 12, "rof": 6, "root": 8, "rotat": [0, 1, 4, 5, 6, 8], "rotor": 8, "round": [0, 1, 3, 15, 17, 18], "routin": [4, 9], "row": [4, 7, 8, 17], "rtype": 8, "ruff": [0, 1], "rui": [0, 1, 4, 5, 6, 7], "ruii": 10, "run": [0, 1, 3, 4, 6, 8], "run_od": [3, 8], "runtim": [0, 1], "rw_algo_selector": 4, "s0377": [4, 5], "s10589": 12, "s11590": 4, "s1997mmasfqap": 12, "sai": [0, 1, 7, 8, 9, 11, 17], "said": [8, 12], "sake": [0, 1], "salesman": [15, 16], "salesperson": [3, 14, 15, 16, 17], "same": [4, 5, 6, 7, 8, 9, 11, 15, 17], "sampl": [0, 1, 6, 8, 15], "samplestatist": 4, "sandjai": 4, "sane": 8, "saniti": 4, "santiti": 15, "satisfi": [0, 1], "sbhulai": 4, "scale": [6, 12, 15], "scenario": [8, 9], "schedul": [0, 1, 17, 18], "schienc": 12, "scholar": [4, 5], "school": [0, 1, 4, 5, 6, 7, 12, 15, 17], "sch\u00f6nberger": [0, 1], "scienc": 12, "scientif": [0, 1], "scipi": 11, "scope": [3, 4], "scope_inst": [1, 2, 3], "script": [0, 1, 3], "search": [0, 1, 4, 6, 7, 12, 15, 17], "search_spac": [3, 4, 6, 17], "search_space_for_n_and_round": [3, 17], "sebasti\u00e1n": 17, "second": [0, 1, 4, 5, 6, 8, 11, 12, 15, 17], "secur": [0, 1], "see": [0, 1, 6, 7, 8, 11, 17], "seed": 6, "sejla": 15, "select": [6, 11], "selector": [4, 6], "self": 17, "semgrep": [0, 1], "semi": 4, "sens": [7, 8, 11], "sensor": 8, "separ": [4, 8, 17], "separation_max": [3, 17], "separation_min": [3, 17], "separationmax": 17, "separationmin": 17, "septemb": 15, "sequenc": [4, 8, 11, 14], "seri": 15, "seriou": [0, 1], "serv": 8, "set": [0, 1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 17, 18], "set_model": [3, 8], "set_raw": [3, 8], "setup": [0, 1, 3, 4, 6, 8, 17], "setup_rls_f1": [4, 6], "setup_rls_f7": [4, 6], "setup_rs_f1": [4, 6], "seventi": 10, "sever": [0, 1, 4, 5, 8, 9, 10, 11, 12, 15, 17], "shall": [11, 15], "shanghai": 15, "shape": [4, 9, 17], "share": [1, 2, 11, 17], "shenzhen": [8, 9, 10], "shigeyoshi": 15, "ship": 4, "shmoi": 15, "short": 17, "shorter": [8, 15, 17], "shortest": [0, 1, 12, 15], "shot": [0, 1], "should": [0, 1, 6, 8, 9, 11, 15, 16, 17], "show": 15, "shown": 17, "showpdf": [4, 5], "shuffl": 6, "si175": 15, "sigma": [0, 1], "sign": [0, 1, 4, 5, 14], "signedpermut": [4, 14], "silvano": 4, "similar": [6, 7, 9], "similarli": 7, "simoni": 4, "simpl": [9, 15, 17], "simpli": [6, 8], "simplic": [0, 1], "simul": [3, 8, 9, 12, 15], "simultan": 8, "sin": 8, "sinc": [0, 1, 6, 7, 8, 9, 11, 15, 17], "singapor": 15, "singl": [0, 1, 4, 5, 7, 8, 9, 15], "singular": 4, "sio": 8, "sit": [0, 1, 11], "site": 4, "situat": [0, 1, 5, 11, 17], "six": 10, "size": [0, 1, 4, 5, 6, 7, 8, 9], "skip": [8, 17], "skip_if_exist": 8, "skylin": 7, "slack": 6, "slice": 8, "slightli": 8, "slot": [0, 1, 8, 11, 17], "slow": 8, "slower": 5, "small": [4, 7, 8, 11, 15], "smaller": [5, 6, 7, 8, 11, 15], "smallest": [0, 1, 7, 9, 17], "smallest_area": 7, "smooth": 8, "sneakili": 17, "so": [0, 1, 5, 6, 7, 8, 9, 11, 12, 15, 17], "societi": [4, 12], "softwar": [0, 1, 15, 16], "solut": [0, 1, 4, 6, 7, 8, 11, 12, 15, 17], "solution_spac": [4, 6], "solv": [0, 1, 3, 4, 6, 8, 11, 12, 15, 16, 17, 18], "some": [0, 1, 3, 6, 8, 9, 11, 15, 17, 18], "someth": [0, 1, 8, 9, 11], "sometim": [0, 1, 8], "somewher": 7, "soon": [0, 1, 8], "sophist": 9, "sort": [4, 11, 17], "sourc": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "source_url": 4, "space": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 15, 17], "special": 3, "specif": [0, 1, 4, 9, 11], "specifi": [0, 1, 4], "speed": [5, 8], "spend": 8, "spent": 8, "split": [6, 8], "splitlin": 11, "sport": [17, 18], "springer": [4, 12, 17], "sqrt": [0, 1, 8, 10, 15], "squar": [0, 1, 4, 7, 8, 9], "sr": 4, "srinivasan": 15, "ssci": 15, "ssci51031": 15, "ssh": [0, 1], "st": [0, 1, 15], "st70": 15, "sta_dim": 8, "stabl": [0, 1, 8, 9], "stadium": 17, "stage": 17, "stai": 11, "stand": 4, "standard": [0, 1, 3, 4, 12, 15, 17], "start": [0, 1, 4, 5, 6, 8, 10, 11, 15, 17], "start0": 8, "start1": 8, "start_color": [3, 8], "start_mark": [3, 8], "starting_point": [2, 3], "starting_st": 8, "stat": 11, "state": [0, 1, 3, 8, 9, 10, 17], "state_dim": [3, 8, 9], "state_dim_mod": [3, 8], "state_dims_in_j": [3, 8], "statement": [0, 1], "static": [4, 11, 12, 15, 17], "statist": 4, "steer": [3, 8], "stefan": [12, 13], "stem": 12, "step": [0, 1, 4, 5, 6, 7, 8, 17], "still": [0, 1, 15], "stock": 4, "stop": [4, 5, 8], "store": [0, 1, 4, 8, 15, 17], "str": [3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18], "straightforward": 17, "strang": 15, "strategi": [9, 10], "streak": [0, 1, 17], "stream": [12, 13, 15, 16, 18], "street": 15, "string": [0, 1, 3, 4, 6, 11, 12, 15, 17], "stringio": 8, "strip": [0, 1], "strive": [0, 1], "strongli": 10, "strt": 8, "structur": [0, 1, 4, 6, 8, 9, 11, 17], "stu": [0, 1, 15], "stuart": [0, 1, 8, 10], "stuart_landau": [3, 8], "stuart_landau_111": [8, 10], "stuart_landau_4": [8, 10], "student": [0, 1, 4, 5, 6, 7, 12, 15, 17], "studi": 15, "stuff": [0, 1, 4], "style": [0, 1], "st\u00fctzle": 12, "sub": 8, "subclass": 8, "subject": [9, 12], "submodul": [1, 2], "subpackag": [1, 2], "subsequ": [5, 7], "subset": 15, "subtract": [8, 11], "succe": 8, "success": [0, 1, 8], "suffix": 4, "suggest": [0, 1, 5], "suggestedxin01": 11, "suilen": 4, "sullivan": 4, "sum": [0, 1, 4, 8, 11, 12, 15, 17], "sum_up_result": [3, 8], "summar": 17, "sun": [8, 9, 10], "sup_titl": 8, "superfici": 17, "supervis": [0, 1, 4, 5, 6, 7, 12, 15, 17], "support": 15, "supports_model_mod": 8, "suppos": [5, 9], "sure": [0, 1, 15, 16], "surrog": 8, "surrogate_optim": [2, 3], "surrogateoptim": [3, 8], "survei": 12, "suspect": 5, "sussex": 15, "swap": 11, "swap_dist": [3, 11], "switch": [8, 17], "switzerland": 12, "symmatr": 11, "symmetr": [11, 14, 15, 17], "symposium": 15, "synthes": [3, 8, 9], "synthesi": [8, 9], "system": [0, 1, 2, 3, 9, 12], "system_model": [2, 3], "systemmodel": [3, 8], "t": [3, 4, 8, 11, 15, 17], "t1": 11, "t1991rtsftqap": 12, "t1995coisftqap": 12, "t2": 11, "t3": 11, "t_from_od": [3, 8], "tabl": [4, 15, 17], "taboo": 12, "tabu": 12, "tackl": [0, 1, 3], "tag": [3, 11], "tag_titl": [3, 11], "tai12a": 12, "taillard": 12, "take": [0, 1, 6, 8, 9, 17], "taken": [0, 1, 9, 17], "tan": 15, "tang": 15, "tania": 12, "target": 6, "task": [0, 1, 8, 11], "tb1994aisaaftqap": 12, "team": [0, 1, 3, 17], "technic": 12, "techniqu": 4, "technischen": [8, 9, 10], "technologi": [8, 9, 10, 12], "tell": [0, 1], "temp": 7, "temp_1": 17, "temp_2": 17, "tempa": 7, "templat": 6, "temporari": [7, 17], "tend": [0, 1, 5], "teng": [4, 5], "term": [0, 1, 7], "termin": [6, 15], "test": [2, 3, 4, 8, 9, 15], "test_starting_st": [3, 8], "test_step": [3, 8], "test_tim": [3, 8], "testb": 8, "text": [4, 6, 8, 9, 11, 15, 17], "textio": [13, 16, 18], "textur": 6, "tg1997amftqap": 12, "th": [0, 1, 15], "than": [0, 1, 4, 5, 6, 8, 11, 15, 17], "the_inst": 11, "the_spac": 11, "the_str": 11, "thei": [0, 1, 4, 5, 6, 7, 8, 11], "them": [0, 1, 4, 5, 8, 11, 15, 17], "themselv": 8, "therefor": [0, 1, 5, 6, 7, 8, 12, 17], "thereof": 8, "theses": [8, 10], "thesi": [8, 9, 10], "thi": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 16, 17, 18], "thing": [0, 1, 6, 8, 11, 15], "think": [0, 1, 8], "third": [0, 1, 4, 5, 9, 11, 12], "thoma": [0, 1, 4, 5, 6, 7, 12, 15, 17], "thomasweis": [0, 1, 3], "thonemann": 12, "thorough": [0, 1], "those": [0, 1, 6, 7, 8, 17], "though": [0, 1, 7, 8], "three": [0, 1, 4, 8, 10, 11], "three_coupled_oscil": [3, 8], "through": [6, 11], "throw": 6, "thu": [0, 1, 5, 8, 10, 11, 17], "tianyu": [0, 1, 15], "time": [0, 1, 4, 5, 6, 7, 8, 9, 11, 12, 15, 17], "time_of_flight": 8, "timet": [17, 18], "titl": [4, 8, 11], "to_bin_count": [4, 7], "to_compact_str": [3, 4], "to_csv": [3, 4], "to_str": [3, 4, 6, 11, 17], "to_stream": [3, 15], "togeth": [0, 1, 4, 6, 7, 8, 9, 17], "toggl": 8, "too": [0, 1, 6, 17], "took": 6, "tool": [0, 1, 3, 6, 8, 9, 10, 11, 15], "toolkit": [8, 9, 10], "top": [4, 5], "topologi": 11, "total": [0, 1, 4, 6, 7, 8, 10, 17], "total_item_area": [3, 4, 6, 7], "totaltim": 8, "tour": [0, 1, 14, 15, 17], "tour_length": [2, 3], "tour_length_lower_bound": [3, 15, 17], "tour_length_upper_bound": [3, 15], "tourlength": [3, 15], "tourlengthlowerbound": [15, 17], "tourlengthupperbound": [15, 17], "tournament": [17, 18], "toward": [4, 6, 7, 8, 17], "train": [8, 9, 10], "training_starting_st": [3, 8], "training_step": [3, 8], "training_tim": [3, 8], "trajectori": [0, 1], "transform": [4, 8, 17], "transit": 9, "translat": [0, 1, 6, 11, 17], "transport": [0, 1], "travel": [3, 14, 15, 16, 17, 18], "travel_distance_x": 8, "travelrepo": [17, 18], "treat": [6, 9], "tri": [0, 1, 4, 5, 6, 7, 8], "triangl": 15, "trick": 17, "trivedi": 15, "trivial": [0, 1, 4, 12], "trivial_bound": [3, 12], "troubl": [0, 1], "true": [3, 4, 6, 7, 8, 9, 14, 15, 17], "try": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 15, 17], "tryceratop": [0, 1], "tsp": [2, 3, 14, 18], "tsp225": 15, "tsp95": [15, 16], "tsp_instances_for_test": [3, 14], "tspea1p1revn": [3, 15], "tspfaq": [15, 16], "tspfea1p1revn": [3, 15], "tsplib": [0, 1, 3, 15], "tsplib95": [15, 16], "tsutsui": 15, "tt": 8, "ttime": 8, "ttp": [2, 3], "tunnel": [8, 9], "tupl": [4, 6, 8, 9, 11, 12, 15, 17], "turn": [0, 1, 6, 9, 11], "tweis": [0, 1], "twice": [0, 1, 17], "two": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17], "txt": 4, "type": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "typeerror": [4, 6, 17], "typevar": [8, 11], "u": [4, 6, 7, 8, 9, 10, 11, 17], "ugent": [17, 18], "uk": 15, "ulrich": 12, "ulysses16": 15, "ulysses22": 15, "unari": 15, "unboundedli": 8, "under": [0, 1, 4, 5, 6, 7, 9, 12, 15, 17], "understand": [0, 1], "understood": 17, "unfortun": [0, 1, 8], "uni": [15, 16], "unibo": 4, "uniform": 17, "unimport": [0, 1], "unind": [8, 9], "uniniti": [4, 17], "union": [4, 8, 11, 14], "uniqu": [6, 11], "unit": [3, 6, 11, 14, 17], "univers": [0, 1, 4, 5, 6, 7, 12, 15, 17, 18], "universit\u00e4t": [8, 9, 10, 15, 16], "universit\u00e4tsbibliothek": [8, 9, 10], "unless": 11, "unnecessari": [0, 1], "unord": 6, "unpackag": 4, "unsaf": [0, 1], "unstructur": [0, 1, 11], "unsuccessfulli": 5, "until": [5, 8], "unus": [0, 1], "up": [0, 1, 4, 5, 6, 7, 8, 15, 17], "updat": [8, 12, 13], "upload": 17, "upper": [6, 7, 11, 12, 15, 17], "upper_bound": [3, 4, 6, 7, 12, 15, 17], "upper_bound_range_multipli": 15, "upperbound": 4, "url": 4, "urllib3": 4, "urrutia": 17, "us": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18], "usa": [12, 15], "usabl": [0, 1, 7], "use_state_dim": 8, "useabl": 7, "user": 6, "ustc": [0, 1], "usual": [0, 1, 8, 15, 17], "util": [0, 1, 4, 15, 17], "utmost": [0, 1], "v": [4, 8, 17], "v_x": 8, "v_y": 8, "valid": [0, 1, 3, 4, 6, 14, 15, 17], "validate_algorithm_on_1_2dbinpack": [3, 14], "validate_algorithm_on_1_tsp": [3, 14], "validate_algorithm_on_2dbinpack": [3, 14], "validate_algorithm_on_tsp": [3, 14], "validate_objective_on_1_2dbinpack": [3, 14], "validate_objective_on_1_tsp": [3, 14], "validate_objective_on_2dbinpack": [3, 14], "validate_objective_on_tsp": [3, 14], "validate_signed_permutation_encoding_on_1_2dbinpack": [3, 14], "validate_signed_permutation_encoding_on_2dbinpack": [3, 14], "valu": [0, 1, 4, 5, 6, 7, 8, 9, 11, 12, 15, 17], "valueerror": [4, 6, 17], "val\u00e9rio": 4, "van": [0, 1, 4, 15, 17, 18], "variabl": [0, 1, 3, 6, 8, 9, 11], "variant": [0, 1, 5, 8, 17], "variat": 15, "varieti": [0, 1], "variou": [0, 1, 8], "va\u0161ek": 15, "vdbbmsb2016asiasstfi": 4, "vector": [6, 8, 9], "vectorspac": [6, 8], "venic": 4, "ver": 3, "veri": [0, 1, 3, 4, 5, 7, 8, 9, 11, 15, 17], "verifi": [4, 8], "verlag": 4, "versa": [0, 1, 6, 11, 17], "version": [0, 1, 2, 11, 14, 15], "vertic": 6, "via": [0, 1, 4, 8, 9, 12, 15, 17], "vice": [0, 1, 6, 11, 17], "vin\u00edciu": 4, "violat": [6, 15, 17], "violet": 8, "visit": [0, 1, 12, 13, 15, 17], "visual": [0, 1, 11], "vnd": 4, "vol": [8, 9, 10], "volum": 15, "vu": 4, "vulner": [0, 1], "vultur": [0, 1], "w": 8, "wa": [4, 5, 6, 8, 17], "wai": [0, 1, 4, 6, 8, 9, 11, 15, 17], "wake": [8, 9, 10], "wang": 4, "want": [0, 1, 4, 6, 8, 9, 11, 15], "warm": 8, "warmup": 8, "warmup_algorithm": 8, "warranti": [0, 1], "warszawa": 10, "wast": [0, 1, 6], "we": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 17, 18], "websit": [12, 13], "wei": [8, 9, 10], "weight": [0, 1, 8, 9, 11, 15], "weis": [0, 1, 4, 5, 6, 7, 12, 15, 17], "well": [0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 15, 17], "wenxiang": 15, "were": [8, 10, 11], "west": 15, "what": [0, 1, 8, 11, 15], "whatev": [8, 11], "when": [0, 1, 5, 8, 15, 17], "where": [0, 1, 4, 6, 7, 8, 9, 11, 15, 17], "wherea": [0, 1, 7, 11], "whether": [0, 1, 4, 6, 8, 11, 15], "which": [0, 1, 4, 5, 6, 7, 8, 9, 11, 12, 15, 17], "while": [0, 1, 5, 6, 8], "who": [0, 1], "whole": [6, 15], "whose": [0, 1, 6, 7, 9, 10], "why": [0, 1], "wide": [0, 1], "width": [0, 1, 4, 5, 6, 7], "wilei": 15, "wilhelm": 12, "william": 15, "wind": [8, 9], "wise": [0, 1], "with_rot": 4, "within": [0, 1, 5, 15, 17], "without": [0, 1, 4, 6, 10, 17], "without_rot": 4, "wolkowicz": 12, "won": 4, "wonder": [0, 1], "word": [0, 1, 5, 7, 8, 9, 11, 15, 17], "work": [0, 1, 4, 5, 6, 7, 8, 9, 10, 12, 15, 17], "workshop": [0, 1, 12], "world": [4, 8, 9], "wors": [0, 1, 5, 15], "worst": 5, "would": [0, 1, 4, 5, 6, 7, 8, 9, 11, 15, 17], "wp": 17, "wrap": [6, 8, 15], "write": [4, 8, 9, 15, 17], "writeln": [8, 9], "writer": 4, "written": [4, 9], "wrong": [4, 6, 17], "wu": 15, "wuhan": 15, "www": [0, 1, 4, 5, 17], "x": [0, 1, 4, 5, 6, 7, 8, 11, 12, 15, 17], "x1": [4, 6, 11, 17], "x2": [4, 6, 11, 17], "x4": 11, "xi": 15, "xiang": 17, "xin": 15, "xml": [17, 18], "xmlc": [8, 9, 10], "xx": [4, 8], "xxx": 12, "x\u00b2": [0, 1], "y": [0, 1, 4, 5, 6, 7, 8, 14, 15, 17], "y1": [4, 17], "y2": [4, 17], "yao": 15, "ye": 5, "year": [0, 1, 10], "yellow": 8, "yet": [0, 1, 4, 11, 15, 17], "yield": [5, 6], "york": 12, "yoslan": [8, 9, 10], "you": [0, 1, 3, 4, 8, 11, 14, 15, 16, 17, 18], "your": [0, 1, 14], "yuxiang": [8, 9, 10], "yy": 17, "y\u00b2": [0, 1], "z": [6, 7, 8, 9, 15], "zbigniew": 15, "zero": [6, 11, 17], "zhao": [0, 1, 4, 5, 6, 7], "zhize": 15, "zhu": 12, "zip": 4, "zr1329142665": [0, 1, 4, 5, 6, 7], "\u00e7ela": [0, 1, 12], "\u00e9ric": 12, "\u4e0a\u6d77": 15, "\u4e2d\u56fd\u5b89\u5fbd\u7701\u5408\u80a5\u5e02": [0, 1, 4, 5, 6, 7, 12, 15, 17], "\u4eba\u5de5\u667a\u80fd\u4e0e\u5927\u6570\u636e\u5b66\u9662": [0, 1, 4, 5, 6, 7, 12, 15, 17], "\u5317\u4eac": 15, "\u5357\u4eac": 15, "\u5408\u80a5": 15, "\u5408\u80a5\u5927\u5b66": [0, 1, 4, 5, 6, 7, 12, 15, 17], "\u5408\u80a5\u5b66\u9662": [0, 1], "\u54c8\u5c14\u6ee8": 15, "\u54c8\u5c14\u6ee8\u5de5\u4e1a\u5927\u5b66": [8, 9, 10], "\u57fa\u4e8e\u6df1\u5ea6\u5f3a\u5316\u5b66\u4e60\u65b9\u6cd5\u7684": [8, 9, 10], "\u57fa\u4e8e\u6df1\u5ea6\u5f3a\u5316\u5b66\u4e60\u7684\u5c04\u6d41\u6df7\u5408\u589e\u5f3a\u63a7\u5236": [8, 9, 10], "\u5b59\u4f1f": [8, 9, 10], "\u5e94\u7528\u4f18\u5316\u7814\u7a76\u6240": [0, 1, 4, 5, 6, 7, 12, 15, 17], "\u6606\u660e": 15, "\u66f9\u7fd4": 17, "\u674e\u5b87\u7fd4": [8, 9, 10], "\u6881\u5929\u5b87": [0, 1, 15], "\u6b66\u6c49": 15, "\u6c64\u536b\u601d\u6559\u6388": [0, 1, 4, 5, 6, 7, 12, 15, 17], "\u6d41\u4f53\u5f39\u7403\u5c3e\u6d41\u63a7\u5236": [8, 9, 10], "\u6df1\u5733": [8, 9, 10], "\u897f\u5b89": 15, "\u8d75\u777f": [0, 1, 4, 5, 6, 7], "\u91cd\u5e86": 15, "\u957f\u6c99": 15, "\u9648\u5609\u9633": 12, "\u9999\u6e2f": 15}, "titles": ["1. Introduction", "moptipyapps: Applications of Metaheuristic Optimization in Python", "moptipyapps", "moptipyapps package", "moptipyapps.binpacking2d package", "moptipyapps.binpacking2d.encodings package", "moptipyapps.binpacking2d.instgen package", "moptipyapps.binpacking2d.objectives package", "moptipyapps.dynamic_control package", "moptipyapps.dynamic_control.controllers package", "moptipyapps.dynamic_control.systems package", "moptipyapps.order1d package", "moptipyapps.qap package", "moptipyapps.qap.qaplib package", "moptipyapps.tests package", "moptipyapps.tsp package", "moptipyapps.tsp.tsplib package", "moptipyapps.ttp package", "moptipyapps.ttp.robinx package"], "titleterms": {"1": [0, 1], "2": [0, 1], "3": [0, 1], "4": [0, 1], "5": [0, 1], "6": [0, 1], "7": 1, "One": [0, 1], "The": [0, 1], "analysi": [0, 1], "ann": 9, "applic": [0, 1], "assign": [0, 1], "bin": [0, 1], "bin_count": 7, "bin_count_and_empti": 7, "bin_count_and_last_empti": 7, "bin_count_and_last_skylin": 7, "bin_count_and_last_smal": 7, "bin_count_and_lowest_skylin": 7, "bin_count_and_smal": 7, "binpacking2d": [4, 5, 6, 7], "bk": 4, "code": 1, "codegen": 9, "contact": [0, 1], "control": [0, 1, 8, 9], "cubic": 9, "dimension": [0, 1], "distanc": 11, "dynam": [0, 1], "dynamic_control": [8, 9, 10], "ea1p1_revn": 15, "encod": 5, "error": [6, 17], "errors_and_hard": 6, "except": [0, 1], "experi": [4, 6], "experiment_raw": 8, "experiment_surrog": 8, "fea1p1_revn": 15, "game_encod": 17, "game_plan": 17, "game_plan_spac": 17, "hard": 6, "ibl_encoding_1": 5, "ibl_encoding_2": 5, "inst_decod": 6, "instal": [0, 1], "instanc": [4, 8, 11, 12, 15, 17], "instance_spac": 6, "instgen": 6, "introduct": [0, 1], "known_optima": 15, "licens": [0, 1], "linear": 9, "lorenz": 10, "make_inst": 4, "metaheurist": 1, "min_ann": 9, "model_object": 8, "modul": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17], "moptipyapp": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "object": [7, 8, 12], "od": 8, "on_binpacking2d": 14, "on_tsp": 14, "optim": 1, "order": [0, 1], "order1d": 11, "pack": [0, 1, 4], "packag": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "packing_result": 4, "packing_spac": 4, "packing_statist": 4, "partially_linear": 9, "peak": 9, "plan_length": 17, "plot_pack": 4, "predefin": 9, "problem": [0, 1, 6], "python": 1, "qap": [0, 1, 12, 13], "qaplib": 13, "quadrat": [0, 1, 9], "results_log": 8, "results_plot": 8, "robinx": 18, "salesperson": [0, 1], "share": 3, "space": 11, "starting_point": 8, "static": [0, 1], "stuart_landau": 10, "submodul": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17], "subpackag": [3, 4, 8, 12, 15, 17], "surrogate_optim": 8, "synthesi": [0, 1], "system": [8, 10], "system_model": 8, "test": [0, 1, 14], "three_coupled_oscil": 10, "tour_length": 15, "tournament": [0, 1], "travel": [0, 1], "tsp": [0, 1, 15, 16], "tsplib": 16, "ttp": [0, 1, 17, 18], "two": [0, 1], "unit": [0, 1], "version": 3}}) \ No newline at end of file diff --git a/setup_cfg.html b/setup_cfg.html new file mode 100644 index 00000000..38632081 --- /dev/null +++ b/setup_cfg.html @@ -0,0 +1,76 @@ +

    [metadata]
    +name = moptipyapps
    +version = attr: moptipyapps.version.__version__
    +description = Applications of Metaheuristic Optimization in Python.
    +long_description = file: README.md
    +long_description_content_type = text/markdown
    +keywords =
    +    bin packing
    +license = GPL 3.0
    +license_files = file: LICENSE
    +classifiers =
    +    Development Status :: 4 - Beta
    +    Framework :: Matplotlib
    +    Intended Audience :: Developers
    +    Intended Audience :: Education
    +    Intended Audience :: Science/Research
    +    License :: OSI Approved :: GNU General Public License v3 (GPLv3)
    +    Natural Language :: English
    +    Natural Language :: German
    +    Natural Language :: Chinese (Simplified)
    +    Operating System :: Microsoft :: Windows
    +    Operating System :: POSIX :: Linux
    +    Programming Language :: Python :: 3 :: Only
    +    Programming Language :: Python :: 3.12
    +    Topic :: Education
    +    Topic :: Scientific/Engineering :: Artificial Intelligence
    +    Topic :: Scientific/Engineering :: Mathematics
    +    Topic :: Scientific/Engineering :: Visualization
    +url = https://thomasweise.github.io/moptipyapps
    +author = Thomas Weise
    +author_email = tweise@ustc.edu.cn
    +maintainer = Thomas Weise
    +maintainer_email = tweise@ustc.edu.cn
    +project_urls =
    +    Documentation = https://thomasweise.github.io/moptipyapps
    +    Source = https://github.com/thomasWeise/moptipyapps/
    +    Tracker = https://github.com/thomasWeise/moptipyapps/issues
    +
    +[options]
    +include_package_data = True
    +install_requires =
    +    certifi >= 2024.8.30
    +    defusedxml >= 0.7.1
    +    moptipy >= 0.9.136
    +    numpy < 2
    +    numba >= 0.60.0
    +    matplotlib >= 3.9.2
    +    pycommons >= 0.8.58
    +    scipy >= 1.14.1
    +    urllib3 >= 2.2.3
    +packages = find:
    +python_requires = >= 3.12
    +zip_safe = False
    +
    +[options.package_data]
    +moptipyapps = py.typed
    +moptipyapps.binpacking2d = *.txt, *.bib
    +moptipyapps.qap.qaplib = *.dat
    +moptipyapps.tsp.tsplib = *.tsp, *.atsp, *.opt.tour
    +moptipyapps.ttp.robinx = *.xml
    +
    +[options.packages.find]
    +exclude =
    +    .coverage*
    +    .github*
    +    .mypy_cache*
    +    .pytest_cache*
    +    .ruff_cache*
    +    dist*
    +    docs*
    +    examples*
    +    moptipy.egg-info*
    +    moptipyapps.egg-info*
    +    tests*
    +
    diff --git a/setup_py.html b/setup_py.html new file mode 100644 index 00000000..b1289888 --- /dev/null +++ b/setup_py.html @@ -0,0 +1,51 @@ +

    """The setup and installation script."""
    +
    +from re import compile as re_compile
    +from re import sub as re_sub
    +from typing import Final, Pattern
    +
    +from setuptools import setup
    +
    +# We want to use our README.md as project description.
    +# However, we must fix all the references inside.
    +with open("README.md", encoding="utf-8-sig") as reader:
    +    old_lines = reader.readlines()
    +
    +# It seems that the markdown parser does not auto-generate anchors. This means
    +# that we need to fix all references following the pattern `[xxx](#12-hello)`
    +# to `[xxx]({docu_url#hello)`, where `docu_url` is the url of our
    +# documentation. We do this with a regular expression `regex_search`.
    +new_lines: Final[list[str]] = []
    +in_code: bool = False  # we only process non-code lines
    +
    +# the base url where the documentation will land
    +doc_url: Final[str] = "https://thomasweise.github.io/moptipyapps"
    +# the url of our repository
    +repo_url: Final[str] = "https://github.com/thomasWeise/moptipyapps"
    +
    +# detects strings of the form [xyz](#123-bla) and gives \1=xyz and \2=bla
    +regex_search: Final[Pattern] = re_compile("(\\[.+?])\\(#\\d+-(.+?)\\)")
    +regex_repl: Final[str] = f"\\1({doc_url}#\\2)"
    +
    +# other replacements
    +license_old: Final[str] = f"{repo_url}/blob/main/LICENSE"
    +license_new: Final[str] = f"{doc_url}/LICENSE.html"
    +
    +for full_line in old_lines:
    +    line: str = str.rstrip(full_line)
    +    if in_code:
    +        if line.startswith("```"):
    +            in_code = False  # toggle to non-code
    +    elif line.startswith("```"):
    +        in_code = True  # toggle to code
    +    else:  # fix all internal urls
    +        # replace links of the form "#12-bla" to "#bla"
    +        line = re_sub(regex_search, regex_repl, line)
    +        line = str.replace(line, license_old, license_new)
    +    new_lines.append(line)
    +
    +# Now we can use the code in the setup.
    +setup(long_description="\n".join(new_lines),
    +      long_description_content_type="text/markdown")
    +
    diff --git a/tc/.nojekyll b/tc/.nojekyll new file mode 100755 index 00000000..e69de29b diff --git a/tc/badge.svg b/tc/badge.svg new file mode 100644 index 00000000..c97e5048 --- /dev/null +++ b/tc/badge.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + coverage + coverage + 66% + 66% + + diff --git a/tc/index.html b/tc/index.html new file mode 100644 index 00000000..231d5056 --- /dev/null +++ b/tc/index.html @@ -0,0 +1,706 @@ + + + + + Coverage report + + + + + +
    +
    +

    Coverage report: + 66% +

    + +
    + +
    + + +
    +
    +

    + Files + Functions + Classes +

    +

    + coverage.py v7.6.5, + created at 2024-11-15 11:57 +0000 +

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Filestatementsmissingexcludedcoverage
    moptipyapps/__init__.py72071%
    moptipyapps/binpacking2d/__init__.py000100%
    moptipyapps/binpacking2d/bks.py359185048%
    moptipyapps/binpacking2d/encodings/__init__.py000100%
    moptipyapps/binpacking2d/encodings/ibl_encoding_1.py8760031%
    moptipyapps/binpacking2d/encodings/ibl_encoding_2.py10071029%
    moptipyapps/binpacking2d/experiment.py4623050%
    moptipyapps/binpacking2d/instance.py33419094%
    moptipyapps/binpacking2d/instgen/__init__.py000100%
    moptipyapps/binpacking2d/instgen/errors.py874095%
    moptipyapps/binpacking2d/instgen/errors_and_hardness.py2900100%
    moptipyapps/binpacking2d/instgen/experiment.py269065%
    moptipyapps/binpacking2d/instgen/hardness.py895094%
    moptipyapps/binpacking2d/instgen/inst_decoding.py1038092%
    moptipyapps/binpacking2d/instgen/instance_space.py5923061%
    moptipyapps/binpacking2d/instgen/problem.py151093%
    moptipyapps/binpacking2d/make_instances.py10329072%
    moptipyapps/binpacking2d/objectives/__init__.py000100%
    moptipyapps/binpacking2d/objectives/bin_count.py241096%
    moptipyapps/binpacking2d/objectives/bin_count_and_empty.py248067%
    moptipyapps/binpacking2d/objectives/bin_count_and_last_empty.py3011063%
    moptipyapps/binpacking2d/objectives/bin_count_and_last_skyline.py4124041%
    moptipyapps/binpacking2d/objectives/bin_count_and_last_small.py4414068%
    moptipyapps/binpacking2d/objectives/bin_count_and_lowest_skyline.py4326040%
    moptipyapps/binpacking2d/objectives/bin_count_and_small.py248067%
    moptipyapps/binpacking2d/packing.py7911086%
    moptipyapps/binpacking2d/packing_result.py29039087%
    moptipyapps/binpacking2d/packing_space.py10011089%
    moptipyapps/binpacking2d/packing_statistics.py28852082%
    moptipyapps/binpacking2d/plot_packing.py856093%
    moptipyapps/dynamic_control/__init__.py000100%
    moptipyapps/dynamic_control/controller.py333091%
    moptipyapps/dynamic_control/controllers/__init__.py000100%
    moptipyapps/dynamic_control/controllers/ann.py621098%
    moptipyapps/dynamic_control/controllers/codegen.py498084%
    moptipyapps/dynamic_control/controllers/cubic.py3014053%
    moptipyapps/dynamic_control/controllers/linear.py204080%
    moptipyapps/dynamic_control/controllers/min_ann.py47344805%
    moptipyapps/dynamic_control/controllers/partially_linear.py9471024%
    moptipyapps/dynamic_control/controllers/peaks.py4419057%
    moptipyapps/dynamic_control/controllers/predefined.py2912059%
    moptipyapps/dynamic_control/controllers/quadratic.py259064%
    moptipyapps/dynamic_control/experiment_raw.py6120067%
    moptipyapps/dynamic_control/experiment_surrogate.py8447044%
    moptipyapps/dynamic_control/instance.py4410077%
    moptipyapps/dynamic_control/model_objective.py4000100%
    moptipyapps/dynamic_control/objective.py1046094%
    moptipyapps/dynamic_control/ode.py16040075%
    moptipyapps/dynamic_control/results_log.py464091%
    moptipyapps/dynamic_control/results_plot.py159130018%
    moptipyapps/dynamic_control/starting_points.py7644042%
    moptipyapps/dynamic_control/surrogate_optimizer.py18943077%
    moptipyapps/dynamic_control/system.py15184044%
    moptipyapps/dynamic_control/system_model.py213086%
    moptipyapps/dynamic_control/systems/__init__.py000100%
    moptipyapps/dynamic_control/systems/lorenz.py236074%
    moptipyapps/dynamic_control/systems/stuart_landau.py213086%
    moptipyapps/dynamic_control/systems/three_coupled_oscillators.py4825048%
    moptipyapps/order1d/__init__.py000100%
    moptipyapps/order1d/distances.py1913032%
    moptipyapps/order1d/instance.py11319083%
    moptipyapps/order1d/space.py351097%
    moptipyapps/qap/__init__.py000100%
    moptipyapps/qap/instance.py13132076%
    moptipyapps/qap/objective.py3312064%
    moptipyapps/qap/qaplib/__init__.py500100%
    moptipyapps/shared.py1300100%
    moptipyapps/tests/__init__.py000100%
    moptipyapps/tests/on_binpacking2d.py15442073%
    moptipyapps/tests/on_tsp.py9836063%
    moptipyapps/tsp/__init__.py000100%
    moptipyapps/tsp/ea1p1_revn.py5712079%
    moptipyapps/tsp/fea1p1_revn.py6918074%
    moptipyapps/tsp/instance.py43171084%
    moptipyapps/tsp/known_optima.py4811077%
    moptipyapps/tsp/tour_length.py337079%
    moptipyapps/tsp/tsplib/__init__.py500100%
    moptipyapps/ttp/__init__.py000100%
    moptipyapps/ttp/errors.py11093015%
    moptipyapps/ttp/game_encoding.py4814071%
    moptipyapps/ttp/game_plan.py453093%
    moptipyapps/ttp/game_plan_space.py6110084%
    moptipyapps/ttp/instance.py20239081%
    moptipyapps/ttp/plan_length.py5225052%
    moptipyapps/ttp/robinx/__init__.py500100%
    moptipyapps/version.py200100%
    Total63712162066%
    +

    + No items found using the specified filter. +

    +
    + + + diff --git a/tc/status.json b/tc/status.json new file mode 100644 index 00000000..8cfd2c68 --- /dev/null +++ b/tc/status.json @@ -0,0 +1 @@ +{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":5,"version":"7.6.5","globals":"374247f827121a7662114fac17cafb61","files":{"z_26fd35bf8bb8d301___init___py":{"hash":"2e06ea36e441caa1d0f7797e0573561a","index":{"url":"z_26fd35bf8bb8d301___init___py.html","file":"moptipyapps/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":7,"n_excluded":0,"n_missing":2,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e5221e4e8fc15630___init___py":{"hash":"2a630f0db43a28b4bd4c0bfbb1f71e46","index":{"url":"z_e5221e4e8fc15630___init___py.html","file":"moptipyapps/binpacking2d/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":0,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e5221e4e8fc15630_bks_py":{"hash":"a0e52e2fe647e3dddacdad04bf77850b","index":{"url":"z_e5221e4e8fc15630_bks_py.html","file":"moptipyapps/binpacking2d/bks.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":359,"n_excluded":0,"n_missing":185,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_8c9c75e0af0f68db___init___py":{"hash":"be026421589c5441c96245c3b44e271e","index":{"url":"z_8c9c75e0af0f68db___init___py.html","file":"moptipyapps/binpacking2d/encodings/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":0,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_8c9c75e0af0f68db_ibl_encoding_1_py":{"hash":"7fe9edaa3abea3b05685ea2b3e341f21","index":{"url":"z_8c9c75e0af0f68db_ibl_encoding_1_py.html","file":"moptipyapps/binpacking2d/encodings/ibl_encoding_1.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":87,"n_excluded":0,"n_missing":60,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_8c9c75e0af0f68db_ibl_encoding_2_py":{"hash":"8a136da5d998ca46b975c7e01d1f6bdf","index":{"url":"z_8c9c75e0af0f68db_ibl_encoding_2_py.html","file":"moptipyapps/binpacking2d/encodings/ibl_encoding_2.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":100,"n_excluded":0,"n_missing":71,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e5221e4e8fc15630_experiment_py":{"hash":"e2f156224d2c997b2cfbdafff58a836f","index":{"url":"z_e5221e4e8fc15630_experiment_py.html","file":"moptipyapps/binpacking2d/experiment.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":46,"n_excluded":0,"n_missing":23,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e5221e4e8fc15630_instance_py":{"hash":"3b59c6872ffd4a2c6138e8141fe1e6b8","index":{"url":"z_e5221e4e8fc15630_instance_py.html","file":"moptipyapps/binpacking2d/instance.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":334,"n_excluded":0,"n_missing":19,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_872606d257725619___init___py":{"hash":"42cb5dfab8152ef3f0726cb531215cb0","index":{"url":"z_872606d257725619___init___py.html","file":"moptipyapps/binpacking2d/instgen/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":0,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_872606d257725619_errors_py":{"hash":"4d7e3d0e5641f23e6252812bfa1b332b","index":{"url":"z_872606d257725619_errors_py.html","file":"moptipyapps/binpacking2d/instgen/errors.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":87,"n_excluded":0,"n_missing":4,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_872606d257725619_errors_and_hardness_py":{"hash":"2f75472c912d80ecd30168c892833063","index":{"url":"z_872606d257725619_errors_and_hardness_py.html","file":"moptipyapps/binpacking2d/instgen/errors_and_hardness.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":29,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_872606d257725619_experiment_py":{"hash":"92eec0ff91ae0ec9064737f8a380e4f1","index":{"url":"z_872606d257725619_experiment_py.html","file":"moptipyapps/binpacking2d/instgen/experiment.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":26,"n_excluded":0,"n_missing":9,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_872606d257725619_hardness_py":{"hash":"0ac86bfd8b4ba10a787cc1940223960c","index":{"url":"z_872606d257725619_hardness_py.html","file":"moptipyapps/binpacking2d/instgen/hardness.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":89,"n_excluded":0,"n_missing":5,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_872606d257725619_inst_decoding_py":{"hash":"7cd2c2e75e375f2395cf7eeab44eae8c","index":{"url":"z_872606d257725619_inst_decoding_py.html","file":"moptipyapps/binpacking2d/instgen/inst_decoding.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":103,"n_excluded":0,"n_missing":8,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_872606d257725619_instance_space_py":{"hash":"fa7b89205de5606728f974d3d02d343b","index":{"url":"z_872606d257725619_instance_space_py.html","file":"moptipyapps/binpacking2d/instgen/instance_space.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":59,"n_excluded":0,"n_missing":23,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_872606d257725619_problem_py":{"hash":"d72fa4ab7273aab63ced2fe3a381a752","index":{"url":"z_872606d257725619_problem_py.html","file":"moptipyapps/binpacking2d/instgen/problem.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":15,"n_excluded":0,"n_missing":1,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e5221e4e8fc15630_make_instances_py":{"hash":"15964b5962d187e044b20c22fe4a3a5d","index":{"url":"z_e5221e4e8fc15630_make_instances_py.html","file":"moptipyapps/binpacking2d/make_instances.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":103,"n_excluded":0,"n_missing":29,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e9ccd1ed09c1c0ed___init___py":{"hash":"7c10ee190f8e0e4a2ac03ee0e35bbb9e","index":{"url":"z_e9ccd1ed09c1c0ed___init___py.html","file":"moptipyapps/binpacking2d/objectives/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":0,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e9ccd1ed09c1c0ed_bin_count_py":{"hash":"913c76a0634d85e07811d98072cf2a5f","index":{"url":"z_e9ccd1ed09c1c0ed_bin_count_py.html","file":"moptipyapps/binpacking2d/objectives/bin_count.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":24,"n_excluded":0,"n_missing":1,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e9ccd1ed09c1c0ed_bin_count_and_empty_py":{"hash":"7cc79870394244d5908b45b1996bf7fd","index":{"url":"z_e9ccd1ed09c1c0ed_bin_count_and_empty_py.html","file":"moptipyapps/binpacking2d/objectives/bin_count_and_empty.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":24,"n_excluded":0,"n_missing":8,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e9ccd1ed09c1c0ed_bin_count_and_last_empty_py":{"hash":"89c1501d8f178ae3678933bcba676955","index":{"url":"z_e9ccd1ed09c1c0ed_bin_count_and_last_empty_py.html","file":"moptipyapps/binpacking2d/objectives/bin_count_and_last_empty.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":30,"n_excluded":0,"n_missing":11,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e9ccd1ed09c1c0ed_bin_count_and_last_skyline_py":{"hash":"c5cdec5b08a3dbe1397beb206a8ceae0","index":{"url":"z_e9ccd1ed09c1c0ed_bin_count_and_last_skyline_py.html","file":"moptipyapps/binpacking2d/objectives/bin_count_and_last_skyline.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":41,"n_excluded":0,"n_missing":24,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e9ccd1ed09c1c0ed_bin_count_and_last_small_py":{"hash":"135b07de3ea966e862104c6b32037473","index":{"url":"z_e9ccd1ed09c1c0ed_bin_count_and_last_small_py.html","file":"moptipyapps/binpacking2d/objectives/bin_count_and_last_small.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":44,"n_excluded":0,"n_missing":14,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e9ccd1ed09c1c0ed_bin_count_and_lowest_skyline_py":{"hash":"b891a8b6785ac349f6ce08f28fb5597f","index":{"url":"z_e9ccd1ed09c1c0ed_bin_count_and_lowest_skyline_py.html","file":"moptipyapps/binpacking2d/objectives/bin_count_and_lowest_skyline.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":43,"n_excluded":0,"n_missing":26,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e9ccd1ed09c1c0ed_bin_count_and_small_py":{"hash":"9e8f0513e53ef6c184998345eb12921e","index":{"url":"z_e9ccd1ed09c1c0ed_bin_count_and_small_py.html","file":"moptipyapps/binpacking2d/objectives/bin_count_and_small.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":24,"n_excluded":0,"n_missing":8,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e5221e4e8fc15630_packing_py":{"hash":"b6786b80e10b5c0858632482aee0f1e6","index":{"url":"z_e5221e4e8fc15630_packing_py.html","file":"moptipyapps/binpacking2d/packing.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":79,"n_excluded":0,"n_missing":11,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e5221e4e8fc15630_packing_result_py":{"hash":"f72d08ad64dcdddecb77edea21a52075","index":{"url":"z_e5221e4e8fc15630_packing_result_py.html","file":"moptipyapps/binpacking2d/packing_result.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":290,"n_excluded":0,"n_missing":39,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e5221e4e8fc15630_packing_space_py":{"hash":"47baaa41a15cd9beecf5008eeed8b430","index":{"url":"z_e5221e4e8fc15630_packing_space_py.html","file":"moptipyapps/binpacking2d/packing_space.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":100,"n_excluded":0,"n_missing":11,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e5221e4e8fc15630_packing_statistics_py":{"hash":"9cea1f247e40041843cdf846c5ea1305","index":{"url":"z_e5221e4e8fc15630_packing_statistics_py.html","file":"moptipyapps/binpacking2d/packing_statistics.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":288,"n_excluded":0,"n_missing":52,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_e5221e4e8fc15630_plot_packing_py":{"hash":"cee8cb4800010781f91174f3a93833d6","index":{"url":"z_e5221e4e8fc15630_plot_packing_py.html","file":"moptipyapps/binpacking2d/plot_packing.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":85,"n_excluded":0,"n_missing":6,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_1200a9633299360f___init___py":{"hash":"56183b8dae0552ec7ecaeb5e6212031f","index":{"url":"z_1200a9633299360f___init___py.html","file":"moptipyapps/dynamic_control/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":0,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_1200a9633299360f_controller_py":{"hash":"39e2381b869f169eb819f785b31abb5d","index":{"url":"z_1200a9633299360f_controller_py.html","file":"moptipyapps/dynamic_control/controller.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":33,"n_excluded":0,"n_missing":3,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_b3d87d810e34754a___init___py":{"hash":"e15273490fe19f4697994bbf8c9673bb","index":{"url":"z_b3d87d810e34754a___init___py.html","file":"moptipyapps/dynamic_control/controllers/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":0,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_b3d87d810e34754a_ann_py":{"hash":"9f3315517dcf3e11c017cdc9f5b0ac3c","index":{"url":"z_b3d87d810e34754a_ann_py.html","file":"moptipyapps/dynamic_control/controllers/ann.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":62,"n_excluded":0,"n_missing":1,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_b3d87d810e34754a_codegen_py":{"hash":"0ff63b28a7ae6e83d5feff2e71e38c96","index":{"url":"z_b3d87d810e34754a_codegen_py.html","file":"moptipyapps/dynamic_control/controllers/codegen.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":49,"n_excluded":0,"n_missing":8,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_b3d87d810e34754a_cubic_py":{"hash":"629ac5e068be8964a3e2f3764ac47905","index":{"url":"z_b3d87d810e34754a_cubic_py.html","file":"moptipyapps/dynamic_control/controllers/cubic.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":30,"n_excluded":0,"n_missing":14,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_b3d87d810e34754a_linear_py":{"hash":"a28a3985f8a96ba854b3a6c7ccad56d1","index":{"url":"z_b3d87d810e34754a_linear_py.html","file":"moptipyapps/dynamic_control/controllers/linear.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":20,"n_excluded":0,"n_missing":4,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_b3d87d810e34754a_min_ann_py":{"hash":"9500c8315469aca6777865055cc510c3","index":{"url":"z_b3d87d810e34754a_min_ann_py.html","file":"moptipyapps/dynamic_control/controllers/min_ann.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":473,"n_excluded":0,"n_missing":448,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_b3d87d810e34754a_partially_linear_py":{"hash":"ff7e35f7f79c8e150344d92fcc87d5c0","index":{"url":"z_b3d87d810e34754a_partially_linear_py.html","file":"moptipyapps/dynamic_control/controllers/partially_linear.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":94,"n_excluded":0,"n_missing":71,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_b3d87d810e34754a_peaks_py":{"hash":"477aac2b36d0ba7fb27ea514a9fc320a","index":{"url":"z_b3d87d810e34754a_peaks_py.html","file":"moptipyapps/dynamic_control/controllers/peaks.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":44,"n_excluded":0,"n_missing":19,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_b3d87d810e34754a_predefined_py":{"hash":"247388438cb8fd62ea7ac74f5ba92c91","index":{"url":"z_b3d87d810e34754a_predefined_py.html","file":"moptipyapps/dynamic_control/controllers/predefined.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":29,"n_excluded":0,"n_missing":12,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_b3d87d810e34754a_quadratic_py":{"hash":"dc9cedaa44e5acc4e3d48f0685a6f045","index":{"url":"z_b3d87d810e34754a_quadratic_py.html","file":"moptipyapps/dynamic_control/controllers/quadratic.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":25,"n_excluded":0,"n_missing":9,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_1200a9633299360f_experiment_raw_py":{"hash":"1000811bea66ae7c133f797aaa8a7252","index":{"url":"z_1200a9633299360f_experiment_raw_py.html","file":"moptipyapps/dynamic_control/experiment_raw.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":61,"n_excluded":0,"n_missing":20,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_1200a9633299360f_experiment_surrogate_py":{"hash":"ab5d12b89cf45db53c166a4b8ea97e98","index":{"url":"z_1200a9633299360f_experiment_surrogate_py.html","file":"moptipyapps/dynamic_control/experiment_surrogate.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":84,"n_excluded":0,"n_missing":47,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_1200a9633299360f_instance_py":{"hash":"8c9fc93f28952e31bc10d55153f6e9ec","index":{"url":"z_1200a9633299360f_instance_py.html","file":"moptipyapps/dynamic_control/instance.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":44,"n_excluded":0,"n_missing":10,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_1200a9633299360f_model_objective_py":{"hash":"93cbf63fa26989ce0e38f4bc4a685e68","index":{"url":"z_1200a9633299360f_model_objective_py.html","file":"moptipyapps/dynamic_control/model_objective.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":40,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_1200a9633299360f_objective_py":{"hash":"ebcddecf9967d4ea711acd08d2e685bc","index":{"url":"z_1200a9633299360f_objective_py.html","file":"moptipyapps/dynamic_control/objective.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":104,"n_excluded":0,"n_missing":6,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_1200a9633299360f_ode_py":{"hash":"e54db472d6b3de24194b561d235c44c1","index":{"url":"z_1200a9633299360f_ode_py.html","file":"moptipyapps/dynamic_control/ode.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":160,"n_excluded":0,"n_missing":40,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_1200a9633299360f_results_log_py":{"hash":"68497571badb4105c72988befbe3b32b","index":{"url":"z_1200a9633299360f_results_log_py.html","file":"moptipyapps/dynamic_control/results_log.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":46,"n_excluded":0,"n_missing":4,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_1200a9633299360f_results_plot_py":{"hash":"b3e00441fe805699e66dd9df7196929e","index":{"url":"z_1200a9633299360f_results_plot_py.html","file":"moptipyapps/dynamic_control/results_plot.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":159,"n_excluded":0,"n_missing":130,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_1200a9633299360f_starting_points_py":{"hash":"d8689b27b93f2ca6a5276211a3feaa9e","index":{"url":"z_1200a9633299360f_starting_points_py.html","file":"moptipyapps/dynamic_control/starting_points.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":76,"n_excluded":0,"n_missing":44,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_1200a9633299360f_surrogate_optimizer_py":{"hash":"1ab951f8bbfbe7b11b97d255f2920b03","index":{"url":"z_1200a9633299360f_surrogate_optimizer_py.html","file":"moptipyapps/dynamic_control/surrogate_optimizer.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":189,"n_excluded":0,"n_missing":43,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_1200a9633299360f_system_py":{"hash":"ce6843ef8b6e838e084de50e6ba787b1","index":{"url":"z_1200a9633299360f_system_py.html","file":"moptipyapps/dynamic_control/system.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":151,"n_excluded":0,"n_missing":84,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_1200a9633299360f_system_model_py":{"hash":"ddb5768a3b0353861241eb015998e6cf","index":{"url":"z_1200a9633299360f_system_model_py.html","file":"moptipyapps/dynamic_control/system_model.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":21,"n_excluded":0,"n_missing":3,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_c102750e44f8c672___init___py":{"hash":"552d5c849365ae586af6ecc6dd7de181","index":{"url":"z_c102750e44f8c672___init___py.html","file":"moptipyapps/dynamic_control/systems/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":0,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_c102750e44f8c672_lorenz_py":{"hash":"19c6e00613f1b455d73a52df558b46c5","index":{"url":"z_c102750e44f8c672_lorenz_py.html","file":"moptipyapps/dynamic_control/systems/lorenz.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":23,"n_excluded":0,"n_missing":6,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_c102750e44f8c672_stuart_landau_py":{"hash":"ba23da9e073cbfe46393db09dc334fc5","index":{"url":"z_c102750e44f8c672_stuart_landau_py.html","file":"moptipyapps/dynamic_control/systems/stuart_landau.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":21,"n_excluded":0,"n_missing":3,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_c102750e44f8c672_three_coupled_oscillators_py":{"hash":"8aac81377713c067ca19ea4ffaf6e50f","index":{"url":"z_c102750e44f8c672_three_coupled_oscillators_py.html","file":"moptipyapps/dynamic_control/systems/three_coupled_oscillators.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":48,"n_excluded":0,"n_missing":25,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_2bbffd00bd50e8dd___init___py":{"hash":"52c4823f09fe632bafdf075c09197c9e","index":{"url":"z_2bbffd00bd50e8dd___init___py.html","file":"moptipyapps/order1d/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":0,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_2bbffd00bd50e8dd_distances_py":{"hash":"f8c489662f4098de3144d5b47d5bb9fc","index":{"url":"z_2bbffd00bd50e8dd_distances_py.html","file":"moptipyapps/order1d/distances.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":19,"n_excluded":0,"n_missing":13,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_2bbffd00bd50e8dd_instance_py":{"hash":"573f70dcd8d1890a7a51bf46b8c6674d","index":{"url":"z_2bbffd00bd50e8dd_instance_py.html","file":"moptipyapps/order1d/instance.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":113,"n_excluded":0,"n_missing":19,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_2bbffd00bd50e8dd_space_py":{"hash":"5f69b111c1fb6dc5d4929c628fea55dc","index":{"url":"z_2bbffd00bd50e8dd_space_py.html","file":"moptipyapps/order1d/space.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":35,"n_excluded":0,"n_missing":1,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_f718b2200f202c7e___init___py":{"hash":"fde0f9ac82da21ddac347f8000c300c2","index":{"url":"z_f718b2200f202c7e___init___py.html","file":"moptipyapps/qap/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":0,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_f718b2200f202c7e_instance_py":{"hash":"766be252de44a3149f40d245f8753006","index":{"url":"z_f718b2200f202c7e_instance_py.html","file":"moptipyapps/qap/instance.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":131,"n_excluded":0,"n_missing":32,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_f718b2200f202c7e_objective_py":{"hash":"5ef19bb3e9c6890ab8686aaadd09d6ae","index":{"url":"z_f718b2200f202c7e_objective_py.html","file":"moptipyapps/qap/objective.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":33,"n_excluded":0,"n_missing":12,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_ef9ea0b050c2d384___init___py":{"hash":"1162024538861d05b3ab449a7dea835f","index":{"url":"z_ef9ea0b050c2d384___init___py.html","file":"moptipyapps/qap/qaplib/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_26fd35bf8bb8d301_shared_py":{"hash":"faafc054603610830e0d31b78652b6db","index":{"url":"z_26fd35bf8bb8d301_shared_py.html","file":"moptipyapps/shared.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":13,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_04f83d026ac37177___init___py":{"hash":"d0c41b445b86dfc44c2a0385318a163b","index":{"url":"z_04f83d026ac37177___init___py.html","file":"moptipyapps/tests/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":0,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_04f83d026ac37177_on_binpacking2d_py":{"hash":"ca9b84713101c31022e9748dfc45812a","index":{"url":"z_04f83d026ac37177_on_binpacking2d_py.html","file":"moptipyapps/tests/on_binpacking2d.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":154,"n_excluded":0,"n_missing":42,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_04f83d026ac37177_on_tsp_py":{"hash":"d6655b106c1fdf61e9cc56efa15dc519","index":{"url":"z_04f83d026ac37177_on_tsp_py.html","file":"moptipyapps/tests/on_tsp.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":98,"n_excluded":0,"n_missing":36,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_9a2d34382b20e3f7___init___py":{"hash":"0f576a64b44251b4fe466496eccc743d","index":{"url":"z_9a2d34382b20e3f7___init___py.html","file":"moptipyapps/tsp/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":0,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_9a2d34382b20e3f7_ea1p1_revn_py":{"hash":"6da736b3c31d4b313907d024f1a35171","index":{"url":"z_9a2d34382b20e3f7_ea1p1_revn_py.html","file":"moptipyapps/tsp/ea1p1_revn.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":57,"n_excluded":0,"n_missing":12,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_9a2d34382b20e3f7_fea1p1_revn_py":{"hash":"d10b0823b5080aaef5ea34f515a35f7d","index":{"url":"z_9a2d34382b20e3f7_fea1p1_revn_py.html","file":"moptipyapps/tsp/fea1p1_revn.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":69,"n_excluded":0,"n_missing":18,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_9a2d34382b20e3f7_instance_py":{"hash":"5396bac4e0bab33b4b2aad435bb4c4db","index":{"url":"z_9a2d34382b20e3f7_instance_py.html","file":"moptipyapps/tsp/instance.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":431,"n_excluded":0,"n_missing":71,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_9a2d34382b20e3f7_known_optima_py":{"hash":"3e094a7c7d063f1712126437d44314e1","index":{"url":"z_9a2d34382b20e3f7_known_optima_py.html","file":"moptipyapps/tsp/known_optima.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":48,"n_excluded":0,"n_missing":11,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_9a2d34382b20e3f7_tour_length_py":{"hash":"84f117923194286a6f3b1391588a98fc","index":{"url":"z_9a2d34382b20e3f7_tour_length_py.html","file":"moptipyapps/tsp/tour_length.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":33,"n_excluded":0,"n_missing":7,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_9fac6fe41d8874bc___init___py":{"hash":"cdc38412abac830b6fcb9c03cd0392fc","index":{"url":"z_9fac6fe41d8874bc___init___py.html","file":"moptipyapps/tsp/tsplib/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_2b9baf556b5321fb___init___py":{"hash":"9d0edc5c20a3b328954bfac6a103c05c","index":{"url":"z_2b9baf556b5321fb___init___py.html","file":"moptipyapps/ttp/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":0,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_2b9baf556b5321fb_errors_py":{"hash":"f02ef25f88f4812baa5190c57adeade3","index":{"url":"z_2b9baf556b5321fb_errors_py.html","file":"moptipyapps/ttp/errors.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":110,"n_excluded":0,"n_missing":93,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_2b9baf556b5321fb_game_encoding_py":{"hash":"8e76fb81b7678c30e711238f2d2ded9d","index":{"url":"z_2b9baf556b5321fb_game_encoding_py.html","file":"moptipyapps/ttp/game_encoding.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":48,"n_excluded":0,"n_missing":14,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_2b9baf556b5321fb_game_plan_py":{"hash":"64bc68a6ce71dd31b2d5c8b4ca517e56","index":{"url":"z_2b9baf556b5321fb_game_plan_py.html","file":"moptipyapps/ttp/game_plan.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":45,"n_excluded":0,"n_missing":3,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_2b9baf556b5321fb_game_plan_space_py":{"hash":"31c58f682252e72021deb3ecd67f05b5","index":{"url":"z_2b9baf556b5321fb_game_plan_space_py.html","file":"moptipyapps/ttp/game_plan_space.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":61,"n_excluded":0,"n_missing":10,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_2b9baf556b5321fb_instance_py":{"hash":"98d1ca4e3213c0b5f4a59fc123bb01d6","index":{"url":"z_2b9baf556b5321fb_instance_py.html","file":"moptipyapps/ttp/instance.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":202,"n_excluded":0,"n_missing":39,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_2b9baf556b5321fb_plan_length_py":{"hash":"39fe27728662950a279fdfe2f7c0112b","index":{"url":"z_2b9baf556b5321fb_plan_length_py.html","file":"moptipyapps/ttp/plan_length.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":52,"n_excluded":0,"n_missing":25,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_b1bc5d44f6786607___init___py":{"hash":"1c9d51290e364a73dbbd0f94bd8e88d1","index":{"url":"z_b1bc5d44f6786607___init___py.html","file":"moptipyapps/ttp/robinx/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_26fd35bf8bb8d301_version_py":{"hash":"71d80766f400b00425cb09516e0b0c5d","index":{"url":"z_26fd35bf8bb8d301_version_py.html","file":"moptipyapps/version.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":2,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}}}} \ No newline at end of file

    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 z%0A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%0DR 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

  • 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