From 184af2a8697e76ac6f80aff7d35f605064d5516d Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Wed, 8 May 2024 09:20:41 -0500 Subject: [PATCH] Update docs --- .../getting-started-gurobipy.ipynb.txt | 123 +++++++++--------- 0.4/searchindex.js | 2 +- 0.4/tutorials/getting-started-gurobipy.ipynb | 123 +++++++++--------- .../getting-started-gurobipy/index.html | 122 ++++++++--------- 4 files changed, 190 insertions(+), 180 deletions(-) diff --git a/0.4/_sources/tutorials/getting-started-gurobipy.ipynb.txt b/0.4/_sources/tutorials/getting-started-gurobipy.ipynb.txt index 110e3f4..62e5f2c 100644 --- a/0.4/_sources/tutorials/getting-started-gurobipy.ipynb.txt +++ b/0.4/_sources/tutorials/getting-started-gurobipy.ipynb.txt @@ -48,7 +48,7 @@ "In this tutorial, we will demonstrate how to use and install the Python/Gurobipy version of the package. The first step is to install Python 3.8+ in your computer. See the [official Python website for more instructions](https://www.python.org/downloads/). After Python is installed, we proceed to install MIPLearn using `pip`:\n", "\n", "```\n", - "$ pip install MIPLearn==0.3\n", + "$ pip install MIPLearn==0.4\n", "```\n", "\n", "In addition to MIPLearn itself, we will also install Gurobi 10.0, a state-of-the-art commercial MILP solver. This step also install a demo license for Gurobi, which should able to solve the small optimization problems in this tutorial. A license is required for solving larger-scale problems.\n", @@ -220,11 +220,12 @@ "name": "stdout", "output_type": "stream", "text": [ + "Set parameter Threads to value 1\n", "Restricted license - for non-production use only - expires 2024-10-28\n", "Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64)\n", "\n", "CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2]\n", - "Thread count: 10 physical cores, 20 logical processors, using up to 20 threads\n", + "Thread count: 10 physical cores, 20 logical processors, using up to 1 threads\n", "\n", "Optimize a model with 7 rows, 6 columns and 15 nonzeros\n", "Model fingerprint: 0x58dfdd53\n", @@ -250,12 +251,14 @@ "* 0 0 0 1320.0000000 1320.00000 0.00% - 0s\n", "\n", "Explored 1 nodes (5 simplex iterations) in 0.01 seconds (0.00 work units)\n", - "Thread count was 20 (of 20 available processors)\n", + "Thread count was 1 (of 20 available processors)\n", "\n", "Solution count 2: 1320 1400 \n", "\n", "Optimal solution found (tolerance 1.00e-04)\n", "Best objective 1.320000000000e+03, best bound 1.320000000000e+03, gap 0.0000%\n", + "\n", + "User-callback calls 371, time in user-callback 0.00 sec\n", "obj = 1320.0\n", "x = [-0.0, 1.0, 1.0]\n", "y = [0.0, 60.0, 40.0]\n" @@ -401,7 +404,7 @@ "from miplearn.collectors.basic import BasicCollector\n", "\n", "bc = BasicCollector()\n", - "bc.collect(train_data, build_uc_model, n_jobs=4)" + "bc.collect(train_data, build_uc_model)" ] }, { @@ -483,7 +486,7 @@ "Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64)\n", "\n", "CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2]\n", - "Thread count: 10 physical cores, 20 logical processors, using up to 20 threads\n", + "Thread count: 10 physical cores, 20 logical processors, using up to 1 threads\n", "\n", "Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros\n", "Model fingerprint: 0xa8b70287\n", @@ -493,22 +496,24 @@ " Bounds range [1e+00, 1e+00]\n", " RHS range [3e+08, 3e+08]\n", "Presolve removed 1000 rows and 500 columns\n", - "Presolve time: 0.01s\n", + "Presolve time: 0.00s\n", "Presolved: 1 rows, 500 columns, 500 nonzeros\n", "\n", "Iteration Objective Primal Inf. Dual Inf. Time\n", " 0 6.6166537e+09 5.648803e+04 0.000000e+00 0s\n", " 1 8.2906219e+09 0.000000e+00 0.000000e+00 0s\n", "\n", - "Solved in 1 iterations and 0.01 seconds (0.00 work units)\n", + "Solved in 1 iterations and 0.00 seconds (0.00 work units)\n", "Optimal objective 8.290621916e+09\n", + "\n", + "User-callback calls 56, time in user-callback 0.00 sec\n", "Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64)\n", "\n", "CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2]\n", - "Thread count: 10 physical cores, 20 logical processors, using up to 20 threads\n", + "Thread count: 10 physical cores, 20 logical processors, using up to 1 threads\n", "\n", "Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros\n", - "Model fingerprint: 0xcf27855a\n", + "Model fingerprint: 0x892e56b2\n", "Variable types: 500 continuous, 500 integer (500 binary)\n", "Coefficient statistics:\n", " Matrix range [1e+00, 2e+06]\n", @@ -538,19 +543,21 @@ " Gomory: 1\n", " Flow cover: 2\n", "\n", - "Explored 1 nodes (565 simplex iterations) in 0.03 seconds (0.01 work units)\n", - "Thread count was 20 (of 20 available processors)\n", + "Explored 1 nodes (565 simplex iterations) in 0.02 seconds (0.01 work units)\n", + "Thread count was 1 (of 20 available processors)\n", "\n", "Solution count 1: 8.29153e+09 \n", "\n", "Optimal solution found (tolerance 1.00e-04)\n", - "Best objective 8.291528276179e+09, best bound 8.290733258025e+09, gap 0.0096%\n" + "Best objective 8.291528276179e+09, best bound 8.290733258025e+09, gap 0.0096%\n", + "\n", + "User-callback calls 193, time in user-callback 0.00 sec\n" ] }, { "data": { "text/plain": [ - "{'WS: Count': 1, 'WS: Number of variables set': 482.0}" + "{'WS: Count': 1, 'WS: Number of variables set': 477.0}" ] }, "execution_count": 8, @@ -592,7 +599,7 @@ "Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64)\n", "\n", "CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2]\n", - "Thread count: 10 physical cores, 20 logical processors, using up to 20 threads\n", + "Thread count: 10 physical cores, 20 logical processors, using up to 1 threads\n", "\n", "Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros\n", "Model fingerprint: 0xa8b70287\n", @@ -611,10 +618,12 @@ "\n", "Solved in 1 iterations and 0.01 seconds (0.00 work units)\n", "Optimal objective 8.290621916e+09\n", + "\n", + "User-callback calls 56, time in user-callback 0.00 sec\n", "Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64)\n", "\n", "CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2]\n", - "Thread count: 10 physical cores, 20 logical processors, using up to 20 threads\n", + "Thread count: 10 physical cores, 20 logical processors, using up to 1 threads\n", "\n", "Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros\n", "Model fingerprint: 0x4cbbf7c7\n", @@ -643,39 +652,36 @@ " 0 0 8.2907e+09 0 5 8.2940e+09 8.2907e+09 0.04% - 0s\n", " 0 0 8.2907e+09 0 1 8.2940e+09 8.2907e+09 0.04% - 0s\n", " 0 0 8.2907e+09 0 2 8.2940e+09 8.2907e+09 0.04% - 0s\n", - " 0 0 8.2908e+09 0 1 8.2940e+09 8.2908e+09 0.04% - 0s\n", - " 0 0 8.2908e+09 0 4 8.2940e+09 8.2908e+09 0.04% - 0s\n", - " 0 0 8.2908e+09 0 4 8.2940e+09 8.2908e+09 0.04% - 0s\n", - "H 0 0 8.291465e+09 8.2908e+09 0.01% - 0s\n", + " 0 0 8.2907e+09 0 2 8.2940e+09 8.2907e+09 0.04% - 0s\n", + " 0 2 8.2908e+09 0 2 8.2940e+09 8.2908e+09 0.04% - 0s\n", + "H 9 9 8.292131e+09 8.2908e+09 0.02% 1.0 0s\n", + "H 132 88 8.292121e+09 8.2908e+09 0.02% 2.0 0s\n", + "* 133 88 28 8.292121e+09 8.2908e+09 0.02% 2.2 0s\n", + "H 216 136 8.291918e+09 8.2909e+09 0.01% 2.4 0s\n", + "* 232 136 28 8.291664e+09 8.2909e+09 0.01% 2.4 0s\n", "\n", "Cutting planes:\n", " Gomory: 2\n", + " Cover: 1\n", " MIR: 1\n", + " Inf proof: 3\n", "\n", - "Explored 1 nodes (1031 simplex iterations) in 0.15 seconds (0.03 work units)\n", - "Thread count was 20 (of 20 available processors)\n", + "Explored 233 nodes (1577 simplex iterations) in 0.09 seconds (0.06 work units)\n", + "Thread count was 1 (of 20 available processors)\n", "\n", - "Solution count 4: 8.29147e+09 8.29398e+09 8.29827e+09 9.75713e+09 \n", + "Solution count 7: 8.29166e+09 8.29192e+09 8.29212e+09 ... 9.75713e+09\n", "\n", "Optimal solution found (tolerance 1.00e-04)\n", - "Best objective 8.291465302389e+09, best bound 8.290781665333e+09, gap 0.0082%\n" + "Best objective 8.291663722826e+09, best bound 8.290885027548e+09, gap 0.0094%\n", + "\n", + "User-callback calls 708, time in user-callback 0.00 sec\n" ] - }, - { - "data": { - "text/plain": [ - "{}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ "solver_baseline = LearningSolver(components=[])\n", "solver_baseline.fit(train_data)\n", - "solver_baseline.optimize(test_data[0], build_uc_model)" + "solver_baseline.optimize(test_data[0], build_uc_model);" ] }, { @@ -716,7 +722,7 @@ "Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64)\n", "\n", "CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2]\n", - "Thread count: 10 physical cores, 20 logical processors, using up to 20 threads\n", + "Thread count: 10 physical cores, 20 logical processors, using up to 1 threads\n", "\n", "Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros\n", "Model fingerprint: 0x19042f12\n", @@ -735,13 +741,15 @@ "\n", "Solved in 1 iterations and 0.01 seconds (0.00 work units)\n", "Optimal objective 8.253596777e+09\n", + "\n", + "User-callback calls 56, time in user-callback 0.00 sec\n", "Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64)\n", "\n", "CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2]\n", - "Thread count: 10 physical cores, 20 logical processors, using up to 20 threads\n", + "Thread count: 10 physical cores, 20 logical processors, using up to 1 threads\n", "\n", "Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros\n", - "Model fingerprint: 0xf97cde91\n", + "Model fingerprint: 0x6926c32f\n", "Variable types: 500 continuous, 500 integer (500 binary)\n", "Coefficient statistics:\n", " Matrix range [1e+00, 2e+06]\n", @@ -749,14 +757,15 @@ " Bounds range [1e+00, 1e+00]\n", " RHS range [3e+08, 3e+08]\n", "\n", - "User MIP start produced solution with objective 8.25814e+09 (0.00s)\n", + "User MIP start produced solution with objective 8.25814e+09 (0.01s)\n", "User MIP start produced solution with objective 8.25512e+09 (0.01s)\n", - "User MIP start produced solution with objective 8.25483e+09 (0.01s)\n", - "User MIP start produced solution with objective 8.25483e+09 (0.01s)\n", - "User MIP start produced solution with objective 8.25483e+09 (0.01s)\n", - "User MIP start produced solution with objective 8.25459e+09 (0.01s)\n", - "User MIP start produced solution with objective 8.25459e+09 (0.01s)\n", - "Loaded user MIP start with objective 8.25459e+09\n", + "User MIP start produced solution with objective 8.2551e+09 (0.01s)\n", + "User MIP start produced solution with objective 8.25508e+09 (0.01s)\n", + "User MIP start produced solution with objective 8.25508e+09 (0.01s)\n", + "User MIP start produced solution with objective 8.25499e+09 (0.01s)\n", + "User MIP start produced solution with objective 8.25448e+09 (0.02s)\n", + "User MIP start produced solution with objective 8.25448e+09 (0.02s)\n", + "Loaded user MIP start with objective 8.25448e+09\n", "\n", "Presolve time: 0.00s\n", "Presolved: 1001 rows, 1000 columns, 2500 nonzeros\n", @@ -767,29 +776,23 @@ " Nodes | Current Node | Objective Bounds | Work\n", " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", "\n", - " 0 0 8.2536e+09 0 1 8.2546e+09 8.2536e+09 0.01% - 0s\n", - " 0 0 8.2537e+09 0 3 8.2546e+09 8.2537e+09 0.01% - 0s\n", - " 0 0 8.2537e+09 0 1 8.2546e+09 8.2537e+09 0.01% - 0s\n", - " 0 0 8.2537e+09 0 4 8.2546e+09 8.2537e+09 0.01% - 0s\n", - " 0 0 8.2537e+09 0 4 8.2546e+09 8.2537e+09 0.01% - 0s\n", - " 0 0 8.2538e+09 0 4 8.2546e+09 8.2538e+09 0.01% - 0s\n", - " 0 0 8.2538e+09 0 5 8.2546e+09 8.2538e+09 0.01% - 0s\n", - " 0 0 8.2538e+09 0 6 8.2546e+09 8.2538e+09 0.01% - 0s\n", + " 0 0 8.2536e+09 0 1 8.2545e+09 8.2536e+09 0.01% - 0s\n", + " 0 0 8.2537e+09 0 3 8.2545e+09 8.2537e+09 0.01% - 0s\n", "\n", "Cutting planes:\n", " Cover: 1\n", - " MIR: 2\n", - " StrongCG: 1\n", - " Flow cover: 1\n", + " Flow cover: 2\n", "\n", - "Explored 1 nodes (575 simplex iterations) in 0.05 seconds (0.01 work units)\n", - "Thread count was 20 (of 20 available processors)\n", + "Explored 1 nodes (515 simplex iterations) in 0.03 seconds (0.02 work units)\n", + "Thread count was 1 (of 20 available processors)\n", "\n", - "Solution count 4: 8.25459e+09 8.25483e+09 8.25512e+09 8.25814e+09 \n", + "Solution count 6: 8.25448e+09 8.25499e+09 8.25508e+09 ... 8.25814e+09\n", "\n", "Optimal solution found (tolerance 1.00e-04)\n", - "Best objective 8.254590409970e+09, best bound 8.253768093811e+09, gap 0.0100%\n", - "obj = 8254590409.969726\n", + "Best objective 8.254479145594e+09, best bound 8.253689731796e+09, gap 0.0096%\n", + "\n", + "User-callback calls 203, time in user-callback 0.00 sec\n", + "obj = 8254479145.594168\n", "x = [1.0, 1.0, 0.0]\n", "y = [935662.0949262811, 1604270.0218116897, 0.0]\n" ] diff --git a/0.4/searchindex.js b/0.4/searchindex.js index 03199e5..703d443 100644 --- a/0.4/searchindex.js +++ b/0.4/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api/collectors", "api/components", "api/helpers", "api/problems", "api/solvers", "guide/collectors", "guide/features", "guide/primal", "guide/problems", "guide/solvers", "index", "tutorials/cuts-gurobipy", "tutorials/getting-started-gurobipy", "tutorials/getting-started-jump", "tutorials/getting-started-pyomo"], "filenames": ["api/collectors.rst", "api/components.rst", "api/helpers.rst", "api/problems.rst", "api/solvers.rst", "guide/collectors.ipynb", "guide/features.ipynb", "guide/primal.ipynb", "guide/problems.ipynb", "guide/solvers.ipynb", "index.rst", "tutorials/cuts-gurobipy.ipynb", "tutorials/getting-started-gurobipy.ipynb", "tutorials/getting-started-jump.ipynb", "tutorials/getting-started-pyomo.ipynb"], "titles": ["11. Collectors & Extractors", "12. Components", "14. Helpers", "10. Benchmark Problems", "13. Solvers", "6. Training Data Collectors", "7. Feature Extractors", "8. Primal Components", "5. Benchmark Problems", "9. Learning Solver", "MIPLearn", "4. User cuts and lazy constraints", "2. Getting started (Gurobipy)", "3. Getting started (JuMP)", "1. Getting started (Pyomo)"], "terms": {"class": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "minprobabilityclassifi": [0, 7, 9], "base_clf": [0, 1, 7, 9], "type": [0, 1, 4, 5, 6, 8, 9, 11, 12, 13, 14], "ani": [0, 1, 2, 4, 5, 7, 8, 12, 13, 14], "threshold": [0, 1, 7, 9], "list": [0, 1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 14], "float": [0, 1, 4, 5, 12, 14], "clone_fn": [0, 1, 7], "callabl": [0, 1, 4], "function": [0, 1, 5, 6, 7, 8, 11, 12, 13, 14], "clone": [0, 1, 7], "base": [0, 1, 2, 4, 6, 7, 10, 12, 13, 14], "baseestim": 0, "meta": [0, 7], "return": [0, 1, 6, 7, 8, 9, 11, 12, 13, 14], "nan": 0, "predict": [0, 1, 7, 11, 12, 13, 14], "made": [0, 7], "have": [0, 3, 5, 6, 8, 11, 12, 13, 14], "probabl": [0, 3, 7, 8, 12, 13, 14], "below": [0, 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "given": [0, 4, 5, 6, 7, 8, 11, 12, 13, 14], "more": [0, 3, 5, 6, 7, 8, 11, 12, 13, 14], "specif": [0, 3, 5, 6, 7, 8, 10, 12, 13, 14], "thi": [0, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "call": [0, 8, 9, 11, 13], "predict_proba": [0, 7], "compar": [0, 5, 7, 11], "result": [0, 3, 8], "against": 0, "provid": [0, 1, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14], "If": [0, 3, 7, 8, 10, 11, 12, 13, 14], "one": [0, 1, 3, 7, 8, 11, 12, 13, 14], "i": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "abov": [0, 1, 3, 5, 7, 8, 11, 12, 13, 14], "its": [0, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "otherwis": [0, 1, 5, 6, 7], "fit": [0, 1, 4, 7, 9, 11, 12, 13, 14], "x": [0, 3, 5, 7, 8, 9, 11, 12, 13, 14], "ndarrai": [0, 1, 2, 3, 4, 11], "y": [0, 3, 5, 7, 8, 9, 11, 12, 13, 14], "none": [0, 1, 2, 4, 11], "set_fit_request": 0, "bool": [0, 2, 3, 4], "str": [0, 1, 2, 3, 4, 5, 11, 12, 14], "unchang": 0, "request": [0, 10, 12, 13, 14], "metadata": [0, 5], "pass": 0, "method": [0, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14], "note": [0, 3, 6, 7, 8, 11, 12, 13, 14], "onli": [0, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14], "relev": [0, 6], "enable_metadata_rout": 0, "true": [0, 3, 5, 6, 8, 9, 10, 11], "see": [0, 7, 8, 11, 12, 13, 14], "sklearn": [0, 7, 9, 11, 12, 13, 14], "set_config": 0, "pleas": [0, 8, 12, 13, 14], "user": [0, 3, 6, 7, 8, 9, 12, 13, 14], "guid": [0, 12, 13, 14], "how": [0, 5, 7, 8, 11, 12, 13, 14], "rout": [0, 8, 11], "mechan": 0, "work": [0, 8, 9, 10, 11, 12, 13, 14], "The": [0, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "option": [0, 1], "each": [0, 1, 3, 6, 7, 8, 9, 11, 12, 13, 14], "paramet": [0, 3, 7, 8, 9, 11, 14], "ar": [0, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "ignor": 0, "fals": [0, 2, 3, 4, 8], "estim": [0, 7], "rais": 0, "an": [0, 6, 7, 8, 10, 11, 12, 13, 14], "error": [0, 5], "should": [0, 1, 6, 8, 11, 12, 13, 14], "alia": 0, "instead": [0, 3, 7, 8, 11, 14], "origin": [0, 5, 12, 13, 14], "name": [0, 4, 5, 11, 12], "default": [0, 3, 4, 8, 9], "util": [0, 12, 13, 14], "metadata_rout": 0, "retain": 0, "exist": [0, 8], "allow": [0, 5, 6, 7, 9, 12, 13, 14], "you": [0, 6, 8, 10, 13], "chang": [0, 8, 11, 12, 13, 14], "some": [0, 3, 5, 6, 7, 8, 11, 12, 13, 14], "other": [0, 5, 6, 7, 8, 11, 12, 13, 14], "new": [0, 3, 5, 6, 7, 8, 10, 12, 13, 14], "version": [0, 5, 8, 9, 10, 11, 12, 13, 14], "1": [0, 1, 2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "3": [0, 5, 6, 7, 8, 9, 11, 12, 13, 14], "us": [0, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "sub": 0, "e": [0, 5, 6, 7, 8, 11, 12, 13, 14], "g": [0, 5, 7, 8, 12, 13, 14], "insid": [0, 11], "pipelin": 0, "ha": [0, 3, 4, 6, 7, 8, 11], "effect": [0, 11], "self": 0, "updat": 0, "object": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14], "set_predict_request": 0, "singleclassfix": [0, 7, 9], "logist": [0, 7, 8], "regress": [0, 7], "issu": [0, 6, 7, 12, 13, 14], "dataset": [0, 7, 11], "contain": [0, 7, 8, 11, 12, 13, 14], "singl": [0, 1, 5, 7, 12, 13, 14], "fix": [0, 3, 7, 8, 9, 12, 13, 14], "train": [0, 1, 6, 7, 8, 10], "data": [0, 3, 6, 7, 8, 9, 10], "alwai": [0, 7], "basiccollector": [0, 5, 6, 9, 11, 12, 13, 14], "skip_lp": [0, 4], "write_mp": 0, "collect": [0, 5, 6, 7, 8, 9, 11, 12, 13, 14], "filenam": [0, 2, 4, 5, 11], "build_model": [0, 4, 9], "n_job": [0, 2, 5, 6, 9, 11, 12, 14], "int": [0, 1, 2, 3, 11, 12, 13, 14], "progress": [0, 2], "verbos": [0, 11], "h5fieldsextractor": [0, 7, 10, 11, 12, 13, 14], "instance_field": [0, 6, 7, 11, 12, 13, 14], "var_field": [0, 6], "constr_field": [0, 6], "featuresextractor": [0, 1], "get_constr_featur": [0, 6], "h5": [0, 4, 5, 6, 11, 12, 13, 14], "h5file": [0, 2, 4, 5, 6], "get_instance_featur": [0, 6], "get_var_featur": [0, 6], "alvlouweh2017extractor": [0, 7, 9, 10], "with_m1": 0, "with_m2": 0, "with_m3": 0, "comput": [0, 1, 6, 7, 10, 11, 12, 14], "static": [0, 4, 6], "variabl": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "featur": [0, 4, 5, 7, 9, 10], "describ": [0, 3, 5, 6, 7, 8, 9, 11], "alvarez": [0, 6], "A": [0, 6, 7, 12, 14], "m": [0, 3, 6, 8, 11], "louveaux": [0, 6], "q": 0, "wehenkel": [0, 6], "l": 0, "2017": [0, 6], "machin": [0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "learn": [0, 5, 6, 7, 8, 10, 12, 13, 14], "approxim": [0, 6], "strong": [0, 6, 11], "branch": [0, 5, 6, 11], "inform": [0, 5, 6, 10, 11], "journal": [0, 6, 8, 10], "29": [0, 6, 8], "185": [0, 6, 8], "195": [0, 6], "enforceproxim": [1, 7], "tol": 1, "primalcomponentact": 1, "perform": [1, 5, 6, 7, 8, 10, 11, 12, 13, 14], "model": [1, 3, 4, 5, 6, 7, 8, 9, 10], "abstractmodel": [1, 4], "var_nam": [1, 4], "var_valu": [1, 4], "stat": [1, 3, 4, 5, 6, 8, 9, 11, 12, 14], "dict": [1, 4], "fixvari": [1, 7], "abc": [1, 4], "abstract": [1, 6, 12, 13, 14], "setwarmstart": [1, 7, 9, 12, 13, 14], "expertprimalcompon": [1, 7], "before_mip": 1, "test_h5": 1, "train_h5": 1, "independentvarsprimalcompon": [1, 7, 9], "extractor": [1, 7, 9, 10, 11, 12, 13, 14], "jointvarsprimalcompon": [1, 7], "clf": [1, 7, 11, 12, 13, 14], "memorizingprimalcompon": [1, 7, 12, 13, 14], "constructor": [1, 3, 7, 9, 12, 13, 14], "solutionconstructor": 1, "memor": [1, 10, 12, 13, 14], "all": [1, 3, 5, 6, 7, 8, 9, 12, 13, 14], "solut": [1, 4, 5, 6, 7, 8, 9, 10, 11], "seen": [1, 7], "dure": [1, 7, 8, 11, 12, 13, 14], "classifi": [1, 7, 9, 12, 13, 14], "which": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "solver": [1, 5, 7, 8, 10, 11, 12, 13, 14], "combin": [1, 3, 7, 8, 10], "multipl": [1, 5, 7, 8, 9, 12, 13, 14], "partial": [1, 5, 7, 12, 13, 14], "mergetopsolut": [1, 7, 12, 13, 14], "k": [1, 3, 6, 7, 8, 12, 13, 14], "warm": [1, 7, 9, 12, 13, 14], "start": [1, 7, 8, 9, 10, 11], "construct": [1, 7, 9, 12, 13, 14], "strategi": [1, 7, 9, 11, 12, 13, 14], "first": [1, 3, 5, 7, 8, 10, 11, 12, 13, 14], "select": [1, 7, 8, 11], "top": [1, 5, 7], "merg": [1, 7, 12, 13, 14], "them": [1, 6, 7, 8, 11, 12, 13, 14], "To": [1, 3, 7, 8, 9, 11, 12, 13, 14], "mean": [1, 7], "optim": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11], "valu": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "decis": [1, 5, 6, 7, 8, 9, 11, 12, 13, 14], "set": [1, 3, 5, 6, 7, 9, 10, 11, 12, 13, 14], "zero": [1, 7, 11], "0": [1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "ii": [1, 5, 6, 7, 8, 9], "iii": [1, 6, 9], "leav": 1, "free": [1, 6, 7], "y_proba": 1, "selecttopsolut": [1, 7], "gzip": [2, 5, 12, 14], "read_pkl_gz": [2, 11, 12, 14], "write_pkl_gz": [2, 5, 6, 9, 11, 12, 14], "obj": [2, 5, 8, 9, 11, 12, 13, 14], "dirnam": 2, "prefix": [2, 5], "mode": [2, 3, 13], "r": [2, 5, 8, 9, 11, 12, 14], "close": [2, 7, 12, 13, 14], "get_arrai": [2, 5], "kei": [2, 5], "get_byt": 2, "byte": 2, "bytearrai": 2, "get_scalar": [2, 5], "get_spars": [2, 5], "coo_matrix": 2, "put_arrai": [2, 5], "put_byt": [2, 5], "put_scalar": [2, 5], "put_spars": [2, 5], "binpackdata": 3, "size": [3, 6, 7, 8, 11], "capac": [3, 8], "bin": [3, 10, 13], "pack": [3, 10], "numpi": [3, 5, 6, 8, 9, 11, 12, 14], "item": [3, 8], "binpackgener": [3, 8], "n": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "rv_frozen": 3, "sizes_jitt": [3, 8], "capacity_jitt": [3, 8], "fix_item": [3, 8], "random": [3, 5, 6, 9, 11, 12, 13, 14], "instanc": [3, 5, 6, 7, 10], "gener": [3, 5, 6, 7, 9, 10], "sampl": [3, 8, 12, 13, 14], "distribut": [3, 8, 12, 13, 14], "decid": [3, 7, 8, 12, 13, 14], "respect": [3, 5, 6, 7, 8, 12, 13, 14], "number": [3, 5, 6, 8, 9, 11, 12, 13, 14], "independ": [3, 6, 8, 10, 11], "creat": [3, 5, 6, 7, 8, 11], "refer": [3, 6, 8], "previous": [3, 5, 6, 7, 8, 10, 12, 13, 14], "addit": [3, 8, 9, 11, 12, 13, 14], "perturb": [3, 8, 11], "s_i": [3, 8], "gamma_i": [3, 8], "where": [3, 7, 8, 12, 13, 14], "th": [3, 7, 8], "from": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "similarli": [3, 8], "b": [3, 5, 8], "beta": [3, 8], "remain": [3, 5, 6, 7, 8, 9], "same": [3, 6, 7, 8, 11], "across": [3, 7, 8], "appli": [3, 6, 7, 8, 9, 12, 13, 14], "complet": [3, 6, 7, 8, 10, 11], "differ": [3, 7, 8, 9, 11, 12, 13, 14], "n_sampl": 3, "build_binpack_model": [], "gurobimodel": [3, 4, 11, 12], "convert": [3, 6, 11, 12, 13, 14], "concret": [3, 12, 13, 14], "gurobipi": [3, 10, 11, 13, 14], "multiknapsackdata": 3, "price": [3, 5, 8], "weight": [3, 8, 11], "multi": [3, 5, 6, 10], "dimension": [3, 5, 6, 10], "knapsack": [3, 6, 10], "matrix": [3, 5, 6, 8, 9, 11, 12, 13, 14], "multiknapsackgener": [3, 6, 8], "scipi": [3, 5, 6, 8, 9, 11, 12, 14], "_distn_infrastructur": 3, "rv_discrete_frozen": 3, "w": [3, 5, 6, 8, 9, 12], "u": [3, 6, 8, 10, 12, 13, 14], "rv_continuous_frozen": 3, "alpha": [3, 6, 8], "fix_w": [3, 6, 8], "w_jitter": [3, 6, 8], "p_jitter": [3, 6, 8], "round": [3, 5, 6, 8, 9, 11], "constraint": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14], "specifi": [3, 6, 7, 8, 9, 11], "j": [3, 7, 8, 11], "alpha_j": 3, "sum": [3, 8, 12, 13, 14], "rang": [3, 8, 9, 11, 12, 13, 14], "tight": [3, 8], "ratio": [3, 8], "make": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "challeng": [3, 8, 12, 13, 14], "cost": [3, 5, 6, 7, 8, 12, 13, 14], "linearli": [3, 8], "correl": [3, 7, 8], "averag": [3, 7, 8], "u_i": 3, "coeffici": [3, 4, 5, 6, 8, 9, 11, 12, 13, 14], "multipli": [3, 8], "onc": [3, 8, 9, 11], "entir": [3, 5, 6, 7, 8, 11, 12, 13, 14], "kept": [3, 8], "also": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14], "impli": [3, 8], "although": [3, 5, 8, 12, 13, 14], "deriv": [3, 6, 8, 11], "long": [3, 8], "constant": [3, 5, 7, 8], "still": [3, 7, 8, 11, 12, 13, 14], "ident": [3, 8], "gamma": [3, 5, 8, 9, 11], "when": [3, 5, 7, 8, 9, 12, 13, 14], "argument": [3, 7, 8, 9], "mai": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "roughli": [3, 8], "exactli": [3, 8, 11, 12, 13, 14], "calcul": [3, 8], "By": [3, 8, 9, 12, 13, 14], "nearest": [3, 7, 8, 12, 13, 14], "integ": [3, 4, 5, 8, 9, 10, 11, 12, 13, 14], "disabl": [3, 8, 9], "rv_discret": 3, "rv_continu": 3, "profit": 3, "boolean": 3, "minu": 3, "nois": 3, "ad": [3, 5, 11, 14], "build_multiknapsack_model": [], "pmediandata": 3, "distanc": [3, 7, 8, 11], "demand": [3, 8, 12, 13, 14], "p": [3, 10, 12, 13, 14], "capacit": [3, 10], "median": [3, 10], "between": [3, 6, 7, 8, 11, 12, 13, 14], "custom": [3, 8, 9], "facil": [3, 8], "need": [3, 5, 6, 8, 9, 11, 12, 13, 14], "chosen": [3, 8], "pmediangener": [3, 8], "distances_jitt": [3, 8], "demands_jitt": [3, 8], "capacities_jitt": [3, 8], "Then": [3, 7, 8], "build": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "geograph": [3, 8], "locat": [3, 5, 8, 11], "xi": 3, "yi": 3, "For": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "final": [3, 7, 8, 11, 12, 13, 14], "euclidean": [3, 8], "factor": [3, 8], "slightli": [3, 8, 11], "coordin": 3, "point": [3, 5, 12, 13, 14], "scale": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14], "build_pmedian_model": [], "setcoverdata": 3, "incidence_matrix": [3, 8], "setpackdata": 3, "maxweightstablesetdata": 3, "graph": [3, 8, 11], "networkx": [3, 11], "maxweightstablesetgener": [3, 8], "fix_graph": [3, 8], "maximum": [3, 8, 11], "stabl": [3, 5, 10, 11], "two": [3, 6, 7, 8, 11, 12, 13, 14], "oper": [3, 8, 12, 13, 14], "erd\u0151": [3, 8], "r\u00e9nyi": [3, 8], "g_": [3, 8], "w_v": [3, 8], "wai": [3, 7, 8], "travelingsalesmandata": [3, 11], "n_citi": [3, 11], "travelingsalesmangener": [3, 5, 8, 9, 11], "fix_citi": [3, 5, 8, 9, 11], "travel": [3, 5, 9, 10], "salesman": [3, 5, 9, 10], "unitcommitmentdata": [3, 12, 13, 14], "min_pow": [3, 8], "max_pow": [3, 8], "min_uptim": [3, 8], "min_downtim": [3, 8], "cost_startup": [3, 8], "cost_prod": [3, 8], "cost_fix": [3, 8], "build_uc_model": [12, 13, 14], "unit": [3, 9, 10, 11, 12, 13, 14], "commit": [3, 10, 12, 13, 14], "accord": 3, "equat": 3, "5": [3, 5, 6, 8, 11, 12, 13, 14], "bendotti": [3, 8], "fouilhoux": [3, 8], "rottner": [3, 8], "c": [3, 5, 8, 12, 13, 14], "min": [3, 5, 8, 11, 12, 13, 14], "up": [3, 5, 8, 9, 11, 12, 13, 14], "down": [3, 5, 8], "polytop": [3, 8], "comb": [3, 8], "36": [3, 8], "1024": [3, 8], "1058": [3, 8], "2018": [3, 8], "http": [3, 8, 10], "doi": [3, 8, 10], "org": [3, 8, 10], "10": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "1007": [3, 8], "s10878": [3, 8], "018": [3, 8], "0273": [3, 8], "minweightvertexcoverdata": 3, "where_cut": 4, "cut": [4, 8, 9, 10, 12, 14], "where_default": 4, "where_lazi": 4, "lazi": [4, 8, 9, 10], "add_constr": [4, 11], "constrs_lh": 4, "constrs_sens": 4, "constrs_rh": 4, "extract_after_load": 4, "extract_after_lp": 4, "extract_after_mip": 4, "fix_vari": 4, "lazy_enforc": [4, 11], "violat": [4, 11], "relax": [4, 5, 6, 8, 9, 11, 12, 13, 14], "set_cut": 4, "set_warm_start": 4, "write": [4, 5, 12, 13, 14], "inner": [4, 11, 12, 13, 14], "lazy_separ": [4, 11], "cuts_separ": [4, 11], "cuts_enforc": [4, 11], "constr": 4, "just": [4, 5, 12, 13, 14], "been": [4, 6, 7, 8, 11], "load": [4, 5, 7, 8, 9, 12, 13, 14], "extract": [4, 5, 6, 7], "problem": [4, 5, 6, 7, 9, 10], "etc": [4, 12, 13, 14], "linear": [4, 5, 6, 8, 10, 12, 13, 14], "program": [4, 10, 11, 12, 13, 14], "solv": [4, 5, 6, 7, 10], "dynam": 4, "lp": [4, 5, 6], "basi": [4, 5], "statu": [4, 5], "mix": [4, 5, 8, 10, 11, 12, 13, 14], "mip": [4, 5, 7, 8, 9, 10, 12, 13, 14], "set_time_limit": 4, "time_limit_sec": 4, "learningsolv": [4, 9, 11, 12, 13, 14], "compon": [4, 6, 9, 10, 11, 12, 13, 14], "data_filenam": 4, "step": [5, 6, 8, 9, 12, 13, 14], "assist": 5, "supervis": [5, 6], "larg": [5, 7, 8, 10, 12, 13, 14], "raw": [5, 6], "In": [5, 6, 7, 8, 9, 11, 12, 13, 14], "section": [5, 7, 8], "we": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "variou": [5, 6, 7, 8, 9], "includ": [5, 7, 8, 9, 10, 11], "miplearn": [5, 6, 7, 8, 9, 11, 12, 13, 14], "addition": [5, 11], "framework": [5, 6, 7, 9, 10, 11, 12, 13, 14], "follow": [5, 7, 8, 9, 10, 11, 12, 13, 14], "convent": [5, 7, 8, 10], "store": [5, 6, 8, 11, 12, 13, 14], "file": [5, 6, 7, 8, 9, 11, 12, 13, 14], "briefli": [5, 7], "rational": 5, "choos": [5, 7, 11], "analyz": 5, "later": 5, "take": [5, 6, 7, 10, 11], "input": [5, 6, 11, 12, 13, 14], "pickl": [5, 12, 14], "end": [5, 7, 8, 12, 13, 14], "pkl": [5, 9, 11, 12, 14], "gz": [5, 9, 11, 12, 13, 14], "build_tsp_model": 5, "after": [5, 8, 11, 12, 13, 14], "process": [5, 6, 7, 8, 9, 11, 12, 13, 14], "done": [5, 6], "alongsid": 5, "veri": [5, 7, 8, 10, 11, 12, 13, 14], "time": [5, 6, 7, 8, 9, 11, 12, 13, 14], "consum": [5, 6, 8], "thei": [5, 6, 7], "potenti": [5, 7, 8, 11, 12, 13, 14], "hierarch": 5, "hdf": 5, "wa": [5, 8, 9, 11, 12, 13, 14], "develop": [5, 6, 10, 12, 13, 14], "nation": [5, 10], "center": [5, 8], "supercomput": 5, "applic": [5, 7, 8, 11], "ncsa": 5, "organ": 5, "amount": [5, 8, 12, 13, 14], "support": [5, 7, 10, 11, 14], "varieti": [5, 8], "string": [5, 13], "arrai": 5, "csv": 5, "json": [5, 11], "sqlite": 5, "sever": 5, "advantag": [5, 7, 10], "storag": 5, "scalar": 5, "vector": [5, 6, 13], "matric": [5, 6, 8], "relat": [5, 12, 13, 14], "easier": [5, 8, 12, 13, 14], "transfer": 5, "high": [5, 6, 7, 8, 9, 10, 11, 13], "o": 5, "read": [5, 7, 11], "element": [5, 8], "without": [5, 6, 7, 8, 11], "memori": [5, 12, 13, 14], "begin": [5, 7, 8, 11, 12, 13, 14], "dramat": 5, "improv": [5, 6], "reduc": [5, 6, 11, 14], "requir": [5, 6, 7, 11, 12, 13, 14], "especi": [5, 7], "import": [5, 6, 7, 8, 9, 11, 12, 14], "On": [5, 9], "fly": 5, "compress": [5, 12, 13, 14], "can": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "transpar": 5, "acceler": [5, 6, 10, 11, 12, 13, 14], "network": [5, 7, 8], "portabl": 5, "well": [5, 8, 12, 13, 14], "typic": [5, 6, 7, 8, 10], "expens": 5, "ensur": [5, 6, 8, 12, 13, 14], "usabl": 5, "futur": [5, 12, 13, 14], "even": [5, 7, 12, 13, 14], "non": [5, 8, 9, 11, 12, 14], "python": [5, 11, 12, 13, 14], "ml": [5, 7, 8, 9, 10, 11, 12, 13, 14], "current": [5, 7, 8, 9, 11, 12, 13, 14], "simpl": [5, 6, 7, 8, 11], "numer": [5, 8], "advanc": [5, 10, 11, 12, 13, 14], "librari": [5, 8], "h5py": 5, "conveni": [5, 11], "access": 5, "less": [5, 7, 8], "prone": 5, "built": 5, "dens": 5, "spars": 5, "arbitrari": 5, "binari": [5, 7, 8, 9, 11, 12, 13, 14], "correspond": 5, "get": [5, 10], "pure": [5, 10], "automat": [5, 10, 11], "check": [5, 6, 7], "show": [5, 12, 13, 14], "usag": [5, 6, 7, 9, 11, 12, 13, 14], "np": [5, 6, 8, 9, 11, 12, 14], "seed": [5, 6, 8, 9, 11, 12, 13, 14], "reproduc": [5, 6, 8, 9, 11], "42": [5, 6, 8, 9, 11, 12, 13, 14], "empti": [5, 8, 11], "test": [5, 9, 11], "x1": [5, 6], "x2": [5, 6], "hello": 5, "world": [5, 8, 12, 13, 14], "x3": [5, 6], "2": [5, 6, 7, 8, 9, 11, 12, 13, 14], "x4": 5, "rand": [5, 13], "x5": 5, "re": 5, "open": [5, 6, 8, 12, 13, 14], "print": [5, 6, 8, 11, 12, 14], "37454012": 5, "9507143": 5, "7319939": 5, "5986585": 5, "15601864": 5, "15599452": 5, "05808361": 5, "8661761": 5, "601115": 5, "6803075671195984": 5, "4504992663860321": 5, "4": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "013264961540699005": 5, "9422017335891724": 5, "5632882118225098": 5, "38541650772094727": 5, "015966251492500305": 5, "2308938205242157": 5, "24102546274662018": 5, "6832635402679443": 5, "6099966764450073": 5, "83319491147995": 5, "most": [5, 6, 7, 8, 11, 12, 13, 14], "fundament": 5, "right": [5, 7, 8, 12, 13, 14], "hand": [5, 6, 11, 12, 13, 14], "side": [5, 12, 13, 14], "easili": [5, 6, 7, 9], "effici": [5, 8], "rebuild": 5, "invok": 5, "sensit": 5, "among": 5, "along": 5, "statist": [5, 8, 9, 11, 12, 13, 14], "explor": [5, 8, 9, 11, 12, 13, 14], "node": [5, 6, 8, 9, 11, 12, 13, 14], "wallclock": 5, "phase": 5, "static_": 5, "lp_": 5, "mip_": 5, "shown": [5, 7, 8, 11, 12, 13, 14], "tabl": 5, "descript": [5, 6], "static_constr_lh": 5, "nconstr": 5, "nvar": 5, "left": [5, 7, 8, 12, 13, 14], "static_constr_nam": 5, "static_constr_rh": [5, 6, 12, 13, 14], "static_constr_sens": 5, "sens": [5, 6, 12, 13, 14], "static_obj_offset": 5, "static_sens": 5, "minim": [5, 8, 12, 13, 14], "max": [5, 8, 11, 12, 13, 14], "static_var_lower_bound": 5, "lower": [5, 7], "bound": [5, 6, 8, 9, 11, 12, 13, 14], "static_var_nam": 5, "static_var_obj_coeff": [5, 6, 7, 11], "static_var_typ": 5, "continu": [5, 8, 9, 11, 12, 13, 14], "static_var_upper_bound": 5, "upper": 5, "lp_constr_basis_statu": 5, "lp_constr_dual_valu": [5, 6], "dual": [5, 6, 9, 11, 12, 14], "shadow": 5, "lp_constr_sa_rhs_": 5, "rh": [5, 6, 8, 9, 11, 12, 13, 14], "lp_constr_slack": [5, 6], "slack": [5, 6], "lp_obj_valu": [5, 6], "lp_var_basis_statu": 5, "superbas": 5, "lp_var_reduced_cost": [5, 6], "lp_var_sa_": 5, "ub": 5, "lb": 5, "_": [5, 12, 13, 14], "lp_var_valu": [5, 6], "lp_wallclock_tim": 5, "taken": 5, "second": [5, 7, 8, 9, 11, 12, 13, 14], "mip_constr_slack": 5, "best": [5, 7, 8, 9, 11, 12, 13, 14], "mip_gap": 5, "rel": [5, 6, 7, 8], "gap": [5, 8, 9, 11, 12, 13, 14], "mip_node_count": 5, "mip_obj_bound": 5, "mip_obj_valu": 5, "mip_var_valu": 5, "mip_wallclock_tim": 5, "few": [5, 8, 9, 11, 12, 13, 14], "run": [5, 6, 8, 11, 12, 13, 14], "screen": 5, "uniform": [5, 6, 8, 9, 11, 12, 13, 14], "randint": [5, 6, 8, 9, 11], "glob": [5, 6], "tsp": [5, 8, 9, 11], "build_tsp_model_gurobipi": [5, 8, 9, 11], "io": [5, 6, 9, 11, 12, 14], "low": [5, 6, 8, 9, 11], "11": [5, 6, 8, 9, 11], "loc": [5, 6, 8, 9, 11, 12, 14], "1000": [5, 6, 8, 9, 11, 12, 13, 14], "90": [5, 8, 9], "20": [5, 6, 8, 9, 11, 12, 13, 14], "save": [5, 9], "00000": [5, 6, 8, 9, 11, 12, 13, 14], "00001": [5, 9, 12, 13, 14], "four": [5, 7], "parallel": [5, 11], "bc": [5, 9, 11, 12, 13, 14], "2909": 5, "2921": [5, 8], "previou": [6, 7, 8, 9, 11], "page": [6, 7, 9], "introduc": [6, 8, 9], "collector": [6, 9, 10, 11, 12, 14], "hdf5": [6, 7, 9, 10, 11, 12, 13, 14], "order": [6, 7, 8], "becaus": [6, 8, 11, 12, 13, 14], "help": 6, "complex": [6, 7, 12, 13, 14], "format": [6, 10, 12, 13, 14], "research": [6, 8, 10], "propos": 6, "absolut": [6, 8], "invari": 6, "transform": 6, "amen": 6, "treat": 6, "separ": 6, "cycl": 6, "often": [6, 7, 8, 11, 12, 13, 14], "therefor": [6, 8, 11], "focu": 6, "filter": [6, 7], "represent": [6, 11], "much": [6, 7, 11, 12, 13, 14], "faster": [6, 12, 13, 14], "experi": 6, "resolv": [6, 8], "implement": [6, 7, 9, 10, 11, 12, 13, 14], "featureextractor": 6, "produc": [6, 8, 9, 11, 12, 13, 14], "either": [6, 7, 10, 12, 13, 14], "particular": [6, 8, 10], "subset": [6, 7, 8, 9], "known": 6, "alreadi": [6, 7, 11, 12, 13, 14], "avail": [6, 7, 8, 9, 11, 12, 13, 14], "assembl": 6, "field": [6, 7, 8, 10, 11, 12, 14], "shape": 6, "demonstr": [6, 12, 13, 14], "randomli": [6, 8], "shutil": 6, "rmtree": 6, "basic": [6, 9, 10, 11, 12, 13, 14], "multiknapsack": [6, 8], "ignore_error": 6, "6": [6, 8, 9, 11, 12, 13, 14], "100": [6, 7, 8, 11, 12, 13, 14], "25": [6, 7, 8, 9, 11, 12, 13, 14], "95": [6, 8, 9], "75": [6, 7, 8, 13], "ext": 6, "": [6, 7, 8, 10, 11], "1531": 6, "24308771": 6, "350": [6, 8], "692": [6, 8], "454": [6, 8], "709": [6, 8], "605": [6, 8], "543": [6, 8], "321": [6, 8], "674": [6, 8], "571": [6, 8], "341": [6, 8], "53124309e": 6, "03": [6, 8, 9, 11, 12, 13, 14], "50000000e": 6, "02": [6, 8, 9, 11, 12, 13, 14], "00000000e": 6, "00": [6, 8, 9, 11, 12, 13, 14], "9": [6, 8, 11, 12, 13, 14], "43468018e": 6, "01": [6, 8, 9, 11, 12, 13, 14], "92000000e": 6, "51703322e": 6, "54000000e": 6, "8": [6, 8, 11, 12, 13, 14], "25504150e": 6, "7": [6, 8, 11, 12, 13, 14], "09000000e": 6, "11373022e": 6, "05000000e": 6, "26055283e": 6, "43000000e": 6, "68693771e": 6, "21000000e": 6, "07488781e": 6, "74000000e": 6, "82293701e": 6, "71000000e": 6, "41129074e": 6, "41000000e": 6, "28830120e": 6, "3100000e": 6, "5978307e": 6, "0000000e": 6, "8800000e": 6, "2881632e": 6, "0040000e": 6, "0601316e": 6, "2690000e": 6, "3659772e": 6, "0070000e": 6, "8800571e": 6, "warn": [6, 8, 11, 12, 13, 14], "illustr": [6, 7, 9, 11, 12, 13, 14], "while": [6, 7, 8, 9, 11], "would": [6, 7], "vari": 6, "unabl": 6, "concaten": 6, "tree": [6, 11], "mimick": 6, "40": [6, 8, 9, 12, 13, 14], "out": [6, 12, 13, 14], "64": [6, 8], "outsid": 6, "defint": 6, "design": [6, 8, 12, 13, 14], "irrelev": 6, "row": [6, 8, 9, 11, 12, 13, 14], "column": [6, 8, 9, 11, 12, 13, 14], "permut": 6, "paper": 6, "alvlouweh2017": [6, 7, 9], "00e": [6, 8, 9, 11, 12, 13, 14], "75e": 6, "10e": 6, "30e": 6, "40e": 6, "80e": 6, "70e": 6, "60e": 6, "alejandro": 6, "marco": 6, "theoret": [6, 7], "synergi": 6, "2016": 6, "univers": [6, 8], "li\u00e8g": 6, "quentin": 6, "loui": 6, "assign": [7, 8, 12, 13, 14], "qualiti": [7, 10], "benefici": 7, "prune": 7, "portion": 7, "search": 7, "space": [7, 8], "altern": 7, "proof": 7, "doubl": 7, "feasibl": [7, 8, 10, 11], "both": [7, 11, 12, 13, 14], "pattern": [7, 10, 12, 13, 14], "emploi": [7, 8], "highli": 7, "configur": [7, 8, 10, 11], "accept": [7, 8, 9, 12, 13, 14], "depend": 7, "whether": [7, 12, 13, 14], "befor": [7, 11, 12, 13, 14], "present": 7, "themselv": 7, "discuss": [7, 9, 12, 13, 14], "three": [7, 9, 12, 13, 14], "approach": [7, 10], "benefit": [7, 8, 10], "limit": [7, 8, 11, 12, 13, 14], "main": [7, 9, 10], "maintain": 7, "guarante": 7, "signific": [7, 10, 11, 12, 13, 14], "abl": [7, 8, 10, 11, 12, 13, 14], "possibl": 7, "case": [7, 12, 13, 14], "evalu": [7, 8], "discard": 7, "infeas": [7, 8], "ones": [7, 11, 12, 13, 14], "proce": [7, 12, 14], "disadvantag": 7, "next": [7, 8, 11, 12, 13, 14], "modest": 7, "speedup": 7, "mani": [7, 8, 11], "accur": 7, "restrict": [7, 8, 9, 11, 12, 14], "small": [7, 11, 12, 13, 14], "fraction": [7, 11, 12, 13, 14], "find": [7, 8, 10, 11, 12, 13, 14], "scratch": 7, "lose": 7, "found": [7, 8, 9, 11, 12, 13, 14], "longer": 7, "global": 7, "suffici": 7, "might": 7, "were": [7, 8, 10], "third": [7, 8], "tri": 7, "strike": 7, "balanc": 7, "enforc": [7, 8, 11], "proxim": 7, "precis": 7, "bar": 7, "_1": 7, "ldot": [7, 8, 12, 13, 14], "_n": 7, "x_1": 7, "x_n": 7, "add": [7, 11, 13, 14], "sum_": [7, 8, 12, 13, 14], "_i": [7, 12, 13, 14], "x_i": [7, 8, 12, 13, 14], "leq": [7, 8, 12, 13, 14], "defin": [7, 11, 12, 13, 14], "indic": [7, 8, 12, 13, 14], "deviat": 7, "suggest": [7, 12, 13, 14], "toler": [7, 8, 9, 11, 12, 13, 14], "Its": 7, "lead": 7, "smaller": 7, "larger": [7, 11, 12, 13, 14], "distinct": 7, "try": 7, "infer": 7, "those": 7, "like": 7, "good": [7, 8, 12, 13, 14], "promis": 7, "variat": [7, 8], "fact": 7, "let": [7, 8, 12, 13, 14], "i_1": 7, "i_n": 7, "i_": 7, "expect": 7, "through": [7, 8, 11, 12, 13, 14], "scikit": [7, 13], "score": 7, "delta_i": 7, "higher": 7, "highest": 7, "suppos": [7, 12, 13, 14], "regressor": 7, "sequenc": [7, 11], "appear": 7, "ti": 7, "being": [7, 8], "broken": 7, "arbitrarili": 7, "keep": [7, 8, 12, 13, 14], "i_k": 7, "x_l": 7, "tild": 7, "_l": 7, "frac": [7, 8], "i_j": 7, "y_j": [7, 8], "text": [7, 8, 12, 13, 14], "le": 7, "theta_0": 7, "ge": [7, 8], "theta_1": 7, "squar": [7, 8, 11], "undefin": 7, "meant": 7, "simpler": 7, "literatur": 7, "post": 7, "dummyclassifi": 7, "anoth": 7, "similar": [7, 8, 11, 12, 13, 14], "itself": [7, 11, 12, 13, 14], "kneighborsclassifi": [7, 11, 12, 13, 14], "cours": 7, "dummi": 7, "neighbor": [7, 11, 12, 13, 14], "mem": [7, 11, 12, 14], "dummyextractor": 7, "comp1": [7, 9], "1_000_000": 7, "closest": 7, "assum": [7, 8, 10, 11, 12, 13, 14], "comp2": [7, 9], "n_neighbor": [7, 11, 12, 13, 14], "comp3": [7, 9], "natur": 7, "directli": [7, 11], "novel": 7, "never": 7, "observ": [7, 10], "jointli": 7, "x_j": [7, 8], "copi": 7, "1_j": 7, "n_j": 7, "label": 7, "aris": [7, 8], "practic": [7, 8, 11, 12, 13, 14], "certain": [7, 10], "frequent": [7, 8, 12, 13, 14], "pose": 7, "standard": [7, 12, 13, 14], "sinc": 7, "do": [7, 11, 13], "wrapper": [7, 12, 13, 14], "It": [7, 8, 9, 11, 12, 13, 14], "reliabl": 7, "accuraci": 7, "situat": [7, 8, 12, 13, 14], "confid": 7, "purpos": [7, 8, 12, 13, 14], "ask": [7, 8, 11], "eras": 7, "whose": [7, 8], "suitabl": [7, 8], "handl": [7, 12, 13, 14], "overrid": 7, "linear_model": [7, 9], "logisticregress": [7, 9], "minprob": [7, 9], "singleclass": [7, 9], "indep": [7, 9], "than": [7, 8], "99": [7, 8], "comp": [7, 12, 13, 14], "subsect": 7, "straightforwad": 7, "simpli": [7, 11], "feed": 7, "forward": 7, "neural": 7, "indeped": 7, "common": 7, "multioutput": 7, "chain": [7, 8], "alon": 7, "plu": 7, "classifierchain": 7, "neural_network": 7, "mlpclassifi": 7, "feedforward": 7, "spend": [7, 12, 13, 14], "effort": [7, 11], "tweak": 7, "usual": [7, 8, 12, 13, 14], "idea": 7, "what": [7, 8, 11], "impact": 7, "simplifi": [7, 11, 12, 13, 14], "task": [7, 8], "benchmark": [7, 10], "pre": 7, "miplib": 8, "tsplib": 8, "shortcom": 8, "howev": [8, 11, 12, 13, 14], "enhanc": [8, 10], "hundr": 8, "thousand": 8, "magnitud": 8, "homogen": 8, "buch": 8, "tackl": 8, "wide": 8, "classic": 8, "techniqu": [8, 10, 11], "measur": [8, 11], "As": 11, "nine": 8, "customiz": 8, "flexibl": [8, 9], "divers": 8, "characterist": 8, "belong": 8, "algorithm": 8, "subject": [8, 12, 13, 14], "your": [8, 10, 12, 13, 14], "written": 8, "exponenti": 8, "mp": [8, 12, 13, 14], "trial": 8, "primal": [8, 9, 10, 11, 12, 14], "combinatori": 8, "finit": 8, "indivis": 8, "hard": 8, "warehous": 8, "manag": 8, "determin": 8, "transport": 8, "equal": [8, 12, 13, 14], "everi": [8, 11], "pair": [8, 11], "x_": 8, "ij": 8, "align": [8, 12, 13, 14], "foral": 8, "y_i": [8, 12, 13, 14], "binpack": 8, "ten": 8, "47": 8, "26": [8, 12, 13, 14], "19": [8, 11], "52": 8, "14": [8, 9], "65": 8, "21": [8, 11, 12, 13, 14], "76": 8, "82": 8, "16": [8, 9, 11, 13], "96": 8, "102": 8, "24": 8, "69": [8, 11], "22": 8, "78": [8, 11], "17": 8, "81": [8, 11], "83": 8, "12": [8, 11, 14], "67": 8, "46": 8, "05": [8, 12], "13": [8, 12, 13, 14], "66": [8, 11, 13], "18": [8, 11], "08": [8, 12, 13, 14], "93": [8, 11], "41": [8, 9], "55": 8, "15": [8, 9, 11, 12, 13, 14], "89": 8, "59": 8, "51": [8, 11], "68": [8, 11], "62": 8, "92": 8, "94": 8, "23": 8, "85": 8, "107": [8, 11], "77": [8, 11], "79": [8, 11], "06": [8, 12, 13, 14], "44": 8, "28": [8, 9, 11, 12, 14], "98": 8, "43": 8, "104": 8, "58": [8, 11], "87": 8, "74": 8, "61": 8, "07": [8, 12, 13, 14], "37": 8, "91": 8, "57": 8, "56": [8, 9], "97": 8, "09": [8, 12, 13, 14], "licens": [8, 9, 11, 12, 13, 14], "product": [8, 9, 11, 12, 13, 14], "expir": [8, 9, 11, 12, 14], "2024": [8, 9, 10, 11, 12, 14], "gurobi": [8, 9, 10, 11, 12, 13, 14], "v10": [8, 9, 11, 12, 13, 14], "3rc0": [8, 9, 11, 12, 14], "linux64": [8, 9, 11, 12, 13, 14], "cpu": [8, 9, 11, 12, 13, 14], "13th": [8, 9, 11, 12, 14], "gen": [8, 9, 11, 12, 14], "intel": [8, 9, 11, 12, 14], "core": [8, 9, 11, 12, 13, 14], "tm": [8, 9, 11, 12, 14], "i7": [8, 9, 11, 12, 14], "13800h": [8, 9, 11, 12, 14], "instruct": [8, 9, 11, 12, 13, 14], "sse2": [8, 9, 11, 12, 13, 14], "avx": [8, 9, 11, 12, 13, 14], "avx2": [8, 9, 11, 12, 13, 14], "thread": [8, 9, 11, 12, 13, 14], "count": [8, 9, 11, 12, 13, 14], "physic": [8, 9, 11, 12, 13, 14], "logic": [8, 9, 11, 12, 13, 14], "processor": [8, 9, 11, 12, 13, 14], "110": [8, 9], "210": 8, "nonzero": [8, 9, 11, 12, 13, 14], "fingerprint": [8, 9, 11, 12, 13, 14], "0x1ff9913f": 8, "1e": [8, 9, 11, 12, 13, 14], "heurist": [8, 11, 12, 13, 14], "0000000": [8, 11, 12, 13, 14], "presolv": [8, 9, 11, 12, 13, 14], "root": [8, 9, 11, 12, 13, 14], "274844e": 8, "38": 8, "iter": [8, 9, 11, 12, 13, 14], "expl": [8, 9, 11, 12, 13, 14], "unexpl": [8, 9, 11, 12, 13, 14], "depth": [8, 9, 11, 12, 13, 14], "intinf": [8, 9, 11, 12, 13, 14], "incumb": [8, 9, 11, 12, 13, 14], "bestbd": [8, 9, 11, 12, 13, 14], "27484": 8, "h": [8, 11, 12, 13, 14], "simplex": [8, 9, 11, 12, 13, 14], "04": [8, 9, 11, 12, 13, 14], "000000000000e": 8, "0000": [8, 9, 11, 12, 13, 14], "involv": [8, 9], "place": 8, "total": [8, 12, 13, 14], "maxim": 8, "exceed": 8, "repres": [8, 11], "resourc": 8, "must": [8, 11], "satisfi": 8, "p_j": 8, "w_": 8, "b_i": 8, "alpha_i": 8, "u_j": 8, "gamma_": 8, "frevil": 8, "arnaud": 8, "g\u00e9rard": 8, "plateau": 8, "preprocess": 8, "procedur": [8, 11, 12, 13, 14], "multidimension": 8, "discret": [8, 10], "mathemat": [8, 12, 13, 14], "49": 8, "1994": 8, "189": 8, "212": 8, "fr\u00e9vill": 8, "european": 8, "155": 8, "2004": 8, "five": 8, "around": [8, 12, 13, 14], "392": 8, "977": 8, "764": [8, 13], "622": 8, "158": 8, "163": 8, "840": 8, "574": 8, "696": 8, "948": 8, "860": 8, "209": 8, "178": 8, "184": 8, "293": 8, "541": 8, "414": 8, "305": 8, "629": 8, "135": 8, "278": 8, "378": 8, "466": 8, "803": 8, "205": 8, "492": 8, "584": 8, "45": [8, 9], "630": 8, "173": 8, "907": 8, "947": 8, "794": 8, "312": 8, "711": 8, "439": 8, "117": 8, "506": 8, "35": [8, 11, 13], "915": 8, "266": 8, "662": 8, "516": 8, "521": 8, "1310": 8, "988": 8, "1004": 8, "1269": 8, "50": [8, 9, 11, 12, 13, 14], "0xaf3ac15": 8, "2e": [8, 9, 11, 12, 13, 14], "3e": [8, 12, 14], "7e": [8, 12, 13, 14], "804": 8, "remov": [8, 11, 12, 13, 14], "34": 8, "428726e": 8, "1428": 8, "7265": 8, "1279": 8, "000000": [8, 11], "plane": [8, 9, 11, 12, 14], "No": 8, "better": 8, "279000000000e": 8, "serv": 8, "goal": 8, "suppli": 8, "d_i": 8, "furthermor": 8, "c_j": 8, "pmedian": 8, "100x100": 8, "250": 8, "32": [8, 13], "33": 8, "86": 8, "88": 8, "72": 8, "80": 8, "39": [8, 9, 12], "71": 8, "70": [8, 12, 13, 14], "30": [8, 12, 13, 14], "73": 8, "101": 8, "63": 8, "54": 8, "111": 8, "27": 8, "151": 8, "237": 8, "241": 8, "202": 8, "171": 8, "220": 8, "0x8d8d9346": 8, "5e": 8, "4e": [8, 9], "368": 8, "7900000": 8, "245": 8, "6400000": 8, "000000e": [8, 9, 11, 12, 14], "64000": 8, "1900000": 8, "148": 8, "6300000": 8, "14595": 8, "113": 8, "1800000": 8, "84": 8, "18000": 8, "5000000": 8, "3900000": 8, "9800000": 8, "28872": 8, "31": 8, "98000": 8, "9200000": 8, "06884": 8, "92000": 8, "2300000": 8, "23000": 8, "123000000000e": 8, "aim": 8, "overlap": 8, "real": [8, 12, 13, 14], "scenario": 8, "schedul": [8, 11], "alloc": 8, "s_1": 8, "s_m": 8, "union": [8, 12, 14], "w_j": 8, "s_j": 8, "geq": [8, 12, 13, 14], "setcovergener": 8, "n_element": 8, "n_set": 8, "incid": 8, "densiti": 8, "d": [8, 12, 13, 14], "entri": 8, "bernoulli": 8, "least": 8, "identifi": [8, 10, 11], "uniformli": 8, "modifi": 8, "denot": [8, 12, 13, 14], "fix_set": 8, "costs_jitt": 8, "setcov": 8, "build_setcover_model_gurobipi": 8, "interv": 8, "1044": 8, "850": 8, "1014": 8, "944": 8, "697": 8, "971": 8, "213": 8, "425": 8, "0xe5c2d4fa": 8, "4900000": 8, "134900000000e": 8, "disjoint": 8, "within": 8, "airlin": [8, 11], "flight": 8, "crew": 8, "setpackgener": 8, "detail": [8, 11], "document": 8, "setpack": 8, "build_setpack_model": [], "0x4ee91388": 8, "1265": 8, "560000": 8, "1986": 8, "986370000000e": 8, "theori": 8, "vertic": 8, "adjac": [8, 11], "simultan": [8, 12, 13, 14], "conflict": 8, "v": 8, "undirect": 8, "x_v": 8, "x_u": 8, "recal": [8, 11], "edg": [8, 11], "probabilti": 8, "stab": 8, "build_stab_model_gurobipi": [8, 11], "60": [8, 11, 12, 13, 14], "48": 8, "precrush": [8, 9, 11], "0x3240ea4a": 8, "6e": [8, 12, 13, 14], "219": 8, "1400000": 8, "205650e": 8, "14000": 8, "191400000000e": 8, "callback": [8, 9, 11, 13], "299": 8, "sec": [8, 9, 11, 13], "citi": [8, 11], "shortest": [8, 11], "visit": [8, 11], "hamiltonian": [8, 11], "path": [8, 11, 12, 13, 14], "karp": [8, 11], "deliveri": [8, 11], "truck": [8, 11], "d_e": 8, "x_e": 8, "delta": 8, "subsetneq": 8, "neq": 8, "emptyset": 8, "extrem": 8, "setminu": 8, "inequ": 8, "initi": [8, 11, 12, 13, 14], "d_": 8, "sqrt": 8, "1000x1000": 8, "box": 8, "513": 8, "762": 8, "358": 8, "325": 8, "374": 8, "932": 8, "731": 8, "391": 8, "634": 8, "726": 8, "765": 8, "754": 8, "409": 8, "719": 8, "446": 8, "400": 8, "780": 8, "756": 8, "744": 8, "656": 8, "383": 8, "334": 8, "549": 8, "925": 8, "702": 8, "422": 8, "728": 8, "663": 8, "526": 8, "708": 8, "377": 8, "462": 8, "1072": 8, "802": 8, "501": 8, "853": 8, "654": 8, "603": 8, "433": 8, "381": 8, "255": 8, "287": 8, "493": 8, "900": 8, "354": 8, "323": 8, "367": 8, "841": 8, "727": 8, "444": 8, "668": 8, "690": 8, "687": 8, "175": 8, "725": 8, "398": 8, "666": 8, "827": 8, "736": 8, "371": [8, 13], "317": 8, "570": 8, "1090": 8, "712": 8, "648": 8, "655": 8, "650": 8, "356": 8, "469": 8, "1146": 8, "779": 8, "476": 8, "752": 8, "681": 8, "565": [8, 12, 14], "394": 8, "286": 8, "274": 8, "lazyconstraint": [8, 9, 11], "0x719675e5": 8, "921000e": 8, "921000000000e": 8, "106": 8, "power": [8, 10, 12, 13, 14], "turn": [8, 12, 13, 14], "off": 8, "meet": 8, "electr": [8, 12, 13, 14], "lowest": 8, "ramp": 8, "prevent": 8, "output": [8, 13], "level": [8, 11], "too": 8, "quickli": 8, "minimum": 8, "switch": 8, "system": [8, 10, 12, 13, 14], "plan": 8, "doe": [8, 11, 12, 13, 14], "trajectori": 8, "piecewis": 8, "curv": 8, "transmiss": 8, "secur": 8, "realist": [8, 12, 13, 14], "unitcommit": 8, "jl": 8, "t": 8, "d_t": 8, "mw": [8, 12, 13, 14], "max_g": 8, "min_g": 8, "l_g": 8, "regardless": 8, "var": [8, 10, 12, 13, 14], "gt": 8, "p_": 8, "_g": 8, "gk": 8, "cannot": [8, 14], "symmetr": 8, "fourth": 8, "period": 8, "fifth": 8, "sixth": 8, "quantiti": 8, "unitcommitmentgener": 8, "n_unit": 8, "n_period": 8, "valid": 8, "rather": 8, "startup": 8, "peak": 8, "4c": 8, "8c": 8, "cost_jitt": 8, "demand_jitt": 8, "fix_unit": 8, "uc": [8, 12, 13, 14], "450": [8, 11, 12, 13, 14], "10_000": 8, "1_000": 8, "f": [8, 11], "271": 8, "207": 8, "218": 8, "477": 8, "379": 8, "319": 8, "120": 8, "3042": 8, "5247": 8, "4319": 8, "2912": 8, "6118": 8, "53": 8, "199": 8, "514": 8, "592": 8, "607": 8, "905": 8, "1166": 8, "1212": 8, "1127": 8, "953": 8, "796": 8, "783": 8, "866": 8, "768": 8, "899": 8, "946": 8, "1087": 8, "1048": 8, "992": 8, "750": 8, "691": 8, "606": 8, "658": 8, "809": 8, "2458": 8, "6200": 8, "4585": 8, "2666": 8, "4783": 8, "196": 8, "416": 8, "626": 8, "981": 8, "1095": 8, "1102": 8, "1088": 8, "863": 8, "848": 8, "761": 8, "828": 8, "775": 8, "834": 8, "959": 8, "865": 8, "1193": 8, "985": 8, "893": 8, "962": 8, "781": 8, "723": 8, "639": 8, "602": 8, "787": 8, "578": 8, "360": 8, "2128": 8, "0x4dc1c661": 8, "240": 8, "244": 8, "131": 8, "229": 8, "842": 8, "116": 8, "440662": 8, "46430": 8, "429461": 8, "97680": 8, "374043": 8, "64040": 8, "361348e": 8, "142": 8, "336134": 8, "820": 8, "640": 8, "368600": 8, "14450": 8, "364721": 8, "76610": 8, "cutoff": [8, 9], "766": 8, "gomori": [8, 11, 12, 14], "cliqu": 8, "222": [8, 11], "mir": [8, 11, 12, 14], "flow": [8, 12, 14], "rlt": 8, "lift": 8, "234": 8, "364722": 8, "374044": 8, "647217661000e": 8, "connect": 8, "bioinformat": 8, "w_g": 8, "minweightvertexcovergener": 8, "behav": 8, "vertexcov": 8, "build_vertexcover_model": [], "0x2d2d1390": 8, "301": 8, "995750e": 8, "010000000000e": 8, "individu": [9, 12, 13, 14], "integr": 9, "aforement": 9, "cohes": 9, "whole": 9, "conclud": 9, "runnabl": 9, "compos": 9, "target": 9, "part": [9, 11], "architectur": 9, "enabl": 9, "equival": 9, "tradit": 9, "sequenti": 9, "could": [9, 12, 13, 14], "achiev": [9, 12, 13, 14], "dictionari": [9, 11], "train_data": [9, 11, 12, 13, 14], "test_data": [9, 11, 12, 13, 14], "action": [9, 10, 12, 13, 14], "all_data": 9, "split": 9, "0x6ddcd141": 9, "inf": [9, 11, 12, 14], "3600000e": 9, "700000e": [9, 11], "7610000e": 9, "761000000e": 9, "0x74ca3d0a": 9, "2796": 9, "761000e": 9, "2761": 9, "796000000000e": 9, "extens": 10, "state": [10, 12, 13, 14], "art": [10, 12, 13, 14], "cplex": [10, 11, 12, 13, 14], "xpress": [10, 11, 12, 13, 14], "unlik": [10, 11], "prove": 10, "full": 10, "happen": 10, "famili": 10, "redund": 10, "pyomo": [10, 11, 12, 13], "jump": [10, 11, 12, 14], "overview": 10, "cover": [10, 12, 14], "vertex": 10, "joint": 10, "expert": 10, "exampl": [10, 11, 12, 13, 14], "helper": 10, "alinson": 10, "xavier": 10, "argonn": 10, "laboratori": 10, "feng": 10, "qiu": 10, "xiaoyi": 10, "gu": 10, "georgia": 10, "institut": 10, "technologi": 10, "berkai": 10, "becu": 10, "santanu": 10, "dei": 10, "upon": 10, "direct": 10, "ldrd": 10, "fund": 10, "director": 10, "offic": 10, "scienc": 10, "depart": 10, "energi": 10, "grid": [10, 12, 13, 14], "kindli": 10, "packag": [10, 11, 12, 13, 14], "zenodo": 10, "2023": [], "5281": 10, "4287567": 10, "shabbir": 10, "ahm": 10, "2020": 10, "1287": 10, "ijoc": 10, "0976": 10, "tighten": 11, "region": 11, "elimin": 11, "thu": 11, "formul": [11, 12, 13, 14], "omit": 11, "success": 11, "tutori": [11, 12, 13, 14], "subtour": 11, "correctli": 11, "instal": 11, "compat": [11, 12, 13, 14], "julia": [11, 12, 13, 14], "sourc": [11, 12, 13, 14], "code": [11, 12, 13, 14], "build_tsp_model_pyomo": 11, "build_tsp_model_jump": 11, "gurobi_persist": [11, 14], "pr": 11, "persist": [11, 14], "welcom": [11, 12, 13, 14], "scip": 11, "glpk": 11, "cbc": 11, "newer": [11, 12, 13, 14], "further": 11, "becom": 11, "log": [11, 12, 13, 14], "basicconfig": 11, "getlogg": 11, "setlevel": 11, "critic": [], "memorizingcutscompon": [], "expertcutscompon": [], "expertlazycompon": [], "memorizinglazycompon": 11, "500": [11, 12, 13, 14], "info": 11, "225": [], "1225": 11, "2450": 11, "0x04d7bec1": 11, "0600000e": 11, "5880000e": 11, "588000000e": 11, "ahead": 11, "6091": 11, "0x09bd34d6": 11, "29853": 11, "139000e": 11, "6139": 11, "6390": 11, "6165": 11, "50000": 11, "6198": 11, "6219": 11, "half": 11, "219000000000e": 11, "143": 8, "aot": [], "0x77a94572": 11, "29695": 11, "588000e": 11, "5588": 11, "27241": 11, "5898": 11, "6066": 11, "6128": 11, "6368": 11, "6154": 11, "75000": 11, "6204": 11, "224": 11, "togeth": [12, 13, 14], "broader": [12, 14], "earli": [12, 13, 14], "stage": [12, 13, 14], "bug": [12, 13, 14], "submit": [12, 13, 14], "report": [12, 13, 14], "our": [11, 12, 13, 14], "github": [12, 13, 14], "repositori": [12, 13, 14], "comment": [12, 13, 14], "pull": [12, 13, 14], "languag": [12, 13, 14], "offici": [12, 13, 14], "websit": [12, 13, 14], "pip": [12, 14], "commerci": [12, 13, 14], "milp": [12, 13, 14], "demo": [12, 14], "possibli": [12, 13, 14], "incompat": [12, 13, 14], "releas": [12, 13, 14], "recommend": [11, 12, 13, 14], "project": [12, 13, 14], "simplif": [12, 13, 14], "daili": [12, 13, 14], "compani": [12, 13, 14], "onlin": [12, 13, 14], "hour": [12, 13, 14], "dai": [12, 13, 14], "own": [12, 13, 14], "g_1": [12, 13, 14], "g_n": [12, 13, 14], "offlin": [12, 13, 14], "g_i": [12, 13, 14], "megawatt": [12, 13, 14], "noth": [12, 13, 14], "quad": [12, 13, 14], "hold": [11, 12, 13, 14], "dataclass": [11, 12, 14], "pmin": [12, 13, 14], "pmax": [12, 13, 14], "cfix": [12, 13, 14], "cvar": [12, 13, 14], "structur": [12, 13, 14], "gp": [11, 12], "grb": [11, 12], "quicksum": [11, 12], "def": [11, 12, 14], "isinst": [11, 12, 14], "len": [11, 12, 14], "_x": 12, "addvar": [11, 12], "vtype": [11, 12], "_y": 12, "setobject": [11, 12], "addconstr": [11, 12], "At": [12, 13, 14], "700": [12, 13, 14], "600": [12, 13, 14], "objval": 12, "0x58dfdd53": 12, "1400": [12, 13, 14], "035000e": [12, 13, 14], "1035": [12, 13, 14], "1105": [12, 13, 14], "71429": [12, 13, 14], "1320": [12, 13, 14], "320000000000e": [12, 13, 14], "thin": [12, 13, 14], "agnost": [11, 12, 13, 14], "control": [12, 13, 14], "queri": [11, 12, 13, 14], "consist": 12, "slower": [12, 13, 14], "upfront": [12, 13, 14], "histor": [12, 13, 14], "random_uc_data": [12, 13, 14], "100_000": [12, 13, 14], "400_000": [12, 14], "rv": [12, 14], "simplic": [12, 13, 14], "now": [12, 13, 14], "impract": [12, 13, 14], "export": [12, 13, 14], "With": [12, 13, 14], "agre": [12, 13, 14], "unanim": [12, 13, 14], "solver_ml": [12, 13, 14], "1001": [12, 13, 14], "2500": [12, 13, 14], "0xa8b70287": 12, "6166537e": [12, 14], "648803e": [12, 14], "2906219e": [12, 14], "290621916e": [12, 14], "0xcf27855a": 12, "29153e": [12, 14], "290622e": [12, 14], "512": [12, 14], "2906e": [12, 14], "2915e": [12, 14], "2907e": [12, 14], "291528276179e": [12, 14], "290733258025e": [12, 14], "0096": [12, 14], "482": 12, "examin": [12, 13, 14], "line": [12, 13, 14], "repeat": [12, 13, 14], "solver_baselin": [12, 13, 14], "0x4cbbf7c7": 12, "757128e": [12, 14], "7571e": [12, 14], "298273e": [12, 14], "2983e": [12, 14], "293980e": [12, 14], "2940e": [12, 14], "2908e": [12, 14], "291465e": [12, 14], "1031": 12, "29147e": [12, 14], "29398e": [12, 14], "29827e": [12, 14], "75713e": [12, 14], "291465302389e": [12, 14], "290781665333e": [12, 14], "0082": [12, 14], "miss": [12, 13, 14], "had": [12, 13, 14], "significantli": [12, 13, 14], "inferior": [12, 13, 14], "intern": [12, 13, 14], "almost": [12, 13, 14], "term": [12, 13, 14], "0x19042f12": 12, "5917580e": [12, 14], "627453e": [12, 14], "2535968e": [12, 14], "253596777e": [12, 14], "0xf97cde91": 12, "25814e": [12, 14], "25512e": [12, 14], "25483e": [12, 14], "25459e": [12, 14], "253597e": [12, 14], "2536e": [12, 14], "2546e": [12, 14], "2537e": [12, 14], "2538e": [12, 14], "strongcg": [12, 14], "575": [12, 14], "254590409970e": [12, 14], "253768093811e": [12, 14], "0100": [12, 14], "8254590409": [12, 14], "969726": 12, "935662": [12, 14], "0949262811": [12, 14], "1604270": [12, 14], "0218116897": [12, 14], "launch": 13, "repl": 13, "enter": 13, "pkg": 13, "pycal": 13, "suppressor": 13, "cleaner": 13, "replac": [13, 14], "struct": 13, "float64": 13, "jld2": 13, "isa": 13, "read_jld2": 13, "length": 13, "eq_max_pow": [13, 14], "eq_min_pow": [13, 14], "eq_demand": [13, 14], "jumpmodel": 13, "objective_valu": 13, "1rc0": 13, "amd": 13, "ryzen": 13, "7950x": 13, "avx512": 13, "0x55e33a07": 13, "0e": 13, "500_000": 13, "125": 13, "00002": 13, "write_jld2": 13, "451": 13, "suppress_out": 13, "knn": 13, "pyimport": 13, "0xd2378195": 13, "02165e": 13, "021568e": 13, "510": 13, "0216e": 13, "0217e": 13, "021651058978e": 13, "021567971257e": 13, "0081": 13, "169": 13, "0xb45c0594": 13, "071463e": 13, "0715e": 13, "025162e": 13, "0252e": 13, "023090e": 13, "022335e": 13, "022281e": 13, "021753e": 13, "021752e": 13, "0218e": 13, "021651e": 13, "02175e": 13, "02228e": 13, "07146e": 13, "021573363741e": 13, "0076": 13, "204": 13, "0x974a7fba": 13, "86729e": 13, "86675e": 13, "86654e": 13, "8661e": 13, "865344e": 13, "8653e": 13, "866096485614e": 13, "865343669936e": 13, "182": 13, "866096485613789e9": 13, "environ": 14, "pe": 14, "pyomomodel": 14, "concretemodel": 14, "domain": 14, "nonnegativer": 14, "expr": 14, "constraintlist": 14, "qcpdual": 14, "0x15c7a953": 14, "cplex_persist": 14, "xpress_persist": 14, "0x5e67c6e": 14, "0x4a7cfe2b": 14, "0x8a0f9587": 14, "1025": 14, "0x2dfe4e1c": 14, "0x0f0924a1": 14, "96973": 14, "1369560": 14, "835229226": 14, "602828": 14, "5321028307": 14, "ndar": [], "rai": [], "travelingsalesmandgener": 11, "actual": 11, "annot": 11, "tuplelist": 11, "nx": 11, "build_tsp_model_gurobipy_simplifi": 11, "eq_degre": 11, "x_val": 11, "cbgetsolut": 11, "selected_edg": 11, "add_edges_from": 11, "connected_compon": 11, "cut_edg": 11, "append": 11, "regular": 11, "uniqu": 11, "responsbl": 11, "serial": 11, "tupl": 11, "0x9904dd15": [], "8600000e": [], "6185000e": [], "618500000e": [], "112": [], "12482": [], "0xd7027ec2": [], "237500e": [], "6237": [], "6577": [], "6314": [], "6250": [], "6287": [], "6311": [], "232": [], "314000000000e": [], "145": [], "wherea": 11, "necessari": 11, "verifi": 11, "major": 11, "increas": 11, "so": 11, "0xdcf5ae58": [], "29294": [], "618500e": [], "5618": [], "26112": [], "6110": [], "6583": [], "6243": [], "6278": [], "6581": [], "6519": [], "6283": [], "6313": [], "306": [], "223": [], "There": 11, "12411": [], "0x48832a9e": [], "6939": [], "6147": [], "6194": [], "147": [], "172": [], "focus": 11, "cbgetnoderel": 11, "build_stab_model_pyomo": 11, "build_stab_model_jump": 11, "144": [], "141": 11, "170": 11, "build_binpack_model_gurobipi": [3, 8], "build_multiknapsack_model_gurobipi": [3, 6, 8], "build_pmedian_model_gurobipi": [3, 8], "build_uc_model_gurobipi": [3, 8], "490": 8, "190": 8, "build_setpack_model_gurobipi": 8, "238": 8, "677": 8, "build_vertexcover_model_gurobipi": 8, "326": 8}, "objects": {"miplearn.classifiers": [[0, 0, 0, "-", "minprob"], [0, 0, 0, "-", "singleclass"]], "miplearn.classifiers.minprob": [[0, 1, 1, "", "MinProbabilityClassifier"]], "miplearn.classifiers.minprob.MinProbabilityClassifier": [[0, 2, 1, "", "fit"], [0, 2, 1, "", "predict"], [0, 2, 1, "", "set_fit_request"], [0, 2, 1, "", "set_predict_request"]], "miplearn.classifiers.singleclass": [[0, 1, 1, "", "SingleClassFix"]], "miplearn.classifiers.singleclass.SingleClassFix": [[0, 2, 1, "", "fit"], [0, 2, 1, "", "predict"], [0, 2, 1, "", "set_fit_request"], [0, 2, 1, "", "set_predict_request"]], "miplearn.collectors": [[0, 0, 0, "-", "basic"]], "miplearn.collectors.basic": [[0, 1, 1, "", "BasicCollector"]], "miplearn.collectors.basic.BasicCollector": [[0, 2, 1, "", "collect"]], "miplearn.components.primal": [[1, 0, 0, "-", "actions"], [1, 0, 0, "-", "expert"], [1, 0, 0, "-", "indep"], [1, 0, 0, "-", "joint"], [1, 0, 0, "-", "mem"]], "miplearn.components.primal.actions": [[1, 1, 1, "", "EnforceProximity"], [1, 1, 1, "", "FixVariables"], [1, 1, 1, "", "PrimalComponentAction"], [1, 1, 1, "", "SetWarmStart"]], "miplearn.components.primal.actions.EnforceProximity": [[1, 2, 1, "", "perform"]], "miplearn.components.primal.actions.FixVariables": [[1, 2, 1, "", "perform"]], "miplearn.components.primal.actions.PrimalComponentAction": [[1, 2, 1, "", "perform"]], "miplearn.components.primal.actions.SetWarmStart": [[1, 2, 1, "", "perform"]], "miplearn.components.primal.expert": [[1, 1, 1, "", "ExpertPrimalComponent"]], "miplearn.components.primal.expert.ExpertPrimalComponent": [[1, 2, 1, "", "before_mip"], [1, 2, 1, "", "fit"]], "miplearn.components.primal.indep": [[1, 1, 1, "", "IndependentVarsPrimalComponent"]], "miplearn.components.primal.indep.IndependentVarsPrimalComponent": [[1, 2, 1, "", "before_mip"], [1, 2, 1, "", "fit"]], "miplearn.components.primal.joint": [[1, 1, 1, "", "JointVarsPrimalComponent"]], "miplearn.components.primal.joint.JointVarsPrimalComponent": [[1, 2, 1, "", "before_mip"], [1, 2, 1, "", "fit"]], "miplearn.components.primal.mem": [[1, 1, 1, "", "MemorizingPrimalComponent"], [1, 1, 1, "", "MergeTopSolutions"], [1, 1, 1, "", "SelectTopSolutions"], [1, 1, 1, "", "SolutionConstructor"]], "miplearn.components.primal.mem.MemorizingPrimalComponent": [[1, 2, 1, "", "before_mip"], [1, 2, 1, "", "fit"]], "miplearn.components.primal.mem.MergeTopSolutions": [[1, 2, 1, "", "construct"]], "miplearn.components.primal.mem.SelectTopSolutions": [[1, 2, 1, "", "construct"]], "miplearn.components.primal.mem.SolutionConstructor": [[1, 2, 1, "", "construct"]], "miplearn.extractors": [[0, 0, 0, "-", "AlvLouWeh2017"], [0, 0, 0, "-", "fields"]], "miplearn.extractors.AlvLouWeh2017": [[0, 1, 1, "", "AlvLouWeh2017Extractor"]], "miplearn.extractors.AlvLouWeh2017.AlvLouWeh2017Extractor": [[0, 2, 1, "", "get_constr_features"], [0, 2, 1, "", "get_instance_features"], [0, 2, 1, "", "get_var_features"]], "miplearn.extractors.fields": [[0, 1, 1, "", "H5FieldsExtractor"]], "miplearn.extractors.fields.H5FieldsExtractor": [[0, 2, 1, "", "get_constr_features"], [0, 2, 1, "", "get_instance_features"], [0, 2, 1, "", "get_var_features"]], "miplearn": [[2, 0, 0, "-", "h5"], [2, 0, 0, "-", "io"]], "miplearn.h5": [[2, 1, 1, "", "H5File"]], "miplearn.h5.H5File": [[2, 2, 1, "", "close"], [2, 2, 1, "", "get_array"], [2, 2, 1, "", "get_bytes"], [2, 2, 1, "", "get_scalar"], [2, 2, 1, "", "get_sparse"], [2, 2, 1, "", "put_array"], [2, 2, 1, "", "put_bytes"], [2, 2, 1, "", "put_scalar"], [2, 2, 1, "", "put_sparse"]], "miplearn.io": [[2, 3, 1, "", "gzip"], [2, 3, 1, "", "read_pkl_gz"], [2, 3, 1, "", "write_pkl_gz"]], "miplearn.problems": [[3, 0, 0, "-", "binpack"], [3, 0, 0, "-", "multiknapsack"], [3, 0, 0, "-", "pmedian"], [3, 0, 0, "-", "setcover"], [3, 0, 0, "-", "setpack"], [3, 0, 0, "-", "stab"], [3, 0, 0, "-", "tsp"], [3, 0, 0, "-", "uc"], [3, 0, 0, "-", "vertexcover"]], "miplearn.problems.binpack": [[3, 1, 1, "", "BinPackData"], [3, 1, 1, "", "BinPackGenerator"], [3, 3, 1, "", "build_binpack_model_gurobipy"]], "miplearn.problems.binpack.BinPackGenerator": [[3, 2, 1, "", "generate"]], "miplearn.problems.multiknapsack": [[3, 1, 1, "", "MultiKnapsackData"], [3, 1, 1, "", "MultiKnapsackGenerator"], [3, 3, 1, "", "build_multiknapsack_model_gurobipy"]], "miplearn.problems.pmedian": [[3, 1, 1, "", "PMedianData"], [3, 1, 1, "", "PMedianGenerator"], [3, 3, 1, "", "build_pmedian_model_gurobipy"]], "miplearn.problems.setcover": [[3, 1, 1, "", "SetCoverData"]], "miplearn.problems.setpack": [[3, 1, 1, "", "SetPackData"]], "miplearn.problems.stab": [[3, 1, 1, "", "MaxWeightStableSetData"], [3, 1, 1, "", "MaxWeightStableSetGenerator"]], "miplearn.problems.tsp": [[3, 1, 1, "", "TravelingSalesmanData"], [3, 1, 1, "", "TravelingSalesmanGenerator"]], "miplearn.problems.uc": [[3, 1, 1, "", "UnitCommitmentData"], [3, 3, 1, "", "build_uc_model_gurobipy"]], "miplearn.problems.vertexcover": [[3, 1, 1, "", "MinWeightVertexCoverData"]], "miplearn.solvers": [[4, 0, 0, "-", "abstract"], [4, 0, 0, "-", "gurobi"], [4, 0, 0, "-", "learning"]], "miplearn.solvers.abstract": [[4, 1, 1, "", "AbstractModel"]], "miplearn.solvers.abstract.AbstractModel": [[4, 4, 1, "", "WHERE_CUTS"], [4, 4, 1, "", "WHERE_DEFAULT"], [4, 4, 1, "", "WHERE_LAZY"], [4, 2, 1, "", "add_constrs"], [4, 2, 1, "", "extract_after_load"], [4, 2, 1, "", "extract_after_lp"], [4, 2, 1, "", "extract_after_mip"], [4, 2, 1, "", "fix_variables"], [4, 2, 1, "", "lazy_enforce"], [4, 2, 1, "", "optimize"], [4, 2, 1, "", "relax"], [4, 2, 1, "", "set_cuts"], [4, 2, 1, "", "set_warm_starts"], [4, 2, 1, "", "write"]], "miplearn.solvers.gurobi": [[4, 1, 1, "", "GurobiModel"]], "miplearn.solvers.gurobi.GurobiModel": [[4, 2, 1, "", "add_constr"], [4, 2, 1, "", "add_constrs"], [4, 2, 1, "", "extract_after_load"], [4, 2, 1, "", "extract_after_lp"], [4, 2, 1, "", "extract_after_mip"], [4, 2, 1, "", "fix_variables"], [4, 2, 1, "", "optimize"], [4, 2, 1, "", "relax"], [4, 2, 1, "", "set_time_limit"], [4, 2, 1, "", "set_warm_starts"], [4, 2, 1, "", "write"]], "miplearn.solvers.learning": [[4, 1, 1, "", "LearningSolver"]], "miplearn.solvers.learning.LearningSolver": [[4, 2, 1, "", "fit"], [4, 2, 1, "", "optimize"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function", "4": "py:attribute"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"], "4": ["py", "attribute", "Python attribute"]}, "titleterms": {"collector": [0, 5], "extractor": [0, 6], "miplearn": [0, 1, 2, 3, 4, 10], "classifi": 0, "minprob": 0, "singleclass": 0, "basic": [0, 5], "field": [0, 5], "alvlouweh2017": 0, "compon": [1, 7], "primal": [1, 7], "action": [1, 7], "expert": [1, 7], "indep": 1, "joint": [1, 7], "mem": 1, "helper": 2, "io": 2, "h5": 2, "benchmark": [3, 8], "problem": [3, 8, 11, 12, 13, 14], "binpack": 3, "multiknapsack": 3, "pmedian": 3, "setcov": 3, "setpack": 3, "stab": 3, "tsp": 3, "uc": 3, "vertexcov": 3, "solver": [4, 9], "abstract": 4, "gurobi": 4, "learn": [4, 9, 11], "train": [5, 9, 11, 12, 13, 14], "data": [5, 11, 12, 13, 14], "overview": [5, 6, 8], "hdf5": 5, "format": 5, "exampl": [5, 6, 7, 8, 9], "featur": 6, "h5fieldsextractor": 6, "alvlouweh2017extractor": 6, "memor": 7, "independ": 7, "var": 7, "bin": 8, "pack": 8, "formul": 8, "random": 8, "instanc": [8, 9, 11, 12, 13, 14], "gener": [8, 11, 12, 13, 14], "multi": 8, "dimension": 8, "knapsack": 8, "capacit": 8, "p": 8, "median": 8, "set": 8, "cover": 8, "stabl": 8, "travel": [8, 11], "salesman": [8, 11], "unit": 8, "commit": 8, "vertex": 8, "configur": 9, "solv": [9, 11, 12, 13, 14], "new": [9, 11], "complet": 9, "content": 10, "tutori": 10, "user": [10, 11], "guid": 10, "python": 10, "api": 10, "refer": 10, "author": 10, "acknowledg": 10, "cite": 10, "cut": 11, "lazi": 11, "constraint": 11, "The": [], "get": [12, 13, 14], "start": [12, 13, 14], "gurobipi": 12, "introduct": [12, 13, 14], "instal": [12, 13, 14], "model": [11, 12, 13, 14], "simpl": [12, 13, 14], "optim": [12, 13, 14], "test": [12, 13, 14], "access": [12, 13, 14], "solut": [12, 13, 14], "jump": 13, "pyomo": 14}, "envversion": {"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, "nbsphinx": 4, "sphinx": 60}, "alltitles": {"Helpers": [[2, "helpers"]], "miplearn.io": [[2, "module-miplearn.io"]], "miplearn.h5": [[2, "module-miplearn.h5"]], "Example": [[7, "Example"], [5, "Example"], [5, "id1"], [6, "Example"], [6, "id1"], [8, "Example"], [8, "id3"], [8, "id6"], [8, "id9"], [8, "id12"], [8, "id15"], [8, "id18"], [8, "id21"], [8, "id24"]], "Primal Components": [[7, "Primal-Components"]], "Primal component actions": [[7, "Primal-component-actions"]], "Memorizing primal component": [[7, "Memorizing-primal-component"]], "Examples": [[7, "Examples"], [7, "id1"], [7, "id2"]], "Independent vars primal component": [[7, "Independent-vars-primal-component"]], "Joint vars primal component": [[7, "Joint-vars-primal-component"]], "Expert primal component": [[7, "Expert-primal-component"]], "Generating training data": [[12, "Generating-training-data"], [11, "Generating-training-data"], [13, "Generating-training-data"], [14, "Generating-training-data"]], "Getting started (Gurobipy)": [[12, "Getting-started-(Gurobipy)"]], "Introduction": [[12, "Introduction"], [13, "Introduction"], [14, "Introduction"]], "Installation": [[12, "Installation"], [13, "Installation"], [14, "Installation"]], "Modeling a simple optimization problem": [[12, "Modeling-a-simple-optimization-problem"], [13, "Modeling-a-simple-optimization-problem"], [14, "Modeling-a-simple-optimization-problem"]], "Training and solving test instances": [[12, "Training-and-solving-test-instances"], [13, "Training-and-solving-test-instances"], [14, "Training-and-solving-test-instances"]], "Accessing the solution": [[12, "Accessing-the-solution"], [13, "Accessing-the-solution"], [14, "Accessing-the-solution"]], "Collectors & Extractors": [[0, "collectors-extractors"]], "miplearn.classifiers.minprob": [[0, "module-miplearn.classifiers.minprob"]], "miplearn.classifiers.singleclass": [[0, "module-miplearn.classifiers.singleclass"]], "miplearn.collectors.basic": [[0, "module-miplearn.collectors.basic"]], "miplearn.extractors.fields": [[0, "module-miplearn.extractors.fields"]], "miplearn.extractors.AlvLouWeh2017": [[0, "module-miplearn.extractors.AlvLouWeh2017"]], "Components": [[1, "components"]], "miplearn.components.primal.actions": [[1, "module-miplearn.components.primal.actions"]], "miplearn.components.primal.expert": [[1, "module-miplearn.components.primal.expert"]], "miplearn.components.primal.indep": [[1, "module-miplearn.components.primal.indep"]], "miplearn.components.primal.joint": [[1, "module-miplearn.components.primal.joint"]], "miplearn.components.primal.mem": [[1, "module-miplearn.components.primal.mem"]], "Benchmark Problems": [[3, "benchmark-problems"], [8, "Benchmark-Problems"]], "miplearn.problems.binpack": [[3, "module-miplearn.problems.binpack"]], "miplearn.problems.multiknapsack": [[3, "module-miplearn.problems.multiknapsack"]], "miplearn.problems.pmedian": [[3, "module-miplearn.problems.pmedian"]], "miplearn.problems.setcover": [[3, "module-miplearn.problems.setcover"]], "miplearn.problems.setpack": [[3, "module-miplearn.problems.setpack"]], "miplearn.problems.stab": [[3, "module-miplearn.problems.stab"]], "miplearn.problems.tsp": [[3, "module-miplearn.problems.tsp"]], "miplearn.problems.uc": [[3, "module-miplearn.problems.uc"]], "miplearn.problems.vertexcover": [[3, "module-miplearn.problems.vertexcover"]], "Solvers": [[4, "solvers"]], "miplearn.solvers.abstract": [[4, "module-miplearn.solvers.abstract"]], "miplearn.solvers.gurobi": [[4, "module-miplearn.solvers.gurobi"]], "miplearn.solvers.learning": [[4, "module-miplearn.solvers.learning"]], "Training Data Collectors": [[5, "Training-Data-Collectors"]], "Overview": [[5, "Overview"], [6, "Overview"], [8, "Overview"]], "HDF5 Format": [[5, "HDF5-Format"]], "Basic collector": [[5, "Basic-collector"]], "Data fields": [[5, "Data-fields"]], "Feature Extractors": [[6, "Feature-Extractors"]], "H5FieldsExtractor": [[6, "H5FieldsExtractor"]], "AlvLouWeh2017Extractor": [[6, "AlvLouWeh2017Extractor"]], "Learning Solver": [[9, "Learning-Solver"]], "Configuring the solver": [[9, "Configuring-the-solver"]], "Training and solving new instances": [[9, "Training-and-solving-new-instances"], [11, "Training-and-solving-new-instances"]], "Complete example": [[9, "Complete-example"]], "User cuts and lazy constraints": [[11, "User-cuts-and-lazy-constraints"]], "Modeling the traveling salesman problem": [[11, "Modeling-the-traveling-salesman-problem"]], "Learning user cuts": [[11, "Learning-user-cuts"]], "Bin Packing": [[8, "Bin-Packing"]], "Formulation": [[8, "Formulation"], [8, "id1"], [8, "id4"], [8, "id7"], [8, "id10"], [8, "id13"], [8, "id16"], [8, "id19"], [8, "id22"]], "Random instance generator": [[8, "Random-instance-generator"], [8, "id2"], [8, "id5"], [8, "id8"], [8, "id11"], [8, "id14"], [8, "id17"], [8, "id20"], [8, "id23"]], "Multi-Dimensional Knapsack": [[8, "Multi-Dimensional-Knapsack"]], "Capacitated P-Median": [[8, "Capacitated-P-Median"]], "Set cover": [[8, "Set-cover"]], "Set Packing": [[8, "Set-Packing"]], "Stable Set": [[8, "Stable-Set"]], "Traveling Salesman": [[8, "Traveling-Salesman"]], "Unit Commitment": [[8, "Unit-Commitment"]], "Vertex Cover": [[8, "Vertex-Cover"]], "MIPLearn": [[10, "miplearn"]], "Contents": [[10, "contents"]], "Tutorials": [[10, null]], "User Guide": [[10, null]], "Python API Reference": [[10, null]], "Authors": [[10, "authors"]], "Acknowledgments": [[10, "acknowledgments"]], "Citing MIPLearn": [[10, "citing-miplearn"]], "Getting started (JuMP)": [[13, "Getting-started-(JuMP)"]], "Getting started (Pyomo)": [[14, "Getting-started-(Pyomo)"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["api/collectors", "api/components", "api/helpers", "api/problems", "api/solvers", "guide/collectors", "guide/features", "guide/primal", "guide/problems", "guide/solvers", "index", "tutorials/cuts-gurobipy", "tutorials/getting-started-gurobipy", "tutorials/getting-started-jump", "tutorials/getting-started-pyomo"], "filenames": ["api/collectors.rst", "api/components.rst", "api/helpers.rst", "api/problems.rst", "api/solvers.rst", "guide/collectors.ipynb", "guide/features.ipynb", "guide/primal.ipynb", "guide/problems.ipynb", "guide/solvers.ipynb", "index.rst", "tutorials/cuts-gurobipy.ipynb", "tutorials/getting-started-gurobipy.ipynb", "tutorials/getting-started-jump.ipynb", "tutorials/getting-started-pyomo.ipynb"], "titles": ["11. Collectors & Extractors", "12. Components", "14. Helpers", "10. Benchmark Problems", "13. Solvers", "6. Training Data Collectors", "7. Feature Extractors", "8. Primal Components", "5. Benchmark Problems", "9. Learning Solver", "MIPLearn", "4. User cuts and lazy constraints", "2. Getting started (Gurobipy)", "3. Getting started (JuMP)", "1. Getting started (Pyomo)"], "terms": {"class": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "minprobabilityclassifi": [0, 7, 9], "base_clf": [0, 1, 7, 9], "type": [0, 1, 4, 5, 6, 8, 9, 11, 12, 13, 14], "ani": [0, 1, 2, 4, 5, 7, 8, 12, 13, 14], "threshold": [0, 1, 7, 9], "list": [0, 1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 14], "float": [0, 1, 4, 5, 12, 14], "clone_fn": [0, 1, 7], "callabl": [0, 1, 4], "function": [0, 1, 5, 6, 7, 8, 11, 12, 13, 14], "clone": [0, 1, 7], "base": [0, 1, 2, 4, 6, 7, 10, 12, 13, 14], "baseestim": 0, "meta": [0, 7], "return": [0, 1, 6, 7, 8, 9, 11, 12, 13, 14], "nan": 0, "predict": [0, 1, 7, 11, 12, 13, 14], "made": [0, 7], "have": [0, 3, 5, 6, 8, 11, 12, 13, 14], "probabl": [0, 3, 7, 8, 12, 13, 14], "below": [0, 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "given": [0, 4, 5, 6, 7, 8, 11, 12, 13, 14], "more": [0, 3, 5, 6, 7, 8, 11, 12, 13, 14], "specif": [0, 3, 5, 6, 7, 8, 10, 12, 13, 14], "thi": [0, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "call": [0, 8, 9, 11, 12, 13], "predict_proba": [0, 7], "compar": [0, 5, 7, 11], "result": [0, 3, 8], "against": 0, "provid": [0, 1, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14], "If": [0, 3, 7, 8, 10, 11, 12, 13, 14], "one": [0, 1, 3, 7, 8, 11, 12, 13, 14], "i": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "abov": [0, 1, 3, 5, 7, 8, 11, 12, 13, 14], "its": [0, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "otherwis": [0, 1, 5, 6, 7], "fit": [0, 1, 4, 7, 9, 11, 12, 13, 14], "x": [0, 3, 5, 7, 8, 9, 11, 12, 13, 14], "ndarrai": [0, 1, 2, 3, 4, 11], "y": [0, 3, 5, 7, 8, 9, 11, 12, 13, 14], "none": [0, 1, 2, 4, 11], "set_fit_request": 0, "bool": [0, 2, 3, 4], "str": [0, 1, 2, 3, 4, 5, 11, 12, 14], "unchang": 0, "request": [0, 10, 12, 13, 14], "metadata": [0, 5], "pass": 0, "method": [0, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14], "note": [0, 3, 6, 7, 8, 11, 12, 13, 14], "onli": [0, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14], "relev": [0, 6], "enable_metadata_rout": 0, "true": [0, 3, 5, 6, 8, 9, 10, 11], "see": [0, 7, 8, 11, 12, 13, 14], "sklearn": [0, 7, 9, 11, 12, 13, 14], "set_config": 0, "pleas": [0, 8, 12, 13, 14], "user": [0, 3, 6, 7, 8, 9, 12, 13, 14], "guid": [0, 12, 13, 14], "how": [0, 5, 7, 8, 11, 12, 13, 14], "rout": [0, 8, 11], "mechan": 0, "work": [0, 8, 9, 10, 11, 12, 13, 14], "The": [0, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "option": [0, 1], "each": [0, 1, 3, 6, 7, 8, 9, 11, 12, 13, 14], "paramet": [0, 3, 7, 8, 9, 11, 12, 14], "ar": [0, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "ignor": 0, "fals": [0, 2, 3, 4, 8], "estim": [0, 7], "rais": 0, "an": [0, 6, 7, 8, 10, 11, 12, 13, 14], "error": [0, 5], "should": [0, 1, 6, 8, 11, 12, 13, 14], "alia": 0, "instead": [0, 3, 7, 8, 11, 14], "origin": [0, 5, 12, 13, 14], "name": [0, 4, 5, 11, 12], "default": [0, 3, 4, 8, 9], "util": [0, 12, 13, 14], "metadata_rout": 0, "retain": 0, "exist": [0, 8], "allow": [0, 5, 6, 7, 9, 12, 13, 14], "you": [0, 6, 8, 10, 13], "chang": [0, 8, 11, 12, 13, 14], "some": [0, 3, 5, 6, 7, 8, 11, 12, 13, 14], "other": [0, 5, 6, 7, 8, 11, 12, 13, 14], "new": [0, 3, 5, 6, 7, 8, 10, 12, 13, 14], "version": [0, 5, 8, 9, 10, 11, 12, 13, 14], "1": [0, 1, 2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "3": [0, 5, 6, 7, 8, 9, 11, 12, 13, 14], "us": [0, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "sub": 0, "e": [0, 5, 6, 7, 8, 11, 12, 13, 14], "g": [0, 5, 7, 8, 12, 13, 14], "insid": [0, 11], "pipelin": 0, "ha": [0, 3, 4, 6, 7, 8, 11], "effect": [0, 11], "self": 0, "updat": 0, "object": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14], "set_predict_request": 0, "singleclassfix": [0, 7, 9], "logist": [0, 7, 8], "regress": [0, 7], "issu": [0, 6, 7, 12, 13, 14], "dataset": [0, 7, 11], "contain": [0, 7, 8, 11, 12, 13, 14], "singl": [0, 1, 5, 7, 12, 13, 14], "fix": [0, 3, 7, 8, 9, 12, 13, 14], "train": [0, 1, 6, 7, 8, 10], "data": [0, 3, 6, 7, 8, 9, 10], "alwai": [0, 7], "basiccollector": [0, 5, 6, 9, 11, 12, 13, 14], "skip_lp": [0, 4], "write_mp": 0, "collect": [0, 5, 6, 7, 8, 9, 11, 12, 13, 14], "filenam": [0, 2, 4, 5, 11], "build_model": [0, 4, 9], "n_job": [0, 2, 5, 6, 9, 11, 14], "int": [0, 1, 2, 3, 11, 12, 13, 14], "progress": [0, 2], "verbos": [0, 11], "h5fieldsextractor": [0, 7, 10, 11, 12, 13, 14], "instance_field": [0, 6, 7, 11, 12, 13, 14], "var_field": [0, 6], "constr_field": [0, 6], "featuresextractor": [0, 1], "get_constr_featur": [0, 6], "h5": [0, 4, 5, 6, 11, 12, 13, 14], "h5file": [0, 2, 4, 5, 6], "get_instance_featur": [0, 6], "get_var_featur": [0, 6], "alvlouweh2017extractor": [0, 7, 9, 10], "with_m1": 0, "with_m2": 0, "with_m3": 0, "comput": [0, 1, 6, 7, 10, 11, 12, 14], "static": [0, 4, 6], "variabl": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "featur": [0, 4, 5, 7, 9, 10], "describ": [0, 3, 5, 6, 7, 8, 9, 11], "alvarez": [0, 6], "A": [0, 6, 7, 12, 14], "m": [0, 3, 6, 8, 11], "louveaux": [0, 6], "q": 0, "wehenkel": [0, 6], "l": 0, "2017": [0, 6], "machin": [0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "learn": [0, 5, 6, 7, 8, 10, 12, 13, 14], "approxim": [0, 6], "strong": [0, 6, 11], "branch": [0, 5, 6, 11], "inform": [0, 5, 6, 10, 11], "journal": [0, 6, 8, 10], "29": [0, 6, 8], "185": [0, 6, 8], "195": [0, 6], "enforceproxim": [1, 7], "tol": 1, "primalcomponentact": 1, "perform": [1, 5, 6, 7, 8, 10, 11, 12, 13, 14], "model": [1, 3, 4, 5, 6, 7, 8, 9, 10], "abstractmodel": [1, 4], "var_nam": [1, 4], "var_valu": [1, 4], "stat": [1, 3, 4, 5, 6, 8, 9, 11, 12, 14], "dict": [1, 4], "fixvari": [1, 7], "abc": [1, 4], "abstract": [1, 6, 12, 13, 14], "setwarmstart": [1, 7, 9, 12, 13, 14], "expertprimalcompon": [1, 7], "before_mip": 1, "test_h5": 1, "train_h5": 1, "independentvarsprimalcompon": [1, 7, 9], "extractor": [1, 7, 9, 10, 11, 12, 13, 14], "jointvarsprimalcompon": [1, 7], "clf": [1, 7, 11, 12, 13, 14], "memorizingprimalcompon": [1, 7, 12, 13, 14], "constructor": [1, 3, 7, 9, 12, 13, 14], "solutionconstructor": 1, "memor": [1, 10, 12, 13, 14], "all": [1, 3, 5, 6, 7, 8, 9, 12, 13, 14], "solut": [1, 4, 5, 6, 7, 8, 9, 10, 11], "seen": [1, 7], "dure": [1, 7, 8, 11, 12, 13, 14], "classifi": [1, 7, 9, 12, 13, 14], "which": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "solver": [1, 5, 7, 8, 10, 11, 12, 13, 14], "combin": [1, 3, 7, 8, 10], "multipl": [1, 5, 7, 8, 9, 12, 13, 14], "partial": [1, 5, 7, 12, 13, 14], "mergetopsolut": [1, 7, 12, 13, 14], "k": [1, 3, 6, 7, 8, 12, 13, 14], "warm": [1, 7, 9, 12, 13, 14], "start": [1, 7, 8, 9, 10, 11], "construct": [1, 7, 9, 12, 13, 14], "strategi": [1, 7, 9, 11, 12, 13, 14], "first": [1, 3, 5, 7, 8, 10, 11, 12, 13, 14], "select": [1, 7, 8, 11], "top": [1, 5, 7], "merg": [1, 7, 12, 13, 14], "them": [1, 6, 7, 8, 11, 12, 13, 14], "To": [1, 3, 7, 8, 9, 11, 12, 13, 14], "mean": [1, 7], "optim": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11], "valu": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "decis": [1, 5, 6, 7, 8, 9, 11, 12, 13, 14], "set": [1, 3, 5, 6, 7, 9, 10, 11, 12, 13, 14], "zero": [1, 7, 11], "0": [1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "ii": [1, 5, 6, 7, 8, 9], "iii": [1, 6, 9], "leav": 1, "free": [1, 6, 7], "y_proba": 1, "selecttopsolut": [1, 7], "gzip": [2, 5, 12, 14], "read_pkl_gz": [2, 11, 12, 14], "write_pkl_gz": [2, 5, 6, 9, 11, 12, 14], "obj": [2, 5, 8, 9, 11, 12, 13, 14], "dirnam": 2, "prefix": [2, 5], "mode": [2, 3, 13], "r": [2, 5, 8, 9, 11, 12, 14], "close": [2, 7, 12, 13, 14], "get_arrai": [2, 5], "kei": [2, 5], "get_byt": 2, "byte": 2, "bytearrai": 2, "get_scalar": [2, 5], "get_spars": [2, 5], "coo_matrix": 2, "put_arrai": [2, 5], "put_byt": [2, 5], "put_scalar": [2, 5], "put_spars": [2, 5], "binpackdata": 3, "size": [3, 6, 7, 8, 11], "capac": [3, 8], "bin": [3, 10, 13], "pack": [3, 10], "numpi": [3, 5, 6, 8, 9, 11, 12, 14], "item": [3, 8], "binpackgener": [3, 8], "n": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "rv_frozen": 3, "sizes_jitt": [3, 8], "capacity_jitt": [3, 8], "fix_item": [3, 8], "random": [3, 5, 6, 9, 11, 12, 13, 14], "instanc": [3, 5, 6, 7, 10], "gener": [3, 5, 6, 7, 9, 10], "sampl": [3, 8, 12, 13, 14], "distribut": [3, 8, 12, 13, 14], "decid": [3, 7, 8, 12, 13, 14], "respect": [3, 5, 6, 7, 8, 12, 13, 14], "number": [3, 5, 6, 8, 9, 11, 12, 13, 14], "independ": [3, 6, 8, 10, 11], "creat": [3, 5, 6, 7, 8, 11], "refer": [3, 6, 8], "previous": [3, 5, 6, 7, 8, 10, 12, 13, 14], "addit": [3, 8, 9, 11, 12, 13, 14], "perturb": [3, 8, 11], "s_i": [3, 8], "gamma_i": [3, 8], "where": [3, 7, 8, 12, 13, 14], "th": [3, 7, 8], "from": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "similarli": [3, 8], "b": [3, 5, 8], "beta": [3, 8], "remain": [3, 5, 6, 7, 8, 9], "same": [3, 6, 7, 8, 11], "across": [3, 7, 8], "appli": [3, 6, 7, 8, 9, 12, 13, 14], "complet": [3, 6, 7, 8, 10, 11], "differ": [3, 7, 8, 9, 11, 12, 13, 14], "n_sampl": 3, "build_binpack_model": [], "gurobimodel": [3, 4, 11, 12], "convert": [3, 6, 11, 12, 13, 14], "concret": [3, 12, 13, 14], "gurobipi": [3, 10, 11, 13, 14], "multiknapsackdata": 3, "price": [3, 5, 8], "weight": [3, 8, 11], "multi": [3, 5, 6, 10], "dimension": [3, 5, 6, 10], "knapsack": [3, 6, 10], "matrix": [3, 5, 6, 8, 9, 11, 12, 13, 14], "multiknapsackgener": [3, 6, 8], "scipi": [3, 5, 6, 8, 9, 11, 12, 14], "_distn_infrastructur": 3, "rv_discrete_frozen": 3, "w": [3, 5, 6, 8, 9, 12], "u": [3, 6, 8, 10, 12, 13, 14], "rv_continuous_frozen": 3, "alpha": [3, 6, 8], "fix_w": [3, 6, 8], "w_jitter": [3, 6, 8], "p_jitter": [3, 6, 8], "round": [3, 5, 6, 8, 9, 11], "constraint": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14], "specifi": [3, 6, 7, 8, 9, 11], "j": [3, 7, 8, 11], "alpha_j": 3, "sum": [3, 8, 12, 13, 14], "rang": [3, 8, 9, 11, 12, 13, 14], "tight": [3, 8], "ratio": [3, 8], "make": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "challeng": [3, 8, 12, 13, 14], "cost": [3, 5, 6, 7, 8, 12, 13, 14], "linearli": [3, 8], "correl": [3, 7, 8], "averag": [3, 7, 8], "u_i": 3, "coeffici": [3, 4, 5, 6, 8, 9, 11, 12, 13, 14], "multipli": [3, 8], "onc": [3, 8, 9, 11], "entir": [3, 5, 6, 7, 8, 11, 12, 13, 14], "kept": [3, 8], "also": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14], "impli": [3, 8], "although": [3, 5, 8, 12, 13, 14], "deriv": [3, 6, 8, 11], "long": [3, 8], "constant": [3, 5, 7, 8], "still": [3, 7, 8, 11, 12, 13, 14], "ident": [3, 8], "gamma": [3, 5, 8, 9, 11], "when": [3, 5, 7, 8, 9, 12, 13, 14], "argument": [3, 7, 8, 9], "mai": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "roughli": [3, 8], "exactli": [3, 8, 11, 12, 13, 14], "calcul": [3, 8], "By": [3, 8, 9, 12, 13, 14], "nearest": [3, 7, 8, 12, 13, 14], "integ": [3, 4, 5, 8, 9, 10, 11, 12, 13, 14], "disabl": [3, 8, 9], "rv_discret": 3, "rv_continu": 3, "profit": 3, "boolean": 3, "minu": 3, "nois": 3, "ad": [3, 5, 11, 14], "build_multiknapsack_model": [], "pmediandata": 3, "distanc": [3, 7, 8, 11], "demand": [3, 8, 12, 13, 14], "p": [3, 10, 12, 13, 14], "capacit": [3, 10], "median": [3, 10], "between": [3, 6, 7, 8, 11, 12, 13, 14], "custom": [3, 8, 9], "facil": [3, 8], "need": [3, 5, 6, 8, 9, 11, 12, 13, 14], "chosen": [3, 8], "pmediangener": [3, 8], "distances_jitt": [3, 8], "demands_jitt": [3, 8], "capacities_jitt": [3, 8], "Then": [3, 7, 8], "build": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "geograph": [3, 8], "locat": [3, 5, 8, 11], "xi": 3, "yi": 3, "For": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "final": [3, 7, 8, 11, 12, 13, 14], "euclidean": [3, 8], "factor": [3, 8], "slightli": [3, 8, 11], "coordin": 3, "point": [3, 5, 12, 13, 14], "scale": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14], "build_pmedian_model": [], "setcoverdata": 3, "incidence_matrix": [3, 8], "setpackdata": 3, "maxweightstablesetdata": 3, "graph": [3, 8, 11], "networkx": [3, 11], "maxweightstablesetgener": [3, 8], "fix_graph": [3, 8], "maximum": [3, 8, 11], "stabl": [3, 5, 10, 11], "two": [3, 6, 7, 8, 11, 12, 13, 14], "oper": [3, 8, 12, 13, 14], "erd\u0151": [3, 8], "r\u00e9nyi": [3, 8], "g_": [3, 8], "w_v": [3, 8], "wai": [3, 7, 8], "travelingsalesmandata": [3, 11], "n_citi": [3, 11], "travelingsalesmangener": [3, 5, 8, 9, 11], "fix_citi": [3, 5, 8, 9, 11], "travel": [3, 5, 9, 10], "salesman": [3, 5, 9, 10], "unitcommitmentdata": [3, 12, 13, 14], "min_pow": [3, 8], "max_pow": [3, 8], "min_uptim": [3, 8], "min_downtim": [3, 8], "cost_startup": [3, 8], "cost_prod": [3, 8], "cost_fix": [3, 8], "build_uc_model": [12, 13, 14], "unit": [3, 9, 10, 11, 12, 13, 14], "commit": [3, 10, 12, 13, 14], "accord": 3, "equat": 3, "5": [3, 5, 6, 8, 11, 12, 13, 14], "bendotti": [3, 8], "fouilhoux": [3, 8], "rottner": [3, 8], "c": [3, 5, 8, 12, 13, 14], "min": [3, 5, 8, 11, 12, 13, 14], "up": [3, 5, 8, 9, 11, 12, 13, 14], "down": [3, 5, 8], "polytop": [3, 8], "comb": [3, 8], "36": [3, 8], "1024": [3, 8], "1058": [3, 8], "2018": [3, 8], "http": [3, 8, 10], "doi": [3, 8, 10], "org": [3, 8, 10], "10": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "1007": [3, 8], "s10878": [3, 8], "018": [3, 8], "0273": [3, 8], "minweightvertexcoverdata": 3, "where_cut": 4, "cut": [4, 8, 9, 10, 12, 14], "where_default": 4, "where_lazi": 4, "lazi": [4, 8, 9, 10], "add_constr": [4, 11], "constrs_lh": 4, "constrs_sens": 4, "constrs_rh": 4, "extract_after_load": 4, "extract_after_lp": 4, "extract_after_mip": 4, "fix_vari": 4, "lazy_enforc": [4, 11], "violat": [4, 11], "relax": [4, 5, 6, 8, 9, 11, 12, 13, 14], "set_cut": 4, "set_warm_start": 4, "write": [4, 5, 12, 13, 14], "inner": [4, 11, 12, 13, 14], "lazy_separ": [4, 11], "cuts_separ": [4, 11], "cuts_enforc": [4, 11], "constr": 4, "just": [4, 5, 12, 13, 14], "been": [4, 6, 7, 8, 11], "load": [4, 5, 7, 8, 9, 12, 13, 14], "extract": [4, 5, 6, 7], "problem": [4, 5, 6, 7, 9, 10], "etc": [4, 12, 13, 14], "linear": [4, 5, 6, 8, 10, 12, 13, 14], "program": [4, 10, 11, 12, 13, 14], "solv": [4, 5, 6, 7, 10], "dynam": 4, "lp": [4, 5, 6], "basi": [4, 5], "statu": [4, 5], "mix": [4, 5, 8, 10, 11, 12, 13, 14], "mip": [4, 5, 7, 8, 9, 10, 12, 13, 14], "set_time_limit": 4, "time_limit_sec": 4, "learningsolv": [4, 9, 11, 12, 13, 14], "compon": [4, 6, 9, 10, 11, 12, 13, 14], "data_filenam": 4, "step": [5, 6, 8, 9, 12, 13, 14], "assist": 5, "supervis": [5, 6], "larg": [5, 7, 8, 10, 12, 13, 14], "raw": [5, 6], "In": [5, 6, 7, 8, 9, 11, 12, 13, 14], "section": [5, 7, 8], "we": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "variou": [5, 6, 7, 8, 9], "includ": [5, 7, 8, 9, 10, 11], "miplearn": [5, 6, 7, 8, 9, 11, 12, 13, 14], "addition": [5, 11], "framework": [5, 6, 7, 9, 10, 11, 12, 13, 14], "follow": [5, 7, 8, 9, 10, 11, 12, 13, 14], "convent": [5, 7, 8, 10], "store": [5, 6, 8, 11, 12, 13, 14], "file": [5, 6, 7, 8, 9, 11, 12, 13, 14], "briefli": [5, 7], "rational": 5, "choos": [5, 7, 11], "analyz": 5, "later": 5, "take": [5, 6, 7, 10, 11], "input": [5, 6, 11, 12, 13, 14], "pickl": [5, 12, 14], "end": [5, 7, 8, 12, 13, 14], "pkl": [5, 9, 11, 12, 14], "gz": [5, 9, 11, 12, 13, 14], "build_tsp_model": 5, "after": [5, 8, 11, 12, 13, 14], "process": [5, 6, 7, 8, 9, 11, 12, 13, 14], "done": [5, 6], "alongsid": 5, "veri": [5, 7, 8, 10, 11, 12, 13, 14], "time": [5, 6, 7, 8, 9, 11, 12, 13, 14], "consum": [5, 6, 8], "thei": [5, 6, 7], "potenti": [5, 7, 8, 11, 12, 13, 14], "hierarch": 5, "hdf": 5, "wa": [5, 8, 9, 11, 12, 13, 14], "develop": [5, 6, 10, 12, 13, 14], "nation": [5, 10], "center": [5, 8], "supercomput": 5, "applic": [5, 7, 8, 11], "ncsa": 5, "organ": 5, "amount": [5, 8, 12, 13, 14], "support": [5, 7, 10, 11, 14], "varieti": [5, 8], "string": [5, 13], "arrai": 5, "csv": 5, "json": [5, 11], "sqlite": 5, "sever": 5, "advantag": [5, 7, 10], "storag": 5, "scalar": 5, "vector": [5, 6, 13], "matric": [5, 6, 8], "relat": [5, 12, 13, 14], "easier": [5, 8, 12, 13, 14], "transfer": 5, "high": [5, 6, 7, 8, 9, 10, 11, 13], "o": 5, "read": [5, 7, 11], "element": [5, 8], "without": [5, 6, 7, 8, 11], "memori": [5, 12, 13, 14], "begin": [5, 7, 8, 11, 12, 13, 14], "dramat": 5, "improv": [5, 6], "reduc": [5, 6, 11, 14], "requir": [5, 6, 7, 11, 12, 13, 14], "especi": [5, 7], "import": [5, 6, 7, 8, 9, 11, 12, 14], "On": [5, 9], "fly": 5, "compress": [5, 12, 13, 14], "can": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "transpar": 5, "acceler": [5, 6, 10, 11, 12, 13, 14], "network": [5, 7, 8], "portabl": 5, "well": [5, 8, 12, 13, 14], "typic": [5, 6, 7, 8, 10], "expens": 5, "ensur": [5, 6, 8, 12, 13, 14], "usabl": 5, "futur": [5, 12, 13, 14], "even": [5, 7, 12, 13, 14], "non": [5, 8, 9, 11, 12, 14], "python": [5, 11, 12, 13, 14], "ml": [5, 7, 8, 9, 10, 11, 12, 13, 14], "current": [5, 7, 8, 9, 11, 12, 13, 14], "simpl": [5, 6, 7, 8, 11], "numer": [5, 8], "advanc": [5, 10, 11, 12, 13, 14], "librari": [5, 8], "h5py": 5, "conveni": [5, 11], "access": 5, "less": [5, 7, 8], "prone": 5, "built": 5, "dens": 5, "spars": 5, "arbitrari": 5, "binari": [5, 7, 8, 9, 11, 12, 13, 14], "correspond": 5, "get": [5, 10], "pure": [5, 10], "automat": [5, 10, 11], "check": [5, 6, 7], "show": [5, 12, 13, 14], "usag": [5, 6, 7, 9, 11, 12, 13, 14], "np": [5, 6, 8, 9, 11, 12, 14], "seed": [5, 6, 8, 9, 11, 12, 13, 14], "reproduc": [5, 6, 8, 9, 11], "42": [5, 6, 8, 9, 11, 12, 13, 14], "empti": [5, 8, 11], "test": [5, 9, 11], "x1": [5, 6], "x2": [5, 6], "hello": 5, "world": [5, 8, 12, 13, 14], "x3": [5, 6], "2": [5, 6, 7, 8, 9, 11, 12, 13, 14], "x4": 5, "rand": [5, 13], "x5": 5, "re": 5, "open": [5, 6, 8, 12, 13, 14], "print": [5, 6, 8, 11, 12, 14], "37454012": 5, "9507143": 5, "7319939": 5, "5986585": 5, "15601864": 5, "15599452": 5, "05808361": 5, "8661761": 5, "601115": 5, "6803075671195984": 5, "4504992663860321": 5, "4": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "013264961540699005": 5, "9422017335891724": 5, "5632882118225098": 5, "38541650772094727": 5, "015966251492500305": 5, "2308938205242157": 5, "24102546274662018": 5, "6832635402679443": 5, "6099966764450073": 5, "83319491147995": 5, "most": [5, 6, 7, 8, 11, 12, 13, 14], "fundament": 5, "right": [5, 7, 8, 12, 13, 14], "hand": [5, 6, 11, 12, 13, 14], "side": [5, 12, 13, 14], "easili": [5, 6, 7, 9], "effici": [5, 8], "rebuild": 5, "invok": 5, "sensit": 5, "among": 5, "along": 5, "statist": [5, 8, 9, 11, 12, 13, 14], "explor": [5, 8, 9, 11, 12, 13, 14], "node": [5, 6, 8, 9, 11, 12, 13, 14], "wallclock": 5, "phase": 5, "static_": 5, "lp_": 5, "mip_": 5, "shown": [5, 7, 8, 11, 12, 13, 14], "tabl": 5, "descript": [5, 6], "static_constr_lh": 5, "nconstr": 5, "nvar": 5, "left": [5, 7, 8, 12, 13, 14], "static_constr_nam": 5, "static_constr_rh": [5, 6, 12, 13, 14], "static_constr_sens": 5, "sens": [5, 6, 12, 13, 14], "static_obj_offset": 5, "static_sens": 5, "minim": [5, 8, 12, 13, 14], "max": [5, 8, 11, 12, 13, 14], "static_var_lower_bound": 5, "lower": [5, 7], "bound": [5, 6, 8, 9, 11, 12, 13, 14], "static_var_nam": 5, "static_var_obj_coeff": [5, 6, 7, 11], "static_var_typ": 5, "continu": [5, 8, 9, 11, 12, 13, 14], "static_var_upper_bound": 5, "upper": 5, "lp_constr_basis_statu": 5, "lp_constr_dual_valu": [5, 6], "dual": [5, 6, 9, 11, 12, 14], "shadow": 5, "lp_constr_sa_rhs_": 5, "rh": [5, 6, 8, 9, 11, 12, 13, 14], "lp_constr_slack": [5, 6], "slack": [5, 6], "lp_obj_valu": [5, 6], "lp_var_basis_statu": 5, "superbas": 5, "lp_var_reduced_cost": [5, 6], "lp_var_sa_": 5, "ub": 5, "lb": 5, "_": [5, 12, 13, 14], "lp_var_valu": [5, 6], "lp_wallclock_tim": 5, "taken": 5, "second": [5, 7, 8, 9, 11, 12, 13, 14], "mip_constr_slack": 5, "best": [5, 7, 8, 9, 11, 12, 13, 14], "mip_gap": 5, "rel": [5, 6, 7, 8], "gap": [5, 8, 9, 11, 12, 13, 14], "mip_node_count": 5, "mip_obj_bound": 5, "mip_obj_valu": 5, "mip_var_valu": 5, "mip_wallclock_tim": 5, "few": [5, 8, 9, 11, 12, 13, 14], "run": [5, 6, 8, 11, 12, 13, 14], "screen": 5, "uniform": [5, 6, 8, 9, 11, 12, 13, 14], "randint": [5, 6, 8, 9, 11], "glob": [5, 6], "tsp": [5, 8, 9, 11], "build_tsp_model_gurobipi": [5, 8, 9, 11], "io": [5, 6, 9, 11, 12, 14], "low": [5, 6, 8, 9, 11], "11": [5, 6, 8, 9, 11], "loc": [5, 6, 8, 9, 11, 12, 14], "1000": [5, 6, 8, 9, 11, 12, 13, 14], "90": [5, 8, 9], "20": [5, 6, 8, 9, 11, 12, 13, 14], "save": [5, 9], "00000": [5, 6, 8, 9, 11, 12, 13, 14], "00001": [5, 9, 12, 13, 14], "four": [5, 7], "parallel": [5, 11], "bc": [5, 9, 11, 12, 13, 14], "2909": 5, "2921": [5, 8], "previou": [6, 7, 8, 9, 11], "page": [6, 7, 9], "introduc": [6, 8, 9], "collector": [6, 9, 10, 11, 12, 14], "hdf5": [6, 7, 9, 10, 11, 12, 13, 14], "order": [6, 7, 8], "becaus": [6, 8, 11, 12, 13, 14], "help": 6, "complex": [6, 7, 12, 13, 14], "format": [6, 10, 12, 13, 14], "research": [6, 8, 10], "propos": 6, "absolut": [6, 8], "invari": 6, "transform": 6, "amen": 6, "treat": 6, "separ": 6, "cycl": 6, "often": [6, 7, 8, 11, 12, 13, 14], "therefor": [6, 8, 11], "focu": 6, "filter": [6, 7], "represent": [6, 11], "much": [6, 7, 11, 12, 13, 14], "faster": [6, 12, 13, 14], "experi": 6, "resolv": [6, 8], "implement": [6, 7, 9, 10, 11, 12, 13, 14], "featureextractor": 6, "produc": [6, 8, 9, 11, 12, 13, 14], "either": [6, 7, 10, 12, 13, 14], "particular": [6, 8, 10], "subset": [6, 7, 8, 9], "known": 6, "alreadi": [6, 7, 11, 12, 13, 14], "avail": [6, 7, 8, 9, 11, 12, 13, 14], "assembl": 6, "field": [6, 7, 8, 10, 11, 12, 14], "shape": 6, "demonstr": [6, 12, 13, 14], "randomli": [6, 8], "shutil": 6, "rmtree": 6, "basic": [6, 9, 10, 11, 12, 13, 14], "multiknapsack": [6, 8], "ignore_error": 6, "6": [6, 8, 9, 11, 12, 13, 14], "100": [6, 7, 8, 11, 12, 13, 14], "25": [6, 7, 8, 9, 11, 12, 13, 14], "95": [6, 8, 9], "75": [6, 7, 8, 13], "ext": 6, "": [6, 7, 8, 10, 11], "1531": 6, "24308771": 6, "350": [6, 8], "692": [6, 8], "454": [6, 8], "709": [6, 8], "605": [6, 8], "543": [6, 8], "321": [6, 8], "674": [6, 8], "571": [6, 8], "341": [6, 8], "53124309e": 6, "03": [6, 8, 9, 11, 12, 13, 14], "50000000e": 6, "02": [6, 8, 9, 11, 12, 13, 14], "00000000e": 6, "00": [6, 8, 9, 11, 12, 13, 14], "9": [6, 8, 11, 12, 13, 14], "43468018e": 6, "01": [6, 8, 9, 11, 12, 13, 14], "92000000e": 6, "51703322e": 6, "54000000e": 6, "8": [6, 8, 11, 12, 13, 14], "25504150e": 6, "7": [6, 8, 11, 12, 13, 14], "09000000e": 6, "11373022e": 6, "05000000e": 6, "26055283e": 6, "43000000e": 6, "68693771e": 6, "21000000e": 6, "07488781e": 6, "74000000e": 6, "82293701e": 6, "71000000e": 6, "41129074e": 6, "41000000e": 6, "28830120e": 6, "3100000e": 6, "5978307e": 6, "0000000e": 6, "8800000e": 6, "2881632e": 6, "0040000e": 6, "0601316e": 6, "2690000e": 6, "3659772e": 6, "0070000e": 6, "8800571e": 6, "warn": [6, 8, 11, 12, 13, 14], "illustr": [6, 7, 9, 11, 12, 13, 14], "while": [6, 7, 8, 9, 11], "would": [6, 7], "vari": 6, "unabl": 6, "concaten": 6, "tree": [6, 11], "mimick": 6, "40": [6, 8, 9, 12, 13, 14], "out": [6, 12, 13, 14], "64": [6, 8], "outsid": 6, "defint": 6, "design": [6, 8, 12, 13, 14], "irrelev": 6, "row": [6, 8, 9, 11, 12, 13, 14], "column": [6, 8, 9, 11, 12, 13, 14], "permut": 6, "paper": 6, "alvlouweh2017": [6, 7, 9], "00e": [6, 8, 9, 11, 12, 13, 14], "75e": 6, "10e": 6, "30e": 6, "40e": 6, "80e": 6, "70e": 6, "60e": 6, "alejandro": 6, "marco": 6, "theoret": [6, 7], "synergi": 6, "2016": 6, "univers": [6, 8], "li\u00e8g": 6, "quentin": 6, "loui": 6, "assign": [7, 8, 12, 13, 14], "qualiti": [7, 10], "benefici": 7, "prune": 7, "portion": 7, "search": 7, "space": [7, 8], "altern": 7, "proof": [7, 12], "doubl": 7, "feasibl": [7, 8, 10, 11], "both": [7, 11, 12, 13, 14], "pattern": [7, 10, 12, 13, 14], "emploi": [7, 8], "highli": 7, "configur": [7, 8, 10, 11], "accept": [7, 8, 9, 12, 13, 14], "depend": 7, "whether": [7, 12, 13, 14], "befor": [7, 11, 12, 13, 14], "present": 7, "themselv": 7, "discuss": [7, 9, 12, 13, 14], "three": [7, 9, 12, 13, 14], "approach": [7, 10], "benefit": [7, 8, 10], "limit": [7, 8, 11, 12, 13, 14], "main": [7, 9, 10], "maintain": 7, "guarante": 7, "signific": [7, 10, 11, 12, 13, 14], "abl": [7, 8, 10, 11, 12, 13, 14], "possibl": 7, "case": [7, 12, 13, 14], "evalu": [7, 8], "discard": 7, "infeas": [7, 8], "ones": [7, 11, 12, 13, 14], "proce": [7, 12, 14], "disadvantag": 7, "next": [7, 8, 11, 12, 13, 14], "modest": 7, "speedup": 7, "mani": [7, 8, 11], "accur": 7, "restrict": [7, 8, 9, 11, 12, 14], "small": [7, 11, 12, 13, 14], "fraction": [7, 11, 12, 13, 14], "find": [7, 8, 10, 11, 12, 13, 14], "scratch": 7, "lose": 7, "found": [7, 8, 9, 11, 12, 13, 14], "longer": 7, "global": 7, "suffici": 7, "might": 7, "were": [7, 8, 10], "third": [7, 8], "tri": 7, "strike": 7, "balanc": 7, "enforc": [7, 8, 11], "proxim": 7, "precis": 7, "bar": 7, "_1": 7, "ldot": [7, 8, 12, 13, 14], "_n": 7, "x_1": 7, "x_n": 7, "add": [7, 11, 13, 14], "sum_": [7, 8, 12, 13, 14], "_i": [7, 12, 13, 14], "x_i": [7, 8, 12, 13, 14], "leq": [7, 8, 12, 13, 14], "defin": [7, 11, 12, 13, 14], "indic": [7, 8, 12, 13, 14], "deviat": 7, "suggest": [7, 12, 13, 14], "toler": [7, 8, 9, 11, 12, 13, 14], "Its": 7, "lead": 7, "smaller": 7, "larger": [7, 11, 12, 13, 14], "distinct": 7, "try": 7, "infer": 7, "those": 7, "like": 7, "good": [7, 8, 12, 13, 14], "promis": 7, "variat": [7, 8], "fact": 7, "let": [7, 8, 12, 13, 14], "i_1": 7, "i_n": 7, "i_": 7, "expect": 7, "through": [7, 8, 11, 12, 13, 14], "scikit": [7, 13], "score": 7, "delta_i": 7, "higher": 7, "highest": 7, "suppos": [7, 12, 13, 14], "regressor": 7, "sequenc": [7, 11], "appear": 7, "ti": 7, "being": [7, 8], "broken": 7, "arbitrarili": 7, "keep": [7, 8, 12, 13, 14], "i_k": 7, "x_l": 7, "tild": 7, "_l": 7, "frac": [7, 8], "i_j": 7, "y_j": [7, 8], "text": [7, 8, 12, 13, 14], "le": 7, "theta_0": 7, "ge": [7, 8], "theta_1": 7, "squar": [7, 8, 11], "undefin": 7, "meant": 7, "simpler": 7, "literatur": 7, "post": 7, "dummyclassifi": 7, "anoth": 7, "similar": [7, 8, 11, 12, 13, 14], "itself": [7, 11, 12, 13, 14], "kneighborsclassifi": [7, 11, 12, 13, 14], "cours": 7, "dummi": 7, "neighbor": [7, 11, 12, 13, 14], "mem": [7, 11, 12, 14], "dummyextractor": 7, "comp1": [7, 9], "1_000_000": 7, "closest": 7, "assum": [7, 8, 10, 11, 12, 13, 14], "comp2": [7, 9], "n_neighbor": [7, 11, 12, 13, 14], "comp3": [7, 9], "natur": 7, "directli": [7, 11], "novel": 7, "never": 7, "observ": [7, 10], "jointli": 7, "x_j": [7, 8], "copi": 7, "1_j": 7, "n_j": 7, "label": 7, "aris": [7, 8], "practic": [7, 8, 11, 12, 13, 14], "certain": [7, 10], "frequent": [7, 8, 12, 13, 14], "pose": 7, "standard": [7, 12, 13, 14], "sinc": 7, "do": [7, 11, 13], "wrapper": [7, 12, 13, 14], "It": [7, 8, 9, 11, 12, 13, 14], "reliabl": 7, "accuraci": 7, "situat": [7, 8, 12, 13, 14], "confid": 7, "purpos": [7, 8, 12, 13, 14], "ask": [7, 8, 11], "eras": 7, "whose": [7, 8], "suitabl": [7, 8], "handl": [7, 12, 13, 14], "overrid": 7, "linear_model": [7, 9], "logisticregress": [7, 9], "minprob": [7, 9], "singleclass": [7, 9], "indep": [7, 9], "than": [7, 8], "99": [7, 8], "comp": [7, 12, 13, 14], "subsect": 7, "straightforwad": 7, "simpli": [7, 11], "feed": 7, "forward": 7, "neural": 7, "indeped": 7, "common": 7, "multioutput": 7, "chain": [7, 8], "alon": 7, "plu": 7, "classifierchain": 7, "neural_network": 7, "mlpclassifi": 7, "feedforward": 7, "spend": [7, 12, 13, 14], "effort": [7, 11], "tweak": 7, "usual": [7, 8, 12, 13, 14], "idea": 7, "what": [7, 8, 11], "impact": 7, "simplifi": [7, 11, 12, 13, 14], "task": [7, 8], "benchmark": [7, 10], "pre": 7, "miplib": 8, "tsplib": 8, "shortcom": 8, "howev": [8, 11, 12, 13, 14], "enhanc": [8, 10], "hundr": 8, "thousand": 8, "magnitud": 8, "homogen": 8, "buch": 8, "tackl": 8, "wide": 8, "classic": 8, "techniqu": [8, 10, 11], "measur": [8, 11], "As": 11, "nine": 8, "customiz": 8, "flexibl": [8, 9], "divers": 8, "characterist": 8, "belong": 8, "algorithm": 8, "subject": [8, 12, 13, 14], "your": [8, 10, 12, 13, 14], "written": 8, "exponenti": 8, "mp": [8, 12, 13, 14], "trial": 8, "primal": [8, 9, 10, 11, 12, 14], "combinatori": 8, "finit": 8, "indivis": 8, "hard": 8, "warehous": 8, "manag": 8, "determin": 8, "transport": 8, "equal": [8, 12, 13, 14], "everi": [8, 11], "pair": [8, 11], "x_": 8, "ij": 8, "align": [8, 12, 13, 14], "foral": 8, "y_i": [8, 12, 13, 14], "binpack": 8, "ten": 8, "47": 8, "26": [8, 12, 13, 14], "19": [8, 11], "52": 8, "14": [8, 9], "65": 8, "21": [8, 11, 12, 13, 14], "76": 8, "82": 8, "16": [8, 9, 11, 13], "96": 8, "102": 8, "24": 8, "69": [8, 11], "22": 8, "78": [8, 11], "17": 8, "81": [8, 11], "83": 8, "12": [8, 11, 14], "67": 8, "46": 8, "05": 8, "13": [8, 12, 13, 14], "66": [8, 11, 13], "18": [8, 11], "08": [8, 12, 13, 14], "93": [8, 11], "41": [8, 9], "55": 8, "15": [8, 9, 11, 12, 13, 14], "89": 8, "59": 8, "51": [8, 11], "68": [8, 11], "62": 8, "92": 8, "94": 8, "23": 8, "85": 8, "107": [8, 11], "77": [8, 11], "79": [8, 11], "06": [8, 12, 13, 14], "44": 8, "28": [8, 9, 11, 12, 14], "98": 8, "43": 8, "104": 8, "58": [8, 11], "87": 8, "74": 8, "61": 8, "07": [8, 12, 13, 14], "37": 8, "91": 8, "57": 8, "56": [8, 9, 12], "97": 8, "09": [8, 12, 13, 14], "licens": [8, 9, 11, 12, 13, 14], "product": [8, 9, 11, 12, 13, 14], "expir": [8, 9, 11, 12, 14], "2024": [8, 9, 10, 11, 12, 14], "gurobi": [8, 9, 10, 11, 12, 13, 14], "v10": [8, 9, 11, 12, 13, 14], "3rc0": [8, 9, 11, 12, 14], "linux64": [8, 9, 11, 12, 13, 14], "cpu": [8, 9, 11, 12, 13, 14], "13th": [8, 9, 11, 12, 14], "gen": [8, 9, 11, 12, 14], "intel": [8, 9, 11, 12, 14], "core": [8, 9, 11, 12, 13, 14], "tm": [8, 9, 11, 12, 14], "i7": [8, 9, 11, 12, 14], "13800h": [8, 9, 11, 12, 14], "instruct": [8, 9, 11, 12, 13, 14], "sse2": [8, 9, 11, 12, 13, 14], "avx": [8, 9, 11, 12, 13, 14], "avx2": [8, 9, 11, 12, 13, 14], "thread": [8, 9, 11, 12, 13, 14], "count": [8, 9, 11, 12, 13, 14], "physic": [8, 9, 11, 12, 13, 14], "logic": [8, 9, 11, 12, 13, 14], "processor": [8, 9, 11, 12, 13, 14], "110": [8, 9], "210": 8, "nonzero": [8, 9, 11, 12, 13, 14], "fingerprint": [8, 9, 11, 12, 13, 14], "0x1ff9913f": 8, "1e": [8, 9, 11, 12, 13, 14], "heurist": [8, 11, 12, 13, 14], "0000000": [8, 11, 12, 13, 14], "presolv": [8, 9, 11, 12, 13, 14], "root": [8, 9, 11, 12, 13, 14], "274844e": 8, "38": 8, "iter": [8, 9, 11, 12, 13, 14], "expl": [8, 9, 11, 12, 13, 14], "unexpl": [8, 9, 11, 12, 13, 14], "depth": [8, 9, 11, 12, 13, 14], "intinf": [8, 9, 11, 12, 13, 14], "incumb": [8, 9, 11, 12, 13, 14], "bestbd": [8, 9, 11, 12, 13, 14], "27484": 8, "h": [8, 11, 12, 13, 14], "simplex": [8, 9, 11, 12, 13, 14], "04": [8, 9, 11, 12, 13, 14], "000000000000e": 8, "0000": [8, 9, 11, 12, 13, 14], "involv": [8, 9], "place": 8, "total": [8, 12, 13, 14], "maxim": 8, "exceed": 8, "repres": [8, 11], "resourc": 8, "must": [8, 11], "satisfi": 8, "p_j": 8, "w_": 8, "b_i": 8, "alpha_i": 8, "u_j": 8, "gamma_": 8, "frevil": 8, "arnaud": 8, "g\u00e9rard": 8, "plateau": 8, "preprocess": 8, "procedur": [8, 11, 12, 13, 14], "multidimension": 8, "discret": [8, 10], "mathemat": [8, 12, 13, 14], "49": 8, "1994": 8, "189": 8, "212": 8, "fr\u00e9vill": 8, "european": 8, "155": 8, "2004": 8, "five": 8, "around": [8, 12, 13, 14], "392": 8, "977": 8, "764": [8, 13], "622": 8, "158": 8, "163": 8, "840": 8, "574": 8, "696": 8, "948": 8, "860": 8, "209": 8, "178": 8, "184": 8, "293": 8, "541": 8, "414": 8, "305": 8, "629": 8, "135": 8, "278": 8, "378": 8, "466": 8, "803": 8, "205": 8, "492": 8, "584": 8, "45": [8, 9], "630": 8, "173": 8, "907": 8, "947": 8, "794": 8, "312": 8, "711": 8, "439": 8, "117": 8, "506": 8, "35": [8, 11, 13], "915": 8, "266": 8, "662": 8, "516": 8, "521": 8, "1310": 8, "988": 8, "1004": 8, "1269": 8, "50": [8, 9, 11, 12, 13, 14], "0xaf3ac15": 8, "2e": [8, 9, 11, 12, 13, 14], "3e": [8, 12, 14], "7e": [8, 12, 13, 14], "804": 8, "remov": [8, 11, 12, 13, 14], "34": 8, "428726e": 8, "1428": 8, "7265": 8, "1279": 8, "000000": [8, 11], "plane": [8, 9, 11, 12, 14], "No": 8, "better": 8, "279000000000e": 8, "serv": 8, "goal": 8, "suppli": 8, "d_i": 8, "furthermor": 8, "c_j": 8, "pmedian": 8, "100x100": 8, "250": 8, "32": [8, 13], "33": 8, "86": 8, "88": [8, 12], "72": 8, "80": 8, "39": [8, 9, 12], "71": 8, "70": [8, 12, 13, 14], "30": [8, 12, 13, 14], "73": 8, "101": 8, "63": 8, "54": 8, "111": 8, "27": 8, "151": 8, "237": 8, "241": 8, "202": 8, "171": 8, "220": 8, "0x8d8d9346": 8, "5e": 8, "4e": [8, 9], "368": 8, "7900000": 8, "245": 8, "6400000": 8, "000000e": [8, 9, 11, 12, 14], "64000": 8, "1900000": 8, "148": 8, "6300000": 8, "14595": 8, "113": 8, "1800000": 8, "84": 8, "18000": 8, "5000000": 8, "3900000": 8, "9800000": 8, "28872": 8, "31": 8, "98000": 8, "9200000": 8, "06884": 8, "92000": 8, "2300000": 8, "23000": 8, "123000000000e": 8, "aim": 8, "overlap": 8, "real": [8, 12, 13, 14], "scenario": 8, "schedul": [8, 11], "alloc": 8, "s_1": 8, "s_m": 8, "union": [8, 12, 14], "w_j": 8, "s_j": 8, "geq": [8, 12, 13, 14], "setcovergener": 8, "n_element": 8, "n_set": 8, "incid": 8, "densiti": 8, "d": [8, 12, 13, 14], "entri": 8, "bernoulli": 8, "least": 8, "identifi": [8, 10, 11], "uniformli": 8, "modifi": 8, "denot": [8, 12, 13, 14], "fix_set": 8, "costs_jitt": 8, "setcov": 8, "build_setcover_model_gurobipi": 8, "interv": 8, "1044": 8, "850": 8, "1014": 8, "944": 8, "697": 8, "971": 8, "213": 8, "425": 8, "0xe5c2d4fa": 8, "4900000": 8, "134900000000e": 8, "disjoint": 8, "within": 8, "airlin": [8, 11], "flight": 8, "crew": 8, "setpackgener": 8, "detail": [8, 11], "document": 8, "setpack": 8, "build_setpack_model": [], "0x4ee91388": 8, "1265": 8, "560000": 8, "1986": 8, "986370000000e": 8, "theori": 8, "vertic": 8, "adjac": [8, 11], "simultan": [8, 12, 13, 14], "conflict": 8, "v": 8, "undirect": 8, "x_v": 8, "x_u": 8, "recal": [8, 11], "edg": [8, 11], "probabilti": 8, "stab": 8, "build_stab_model_gurobipi": [8, 11], "60": [8, 11, 12, 13, 14], "48": 8, "precrush": [8, 9, 11], "0x3240ea4a": 8, "6e": [8, 12, 13, 14], "219": 8, "1400000": 8, "205650e": 8, "14000": 8, "191400000000e": 8, "callback": [8, 9, 11, 12, 13], "299": 8, "sec": [8, 9, 11, 12, 13], "citi": [8, 11], "shortest": [8, 11], "visit": [8, 11], "hamiltonian": [8, 11], "path": [8, 11, 12, 13, 14], "karp": [8, 11], "deliveri": [8, 11], "truck": [8, 11], "d_e": 8, "x_e": 8, "delta": 8, "subsetneq": 8, "neq": 8, "emptyset": 8, "extrem": 8, "setminu": 8, "inequ": 8, "initi": [8, 11, 12, 13, 14], "d_": 8, "sqrt": 8, "1000x1000": 8, "box": 8, "513": 8, "762": 8, "358": 8, "325": 8, "374": 8, "932": 8, "731": 8, "391": 8, "634": 8, "726": 8, "765": 8, "754": 8, "409": 8, "719": 8, "446": 8, "400": 8, "780": 8, "756": 8, "744": 8, "656": 8, "383": 8, "334": 8, "549": 8, "925": 8, "702": 8, "422": 8, "728": 8, "663": 8, "526": 8, "708": [8, 12], "377": 8, "462": 8, "1072": 8, "802": 8, "501": 8, "853": 8, "654": 8, "603": 8, "433": 8, "381": 8, "255": 8, "287": 8, "493": 8, "900": 8, "354": 8, "323": 8, "367": 8, "841": 8, "727": 8, "444": 8, "668": 8, "690": 8, "687": 8, "175": 8, "725": 8, "398": 8, "666": 8, "827": 8, "736": 8, "371": [8, 12, 13], "317": 8, "570": 8, "1090": 8, "712": 8, "648": 8, "655": 8, "650": 8, "356": 8, "469": 8, "1146": 8, "779": 8, "476": 8, "752": 8, "681": 8, "565": [8, 12, 14], "394": 8, "286": 8, "274": 8, "lazyconstraint": [8, 9, 11], "0x719675e5": 8, "921000e": 8, "921000000000e": 8, "106": 8, "power": [8, 10, 12, 13, 14], "turn": [8, 12, 13, 14], "off": 8, "meet": 8, "electr": [8, 12, 13, 14], "lowest": 8, "ramp": 8, "prevent": 8, "output": [8, 13], "level": [8, 11], "too": 8, "quickli": 8, "minimum": 8, "switch": 8, "system": [8, 10, 12, 13, 14], "plan": 8, "doe": [8, 11, 12, 13, 14], "trajectori": 8, "piecewis": 8, "curv": 8, "transmiss": 8, "secur": 8, "realist": [8, 12, 13, 14], "unitcommit": 8, "jl": 8, "t": 8, "d_t": 8, "mw": [8, 12, 13, 14], "max_g": 8, "min_g": 8, "l_g": 8, "regardless": 8, "var": [8, 10, 12, 13, 14], "gt": 8, "p_": 8, "_g": 8, "gk": 8, "cannot": [8, 14], "symmetr": 8, "fourth": 8, "period": 8, "fifth": 8, "sixth": 8, "quantiti": 8, "unitcommitmentgener": 8, "n_unit": 8, "n_period": 8, "valid": 8, "rather": 8, "startup": 8, "peak": 8, "4c": 8, "8c": 8, "cost_jitt": 8, "demand_jitt": 8, "fix_unit": 8, "uc": [8, 12, 13, 14], "450": [8, 11, 12, 13, 14], "10_000": 8, "1_000": 8, "f": [8, 11], "271": 8, "207": 8, "218": 8, "477": [8, 12], "379": 8, "319": 8, "120": 8, "3042": 8, "5247": 8, "4319": 8, "2912": 8, "6118": 8, "53": 8, "199": 8, "514": 8, "592": 8, "607": 8, "905": 8, "1166": 8, "1212": 8, "1127": 8, "953": 8, "796": 8, "783": 8, "866": 8, "768": 8, "899": 8, "946": 8, "1087": 8, "1048": 8, "992": 8, "750": 8, "691": 8, "606": 8, "658": 8, "809": 8, "2458": 8, "6200": 8, "4585": 8, "2666": 8, "4783": 8, "196": 8, "416": 8, "626": 8, "981": 8, "1095": 8, "1102": 8, "1088": 8, "863": 8, "848": 8, "761": 8, "828": 8, "775": 8, "834": 8, "959": 8, "865": 8, "1193": 8, "985": 8, "893": 8, "962": 8, "781": 8, "723": 8, "639": 8, "602": 8, "787": 8, "578": 8, "360": 8, "2128": 8, "0x4dc1c661": 8, "240": 8, "244": 8, "131": 8, "229": 8, "842": 8, "116": 8, "440662": 8, "46430": 8, "429461": 8, "97680": 8, "374043": 8, "64040": 8, "361348e": 8, "142": 8, "336134": 8, "820": 8, "640": 8, "368600": 8, "14450": 8, "364721": 8, "76610": 8, "cutoff": [8, 9], "766": 8, "gomori": [8, 11, 12, 14], "cliqu": 8, "222": [8, 11], "mir": [8, 11, 12, 14], "flow": [8, 12, 14], "rlt": 8, "lift": 8, "234": 8, "364722": 8, "374044": 8, "647217661000e": 8, "connect": 8, "bioinformat": 8, "w_g": 8, "minweightvertexcovergener": 8, "behav": 8, "vertexcov": 8, "build_vertexcover_model": [], "0x2d2d1390": 8, "301": 8, "995750e": 8, "010000000000e": 8, "individu": [9, 12, 13, 14], "integr": 9, "aforement": 9, "cohes": 9, "whole": 9, "conclud": 9, "runnabl": 9, "compos": 9, "target": 9, "part": [9, 11], "architectur": 9, "enabl": 9, "equival": 9, "tradit": 9, "sequenti": 9, "could": [9, 12, 13, 14], "achiev": [9, 12, 13, 14], "dictionari": [9, 11], "train_data": [9, 11, 12, 13, 14], "test_data": [9, 11, 12, 13, 14], "action": [9, 10, 12, 13, 14], "all_data": 9, "split": 9, "0x6ddcd141": 9, "inf": [9, 11, 12, 14], "3600000e": 9, "700000e": [9, 11], "7610000e": 9, "761000000e": 9, "0x74ca3d0a": 9, "2796": 9, "761000e": 9, "2761": 9, "796000000000e": 9, "extens": 10, "state": [10, 12, 13, 14], "art": [10, 12, 13, 14], "cplex": [10, 11, 12, 13, 14], "xpress": [10, 11, 12, 13, 14], "unlik": [10, 11], "prove": 10, "full": 10, "happen": 10, "famili": 10, "redund": 10, "pyomo": [10, 11, 12, 13], "jump": [10, 11, 12, 14], "overview": 10, "cover": [10, 12, 14], "vertex": 10, "joint": 10, "expert": 10, "exampl": [10, 11, 12, 13, 14], "helper": 10, "alinson": 10, "xavier": 10, "argonn": 10, "laboratori": 10, "feng": 10, "qiu": 10, "xiaoyi": 10, "gu": 10, "georgia": 10, "institut": 10, "technologi": 10, "berkai": 10, "becu": 10, "santanu": 10, "dei": 10, "upon": 10, "direct": 10, "ldrd": 10, "fund": 10, "director": 10, "offic": 10, "scienc": 10, "depart": 10, "energi": 10, "grid": [10, 12, 13, 14], "kindli": 10, "packag": [10, 11, 12, 13, 14], "zenodo": 10, "2023": [], "5281": 10, "4287567": 10, "shabbir": 10, "ahm": 10, "2020": 10, "1287": 10, "ijoc": 10, "0976": 10, "tighten": 11, "region": 11, "elimin": 11, "thu": 11, "formul": [11, 12, 13, 14], "omit": 11, "success": 11, "tutori": [11, 12, 13, 14], "subtour": 11, "correctli": 11, "instal": 11, "compat": [11, 12, 13, 14], "julia": [11, 12, 13, 14], "sourc": [11, 12, 13, 14], "code": [11, 12, 13, 14], "build_tsp_model_pyomo": 11, "build_tsp_model_jump": 11, "gurobi_persist": [11, 14], "pr": 11, "persist": [11, 14], "welcom": [11, 12, 13, 14], "scip": 11, "glpk": 11, "cbc": 11, "newer": [11, 12, 13, 14], "further": 11, "becom": 11, "log": [11, 12, 13, 14], "basicconfig": 11, "getlogg": 11, "setlevel": 11, "critic": [], "memorizingcutscompon": [], "expertcutscompon": [], "expertlazycompon": [], "memorizinglazycompon": 11, "500": [11, 12, 13, 14], "info": 11, "225": [], "1225": 11, "2450": 11, "0x04d7bec1": 11, "0600000e": 11, "5880000e": 11, "588000000e": 11, "ahead": 11, "6091": 11, "0x09bd34d6": 11, "29853": 11, "139000e": 11, "6139": 11, "6390": 11, "6165": 11, "50000": 11, "6198": 11, "6219": 11, "half": 11, "219000000000e": 11, "143": 8, "aot": [], "0x77a94572": 11, "29695": 11, "588000e": 11, "5588": 11, "27241": 11, "5898": 11, "6066": 11, "6128": 11, "6368": 11, "6154": 11, "75000": 11, "6204": 11, "224": 11, "togeth": [12, 13, 14], "broader": [12, 14], "earli": [12, 13, 14], "stage": [12, 13, 14], "bug": [12, 13, 14], "submit": [12, 13, 14], "report": [12, 13, 14], "our": [11, 12, 13, 14], "github": [12, 13, 14], "repositori": [12, 13, 14], "comment": [12, 13, 14], "pull": [12, 13, 14], "languag": [12, 13, 14], "offici": [12, 13, 14], "websit": [12, 13, 14], "pip": [12, 14], "commerci": [12, 13, 14], "milp": [12, 13, 14], "demo": [12, 14], "possibli": [12, 13, 14], "incompat": [12, 13, 14], "releas": [12, 13, 14], "recommend": [11, 12, 13, 14], "project": [12, 13, 14], "simplif": [12, 13, 14], "daili": [12, 13, 14], "compani": [12, 13, 14], "onlin": [12, 13, 14], "hour": [12, 13, 14], "dai": [12, 13, 14], "own": [12, 13, 14], "g_1": [12, 13, 14], "g_n": [12, 13, 14], "offlin": [12, 13, 14], "g_i": [12, 13, 14], "megawatt": [12, 13, 14], "noth": [12, 13, 14], "quad": [12, 13, 14], "hold": [11, 12, 13, 14], "dataclass": [11, 12, 14], "pmin": [12, 13, 14], "pmax": [12, 13, 14], "cfix": [12, 13, 14], "cvar": [12, 13, 14], "structur": [12, 13, 14], "gp": [11, 12], "grb": [11, 12], "quicksum": [11, 12], "def": [11, 12, 14], "isinst": [11, 12, 14], "len": [11, 12, 14], "_x": 12, "addvar": [11, 12], "vtype": [11, 12], "_y": 12, "setobject": [11, 12], "addconstr": [11, 12], "At": [12, 13, 14], "700": [12, 13, 14], "600": [12, 13, 14], "objval": 12, "0x58dfdd53": 12, "1400": [12, 13, 14], "035000e": [12, 13, 14], "1035": [12, 13, 14], "1105": [12, 13, 14], "71429": [12, 13, 14], "1320": [12, 13, 14], "320000000000e": [12, 13, 14], "thin": [12, 13, 14], "agnost": [11, 12, 13, 14], "control": [12, 13, 14], "queri": [11, 12, 13, 14], "consist": 12, "slower": [12, 13, 14], "upfront": [12, 13, 14], "histor": [12, 13, 14], "random_uc_data": [12, 13, 14], "100_000": [12, 13, 14], "400_000": [12, 14], "rv": [12, 14], "simplic": [12, 13, 14], "now": [12, 13, 14], "impract": [12, 13, 14], "export": [12, 13, 14], "With": [12, 13, 14], "agre": [12, 13, 14], "unanim": [12, 13, 14], "solver_ml": [12, 13, 14], "1001": [12, 13, 14], "2500": [12, 13, 14], "0xa8b70287": 12, "6166537e": [12, 14], "648803e": [12, 14], "2906219e": [12, 14], "290621916e": [12, 14], "0xcf27855a": [], "29153e": [12, 14], "290622e": [12, 14], "512": [12, 14], "2906e": [12, 14], "2915e": [12, 14], "2907e": [12, 14], "291528276179e": [12, 14], "290733258025e": [12, 14], "0096": [12, 14], "482": [], "examin": [12, 13, 14], "line": [12, 13, 14], "repeat": [12, 13, 14], "solver_baselin": [12, 13, 14], "0x4cbbf7c7": 12, "757128e": [12, 14], "7571e": [12, 14], "298273e": [12, 14], "2983e": [12, 14], "293980e": [12, 14], "2940e": [12, 14], "2908e": [12, 14], "291465e": 14, "1031": [], "29147e": 14, "29398e": 14, "29827e": 14, "75713e": [12, 14], "291465302389e": 14, "290781665333e": 14, "0082": 14, "miss": [12, 13, 14], "had": [12, 13, 14], "significantli": [12, 13, 14], "inferior": [12, 13, 14], "intern": [12, 13, 14], "almost": [12, 13, 14], "term": [12, 13, 14], "0x19042f12": 12, "5917580e": [12, 14], "627453e": [12, 14], "2535968e": [12, 14], "253596777e": [12, 14], "0xf97cde91": [], "25814e": [12, 14], "25512e": [12, 14], "25483e": 14, "25459e": 14, "253597e": [12, 14], "2536e": [12, 14], "2546e": 14, "2537e": [12, 14], "2538e": 14, "strongcg": 14, "575": 14, "254590409970e": 14, "253768093811e": 14, "0100": 14, "8254590409": 14, "969726": [], "935662": [12, 14], "0949262811": [12, 14], "1604270": [12, 14], "0218116897": [12, 14], "launch": 13, "repl": 13, "enter": 13, "pkg": 13, "pycal": 13, "suppressor": 13, "cleaner": 13, "replac": [13, 14], "struct": 13, "float64": 13, "jld2": 13, "isa": 13, "read_jld2": 13, "length": 13, "eq_max_pow": [13, 14], "eq_min_pow": [13, 14], "eq_demand": [13, 14], "jumpmodel": 13, "objective_valu": 13, "1rc0": 13, "amd": 13, "ryzen": 13, "7950x": 13, "avx512": 13, "0x55e33a07": 13, "0e": 13, "500_000": 13, "125": 13, "00002": 13, "write_jld2": 13, "451": 13, "suppress_out": 13, "knn": 13, "pyimport": 13, "0xd2378195": 13, "02165e": 13, "021568e": 13, "510": 13, "0216e": 13, "0217e": 13, "021651058978e": 13, "021567971257e": 13, "0081": 13, "169": 13, "0xb45c0594": 13, "071463e": 13, "0715e": 13, "025162e": 13, "0252e": 13, "023090e": 13, "022335e": 13, "022281e": 13, "021753e": 13, "021752e": 13, "0218e": 13, "021651e": 13, "02175e": 13, "02228e": 13, "07146e": 13, "021573363741e": 13, "0076": 13, "204": 13, "0x974a7fba": 13, "86729e": 13, "86675e": 13, "86654e": 13, "8661e": 13, "865344e": 13, "8653e": 13, "866096485614e": 13, "865343669936e": 13, "182": 13, "866096485613789e9": 13, "environ": 14, "pe": 14, "pyomomodel": 14, "concretemodel": 14, "domain": 14, "nonnegativer": 14, "expr": 14, "constraintlist": 14, "qcpdual": 14, "0x15c7a953": 14, "cplex_persist": 14, "xpress_persist": 14, "0x5e67c6e": 14, "0x4a7cfe2b": 14, "0x8a0f9587": 14, "1025": 14, "0x2dfe4e1c": 14, "0x0f0924a1": 14, "96973": 14, "1369560": 14, "835229226": 14, "602828": 14, "5321028307": 14, "ndar": [], "rai": [], "travelingsalesmandgener": 11, "actual": 11, "annot": 11, "tuplelist": 11, "nx": 11, "build_tsp_model_gurobipy_simplifi": 11, "eq_degre": 11, "x_val": 11, "cbgetsolut": 11, "selected_edg": 11, "add_edges_from": 11, "connected_compon": 11, "cut_edg": 11, "append": 11, "regular": 11, "uniqu": 11, "responsbl": 11, "serial": 11, "tupl": 11, "0x9904dd15": [], "8600000e": [], "6185000e": [], "618500000e": [], "112": [], "12482": [], "0xd7027ec2": [], "237500e": [], "6237": [], "6577": [], "6314": [], "6250": [], "6287": [], "6311": [], "232": 12, "314000000000e": [], "145": [], "wherea": 11, "necessari": 11, "verifi": 11, "major": 11, "increas": 11, "so": 11, "0xdcf5ae58": [], "29294": [], "618500e": [], "5618": [], "26112": [], "6110": [], "6583": [], "6243": [], "6278": [], "6581": [], "6519": [], "6283": [], "6313": [], "306": [], "223": [], "There": 11, "12411": [], "0x48832a9e": [], "6939": [], "6147": [], "6194": [], "147": [], "172": [], "focus": 11, "cbgetnoderel": 11, "build_stab_model_pyomo": 11, "build_stab_model_jump": 11, "144": [], "141": 11, "170": 11, "build_binpack_model_gurobipi": [3, 8], "build_multiknapsack_model_gurobipi": [3, 6, 8], "build_pmedian_model_gurobipi": [3, 8], "build_uc_model_gurobipi": [3, 8], "490": 8, "190": 8, "build_setpack_model_gurobipi": 8, "238": 8, "677": 8, "build_vertexcover_model_gurobipi": 8, "326": 8, "0x892e56b2": 12, "193": 12, "292131e": 12, "132": 12, "292121e": 12, "133": 12, "216": 12, "136": 12, "291918e": 12, "2909e": 12, "291664e": 12, "233": 12, "1577": 12, "29166e": 12, "29192e": 12, "29212e": 12, "291663722826e": 12, "290885027548e": 12, "0094": 12, "0x6926c32f": 12, "2551e": 12, "25508e": 12, "25499e": 12, "25448e": 12, "2545e": 12, "515": 12, "254479145594e": 12, "253689731796e": 12, "203": 12, "8254479145": 12, "594168": 12}, "objects": {"miplearn.classifiers": [[0, 0, 0, "-", "minprob"], [0, 0, 0, "-", "singleclass"]], "miplearn.classifiers.minprob": [[0, 1, 1, "", "MinProbabilityClassifier"]], "miplearn.classifiers.minprob.MinProbabilityClassifier": [[0, 2, 1, "", "fit"], [0, 2, 1, "", "predict"], [0, 2, 1, "", "set_fit_request"], [0, 2, 1, "", "set_predict_request"]], "miplearn.classifiers.singleclass": [[0, 1, 1, "", "SingleClassFix"]], "miplearn.classifiers.singleclass.SingleClassFix": [[0, 2, 1, "", "fit"], [0, 2, 1, "", "predict"], [0, 2, 1, "", "set_fit_request"], [0, 2, 1, "", "set_predict_request"]], "miplearn.collectors": [[0, 0, 0, "-", "basic"]], "miplearn.collectors.basic": [[0, 1, 1, "", "BasicCollector"]], "miplearn.collectors.basic.BasicCollector": [[0, 2, 1, "", "collect"]], "miplearn.components.primal": [[1, 0, 0, "-", "actions"], [1, 0, 0, "-", "expert"], [1, 0, 0, "-", "indep"], [1, 0, 0, "-", "joint"], [1, 0, 0, "-", "mem"]], "miplearn.components.primal.actions": [[1, 1, 1, "", "EnforceProximity"], [1, 1, 1, "", "FixVariables"], [1, 1, 1, "", "PrimalComponentAction"], [1, 1, 1, "", "SetWarmStart"]], "miplearn.components.primal.actions.EnforceProximity": [[1, 2, 1, "", "perform"]], "miplearn.components.primal.actions.FixVariables": [[1, 2, 1, "", "perform"]], "miplearn.components.primal.actions.PrimalComponentAction": [[1, 2, 1, "", "perform"]], "miplearn.components.primal.actions.SetWarmStart": [[1, 2, 1, "", "perform"]], "miplearn.components.primal.expert": [[1, 1, 1, "", "ExpertPrimalComponent"]], "miplearn.components.primal.expert.ExpertPrimalComponent": [[1, 2, 1, "", "before_mip"], [1, 2, 1, "", "fit"]], "miplearn.components.primal.indep": [[1, 1, 1, "", "IndependentVarsPrimalComponent"]], "miplearn.components.primal.indep.IndependentVarsPrimalComponent": [[1, 2, 1, "", "before_mip"], [1, 2, 1, "", "fit"]], "miplearn.components.primal.joint": [[1, 1, 1, "", "JointVarsPrimalComponent"]], "miplearn.components.primal.joint.JointVarsPrimalComponent": [[1, 2, 1, "", "before_mip"], [1, 2, 1, "", "fit"]], "miplearn.components.primal.mem": [[1, 1, 1, "", "MemorizingPrimalComponent"], [1, 1, 1, "", "MergeTopSolutions"], [1, 1, 1, "", "SelectTopSolutions"], [1, 1, 1, "", "SolutionConstructor"]], "miplearn.components.primal.mem.MemorizingPrimalComponent": [[1, 2, 1, "", "before_mip"], [1, 2, 1, "", "fit"]], "miplearn.components.primal.mem.MergeTopSolutions": [[1, 2, 1, "", "construct"]], "miplearn.components.primal.mem.SelectTopSolutions": [[1, 2, 1, "", "construct"]], "miplearn.components.primal.mem.SolutionConstructor": [[1, 2, 1, "", "construct"]], "miplearn.extractors": [[0, 0, 0, "-", "AlvLouWeh2017"], [0, 0, 0, "-", "fields"]], "miplearn.extractors.AlvLouWeh2017": [[0, 1, 1, "", "AlvLouWeh2017Extractor"]], "miplearn.extractors.AlvLouWeh2017.AlvLouWeh2017Extractor": [[0, 2, 1, "", "get_constr_features"], [0, 2, 1, "", "get_instance_features"], [0, 2, 1, "", "get_var_features"]], "miplearn.extractors.fields": [[0, 1, 1, "", "H5FieldsExtractor"]], "miplearn.extractors.fields.H5FieldsExtractor": [[0, 2, 1, "", "get_constr_features"], [0, 2, 1, "", "get_instance_features"], [0, 2, 1, "", "get_var_features"]], "miplearn": [[2, 0, 0, "-", "h5"], [2, 0, 0, "-", "io"]], "miplearn.h5": [[2, 1, 1, "", "H5File"]], "miplearn.h5.H5File": [[2, 2, 1, "", "close"], [2, 2, 1, "", "get_array"], [2, 2, 1, "", "get_bytes"], [2, 2, 1, "", "get_scalar"], [2, 2, 1, "", "get_sparse"], [2, 2, 1, "", "put_array"], [2, 2, 1, "", "put_bytes"], [2, 2, 1, "", "put_scalar"], [2, 2, 1, "", "put_sparse"]], "miplearn.io": [[2, 3, 1, "", "gzip"], [2, 3, 1, "", "read_pkl_gz"], [2, 3, 1, "", "write_pkl_gz"]], "miplearn.problems": [[3, 0, 0, "-", "binpack"], [3, 0, 0, "-", "multiknapsack"], [3, 0, 0, "-", "pmedian"], [3, 0, 0, "-", "setcover"], [3, 0, 0, "-", "setpack"], [3, 0, 0, "-", "stab"], [3, 0, 0, "-", "tsp"], [3, 0, 0, "-", "uc"], [3, 0, 0, "-", "vertexcover"]], "miplearn.problems.binpack": [[3, 1, 1, "", "BinPackData"], [3, 1, 1, "", "BinPackGenerator"], [3, 3, 1, "", "build_binpack_model_gurobipy"]], "miplearn.problems.binpack.BinPackGenerator": [[3, 2, 1, "", "generate"]], "miplearn.problems.multiknapsack": [[3, 1, 1, "", "MultiKnapsackData"], [3, 1, 1, "", "MultiKnapsackGenerator"], [3, 3, 1, "", "build_multiknapsack_model_gurobipy"]], "miplearn.problems.pmedian": [[3, 1, 1, "", "PMedianData"], [3, 1, 1, "", "PMedianGenerator"], [3, 3, 1, "", "build_pmedian_model_gurobipy"]], "miplearn.problems.setcover": [[3, 1, 1, "", "SetCoverData"]], "miplearn.problems.setpack": [[3, 1, 1, "", "SetPackData"]], "miplearn.problems.stab": [[3, 1, 1, "", "MaxWeightStableSetData"], [3, 1, 1, "", "MaxWeightStableSetGenerator"]], "miplearn.problems.tsp": [[3, 1, 1, "", "TravelingSalesmanData"], [3, 1, 1, "", "TravelingSalesmanGenerator"]], "miplearn.problems.uc": [[3, 1, 1, "", "UnitCommitmentData"], [3, 3, 1, "", "build_uc_model_gurobipy"]], "miplearn.problems.vertexcover": [[3, 1, 1, "", "MinWeightVertexCoverData"]], "miplearn.solvers": [[4, 0, 0, "-", "abstract"], [4, 0, 0, "-", "gurobi"], [4, 0, 0, "-", "learning"]], "miplearn.solvers.abstract": [[4, 1, 1, "", "AbstractModel"]], "miplearn.solvers.abstract.AbstractModel": [[4, 4, 1, "", "WHERE_CUTS"], [4, 4, 1, "", "WHERE_DEFAULT"], [4, 4, 1, "", "WHERE_LAZY"], [4, 2, 1, "", "add_constrs"], [4, 2, 1, "", "extract_after_load"], [4, 2, 1, "", "extract_after_lp"], [4, 2, 1, "", "extract_after_mip"], [4, 2, 1, "", "fix_variables"], [4, 2, 1, "", "lazy_enforce"], [4, 2, 1, "", "optimize"], [4, 2, 1, "", "relax"], [4, 2, 1, "", "set_cuts"], [4, 2, 1, "", "set_warm_starts"], [4, 2, 1, "", "write"]], "miplearn.solvers.gurobi": [[4, 1, 1, "", "GurobiModel"]], "miplearn.solvers.gurobi.GurobiModel": [[4, 2, 1, "", "add_constr"], [4, 2, 1, "", "add_constrs"], [4, 2, 1, "", "extract_after_load"], [4, 2, 1, "", "extract_after_lp"], [4, 2, 1, "", "extract_after_mip"], [4, 2, 1, "", "fix_variables"], [4, 2, 1, "", "optimize"], [4, 2, 1, "", "relax"], [4, 2, 1, "", "set_time_limit"], [4, 2, 1, "", "set_warm_starts"], [4, 2, 1, "", "write"]], "miplearn.solvers.learning": [[4, 1, 1, "", "LearningSolver"]], "miplearn.solvers.learning.LearningSolver": [[4, 2, 1, "", "fit"], [4, 2, 1, "", "optimize"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function", "4": "py:attribute"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"], "4": ["py", "attribute", "Python attribute"]}, "titleterms": {"collector": [0, 5], "extractor": [0, 6], "miplearn": [0, 1, 2, 3, 4, 10], "classifi": 0, "minprob": 0, "singleclass": 0, "basic": [0, 5], "field": [0, 5], "alvlouweh2017": 0, "compon": [1, 7], "primal": [1, 7], "action": [1, 7], "expert": [1, 7], "indep": 1, "joint": [1, 7], "mem": 1, "helper": 2, "io": 2, "h5": 2, "benchmark": [3, 8], "problem": [3, 8, 11, 12, 13, 14], "binpack": 3, "multiknapsack": 3, "pmedian": 3, "setcov": 3, "setpack": 3, "stab": 3, "tsp": 3, "uc": 3, "vertexcov": 3, "solver": [4, 9], "abstract": 4, "gurobi": 4, "learn": [4, 9, 11], "train": [5, 9, 11, 12, 13, 14], "data": [5, 11, 12, 13, 14], "overview": [5, 6, 8], "hdf5": 5, "format": 5, "exampl": [5, 6, 7, 8, 9], "featur": 6, "h5fieldsextractor": 6, "alvlouweh2017extractor": 6, "memor": 7, "independ": 7, "var": 7, "bin": 8, "pack": 8, "formul": 8, "random": 8, "instanc": [8, 9, 11, 12, 13, 14], "gener": [8, 11, 12, 13, 14], "multi": 8, "dimension": 8, "knapsack": 8, "capacit": 8, "p": 8, "median": 8, "set": 8, "cover": 8, "stabl": 8, "travel": [8, 11], "salesman": [8, 11], "unit": 8, "commit": 8, "vertex": 8, "configur": 9, "solv": [9, 11, 12, 13, 14], "new": [9, 11], "complet": 9, "content": 10, "tutori": 10, "user": [10, 11], "guid": 10, "python": 10, "api": 10, "refer": 10, "author": 10, "acknowledg": 10, "cite": 10, "cut": 11, "lazi": 11, "constraint": 11, "The": [], "get": [12, 13, 14], "start": [12, 13, 14], "gurobipi": 12, "introduct": [12, 13, 14], "instal": [12, 13, 14], "model": [11, 12, 13, 14], "simpl": [12, 13, 14], "optim": [12, 13, 14], "test": [12, 13, 14], "access": [12, 13, 14], "solut": [12, 13, 14], "jump": 13, "pyomo": 14}, "envversion": {"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, "nbsphinx": 4, "sphinx": 60}, "alltitles": {"Example": [[7, "Example"], [5, "Example"], [5, "id1"], [6, "Example"], [6, "id1"], [8, "Example"], [8, "id3"], [8, "id6"], [8, "id9"], [8, "id12"], [8, "id15"], [8, "id18"], [8, "id21"], [8, "id24"]], "Primal Components": [[7, "Primal-Components"]], "Primal component actions": [[7, "Primal-component-actions"]], "Memorizing primal component": [[7, "Memorizing-primal-component"]], "Examples": [[7, "Examples"], [7, "id1"], [7, "id2"]], "Independent vars primal component": [[7, "Independent-vars-primal-component"]], "Joint vars primal component": [[7, "Joint-vars-primal-component"]], "Expert primal component": [[7, "Expert-primal-component"]], "Components": [[1, "components"]], "miplearn.components.primal.actions": [[1, "module-miplearn.components.primal.actions"]], "miplearn.components.primal.expert": [[1, "module-miplearn.components.primal.expert"]], "miplearn.components.primal.indep": [[1, "module-miplearn.components.primal.indep"]], "miplearn.components.primal.joint": [[1, "module-miplearn.components.primal.joint"]], "miplearn.components.primal.mem": [[1, "module-miplearn.components.primal.mem"]], "Benchmark Problems": [[3, "benchmark-problems"], [8, "Benchmark-Problems"]], "miplearn.problems.binpack": [[3, "module-miplearn.problems.binpack"]], "miplearn.problems.multiknapsack": [[3, "module-miplearn.problems.multiknapsack"]], "miplearn.problems.pmedian": [[3, "module-miplearn.problems.pmedian"]], "miplearn.problems.setcover": [[3, "module-miplearn.problems.setcover"]], "miplearn.problems.setpack": [[3, "module-miplearn.problems.setpack"]], "miplearn.problems.stab": [[3, "module-miplearn.problems.stab"]], "miplearn.problems.tsp": [[3, "module-miplearn.problems.tsp"]], "miplearn.problems.uc": [[3, "module-miplearn.problems.uc"]], "miplearn.problems.vertexcover": [[3, "module-miplearn.problems.vertexcover"]], "Solvers": [[4, "solvers"]], "miplearn.solvers.abstract": [[4, "module-miplearn.solvers.abstract"]], "miplearn.solvers.gurobi": [[4, "module-miplearn.solvers.gurobi"]], "miplearn.solvers.learning": [[4, "module-miplearn.solvers.learning"]], "Training Data Collectors": [[5, "Training-Data-Collectors"]], "Overview": [[5, "Overview"], [6, "Overview"], [8, "Overview"]], "HDF5 Format": [[5, "HDF5-Format"]], "Basic collector": [[5, "Basic-collector"]], "Data fields": [[5, "Data-fields"]], "Feature Extractors": [[6, "Feature-Extractors"]], "H5FieldsExtractor": [[6, "H5FieldsExtractor"]], "AlvLouWeh2017Extractor": [[6, "AlvLouWeh2017Extractor"]], "Learning Solver": [[9, "Learning-Solver"]], "Configuring the solver": [[9, "Configuring-the-solver"]], "Training and solving new instances": [[9, "Training-and-solving-new-instances"], [11, "Training-and-solving-new-instances"]], "Complete example": [[9, "Complete-example"]], "Generating training data": [[11, "Generating-training-data"], [13, "Generating-training-data"], [14, "Generating-training-data"], [12, "Generating-training-data"]], "User cuts and lazy constraints": [[11, "User-cuts-and-lazy-constraints"]], "Modeling the traveling salesman problem": [[11, "Modeling-the-traveling-salesman-problem"]], "Learning user cuts": [[11, "Learning-user-cuts"]], "Bin Packing": [[8, "Bin-Packing"]], "Formulation": [[8, "Formulation"], [8, "id1"], [8, "id4"], [8, "id7"], [8, "id10"], [8, "id13"], [8, "id16"], [8, "id19"], [8, "id22"]], "Random instance generator": [[8, "Random-instance-generator"], [8, "id2"], [8, "id5"], [8, "id8"], [8, "id11"], [8, "id14"], [8, "id17"], [8, "id20"], [8, "id23"]], "Multi-Dimensional Knapsack": [[8, "Multi-Dimensional-Knapsack"]], "Capacitated P-Median": [[8, "Capacitated-P-Median"]], "Set cover": [[8, "Set-cover"]], "Set Packing": [[8, "Set-Packing"]], "Stable Set": [[8, "Stable-Set"]], "Traveling Salesman": [[8, "Traveling-Salesman"]], "Unit Commitment": [[8, "Unit-Commitment"]], "Vertex Cover": [[8, "Vertex-Cover"]], "MIPLearn": [[10, "miplearn"]], "Contents": [[10, "contents"]], "Tutorials": [[10, null]], "User Guide": [[10, null]], "Python API Reference": [[10, null]], "Authors": [[10, "authors"]], "Acknowledgments": [[10, "acknowledgments"]], "Citing MIPLearn": [[10, "citing-miplearn"]], "Introduction": [[13, "Introduction"], [14, "Introduction"], [12, "Introduction"]], "Installation": [[13, "Installation"], [14, "Installation"], [12, "Installation"]], "Modeling a simple optimization problem": [[13, "Modeling-a-simple-optimization-problem"], [14, "Modeling-a-simple-optimization-problem"], [12, "Modeling-a-simple-optimization-problem"]], "Training and solving test instances": [[13, "Training-and-solving-test-instances"], [14, "Training-and-solving-test-instances"], [12, "Training-and-solving-test-instances"]], "Accessing the solution": [[13, "Accessing-the-solution"], [14, "Accessing-the-solution"], [12, "Accessing-the-solution"]], "Getting started (JuMP)": [[13, "Getting-started-(JuMP)"]], "Getting started (Pyomo)": [[14, "Getting-started-(Pyomo)"]], "Collectors & Extractors": [[0, "collectors-extractors"]], "miplearn.classifiers.minprob": [[0, "module-miplearn.classifiers.minprob"]], "miplearn.classifiers.singleclass": [[0, "module-miplearn.classifiers.singleclass"]], "miplearn.collectors.basic": [[0, "module-miplearn.collectors.basic"]], "miplearn.extractors.fields": [[0, "module-miplearn.extractors.fields"]], "miplearn.extractors.AlvLouWeh2017": [[0, "module-miplearn.extractors.AlvLouWeh2017"]], "Helpers": [[2, "helpers"]], "miplearn.io": [[2, "module-miplearn.io"]], "miplearn.h5": [[2, "module-miplearn.h5"]], "Getting started (Gurobipy)": [[12, "Getting-started-(Gurobipy)"]]}, "indexentries": {"alvlouweh2017extractor (class in miplearn.extractors.alvlouweh2017)": [[0, "miplearn.extractors.AlvLouWeh2017.AlvLouWeh2017Extractor"]], "basiccollector (class in miplearn.collectors.basic)": [[0, "miplearn.collectors.basic.BasicCollector"]], "h5fieldsextractor (class in miplearn.extractors.fields)": [[0, "miplearn.extractors.fields.H5FieldsExtractor"]], "minprobabilityclassifier (class in miplearn.classifiers.minprob)": [[0, "miplearn.classifiers.minprob.MinProbabilityClassifier"]], "singleclassfix (class in miplearn.classifiers.singleclass)": [[0, "miplearn.classifiers.singleclass.SingleClassFix"]], "collect() (miplearn.collectors.basic.basiccollector method)": [[0, "miplearn.collectors.basic.BasicCollector.collect"]], "fit() (miplearn.classifiers.minprob.minprobabilityclassifier method)": [[0, "miplearn.classifiers.minprob.MinProbabilityClassifier.fit"]], "fit() (miplearn.classifiers.singleclass.singleclassfix method)": [[0, "miplearn.classifiers.singleclass.SingleClassFix.fit"]], "get_constr_features() (miplearn.extractors.alvlouweh2017.alvlouweh2017extractor method)": [[0, "miplearn.extractors.AlvLouWeh2017.AlvLouWeh2017Extractor.get_constr_features"]], "get_constr_features() (miplearn.extractors.fields.h5fieldsextractor method)": [[0, "miplearn.extractors.fields.H5FieldsExtractor.get_constr_features"]], "get_instance_features() (miplearn.extractors.alvlouweh2017.alvlouweh2017extractor method)": [[0, "miplearn.extractors.AlvLouWeh2017.AlvLouWeh2017Extractor.get_instance_features"]], "get_instance_features() (miplearn.extractors.fields.h5fieldsextractor method)": [[0, "miplearn.extractors.fields.H5FieldsExtractor.get_instance_features"]], "get_var_features() (miplearn.extractors.alvlouweh2017.alvlouweh2017extractor method)": [[0, "miplearn.extractors.AlvLouWeh2017.AlvLouWeh2017Extractor.get_var_features"]], "get_var_features() (miplearn.extractors.fields.h5fieldsextractor method)": [[0, "miplearn.extractors.fields.H5FieldsExtractor.get_var_features"]], "miplearn.classifiers.minprob": [[0, "module-miplearn.classifiers.minprob"]], "miplearn.classifiers.singleclass": [[0, "module-miplearn.classifiers.singleclass"]], "miplearn.collectors.basic": [[0, "module-miplearn.collectors.basic"]], "miplearn.extractors.alvlouweh2017": [[0, "module-miplearn.extractors.AlvLouWeh2017"]], "miplearn.extractors.fields": [[0, "module-miplearn.extractors.fields"]], "module": [[0, "module-miplearn.classifiers.minprob"], [0, "module-miplearn.classifiers.singleclass"], [0, "module-miplearn.collectors.basic"], [0, "module-miplearn.extractors.AlvLouWeh2017"], [0, "module-miplearn.extractors.fields"], [2, "module-miplearn.h5"], [2, "module-miplearn.io"]], "predict() (miplearn.classifiers.minprob.minprobabilityclassifier method)": [[0, "miplearn.classifiers.minprob.MinProbabilityClassifier.predict"]], "predict() (miplearn.classifiers.singleclass.singleclassfix method)": [[0, "miplearn.classifiers.singleclass.SingleClassFix.predict"]], "set_fit_request() (miplearn.classifiers.minprob.minprobabilityclassifier method)": [[0, "miplearn.classifiers.minprob.MinProbabilityClassifier.set_fit_request"]], "set_fit_request() (miplearn.classifiers.singleclass.singleclassfix method)": [[0, "miplearn.classifiers.singleclass.SingleClassFix.set_fit_request"]], "set_predict_request() (miplearn.classifiers.minprob.minprobabilityclassifier method)": [[0, "miplearn.classifiers.minprob.MinProbabilityClassifier.set_predict_request"]], "set_predict_request() (miplearn.classifiers.singleclass.singleclassfix method)": [[0, "miplearn.classifiers.singleclass.SingleClassFix.set_predict_request"]], "h5file (class in miplearn.h5)": [[2, "miplearn.h5.H5File"]], "close() (miplearn.h5.h5file method)": [[2, "miplearn.h5.H5File.close"]], "get_array() (miplearn.h5.h5file method)": [[2, "miplearn.h5.H5File.get_array"]], "get_bytes() (miplearn.h5.h5file method)": [[2, "miplearn.h5.H5File.get_bytes"]], "get_scalar() (miplearn.h5.h5file method)": [[2, "miplearn.h5.H5File.get_scalar"]], "get_sparse() (miplearn.h5.h5file method)": [[2, "miplearn.h5.H5File.get_sparse"]], "gzip() (in module miplearn.io)": [[2, "miplearn.io.gzip"]], "miplearn.h5": [[2, "module-miplearn.h5"]], "miplearn.io": [[2, "module-miplearn.io"]], "put_array() (miplearn.h5.h5file method)": [[2, "miplearn.h5.H5File.put_array"]], "put_bytes() (miplearn.h5.h5file method)": [[2, "miplearn.h5.H5File.put_bytes"]], "put_scalar() (miplearn.h5.h5file method)": [[2, "miplearn.h5.H5File.put_scalar"]], "put_sparse() (miplearn.h5.h5file method)": [[2, "miplearn.h5.H5File.put_sparse"]], "read_pkl_gz() (in module miplearn.io)": [[2, "miplearn.io.read_pkl_gz"]], "write_pkl_gz() (in module miplearn.io)": [[2, "miplearn.io.write_pkl_gz"]]}}) \ No newline at end of file diff --git a/0.4/tutorials/getting-started-gurobipy.ipynb b/0.4/tutorials/getting-started-gurobipy.ipynb index 110e3f4..62e5f2c 100644 --- a/0.4/tutorials/getting-started-gurobipy.ipynb +++ b/0.4/tutorials/getting-started-gurobipy.ipynb @@ -48,7 +48,7 @@ "In this tutorial, we will demonstrate how to use and install the Python/Gurobipy version of the package. The first step is to install Python 3.8+ in your computer. See the [official Python website for more instructions](https://www.python.org/downloads/). After Python is installed, we proceed to install MIPLearn using `pip`:\n", "\n", "```\n", - "$ pip install MIPLearn==0.3\n", + "$ pip install MIPLearn==0.4\n", "```\n", "\n", "In addition to MIPLearn itself, we will also install Gurobi 10.0, a state-of-the-art commercial MILP solver. This step also install a demo license for Gurobi, which should able to solve the small optimization problems in this tutorial. A license is required for solving larger-scale problems.\n", @@ -220,11 +220,12 @@ "name": "stdout", "output_type": "stream", "text": [ + "Set parameter Threads to value 1\n", "Restricted license - for non-production use only - expires 2024-10-28\n", "Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64)\n", "\n", "CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2]\n", - "Thread count: 10 physical cores, 20 logical processors, using up to 20 threads\n", + "Thread count: 10 physical cores, 20 logical processors, using up to 1 threads\n", "\n", "Optimize a model with 7 rows, 6 columns and 15 nonzeros\n", "Model fingerprint: 0x58dfdd53\n", @@ -250,12 +251,14 @@ "* 0 0 0 1320.0000000 1320.00000 0.00% - 0s\n", "\n", "Explored 1 nodes (5 simplex iterations) in 0.01 seconds (0.00 work units)\n", - "Thread count was 20 (of 20 available processors)\n", + "Thread count was 1 (of 20 available processors)\n", "\n", "Solution count 2: 1320 1400 \n", "\n", "Optimal solution found (tolerance 1.00e-04)\n", "Best objective 1.320000000000e+03, best bound 1.320000000000e+03, gap 0.0000%\n", + "\n", + "User-callback calls 371, time in user-callback 0.00 sec\n", "obj = 1320.0\n", "x = [-0.0, 1.0, 1.0]\n", "y = [0.0, 60.0, 40.0]\n" @@ -401,7 +404,7 @@ "from miplearn.collectors.basic import BasicCollector\n", "\n", "bc = BasicCollector()\n", - "bc.collect(train_data, build_uc_model, n_jobs=4)" + "bc.collect(train_data, build_uc_model)" ] }, { @@ -483,7 +486,7 @@ "Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64)\n", "\n", "CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2]\n", - "Thread count: 10 physical cores, 20 logical processors, using up to 20 threads\n", + "Thread count: 10 physical cores, 20 logical processors, using up to 1 threads\n", "\n", "Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros\n", "Model fingerprint: 0xa8b70287\n", @@ -493,22 +496,24 @@ " Bounds range [1e+00, 1e+00]\n", " RHS range [3e+08, 3e+08]\n", "Presolve removed 1000 rows and 500 columns\n", - "Presolve time: 0.01s\n", + "Presolve time: 0.00s\n", "Presolved: 1 rows, 500 columns, 500 nonzeros\n", "\n", "Iteration Objective Primal Inf. Dual Inf. Time\n", " 0 6.6166537e+09 5.648803e+04 0.000000e+00 0s\n", " 1 8.2906219e+09 0.000000e+00 0.000000e+00 0s\n", "\n", - "Solved in 1 iterations and 0.01 seconds (0.00 work units)\n", + "Solved in 1 iterations and 0.00 seconds (0.00 work units)\n", "Optimal objective 8.290621916e+09\n", + "\n", + "User-callback calls 56, time in user-callback 0.00 sec\n", "Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64)\n", "\n", "CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2]\n", - "Thread count: 10 physical cores, 20 logical processors, using up to 20 threads\n", + "Thread count: 10 physical cores, 20 logical processors, using up to 1 threads\n", "\n", "Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros\n", - "Model fingerprint: 0xcf27855a\n", + "Model fingerprint: 0x892e56b2\n", "Variable types: 500 continuous, 500 integer (500 binary)\n", "Coefficient statistics:\n", " Matrix range [1e+00, 2e+06]\n", @@ -538,19 +543,21 @@ " Gomory: 1\n", " Flow cover: 2\n", "\n", - "Explored 1 nodes (565 simplex iterations) in 0.03 seconds (0.01 work units)\n", - "Thread count was 20 (of 20 available processors)\n", + "Explored 1 nodes (565 simplex iterations) in 0.02 seconds (0.01 work units)\n", + "Thread count was 1 (of 20 available processors)\n", "\n", "Solution count 1: 8.29153e+09 \n", "\n", "Optimal solution found (tolerance 1.00e-04)\n", - "Best objective 8.291528276179e+09, best bound 8.290733258025e+09, gap 0.0096%\n" + "Best objective 8.291528276179e+09, best bound 8.290733258025e+09, gap 0.0096%\n", + "\n", + "User-callback calls 193, time in user-callback 0.00 sec\n" ] }, { "data": { "text/plain": [ - "{'WS: Count': 1, 'WS: Number of variables set': 482.0}" + "{'WS: Count': 1, 'WS: Number of variables set': 477.0}" ] }, "execution_count": 8, @@ -592,7 +599,7 @@ "Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64)\n", "\n", "CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2]\n", - "Thread count: 10 physical cores, 20 logical processors, using up to 20 threads\n", + "Thread count: 10 physical cores, 20 logical processors, using up to 1 threads\n", "\n", "Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros\n", "Model fingerprint: 0xa8b70287\n", @@ -611,10 +618,12 @@ "\n", "Solved in 1 iterations and 0.01 seconds (0.00 work units)\n", "Optimal objective 8.290621916e+09\n", + "\n", + "User-callback calls 56, time in user-callback 0.00 sec\n", "Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64)\n", "\n", "CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2]\n", - "Thread count: 10 physical cores, 20 logical processors, using up to 20 threads\n", + "Thread count: 10 physical cores, 20 logical processors, using up to 1 threads\n", "\n", "Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros\n", "Model fingerprint: 0x4cbbf7c7\n", @@ -643,39 +652,36 @@ " 0 0 8.2907e+09 0 5 8.2940e+09 8.2907e+09 0.04% - 0s\n", " 0 0 8.2907e+09 0 1 8.2940e+09 8.2907e+09 0.04% - 0s\n", " 0 0 8.2907e+09 0 2 8.2940e+09 8.2907e+09 0.04% - 0s\n", - " 0 0 8.2908e+09 0 1 8.2940e+09 8.2908e+09 0.04% - 0s\n", - " 0 0 8.2908e+09 0 4 8.2940e+09 8.2908e+09 0.04% - 0s\n", - " 0 0 8.2908e+09 0 4 8.2940e+09 8.2908e+09 0.04% - 0s\n", - "H 0 0 8.291465e+09 8.2908e+09 0.01% - 0s\n", + " 0 0 8.2907e+09 0 2 8.2940e+09 8.2907e+09 0.04% - 0s\n", + " 0 2 8.2908e+09 0 2 8.2940e+09 8.2908e+09 0.04% - 0s\n", + "H 9 9 8.292131e+09 8.2908e+09 0.02% 1.0 0s\n", + "H 132 88 8.292121e+09 8.2908e+09 0.02% 2.0 0s\n", + "* 133 88 28 8.292121e+09 8.2908e+09 0.02% 2.2 0s\n", + "H 216 136 8.291918e+09 8.2909e+09 0.01% 2.4 0s\n", + "* 232 136 28 8.291664e+09 8.2909e+09 0.01% 2.4 0s\n", "\n", "Cutting planes:\n", " Gomory: 2\n", + " Cover: 1\n", " MIR: 1\n", + " Inf proof: 3\n", "\n", - "Explored 1 nodes (1031 simplex iterations) in 0.15 seconds (0.03 work units)\n", - "Thread count was 20 (of 20 available processors)\n", + "Explored 233 nodes (1577 simplex iterations) in 0.09 seconds (0.06 work units)\n", + "Thread count was 1 (of 20 available processors)\n", "\n", - "Solution count 4: 8.29147e+09 8.29398e+09 8.29827e+09 9.75713e+09 \n", + "Solution count 7: 8.29166e+09 8.29192e+09 8.29212e+09 ... 9.75713e+09\n", "\n", "Optimal solution found (tolerance 1.00e-04)\n", - "Best objective 8.291465302389e+09, best bound 8.290781665333e+09, gap 0.0082%\n" + "Best objective 8.291663722826e+09, best bound 8.290885027548e+09, gap 0.0094%\n", + "\n", + "User-callback calls 708, time in user-callback 0.00 sec\n" ] - }, - { - "data": { - "text/plain": [ - "{}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ "solver_baseline = LearningSolver(components=[])\n", "solver_baseline.fit(train_data)\n", - "solver_baseline.optimize(test_data[0], build_uc_model)" + "solver_baseline.optimize(test_data[0], build_uc_model);" ] }, { @@ -716,7 +722,7 @@ "Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64)\n", "\n", "CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2]\n", - "Thread count: 10 physical cores, 20 logical processors, using up to 20 threads\n", + "Thread count: 10 physical cores, 20 logical processors, using up to 1 threads\n", "\n", "Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros\n", "Model fingerprint: 0x19042f12\n", @@ -735,13 +741,15 @@ "\n", "Solved in 1 iterations and 0.01 seconds (0.00 work units)\n", "Optimal objective 8.253596777e+09\n", + "\n", + "User-callback calls 56, time in user-callback 0.00 sec\n", "Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64)\n", "\n", "CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2]\n", - "Thread count: 10 physical cores, 20 logical processors, using up to 20 threads\n", + "Thread count: 10 physical cores, 20 logical processors, using up to 1 threads\n", "\n", "Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros\n", - "Model fingerprint: 0xf97cde91\n", + "Model fingerprint: 0x6926c32f\n", "Variable types: 500 continuous, 500 integer (500 binary)\n", "Coefficient statistics:\n", " Matrix range [1e+00, 2e+06]\n", @@ -749,14 +757,15 @@ " Bounds range [1e+00, 1e+00]\n", " RHS range [3e+08, 3e+08]\n", "\n", - "User MIP start produced solution with objective 8.25814e+09 (0.00s)\n", + "User MIP start produced solution with objective 8.25814e+09 (0.01s)\n", "User MIP start produced solution with objective 8.25512e+09 (0.01s)\n", - "User MIP start produced solution with objective 8.25483e+09 (0.01s)\n", - "User MIP start produced solution with objective 8.25483e+09 (0.01s)\n", - "User MIP start produced solution with objective 8.25483e+09 (0.01s)\n", - "User MIP start produced solution with objective 8.25459e+09 (0.01s)\n", - "User MIP start produced solution with objective 8.25459e+09 (0.01s)\n", - "Loaded user MIP start with objective 8.25459e+09\n", + "User MIP start produced solution with objective 8.2551e+09 (0.01s)\n", + "User MIP start produced solution with objective 8.25508e+09 (0.01s)\n", + "User MIP start produced solution with objective 8.25508e+09 (0.01s)\n", + "User MIP start produced solution with objective 8.25499e+09 (0.01s)\n", + "User MIP start produced solution with objective 8.25448e+09 (0.02s)\n", + "User MIP start produced solution with objective 8.25448e+09 (0.02s)\n", + "Loaded user MIP start with objective 8.25448e+09\n", "\n", "Presolve time: 0.00s\n", "Presolved: 1001 rows, 1000 columns, 2500 nonzeros\n", @@ -767,29 +776,23 @@ " Nodes | Current Node | Objective Bounds | Work\n", " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", "\n", - " 0 0 8.2536e+09 0 1 8.2546e+09 8.2536e+09 0.01% - 0s\n", - " 0 0 8.2537e+09 0 3 8.2546e+09 8.2537e+09 0.01% - 0s\n", - " 0 0 8.2537e+09 0 1 8.2546e+09 8.2537e+09 0.01% - 0s\n", - " 0 0 8.2537e+09 0 4 8.2546e+09 8.2537e+09 0.01% - 0s\n", - " 0 0 8.2537e+09 0 4 8.2546e+09 8.2537e+09 0.01% - 0s\n", - " 0 0 8.2538e+09 0 4 8.2546e+09 8.2538e+09 0.01% - 0s\n", - " 0 0 8.2538e+09 0 5 8.2546e+09 8.2538e+09 0.01% - 0s\n", - " 0 0 8.2538e+09 0 6 8.2546e+09 8.2538e+09 0.01% - 0s\n", + " 0 0 8.2536e+09 0 1 8.2545e+09 8.2536e+09 0.01% - 0s\n", + " 0 0 8.2537e+09 0 3 8.2545e+09 8.2537e+09 0.01% - 0s\n", "\n", "Cutting planes:\n", " Cover: 1\n", - " MIR: 2\n", - " StrongCG: 1\n", - " Flow cover: 1\n", + " Flow cover: 2\n", "\n", - "Explored 1 nodes (575 simplex iterations) in 0.05 seconds (0.01 work units)\n", - "Thread count was 20 (of 20 available processors)\n", + "Explored 1 nodes (515 simplex iterations) in 0.03 seconds (0.02 work units)\n", + "Thread count was 1 (of 20 available processors)\n", "\n", - "Solution count 4: 8.25459e+09 8.25483e+09 8.25512e+09 8.25814e+09 \n", + "Solution count 6: 8.25448e+09 8.25499e+09 8.25508e+09 ... 8.25814e+09\n", "\n", "Optimal solution found (tolerance 1.00e-04)\n", - "Best objective 8.254590409970e+09, best bound 8.253768093811e+09, gap 0.0100%\n", - "obj = 8254590409.969726\n", + "Best objective 8.254479145594e+09, best bound 8.253689731796e+09, gap 0.0096%\n", + "\n", + "User-callback calls 203, time in user-callback 0.00 sec\n", + "obj = 8254479145.594168\n", "x = [1.0, 1.0, 0.0]\n", "y = [935662.0949262811, 1604270.0218116897, 0.0]\n" ] diff --git a/0.4/tutorials/getting-started-gurobipy/index.html b/0.4/tutorials/getting-started-gurobipy/index.html index dc6702c..25626d8 100644 --- a/0.4/tutorials/getting-started-gurobipy/index.html +++ b/0.4/tutorials/getting-started-gurobipy/index.html @@ -294,7 +294,7 @@

2.2. Installation

Julia version, compatible with the JuMP modeling language.

In this tutorial, we will demonstrate how to use and install the Python/Gurobipy version of the package. The first step is to install Python 3.8+ in your computer. See the official Python website for more instructions. After Python is installed, we proceed to install MIPLearn using pip:

-
$ pip install MIPLearn==0.3
+
$ pip install MIPLearn==0.4
 

In addition to MIPLearn itself, we will also install Gurobi 10.0, a state-of-the-art commercial MILP solver. This step also install a demo license for Gurobi, which should able to solve the small optimization problems in this tutorial. A license is required for solving larger-scale problems.

@@ -403,11 +403,12 @@

2.3. Modeling a simple optimization prob

+Set parameter Threads to value 1
 Restricted license - for non-production use only - expires 2024-10-28
 Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64)
 
 CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2]
-Thread count: 10 physical cores, 20 logical processors, using up to 20 threads
+Thread count: 10 physical cores, 20 logical processors, using up to 1 threads
 
 Optimize a model with 7 rows, 6 columns and 15 nonzeros
 Model fingerprint: 0x58dfdd53
@@ -433,12 +434,14 @@ 

2.3. Modeling a simple optimization prob * 0 0 0 1320.0000000 1320.00000 0.00% - 0s Explored 1 nodes (5 simplex iterations) in 0.01 seconds (0.00 work units) -Thread count was 20 (of 20 available processors) +Thread count was 1 (of 20 available processors) Solution count 2: 1320 1400 Optimal solution found (tolerance 1.00e-04) Best objective 1.320000000000e+03, best bound 1.320000000000e+03, gap 0.0000% + +User-callback calls 371, time in user-callback 0.00 sec obj = 1320.0 x = [-0.0, 1.0, 1.0] y = [0.0, 60.0, 40.0] @@ -510,7 +513,7 @@

2.4. Generating training data
from miplearn.collectors.basic import BasicCollector
 
 bc = BasicCollector()
-bc.collect(train_data, build_uc_model, n_jobs=4)
+bc.collect(train_data, build_uc_model)
 

@@ -569,7 +572,7 @@

2.5. Training and solving test instances Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64) CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2] -Thread count: 10 physical cores, 20 logical processors, using up to 20 threads +Thread count: 10 physical cores, 20 logical processors, using up to 1 threads Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros Model fingerprint: 0xa8b70287 @@ -579,22 +582,24 @@

2.5. Training and solving test instances Bounds range [1e+00, 1e+00] RHS range [3e+08, 3e+08] Presolve removed 1000 rows and 500 columns -Presolve time: 0.01s +Presolve time: 0.00s Presolved: 1 rows, 500 columns, 500 nonzeros Iteration Objective Primal Inf. Dual Inf. Time 0 6.6166537e+09 5.648803e+04 0.000000e+00 0s 1 8.2906219e+09 0.000000e+00 0.000000e+00 0s -Solved in 1 iterations and 0.01 seconds (0.00 work units) +Solved in 1 iterations and 0.00 seconds (0.00 work units) Optimal objective 8.290621916e+09 + +User-callback calls 56, time in user-callback 0.00 sec Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64) CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2] -Thread count: 10 physical cores, 20 logical processors, using up to 20 threads +Thread count: 10 physical cores, 20 logical processors, using up to 1 threads Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros -Model fingerprint: 0xcf27855a +Model fingerprint: 0x892e56b2 Variable types: 500 continuous, 500 integer (500 binary) Coefficient statistics: Matrix range [1e+00, 2e+06] @@ -624,13 +629,15 @@

2.5. Training and solving test instances Gomory: 1 Flow cover: 2 -Explored 1 nodes (565 simplex iterations) in 0.03 seconds (0.01 work units) -Thread count was 20 (of 20 available processors) +Explored 1 nodes (565 simplex iterations) in 0.02 seconds (0.01 work units) +Thread count was 1 (of 20 available processors) Solution count 1: 8.29153e+09 Optimal solution found (tolerance 1.00e-04) Best objective 8.291528276179e+09, best bound 8.290733258025e+09, gap 0.0096% + +User-callback calls 193, time in user-callback 0.00 sec

@@ -639,7 +646,7 @@

2.5. Training and solving test instances

-{'WS: Count': 1, 'WS: Number of variables set': 482.0}
+{'WS: Count': 1, 'WS: Number of variables set': 477.0}
 

By examining the solve log above, specifically the line Loaded user MIP start with objective..., we can see that MIPLearn was able to construct an initial solution which turned out to be very close to the optimal solution to the problem. Now let us repeat the code above, but a solver which does not apply any ML strategies. Note that our previously-defined component is not provided.

@@ -649,11 +656,11 @@

2.5. Training and solving test instances
solver_baseline = LearningSolver(components=[])
 solver_baseline.fit(train_data)
-solver_baseline.optimize(test_data[0], build_uc_model)
+solver_baseline.optimize(test_data[0], build_uc_model);
 
-
+
@@ -661,7 +668,7 @@

2.5. Training and solving test instances Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64) CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2] -Thread count: 10 physical cores, 20 logical processors, using up to 20 threads +Thread count: 10 physical cores, 20 logical processors, using up to 1 threads Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros Model fingerprint: 0xa8b70287 @@ -680,10 +687,12 @@

2.5. Training and solving test instances Solved in 1 iterations and 0.01 seconds (0.00 work units) Optimal objective 8.290621916e+09 + +User-callback calls 56, time in user-callback 0.00 sec Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (linux64) CPU model: 13th Gen Intel(R) Core(TM) i7-13800H, instruction set [SSE2|AVX|AVX2] -Thread count: 10 physical cores, 20 logical processors, using up to 20 threads +Thread count: 10 physical cores, 20 logical processors, using up to 1 threads Optimize a model with 1001 rows, 1000 columns and 2500 nonzeros Model fingerprint: 0x4cbbf7c7 @@ -712,31 +721,29 @@

2.5. Training and solving test instances 0 0 8.2907e+09 0 5 8.2940e+09 8.2907e+09 0.04% - 0s 0 0 8.2907e+09 0 1 8.2940e+09 8.2907e+09 0.04% - 0s 0 0 8.2907e+09 0 2 8.2940e+09 8.2907e+09 0.04% - 0s - 0 0 8.2908e+09 0 1 8.2940e+09 8.2908e+09 0.04% - 0s - 0 0 8.2908e+09 0 4 8.2940e+09 8.2908e+09 0.04% - 0s - 0 0 8.2908e+09 0 4 8.2940e+09 8.2908e+09 0.04% - 0s -H 0 0 8.291465e+09 8.2908e+09 0.01% - 0s + 0 0 8.2907e+09 0 2 8.2940e+09 8.2907e+09 0.04% - 0s + 0 2 8.2908e+09 0 2 8.2940e+09 8.2908e+09 0.04% - 0s +H 9 9 8.292131e+09 8.2908e+09 0.02% 1.0 0s +H 132 88 8.292121e+09 8.2908e+09 0.02% 2.0 0s +* 133 88 28 8.292121e+09 8.2908e+09 0.02% 2.2 0s +H 216 136 8.291918e+09 8.2909e+09 0.01% 2.4 0s +* 232 136 28 8.291664e+09 8.2909e+09 0.01% 2.4 0s Cutting planes: Gomory: 2 + Cover: 1 MIR: 1 + Inf proof: 3 -Explored 1 nodes (1031 simplex iterations) in 0.15 seconds (0.03 work units) -Thread count was 20 (of 20 available processors) +Explored 233 nodes (1577 simplex iterations) in 0.09 seconds (0.06 work units) +Thread count was 1 (of 20 available processors) -Solution count 4: 8.29147e+09 8.29398e+09 8.29827e+09 9.75713e+09 +Solution count 7: 8.29166e+09 8.29192e+09 8.29212e+09 ... 9.75713e+09 Optimal solution found (tolerance 1.00e-04) -Best objective 8.291465302389e+09, best bound 8.290781665333e+09, gap 0.0082% -

-
-
-
[9]:
-
-
-
-
-{}
+Best objective 8.291663722826e+09, best bound 8.290885027548e+09, gap 0.0094%
+
+User-callback calls 708, time in user-callback 0.00 sec
 

In the log above, the MIP start line is missing, and Gurobi had to start with a significantly inferior initial solution. The solver was still able to find the optimal solution at the end, but it required using its own internal heuristic procedures. In this example, because we solve very small optimization problems, there was almost no difference in terms of running time, but the difference can be significant for larger problems.

@@ -765,7 +772,7 @@

2.6. Accessing the solution2.6. Accessing the solution2.6. Accessing the solution2.6. Accessing the solution