From eef1aee3dfec34fe4b429e072a01241c713914e1 Mon Sep 17 00:00:00 2001 From: alessandrozocca Date: Sun, 19 Nov 2023 17:25:37 +0000 Subject: [PATCH] deploy: df1de513cdbf2018d5cfdc2d75dcab4cc08e61d0 --- ...1b50e50acb157c2ec5cec3589d2e68f557b116.png | Bin 0 -> 11734 bytes ...4a65e8f1ba9d94ac68084f404622a417d7b106.png | Bin 12044 -> 0 bytes .../01/production-planning-advanced.ipynb | 40 ++-- .../01/production-planning-basic.ipynb | 202 ++++++------------ genindex.html | 4 +- .../01/production-planning-advanced.html | 43 ++-- notebooks/01/production-planning-basic.html | 147 ++++--------- searchindex.js | 2 +- 8 files changed, 146 insertions(+), 292 deletions(-) create mode 100644 _images/bbf21b7015cc83ed41ea77948f1b50e50acb157c2ec5cec3589d2e68f557b116.png delete mode 100644 _images/cc4837d53cfd8491d2d7eac3d54a65e8f1ba9d94ac68084f404622a417d7b106.png diff --git a/_images/bbf21b7015cc83ed41ea77948f1b50e50acb157c2ec5cec3589d2e68f557b116.png b/_images/bbf21b7015cc83ed41ea77948f1b50e50acb157c2ec5cec3589d2e68f557b116.png new file mode 100644 index 0000000000000000000000000000000000000000..5079b06a41eb413b166667882933a2ec086d3cf3 GIT binary patch literal 11734 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 HZ{7bdxENfY literal 0 HcmV?d00001 diff --git a/_images/cc4837d53cfd8491d2d7eac3d54a65e8f1ba9d94ac68084f404622a417d7b106.png b/_images/cc4837d53cfd8491d2d7eac3d54a65e8f1ba9d94ac68084f404622a417d7b106.png deleted file mode 100644 index 5b3310329bc0f68fe54597e23357fff85a08d663..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12044 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 oX&lq>mF?fv)lifEcSW}ipQuP{hO(B7pK3h*(lz/dev/null 2>/dev/null\n", - " !pip install highspy >/dev/null 2>/dev/null\n", - "\n", - " from pyomo.environ import SolverFactory\n", - " SOLVER = SolverFactory('appsi_highs')\n", - " \n", - "else:\n", - " from pyomo.environ import SolverFactory\n", - " SOLVER = SolverFactory('cbc')\n", - "\n", - "assert SOLVER.available(), f\"Solver {SOLVER} is not available.\"" + " %pip install pyomo >/dev/null 2>/dev/null\n", + " %pip install highspy >/dev/null 2>/dev/null\n", + " \n", + "solver = 'appsi_highs'\n", + " \n", + "import pyomo.environ as pyo\n", + "SOLVER = pyo.SolverFactory(solver)\n", + " \n", + "assert SOLVER.available(), f\"Solver {solver} is not available.\"" ] }, { @@ -332,8 +325,6 @@ "metadata": {}, "outputs": [], "source": [ - "import pyomo.environ as pyo\n", - "\n", "model = pyo.ConcreteModel()" ] }, @@ -552,6 +543,8 @@ " labor B : -Inf : 2*y[U] + y[V] - x[labor B] : 0.0 : True\n", "\n", "12 Declarations: PRODUCTS RESOURCES demand available cp cr a_index a x y profit materials_used\n", + "Running HiGHS 1.5.3 [date: 2023-05-16, git hash: 594fa5a9d]\n", + "Copyright (c) 2023 HiGHS under MIT licence terms\n", "Profit = 2600.0\n", "\n", "Production Report\n", @@ -601,6 +594,8 @@ "name": "stdout", "output_type": "stream", "text": [ + "Running HiGHS 1.5.3 [date: 2023-05-16, git hash: 594fa5a9d]\n", + "Copyright (c) 2023 HiGHS under MIT licence terms\n", "Profit = 2600.0\n", "\n", "Production Report\n", @@ -615,9 +610,6 @@ } ], "source": [ - "import pyomo.environ as pyo\n", - "\n", - "\n", "class ProductionModel(pyo.ConcreteModel):\n", " \"\"\"\n", " A class representing a production model using Pyomo.\n", @@ -736,7 +728,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.2" + "version": "3.10.10" }, "latex_envs": { "LaTeX_envs_menu_present": true, diff --git a/_sources/notebooks/01/production-planning-basic.ipynb b/_sources/notebooks/01/production-planning-basic.ipynb index 33373119..6c19bcd3 100644 --- a/_sources/notebooks/01/production-planning-basic.ipynb +++ b/_sources/notebooks/01/production-planning-basic.ipynb @@ -16,7 +16,7 @@ "```\n", "```{index} single: Pyomo; decorators\n", "```\n", - "```{index} single: solver; cbc\n", + "```{index} single: solver; HiGHS\n", "```\n", "\n", "# A basic Pyomo model\n", @@ -42,14 +42,17 @@ "source": [ "## Preamble: Install Pyomo and a solver\n", "\n", - "This collection of notebooks is intended to be run in the cloud on [Google Colab](https://colab.google/) or on a personal computer. To meet this goal, we start each notebook by verifying the installation of Pyomo and an appropriate solver. When run on Google Colab, an installation of Pyomo and a solver must be done for each new Colab session. The [HiGHS solver](https://highs.dev/) is a high performance open source solver for linear and mixed integer optimization on Google Colab. For a personal computer, we assume Python, Pyomo and the [COIN-OR Cbc solver](https://coin-or.github.io/Cbc/intro.html) (\"COIN-OR branch and cut\") have been previously installed. Note that there are other suitable solvers, both open-source, such as GLPK, and commercial, such as CPLEX, Gurobi, and Mosek.\n", + "This collection of notebooks is intended to be run in the cloud on [Google Colab](https://colab.google/) or on a personal computer. To meet this goal, we start each notebook by verifying the installation of Pyomo and an appropriate solver. \n", "\n", - "The following cell checks if the notebook is running on Google Colab. If so, it does a quiet installation of Pyomo and a solver. A solver is then selected, a test performed to verify that the solver is available, and the solver interface is stored in a global object `SOLVER` for later use." + "When run on Google Colab, an installation of Pyomo and a solver must be done for each new Colab session. The [HiGHS solver](https://highs.dev/) is a high performance open source solver for linear and mixed integer optimization on Google Colab. For a personal computer, we assume Python, Pyomo and the [HiGHS solver](https://highs.dev/) have been previously installed. Note that there are other suitable solvers, both open-source, such as [COIN-OR Cbc solver](https://coin-or.github.io/Cbc/intro.html) and [GLPK](https://www.gnu.org/software/glpk/), and commercial, such as CPLEX, Gurobi, and Mosek.\n", + "\n", + "The following cell sets and verifies a global SOLVER for the notebook. If run on Google Colab, the cell installs Pyomo and the HiGHS solver, while, if run elsewhere, it \n", + "assumes Pyomo and HiGHS have been previously installed. It then sets to use HiGHS as solver via the appsi module and a test is performed to verify that it is available. The solver interface is stored in a global object `SOLVER` for later use." ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -70,29 +73,18 @@ }, "outputs": [], "source": [ - "\"\"\"\n", - "This cell sets and verifies a global SOLVER for the notebook.\n", - "\n", - "If run on Google Colab, the cell installs Pyomo and HiGHS, then sets SOLVER to use\n", - "the Highs solver via the appsi module. If run elsewhere, it assumes Pyomo and CBC\n", - "have been previously installed and sets SOLVER to use the CBC solver via the Pyomo \n", - "SolverFactory. For both cases, it then verifies that SOLVER is available.\n", - "\"\"\"\n", - "\n", "import sys\n", - "\n", + " \n", "if 'google.colab' in sys.modules:\n", - " !pip install pyomo >/dev/null 2>/dev/null\n", - " !pip install highspy >/dev/null 2>/dev/null\n", - "\n", - " from pyomo.environ import SolverFactory\n", - " SOLVER = SolverFactory('appsi_highs')\n", - " \n", - "else:\n", - " from pyomo.environ import SolverFactory\n", - " SOLVER = SolverFactory('cbc')\n", - "\n", - "assert SOLVER.available(), f\"Solver {SOLVER} is not available.\"" + " %pip install pyomo >/dev/null 2>/dev/null\n", + " %pip install highspy >/dev/null 2>/dev/null\n", + " \n", + "solver = 'appsi_highs'\n", + " \n", + "import pyomo.environ as pyo\n", + "SOLVER = pyo.SolverFactory(solver)\n", + " \n", + "assert SOLVER.available(), f\"Solver {solver} is not available.\"" ] }, { @@ -101,12 +93,12 @@ "source": [ "## Step 1. Import Pyomo\n", "\n", - "The first step for a new Pyomo model is to import the needed components into the Python environment. The module `pyomo.environ` provides the components most commonly used for building Pyomo models. This collection of notebooks uses a consistent convention of importing `pyomo.environ` with the `pyo` prefix." + "The first step for a new Pyomo model is to import the needed components into the Python environment. The module `pyomo.environ` provides the components most commonly used for building Pyomo models. Although this module was imported in the previous code cell, we mention it again here also to emphasize our standardized conventions. Throughout this collection of notebooks, a uniform standard is maintained for importing `pyomo.environ` consistently using the alias `pyo`." ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": { "tags": [] }, @@ -128,7 +120,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": { "tags": [] }, @@ -147,7 +139,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -191,7 +183,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": { "tags": [] }, @@ -251,7 +243,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": { "tags": [] }, @@ -286,75 +278,30 @@ "The first method is to use `pyo.Objective()` where the expression to be optimized is assigned with the `expr` keyword and the type of objective is assigned with the `sense` keyword.\n", "\n", "```python\n", - " model.profit = pyo.Objective(expr = model.revenue - model.cost, sense = pyo.maximize)\n", + " model.profit = pyo.Objective(expr=model.revenue - model.cost, sense=pyo.maximize)\n", "```\n", - " \n", - "Recent releases of Pyomo provide a second method that uses Python [decorators](https://peps.python.org/pep-0318/) to specify an objective. With a decorator, the same objective is written as\n", - "\n", - "```python\n", - " @model.Objective(sense = pyo.maximize)\n", - " def profit(m):\n", - " return m.revenue - m.cost\n", - "```\n", - "\n", - "Python decorators modify the behavior of the function defined in the next line. In this case, the decorator `@model.Objective()` modifies the behavior of `profit()` so that it returns an expression for the profit to Pyomo. The keyword `sense` sets the type of objective, which can either be to maximize or minimize the value returned by the objective function. The function `profit()`, after being decorated, takes the Pyomo model as its first argument and adds its name to the model attributes.\n", "\n", - "In effect, Pyomo decorators are tags that insert functions into a Pyomo model to serve as expressions, objectives, or constraints. Decorators can improve the readability and maintainability of more complex models. They also simplify the syntax for creating other Pyomo objects expressions, constraints, and other optimization-related elements." + "Recent releases of Pyomo provide a second method that uses Python [decorators](https://peps.python.org/pep-0318/) to specify an objective. With a decorator, the same objective is written as" ] }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model 'Production Planning: Version 1'\n", - "\n", - " Variables:\n", - " x_M : Size=1, Index=None\n", - " Key : Lower : Value : Upper : Fixed : Stale : Domain\n", - " None : 0 : None : None : False : True : Reals\n", - " x_A : Size=1, Index=None\n", - " Key : Lower : Value : Upper : Fixed : Stale : Domain\n", - " None : 0 : None : 80 : False : True : Reals\n", - " x_B : Size=1, Index=None\n", - " Key : Lower : Value : Upper : Fixed : Stale : Domain\n", - " None : 0 : None : 100 : False : True : Reals\n", - " y_U : Size=1, Index=None\n", - " Key : Lower : Value : Upper : Fixed : Stale : Domain\n", - " None : 0 : None : 40 : False : True : Reals\n", - " y_V : Size=1, Index=None\n", - " Key : Lower : Value : Upper : Fixed : Stale : Domain\n", - " None : 0 : None : None : False : True : Reals\n", - "\n", - " Objectives:\n", - " profit : Size=1, Index=None, Active=True\n", - "ERROR: evaluating object as numeric value: y_U\n", - " (object: )\n", - " No value for uninitialized NumericValue object y_U\n", - "ERROR: evaluating object as numeric value: profit\n", - " (object: )\n", - " No value for uninitialized NumericValue object y_U\n", - " Key : Active : Value\n", - " None : None : None\n", - "\n", - " Constraints:\n", - " None\n" - ] - } - ], + "execution_count": 7, + "metadata": {}, + "outputs": [], "source": [ "@model.Objective(sense=pyo.maximize)\n", "def profit(m):\n", - " return m.revenue - m.cost\n", - "\n", + " return m.revenue - m.cost" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Python decorators modify the behavior of the function defined in the next line. In this case, the decorator `@model.Objective()` modifies the behavior of `profit()` so that it returns an expression for the profit to Pyomo. The keyword `sense` sets the type of objective, which can either be to maximize or minimize the value returned by the objective function. The function `profit()`, after being decorated, takes the Pyomo model as its first argument and adds its name to the model attributes.\n", "\n", - "model.display()" + "In effect, Pyomo decorators are tags that insert functions into a Pyomo model to serve as expressions, objectives, or constraints. Decorators can improve the readability and maintainability of more complex models. They also simplify the syntax for creating other Pyomo objects expressions, constraints, and other optimization-related elements." ] }, { @@ -367,16 +314,18 @@ "\n", "Constraints can be created with `pyo.Constraint()`. The constraint is passed as a keyword argument `expr` to `pyo.Constraint()`. For this application the constraints could be expressed as \n", "\n", + "```python\n", " model.raw_materials = pyo.Constraint(expr = 10 * model.y_U + 9 * model.y_V <= model.x_M)\n", " model.labor_A = pyo.Constraint(expr = 1 * model.y_U + 1 * model.y_V <= model.x_A)\n", " model.labor_B = pyo.Constraint(expr = 2 * model.y_U + 1 * model.y_V <= model.x_B)\n", + "```\n", " \n", "Alternatively, the `@model.Constraint()` decorator 'tags' the output of the following function as a constraint. For the present example, the constraints are expressed with decorators below. This collection of notebooks uses decorators whenever possible to improve the readability and maintainability of Pyomo models." ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": { "tags": [] }, @@ -452,7 +401,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": { "tags": [] }, @@ -461,38 +410,23 @@ "name": "stdout", "output_type": "stream", "text": [ - "Welcome to the CBC MILP Solver \n", - "Version: 2.10.10 \n", - "Build Date: Apr 20 2023 \n", - "\n", - "command line - /opt/homebrew/opt/cbc/bin/cbc -printingOptions all -import /var/folders/zb/k0pc77yj6c3gv6gr6jj41g1r0000gn/T/tmp2_hwem4f.pyomo.lp -stat=1 -solve -solu /var/folders/zb/k0pc77yj6c3gv6gr6jj41g1r0000gn/T/tmp2_hwem4f.pyomo.soln (default strategy 1)\n", - "Option for printingOptions changed from normal to all\n", - " CoinLpIO::readLp(): Maximization problem reformulated as minimization\n", - "Coin0009I Switching back to maximization to get correct duals etc\n", - "Presolve 3 (0) rows, 5 (0) columns and 9 (0) elements\n", - "Statistics for presolved model\n", - "\n", - "\n", - "Problem has 3 rows, 5 columns (5 with objective) and 9 elements\n", - "There are 3 singletons with objective \n", - "Column breakdown:\n", - "2 of type 0.0->inf, 3 of type 0.0->up, 0 of type lo->inf, \n", - "0 of type lo->up, 0 of type free, 0 of type fixed, \n", - "0 of type -inf->0.0, 0 of type -inf->up, 0 of type 0.0->1.0 \n", - "Row breakdown:\n", - "2 of type E 0.0, 0 of type E 1.0, 0 of type E -1.0, \n", - "0 of type E other, 0 of type G 0.0, 0 of type G 1.0, \n", - "0 of type G other, 1 of type L 0.0, 0 of type L 1.0, \n", - "0 of type L other, 0 of type Range 0.0->1.0, 0 of type Range other, \n", - "0 of type Free \n", - "Presolve 3 (0) rows, 5 (0) columns and 9 (0) elements\n", - "0 Obj 0 Dual inf 480 (2)\n", - "0 Obj 0 Dual inf 480 (2)\n", - "6 Obj 2600\n", - "Optimal - objective value 2600\n", - "Optimal objective 2600 - 6 iterations time 0.002\n", - "Total time (CPU seconds): 0.00 (Wallclock seconds): 0.00\n", - "\n" + "Running HiGHS 1.5.3 [date: 2023-05-16, git hash: 594fa5a9d]\n", + "Copyright (c) 2023 HiGHS under MIT licence terms\n", + "WARNING: No semi-integer/integer variables in model with non-empty integrality\n", + "Presolving model\n", + "2 rows, 4 cols, 6 nonzeros\n", + "2 rows, 4 cols, 6 nonzeros\n", + "Presolve : Reductions: rows 2(-1); columns 4(-1); elements 6(-3)\n", + "Solving the presolved LP\n", + "Using EKK dual simplex solver - serial\n", + " Iteration Objective Infeasibilities num(sum)\n", + " 0 -2.0999953995e+02 Ph1: 2(4); Du: 3(210) 0s\n", + " 3 -2.6000000000e+03 Pr: 0(0) 0s\n", + "Solving the original LP from the solution after postsolve\n", + "Model status : Optimal\n", + "Simplex iterations: 3\n", + "Objective value : 2.6000000000e+03\n", + "HiGHS run time : 0.00\n" ] } ], @@ -520,7 +454,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -571,7 +505,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -600,7 +534,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -609,7 +543,7 @@ "2600.0" ] }, - "execution_count": 13, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -627,7 +561,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -655,7 +589,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -685,7 +619,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -738,12 +672,12 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 16, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxAAAAFOCAYAAAAW4vtTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAueUlEQVR4nO3de1yUdd7/8fcAMoCKgiFqGJCmpq6VleczaB6Cbs3ygLuppau3q7kd10cH0TK7rbWTpWZ7528LcE0lOzzUjNS1LEvTzLLMkgKP5QEwTiLf3x/ezDrOoBcwzoC8no/HPIrr+s7M55ovfr+85zrZjDFGAAAAAGCBn68LAAAAAFBzECAAAAAAWEaAAAAAAGAZAQIAAACAZQQIAAAAAJYRIAAAAABYRoAAAAAAYBkBAgAAAIBlBAgAAAAAlhEgAEmZmZmy2WwaO3asr0txYrPZ1KdPH1+XAQC4DGzcuFE2m03JyclVep2lS5fKZrNp6dKlHqkLNQ8BAl5ls9mcHv7+/rriiivUr18/paam+ro8r4uJiVFMTIyvywCAKnE3toeHh6tPnz5aunSpjDG+LvGCkpOTHbX/6U9/Krfdpk2bHO08MXYzB6CmCvB1AaidZs6cKUk6ffq0vvvuO61evVobNmzQtm3bNH/+fB9XV33s2bNHISEhvi4DACw5d2zft2+f0tPTtWnTJm3btk0LFizwcXUXFxAQoBUrVujFF19Uw4YNXdYvWbJEAQEBKikp8X5xHtCpUyft2bNHV1xxha9LQQ1HgIBPnL/7NCMjQ/3799fzzz+vadOm8Y3M/2nTpo2vSwAAy84f2z/55BP16tVLr7zyiu6//37Fxsb6pjCLbr31Vr399ttKSUnRlClTnNadOHFCK1euVEJCgtLT031UYdWEhIQwr8AjOIQJ1UJcXJzatGkjY4y++OILSf/Zpbxx40alpqaqc+fOqlevnlO4OHTokKZMmaKYmBgFBgYqIiJCw4YN0/bt292+T15enu677z5FRUUpKChIbdq00fz581VaWuq2fZ8+fWSz2dyuu9AxoNnZ2Zo2bZquueYaBQcHKzw8XJ06ddITTzwh6T/Hof7888/6+eefnXb9n3seRnnnQOTk5GjGjBlq3bq1goKCFBYWpltuuUUffvihS9tzj3nduXOnhgwZooYNGyokJES9e/fWli1b3G4fAFRV9+7dHWP7+ePy9u3bde+99+q6665TeHi4goKCdM011+j+++/XiRMnnNquW7dONptNjzzyiNPyDRs2OMbOrKwsp3UjRoyQzWbTTz/9ZLnegQMHKioqSq+99prLujfeeEOFhYWaMGGC2+cWFxdrwYIFGjx4sKKjo2W32xUeHq74+HitWbPGqa3VOUCSvvvuO40dO1bNmzdXYGCgIiMjNXr0aH3//fcuNYwdO9axzS+99JI6dOig4OBgxzxS3jkQFemLC9m1a5dGjRqlmJgY2e12RUREqGPHjpo+fbpOnz5t+XVQ/bEHAtVG2TGy5//B/ve//13r169XQkKC+vbtq5ycHEnS/v371aNHDx08eFD9+vXTqFGjlJWVpbfeekvvv/++Vq5cqVtvvdXxOkVFRYqLi9MXX3yh6667TklJSTp58qSeeOIJbdq0yWPbsW3bNt1yyy06fvy4evXqpWHDhik/P1/ffvutkpOT9dhjjykmJkYzZ87U888/L0maPn264/nXX3/9BV//5MmT6t69u7799lvdfPPNmj59un777TctX75cAwYM0MKFC/XnP//ZbV3z5s1T165ddc899+iXX37RypUrFRcXp507d6p169Ye+wwA4Hx16tRx+nnJkiVKT09X7969FR8fr9LSUm3fvl3z58/XmjVrtHXrVtWvX1+S1LNnTwUGBiojI0Nz5sxxvEZGRobT/5f98W2M0YYNGxQTE6Orr77aco3+/v4aP368Zs+erW3btummm25yqjc2Nlbx8fFun3v8+HHde++96tatm/r376+IiAgdOnRI7777rgYPHqwlS5bonnvukSTLc8DatWs1bNgwnT59WgkJCWrZsqWys7O1atUqvf/++9qwYYM6duzoUsu9996rzZs3a8iQIRo8eLD8/f0vuN0V6Yvy7Nq1S507d5bNZlNiYqJiY2OVm5urffv26ZVXXtGTTz7p8juAGswAXiTJuPu1W79+vbHZbMZms5nMzExjjDEzZ840kkxISIj58ssvXZ4zYMAAI8k8+eSTTss/+eQT4+/vb8LDw01eXp5j+Zw5c4wkM2zYMHPmzBnH8p9++smEhYUZSeauu+5yeq3evXu7rdcYY15//XUjybz++uuOZUVFRSYmJsZIMikpKS7PycrKcvo5OjraREdHu319Y85+Xr1793ZaNnHiRCPJTJw40ZSWljqW792714SGhprAwECzf/9+x/INGzY4PvdzazXGmEWLFhlJZvLkyeXWAAAXU97YvmnTJuPn52cCAwPNwYMHndZlZmaakpISl+e89tprRpJ5+umnnZb37NnT+Pv7m5MnTzqWdenSxdxwww2mUaNGZsyYMY7lO3fuNJLM+PHjLdVfNt8sWbLEZGZmGj8/PzNx4kTH+k8//dQx35w+fdpIchm7CwsLXcZ4Y4w5efKkadeunQkLCzP5+flO6y40Bxw/ftw0bNjQNGrUyHzzzTdO677++mtTt25dc8MNNzgtv+uuu4wk06xZM/PTTz+5vGbZfDBz5kyn5RXtC3fz33333Wckmbffftvttpw776Lm4xAm+ERycrKSk5P1yCOPaPjw4Ro4cKCMMZo+fbqio6Od2k6cOFE33HCD07Ls7Gx98MEHuuqqq/TQQw85revWrZtGjRql48ePa9WqVY7lr7/+uvz8/DRv3jz5+f3nVz82NlbTpk3zyHa9++67yszMVGJiokaPHu2yPioqqkqvX1xcrDfffFP16tXT3LlznfbWXHPNNZo2bZqKi4v1z3/+0+W53bt3d9k1Pn78eAUEBOjzzz+vUl0AIDmP7SNGjFB8fLyMMXr22WfVtGlTp7bR0dFuvxkfP368QkNDtW7dOqflcXFxOnPmjGOPcV5enrZt26b+/furb9+++uijjxxty/ZMxMXFVXgboqOjNWDAAKWlpen333+XdPYben9/f40bN67c59ntdrdjfIMGDTR+/HidOHHCcYiuFf/85z918uRJzZo1S23btnVa1759e02YMEE7duzQt99+6/Lchx56qELnm1S0Ly4kODjYZVlYWJjTvIuaj0OY4BOzZs2SdPZwpYYNG6pnz566++67NWbMGJe2nTp1clm2Y8cOSWd3a7vbJdqvXz+9+eab2rFjh/70pz8pLy9P+/btU/PmzdWiRQuX9n369HHUVBWfffaZJGnQoEFVfi13vv/+e+Xn56t79+4KDw93Wd+vXz89+eSTjs/nXOfuii9Tp04dRUZGVugYVwAoz/njqM1m0z/+8Q+3f3ifPn1aixcv1rJly/Ttt98qJyfH6Xy0AwcOOLXv16+fkpOTlZGRocTERG3atEklJSWKi4tTTEyMVqxYoT179ujaa691hIl+/fpVajsmTJigtWvXatmyZbrjjjv0r3/9S0OGDFGzZs0ueAWmb775Rs8884z+/e9/69ChQyosLHRaf/42Xcinn34qSfrqq6/c3rdh7969ks5ere/8gOFu3ryQivaFOyNGjNALL7yg//qv/9Lw4cMVHx+v7t27u51zUfMRIOATpgLXBG/SpInLsrLzIM7/RqtM2fKTJ086tY+MjLT8HpVR9n5XXnmlR17vfBXd7nO5uyShdPayhWfOnPFIfQBqt7Kx/ffff9enn36qu+++W5MmTVJ0dLTLH/MjRoxQenq6rr76at12221q0qSJ7Ha7JOn5559XUVGRU/suXbqobt26jr0LGRkZCgwMVI8ePRwX18jIyNA111yjf//732rbtm2lx/aEhARFRkbqtdde0+nTp/X777+Xe/J0mc8++0z9+vVzhJrExESFhobKz89PO3fu1OrVq1226UKOHTsm6ezejws5deqUy7KKbndF+8KdTp06afPmzZozZ45WrFihN954Q5LUunVrzZw5U6NGjapQTajeCBCo9txdBalBgwaSpMOHD7t9zqFDh5zalf33yJEjbtuX9zplu1xLSkoUEOD8z+VCf6RX5FumiqjodgOAL9StW1fx8fF699131bFjR9111136/vvvHfe12bZtm9LT0x1XKDp3fC0tLdW8efNcXrNOnTrq0aOH1q1bp8OHDysjI0Ndu3ZVSEiIWrVqpaioKH344Yfq2LGj8vLyKr33oey9xo0bp6efflrZ2dmKioq66J7lJ598UgUFBdqwYYPL1fPmzp2r1atXV6iGsnH8q6++UocOHSr03PKuHuhOZfqiPF27dtV7772noqIibd++XWvXrtVLL72k0aNHKyIiotwT0FHzcEAaaqSycyI+/vhjt7uTN2zYIEmOq1PUr19fLVu21IEDB/Tjjz+6tN+4caPb9wkLC5Mkl8sDSmcH3fN16dJFklwu2Vcef3//Cn3737p1a4WEhOirr75yG2DO324A8KUOHTpowoQJys7O1nPPPedYvm/fPklSYmKiy5czn3/+uQoKCty+Xtk5DWlpadq9e7fTOQ79+vXTxo0btX79eqe2lXXPPffIZrMpOztb48ePv+iVjPbt2+e4+/b5yrvS34XmgLL5ZPPmzRUrvIIq2xcXYrfb1a1bN82ePVsvvviiJFU4QKF6I0CgRoqKilL//v2VmZnpuAxema1btyo1NVVhYWEaOnSoY/m4ceNUWlqqhx9+2OnYzv37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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxAAAAFOCAYAAAAW4vtTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtQ0lEQVR4nO3de3yM577///fkNAQ5oSIVCUVS7aJUEbROKdGUttpVP2UXUTZbl1r1aFft7m50tTse2to9WNW1VZPV1ZblFK22qBUR2qUIQh1KqUO0Ul3IgRKHXL8/fDPLyETvJGMmE6/n4zEP5r6vmflcM1xX3rnu+x6bMcYIAAAAACzw83YBAAAAAHwHAQIAAACAZQQIAAAAAJYRIAAAAABYRoAAAAAAYBkBAgAAAIBlBAgAAAAAlhEgAAAAAFhGgAAAAABgGQECN7xDhw7JZrNp5MiR3i7Fic1mU69evbxdBgCgFli7dq1sNpumTZtWredJT0+XzWZTenq6W+qCbyJAwGNsNpvTzd/fX40aNVKfPn300Ucfebs8j4uNjVVsbKy3ywCAanE1tkdERKhXr15KT0+XMcbbJV7TtGnTHLU//vjjFbbLzs52tHPH2M0cAF8W4O0CcOOZOnWqJOnChQv69ttv9fHHHysrK0s5OTmaNWuWl6urOfbs2aPg4GBvlwEAllw5tu/fv18ZGRnKzs5WTk6OZs+e7eXqfl1AQIAWL16sN998U2FhYeX2z507VwEBAbp48aLni3ODzp07a8+ePWrUqJG3S0EtQICAx129fJqZmal7771Xr7/+uiZOnMhvZP6f+Ph4b5cAAJZdPbZ/9dVXuueee/T2229r8uTJatGihXcKs+j+++/XsmXL9OGHH2rChAlO+06dOqUlS5Zo4MCBysjI8FKF1RMcHMy8ArfhECZ4Xd++fRUfHy9jjDZv3izpX0vKa9eu1UcffaQuXbqofv36TuHi2LFjmjBhgmJjYxUUFKTGjRtr8ODB2rJli8vXKS4u1tNPP61mzZqpTp06io+P16xZs1RaWuqyfa9evWSz2Vzuu9YxoEePHtXEiRPVunVr1a1bVxEREercubP++Mc/SvrXcaiHDx/W4cOHnZb+rzwPo6JzIAoLCzVlyhTFxcWpTp06Cg8PV//+/fX3v/+9XNsrj3nNzc1VcnKywsLCFBwcrJ49e+of//iHy/4BQHV1797dMbZfPS5v2bJFTz31lNq3b6+IiAjVqVNHrVu31uTJk3Xq1CmntqtWrZLNZtPzzz/vtD0rK8sxdubl5TntGzJkiGw2m77//nvL9SYlJalZs2Z69913y+3761//qnPnzmnMmDEuH3v+/HnNnj1b9913n2JiYmS32xUREaHExEStWLHCqa3VOUCSvv32W40cOVLR0dEKCgpSkyZN9Nhjj2nv3r3lahg5cqSjz2+99ZbatWununXrOuaRis6BqMxncS07duzQ0KFDFRsbK7vdrsaNG6tjx46aNGmSLly4YPl54BtYgUCNUHaM7NU/sL/22mtavXq1Bg4cqN69e6uwsFCSdPDgQfXo0UM//vij+vTpo6FDhyovL0+LFi3SZ599piVLluj+++93PE9JSYn69u2rzZs3q3379ho2bJgKCgr0xz/+UdnZ2W7rR05Ojvr376+TJ0/qnnvu0eDBg/XLL79o9+7dmjZtml544QXFxsZq6tSpev311yVJkyZNcjz+jjvuuObzFxQUqHv37tq9e7fuuusuTZo0Sf/85z+1cOFC9evXT3PmzNG///u/u6xr5syZSkhI0BNPPKEjR45oyZIl6tu3r3JzcxUXF+e29wAArhYYGOh0f+7cucrIyFDPnj2VmJio0tJSbdmyRbNmzdKKFSu0ceNGNWjQQJJ09913KygoSJmZmXr55Zcdz5GZmen097Ifvo0xysrKUmxsrFq2bGm5Rn9/f6WkpOjFF19UTk6OOnXq5FRvixYtlJiY6PKxJ0+e1FNPPaVu3brp3nvvVePGjXXs2DEtX75c9913n+bOnasnnnhCkizPAStXrtTgwYN14cIFDRw4UK1atdLRo0e1dOlSffbZZ8rKylLHjh3L1fLUU09p/fr1Sk5O1n333Sd/f/9r9rsyn0VFduzYoS5dushms2nQoEFq0aKFioqKtH//fr399tt66aWXyv0bgI8zgIdIMq7+ya1evdrYbDZjs9nMoUOHjDHGTJ061UgywcHBZuvWreUe069fPyPJvPTSS07bv/rqK+Pv728iIiJMcXGxY/vLL79sJJnBgwebS5cuObZ///33Jjw83EgyI0aMcHqunj17uqzXGGPS0tKMJJOWlubYVlJSYmJjY40k8+GHH5Z7TF5entP9mJgYExMT4/L5jbn8fvXs2dNp29ixY40kM3bsWFNaWurY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ju08ePCgY4C7WtlxpFcvIWdmZmr+/Pnl2g8cOFCxsbH65JNPXO4/evSo0/2GDRvq559/tjxABwUFadiwYSouLtYLL7zgtO/AgQN68803FRgYqH/7t3+z9HwAcL3913/9l+x2u1599VXH+VZlhxxd/cub48ePl/sCtyuVrSrMmDFDxphyAaKwsFBvv/22/Pz8XP4gXxm33HKLVq5cqYyMDEsX2oiNjdXJkye1Y8cOp+3z5s2r8CTka80Bo0aNUlhYmKZPn+7yQhelpaUV/vKrMqr6WVztH//4h8t+lK38l60+ofbgECb4pHfeeUfdu3fXM888oy+++EKdOnVyfA+En5+f0tLSnK5bPXnyZC1btkxLlixRx44d1b9/fxUUFGjhwoW655579Mknn5R7jVGjRumVV15Ramqqtm/frrZt22rfvn1asWKFHnroIS1ZssSpfVBQkBYtWqR+/frpscce05///Gd17dpV586d0549e5SZmem0YlL2vRRJSUm65557ZLfb1b59ew0cOLDCfs+YMUPr16/X7NmztXnzZvXu3dvxPRDFxcWaPXt2jf+2VwA3jptvvlnjxo3TG2+8oZkzZyo1NVV33XWXunfvrqVLl6pbt27q0aOHfvrpJ61YsUJxcXGKiopy+VwdOnRQeHi4jh8/rgYNGjidLFwWJo4fP65OnTpVeN5XZfTr189y20mTJmnVqlXq0aOHHn30UYWGhionJ0dffvmlHnnkES1evLjcY641BzRs2FCLFy/WQw89pK5du6pv37667bbbHF+at2HDBp04caLcidqVVdXP4mozZ87UmjVrdPfdd6tFixaqX7++du3apRUrVig8PFxjx46tVp2ogbx6EVncUFTBtcJdKbsud1ZWVoVtjh49asaNG2eaN29uAgMDTcOGDc0DDzxgNm3a5LJ9YWGh+f3vf2+ioqKM3W43cXFx5tVXXzUHDhxw+T0Qxhizc+dOM2DAAFO/fn1Tr14907NnT7N27VqX18Euc/jwYTN+/HgTGxtrAgMDTUREhOncubN5+eWXndqdPn3ajBs3ztx8883G39+/XA1y8T0Qxhhz6tQp8+yzz5pWrVqZoKAgExoaahITE82qVavKta3out9lfu27KADg1/za2J6fn2+Cg4NNcHCwyc/PN8YYc+LECTN+/HgTExNj7Ha7admypZkyZYo5c+bMNcel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EAAAAAAsI0AAAAAAsIwAAQAAAMAyAgQAAAAAywgQAAAAACwjQAAAAACwjAABAAAAwDICBAAAAADLCBAAAAAALCNAAAAAALAswBsvaoyRJBUVFXnj5QHghlU27paNwzUN8wMAeEdl5gevBIgTJ05IkqKjo73x8gBwwysuLlZoaKi3yyiH+QEAvMvK/OCVABERESFJOnLkSI2cwKqrqKhI0dHRysvLU0hIiLfLcTv657tqc98k+meFMUbFxcWKiopyc3XuUdvnh5qitv9fqUl4rz2H97p6KjM/eCVA+PldPvUiNDS0Vn/AISEh9M+H1eb+1ea+SfTv19TkH8xvlPmhpqjt/1dqEt5rz+G9rjqr8wMnUQMAAACwjAABAAAAwDKvBAi73a6pU6fKbrd74+WvO/rn22pz/2pz3yT6VxvcCH2sCXifPYf32nN4rz3HZmrqtfwAAAAA1DgcwgQAAADAMgIEAAAAAMsIEAAAAAAs83iA+NOf/qTY2FjVqVNHXbp00aZNmzxdgtusW7dOAwcOVFRUlGw2m5YtW+a03xij//7v/1bTpk1Vt25dJSYm6rvvvvNOsZWUmpqqu+66Sw0aNNBNN92kBx98UHv37nVqc+7cOU2YMEENGzZU/fr19fDDD+unn37yUsWVM2fOHLVr185xreiEhAStWLHCsd+X+3a1GTNmyGazadKkSY5tvt6/adOmyWazOd3i4+Md+329fz/88IOGDx+uhg0bqm7duvrNb36jnJwcx35fHluupTbND97grnH7yJEjSk5OVnBwsG666SY988wzunjxoie74nOqOs7yXlvjjjHx5MmTGjZsmEJCQhQWFqbRo0fr9OnTnu5K7WE8aMGCBSYoKMi89957ZteuXWbMmDEmLCzM/PTTT54sw20+//xz8/zzz5ulS5caSSYjI8Np/4wZM0xoaKhZtmyZ2b59uxk0aJBp0aKFOXv2rHcKroT+/fubtLQ0s3PnTpObm2vuu+8+07x5c3P69GlHm3Hjxpno6GiTmZlpcnJyTNeuXU23bt28WLV1n3zyifnss8/Mvn37zN69e81//ud/msDAQLNz505jjG/37UqbNm0ysbGxpl27duapp55ybPf1/k2dOtXcdttt5tixY47bzz//7Njvy/07efKkiYmJMSNHjjQbN24033//vVm1apXZv3+/o40vjy0VqW3zgze4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", "text/plain": [ "
" ] @@ -800,7 +734,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.2" + "version": "3.10.10" }, "latex_envs": { "LaTeX_envs_menu_present": true, diff --git a/genindex.html b/genindex.html index aa53d7ab..0cfcecc0 100644 --- a/genindex.html +++ b/genindex.html @@ -671,11 +671,13 @@

S

solver
    -
  • cbc, [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31] +
  • cbc, [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30]
  • cplex, [1], [2]
  • cvxpy +
  • +
  • HiGHS
  • highs, [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]
  • diff --git a/notebooks/01/production-planning-advanced.html b/notebooks/01/production-planning-advanced.html index 60ca3732..00bbe780 100644 --- a/notebooks/01/production-planning-advanced.html +++ b/notebooks/01/production-planning-advanced.html @@ -529,27 +529,21 @@

    Contents

    We will begin this analysis by examining the problem data sets to identify the underlying problem structure.

    Preamble: Install Pyomo and a solver#

    -

    This cell selects and verifies a global SOLVER for the notebook.

    -

    If run on Google Colab, the cell installs Pyomo and HiGHS, then sets SOLVER to -use the Highs solver via the appsi module. If run elsewhere, it assumes Pyomo and CBC -have been previously installed and sets SOLVER to use the CBC solver via the Pyomo -SolverFactory. It then verifies that SOLVER is available.

    +

    The following cell checks if the notebook is run on Google Colab. If so, it does a quiet installation of Pyomo and the HiGHS solver. The solver is then selected, a test performed to verify that the solver is available, and the solver interface is stored in a global object SOLVER for later use.

    import sys
    -
    + 
     if 'google.colab' in sys.modules:
    -    !pip install pyomo >/dev/null 2>/dev/null
    -    !pip install highspy >/dev/null 2>/dev/null
    -
    -    from pyomo.environ import SolverFactory
    -    SOLVER = SolverFactory('appsi_highs')
    -    
    -else:
    -    from pyomo.environ import SolverFactory
    -    SOLVER = SolverFactory('cbc')
    -
    -assert SOLVER.available(), f"Solver {SOLVER} is not available."
    +    %pip install pyomo >/dev/null 2>/dev/null
    +    %pip install highspy >/dev/null 2>/dev/null
    + 
    +solver = 'appsi_highs'
    + 
    +import pyomo.environ as pyo
    +SOLVER = pyo.SolverFactory(solver)
    + 
    +assert SOLVER.available(), f"Solver {solver} is not available."
     
    @@ -813,9 +807,7 @@

    The production model in PyomoConcreteModel.

    -
    import pyomo.environ as pyo
    -
    -model = pyo.ConcreteModel()
    +
    model = pyo.ConcreteModel()
     
    @@ -998,6 +990,8 @@

    The production model in PyomoSome readers of these notebooks may be more experienced Python developers who wish to apply Pyomo in more specialized, data driven applications. The following cell shows how the Pyomo ConcreteModel() class can be extended by subclassing to create specialized model classes. Here we create a subclass called ProductionModel that accepts a particular representation of the problem data to produce a production model object. The production model object inherits all of the methods associated with any ConcreteModel, such as .display(), .solve(), and .pprint(), but can be extended with additional methods.

    -
    import pyomo.environ as pyo
    -
    -
    -class ProductionModel(pyo.ConcreteModel):
    +
    class ProductionModel(pyo.ConcreteModel):
         """
         A class representing a production model using Pyomo.
         """
    @@ -1120,7 +1111,9 @@ 

    For Python experts: Creating subclasses of -
    Profit = 2600.0
    +
    Running HiGHS 1.5.3 [date: 2023-05-16, git hash: 594fa5a9d]
    +Copyright (c) 2023 HiGHS under MIT licence terms
    +Profit = 2600.0
     
     Production Report
      U  produced =  20.0
    diff --git a/notebooks/01/production-planning-basic.html b/notebooks/01/production-planning-basic.html
    index 71a62928..5e482c99 100644
    --- a/notebooks/01/production-planning-basic.html
    +++ b/notebooks/01/production-planning-basic.html
    @@ -539,33 +539,24 @@ 

    Contents

    This notebook also introduces the use of Python decorators to designate Pyomo expressions, objectives, and constraints. While decorators may be unfamiliar to some Python users, or even current Pyomo users, they offer a significant improvement in the readability of Pyomo model. This feature is relatively new and is available in recent versions of Pyomo.

    Preamble: Install Pyomo and a solver#

    -

    This collection of notebooks is intended to be run in the cloud on Google Colab or on a personal computer. To meet this goal, we start each notebook by verifying the installation of Pyomo and an appropriate solver. When run on Google Colab, an installation of Pyomo and a solver must be done for each new Colab session. The HiGHS solver is a high performance open source solver for linear and mixed integer optimization on Google Colab. For a personal computer, we assume Python, Pyomo and the COIN-OR Cbc solver (“COIN-OR branch and cut”) have been previously installed. Note that there are other suitable solvers, both open-source, such as GLPK, and commercial, such as CPLEX, Gurobi, and Mosek.

    -

    The following cell checks if the notebook is running on Google Colab. If so, it does a quiet installation of Pyomo and a solver. A solver is then selected, a test performed to verify that the solver is available, and the solver interface is stored in a global object SOLVER for later use.

    +

    This collection of notebooks is intended to be run in the cloud on Google Colab or on a personal computer. To meet this goal, we start each notebook by verifying the installation of Pyomo and an appropriate solver.

    +

    When run on Google Colab, an installation of Pyomo and a solver must be done for each new Colab session. The HiGHS solver is a high performance open source solver for linear and mixed integer optimization on Google Colab. For a personal computer, we assume Python, Pyomo and the HiGHS solver have been previously installed. Note that there are other suitable solvers, both open-source, such as COIN-OR Cbc solver and GLPK, and commercial, such as CPLEX, Gurobi, and Mosek.

    +

    The following cell sets and verifies a global SOLVER for the notebook. If run on Google Colab, the cell installs Pyomo and the HiGHS solver, while, if run elsewhere, it +assumes Pyomo and HiGHS have been previously installed. It then sets to use HiGHS as solver via the appsi module and a test is performed to verify that it is available. The solver interface is stored in a global object SOLVER for later use.

    -
    """
    -This cell sets and verifies a global SOLVER for the notebook.
    -
    -If run on Google Colab, the cell installs Pyomo and HiGHS, then sets SOLVER to use
    -the Highs solver via the appsi module. If run elsewhere, it assumes Pyomo and CBC
    -have been previously installed and sets SOLVER to use the CBC solver via the Pyomo 
    -SolverFactory. For both cases, it then verifies that SOLVER is available.
    -"""
    -
    -import sys
    -
    +
    import sys
    + 
     if 'google.colab' in sys.modules:
    -    !pip install pyomo >/dev/null 2>/dev/null
    -    !pip install highspy >/dev/null 2>/dev/null
    -
    -    from pyomo.environ import SolverFactory
    -    SOLVER = SolverFactory('appsi_highs')
    -    
    -else:
    -    from pyomo.environ import SolverFactory
    -    SOLVER = SolverFactory('cbc')
    -
    -assert SOLVER.available(), f"Solver {SOLVER} is not available."
    +    %pip install pyomo >/dev/null 2>/dev/null
    +    %pip install highspy >/dev/null 2>/dev/null
    + 
    +solver = 'appsi_highs'
    + 
    +import pyomo.environ as pyo
    +SOLVER = pyo.SolverFactory(solver)
    + 
    +assert SOLVER.available(), f"Solver {solver} is not available."
     
    @@ -573,7 +564,7 @@

    Preamble: Install Pyomo and a solver

    Step 1. Import Pyomo#

    -

    The first step for a new Pyomo model is to import the needed components into the Python environment. The module pyomo.environ provides the components most commonly used for building Pyomo models. This collection of notebooks uses a consistent convention of importing pyomo.environ with the pyo prefix.

    +

    The first step for a new Pyomo model is to import the needed components into the Python environment. The module pyomo.environ provides the components most commonly used for building Pyomo models. Although this module was imported in the previous code cell, we mention it again here also to emphasize our standardized conventions. Throughout this collection of notebooks, a uniform standard is maintained for importing pyomo.environ consistently using the alias pyo.

    import pyomo.environ as pyo
    @@ -699,73 +690,29 @@ 

    Step 4. Expressions#

    The objective for this example is to maximize profit which is given by the difference between revenue and cost. There are two ways this objective could be specified in Pyomo.

    The first method is to use pyo.Objective() where the expression to be optimized is assigned with the expr keyword and the type of objective is assigned with the sense keyword.

    -
        model.profit = pyo.Objective(expr = model.revenue - model.cost, sense = pyo.maximize)
    +
        model.profit = pyo.Objective(expr=model.revenue - model.cost, sense=pyo.maximize)
     

    Recent releases of Pyomo provide a second method that uses Python decorators to specify an objective. With a decorator, the same objective is written as

    -
        @model.Objective(sense = pyo.maximize)
    -    def profit(m):
    -        return m.revenue - m.cost
    -
    -
    -

    Python decorators modify the behavior of the function defined in the next line. In this case, the decorator @model.Objective() modifies the behavior of profit() so that it returns an expression for the profit to Pyomo. The keyword sense sets the type of objective, which can either be to maximize or minimize the value returned by the objective function. The function profit(), after being decorated, takes the Pyomo model as its first argument and adds its name to the model attributes.

    -

    In effect, Pyomo decorators are tags that insert functions into a Pyomo model to serve as expressions, objectives, or constraints. Decorators can improve the readability and maintainability of more complex models. They also simplify the syntax for creating other Pyomo objects expressions, constraints, and other optimization-related elements.

    @model.Objective(sense=pyo.maximize)
     def profit(m):
         return m.revenue - m.cost
    -
    -
    -model.display()
    -
    -
    -
    -
    -
    Model 'Production Planning: Version 1'
    -
    -  Variables:
    -    x_M : Size=1, Index=None
    -        Key  : Lower : Value : Upper : Fixed : Stale : Domain
    -        None :     0 :  None :  None : False :  True :  Reals
    -    x_A : Size=1, Index=None
    -        Key  : Lower : Value : Upper : Fixed : Stale : Domain
    -        None :     0 :  None :    80 : False :  True :  Reals
    -    x_B : Size=1, Index=None
    -        Key  : Lower : Value : Upper : Fixed : Stale : Domain
    -        None :     0 :  None :   100 : False :  True :  Reals
    -    y_U : Size=1, Index=None
    -        Key  : Lower : Value : Upper : Fixed : Stale : Domain
    -        None :     0 :  None :    40 : False :  True :  Reals
    -    y_V : Size=1, Index=None
    -        Key  : Lower : Value : Upper : Fixed : Stale : Domain
    -        None :     0 :  None :  None : False :  True :  Reals
    -
    -  Objectives:
    -    profit : Size=1, Index=None, Active=True
    -ERROR: evaluating object as numeric value: y_U
    -        (object: <class 'pyomo.core.base.var.ScalarVar'>)
    -    No value for uninitialized NumericValue object y_U
    -ERROR: evaluating object as numeric value: profit
    -        (object: <class 'pyomo.core.base.objective.ScalarObjective'>)
    -    No value for uninitialized NumericValue object y_U
    -        Key : Active : Value
    -        None :   None :  None
    -
    -  Constraints:
    -    None
     
    +

    Python decorators modify the behavior of the function defined in the next line. In this case, the decorator @model.Objective() modifies the behavior of profit() so that it returns an expression for the profit to Pyomo. The keyword sense sets the type of objective, which can either be to maximize or minimize the value returned by the objective function. The function profit(), after being decorated, takes the Pyomo model as its first argument and adds its name to the model attributes.

    +

    In effect, Pyomo decorators are tags that insert functions into a Pyomo model to serve as expressions, objectives, or constraints. Decorators can improve the readability and maintainability of more complex models. They also simplify the syntax for creating other Pyomo objects expressions, constraints, and other optimization-related elements.

    Step 6. Constraints#

    Constraints are logical relationships between expressions that define the range of feasible solutions in an optimization problem. A constraint consists of two expressions separated by one of the logical relationships. The logical relationships can be equality (==), less-than (<=), or greater-than (>=).

    Constraints can be created with pyo.Constraint(). The constraint is passed as a keyword argument expr to pyo.Constraint(). For this application the constraints could be expressed as

    -
    model.raw_materials = pyo.Constraint(expr = 10 * model.y_U + 9 * model.y_V <= model.x_M)
    -model.labor_A = pyo.Constraint(expr = 1 * model.y_U + 1 * model.y_V <= model.x_A)
    -model.labor_B = pyo.Constraint(expr = 2 * model.y_U + 1 * model.y_V <= model.x_B)
    +
        model.raw_materials = pyo.Constraint(expr = 10 * model.y_U + 9 * model.y_V <= model.x_M)
    +    model.labor_A = pyo.Constraint(expr = 1 * model.y_U + 1 * model.y_V <= model.x_A)
    +    model.labor_B = pyo.Constraint(expr = 2 * model.y_U + 1 * model.y_V <= model.x_B)
     

    Alternatively, the @model.Constraint() decorator ‘tags’ the output of the following function as a constraint. For the present example, the constraints are expressed with decorators below. This collection of notebooks uses decorators whenever possible to improve the readability and maintainability of Pyomo models.

    @@ -840,37 +787,23 @@

    Step 7. Solve the model

    -
    Welcome to the CBC MILP Solver 
    -Version: 2.10.10 
    -Build Date: Apr 20 2023 
    -
    -command line - /opt/homebrew/opt/cbc/bin/cbc -printingOptions all -import /var/folders/zb/k0pc77yj6c3gv6gr6jj41g1r0000gn/T/tmp2_hwem4f.pyomo.lp -stat=1 -solve -solu /var/folders/zb/k0pc77yj6c3gv6gr6jj41g1r0000gn/T/tmp2_hwem4f.pyomo.soln (default strategy 1)
    -Option for printingOptions changed from normal to all
    - CoinLpIO::readLp(): Maximization problem reformulated as minimization
    -Coin0009I Switching back to maximization to get correct duals etc
    -Presolve 3 (0) rows, 5 (0) columns and 9 (0) elements
    -Statistics for presolved model
    -
    -
    -Problem has 3 rows, 5 columns (5 with objective) and 9 elements
    -There are 3 singletons with objective 
    -Column breakdown:
    -2 of type 0.0->inf, 3 of type 0.0->up, 0 of type lo->inf, 
    -0 of type lo->up, 0 of type free, 0 of type fixed, 
    -0 of type -inf->0.0, 0 of type -inf->up, 0 of type 0.0->1.0 
    -Row breakdown:
    -2 of type E 0.0, 0 of type E 1.0, 0 of type E -1.0, 
    -0 of type E other, 0 of type G 0.0, 0 of type G 1.0, 
    -0 of type G other, 1 of type L 0.0, 0 of type L 1.0, 
    -0 of type L other, 0 of type Range 0.0->1.0, 0 of type Range other, 
    -0 of type Free 
    -Presolve 3 (0) rows, 5 (0) columns and 9 (0) elements
    -0  Obj 0 Dual inf 480 (2)
    -0  Obj 0 Dual inf 480 (2)
    -6  Obj 2600
    -Optimal - objective value 2600
    -Optimal objective 2600 - 6 iterations time 0.002
    -Total time (CPU seconds):       0.00   (Wallclock seconds):       0.00
    +
    Running HiGHS 1.5.3 [date: 2023-05-16, git hash: 594fa5a9d]
    +Copyright (c) 2023 HiGHS under MIT licence terms
    +WARNING: No semi-integer/integer variables in model with non-empty integrality
    +Presolving model
    +2 rows, 4 cols, 6 nonzeros
    +2 rows, 4 cols, 6 nonzeros
    +Presolve : Reductions: rows 2(-1); columns 4(-1); elements 6(-3)
    +Solving the presolved LP
    +Using EKK dual simplex solver - serial
    +  Iteration        Objective     Infeasibilities num(sum)
    +          0    -2.0999953995e+02 Ph1: 2(4); Du: 3(210) 0s
    +          3    -2.6000000000e+03 Pr: 0(0) 0s
    +Solving the original LP from the solution after postsolve
    +Model   status      : Optimal
    +Simplex   iterations: 3
    +Objective value     :  2.6000000000e+03
    +HiGHS run time      :          0.00
     
    @@ -1060,7 +993,7 @@

    Creating reports with Pandas -../../_images/cc4837d53cfd8491d2d7eac3d54a65e8f1ba9d94ac68084f404622a417d7b106.png +../../_images/bbf21b7015cc83ed41ea77948f1b50e50acb157c2ec5cec3589d2e68f557b116.png

    To discover more advanced Pyomo features, see the next notebook.

    diff --git a/searchindex.js b/searchindex.js index ad9e70b3..31881a00 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["genindex", "intro", "notebooks/01/01.00", "notebooks/01/production-planning", "notebooks/01/production-planning-advanced", "notebooks/01/production-planning-basic", "notebooks/02/02.00", "notebooks/02/L1-regression-wine-quality", "notebooks/02/bim", "notebooks/02/bim-dual", "notebooks/02/bim-fractional", "notebooks/02/bim-maxmin", "notebooks/02/bim-rawmaterialplanning", "notebooks/02/lad-regression", "notebooks/02/mad-portfolio-optimization", "notebooks/02/multiproductionfaciliity_worstcase", "notebooks/03/03.00", "notebooks/03/bim-perturbed", "notebooks/03/bim-production-revisited", "notebooks/03/cryptarithms", "notebooks/03/facility-location", "notebooks/03/job-shop-scheduling", "notebooks/03/machine-scheduling", "notebooks/03/maintenance-planning", "notebooks/03/recharging-electric-vehicle", "notebooks/03/shift-scheduling", "notebooks/03/simple-production-model-gdp", "notebooks/03/strip-packing", "notebooks/04/04.00", "notebooks/04/cryptocurrency-arbitrage", "notebooks/04/dinner-seat-allocation", "notebooks/04/forex-arbitrage", "notebooks/04/gasoline-distribution", "notebooks/04/graph-coloring", "notebooks/04/mincost-flow", "notebooks/04/power-network", "notebooks/05/05.00", "notebooks/05/cutting-stock", "notebooks/05/markowitz_portfolio", "notebooks/05/milk-pooling", "notebooks/05/ols-regression", "notebooks/05/refinery-production", "notebooks/05/svm", "notebooks/06/06.00", "notebooks/06/building-insulation", "notebooks/06/economic-order-quantity", "notebooks/06/investment-wheel", "notebooks/06/kelly-criterion", "notebooks/06/markowitz_portfolio_revisited", "notebooks/06/optimal-growth-portfolios", "notebooks/06/svm-conic", "notebooks/07/07.00", "notebooks/07/bim-robustness-analysis", "notebooks/07/fleet-assignment", "notebooks/08/08.00", "notebooks/08/bim-robust-optimization", "notebooks/09/09.00", "notebooks/09/economicdispatch", "notebooks/09/markowitz_portfolio_with_chance_constraint", "notebooks/09/pop-up_shop", "notebooks/09/seafood", "notebooks/10/10.00", "notebooks/10/airline-seating", "notebooks/10/ccg", "notebooks/10/farmer", "notebooks/10/opf-ldr", "notebooks/10/opf-wind-curtailment", "notebooks/appendix/appendix", "notebooks/appendix/functional-programming-pyomo", "notebooks/appendix/pyomo-style-guide"], "filenames": ["genindex.md", "intro.md", "notebooks/01/01.00.md", "notebooks/01/production-planning.ipynb", "notebooks/01/production-planning-advanced.ipynb", "notebooks/01/production-planning-basic.ipynb", "notebooks/02/02.00.md", "notebooks/02/L1-regression-wine-quality.ipynb", "notebooks/02/bim.ipynb", "notebooks/02/bim-dual.ipynb", "notebooks/02/bim-fractional.ipynb", "notebooks/02/bim-maxmin.ipynb", "notebooks/02/bim-rawmaterialplanning.ipynb", "notebooks/02/lad-regression.ipynb", "notebooks/02/mad-portfolio-optimization.ipynb", "notebooks/02/multiproductionfaciliity_worstcase.ipynb", "notebooks/03/03.00.md", "notebooks/03/bim-perturbed.ipynb", "notebooks/03/bim-production-revisited.ipynb", "notebooks/03/cryptarithms.ipynb", "notebooks/03/facility-location.ipynb", "notebooks/03/job-shop-scheduling.ipynb", "notebooks/03/machine-scheduling.ipynb", "notebooks/03/maintenance-planning.ipynb", "notebooks/03/recharging-electric-vehicle.ipynb", "notebooks/03/shift-scheduling.ipynb", "notebooks/03/simple-production-model-gdp.ipynb", "notebooks/03/strip-packing.ipynb", "notebooks/04/04.00.md", "notebooks/04/cryptocurrency-arbitrage.ipynb", "notebooks/04/dinner-seat-allocation.ipynb", "notebooks/04/forex-arbitrage.ipynb", "notebooks/04/gasoline-distribution.ipynb", "notebooks/04/graph-coloring.ipynb", "notebooks/04/mincost-flow.ipynb", "notebooks/04/power-network.ipynb", "notebooks/05/05.00.md", "notebooks/05/cutting-stock.ipynb", "notebooks/05/markowitz_portfolio.ipynb", "notebooks/05/milk-pooling.ipynb", "notebooks/05/ols-regression.ipynb", "notebooks/05/refinery-production.ipynb", "notebooks/05/svm.ipynb", "notebooks/06/06.00.md", "notebooks/06/building-insulation.ipynb", "notebooks/06/economic-order-quantity.ipynb", "notebooks/06/investment-wheel.ipynb", "notebooks/06/kelly-criterion.ipynb", "notebooks/06/markowitz_portfolio_revisited.ipynb", "notebooks/06/optimal-growth-portfolios.ipynb", "notebooks/06/svm-conic.ipynb", "notebooks/07/07.00.md", "notebooks/07/bim-robustness-analysis.ipynb", "notebooks/07/fleet-assignment.ipynb", "notebooks/08/08.00.md", "notebooks/08/bim-robust-optimization.ipynb", "notebooks/09/09.00.md", "notebooks/09/economicdispatch.ipynb", "notebooks/09/markowitz_portfolio_with_chance_constraint.ipynb", "notebooks/09/pop-up_shop.ipynb", "notebooks/09/seafood.ipynb", "notebooks/10/10.00.md", "notebooks/10/airline-seating.ipynb", "notebooks/10/ccg.ipynb", "notebooks/10/farmer.ipynb", "notebooks/10/opf-ldr.ipynb", "notebooks/10/opf-wind-curtailment.ipynb", "notebooks/appendix/appendix.md", "notebooks/appendix/functional-programming-pyomo.ipynb", "notebooks/appendix/pyomo-style-guide.md"], "titles": ["Index", "Hands-On Optimization with Python", "1. Mathematical Optimization", "A first production planning problem", "A data-driven Pyomo Model", "A basic Pyomo model", "2. Linear Optimization", "Extra material: Wine quality prediction with \\(L_1\\) regression", "BIM production", "Dual of the BIM production problem", "BIM production variants", "BIM production for worst case", "BIM production using demand forecasts", "Least Absolute Deviation (LAD) Regression", "Mean Absolute Deviation (MAD) portfolio optimization", "Extra material: Multi-product facility production", "3. Mixed Integer Linear Optimization", "BIM production with perturbed data", "BIM production revisited", "Extra material: Cryptarithms puzzle", "Facility location problem", "Extra material: Job shop scheduling", "Machine Scheduling", "Extra material: Maintenance planning", "Recharging strategy for an electric vehicle", "Workforce shift scheduling", "Production model using disjunctions", "Extra material: Strip packing", "4. Network Optimization", "Cryptocurrency arbitrage search", "Dinner seating arrangement", "Extra material: Forex Arbitrage", "Gasoline distribution", "Exam room scheduling", "Minimum-Cost Flow Problem", "Extra material: Energy dispatch problem", "5. Convex Optimization", "Extra Material: Cutting Stock", "Markowitz portfolio optimization", "Milk pooling and blending", "Ordinary Least Squares (OLS) Regression", "Extra material: Refinery production and shadow pricing with CVXPY", "Support Vector Machines for Binary Classification", "6. Conic Optimization", "Optimal Design of Multilayered Building Insulation", "Economic Order Quantity", "Extra material: Luenberger\u2019s Investment Wheel", "The Kelly Criterion", "Markowitz portfolio optimization revisited", "Extra material: Optimal Growth Portfolios with Risk Aversion", "Training Support Vector Machines with Conic Optimization", "7. Accounting for Uncertainty: Optimization Meets Reality", "Robustness analysis of BIM production plan via simulations", "Fleet assignment problem", "8. Robust Optimization - Single Stage Problems", "Robust BIM microchip production problem", "9. Stochastic Optimization - Single Stage Problems", "Economic dispatch in energy systems", "Markowitz portfolio optimization with chance constraints", "Pop-up shop", "Stock optimization for seafood distribution center", "10. Two-Stage Problems", "Airline seat allocation problem", "Two-stage Production Planning", "Extra: The farmer\u2019s problem and its variants", "Optimal power flow problem with recourse actions", "Extra: Two-stage energy dispatch optimization with wind curtailment", "Appendix: Working with Pyomo", "Functional Programming with Pyomo", "Pyomo style guide"], "terms": {"welcom": [1, 5, 69], "thi": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69], "repositori": [1, 7, 25, 57], "companion": [1, 5, 6, 16, 28, 36, 43, 54, 56, 61], "notebook": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 55, 57, 60, 63, 65, 66, 67, 68], "book": [1, 8, 15, 20, 22, 35, 42, 46, 47, 50, 57, 63, 65, 66, 69], "which": [1, 2, 3, 4, 5, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 35, 36, 37, 38, 39, 40, 42, 44, 45, 47, 48, 50, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "publish": 1, "cambridg": [1, 20], "univers": [1, 20, 25, 33], "press": [1, 20, 21], "2024": [1, 20], "introduc": [1, 2, 3, 4, 5, 9, 10, 11, 13, 18, 20, 21, 22, 23, 26, 27, 30, 32, 34, 35, 37, 39, 40, 42, 45, 46, 47, 49, 50, 57, 59, 62, 63, 66, 69], "concept": [1, 45, 46, 49, 50, 68], "tool": [1, 2, 5, 8, 13, 29, 30, 32, 40, 50, 53], "mathemat": [1, 5, 15, 20, 23, 29, 30, 32, 36, 37, 39, 44, 48, 49, 53, 59, 69], "exampl": [1, 2, 3, 4, 5, 6, 7, 8, 12, 16, 19, 20, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 36, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 64, 66, 69], "from": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 30, 31, 32, 33, 34, 35, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 61, 62, 63, 64, 65, 66, 68, 69], "rang": [1, 5, 7, 8, 12, 13, 14, 20, 21, 23, 24, 25, 27, 30, 33, 37, 38, 39, 42, 45, 46, 47, 48, 50, 52, 53, 55, 57, 58, 60, 63, 65, 66, 68, 69], "disciplin": [1, 41, 46, 47, 49], "The": [1, 2, 3, 6, 7, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 46, 48, 49, 52, 53, 55, 57, 58, 60, 62, 65, 66, 67, 69], "goal": [1, 2, 3, 5, 8, 18, 22, 27, 29, 30, 31, 33, 34, 35, 42, 57, 62, 66, 68], "ar": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 42, 44, 45, 46, 47, 49, 50, 51, 52, 53, 55, 57, 59, 62, 63, 64, 65, 66, 68, 69], "provid": [1, 4, 5, 7, 8, 12, 13, 14, 15, 18, 22, 23, 24, 29, 30, 31, 32, 35, 39, 40, 42, 45, 46, 47, 48, 49, 50, 57, 59, 62, 68, 69], "foundat": 1, "learn": [1, 7, 13, 30, 40, 42, 64], "demonstr": [1, 4, 5, 7, 8, 22, 24, 25, 29, 32, 35, 37, 39, 41, 42, 45, 46, 49, 50, 57, 62, 63, 65, 66, 67, 68], "practic": [1, 4, 5, 18, 27, 29, 32, 35, 37, 39, 42, 45, 46, 49, 50, 53, 57, 66, 68, 69], "reader": [1, 4, 7, 33, 63, 68], "develop": [1, 3, 4, 5, 26, 29, 32, 37, 39, 42, 45, 50, 69], "skill": [1, 2, 26], "need": [1, 2, 3, 4, 5, 8, 9, 10, 12, 14, 16, 18, 21, 23, 24, 25, 26, 27, 30, 33, 35, 37, 38, 39, 42, 43, 45, 50, 52, 53, 55, 57, 58, 60, 62, 63, 64, 65, 66, 68, 69], "build": [1, 4, 5, 18, 20, 25, 29, 37, 42, 43, 50, 52, 55, 62, 63, 66, 68, 69], "model": [1, 2, 6, 8, 9, 10, 16, 22, 28, 30, 33, 34, 36, 39, 43, 51, 52, 54, 56, 57, 58, 59, 60, 61, 63, 65, 66, 67], "solv": [1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 61, 64, 65, 66, 68, 69], "problem": [1, 2, 4, 5, 6, 13, 14, 15, 16, 19, 21, 26, 28, 36, 40, 42, 43, 49, 50, 51, 58, 66, 69], "state": [1, 3, 11, 18, 24, 29, 32, 35, 39, 55, 59, 68, 69], "art": [1, 7, 39], "languag": [1, 5, 41, 69], "solver": [1, 28, 40, 41, 42, 45, 47, 49, 50, 53, 58, 59, 62, 63, 64, 65], "make": [1, 2, 4, 8, 12, 14, 15, 16, 18, 21, 23, 24, 25, 29, 30, 32, 33, 35, 36, 37, 38, 41, 55, 57, 58, 63, 65, 68, 69], "extens": [1, 7, 20, 23, 26, 27, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 50, 55, 57, 58, 60, 68, 69], "pyomo": [1, 2, 3, 6, 16, 28, 36, 40, 43, 47, 54, 56, 58, 59, 61, 62, 63, 64], "complet": [1, 3, 18, 21, 22, 23, 29, 31, 39, 42, 45, 49, 50, 53, 62, 63, 66], "versatil": 1, "packag": [1, 3, 20, 21, 22, 27, 30, 44, 46, 47, 49, 57, 65], "ecosystem": 1, "mean": [1, 5, 6, 8, 9, 12, 13, 17, 18, 25, 29, 30, 34, 35, 37, 38, 40, 42, 45, 46, 47, 52, 53, 57, 58, 60, 62, 65, 66, 68], "decis": [1, 2, 3, 4, 6, 8, 9, 13, 14, 16, 17, 18, 21, 22, 23, 24, 26, 27, 30, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 57, 59, 60, 61, 62, 63, 65, 66, 68, 69], "variabl": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 55, 57, 59, 60, 61, 62, 63, 64, 65, 66, 68], "constraint": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 46, 47, 48, 49, 50, 52, 53, 55, 56, 57, 59, 60, 64, 65, 66, 68], "object": [1, 2, 3, 4, 6, 7, 8, 9, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "transform": [1, 4, 5, 8, 13, 17, 18, 23, 26, 37, 42, 47, 50, 69], "gener": [1, 2, 3, 4, 5, 6, 7, 8, 11, 14, 16, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 35, 38, 39, 44, 45, 48, 50, 51, 55, 57, 58, 60, 66, 68, 69], "solut": [1, 2, 3, 4, 8, 9, 10, 12, 13, 15, 16, 17, 18, 20, 22, 23, 24, 26, 27, 28, 29, 30, 33, 34, 35, 36, 38, 40, 41, 42, 45, 47, 48, 49, 50, 51, 53, 58, 68, 69], "open": [1, 2, 3, 5, 20, 25, 29], "sourc": [1, 3, 5, 20, 29, 30, 32, 35, 37, 39, 53, 66, 69], "commerci": [1, 3, 5, 20, 37, 45, 55], "all": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 20, 21, 22, 25, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 42, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68], "can": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "run": [1, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 42, 44, 46, 47, 48, 49, 52, 57, 60, 62, 66], "googl": [1, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "colab": [1, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "A": [1, 2, 6, 8, 13, 14, 15, 16, 17, 18, 21, 22, 23, 25, 26, 28, 29, 31, 32, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 58, 59, 60, 62, 63, 69], "launch": 1, "icon": 1, "appear": [1, 3, 4, 5, 7, 10, 13, 18, 19, 26, 29, 30, 31, 37, 39, 42, 44, 46, 48, 50, 53, 59, 62, 68, 69], "top": [1, 6, 8, 13, 16, 21, 22, 29, 37, 38, 40, 42, 47, 48, 50, 58, 63], "page": 1, "look": [1, 9, 12, 14, 27, 29, 50, 57, 63], "rocket": 1, "indic": [1, 4, 8, 11, 13, 16, 18, 22, 23, 26, 27, 29, 32, 35, 37, 39, 42, 44, 49, 50, 53, 60, 62, 63, 65, 66, 69], "an": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 42, 44, 45, 46, 47, 48, 49, 50, 51, 53, 55, 57, 58, 59, 62, 63, 65, 66, 67, 68, 69], "execut": [1, 7, 21, 22, 29, 30, 31, 59], "document": [1, 55, 69], "select": [1, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 46, 48, 49, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "reopen": 1, "cell": [1, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 59, 60, 62, 65, 66, 68], "insid": [1, 29, 68], "perform": [1, 5, 19, 20, 21, 22, 27, 29, 30, 46, 47, 51, 55, 59, 60, 62, 63, 64, 65, 66, 68], "ani": [1, 3, 4, 5, 6, 8, 13, 14, 15, 16, 18, 21, 22, 23, 24, 25, 27, 29, 30, 32, 33, 35, 37, 42, 45, 47, 49, 50, 59, 60, 62, 63, 64, 65, 68, 69], "necessari": [1, 4, 27, 28, 33, 39, 51, 57, 68], "instal": [1, 40, 41, 42, 45, 47, 49, 50, 53, 58, 59, 63, 64, 65, 68], "code": [1, 4, 5, 7, 8, 9, 12, 13, 17, 18, 19, 20, 24, 25, 27, 29, 30, 42, 45, 47, 49, 50, 63, 68], "within": [1, 5, 15, 20, 27, 29, 35, 55, 59, 63, 66, 68], "your": [1, 20, 23, 46, 62, 64], "journei": [1, 29], "first": [1, 2, 4, 5, 6, 8, 9, 10, 12, 14, 15, 18, 21, 23, 24, 26, 27, 28, 29, 30, 31, 32, 34, 35, 37, 38, 39, 42, 44, 45, 48, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "chapter": [1, 2, 5, 6, 15, 16, 18, 20, 22, 28, 36, 40, 43, 46, 48, 51, 53, 54, 56, 61, 63, 65, 66], "we": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "seek": [1, 2, 9, 42, 50, 62, 66], "feedback": [1, 69], "If": [1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 38, 39, 42, 44, 45, 46, 47, 48, 50, 52, 55, 57, 58, 60, 62, 63, 65, 66, 68, 69], "you": [1, 4, 8, 15, 20, 23, 27, 29, 35, 45, 48, 50, 55, 57, 58, 63, 64, 66, 69], "encount": [1, 4, 15, 58], "issu": [1, 14, 19, 21, 27, 29, 30, 37, 44, 63, 65], "have": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68, 69], "suggest": [1, 7, 25, 37, 49, 59, 69], "how": [1, 2, 3, 4, 8, 13, 17, 18, 20, 22, 23, 24, 25, 26, 27, 29, 30, 31, 37, 38, 39, 41, 42, 44, 45, 47, 49, 50, 51, 55, 58, 59, 60, 62, 63, 64, 65, 66, 67, 68], "better": [1, 27, 28, 29, 30, 32, 39, 42, 48, 51, 53, 63, 66, 69], "pleas": [1, 50, 65], "link": [1, 27, 29, 31, 39, 45, 53], "everi": [1, 2, 4, 5, 13, 14, 20, 21, 27, 29, 33, 34, 35, 37, 39, 47, 55, 57, 62, 63, 65, 66, 68], "github": [1, 20, 25], "cat": [1, 14, 49], "group": [1, 6, 8, 25, 32, 52, 57], "research": [1, 21, 27, 29, 37, 39, 45, 63], "educ": 1, "who": [1, 4, 14, 25, 30, 32, 37], "came": 1, "togeth": [1, 4, 18, 27, 42, 57, 59, 63, 65, 68, 69], "common": [1, 2, 4, 5, 8, 15, 20, 21, 22, 27, 29, 31, 32, 37, 39, 42, 45, 50, 62, 68, 69], "purpos": [1, 4, 21, 22, 35, 42, 45, 57, 62, 63, 65, 68], "materi": [1, 3, 4, 5, 6, 8, 16, 17, 18, 26, 28, 29, 36, 39, 43, 44, 52, 63, 69], "our": [1, 2, 8, 12, 18, 21, 22, 25, 26, 29, 30, 31, 35, 36, 42, 44, 50, 51, 53, 55, 57, 58, 59, 63, 65, 66], "classroom": 1, "teach": [1, 64, 69], "hopefulli": [1, 39, 63], "find": [1, 2, 3, 7, 9, 13, 14, 15, 20, 22, 23, 24, 27, 28, 30, 31, 32, 33, 34, 37, 39, 42, 44, 46, 49, 53, 55, 57, 59, 60, 63, 64, 65, 68], "other": [1, 2, 3, 4, 5, 6, 8, 9, 13, 14, 15, 22, 23, 24, 25, 27, 29, 30, 31, 32, 33, 35, 37, 39, 41, 42, 44, 45, 46, 47, 49, 50, 55, 59, 62, 63, 66, 68, 69], "most": [1, 5, 6, 9, 15, 19, 21, 22, 23, 27, 29, 31, 32, 34, 35, 37, 39, 42, 47, 49, 53, 55, 57, 60, 63, 69], "importantli": [1, 57, 65], "those": [1, 3, 4, 8, 11, 12, 21, 27, 29, 34, 42, 50, 60, 62, 63, 65], "entri": [1, 31, 39, 42, 50, 62, 69], "world": [1, 2, 31, 36, 39, 46, 49, 51, 62], "data": [1, 3, 5, 12, 16, 20, 21, 24, 26, 27, 29, 30, 34, 39, 51, 52, 55, 59, 60, 63, 68], "rich": 1, "applic": [1, 2, 4, 5, 7, 22, 25, 26, 27, 29, 31, 32, 37, 39, 42, 44, 45, 49, 50, 53, 57, 63, 65, 68, 69], "krzysztof": 1, "postek": 1, "boston": 1, "consult": [1, 45, 64], "formerli": 1, "tu": 1, "delft": 1, "alessandro": 1, "zocca": 1, "vu": 1, "amsterdam": [1, 62], "joaquim": 1, "gromicho": 1, "ortec": 1, "jeffrei": 1, "kantor": 1, "notr": 1, "dame": 1, "wish": [1, 4, 14, 21, 39, 42, 62], "cite": [1, 29, 39, 45, 49], "work": [1, 5, 6, 8, 11, 20, 22, 25, 29, 30, 31, 37, 39, 42, 45, 46, 47, 49, 50, 57, 65, 68, 69], "postekzocca2024": 1, "titl": [1, 5, 14, 20, 22, 35, 37, 42, 46, 49, 50, 53, 62, 68], "author": 1, "year": [1, 12, 18, 45, 49, 52, 64, 69], "onlin": [1, 29, 39, 66], "url": [1, 37], "http": [1, 7, 20, 29, 31, 35, 37, 39, 42, 44, 45, 46, 47, 48, 49, 50, 57, 64, 65, 66, 68], "mobook": [1, 29, 35, 42, 50, 57, 65, 66], "io": [1, 12, 18, 20, 31, 52], "mo": [1, 29, 35, 42, 50, 57, 65, 66], "broad": 2, "term": [2, 3, 4, 13, 17, 18, 20, 21, 25, 26, 29, 31, 32, 33, 37, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 53, 57, 59, 60, 63, 65, 66], "describ": [2, 3, 4, 6, 8, 12, 18, 21, 22, 23, 24, 25, 27, 29, 32, 34, 35, 37, 38, 41, 42, 44, 45, 48, 49, 57, 58, 59, 62, 66, 69], "wai": [2, 3, 4, 5, 8, 11, 13, 16, 20, 21, 22, 23, 28, 29, 30, 31, 32, 34, 35, 38, 39, 45, 46, 48, 49, 50, 53, 57, 58, 63, 65, 66, 68, 69], "them": [2, 4, 5, 8, 9, 16, 18, 24, 29, 30, 36, 38, 39, 49, 53, 55, 58, 62, 63, 65, 66], "us": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 59, 61, 64, 65, 66, 67], "dedic": [2, 55], "algorithm": [2, 3, 27, 29, 33, 45, 53, 63], "consist": [2, 5, 7, 13, 14, 20, 21, 25, 29, 31, 33, 35, 40, 42, 49, 50, 62, 68, 69], "three": [2, 4, 18, 21, 22, 25, 27, 31, 39, 49, 51, 59, 60, 62, 64, 68], "part": [2, 3, 21, 37, 42, 45, 50, 55, 63, 64, 65], "correspond": [2, 3, 4, 8, 9, 11, 12, 13, 14, 17, 18, 19, 22, 23, 25, 27, 29, 33, 35, 37, 42, 44, 45, 48, 50, 53, 55, 60, 62, 63, 65, 66, 69], "action": [2, 61, 66], "choic": [2, 4, 15, 21, 24, 26, 35, 37, 39, 42, 44, 57, 68, 69], "whether": [2, 8, 22, 24, 26, 27, 29, 31, 33, 35, 36, 44, 45, 53, 57, 63, 66], "new": [2, 4, 5, 7, 8, 13, 17, 21, 23, 25, 26, 27, 29, 30, 32, 35, 37, 39, 41, 42, 45, 48, 55, 59, 62, 63, 66, 68, 69], "manufactur": [2, 8, 17, 27, 34, 41, 63], "facil": [2, 6, 16, 21, 26, 27, 34, 39, 45], "suppli": [2, 4, 30, 32, 34, 35, 39, 57, 66], "rout": [2, 29, 51, 53, 62], "price": [2, 3, 4, 10, 11, 12, 18, 29, 31, 32, 37, 39, 49, 52, 59, 60, 62, 63, 64, 68, 69], "should": [2, 3, 8, 14, 15, 18, 22, 23, 24, 25, 26, 29, 33, 34, 36, 37, 39, 42, 47, 50, 53, 55, 57, 59, 63, 64, 65, 66, 68, 69], "sell": [2, 3, 11, 15, 18, 26, 29, 31, 32, 38, 39, 59, 60, 62, 63, 64], "product": [2, 5, 6, 16, 20, 23, 34, 35, 36, 37, 39, 42, 45, 46, 50, 51, 54, 57, 61, 64, 65, 66], "function": [2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 18, 19, 20, 21, 22, 25, 26, 27, 29, 30, 32, 33, 34, 36, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 53, 55, 57, 58, 60, 62, 63, 64, 65, 66, 67, 69], "evalu": [2, 5, 13, 42, 50, 63], "specif": [2, 3, 5, 6, 8, 10, 13, 14, 15, 17, 20, 25, 29, 30, 34, 35, 37, 39, 41, 42, 45, 48, 53, 55, 57, 59, 60, 62, 63, 65, 67, 68, 69], "i": [2, 5, 6, 7, 8, 9, 12, 13, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 40, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 60, 62, 63, 65, 66, 69], "e": [2, 5, 7, 18, 19, 21, 22, 25, 27, 29, 30, 32, 33, 34, 35, 37, 38, 40, 41, 42, 44, 45, 46, 47, 49, 50, 53, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "valu": [2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 60, 62, 63, 65, 66, 68, 69], "earlier": [2, 5, 10, 21, 42, 45, 48, 52, 57, 59], "For": [2, 3, 5, 8, 10, 14, 16, 18, 20, 21, 22, 24, 27, 29, 30, 31, 34, 35, 36, 37, 39, 41, 42, 44, 45, 46, 47, 49, 50, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68, 69], "specifi": [2, 4, 5, 8, 13, 21, 24, 27, 29, 30, 31, 34, 37, 38, 39, 42, 45, 46, 48, 50, 58, 66, 68, 69], "either": [2, 3, 4, 5, 20, 21, 22, 23, 24, 26, 27, 29, 35, 50, 59, 63, 65, 69], "maxim": [2, 3, 4, 5, 6, 8, 9, 10, 17, 18, 20, 23, 26, 29, 30, 31, 35, 37, 38, 39, 41, 46, 47, 48, 49, 55, 58, 60, 62, 63, 64, 68, 69], "minim": [2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 18, 20, 21, 22, 24, 25, 27, 29, 33, 34, 35, 37, 40, 42, 44, 45, 50, 52, 53, 55, 57, 64, 65, 66, 69], "In": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 18, 20, 21, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69], "oper": [2, 3, 15, 21, 22, 27, 29, 35, 37, 39, 41, 42, 44, 45, 53, 59, 62, 63, 65, 66, 68], "cost": [2, 3, 4, 5, 6, 11, 12, 14, 15, 18, 20, 26, 28, 29, 30, 31, 33, 35, 37, 39, 41, 44, 45, 52, 53, 57, 59, 60, 63, 64, 65, 66, 68], "number": [2, 3, 4, 5, 8, 9, 10, 13, 16, 17, 18, 19, 20, 22, 24, 25, 27, 29, 31, 33, 35, 37, 38, 40, 42, 43, 44, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 58, 59, 60, 61, 62, 63, 64, 65, 66, 69], "satisfi": [2, 3, 9, 15, 16, 18, 19, 20, 27, 29, 30, 31, 32, 34, 39, 42, 46, 47, 49, 57, 59, 62, 65], "custom": [2, 20, 21, 29, 32, 37, 39, 42, 51, 57, 62, 69], "restrict": [2, 16, 25, 30, 33, 35, 46, 49, 53, 55, 68, 69], "possibl": [2, 4, 5, 6, 9, 13, 15, 16, 17, 18, 19, 20, 21, 24, 27, 29, 30, 32, 33, 34, 35, 38, 39, 40, 42, 47, 50, 53, 55, 57, 58, 60, 62, 63, 64, 65, 66, 68, 69], "condit": [2, 3, 8, 15, 18, 23, 24, 26, 27, 29, 30, 39, 42, 44, 50, 55, 59, 64, 68, 69], "must": [2, 3, 5, 19, 21, 23, 26, 27, 29, 31, 32, 35, 38, 39, 44, 53, 63, 64, 65, 66, 68], "requir": [2, 3, 4, 8, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 37, 39, 45, 47, 52, 53, 57, 59, 62, 63, 64, 66, 68, 69], "maximum": [2, 3, 8, 11, 15, 18, 23, 24, 25, 29, 33, 34, 35, 39, 44, 47, 48, 49, 53, 55, 57, 63, 66, 68], "allow": [2, 4, 8, 18, 23, 24, 27, 29, 31, 32, 35, 41, 45, 48, 49, 53, 55, 57, 65, 68], "budget": [2, 12, 37, 52, 63], "demand": [2, 3, 4, 6, 18, 20, 26, 30, 32, 34, 35, 37, 39, 45, 51, 52, 57, 59, 63, 64, 65, 66, 68, 69], "import": [2, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 58, 59, 60, 63, 64, 69], "met": [2, 35, 39, 57], "capac": [2, 12, 18, 23, 24, 30, 34, 35, 41, 52, 57, 62, 66, 69], "warehous": [2, 18, 45, 51, 60, 69], "exceed": [2, 29, 30, 39, 57], "both": [2, 4, 5, 8, 12, 13, 17, 20, 23, 24, 26, 27, 29, 33, 35, 37, 38, 39, 42, 45, 47, 50, 61, 62, 63], "express": [2, 3, 4, 7, 8, 9, 10, 11, 12, 16, 18, 19, 22, 26, 29, 30, 32, 34, 35, 39, 41, 42, 44, 45, 46, 49, 50, 52, 55, 57, 60, 64, 65, 66, 68, 69], "defin": [2, 4, 5, 8, 9, 12, 13, 14, 16, 20, 22, 25, 26, 27, 32, 33, 35, 37, 39, 40, 41, 42, 45, 46, 50, 53, 55, 57, 62, 63, 65, 66, 68, 69], "feasibl": [2, 5, 8, 9, 17, 20, 30, 35, 37, 41, 44, 46, 47, 49, 53, 60, 63, 65, 66], "region": [2, 8, 20, 32, 35], "set": [2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 44, 45, 46, 47, 48, 49, 52, 53, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "candid": [2, 3, 7, 21, 37], "meet": [2, 3, 5, 12, 18, 22, 25, 29, 30, 32, 35, 37, 39, 43, 52, 57, 59, 65, 66], "best": [2, 5, 7, 8, 29, 30, 35, 44, 57, 63, 66, 69], "global": [2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 46, 48, 52, 55, 57, 60, 62, 66, 69], "optimum": [2, 39, 41, 44], "among": [2, 3, 7, 11, 14, 15, 21, 22, 26, 31, 32, 33, 47, 48, 49, 62, 64, 65, 69], "appli": [2, 4, 5, 18, 24, 35, 37, 39, 42, 44, 45, 49, 65, 66, 68], "type": [2, 3, 4, 5, 6, 8, 12, 16, 17, 19, 21, 25, 29, 30, 35, 37, 42, 45, 50, 52, 55, 57, 65, 66, 68], "relat": [2, 5, 18, 23, 26, 29, 33, 50, 55, 57, 62, 63, 65], "fundament": [2, 14, 39, 68], "question": [2, 8, 15, 22, 29, 42, 45, 51, 59, 64, 65], "translat": [2, 4, 5, 18, 22, 29, 32, 37, 44], "real": [2, 4, 5, 7, 13, 16, 21, 30, 31, 35, 36, 37, 40, 46, 47, 49, 51, 53, 55, 57, 59, 62, 63, 65], "abstract": [2, 4, 8, 68], "represent": [2, 21, 42, 44, 50], "Not": [2, 29], "aspect": [2, 6, 8, 14, 16, 28, 36, 43, 54, 56, 61], "taken": [2, 29, 33, 63, 65, 69], "account": [2, 10, 18, 23, 24, 29, 31, 35, 43, 46, 47, 55, 59, 60, 63, 65, 66, 68], "so": [2, 3, 4, 5, 8, 9, 13, 18, 21, 23, 24, 25, 27, 29, 30, 35, 36, 37, 38, 39, 40, 42, 44, 48, 50, 51, 53, 55, 57, 62, 63, 66, 68], "mani": [2, 3, 4, 8, 16, 19, 20, 22, 23, 27, 29, 30, 31, 33, 37, 42, 45, 46, 47, 49, 50, 52, 53, 55, 59, 62, 63, 65, 66, 69], "made": [2, 3, 10, 12, 18, 20, 24, 29, 52, 59, 63, 66], "step": [2, 3, 4, 8, 9, 12, 14, 15, 18, 21, 29, 45, 46, 52, 53, 62, 63, 68, 69], "typic": [2, 21, 35, 57, 59, 63, 68, 69], "signific": [2, 5, 8, 41, 45, 46, 47, 49, 50], "impact": [2, 7, 39, 51, 64], "approach": [2, 5, 7, 8, 10, 13, 14, 17, 19, 20, 22, 26, 27, 30, 33, 37, 39, 44, 46, 49, 57, 63, 65, 68], "There": [2, 5, 18, 19, 22, 25, 26, 29, 30, 35, 37, 39, 44, 45, 59, 63, 68, 69], "multipl": [2, 3, 12, 15, 18, 27, 29, 31, 32, 34, 37, 39, 69], "equival": [2, 5, 8, 18, 20, 22, 33, 42, 44, 45, 53, 55, 58, 62, 69], "formul": [2, 3, 4, 6, 8, 9, 11, 13, 14, 15, 16, 18, 22, 23, 26, 27, 28, 29, 30, 32, 35, 36, 39, 40, 44, 49, 51, 55, 57, 59, 60, 62, 65, 66, 69], "conceptu": 2, "same": [2, 3, 4, 5, 10, 11, 13, 14, 15, 18, 19, 21, 22, 25, 27, 29, 30, 31, 32, 33, 34, 40, 42, 45, 46, 50, 53, 55, 57, 60, 63, 65, 66, 68, 69], "comput": [2, 4, 5, 7, 8, 14, 15, 18, 22, 23, 29, 30, 31, 35, 37, 39, 42, 45, 46, 49, 50, 52, 59, 62, 64, 65, 66, 68, 69], "complex": [2, 4, 5, 15, 21, 22, 23, 29, 31, 37, 68, 69], "mai": [2, 3, 4, 5, 10, 11, 12, 15, 16, 17, 18, 20, 21, 23, 27, 29, 31, 32, 35, 37, 39, 41, 42, 45, 46, 50, 52, 55, 57, 58, 64, 68], "differ": [2, 3, 5, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 27, 29, 30, 32, 33, 34, 35, 37, 39, 40, 41, 42, 44, 45, 48, 49, 50, 51, 53, 55, 57, 59, 60, 63, 64, 65, 66, 69], "interpret": [2, 4, 15, 33, 41], "s": [2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 42, 43, 44, 45, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "after": [2, 5, 13, 23, 29, 30, 31, 40, 47, 53, 55, 59, 63, 64, 65, 66, 68], "ha": [2, 3, 4, 5, 7, 10, 12, 14, 18, 21, 22, 24, 25, 26, 27, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 55, 57, 59, 60, 62, 63, 65, 66, 68], "back": [2, 5, 13, 23, 29, 31, 33, 42, 50, 63, 68], "origin": [2, 3, 4, 8, 9, 10, 13, 14, 17, 25, 27, 30, 35, 37, 39, 45, 48], "These": [2, 4, 15, 25, 27, 29, 34, 35, 39, 42, 45, 47, 49, 53, 57, 59, 62, 68, 69], "treat": [2, 21, 30, 39, 51, 66], "continu": [2, 12, 18, 22, 23, 39, 42, 44, 50, 52, 60, 66], "process": [2, 4, 23, 29, 39, 41, 42, 45, 50, 53, 55, 68, 69], "sequenti": 2, "final": [2, 4, 5, 12, 14, 21, 22, 23, 29, 31, 39, 45, 62, 65], "turn": [2, 3, 16, 21, 30, 36, 42, 50, 53, 57, 66], "out": [2, 3, 23, 24, 27, 29, 30, 32, 36, 37, 53, 57, 65, 66], "impract": [2, 29], "adjust": [2, 4, 14, 29, 35, 41, 57, 62, 65, 66], "certain": [2, 16, 29, 30, 32, 42, 45, 50, 55, 57, 62, 66], "desir": [2, 3, 12, 18, 25, 30, 36, 52, 68], "properti": [2, 8, 30, 36, 44, 46, 48, 49, 57], "cannot": [2, 8, 12, 16, 21, 22, 25, 29, 33, 35, 44, 52, 53, 60, 62, 63, 66], "effici": [2, 10, 14, 21, 27, 29, 30, 48, 49, 50, 55, 69], "perhap": [2, 19, 32, 37], "re": [2, 69], "includ": [2, 5, 6, 14, 16, 18, 19, 21, 22, 23, 24, 27, 28, 29, 31, 32, 36, 37, 39, 41, 42, 44, 45, 46, 47, 49, 50, 53, 55, 57, 58, 62, 63, 64, 65, 66, 67, 68, 69], "well": [2, 5, 7, 13, 14, 19, 22, 27, 36, 37, 44, 46, 47, 60, 64, 69], "except": [2, 20, 25, 33, 66, 68, 69], "mathematician": 2, "studi": [2, 15, 21, 27, 29, 37, 39, 44, 57, 60, 69], "alwai": [2, 4, 10, 12, 17, 24, 35, 38, 40, 42, 46, 47, 48, 50, 51, 55, 58, 62, 68], "flaw": 2, "challeng": [2, 8, 19, 27, 31, 37, 39, 42], "follow": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 45, 46, 47, 49, 50, 51, 52, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68, 69], "given": [2, 3, 4, 5, 7, 8, 9, 11, 13, 14, 15, 17, 18, 20, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 35, 37, 39, 42, 44, 45, 46, 47, 49, 50, 51, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "f": [2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "x": [2, 4, 6, 7, 8, 10, 11, 12, 13, 15, 16, 17, 18, 20, 23, 24, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 47, 48, 50, 52, 53, 55, 57, 58, 59, 60, 63, 64, 65, 66, 68, 69], "mathbb": [2, 6, 8, 13, 16, 17, 18, 26, 35, 37, 38, 40, 42, 45, 46, 47, 49, 50, 55, 57, 58, 59, 60, 62, 65, 66], "r": [2, 4, 6, 8, 13, 14, 16, 18, 19, 21, 22, 24, 25, 27, 29, 31, 32, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 58, 59, 60, 62, 63, 64, 65, 66, 68], "subseteq": [2, 16, 33, 35, 53], "n": [2, 6, 7, 8, 9, 13, 16, 17, 18, 19, 20, 21, 23, 24, 25, 27, 29, 30, 31, 32, 33, 35, 37, 38, 39, 40, 42, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 60, 62, 63, 69], "being": [2, 5, 6, 8, 33, 35, 38, 39, 50, 53, 66], "y": [2, 4, 7, 8, 9, 13, 14, 18, 19, 20, 23, 24, 26, 27, 29, 30, 31, 32, 34, 35, 38, 39, 40, 41, 42, 44, 45, 47, 48, 49, 50, 55, 57, 59, 60, 63, 64, 66, 68, 69], "geq": [2, 6, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 60, 62, 63, 65, 66, 68], "foral": [2, 4, 7, 11, 12, 13, 14, 15, 18, 19, 20, 22, 23, 24, 25, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 42, 45, 46, 48, 49, 50, 53, 55, 57, 59, 62, 63, 65, 66], "least": [2, 6, 7, 12, 18, 22, 24, 33, 35, 36, 37, 39, 52, 53, 63, 64], "good": [2, 4, 5, 7, 15, 20, 27, 29, 33, 34, 38, 46, 49, 59, 63, 64, 69], "similarli": [2, 8, 13, 18, 35, 40], "chang": [2, 4, 5, 10, 14, 15, 21, 23, 24, 27, 29, 30, 31, 32, 33, 35, 38, 39, 40, 41, 48, 51, 53, 55, 57, 58, 62, 63, 65, 68, 69], "last": [2, 12, 18, 22, 23, 24, 38, 39, 52, 53, 55, 64, 66], "leq": [2, 3, 4, 8, 9, 10, 11, 12, 14, 15, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 57, 58, 59, 62, 63, 65, 66, 69], "case": [2, 3, 4, 5, 7, 8, 13, 16, 20, 21, 25, 26, 27, 29, 30, 32, 37, 38, 39, 40, 42, 46, 47, 49, 50, 55, 57, 59, 60, 66, 68, 69], "refer": [2, 3, 4, 6, 8, 13, 16, 20, 24, 27, 29, 32, 34, 39, 40, 42, 47, 50, 65, 69], "begin": [2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "align": [2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "min": [2, 6, 7, 8, 9, 11, 13, 14, 16, 18, 20, 22, 24, 25, 27, 29, 30, 32, 33, 34, 35, 37, 39, 40, 42, 44, 45, 46, 50, 53, 55, 57, 59, 60, 63, 65, 66, 69], "quad": [2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 53, 58, 59, 60, 62, 63, 65, 68, 69], "text": [2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "t": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "end": [2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "lead": [2, 14, 17, 18, 19, 20, 21, 22, 26, 29, 36, 39, 42, 44, 50, 55, 57, 63, 66, 69], "techniqu": [2, 7, 11, 13, 21, 22, 23, 26, 32, 42, 45, 49, 57, 63, 65], "introductori": [2, 61], "present": [2, 4, 5, 7, 8, 13, 14, 24, 29, 31, 32, 35, 37, 39, 40, 41, 42, 46, 47, 48, 49, 50, 53, 62, 64, 66, 68, 69], "simpl": [2, 3, 4, 5, 12, 21, 26, 30, 31, 36, 37, 39, 41, 42, 45, 50, 55, 68, 69], "context": [2, 15, 25, 33, 34, 58, 63, 66], "plan": [2, 4, 5, 10, 11, 15, 16, 18, 24, 25, 27, 45, 51, 59, 61], "explain": [2, 7, 35, 39, 50, 57, 66], "structur": [2, 4, 8, 17, 26, 28, 29, 30, 37, 44, 62, 63, 65, 66, 68, 69], "formal": [2, 16], "implement": [2, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 22, 24, 27, 28, 29, 32, 35, 36, 37, 38, 39, 40, 43, 44, 45, 46, 51, 54, 56, 57, 58, 59, 61, 62, 63, 68, 69], "second": [2, 4, 5, 10, 13, 18, 21, 27, 29, 31, 32, 33, 35, 37, 38, 39, 42, 50, 60, 61, 62, 63, 64, 65, 66], "also": [2, 3, 4, 5, 8, 11, 12, 14, 15, 18, 20, 22, 23, 25, 29, 30, 35, 36, 38, 39, 41, 42, 45, 53, 55, 58, 62, 63, 65, 66, 69], "serv": [2, 4, 5, 20, 34, 53, 63], "tutori": [2, 25, 37, 46, 47, 69], "lastli": [2, 3, 62, 63, 66], "discuss": [2, 32, 42, 45, 50, 51, 63], "some": [2, 3, 4, 5, 7, 8, 13, 16, 21, 23, 27, 29, 30, 32, 33, 35, 39, 40, 41, 42, 44, 46, 47, 49, 50, 55, 57, 63, 65, 66, 68, 69], "advanc": [2, 3, 5, 23, 39, 45, 51, 63, 65, 66], "featur": [2, 4, 5, 6, 8, 13, 16, 20, 21, 22, 23, 27, 34, 39, 40, 47, 49, 60, 62, 68, 69], "third": [2, 4, 5, 32], "go": [2, 6, 8, 13, 14, 16, 21, 28, 30, 35, 36, 39, 40, 43, 51, 53, 54, 56, 63, 64, 65, 68], "next": [2, 3, 4, 5, 6, 7, 8, 12, 15, 16, 18, 21, 22, 23, 25, 28, 29, 30, 32, 34, 36, 38, 43, 46, 50, 51, 53, 54, 56, 57, 60, 64, 65, 66], "about": [2, 6, 8, 16, 20, 24, 28, 29, 30, 36, 43, 51, 54, 56, 57, 59, 62, 63, 65], "linear": [2, 3, 5, 7, 8, 10, 11, 12, 13, 14, 15, 17, 19, 20, 22, 23, 26, 29, 31, 35, 36, 39, 40, 41, 55, 57, 60, 61, 62, 63, 65], "compani": [3, 6, 8, 12, 17, 18, 34, 39, 45, 51, 52, 53, 55, 63], "produc": [3, 4, 7, 8, 10, 12, 15, 17, 21, 23, 26, 29, 31, 32, 35, 37, 39, 42, 46, 47, 52, 53, 55, 57, 63, 65, 66, 68], "two": [3, 4, 5, 6, 8, 12, 13, 14, 16, 17, 19, 20, 21, 23, 25, 26, 29, 30, 31, 32, 33, 37, 39, 42, 45, 47, 50, 53, 55, 56, 57, 59, 60, 65, 68, 69], "version": [3, 4, 5, 10, 18, 20, 30, 35, 39, 45, 53, 54, 55, 63, 65, 66, 69], "each": [3, 4, 5, 8, 9, 12, 13, 14, 18, 19, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 42, 46, 47, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "raw": [3, 5, 8, 12, 18, 26, 29, 35, 39, 42, 50, 52, 57, 63, 65, 66], "10": [3, 4, 5, 7, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 27, 29, 30, 31, 32, 33, 34, 35, 37, 39, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 57, 59, 60, 62, 63, 64, 65, 66, 68, 69], "per": [3, 8, 10, 12, 14, 18, 23, 24, 25, 26, 29, 32, 34, 37, 44, 45, 52, 60, 63, 64, 65], "gram": [3, 18, 42, 50], "special": [3, 4, 11, 12, 13, 16, 28, 30, 37, 40, 45, 62, 69], "labor": [3, 4, 26, 63, 68], "finish": [3, 12, 18, 21, 22, 23, 26, 37, 52, 53, 69], "u": [3, 4, 5, 14, 18, 23, 29, 34, 42, 44, 45, 46, 49, 50, 53, 55, 57, 63, 68, 69], "higher": [3, 14, 26, 29, 39, 42, 47, 50, 52, 57, 59, 63, 65], "270": [3, 4, 5, 26, 29, 63, 66, 68], "unit": [3, 4, 5, 10, 12, 14, 15, 18, 23, 24, 26, 29, 31, 32, 34, 35, 39, 44, 45, 47, 52, 57, 58, 59, 60, 62, 63, 64, 65, 68], "one": [3, 4, 5, 6, 8, 9, 13, 14, 15, 17, 18, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 37, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 62, 63, 64, 65, 66], "hour": [3, 4, 21, 24, 25, 26, 53, 63], "b": [3, 4, 5, 6, 7, 8, 13, 15, 16, 18, 19, 21, 22, 25, 26, 29, 32, 34, 35, 37, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 60, 62, 63, 65, 66, 68, 69], "due": [3, 4, 12, 14, 18, 29, 35, 38, 39, 51, 52, 55, 59, 62, 64, 65, 69], "market": [3, 4, 14, 15, 29, 31, 39, 46, 47, 49, 62, 63, 64], "limit": [3, 5, 12, 18, 20, 21, 24, 25, 26, 29, 32, 35, 37, 39, 41, 44, 46, 49, 52, 57, 63, 65, 66, 69], "40": [3, 4, 5, 7, 24, 25, 26, 29, 32, 33, 37, 44, 45, 46, 59, 62, 63, 64, 68, 69], "week": [3, 25, 29, 33, 62], "v": [3, 4, 5, 14, 20, 21, 24, 29, 30, 33, 34, 35, 39, 42, 45, 46, 50, 53, 57, 63, 65, 66, 68, 69], "lower": [3, 4, 5, 12, 14, 21, 29, 31, 32, 37, 39, 40, 55, 59, 62, 64, 65, 69], "unlimit": [3, 4, 26, 37, 63], "210": [3, 4, 5, 26, 62, 63, 64, 68], "9": [3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 15, 17, 19, 20, 21, 22, 23, 24, 25, 27, 29, 30, 32, 34, 35, 37, 39, 41, 42, 45, 50, 51, 52, 53, 55, 62, 63, 66, 68], "1": [3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 33, 34, 37, 38, 40, 41, 42, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 61, 63, 65, 66, 68, 69], "summar": [3, 4, 25, 32, 35, 39, 42, 50, 59, 62, 63, 64], "tabl": [3, 4, 18, 21, 22, 24, 26, 27, 31, 42, 46, 52, 53, 55, 59, 60, 62, 64, 69], "g": [3, 4, 5, 8, 14, 18, 20, 22, 27, 29, 30, 31, 32, 33, 34, 35, 39, 40, 42, 44, 45, 50, 53, 55, 60, 65, 66, 68], "hr": [3, 4, 24, 53], "2": [3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 33, 34, 37, 38, 40, 41, 42, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 63, 65, 66, 68, 69], "weekli": [3, 25], "avail": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 59, 60, 62, 63, 66, 68], "inventori": [3, 12, 18, 29, 45, 52, 59, 60], "shelf": 3, "life": [3, 22, 30, 36, 44, 53], "order": [3, 4, 10, 12, 18, 21, 22, 25, 30, 32, 35, 37, 41, 42, 43, 50, 52, 53, 59, 63], "left": [3, 7, 8, 9, 10, 12, 13, 21, 22, 23, 24, 25, 27, 30, 32, 37, 39, 40, 42, 44, 45, 47, 49, 50, 52, 53, 57, 60, 62, 63, 65], "over": [3, 4, 10, 11, 14, 18, 21, 23, 25, 29, 30, 35, 37, 39, 41, 42, 45, 47, 50, 52, 59, 62, 63, 64, 68, 69], "discard": 3, "detail": [3, 8, 20, 25, 42, 44, 50, 59], "resourc": [3, 4, 15, 21, 25, 27, 29, 30, 37, 52, 64, 65, 68], "amount": [3, 4, 12, 15, 16, 17, 18, 21, 22, 25, 29, 31, 32, 34, 38, 39, 51, 52, 55, 57, 58, 60, 63, 64, 65, 69], "80": [3, 4, 5, 26, 29, 32, 35, 41, 47, 49, 50, 63, 64, 66, 68], "50": [3, 4, 5, 9, 14, 18, 24, 26, 29, 31, 32, 35, 37, 39, 42, 44, 45, 52, 55, 60, 62, 63, 64, 66, 68, 69], "100": [3, 4, 5, 10, 18, 19, 20, 22, 24, 26, 29, 31, 32, 35, 37, 38, 39, 41, 42, 45, 47, 49, 50, 52, 55, 57, 60, 62, 63, 64, 65, 66, 68, 69], "want": [3, 14, 17, 18, 20, 29, 32, 33, 38, 40, 42, 48, 55, 58, 62, 63, 69], "its": [3, 5, 7, 8, 9, 13, 14, 20, 22, 30, 34, 37, 40, 42, 45, 50, 55, 63, 65, 68, 69], "gross": [3, 46, 47, 49], "profit": [3, 4, 5, 6, 8, 9, 10, 17, 23, 26, 29, 32, 37, 39, 41, 55, 62, 63, 64, 68, 69], "much": [3, 8, 12, 13, 17, 18, 23, 24, 27, 30, 33, 37, 44, 47, 51, 63, 65, 66], "abov": [3, 4, 6, 8, 11, 12, 13, 14, 17, 18, 22, 23, 24, 29, 30, 32, 33, 35, 37, 40, 44, 45, 46, 48, 49, 50, 52, 55, 57, 60, 62, 63, 65, 69], "optim": [3, 4, 5, 9, 10, 11, 13, 17, 20, 21, 23, 24, 25, 27, 29, 30, 31, 32, 33, 34, 41, 45, 46, 52, 53, 55, 57, 59, 61, 67, 69], "reformul": [3, 5, 10, 13, 14, 44, 46, 47, 49, 50, 55, 62], "involv": [3, 5, 6, 8, 11, 21, 31, 39, 42, 45, 46, 47, 49], "few": [3, 4, 5, 29, 32, 33, 42, 62, 68], "crucial": [3, 35], "element": [3, 4, 5, 8, 25, 30, 32, 42, 44, 47, 50, 65, 68, 69], "start": [3, 5, 7, 8, 13, 14, 18, 21, 22, 23, 24, 27, 29, 31, 33, 37, 49, 55, 62, 63], "point": [3, 4, 7, 8, 13, 16, 20, 23, 27, 29, 34, 39, 40, 41, 42, 45, 47, 50, 55, 60, 62, 66, 69], "list": [3, 4, 8, 14, 19, 21, 24, 25, 26, 29, 30, 31, 33, 35, 37, 42, 44, 46, 49, 50, 52, 53, 57, 60, 62, 63, 65, 68, 69], "relev": [3, 4, 18, 20, 27, 29, 66, 68, 69], "hand": [3, 4, 8, 9, 17, 20, 24, 25, 29, 30, 31, 42, 50, 55, 57, 59], "quantiti": [3, 8, 11, 12, 18, 34, 35, 37, 39, 43, 51, 52, 55, 63], "modifi": [3, 5, 17, 20, 21, 23, 29, 31, 42, 55, 57, 62, 65, 66, 68, 69], "achiev": [3, 11, 14, 23, 25, 38, 42, 50, 65, 68], "outcom": [3, 15, 32, 42, 46, 50, 57, 59, 63], "while": [3, 5, 8, 9, 12, 14, 17, 18, 20, 21, 24, 25, 26, 29, 33, 34, 35, 37, 42, 48, 49, 50, 51, 52, 53, 55, 57, 59, 62, 63, 65, 66], "stage": [3, 5, 27, 39, 46, 47, 60, 64, 65, 68, 69], "prove": [3, 8], "redund": [3, 69], "later": [3, 4, 5, 15, 21, 24, 27, 45, 47, 66, 69], "creat": [3, 12, 13, 14, 15, 19, 21, 22, 23, 27, 29, 30, 31, 33, 37, 39, 42, 45, 46, 49, 50, 57, 59, 62, 63, 64, 68, 69], "comprehens": [3, 7, 42, 50], "below": [3, 5, 9, 11, 12, 14, 17, 20, 21, 24, 29, 30, 35, 37, 39, 42, 44, 45, 46, 50, 55, 57, 60, 62, 63, 66, 69], "symbol": [3, 14, 22, 29, 31, 32, 49, 59, 68, 69], "descript": [3, 15, 21, 32, 42, 51, 55, 66], "upper": [3, 4, 5, 9, 12, 14, 21, 22, 23, 24, 29, 32, 33, 37, 38, 39, 40, 44, 45, 52, 55, 60, 68, 69], "bound": [3, 4, 5, 9, 14, 19, 21, 22, 23, 24, 26, 29, 30, 31, 33, 37, 38, 39, 42, 44, 53, 55, 57, 63, 64, 66, 68], "known": [3, 4, 5, 7, 13, 14, 19, 21, 22, 23, 27, 33, 38, 39, 40, 42, 44, 45, 47, 49, 50, 53, 57, 59, 63, 64, 65, 66], "x_m": [3, 5, 60], "0": [3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "x_a": [3, 5], "x_b": [3, 5], "y_u": [3, 5], "y_v": [3, 5], "measur": [3, 7, 10, 14, 23, 24, 25, 29, 39, 42, 50, 51], "max": [3, 4, 7, 8, 9, 10, 11, 14, 15, 17, 21, 22, 23, 24, 25, 26, 27, 29, 35, 37, 38, 39, 41, 42, 44, 46, 47, 48, 50, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "equal": [3, 5, 6, 7, 8, 10, 12, 15, 16, 23, 25, 26, 27, 29, 30, 32, 33, 34, 38, 39, 40, 41, 44, 45, 46, 47, 49, 53, 55, 57, 59, 60, 62, 63, 65, 66], "between": [3, 4, 5, 8, 10, 13, 14, 20, 21, 24, 25, 27, 29, 31, 32, 34, 35, 36, 38, 39, 40, 42, 44, 46, 47, 48, 50, 53, 57, 64, 65, 66, 68, 69], "revenu": [3, 4, 5, 10, 11, 41, 59, 62, 64, 68], "written": [3, 4, 5, 15, 42, 45, 58, 59, 62, 68, 69], "As": [3, 4, 5, 8, 14, 18, 21, 25, 29, 30, 31, 39, 42, 45, 46, 50, 53, 59, 60, 63, 66, 69], "shown": [3, 5, 39, 42, 45, 46, 69], "here": [3, 4, 5, 10, 12, 13, 21, 22, 24, 25, 26, 29, 31, 39, 40, 42, 45, 46, 47, 49, 52, 53, 55, 57, 58, 59, 62, 63, 66, 68, 69], "algebra": [3, 5, 19, 41, 42, 45], "combin": [3, 4, 5, 18, 19, 29, 39, 44, 53, 57, 63, 65, 68, 69], "name": [3, 4, 5, 9, 10, 12, 13, 14, 15, 17, 18, 20, 21, 22, 24, 25, 29, 30, 32, 37, 40, 41, 42, 48, 50, 59, 60, 62, 65, 66], "when": [3, 4, 5, 7, 8, 12, 13, 16, 20, 21, 22, 23, 24, 25, 29, 31, 32, 35, 38, 39, 41, 42, 43, 45, 46, 47, 50, 57, 59, 60, 63, 64, 65, 66, 67, 68], "place": [3, 4, 29, 30, 31, 35, 39, 45, 46, 59, 68, 69], "break": [3, 4, 29, 33, 53, 57, 63, 66], "up": [3, 4, 5, 12, 16, 17, 18, 19, 21, 23, 29, 37, 39, 42, 46, 47, 50, 52, 56, 57, 62, 63, 64], "longer": [3, 20, 21, 30, 45, 50, 53, 57, 62, 68], "smaller": [3, 4, 10, 16, 27, 51, 57], "simplifi": [3, 5, 24, 27, 50, 62, 68, 69], "relationship": [3, 5, 13, 22, 24, 25, 27, 29, 31, 44, 45, 46, 69], "inequ": [3, 6, 8, 9, 39, 47, 55, 65], "overal": [3, 8, 15, 25, 39, 44], "now": [3, 4, 5, 7, 8, 12, 14, 18, 20, 21, 24, 25, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 42, 45, 46, 47, 48, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68], "readi": [3, 29, 31, 45, 50, 63], "full": [3, 7, 13, 20, 23, 24, 32, 37, 39, 40, 42, 44, 49, 50, 55, 62, 63, 69], "canon": [3, 6, 38], "nonumb": [3, 4, 30], "textbook": [3, 20, 63, 64], "customari": [3, 8, 50], "under": [3, 14, 15, 18, 20, 25, 26, 31, 42, 52, 57, 59, 62, 63, 64, 68], "clearli": [3, 4, 7, 18, 20, 23, 25, 39, 53, 63, 66], "distinguish": [3, 29, 66, 69], "paramet": [3, 4, 5, 18, 21, 23, 32, 33, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 50, 51, 55, 57, 59, 60, 62, 63, 65, 66, 68], "might": [3, 15, 16, 27, 29, 31, 33, 35, 36, 39, 42, 51, 59, 65, 68], "letter": [3, 19, 45, 63], "throughout": [3, 8, 29, 63, 69], "websit": 3, "howev": [3, 4, 8, 13, 15, 16, 17, 18, 20, 28, 29, 30, 31, 33, 35, 36, 39, 42, 44, 45, 48, 49, 50, 53, 55, 57, 59, 62, 63, 65, 66, 69], "stick": 3, "convent": [3, 5, 6, 8, 57, 65, 66], "onli": [3, 4, 7, 8, 9, 16, 18, 20, 21, 24, 25, 26, 27, 29, 30, 32, 33, 35, 37, 39, 42, 45, 49, 53, 55, 57, 59, 62, 63, 64, 65, 69], "explicitli": [3, 8, 17, 29, 30, 31, 50, 53, 62, 64, 69], "domain": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 48, 52, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68], "vector": [3, 6, 8, 11, 12, 13, 35, 36, 38, 40, 41, 43, 58, 62, 63], "minimum": [3, 11, 12, 14, 16, 21, 24, 25, 28, 29, 33, 35, 37, 39, 44, 53, 62, 64], "even": [3, 5, 20, 25, 29, 30, 39, 42, 48, 50, 53, 62, 63, 65, 66], "like": [3, 4, 8, 9, 11, 12, 14, 18, 29, 30, 31, 32, 37, 39, 42, 50, 52, 62, 63, 65, 66], "immedi": [3, 21, 29], "clear": [3, 9, 17, 36, 57, 63, 69], "what": [3, 8, 15, 21, 22, 25, 29, 31, 39, 41, 43, 46, 47, 51, 55, 57, 59, 62, 63, 64, 66, 68], "exactli": [3, 14, 33, 34, 35, 45, 50, 51, 53, 55, 62, 63, 66], "where": [3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 35, 37, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 57, 59, 60, 62, 63, 65, 66, 68, 69], "come": [3, 4, 14, 15, 30, 36, 42, 50, 63], "plai": [3, 8, 36, 46, 50, 53, 63], "thei": [3, 5, 8, 16, 18, 22, 24, 29, 30, 31, 32, 36, 37, 39, 42, 49, 51, 53, 57, 62, 63, 65, 66, 68, 69], "procedur": [3, 37, 55, 63], "long": [3, 4, 14, 16, 22, 25, 29, 46, 47, 60, 63, 69], "standard": [3, 5, 6, 8, 13, 14, 22, 35, 39, 41, 42, 50, 58, 62, 69], "fashion": [3, 4, 53], "practition": [3, 49], "often": [3, 4, 16, 21, 28, 32, 35, 51, 63, 66, 69], "boil": 3, "down": [3, 17, 23, 30, 35, 47, 62, 63, 64], "pass": [3, 4, 5, 18, 20, 21, 24, 28, 42, 50, 68], "softwar": [3, 26], "regardless": [3, 4, 8, 12, 18, 29, 46, 52, 60], "wa": [3, 7, 14, 25, 29, 30, 32, 35, 36, 37, 39, 45, 46, 47, 48, 49, 53, 55, 59, 63, 65], "stori": [3, 46, 47], "behind": 3, "To": [3, 5, 8, 18, 21, 22, 23, 24, 25, 27, 29, 30, 35, 37, 39, 42, 44, 45, 49, 50, 53, 55, 57, 59, 60, 62, 63, 65, 66, 68], "do": [3, 4, 8, 20, 23, 25, 29, 30, 31, 33, 35, 39, 41, 45, 53, 55, 57, 62, 63, 65, 66, 68, 69], "interfac": [3, 4, 5, 14, 45, 69], "commun": [3, 5, 7, 20, 25, 27, 64], "adopt": [3, 8, 26, 32, 42, 44, 47, 55], "python": [3, 5, 8, 13, 17, 20, 21, 25, 29, 30, 32, 37, 40, 41, 42, 45, 50, 53, 57, 66, 68, 69], "base": [3, 5, 7, 12, 13, 19, 21, 26, 29, 32, 35, 40, 41, 42, 47, 49, 50, 51, 52, 57, 63, 65, 68, 69], "carri": [3, 24, 35], "ll": [4, 39], "revisit": [4, 16, 25, 43, 61], "time": [4, 5, 6, 8, 14, 18, 20, 23, 24, 25, 26, 27, 30, 31, 33, 35, 36, 37, 39, 40, 42, 45, 46, 49, 50, 51, 52, 53, 57, 59, 62, 63, 65, 66, 68, 69], "capabl": [4, 7, 26, 39, 55], "scale": [4, 7, 29, 30, 35, 37, 39, 42, 57, 60, 62, 63, 66], "enabl": [4, 5, 28, 29, 45, 50, 68], "vari": [4, 12, 38, 50, 52, 55, 57, 64], "addit": [4, 6, 7, 12, 15, 18, 21, 23, 25, 27, 37, 42, 45, 47, 49, 50, 59, 62, 63, 66, 68, 69], "compon": [4, 5, 8, 13, 14, 18, 22, 26, 38, 45, 50, 58, 69], "index": [4, 5, 8, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 27, 29, 30, 31, 32, 35, 37, 39, 40, 41, 42, 44, 45, 49, 50, 52, 53, 57, 59, 62, 64, 65, 68], "essenti": [4, 22, 29, 30, 37, 42, 50, 53, 55, 63], "scalabl": [4, 6], "maintain": [4, 5, 8, 27, 29, 45, 66, 69], "more": [4, 5, 8, 10, 11, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 31, 32, 35, 37, 39, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68, 69], "analysi": [4, 7, 8, 12, 13, 21, 29, 32, 42, 46, 47, 50, 51, 53, 55, 62, 69], "examin": [4, 7, 17, 49], "identifi": [4, 5, 16, 18, 24, 27, 29, 31, 34, 37, 39, 42, 44, 45, 47, 50, 62, 66, 69], "underli": [4, 40, 63], "verifi": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 46, 48, 50, 52, 53, 55, 57, 59, 60, 62, 66], "high": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 39, 42, 44, 49, 50, 52, 55, 57, 59, 60, 63, 65, 66, 69], "via": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 38, 39, 44, 46, 48, 50, 51, 57, 60, 66], "appsi": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 35, 52, 60, 66], "modul": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "elsewher": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 35, 38, 39, 44, 46, 48, 52, 57, 60, 66, 69], "assum": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 35, 37, 38, 39, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "cbc": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 35, 52, 53, 59, 60, 62, 63, 64, 65, 66, 68], "been": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 60, 62, 64, 66, 68, 69], "previous": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 35, 38, 39, 44, 46, 47, 48, 50, 52, 53, 57, 60, 62, 65, 66, 68, 69], "solverfactori": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "It": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 34, 35, 39, 44, 45, 46, 48, 52, 55, 57, 60, 63, 65, 66], "sy": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "pip": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "dev": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66], "null": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66], "highspi": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 39, 40, 41, 42, 52, 53, 59, 60, 62, 63, 64, 65, 66], "environ": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "appsi_high": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 39, 40, 41, 42, 53, 55, 59, 60, 62, 63, 64, 65, 66], "els": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 29, 33, 34, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 60, 62, 63, 65, 66, 68, 69], "assert": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 55, 57, 60], "basic": [4, 16, 17, 21, 27, 42, 55, 65, 68, 69], "previou": [4, 9, 12, 15, 18, 28, 29, 35, 42, 45, 50, 51, 63], "were": [4, 18, 27, 30, 35, 42, 49, 62, 65], "distinct": [4, 22, 29], "evid": [4, 20], "compris": [4, 21, 23, 25, 31, 37, 40, 59, 68, 69], "abbrevi": [4, 29, 68], "m": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "factor": [4, 7, 20, 31, 42, 44, 48, 50, 55, 62, 65, 69], "attribut": [4, 5, 7, 14, 29, 35, 37, 45, 65, 68, 69], "built": [4, 20, 57], "librari": [4, 5, 8, 13, 21, 30, 32, 33, 40, 41, 44, 45, 47, 49, 50, 69], "handl": [4, 23, 26, 45, 68], "tabular": [4, 5], "sever": [4, 5, 6, 7, 11, 16, 19, 24, 26, 28, 29, 36, 37, 39, 42, 49, 57, 69], "option": [4, 5, 14, 21, 27, 29, 33, 41, 42, 50, 63, 65, 68, 69], "would": [4, 7, 8, 12, 15, 17, 18, 19, 21, 25, 26, 29, 31, 32, 33, 35, 39, 42, 45, 48, 49, 50, 52, 53, 55, 57, 59, 62, 63, 64, 65, 66, 68], "appropri": [4, 5, 42, 50], "task": [4, 16, 20, 24, 29, 30, 32, 37, 42, 53], "nest": [4, 37, 63, 68, 69], "dictionari": [4, 18, 21, 29, 34, 35, 37, 42, 45, 50, 53, 57, 63, 69], "column": [4, 5, 7, 12, 14, 15, 18, 20, 22, 24, 25, 29, 30, 31, 32, 35, 39, 42, 45, 49, 50, 52, 53, 62, 64, 66, 69], "show": [4, 5, 7, 9, 12, 13, 14, 18, 20, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 33, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 51, 52, 53, 55, 57, 59, 60, 62, 63, 66, 68, 69], "repres": [4, 6, 8, 18, 19, 22, 23, 25, 31, 33, 34, 35, 37, 39, 42, 44, 45, 46, 47, 49, 50, 57, 59, 68, 69], "kei": [4, 5, 8, 14, 20, 21, 29, 32, 33, 34, 35, 37, 40, 46, 49, 52, 53, 57, 59, 60, 63, 65, 66, 68, 69], "outermost": 4, "inner": [4, 42, 50], "float": [4, 30, 42, 50, 52, 60, 69], "none": [4, 5, 7, 20, 21, 27, 29, 30, 32, 34, 35, 40, 42, 45, 47, 50, 52, 57, 66, 68], "print": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 22, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68], "item": [4, 21, 30, 32, 34, 35, 37, 50, 53, 57, 59, 60, 65, 66, 69], "consum": [4, 21, 35, 57, 65, 69], "8s": [4, 29, 49], "row": [4, 5, 7, 8, 22, 29, 31, 35, 42, 53, 63, 66, 69], "label": [4, 7, 13, 15, 24, 27, 29, 31, 32, 33, 34, 35, 37, 39, 40, 41, 42, 44, 45, 50, 52, 53, 57, 60, 66, 69], "4s": 4, "By": [4, 5, 7, 14, 30, 31, 32, 55, 69], "rearrang": [4, 42], "straightforward": [4, 18, 55, 69], "becom": [4, 8, 9, 14, 19, 20, 22, 25, 29, 38, 39, 41, 42, 45, 47, 49, 50, 57, 58, 59, 60, 65, 66], "collect": [4, 5, 6, 7, 11, 13, 15, 20, 21, 27, 31, 32, 33, 35, 40, 42, 50, 62, 63, 69], "compar": [4, 7, 8, 13, 14, 19, 20, 22, 29, 30, 37, 39, 40, 42, 45, 47, 50, 59, 60, 62, 64, 66], "adapt": [4, 15, 49, 57, 62, 63, 65], "let": [4, 7, 8, 9, 11, 12, 15, 19, 20, 21, 25, 27, 29, 30, 33, 34, 35, 37, 38, 39, 44, 45, 47, 50, 52, 55, 57, 58, 59, 62, 63, 65, 68], "cal": [4, 50], "p": [4, 11, 12, 18, 23, 24, 26, 33, 35, 37, 39, 41, 42, 44, 46, 47, 49, 50, 52, 53, 57, 58, 60, 62, 65, 66, 68], "respect": [4, 5, 8, 14, 18, 21, 26, 27, 29, 30, 32, 34, 35, 37, 39, 42, 46, 55, 57, 62, 63, 64, 66, 68], "x_r": [4, 39], "y_p": 4, "denot": [4, 8, 12, 15, 18, 19, 21, 23, 26, 27, 29, 30, 31, 35, 37, 39, 40, 49, 53, 57, 62, 65, 69], "constrain": [4, 12, 15, 16, 29, 35, 39, 45, 46, 49], "zero": [4, 13, 19, 29, 35, 37, 40, 41, 42, 44, 45, 50, 52, 60, 63, 65, 66], "b_r": 4, "b_p": 4, "b_q": 4, "don": [4, 8, 29, 57, 66, 69], "insert": [4, 5, 32, 45, 47], "larger": [4, 8, 20, 27, 30, 33, 37, 42, 47, 50, 53, 59], "than": [4, 5, 8, 10, 12, 15, 16, 17, 20, 21, 23, 24, 25, 27, 29, 30, 32, 33, 35, 37, 38, 39, 42, 46, 47, 49, 50, 52, 53, 55, 57, 59, 60, 62, 63, 65], "ever": [4, 42, 50], "design": [4, 5, 14, 19, 22, 27, 32, 39, 40, 42, 43, 66, 68], "caus": [4, 5, 39, 68], "ignor": [4, 35, 42, 50, 57], "befor": [4, 13, 20, 21, 22, 30, 33, 39, 40, 42, 46, 53, 57, 59, 60, 62, 63, 65, 66], "sum_": [4, 7, 12, 13, 14, 15, 18, 20, 23, 25, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 53, 57, 58, 59, 62, 63, 65, 66, 69], "c_p": 4, "c_r": 4, "a_": [4, 15, 25, 29, 31, 37], "put": [4, 42, 59, 63, 65], "piec": [4, 21, 37], "flexibl": [4, 32, 35, 36, 63, 68], "particular": [4, 14, 16, 21, 25, 30, 33, 35, 37, 39, 40, 45, 55, 62, 63, 65, 66, 69], "hold": [4, 5, 8, 9, 12, 14, 16, 18, 24, 27, 29, 35, 45, 52, 57, 59, 60, 62, 63, 65, 66], "scienc": [4, 5, 25, 32, 44, 45, 46, 62, 64], "see": [4, 5, 20, 21, 25, 26, 30, 31, 40, 44, 45, 46, 48, 50, 55, 57, 60, 63, 64, 65, 66, 68], "facilit": [4, 8, 14, 69], "construct": [4, 5, 7, 9, 14, 18, 21, 29, 32, 37, 38, 42, 44, 45, 50, 53, 65, 66, 68, 69], "pyo": [4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "initi": [4, 7, 8, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 27, 29, 30, 31, 32, 33, 35, 37, 38, 39, 40, 41, 42, 46, 48, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "assign": [4, 5, 15, 16, 19, 22, 24, 25, 29, 30, 31, 32, 33, 37, 41, 42, 50, 51, 66], "decor": [4, 5, 8, 9, 25, 32, 62], "declar": [4, 5, 35, 65, 66, 69], "return": [4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "form": [4, 6, 22, 23, 36, 44, 45, 51, 58, 60, 63, 65, 68], "param": [4, 7, 12, 14, 15, 18, 21, 22, 23, 24, 25, 27, 29, 30, 32, 39, 42, 52, 57, 60, 65, 68, 69], "omit": [4, 69], "emb": 4, "extern": [4, 21, 44, 55], "directli": [4, 5, 7, 14, 22, 23, 32, 35, 44, 45, 50, 59], "effect": [4, 5, 21, 23, 34, 44, 46, 47, 53, 68], "doe": [4, 5, 15, 21, 23, 25, 27, 29, 30, 35, 37, 40, 42, 45, 50, 55, 62, 66], "keep": [4, 12, 18, 25, 33, 35, 39, 50, 53, 63, 65, 69], "shorter": 4, "remov": [4, 6, 8, 15, 29, 37, 42, 53], "overhead": 4, "blur": 4, "boundari": [4, 27, 69], "statement": [4, 30, 32, 62], "edit": [4, 37, 46], "locat": [4, 16, 24, 29, 32, 34, 39, 41, 42, 57, 59, 69], "portion": [4, 49], "therebi": 4, "significantli": [4, 8, 27, 30, 39, 42, 50], "improv": [4, 5, 25, 39, 42, 44, 45, 47, 64], "maintainabi": 4, "concern": [4, 30], "overkil": 4, "small": [4, 5, 8, 12, 25, 26, 29, 30, 31, 33, 34, 37, 39, 41, 63, 65, 69], "consider": [4, 14, 15, 21, 25, 32, 42, 59, 69], "note": [4, 5, 9, 11, 12, 13, 14, 15, 17, 18, 20, 24, 25, 32, 33, 34, 35, 37, 40, 41, 42, 48, 55, 57, 60, 62, 66, 68, 69], "becaus": [4, 8, 11, 18, 21, 25, 27, 29, 30, 32, 35, 37, 39, 42, 45, 50, 53, 55, 57, 63, 65, 68, 69], "take": [4, 5, 7, 8, 9, 11, 16, 17, 18, 21, 22, 23, 24, 27, 29, 31, 33, 35, 38, 39, 42, 45, 47, 48, 50, 51, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68], "logic": [4, 5, 8, 12, 17, 18, 19, 22, 26, 29, 52, 55, 69], "def": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "coeffici": [4, 6, 7, 8, 13, 15, 17, 18, 29, 40, 42, 44, 50, 55, 62, 63], "cp": [4, 41], "cr": 4, "argumentn": 4, "var": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 48, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "fix": [4, 5, 6, 7, 12, 14, 24, 25, 27, 30, 32, 35, 40, 44, 45, 46, 47, 49, 57, 60, 62, 63, 64, 65, 66, 68], "done": [4, 5, 21, 22, 39, 42, 59, 63], "parlanc": 4, "sometim": [4, 36, 46, 58], "call": [4, 8, 24, 27, 29, 31, 32, 35, 38, 39, 40, 42, 48, 49, 50, 53, 59, 62, 66, 68], "rule": [4, 12, 29, 39, 45, 60, 61, 63, 65, 69], "lambda": [4, 18, 19, 20, 21, 22, 25, 27, 29, 31, 35, 39, 42, 44, 46, 47, 49, 50, 52, 53, 55, 57, 60, 65, 66, 68, 69], "argument": [4, 5, 18, 33, 39, 42, 50, 55, 62, 63, 65, 68, 69], "member": [4, 30, 32], "tupl": [4, 5, 8, 21, 25, 29, 37, 68], "quicksum": [4, 12, 18, 30, 33, 52, 55], "accept": [4, 5, 21, 22, 29, 32, 42, 46, 49, 57, 63, 69], "success": [4, 7, 47, 68, 69], "sum": [4, 7, 8, 9, 13, 14, 15, 19, 20, 21, 22, 23, 25, 27, 29, 30, 31, 32, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "sens": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 46, 47, 48, 49, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "Then": [4, 22, 33, 34, 35, 42, 50, 53, 55, 62, 65, 66, 68], "associ": [4, 21, 24, 26, 32, 34, 35, 37, 40, 68, 69], "manner": [4, 32], "block": [4, 25, 37, 39, 44, 45, 46, 47, 49, 50, 55, 63, 68], "materials_us": [4, 68], "report": [4, 14, 18, 29, 30, 35, 37, 39, 42, 50, 52, 55, 57, 60, 62, 68, 69], "access": [4, 21, 32, 35, 45, 57, 68], "iter": [4, 5, 18, 29, 55, 63, 68, 69], "pprint": [4, 69], "nproduct": 4, "nresourc": 4, "3": [4, 7, 11, 12, 14, 15, 18, 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 33, 34, 35, 37, 38, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 58, 59, 60, 63, 66, 69], "size": [4, 5, 7, 12, 13, 14, 22, 24, 25, 27, 29, 32, 37, 38, 39, 40, 42, 45, 47, 48, 49, 50, 52, 53, 55, 57, 59, 60, 62, 69], "dimen": [4, 21, 32, 33], "a_index": 4, "true": [4, 5, 7, 12, 13, 14, 15, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 39, 40, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 55, 57, 60, 62, 63, 64, 65, 66, 68, 69], "6": [4, 7, 9, 10, 12, 14, 18, 19, 20, 22, 23, 24, 25, 27, 29, 30, 31, 32, 33, 34, 35, 37, 41, 42, 44, 45, 46, 49, 50, 52, 53, 55, 57, 58, 59, 63, 64, 66], "5": [4, 7, 9, 10, 12, 14, 18, 19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 52, 53, 55, 58, 63, 65, 66, 68, 69], "default": [4, 5, 8, 14, 21, 24, 25, 29, 32, 33, 39, 42, 50, 66, 69], "mutabl": [4, 14, 25, 27, 32, 57, 60, 69], "fals": [4, 5, 8, 14, 20, 21, 22, 25, 26, 30, 32, 33, 35, 37, 39, 40, 42, 45, 50, 52, 53, 55, 57, 60, 62, 63, 65, 66, 68], "stale": [4, 5, 32, 40], "activ": [4, 5, 25, 26, 29, 32, 35, 55, 66], "bodi": [4, 5, 32, 50], "inf": [4, 5, 63], "12": [4, 5, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 20, 21, 23, 24, 25, 27, 29, 30, 31, 32, 35, 37, 42, 45, 47, 48, 50, 53, 55, 59, 62, 63, 69], "2600": [4, 5, 26, 63], "20": [4, 5, 7, 14, 18, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 33, 37, 44, 45, 46, 48, 49, 53, 55, 57, 62, 63, 64, 66, 68, 69], "60": [4, 5, 7, 24, 26, 29, 35, 49, 59, 64, 65, 66, 68], "740": [4, 5, 55, 63, 68], "experienc": [4, 7], "class": [4, 5, 6, 8, 11, 22, 25, 27, 28, 30, 42, 50, 62, 68, 69], "extend": [4, 14, 27, 39, 42, 46, 49, 66, 68, 69], "productionmodel": 4, "inherit": 4, "method": [4, 5, 13, 14, 22, 23, 26, 28, 29, 37, 42, 44, 50, 63, 65, 68, 69], "displai": [4, 5, 7, 8, 12, 13, 14, 15, 18, 22, 24, 25, 27, 29, 30, 34, 37, 39, 40, 41, 42, 44, 45, 48, 50, 52, 53, 58, 59, 62, 63, 64, 65, 68], "__init__": [4, 42, 50, 68], "self": [4, 42, 50, 68], "instanc": [4, 5, 8, 12, 20, 30, 34, 37, 42, 47, 50, 57, 59, 66, 68, 69], "contain": [4, 5, 13, 20, 25, 26, 35, 37, 40, 42, 50, 55, 57, 66, 68, 69], "inform": [4, 14, 15, 20, 21, 22, 25, 29, 32, 37, 47, 52, 57, 63, 64], "super": 4, "save": [4, 29, 32, 44, 55], "flag": [4, 21, 63, 68], "monitor": [4, 29], "statu": [4, 20, 30, 48, 55, 58, 60, 68], "build_model": [4, 69], "buildth": 4, "integr": [5, 17, 41, 53, 67, 68, 69], "program": [5, 7, 15, 19, 23, 27, 37, 43, 45, 46, 49, 50, 62, 64, 67, 69], "user": [5, 29, 30, 41, 42, 50, 64, 69], "varieti": [5, 35], "project": [5, 39, 42, 45, 50, 67, 69], "ti": 5, "vendor": 5, "constantli": 5, "evolv": 5, "through": [5, 13, 21, 29, 32, 34, 35, 42, 44, 53, 57, 65, 68], "contribut": [5, 7, 14, 19], "parti": [5, 29, 32], "direct": [5, 9, 13, 27, 31, 32, 34, 35, 37, 45, 53, 55], "simplic": [5, 33, 35], "reus": [5, 18, 21], "anoth": [5, 11, 12, 16, 18, 19, 21, 22, 29, 31, 38, 41, 42, 50, 53, 55, 58, 66], "write": [5, 21, 31, 32, 35, 55, 62, 67, 69], "driven": [5, 51], "unfamiliar": [5, 69], "current": [5, 8, 15, 24, 26, 29, 32, 39, 46, 51, 55, 63, 66, 68], "offer": [5, 8, 18, 20, 29, 31, 32, 46, 47, 57, 63, 69], "readabl": [5, 8, 25, 32], "rel": [5, 8, 24, 25, 26, 29, 31, 48, 63, 68], "recent": [5, 37, 39, 44, 46, 47, 49, 69], "intend": [5, 25, 69], "cloud": 5, "person": [5, 7, 21, 45], "session": [5, 20], "mix": [5, 6, 17, 23, 26, 36, 37, 39, 55, 57], "integ": [5, 6, 7, 12, 17, 18, 19, 20, 23, 26, 30, 36, 37, 39, 57, 59, 62, 69], "coin": 5, "OR": [5, 21, 23, 27, 45], "branch": 5, "cut": [5, 20, 23, 26, 27, 36, 45, 57], "suitabl": [5, 22, 33, 42, 50, 68], "glpk": 5, "cplex": [5, 20, 55], "gurobi": [5, 20, 30, 45, 55], "mosek": [5, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 57], "check": [5, 8, 29, 31, 38, 39, 45, 48, 50, 51, 58, 65, 66, 68, 69], "quiet": 5, "test": [5, 19, 21, 29, 35, 37, 42, 49, 50, 68, 69], "store": [5, 18, 21, 22, 29, 30, 32, 35, 42, 45, 50, 52, 59, 60, 63, 65, 66, 68, 69], "commonli": [5, 14, 26, 39, 42, 50, 69], "prefix": 5, "short": [5, 14, 21, 29, 31, 35, 38, 39, 45, 49, 57, 68], "sinc": [5, 8, 9, 18, 20, 24, 25, 27, 30, 33, 35, 37, 40, 42, 44, 45, 48, 50, 51, 55, 57, 60, 62, 63, 65, 66], "string": [5, 29, 32, 42, 50, 68], "subsequ": [5, 7, 13, 14, 21, 29, 35, 37, 39, 40, 53, 59, 62, 69], "altern": [5, 7, 8, 10, 13, 15, 26, 32, 33, 47, 50, 66, 69], "abstractmodel": 5, "But": [5, 15, 21, 32, 37, 39, 42, 50, 66], "normal": [5, 14, 31, 39, 42, 46, 49, 50, 53, 58, 62, 69], "content": [5, 29, 39, 45, 46, 47], "At": [5, 12, 21, 24, 25, 27, 31, 47, 52, 64], "major": [5, 32], "empti": 5, "valid": [5, 42, 47, 50, 69], "dot": [5, 7, 8, 12, 13, 14, 15, 16, 18, 23, 29, 32, 33, 38, 40, 42, 44, 45, 47, 48, 50, 52, 57, 58, 62, 65], "notat": [5, 19, 29, 31, 42, 63, 65], "chosen": [5, 38], "reflect": [5, 10], "keyword": [5, 42, 50, 69], "nonnegativer": [5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 22, 24, 26, 29, 30, 31, 32, 34, 35, 37, 38, 39, 40, 41, 42, 48, 52, 55, 57, 58, 60, 63, 65, 66, 68, 69], "nonnegativeinteg": [5, 17, 18, 30, 37, 55, 59, 62], "binari": [5, 16, 19, 20, 22, 23, 25, 26, 27, 30, 33, 35, 36, 37, 44, 50, 53, 55, 57, 61, 62, 63, 66], "placehold": [5, 30], "unknown": [5, 38, 39, 42, 58, 60, 63, 65], "yet": [5, 55], "updat": [5, 21, 22, 24, 38, 39, 40, 41, 42, 45, 48, 50, 51, 52, 55], "formula": [5, 42, 46, 47, 60], "could": [5, 8, 14, 15, 16, 17, 21, 23, 29, 30, 31, 37, 38, 39, 40, 45, 48, 55, 57, 59, 62, 63, 64, 66, 69], "expr": [5, 8, 9, 10, 11, 17, 39, 50, 55, 60, 63, 65, 69], "releas": [5, 22, 53], "With": [5, 12, 18, 26, 29, 39, 47, 50, 63, 66], "behavior": [5, 39, 49], "line": [5, 8, 13, 14, 20, 22, 29, 35, 41, 44, 60, 66, 69], "add": [5, 8, 11, 12, 20, 21, 22, 23, 25, 29, 30, 31, 32, 37, 41, 42, 46, 47, 53, 55, 57, 60, 62, 63, 69], "tag": [5, 53, 69], "syntax": [5, 45, 55, 69], "error": [5, 13, 19, 33, 40, 51, 57, 66, 68, 69], "numer": [5, 13, 29, 36, 41, 45, 48, 50, 60, 69], "core": [5, 20, 21, 55, 57, 66, 69], "scalarvar": 5, "No": [5, 23, 25, 37, 55, 59, 63], "uniniti": 5, "numericvalu": 5, "scalarobject": 5, "separ": [5, 20, 21, 29, 35, 36, 39, 42, 44, 50, 57, 65, 66, 69], "less": [5, 20, 21, 25, 27, 29, 46, 49, 50, 57, 63, 69], "greater": [5, 15, 17, 25, 49], "raw_materi": 5, "labor_a": [5, 69], "labor_b": [5, 69], "output": [5, 18, 20, 35, 42, 50, 53, 65, 66, 68], "whenev": [5, 21, 25, 33, 63], "fulli": [5, 8, 30, 55, 57], "tee": [5, 8], "debug": 5, "aris": [5, 31, 39], "result": [5, 7, 8, 14, 15, 18, 20, 23, 24, 25, 29, 30, 31, 33, 35, 37, 39, 42, 45, 46, 47, 48, 49, 50, 52, 55, 57, 58, 59, 62, 63, 64, 65, 66, 68, 69], "milp": [5, 53], "date": [5, 13, 14, 18, 25, 26, 31, 42, 49], "apr": [5, 12, 18, 52], "2023": [5, 18, 20, 23, 24, 25, 26, 27, 29, 30, 31, 42, 57], "command": [5, 29, 45], "opt": [5, 44, 45], "homebrew": 5, "bin": [5, 7, 13, 14, 29, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 62, 63], "printingopt": 5, "folder": 5, "zb": 5, "k0pc77yj6c3gv6gr6jj41g1r0000gn": 5, "tmp2_hwem4f": 5, "lp": [5, 7, 11, 15, 42, 53], "stat": [5, 14, 46, 49, 57, 58, 60, 62], "solu": 5, "soln": [5, 27, 30, 68], "strategi": [5, 14, 16, 17, 19, 22, 26, 29, 31, 33, 34, 38, 46, 49, 59, 62], "coinlpio": 5, "readlp": 5, "coin0009i": 5, "switch": [5, 66], "get": [5, 12, 13, 17, 18, 20, 21, 29, 30, 34, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 63, 68], "correct": [5, 42, 45, 62], "dual": [5, 6, 32, 41, 55], "etc": [5, 18, 29], "presolv": [5, 20], "statist": [5, 7, 13, 40, 42, 49, 50], "singleton": 5, "breakdown": 5, "lo": [5, 6, 9, 14, 16, 17, 28, 39], "free": [5, 7, 29, 33, 38, 45, 58, 63], "l": [5, 8, 19, 29, 37, 39, 42, 44, 45, 46, 48, 49, 63, 69], "obj": [5, 9, 20, 35], "480": [5, 12, 18, 52], "002": [5, 14, 29, 45], "total": [5, 7, 8, 12, 14, 18, 21, 22, 23, 25, 27, 29, 30, 35, 37, 38, 39, 42, 44, 45, 49, 50, 52, 55, 57, 62, 65, 66, 69], "cpu": [5, 30], "00": [5, 7, 9, 10, 11, 12, 20, 25, 26, 29, 32, 35, 37, 39, 46, 49, 52, 55, 60, 62, 63, 64], "wallclock": 5, "format": [5, 8, 10, 17, 21, 23, 45, 52], "graphic": [5, 37, 41, 44, 60], "overview": [5, 31, 39], "visual": [5, 8, 12, 14, 18, 20, 22, 24, 30, 32, 34, 35, 42, 55], "appendix": 5, "entir": [5, 8, 32, 34, 35, 62], "individu": [5, 14, 21, 25, 29, 30, 32, 39, 55, 57, 69], "whole": [5, 44, 62], "successfulli": [5, 7, 20, 39, 42], "conveni": [5, 13, 22, 25, 32, 65, 68], "2f": [5, 9, 10, 11, 13, 18, 20, 26, 29, 32, 33, 35, 38, 39, 45, 46, 48, 49, 52, 55, 58, 60, 62, 63, 64, 65, 66], "18000": [5, 32, 64], "15400": 5, "shortcut": 5, "wide": [5, 27, 29, 35], "seri": [5, 7, 8, 14, 15, 21, 32, 42, 45, 49, 50, 52, 62, 64, 68], "matplotlib": [5, 7, 12, 13, 14, 18, 20, 21, 22, 23, 24, 25, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 60, 62, 63, 64, 65, 66], "bar": [5, 7, 13, 14, 15, 22, 23, 29, 32, 39, 40, 42, 45, 50, 55, 60, 63, 65], "chart": [5, 14, 25, 29, 32, 45, 57, 62], "pd": [5, 7, 12, 14, 15, 18, 20, 21, 22, 23, 24, 25, 27, 29, 30, 31, 32, 35, 37, 39, 41, 42, 44, 45, 49, 50, 52, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68], "dtype": [5, 15, 50, 60, 62, 68], "float64": [5, 15, 50, 62, 68], "pyplot": [5, 7, 12, 13, 14, 18, 20, 21, 22, 23, 24, 25, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 60, 62, 63, 64, 65, 66], "plt": [5, 7, 12, 13, 14, 18, 20, 21, 22, 23, 24, 25, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 60, 62, 63, 64, 65, 66], "1x2": 5, "grid": [5, 7, 12, 13, 14, 15, 18, 21, 24, 29, 35, 39, 40, 44, 45, 46, 47, 49, 52, 64, 66, 68], "subplot": [5, 7, 13, 14, 20, 21, 22, 23, 24, 25, 27, 29, 32, 34, 37, 39, 41, 42, 44, 45, 46, 47, 49, 50, 52, 57, 60, 62, 63], "configur": [5, 27, 62, 65], "fig": [5, 7, 13, 14, 21, 22, 23, 24, 25, 27, 29, 32, 34, 37, 39, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 57, 60, 62, 63], "ax": [5, 7, 12, 13, 14, 15, 19, 20, 21, 22, 23, 24, 25, 27, 29, 32, 34, 35, 37, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 60, 62, 63, 64, 68], "figsiz": [5, 7, 12, 14, 18, 20, 21, 22, 23, 24, 25, 27, 29, 30, 32, 34, 35, 37, 39, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 57, 60, 62, 63], "rcparam": [5, 7, 12, 13, 14, 22, 24, 25, 30, 38, 39, 40, 45, 48, 52, 55], "font": [5, 7, 12, 13, 14, 22, 24, 25, 38, 39, 40, 45, 48, 52, 55], "color": [5, 7, 8, 12, 13, 14, 15, 21, 22, 23, 24, 25, 27, 28, 29, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 46, 47, 48, 50, 52, 53, 55, 57, 60], "cm": [5, 21, 25, 38, 48, 52], "tab20c": [5, 7, 12, 25, 38, 48, 52], "color_set": 5, "16": [5, 7, 18, 22, 24, 25, 26, 29, 30, 31, 37, 39, 42, 44, 45, 48, 49, 50, 53, 62, 64, 65, 66], "dataset": [5, 7, 13, 29, 40, 42, 50, 57], "plot": [5, 7, 12, 13, 14, 15, 18, 20, 21, 22, 24, 29, 30, 32, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 60, 62, 63, 64, 66, 68], "enumer": [5, 9, 14, 20, 21, 22, 25, 29, 37, 50, 60, 62], "zip": [5, 7, 12, 14, 18, 21, 27, 29, 30, 33, 52, 57], "kind": [5, 7, 15, 29, 32, 37, 42, 45, 50, 62, 63], "barh": [5, 14, 62], "alpha": [5, 7, 13, 18, 21, 22, 24, 25, 26, 27, 32, 34, 37, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 58, 60, 62, 63, 65], "set_xlabel": [5, 7, 12, 13, 14, 21, 22, 23, 24, 25, 27, 29, 39, 41, 44, 45, 46, 47, 49, 52, 62, 63], "invert_yaxi": 5, "tight_layout": [5, 7, 12, 13, 14, 18, 21, 22, 23, 24, 25, 27, 29, 30, 32, 37, 38, 39, 40, 42, 44, 45, 46, 48, 49, 52, 60, 62], "discov": [5, 29], "simplest": [6, 53], "adher": [6, 8], "nonneg": [6, 8, 16, 55, 62], "word": [6, 8, 19, 22, 29, 35, 49, 55, 68, 69], "c": [6, 8, 9, 11, 15, 16, 18, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 34, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 53, 55, 58, 59, 60, 62, 63, 64, 65, 68, 69], "matrix": [6, 12, 19, 31, 38, 40, 41, 42, 48, 49, 50, 53, 58, 62, 63], "ii": [6, 8, 21, 33, 37], "iii": [6, 8, 33, 41], "unbound": [6, 8], "non": [6, 8, 9, 17, 18, 19, 21, 27, 29, 31, 34, 37, 38, 39, 42, 45, 46, 47, 50, 55, 57, 59, 62, 65, 68, 69], "posit": [6, 8, 18, 24, 25, 27, 29, 37, 38, 40, 42, 48, 50, 58, 59, 60, 62], "x_i": [6, 7, 8, 11, 16, 35, 38, 42, 45, 48, 50, 58, 66], "fact": [6, 8, 9, 17, 20, 29, 30, 32, 34, 36, 38, 39, 42, 44, 45, 48, 50, 55, 59, 62, 63, 65], "easili": [6, 8, 11, 18, 31, 33, 35, 38, 44, 45, 52, 57, 63, 68, 69], "convert": [6, 8, 21, 29, 31, 37, 41, 42, 50, 68], "ad": [6, 8, 9, 30, 37, 39, 41, 45, 53, 55, 65, 66, 68, 69], "multipli": [6, 8, 9, 29, 42, 45], "explor": [6, 8, 16, 26, 28, 29, 36, 37, 39, 42, 43, 53, 54, 56, 57, 61], "variou": [6, 8, 16, 22, 26, 28, 30, 36, 37, 39, 43, 51, 52, 54, 55, 56, 61, 68, 69], "microchip": [6, 11, 17], "bim": [6, 15, 16, 51, 54], "absolut": [6, 11, 29, 35, 40, 42, 57, 65], "deviat": [6, 40, 55, 57, 58, 62, 63, 65, 66, 69], "lad": 6, "regress": [6, 36, 42], "mad": 6, "portfolio": [6, 31, 36, 43, 46, 47, 56], "variant": [6, 27, 58, 65, 66], "lowest": [6, 15, 29, 30], "fraction": [6, 12, 14, 17, 23, 29, 42, 46, 47, 49, 55, 58, 62, 65], "forecast": [6, 7, 51, 52, 62, 66], "extra": [6, 16, 18, 25, 28, 30, 36, 43, 44, 57, 59, 61, 63, 65], "wine": 6, "qualiti": [6, 39, 62], "predict": [6, 12, 13, 42, 50, 52, 62, 66], "l_1": [6, 13], "multi": [6, 29, 43, 45, 61], "aim": [7, 10, 12, 13, 20, 29, 32, 34, 36, 45, 48, 52, 53, 64], "valuabl": 7, "coupl": [7, 68], "physicochem": 7, "machin": [7, 8, 13, 16, 21, 36, 40, 43, 69], "2009": [7, 39, 46], "articl": [7, 25, 44, 45, 49, 68], "cortez": 7, "et": [7, 45], "al": [7, 45], "physic": [7, 37, 42, 66], "chemic": [7, 21, 37, 39, 51, 68], "sensori": 7, "metric": [7, 13, 21, 22], "gather": 7, "red": [7, 8, 13, 14, 15, 29, 34, 44, 53, 57], "white": [7, 21, 22, 34, 35, 37, 53, 68], "portug": 7, "uci": [7, 42, 50], "download": [7, 20, 35, 49, 65, 66], "panda": [7, 12, 14, 15, 18, 20, 21, 22, 23, 24, 25, 27, 29, 30, 31, 35, 37, 39, 41, 42, 44, 45, 49, 50, 52, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68], "numpi": [7, 8, 12, 13, 14, 18, 20, 23, 24, 29, 30, 31, 35, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 69], "np": [7, 8, 12, 13, 14, 18, 20, 23, 24, 27, 29, 30, 31, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66], "read_csv": [7, 12, 18, 29, 31, 35, 37, 42, 50, 52, 57, 65, 66], "archiv": [7, 42, 50], "ic": [7, 42, 50], "edu": [7, 42, 45, 46, 49, 50, 64], "ml": [7, 42, 50, 51], "databas": [7, 29], "winequ": 7, "csv": [7, 29, 35, 37, 57, 65, 66], "sep": [7, 12, 18, 31, 52], "acid": 7, "volatil": [7, 14], "citric": 7, "residu": [7, 13, 40, 41, 60], "sugar": [7, 64, 68], "chlorid": 7, "sulfur": [7, 39], "dioxid": 7, "densiti": [7, 57], "ph": 7, "sulphat": 7, "alcohol": 7, "7": [7, 10, 11, 13, 18, 19, 20, 21, 22, 24, 25, 27, 29, 31, 32, 33, 34, 37, 39, 42, 45, 49, 50, 52, 53, 60, 64, 66], "4": [7, 8, 9, 10, 11, 12, 17, 18, 21, 22, 23, 24, 25, 27, 29, 30, 32, 33, 34, 35, 37, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 60, 61, 63, 65, 66, 68, 69], "700": [7, 18, 32, 45], "076": 7, "11": [7, 11, 15, 18, 21, 22, 24, 25, 29, 31, 34, 35, 37, 42, 44, 45, 48, 53, 62, 66], "34": [7, 21, 29, 32, 52, 66], "99780": 7, "51": [7, 20, 22, 29, 37, 40, 47], "56": [7, 18, 29, 49, 64, 65], "8": [7, 11, 14, 15, 18, 19, 20, 21, 22, 24, 25, 27, 29, 30, 31, 32, 34, 35, 37, 39, 40, 41, 42, 44, 45, 46, 49, 50, 52, 53, 55, 57, 59, 60, 62, 65, 66, 69], "880": 7, "098": [7, 32], "25": [7, 21, 22, 24, 25, 29, 32, 35, 37, 39, 42, 46, 47, 48, 49, 53, 55, 58, 60, 62, 63, 64, 65, 66], "67": [7, 10, 12, 18, 29, 35, 37, 52, 66], "99680": 7, "68": [7, 12, 18, 22, 29, 35, 37, 52, 66], "760": 7, "04": [7, 17, 29, 35, 39, 48, 63, 65], "092": 7, "15": [7, 14, 18, 21, 22, 24, 25, 29, 31, 33, 34, 35, 37, 44, 45, 48, 50, 53, 58, 60, 62, 63, 66, 69], "54": [7, 18, 29, 32, 37, 49, 52, 60, 64], "99700": 7, "26": [7, 21, 25, 29, 33, 53, 55], "65": [7, 12, 18, 27, 29, 35, 37, 50, 52, 60, 65, 66], "280": [7, 45], "075": [7, 32, 55], "17": [7, 21, 24, 25, 29, 31, 37, 38, 42, 45, 48, 49, 53, 62, 66], "99800": 7, "58": [7, 29, 35, 64, 65, 66], "1594": 7, "600": [7, 18, 66], "08": [7, 14, 29, 32, 34, 48, 52, 60, 63], "090": 7, "32": [7, 21, 22, 25, 29, 37], "44": [7, 18, 20, 29, 37, 41, 49, 57, 65, 66], "99490": 7, "45": [7, 21, 29, 30, 32, 35, 39, 41, 66], "1595": 7, "550": 7, "062": [7, 14], "39": [7, 13, 29, 30, 65], "99512": 7, "52": [7, 12, 29, 39, 44, 45, 64], "76": [7, 29, 35, 39], "1596": 7, "510": [7, 64], "13": [7, 14, 18, 21, 22, 24, 25, 29, 30, 31, 37, 42, 44, 48, 52, 53, 60, 65], "29": [7, 25, 29, 37, 49, 53], "99574": 7, "42": [7, 21, 29, 37, 39, 62], "75": [7, 29, 32, 37, 40, 42, 45, 55, 60, 62, 64, 65], "1597": [7, 24], "645": [7, 62], "99547": 7, "57": [7, 24, 29, 37, 52, 63, 65], "71": [7, 27, 29, 60], "1598": 7, "310": [7, 12, 18, 52, 64], "47": [7, 12, 18, 29, 37, 50, 52, 62, 63], "067": 7, "18": [7, 24, 25, 29, 32, 35, 37, 39, 46, 48, 53, 62, 65, 66, 69], "99549": 7, "66": [7, 12, 13, 18, 29, 52, 62, 65], "1599": [7, 45], "repeat": [7, 15, 21, 46, 47, 55, 63], "observ": [7, 13, 25, 32, 35, 40, 42, 49, 55, 57, 60, 63, 65, 66, 69], "respons": [7, 66], "y_i": [7, 42, 45, 50, 53, 55], "frac": [7, 10, 14, 24, 27, 29, 31, 42, 44, 45, 47, 49, 50, 57, 60, 62, 63, 65, 68], "df": [7, 20, 30, 31, 37, 42, 44, 45, 49, 50, 52, 55, 59, 62, 64, 68], "ab": [7, 14, 31, 35, 42, 44, 45, 46, 47, 49, 63, 65], "5f": [7, 14, 29, 31, 44, 46, 47, 49], "14": [7, 12, 13, 14, 18, 22, 24, 25, 27, 29, 37, 38, 39, 40, 41, 48, 50, 52, 53, 66, 69], "get_cmap": [7, 12, 13, 14, 23, 24, 27, 33, 37], "axhlin": [7, 14, 15, 24, 25, 27, 39, 41, 60], "ls": [7, 14, 24, 27], "lw": [7, 12, 14, 21, 22, 24, 25, 27, 37, 39, 40, 44, 45, 46, 47, 49, 52, 53, 60, 62], "legend": [7, 12, 13, 14, 15, 22, 24, 27, 32, 35, 40, 41, 44, 45, 46, 49, 52, 57, 60, 62, 66], "set_ylabel": [7, 12, 13, 14, 21, 22, 23, 24, 25, 27, 29, 39, 41, 44, 45, 46, 47, 49, 52, 62], "68318": 7, "599": 7, "eleven": 7, "characterist": [7, 8, 68], "plu": [7, 10, 18], "record": [7, 49, 51], "histogram": [7, 13, 14, 29, 40, 62, 63], "insight": [7, 13, 42, 50], "sharei": [7, 14], "flatten": [7, 14], "hist": [7, 13, 14, 29, 40, 62, 63], "30": [7, 13, 18, 21, 22, 24, 25, 26, 29, 32, 35, 37, 41, 44, 45, 49, 53, 59, 62, 63, 66, 69], "axvlin": [7, 14, 24, 25, 27, 29, 39, 41, 53], "set_titl": [7, 14, 20, 21, 23, 24, 29, 32, 37, 41, 44, 46, 47, 49, 52, 57, 62], "explanatori": [7, 13, 40], "interest": [7, 9, 31, 33, 42, 45, 50, 60, 63], "deep": [7, 52], "knowledg": [7, 44, 49, 59, 63], "area": [7, 27, 44, 57], "onenologist": 7, "head": [7, 42, 49, 50, 53], "naiv": [7, 17, 55, 59], "scientist": 7, "absenc": 7, "experi": [7, 46], "proce": [7, 68], "correl": [7, 42, 50], "_": [7, 8, 11, 12, 13, 18, 20, 21, 22, 25, 26, 29, 31, 34, 35, 37, 39, 40, 46, 47, 48, 49, 50, 53, 55, 57, 59, 62, 63, 64, 65, 69], "corr": 7, "000000": [7, 24, 29, 31, 35, 42, 66], "022026": 7, "202288": 7, "390558": 7, "496180": [7, 42], "174919": 7, "476166": 7, "figur": [7, 20, 29, 30, 35, 37, 40, 45, 52, 53, 55, 57, 62], "strong": [7, 9, 20], "singl": [7, 8, 13, 14, 15, 20, 22, 26, 29, 33, 35, 39, 53, 57, 63, 65, 66, 68, 69], "determin": [7, 12, 24, 25, 27, 30, 35, 36, 37, 42, 44, 45, 47, 50, 53, 57, 58, 59, 60, 63, 64, 65, 66, 69], "largest": [7, 37], "reduc": [7, 14, 15, 20, 26, 27, 32, 37, 39, 42, 44, 45, 47, 50, 64, 69], "right": [7, 8, 9, 10, 12, 13, 14, 20, 21, 22, 23, 25, 27, 30, 37, 39, 40, 42, 44, 45, 47, 50, 53, 55, 60, 62, 63, 65], "prior": [7, 21, 23, 24, 32, 59, 62], "lad_fit_1": 7, "y_col": 7, "x_col": 7, "concretemodel": [7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 48, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "len": [7, 12, 13, 14, 18, 20, 21, 22, 23, 24, 25, 29, 30, 33, 37, 40, 41, 42, 45, 49, 52, 53, 55, 57, 62, 63, 64, 65, 66], "rangeset": [7, 13, 14, 23, 24, 29, 31, 33, 37, 40], "loc": [7, 12, 14, 15, 18, 21, 22, 24, 27, 29, 30, 31, 32, 37, 39, 41, 42, 44, 45, 49, 52, 53, 57, 60, 64], "e_po": 7, "e_neg": 7, "prediction_error": 7, "54117": 7, "calcul": [7, 13, 14, 21, 27, 30, 31, 35, 38, 39, 40, 42, 44, 45, 47, 50, 55, 59, 60, 63, 65, 66, 68, 69], "fig1": 7, "ax1": 7, "count": [7, 13, 18, 29, 40, 42, 50, 66], "fig2": [7, 13], "ax2": [7, 13], "scatter": [7, 13, 14, 40, 42, 50, 57], "set_aspect": [7, 27, 44], "box": 7, "min_val": [7, 14], "get_xlim": [7, 27], "get_ylim": [7, 21, 62], "max_val": [7, 14], "set_xlim": [7, 14, 23, 25, 27, 41, 44, 45, 46, 53, 57, 62], "set_ylim": [7, 21, 22, 24, 25, 27, 32, 41, 44, 45, 46, 47, 49, 57], "m_j": [7, 13, 40, 57], "hat": [7, 12, 52, 59, 65], "min_": [7, 39, 40, 42, 45], "_i": [7, 22, 50, 65], "j": [7, 8, 12, 13, 14, 15, 18, 20, 21, 22, 25, 27, 29, 30, 31, 33, 34, 35, 37, 40, 41, 42, 44, 45, 50, 52, 53, 57, 62, 63, 65, 66, 69], "x_": [7, 12, 18, 19, 20, 23, 27, 29, 30, 31, 32, 33, 34, 37, 39, 42, 50, 53, 59], "care": [7, 14, 18, 29, 63, 69], "l1_fit": 7, "l1": 7, "49980": 7, "34242": 7, "98062": 7, "28928": 7, "90609": 7, "00219": 7, "50083": 7, "06382": 7, "substanti": [7, 14, 41], "reduct": [7, 8, 64, 65], "benchmark": [7, 21, 39], "tabul": 7, "regressor": [7, 13], "683": [7, 45], "541": 7, "500": [7, 12, 18, 30, 32, 40, 41, 45, 46, 49, 52, 53, 55, 57, 64], "enough": [7, 8, 17, 25, 26, 29, 33, 36, 39, 59], "replac": [7, 20, 29, 30, 31, 39, 42, 46, 50, 57, 62], "human": 7, "judgment": 7, "judg": 7, "intern": [8, 12, 18, 44, 46, 49, 52, 69], "chip": [8, 10, 12, 17, 18, 52, 55], "1g": 8, "silicon": [8, 9, 10, 11, 12, 15, 17, 18, 52, 55], "plastic": [8, 9, 10, 11, 12, 15, 17, 18, 52, 55], "4g": 8, "copper": [8, 9, 10, 11, 12, 15, 17, 18, 52], "memori": [8, 12, 14, 17, 18, 52, 55, 69], "germanium": [8, 9, 10, 11, 12, 15, 17, 18, 52, 55], "2g": 8, "sold": [8, 29, 39, 59, 60, 62, 64], "stock": [8, 12, 18, 36, 39, 46, 47, 49, 51, 52, 56], "1000g": 8, "1500g": 8, "1750g": 8, "4800g": 8, "euro": [8, 31, 64], "12x": 8, "9y": 8, "know": [8, 29, 30, 39, 45, 50, 51, 55, 59, 62, 66], "joint": 8, "usag": [8, 69], "4x": 8, "exce": [8, 25, 30, 39, 66], "1000": [8, 9, 10, 11, 12, 13, 15, 17, 18, 19, 20, 26, 29, 35, 45, 46, 52, 55, 57, 60, 62, 63, 64, 66], "deduc": 8, "role": [8, 29, 36, 39, 53, 55, 63], "1500": [8, 9, 10, 11, 12, 15, 17, 18, 29, 52, 55, 60, 64], "1750": [8, 9, 10, 11, 12, 15, 17, 18, 29, 32, 52, 55], "2y": [8, 69], "4800": [8, 9, 10, 11, 12, 17, 18, 45, 52, 55, 64], "leverag": [8, 30, 31, 40, 45, 49, 55], "dimension": [8, 21, 27, 37, 42, 44, 50, 55, 62], "grai": [8, 24, 34, 35, 53], "enclos": 8, "solid": [8, 34, 65], "isolin": [8, 44], "parallel": [8, 33], "dash": [8, 21, 22], "blue": [8, 13, 21, 35], "increas": [8, 14, 20, 21, 23, 27, 29, 31, 39, 41, 46, 47, 59, 60, 66], "intens": [8, 31, 39], "intuit": [8, 17, 47, 65], "alreadi": [8, 18, 20, 32, 50, 58, 66], "guess": [8, 33], "mark": [8, 24, 29, 46, 50], "easi": [8, 9, 53, 55], "imagin": [8, 29, 30], "complic": [8, 11, 50, 69], "matter": 8, "expand": [8, 63], "obfusc": 8, "discern": 8, "analyz": [8, 28, 62, 66], "matric": [8, 63], "close": [8, 13, 14, 29, 39, 44, 49, 60], "greatli": 8, "identif": [8, 29, 31], "similar": [8, 14, 20, 39, 42, 63, 65, 69], "food": [8, 21, 25, 39], "refresh": 8, "equat": [8, 13, 18, 19, 20, 27, 29, 35, 37, 42, 45, 50, 68], "toward": [8, 25, 27], "renam": 8, "x_1": [8, 9, 10, 17, 38, 42, 44, 48, 50, 55, 58], "x_2": [8, 9, 10, 17, 38, 42, 48, 50, 55, 58], "obtain": [8, 9, 12, 13, 17, 22, 27, 29, 30, 33, 35, 38, 39, 40, 42, 44, 45, 47, 48, 50, 55, 57, 59, 60, 62, 63, 65, 66], "pmatrix": [8, 63], "just": [8, 11, 21, 29, 32, 34, 37, 39, 44, 55, 59, 63, 65], "rewrit": [8, 13, 17, 35, 40, 44, 45, 47, 48, 58, 63], "12x_1": [8, 10, 17, 55], "9x_2": [8, 10, 17, 55], "bmatrix": [8, 19, 22, 24, 26, 27, 42, 45, 50], "system": [8, 18, 29, 31, 35, 39, 46, 47, 56, 63, 66], "read": [8, 14, 21, 23, 29, 35, 37, 44, 49, 57, 62, 63, 66, 68, 69], "correctli": [8, 18, 25, 42, 66], "replic": 8, "4x_1": [8, 10, 55], "longleftrightarrow": [8, 44, 45], "arrai": [8, 13, 38, 40, 42, 44, 45, 48, 49, 50, 55, 57, 58, 62, 63, 65, 66, 69], "2x_2": [8, 10, 55], "x1": [8, 9, 10, 11, 17, 27, 44], "x2": [8, 9, 10, 11, 17, 27], "1f": [8, 10, 11, 15, 21, 42, 46, 50, 60], "650": [8, 10, 55, 59], "1100": [8, 10, 18, 29, 55], "17700": [8, 9, 10, 55], "emploi": [8, 13, 25, 42], "enhanc": [8, 27, 69], "thu": [8, 17, 18, 25, 29, 30, 33, 35, 40, 48, 57, 60, 62, 63, 66], "util": [8, 27, 29, 32, 46, 47, 49, 53, 68], "encompass": 8, "advantag": [8, 18, 28, 30, 31, 42, 50, 68], "concis": [8, 20], "space": [8, 16, 44, 45, 53, 62, 68], "clariti": 8, "reveal": [8, 39, 50], "across": [8, 29, 34, 35, 63, 65], "uniform": [8, 23, 32, 39, 45, 46, 60, 63, 65, 69], "furthermor": [8, 18, 23, 44, 69], "unnecessari": [8, 69], "theoret": [8, 52, 60], "streamlin": [8, 21, 69], "Is": [8, 15, 30, 46], "answer": [8, 42, 59], "textit": 8, "sign": [8, 42, 50], "onc": [8, 22, 23, 37, 42, 50, 62, 66], "commit": [8, 31, 65], "deriv": [8, 22, 27, 35, 41, 42, 45, 50, 62], "sort": [8, 14, 20, 21, 25, 29, 33, 42, 46, 50], "consid": [8, 11, 13, 14, 15, 18, 20, 21, 22, 24, 27, 28, 29, 30, 31, 32, 33, 37, 38, 39, 40, 42, 44, 46, 47, 48, 49, 53, 55, 57, 58, 60, 62, 63, 64, 65, 66, 68], "anywai": [8, 30, 63], "without": [8, 15, 23, 27, 32, 33, 37, 39, 42, 46, 47, 50, 53, 59, 63, 68, 69], "Of": [8, 16, 63], "cours": [8, 16, 17, 22, 33, 39, 63, 69], "illustr": [8, 12, 18, 20, 21, 26, 27, 29, 30, 37, 44, 45, 52, 55, 60, 65, 66], "shall": [8, 18, 45, 50, 65], "upon": [8, 21, 57], "had": [8, 17, 18, 29, 42, 50, 59, 65], "mention": [8, 11], "neg": [8, 9, 17, 18, 21, 29, 34, 35, 37, 38, 42, 45, 47, 50, 51, 57, 59, 62, 69], "therefor": [8, 14, 27, 32, 35, 38, 42, 45, 50, 62, 63, 66], "overlin": 8, "side": [8, 9, 14, 25, 29, 30, 42, 55, 57, 68], "One": [8, 9, 15, 19, 21, 22, 27, 29, 30, 35, 37, 38, 63, 65, 68], "inde": [8, 20, 25, 44, 50, 57, 63, 65], "yield": [8, 10, 17, 18, 27, 29, 39, 41, 45, 50, 52, 53, 55, 57, 63, 64, 68], "n_var": 8, "n_constraint": 8, "constraintlist": [8, 11, 60], "optimal_x": 8, "round": [8, 12, 14, 17, 18, 24, 25, 30, 31, 32, 33, 34, 37, 38, 39, 41, 44, 45, 48, 52, 55, 62, 64, 65], "addition": [8, 58, 63], "avoid": [8, 12, 18, 19, 21, 22, 27, 32, 33, 42, 52, 66, 68, 69], "hard": [8, 27, 29, 42, 50, 63], "doc": [8, 37, 45, 48, 69], "lambda_1": 9, "lambda_2": 9, "lambda_3": 9, "lambda_4": 9, "four": [9, 24, 39, 41, 42, 50, 63], "rh": [9, 50], "tight": [9, 20, 22, 24, 40, 52, 58], "Such": [9, 55, 57, 65, 66], "tightest": 9, "y1": [9, 10, 27, 63], "y2": [9, 10, 27, 63], "y3": [9, 63], "y4": 9, "dualiti": [9, 55], "primal": 9, "coincid": [9, 30], "ask": [9, 29, 31, 64], "suffix": [9, 32, 37, 55, 69], "component_object": [9, 55], "y_": [9, 18, 20, 23, 27, 39, 42, 50, 53, 59, 62], "y_1": [9, 10, 42, 50, 55, 63], "y_2": [9, 10, 42, 50, 55, 63], "y_3": [9, 63], "y_4": 9, "recal": [10, 12, 18, 35, 47, 48, 52, 60, 63], "pair": [10, 18, 19, 21, 22, 25, 27, 29, 31, 32, 34, 42, 53, 55, 66], "sale": [10, 14, 29, 59], "suppos": [10, 11, 13, 26, 40, 41, 55, 63], "independ": [10, 13, 35, 39, 40, 47, 49, 55, 62], "6x_1": 10, "6x_2": 10, "reason": [10, 18, 27, 29, 30, 33, 35, 36, 42, 45, 46, 49, 50, 53, 55, 57, 60, 63, 64, 68, 69], "bim_with_revenues_minus_cost": 10, "minu": [10, 18, 34, 57, 66], "variable_cost": 10, "fixed_cost": 10, "bim_linear": 10, "3f": [10, 14, 17, 29, 38, 42, 46, 47, 48, 50, 52, 57, 58, 68], "15925": 10, "000": [10, 14, 17, 29, 32, 39, 45, 46, 55, 58, 62, 64], "1775": 10, "ratio": 10, "dfrac": 10, "deal": [10, 55], "auxiliari": [10, 11, 12, 14, 18, 22, 34, 42, 45, 47, 50, 55, 63], "12y_1": 10, "9y_2": 10, "cdot": [10, 18, 25, 26, 29, 30, 39, 47, 50, 60, 62, 65, 66], "4y_1": 10, "2y_2": 10, "100y": 10, "despit": 10, "recov": [10, 30, 46, 65], "bim_with_revenues_over_cost": 10, "bim_fract": 10, "250": [10, 24, 35, 45, 55, 60, 64, 69], "051": [10, 29], "16500": 10, "1641": 10, "667": [10, 58], "972": 10, "strictli": [10, 53], "seemingli": 11, "rewritten": [11, 58], "maxima": [11, 39], "finit": [11, 13, 29, 33, 40, 62, 63], "k": [11, 13, 18, 21, 22, 23, 24, 25, 27, 29, 30, 31, 33, 34, 37, 40, 42, 44, 45, 46, 47, 49, 50, 60, 63], "c_k": 11, "minimax": 11, "max_": [11, 15, 39, 46, 47, 49, 59, 62, 69], "top_": 11, "latter": [11, 24, 37, 55, 66], "z": [11, 15, 16, 18, 22, 26, 29, 37, 39, 42, 44, 45, 47, 50, 55, 57, 59, 60, 62, 63], "qquad": [11, 15, 20, 23, 25, 39, 40, 42, 45, 53, 62, 65], "guarante": [11, 14, 15, 32, 33, 38, 44, 48, 55, 57, 58, 62, 63, 65], "vice": [11, 63], "versa": [11, 63], "henc": [11, 35, 62, 66], "uncertainti": [11, 15, 43, 44, 52, 61, 63, 65, 66], "regard": [11, 15, 25, 39, 42, 45, 50, 51, 55, 64], "instead": [11, 16, 20, 29, 30, 33, 35, 36, 39, 41, 55, 57, 62, 63, 65, 66, 68], "nomin": [11, 52, 55, 63, 64, 65, 66], "estim": [11, 13, 39, 51, 57, 60, 63], "trick": [11, 45], "bim_maxmin": 11, "maxmin": [11, 15], "c1": [11, 21], "c2": [11, 21], "583": [11, 15, 29], "1166": [11, 15, 55], "17500": [11, 15], "carefulli": [12, 52], "manag": [12, 44, 45, 46, 47, 49, 51, 52, 56, 69], "led": [12, 52], "monthli": [12, 18, 52], "jan": [12, 18, 52], "feb": [12, 18, 52], "mar": [12, 18, 52], "jun": [12, 18, 52], "jul": [12, 18, 52], "aug": [12, 18, 52], "oct": [12, 18, 52], "nov": [12, 18, 52], "dec": [12, 18, 52, 63], "88": [12, 18, 20, 29, 35, 37, 50, 52, 62, 66], "125": [12, 18, 35, 37, 49, 52, 55, 62, 66], "260": [12, 18, 32, 52, 64], "217": [12, 18, 29, 52, 66], "238": [12, 17, 18, 29, 52, 64], "286": [12, 18, 52], "248": [12, 18, 52], "265": [12, 18, 52, 55, 66], "293": [12, 18, 29, 52], "259": [12, 18, 27, 45, 52], "244": [12, 18, 45, 52], "62": [12, 18, 29, 33, 37, 52, 65], "81": [12, 18, 29, 32, 35, 39, 52, 63], "95": [12, 18, 29, 32, 35, 42, 47, 52, 62, 65], "118": [12, 18, 24, 29, 31, 35, 46, 47, 49, 52, 66], "86": [12, 18, 24, 29, 35, 37, 42, 44, 52, 66], "89": [12, 18, 29, 42, 50, 52], "82": [12, 18, 29, 52, 60], "84": [12, 18, 29, 37, 42, 45, 52, 60, 66], "200": [12, 14, 18, 20, 27, 35, 39, 44, 45, 52, 55, 59, 62, 64, 66, 69], "acquir": [12, 18, 39, 52], "month": [12, 18, 52], "9000": [12, 52, 64], "05": [12, 18, 22, 24, 25, 26, 29, 31, 37, 39, 42, 44, 45, 46, 48, 49, 50, 52, 55, 58, 60, 62, 65, 66], "spend": [12, 52], "5000": [12, 23, 45, 46, 52, 60, 64], "kept": [12, 18, 52], "datafram": [12, 14, 15, 18, 20, 21, 22, 24, 25, 27, 29, 30, 31, 32, 35, 37, 39, 41, 42, 44, 45, 49, 50, 52, 53, 55, 57, 59, 62, 63, 64, 66, 68, 69], "stringio": [12, 18, 31, 52], "ipython": [12, 30, 32, 34, 48, 58, 65], "demand_data": [12, 18, 52], "price_data": [12, 52], "demand_chip": [12, 18, 52], "index_col": [12, 18, 29, 31, 35, 52, 57, 65, 66], "consumpt": [12, 41], "dict": [12, 18, 20, 31, 37, 39, 42, 45, 50, 52, 57, 60], "from_dict": [12, 18, 52, 57, 59, 68], "fillna": [12, 14, 18, 39, 52, 64], "astyp": [12, 18, 25, 30, 37, 52], "int": [12, 13, 18, 19, 27, 29, 30, 33, 37, 40, 47, 49, 52, 53, 60, 68], "135": [12, 18, 29, 32, 49, 60, 65, 69], "187": [12, 18], "341": [12, 18], "282": [12, 18], "333": [12, 15, 18, 45, 46], "404": [12, 18], "334": [12, 18, 37], "327": [12, 18, 45, 52], "347": [12, 18, 29], "375": [12, 18, 45, 52, 55, 64, 69], "343": [12, 18, 29, 52, 55], "446": [12, 18], "624": [12, 18], "1202": [12, 18], "998": [12, 18, 29], "1142": [12, 18, 46, 49], "1380": [12, 18, 37], "1164": [12, 18, 52], "1130": [12, 18], "1224": [12, 18], "1336": [12, 18], "1204": [12, 18], "1108": [12, 18], "pt": [12, 18, 52], "s_": [12, 14, 18, 32, 37], "uniqu": [12, 19, 21, 22, 25, 29, 35, 40, 42, 50, 59, 66, 69], "eas": [12, 65], "pi_": [12, 18, 37], "h_": [12, 20], "happen": [12, 25, 43, 55, 62, 65, 66, 68], "constant": [12, 19, 24, 26, 29, 30, 40, 44, 45, 57, 59, 60, 62, 66, 69], "focu": [12, 30, 42], "beta": [12, 18, 26, 44, 58], "further": [12, 13, 18, 21, 29, 37, 40, 45, 46, 50, 53, 60, 62], "storag": 12, "ell": [12, 55], "balanc": [12, 18, 29, 30, 31, 34, 39, 41, 42, 52, 55, 57, 64, 65, 66], "delta_": [12, 18], "impli": [12, 35, 41, 42, 45, 63], "period": [12, 14, 18, 21, 25, 29, 46, 52, 66], "texttt": 12, "januari": 12, "captur": [12, 35, 38, 62, 68], "level": [12, 14, 18, 21, 24, 35, 44, 48, 51, 52, 53, 57, 58, 60, 62, 65, 66], "decemb": 12, "textrm": [12, 18], "omega_p": [12, 18], "bimproductacquisitionandinventori": [12, 52], "acquisition_pric": [12, 52], "exist": [12, 18, 22, 29, 30, 31, 32, 42, 46, 50, 52, 66, 68, 69], "stock_limit": [12, 18, 52], "month_budget": [12, 52], "prev": [12, 18, 52], "bloat": [12, 18, 52], "pi": [12, 18, 45, 52], "h": [12, 25, 27, 29, 37, 44, 45, 46, 49, 52, 53, 60, 68, 69], "delta": [12, 14, 18, 29, 52, 55, 57, 65], "acquisition_cost": [12, 18, 52], "inventory_cost": [12, 18, 52], "total_cost": [12, 18, 32, 52], "2000": [12, 18, 20, 21, 22, 24, 31, 37, 41, 45, 49, 52, 55, 57, 64], "show_table_of_pyomo_vari": 12, "from_record": [12, 18, 52], "report_pyomo_solut": 12, "nthe": 12, "equidistant_color": 12, "drawstyl": [12, 18, 52], "mid": [12, 18, 52], "set_xtick": [12, 25, 53], "tick": [12, 37, 52], "set_xticklabel": [12, 25], "965": 12, "1078": 12, "266": [12, 18, 52], "1310": [12, 18, 52], "3548": 12, "962": 12, "4312": 12, "912": [12, 18, 52], "787": [12, 18, 60], "527": [12, 18], "1275": [12, 55], "1037": 12, "751": 12, "503": 12, "785": [12, 29], "744": [12, 52], "1615": [12, 18, 52], "1428": [12, 18, 52], "1087": [12, 18, 45, 52], "805": [12, 18, 52], "472": [12, 18, 52], "4354": [12, 18], "3730": [12, 18], "6076": 12, "5078": 12, "3936": 12, "2556": 12, "1392": 12, "262": [12, 41], "3108": 12, "1453": [12, 18, 52], "1391": [12, 18, 52], "1245": [12, 18, 52], "1150": [12, 18, 52], "1032": [12, 18, 52], "946": [12, 18, 29, 52], "857": [12, 18, 52], "775": [12, 18, 52], "693": [12, 18, 52], "609": [12, 18, 52], "543": [12, 18, 52], "situat": [12, 15, 16, 21, 23, 26, 27, 29, 30, 31, 36, 42, 50, 53, 63, 64, 68], "444": 12, "559": [12, 62], "666": [12, 52], "400": [12, 18, 35, 55, 59, 62, 66], "1065": 12, "221": 12, "33": [12, 29, 37, 39, 46, 52, 60, 62, 66], "323": [12, 45, 65], "983": 12, "695": 12, "934": [12, 27], "1356": 12, "1790": 12, "1530": [12, 18], "1980": 12, "1742": 12, "1856": 12, "1673": 12, "38": [12, 29, 35, 37, 60, 62, 65, 66], "1435": 12, "1296": [12, 52], "1003": [12, 52], "718": 12, "4575": 12, "4274": 12, "5072": 12, "4074": 12, "3932": 12, "2552": 12, "1388": 12, "1241": 12, "98": [12, 29, 42, 49, 60, 62, 66], "713": [12, 17], "1377": 12, "2173": 12, "remain": [12, 13, 16, 18, 22, 35, 37, 45, 55, 57, 59, 62, 65, 69], "forc": [12, 25], "infeas": [12, 33, 57, 58, 63, 65, 66], "fewer": [12, 37, 53], "variabel": 12, "rid": 12, "bimproductacquisitionandinventory_v2": 12, "non_negative_stock": 12, "supervis": [13, 42], "19th": 13, "centuri": [13, 49], "cornerston": 13, "modern": [13, 14, 22], "depend": [13, 21, 22, 33, 35, 39, 40, 47, 62, 63, 64, 66, 69], "tradit": 13, "unlik": 13, "squar": [13, 36, 42, 44, 45], "focus": [13, 66], "norm": [13, 42, 50, 58, 62], "robust": [13, 46, 49, 51, 56, 65, 66], "against": [13, 27, 40, 63], "outlier": 13, "methodolog": 13, "survei": [13, 37, 39], "paper": [13, 14, 21, 29, 37, 44, 45, 46, 47, 49, 57], "subash": 13, "narula": 13, "john": [13, 21, 41, 47, 64, 69], "wellington": 13, "scikit": [13, 40], "make_regress": [13, 40], "synthet": [13, 40], "n_sampl": [13, 40], "n_featur": [13, 40], "sklearn": [13, 40, 42, 50], "nois": [13, 40], "random": [13, 20, 23, 24, 27, 30, 33, 38, 40, 45, 46, 47, 48, 49, 52, 53, 55, 57, 58, 60, 62, 63, 65, 66], "seed": [13, 20, 24, 30, 33, 40, 52, 53, 55, 57, 60, 62, 63, 65, 66], "2021": [13, 29, 44, 46, 49], "prepar": [13, 25, 40, 62, 66, 68], "versu": [13, 40], "coolwarm": [13, 14], "sqrt": [13, 29, 40, 42, 44, 45, 50, 53, 62], "edgecolor": [13, 25, 27], "black": [13, 39, 45], "e_i": [13, 40], "quantifi": [13, 38, 48], "diverg": 13, "_j": [13, 14, 22, 40, 42, 50, 55, 57, 65], "m_1": [13, 35, 40], "m_k": [13, 40], "criterion": [13, 15, 29, 40, 43, 46, 49], "attempt": [13, 29, 32, 37, 39, 68], "intercept": [13, 40, 50], "approxim": [13, 42, 46, 49, 62, 63, 65], "m_i": [13, 40], "nonlinear": [13, 36, 37, 40, 44, 45, 55, 68], "wors": [13, 63], "differenti": [13, 29, 30, 42, 68], "lad_regress": [13, 40], "dimens": [13, 20, 42, 50], "shape": [13, 27, 32, 40, 42, 50, 60, 66], "style": [13, 21, 32, 34, 40, 67, 68], "ep": [13, 40, 57], "em": [13, 40, 49], "sum_of_abs_error": [13, 40], "24276": 13, "nativ": [13, 26, 69], "inclus": [13, 47, 49, 69], "fit": [13, 27, 37, 40, 42, 45, 50, 62, 68], "found": [13, 21, 27, 29, 33, 35, 37, 39, 47, 49, 51, 52, 55, 59, 63, 64], "actual": [13, 17, 39, 42, 47, 50, 51, 53, 55, 59, 63, 65, 68], "y_fit": [13, 40], "distribut": [13, 14, 21, 24, 28, 29, 34, 46, 47, 49, 55, 56, 58, 63, 66, 69], "theori": [14, 46, 49, 58, 68], "histori": [14, 39], "financ": [14, 29, 45, 46, 47, 49], "invest": [14, 29, 38, 41, 43, 44, 47, 48, 49, 58], "princip": 14, "idea": [14, 15, 20, 22, 27, 45, 46, 47, 53, 57, 63, 65], "blend": [14, 25, 36], "financi": [14, 29, 31, 41, 59, 65], "secur": 14, "trade": [14, 31, 42, 44, 48, 49, 50], "off": [14, 20, 29, 42, 44, 45, 48, 50, 63, 66, 68], "introduct": [14, 25, 46, 47, 62, 64, 68], "1952": 14, "doctor": 14, "thesi": [14, 29], "harri": [14, 45, 49], "markowitz": [14, 36, 43, 49, 56], "award": 14, "share": [14, 33], "1990": [14, 21], "nobel": 14, "prize": 14, "econom": [14, 27, 29, 39, 41, 43, 44, 56], "hi": [14, 19, 24, 46, 47], "field": [14, 63, 66], "covari": [14, 38, 48, 58, 62], "constitu": 14, "varianc": [14, 38, 42, 46, 48, 50, 62], "quadrat": [14, 37, 38, 39, 48, 50, 55], "subject": [14, 24, 26, 30, 31, 32, 37, 38, 44, 46, 47, 51, 53, 59, 63, 64, 69], "alloc": [14, 27, 30, 32, 33, 37, 45, 47, 61, 64], "wealth": [14, 29, 31, 46, 47], "remark": [14, 42, 50], "1991": [14, 21, 37], "konno": 14, "yamazaki": 14, "propos": [14, 32, 37, 47, 49, 62, 68], "incorpor": [14, 23, 29, 37, 49, 69], "larg": [14, 15, 20, 22, 23, 25, 26, 29, 30, 32, 33, 35, 37, 39, 41, 42, 49, 50, 62, 63, 65, 69], "yahoo": [14, 49], "web": [14, 29, 45, 46, 49, 64], "servic": [14, 20, 29, 31, 32, 53, 62], "notori": 14, "fickl": 14, "colaboratori": 14, "upgrad": [14, 49, 62], "q": [14, 29, 41, 42, 44, 45, 46, 49, 50, 53, 60, 62, 63, 65, 66, 68], "mdate": 14, "scipi": [14, 20, 58, 60, 62], "datetim": [14, 29, 49], "yf": [14, 20, 49], "n_year": 14, "load": [14, 20, 21, 33, 35, 50, 65, 66, 68], "consolid": 14, "split": [14, 20, 25, 29, 42, 61], "dividend": 14, "ticker": 14, "axp": [14, 49], "aapl": [14, 49], "amgn": [14, 49], "ba": [14, 49], "crm": 14, "csco": 14, "cvx": [14, 49], "di": 14, "dow": [14, 49], "gs": 14, "hd": 14, "ibm": 14, "intc": 14, "jnj": 14, "jpm": [14, 49], "ko": 14, "mcd": [14, 49], "mmm": [14, 49], "mrk": 14, "msft": [14, 49], "nke": 14, "pg": [14, 49], "trv": 14, "unh": 14, "vz": 14, "wba": 14, "wmt": 14, "xom": [14, 49], "end_dat": 14, "todai": [14, 49], "start_dat": 14, "timedelta": [14, 49], "365": [14, 49, 55, 59], "progress": [14, 44], "adj": [14, 49], "bfill": 14, "inplac": [14, 21, 45, 49, 53, 64], "ffill": 14, "logi": [14, 49], "bbox_to_anchor": [14, 22, 24, 46, 49], "log": [14, 29, 37, 46, 49, 55, 57, 66, 68], "preserv": [14, 26], "arithmet": [14, 19], "logarithm": [14, 29, 47], "assets_sc": 14, "div": 14, "iloc": [14, 49, 50, 52], "dai": [14, 25, 26, 29, 35, 59, 60], "r_": [14, 24, 32, 47, 49], "daily_return": 14, "diff": 14, "shift": [14, 16, 49], "sharex": [14, 24, 49], "xaxi": 14, "set_major_loc": 14, "yearloc": 14, "set_major_formatt": 14, "dateformatt": 14, "delta_j": [14, 65], "depict": [14, 37], "interv": [14, 21, 22, 53, 60, 68], "whose": [14, 18, 27, 38, 40, 47, 57, 58], "green": [14, 21, 29, 34, 35, 44, 53, 57], "mean_return": 14, "mean_absolute_devi": 14, "linestyl": [14, 15, 24, 39, 41, 57, 60], "comparison": [14, 20, 22, 23, 42, 63], "vs": [14, 23, 36, 48, 49, 62], "scalarformatt": 14, "gradient_barplot": 14, "color_map": [14, 35], "range_v": 14, "val": 14, "normalized_v": 14, "35": [14, 18, 29, 37, 48, 58, 65, 66], "choos": [14, 15, 18, 23, 26, 33, 42, 44, 47, 50, 55, 59], "map": [14, 19, 37, 42, 50, 66], "color_map2": 14, "revers": [14, 29, 69], "color_map3": 14, "ylgn": 14, "set_ytick": [14, 21, 22, 25, 37], "arang": [14, 18, 52], "set_yticklabel": [14, 21, 25], "0005": [14, 45], "0021": 14, "formatt": 14, "usemathtext": 14, "set_scientif": 14, "set_powerlimit": 14, "001": [14, 45], "02": [14, 17, 18, 29, 48, 57, 62], "ms": [14, 24, 29, 30, 35, 37, 39, 41, 44, 45, 46, 60, 68], "03": [14, 29, 31, 39, 48], "formatterx": 14, "formatteri": 14, "yaxi": [14, 23], "w_t": 14, "t_": [14, 21, 24, 62], "w_": [14, 27, 29, 33, 42, 46, 47, 62], "n_": [14, 19, 25, 29, 32], "jn_": 14, "weight": [14, 18, 21, 22, 25, 27, 29, 34, 35, 37, 42, 46, 49, 50, 53], "w_j": [14, 31], "investor": [14, 29, 38, 46, 47, 48, 49], "impos": [14, 22, 23, 25, 30, 42, 46, 55], "horizon": [14, 22, 23, 24, 52], "w": [14, 22, 23, 25, 27, 31, 33, 37, 39, 42, 44, 45, 46, 47, 49, 50, 53, 55, 59, 66], "big": [14, 18, 22, 23, 25, 26, 29, 35, 45, 57, 62], "ub": [14, 21, 27, 44, 50, 69], "enforc": [14, 25, 29, 53, 65], "diversif": 14, "u_t": [14, 23, 49], "v_t": 14, "mad_portfolio": 14, "w_lb": [14, 27], "w_ub": [14, 27], "portfolio_return": 14, "sum_of_weight": 14, "mean_portfolio_return": 14, "no_short": [14, 29], "diversifi": 14, "024": [14, 45, 68], "101": [14, 24, 29], "027": [14, 45], "004": [14, 45], "115": [14, 35, 44, 45, 49, 66], "141": [14, 37, 49], "104": [14, 29], "012": [14, 29, 45, 62], "01": [14, 29, 31, 32, 37, 38, 39, 46, 47, 48, 55], "199": [14, 62], "00740": 14, "mad_visu": 14, "mad_portfolio_weight": 14, "color_map1": 14, "grei": [14, 37], "97": [14, 21, 29, 42, 49, 50, 66], "005": [14, 45, 48, 55, 62], "21": [14, 20, 22, 24, 25, 29, 35, 44, 49, 53, 55, 62, 65], "000015": [14, 29], "0028": 14, "toler": [14, 38, 42, 48, 55, 57, 66], "central": [14, 36], "linspac": [14, 38, 39, 41, 44, 45, 46, 47, 49, 55, 57, 60, 64, 66], "portfolio_mean_return": 14, "portfolio_mean_absolute_devi": 14, "ro": [14, 39, 41, 45], "_0": 14, "w_0": [14, 46, 47], "mad_portfolio_withriskfreeasset": 14, "rf": [14, 49], "138": [14, 27, 49], "049": 14, "139": [14, 27, 38, 49], "117": [14, 27, 35, 62, 66], "037": 14, "906": 14, "00731": 14, "instruct": 14, "mpt": 14, "frontier": [14, 48, 49], "capit": [14, 37, 38, 44, 46, 47, 48, 49, 58], "minor": [14, 17], "veri": [14, 23, 28, 30, 33, 36, 50, 51, 53, 55, 63, 66], "depart": [14, 34, 53], "c_j": [15, 20], "x_j": [15, 20, 42], "ij": [15, 20, 22, 34, 35, 65, 66], "b_i": [15, 45], "net": [15, 26, 29, 31, 34, 39, 60, 65, 66], "margin": [15, 32, 37, 42, 50, 55, 64, 66], "uncertain": [15, 48, 55, 59, 63, 65, 66], "thorni": 15, "reserv": [15, 31], "plausibl": 15, "plant": [15, 16, 23, 35, 66], "_s": 15, "deem": 15, "probabilist": [15, 62], "conserv": [15, 34, 35, 44, 66], "bim_scenario": 15, "nprofit": [15, 39], "bim_resourc": 15, "4000": [15, 39, 45, 64], "set_index": [15, 21, 32, 35, 45, 53, 57, 65, 66], "navail": 15, "tolist": [15, 39], "scenario_profit": [15, 64], "resource_limit": 15, "worst_case_profit": [15, 63, 64], "nworst": 15, "worst_case_plan": 15, "33333": 15, "66670": 15, "outlook": 15, "worth": [15, 35, 39, 64], "investig": [15, 63, 66], "simpli": [15, 29, 32, 45, 53, 59, 62, 66], "max_profit": 15, "mean_cas": 15, "mean_case_profit": 15, "mean_case_plan": 15, "nmean": [15, 62], "17833": 15, "750": [15, 29], "expect": [15, 31, 35, 38, 46, 47, 48, 50, 51, 55, 57, 58, 60, 62, 63, 64, 65], "prefer": [15, 25, 42, 49, 65], "mean_case_outcom": 15, "worst_case_outcom": 15, "concat": [15, 52], "axi": [15, 24, 29, 30, 37, 39, 42, 45, 52, 57, 59, 62, 66], "ylim": [15, 41, 42, 50, 55, 60], "15000": [15, 41, 64], "20000": [15, 32, 64], "orang": [15, 35], "penalti": [15, 42, 48, 50, 59], "bad": [15, 22, 46, 49, 51, 63, 64], "payout": [15, 46], "favor": [15, 46], "occur": [15, 23, 29, 45, 46, 47], "why": [15, 29, 49, 57, 69], "peopl": [16, 30], "power": [16, 42, 50, 51, 57, 61, 66], "threshold": [16, 29, 30, 38, 42, 55, 57, 58, 66], "neither": [16, 30, 32], "seen": [16, 57], "still": [16, 59, 65, 66], "although": [16, 30, 55], "milo": [16, 17, 22, 23, 28, 29, 30, 33, 37, 55, 65], "mathcal": [16, 35, 42, 48, 50, 53, 62, 65, 66], "subset": [16, 25, 42, 50, 69], "tacitli": 16, "perturb": [16, 55, 63, 65], "workforc": 16, "schedul": [16, 23, 27, 28, 65, 66], "recharg": 16, "electr": [16, 35, 51, 66], "vehicl": [16, 51], "disjunct": [16, 19, 21, 24, 27, 64, 69], "cryptarithm": 16, "puzzl": 16, "strip": [16, 20, 68], "pack": [16, 37], "job": 16, "shop": [16, 56], "mainten": [16, 32], "network": [16, 29, 31, 32, 34, 39, 65], "realiz": [17, 23, 29, 30, 32, 35, 39, 48, 52, 55, 59, 62, 63, 65, 66], "wast": [17, 63], "gr": [17, 55], "accordingli": 17, "approx": [17, 39, 60, 62], "626": [17, 27, 62], "1123": 17, "762": [17, 50], "roughli": 17, "17628": 17, "loss": [17, 29, 31, 37, 42, 58, 59, 64], "ineffici": 17, "627": 17, "1124": 17, "unfeas": 17, "potenti": [17, 26, 29, 39, 42, 50, 63, 66], "intric": 17, "difficult": [17, 27, 36, 66], "safer": 17, "outlin": [17, 22, 67], "again": [18, 29, 30, 31, 35, 42, 48, 50, 63], "sophist": [18, 29], "acquisit": [18, 52], "protocol": 18, "supplier": [18, 20, 32, 59], "deliv": [18, 22, 32, 35, 39], "sheet": [18, 21], "unitari": 18, "batch": 18, "half": 18, "discount": [18, 44], "purchas": [18, 29, 31, 37, 39, 52, 62, 63, 64], "summari": [18, 29], "incur": [18, 20, 45, 66], "pai": [18, 32, 63], "kilogram": 18, "moment": [18, 23, 31, 35, 65], "usual": [18, 21, 22, 34, 42], "track": [18, 25, 27, 29, 62], "bui": [18, 29, 60, 64], "volum": [18, 29, 32, 35, 65], "ts": 18, "u_": [18, 34, 63], "tricki": 18, "b_": [18, 34, 35, 37, 65, 66], "r_t": [18, 49], "p_t": 18, "sure": [18, 25, 38, 46, 47, 58, 63, 65], "p_": [18, 35, 57, 59, 65, 66], "cent": [18, 32], "alpha_": 18, "setminu": [18, 65, 66], "h_p": 18, "ensur": [18, 30, 33, 35, 38, 48, 53, 57, 62, 65, 66], "natur": [18, 25, 34, 36, 37, 39, 45, 51, 55, 59, 63, 69], "give": [18, 35, 39, 42, 44, 45, 47, 50, 53, 63, 66], "gamma_": 18, "textup": [18, 22, 25], "10000": [18, 19, 22, 24, 26, 29, 45], "automat": [18, 65], "input": [18, 35, 38, 42, 48, 50, 53, 58, 60, 62, 63, 65, 68], "bimproduction_v1": 18, "supplying_copp": 18, "supplying_batch": 18, "price_copper_sheet": 18, "price_batch": 18, "discounted_pric": 18, "batch_siz": 18, "copper_sheet_mass": 18, "copper_bucket_s": 18, "unitary_product": 18, "unitary_holding_cost": 18, "kappa": 18, "gamma": [18, 25, 38, 42, 48, 50, 55, 63], "omega": [18, 57], "units_in_batch": 18, "copper_in_bucket": 18, "inventory_capac": 18, "pairs_in_batch": 18, "pairs_in_sheet": 18, "bought": [18, 59, 60], "quickli": [18, 29, 31], "pars": [18, 30], "table1d": 18, "retriev": [18, 29], "table2d": 18, "table3d": 18, "multiindex": [18, 53], "from_product": 18, "m1": 18, "300": [18, 22, 24, 40, 44, 45, 52, 55, 59, 62, 64], "0f": [18, 20, 27, 32, 34, 60, 66], "xtick": [18, 30, 52], "git": [18, 25, 26, 31, 42], "hash": [18, 25, 26, 31, 42], "594fa5a9d": [18, 25, 26, 31, 42], "copyright": [18, 25, 26, 31, 42], "mit": [18, 25, 26, 31, 42], "licenc": [18, 25, 26, 31, 42], "110216": 18, "1102": 18, "228": [18, 29, 45], "233": [18, 55], "274": [18, 44], "349": [18, 44, 65], "257": 18, "690": [18, 29], "326": 18, "371": [18, 45, 65, 66], "351": [18, 27], "1200": [18, 64, 66], "1300": [18, 45], "3100": 18, "72": [18, 20, 24, 29, 37, 41, 49, 60], "36": [18, 29, 37, 41, 60, 62, 64], "24": [18, 24, 25, 29, 32, 35, 39, 42, 45, 49, 53, 62, 64, 65, 66], "2528": 18, "388": 18, "90": [18, 23, 26, 27, 29, 50, 62, 63, 64], "2042": [18, 45], "bimproduction_v2": 18, "in_batch": 18, "m2": [18, 40], "1427": [18, 35], "1086": 18, "804": [18, 29], "471": 18, "juli": 19, "1924": 19, "famou": [19, 30, 49, 59], "british": 19, "magazin": 19, "strand": 19, "henri": 19, "dudenei": 19, "regular": [19, 42, 50], "perplex": 19, "digit": [19, 29], "d": [19, 21, 22, 24, 25, 27, 32, 34, 35, 37, 39, 40, 42, 45, 46, 49, 50, 53, 57, 58, 59, 63, 65, 66, 68, 69], "o": [19, 20, 32, 44, 46, 47, 49, 50, 53, 57, 68], "along": [19, 24, 27, 29, 42, 50, 51, 68], "n_a": 19, "n_e": 19, "n_n": 19, "n_d": [19, 32], "n_m": 19, "n_o": 19, "n_r": 19, "n_y": 19, "n_b": 19, "lt": 19, "veebar": [19, 21, 22, 23, 24, 26, 27], "gdp": [19, 21, 22, 23, 24, 26, 27, 64], "filter": [19, 21, 22, 25, 27, 29, 31, 35, 53, 69], "messag": [19, 20, 30, 57, 66, 68], "leading_digit_nonzero": 19, "unique_assign": 19, "dummi": [19, 30, 53], "dummy_object": 19, "transformationfactori": [19, 21, 22, 23, 24, 26, 27, 64, 68], "bigm": [19, 21, 22, 23, 24, 26, 27, 62, 64], "apply_to": [19, 21, 22, 23, 24, 26, 27, 64, 68], "letters2num": 19, "join": [19, 25, 29, 31, 34, 49], "send": [19, 30], "monei": [19, 29, 32, 44, 49, 59], "gdpopt": [19, 20], "mip": 19, "gecod": 19, "refactor": 19, "On": [20, 21, 23, 24, 35, 46, 49, 55, 59], "notic": [20, 55, 63, 68], "exercis": [20, 35, 62], "face": [20, 22], "strike": 20, "speedup": 20, "apt": 20, "qq": 20, "coinor": 20, "fulfil": [20, 37], "simultan": [20, 21, 31, 37, 47], "decid": [20, 22, 32, 35, 59, 62, 63, 66], "otherwis": [20, 25, 30, 33, 35, 42, 47, 50, 55, 57, 63], "sum_j": [20, 22, 65], "sum_i": 20, "relax": [20, 24, 37, 39, 42, 50, 57], "inadvert": 20, "around": [20, 30, 31, 52, 53, 55], "weaker": 20, "itertool": 20, "perf_count": [20, 30, 33], "pc": [20, 30, 33], "tqdm": [20, 30], "subprocess": 20, "listavailablesolv": 20, "shell_command": 20, "help": [20, 35, 57, 63, 65], "check_output": 20, "shell": 20, "decod": 20, "startswith": 20, "endswith": 20, "getsolvernam": 20, "try": [20, 25, 38, 50, 53, 63, 66, 68], "switchcutsoff": 20, "solver_nam": 20, "elif": [20, 24, 34], "mip_cuts_bqp": 20, "mip_cuts_cliqu": 20, "mip_cuts_cov": 20, "mip_cuts_disjunct": 20, "mip_cuts_flowcov": 20, "mip_cuts_pathcut": 20, "mip_cuts_gomori": 20, "mip_cuts_gubcov": 20, "mip_cuts_impli": 20, "mip_cuts_localimpli": 20, "mip_cuts_liftproj": 20, "mip_cuts_mircut": 20, "mip_cuts_mcfcut": 20, "mip_cuts_rlt": 20, "mip_cuts_zerohalfcut": 20, "ergo": 20, "definit": [20, 38, 40, 42, 48, 50, 58, 63], "xpress": [20, 21, 22, 55], "cutstrategi": 20, "switchpresolveoff": 20, "preprocessing_presolv": 20, "limitsolvetim": 20, "max_in_second": 20, "timelimit": 20, "time_limit": 20, "maxtim": [20, 22], "closureformaxtim": 20, "compos": [20, 68], "arg": [20, 37, 42, 45, 50, 68], "kwarg": [20, 42, 50], "func": [20, 68], "initial_solv": 20, "appsi_cbc": 20, "gloa": 20, "lbb": 20, "loa": 20, "ric": 20, "mindtpi": 20, "ecp": 20, "fp": [20, 35, 37, 42], "goa": 20, "oa": [20, 46, 47], "mpec_minlp": 20, "mpec_nlp": 20, "multistart": 20, "fsolv": 20, "newton": 20, "root": 20, "secant": 20, "trustregion": 20, "facilitylocationcommon": 20, "chooseonefacil": 20, "facilitylocationweak": 20, "weak": 20, "serveifopen": 20, "facilitylocationstrong": 20, "getsolut": 20, "generatefacilitylocationinst": 20, "noffacil": 20, "nofcustum": 20, "xc": [20, 27], "randint": [20, 27, 30, 45, 57], "yc": [20, 27], "xf": [20, 21], "dist": [20, 24], "showfacilityloc": 20, "gca": [20, 29, 35, 55], "proper": [20, 48, 52, 65], "hood": 20, "clever": 20, "gurobipi": 20, "cp310": 20, "manylinux2014_x86_64": 20, "whl": 20, "mb": 20, "2k": 20, "90m": 20, "0m": 20, "32m12": 20, "31m48": 20, "eta": 20, "36m0": 20, "25hinstal": 20, "22": [20, 22, 24, 25, 29, 30, 35, 37, 39, 53, 62, 66], "manylinux1_x86_64": 20, "32m44": 20, "31m20": 20, "32m72": 20, "31m8": 20, "25hrequir": 20, "0a0": 20, "usr": 20, "local": [20, 39, 68, 69], "lib": 20, "python3": 20, "23": [20, 24, 25, 29, 35, 37, 42, 45, 53, 58, 62, 66, 69], "available_solv": 20, "appsi_cplex": 20, "appsi_gurobi": 20, "cplex_direct": 20, "cplex_persist": 20, "gurobi_direct": [20, 30, 45], "gurobi_persist": 20, "xpress_direct": 20, "xpress_persist": 20, "subplots_adjust": 20, "hspace": 20, "licens": [20, 45], "path": [20, 29, 31, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 57, 58], "file": [20, 68], "init": 20, "fico": 20, "xpauth": 20, "xpr": 20, "increasingli": [20, 30, 51, 66], "faster": [20, 23, 30, 33, 48, 63], "solveinst": 20, "fromkei": 20, "leav": [20, 27, 50, 59, 60], "rfind": 20, "warn": [20, 30, 42, 50, 57, 66], "solverresult": 20, "abort": 20, "classic": [21, 22, 37, 40, 47], "hous": [21, 46, 47, 49], "patient": 21, "hospit": 21, "meal": 21, "fast": [21, 29], "restaur": [21, 22], "devic": [21, 42, 51, 63], "durat": [21, 22], "makespan": 21, "christel": [21, 22], "gueret": [21, 22], "christian": [21, 22, 25], "prin": [21, 22], "marc": [21, 22], "sevaux": [21, 22], "mp": [21, 22], "flow": [21, 28, 29, 39, 61, 66], "minut": [21, 24, 35, 62], "yellow": [21, 35], "28": [21, 25, 29, 35, 37, 39, 45, 49, 53, 62, 66], "decompos": 21, "until": [21, 22, 23, 33, 37, 39, 42, 47, 55, 59, 63], "prerequisit": 21, "json": 21, "dur": [21, 53], "paper_1": 21, "prec": 21, "paper_2": 21, "paper_3": 21, "preced": [21, 29], "start_": 21, "wise": 21, "conflict": [21, 33, 42], "jobshopmodel": 21, "jobshop_model": 21, "cross": [21, 29, 31, 39], "taskord": 21, "establish": [21, 29, 62], "minimize_makespan": 21, "finish_task": 21, "no_overlap": [21, 23, 27], "pyomomodel": 21, "0x7f90cf08ad60": 21, "jobshop_solv": 21, "jobshop": 21, "87": [21, 29, 31, 42, 62], "64": [21, 29, 32, 35, 65, 66], "59": [21, 29, 49], "nschedul": 21, "sort_valu": [21, 22, 25, 53], "mpl": 21, "bar_styl": [21, 53], "solid_capstyl": [21, 22, 24, 37, 53], "butt": [21, 22, 24, 37, 53], "text_styl": [21, 53], "bold": [21, 22, 27, 34, 37, 53], "center": [21, 22, 24, 25, 27, 34, 37, 42, 46, 49, 53, 55, 56], "va": [21, 22, 25, 27, 37, 47, 53], "dark2": 21, "jdx": 21, "mdx": 21, "xs": [21, 24], "idx": [21, 30, 42, 50], "attent": [21, 50], "dunn": 21, "2013": [21, 39, 63], "recip": 21, "mixer": 21, "reactor": 21, "recipe_to_task": 21, "recipea": 21, "recipeb": 21, "recipec": 21, "a1": 21, "a2": 21, "a3": 21, "a4": 21, "took": [21, 29], "gain": [21, 29, 30, 31], "append": [21, 29, 31, 37, 38, 48, 50, 52, 55, 57, 63, 68], "b1": 21, "b2": 21, "equip": 21, "vee": [21, 26], "jobshopmodel_clean": 21, "jobshop_model_clean": 21, "tclean": 21, "hull": [21, 23], "intermedi": [21, 39, 68], "vessel": 21, "precid": 21, "sequenc": [21, 22, 23, 29, 31, 53, 68], "zw": 21, "basi": [21, 29, 57, 62], "jobshop_model_clean_zw": 21, "mode": [21, 23, 34, 57], "appleg": 21, "david": [21, 46, 69], "william": [21, 46, 47], "cook": 21, "orsa": 21, "journal": [21, 29, 37, 44, 46, 47, 49], "149": [21, 29, 62], "156": [21, 27], "pdf": [21, 29, 37, 39, 45, 46, 47, 49, 60, 64], "beaslei": 21, "electron": 21, "mail": 21, "societi": [21, 44], "41": [21, 29, 37, 49, 62, 63, 65], "1069": 21, "1072": 21, "gu\u00e9ret": 21, "contract": [21, 32], "1999": [21, 37, 44, 45], "00034": 21, "mann": 21, "alan": 21, "1960": 21, "219": 21, "223": [21, 24], "slow": 21, "frequent": [21, 42, 50, 69], "accommod": [21, 23, 29, 33], "descreas": 21, "consequ": [21, 39, 42, 50, 62], "busi": [22, 24, 37, 45, 62, 64], "student": [22, 33, 45, 69], "courier": 22, "server": 22, "wait": [22, 29], "thread": 22, "assembl": 22, "heurist": [22, 27, 29], "address": [22, 29, 32, 37, 47, 64], "past": [22, 62], "scenario": [22, 29, 55, 57, 60, 64, 66, 68, 69], "schedule_job": 22, "seq": [22, 45], "27": [22, 25, 29, 35, 42, 53, 65], "line2d": 22, "width": [22, 29, 33, 34, 35, 39, 45, 53, 55], "window": [22, 35], "fill_between": [22, 25, 27, 37, 41, 45], "total_past_du": 22, "spine": [22, 37], "set_vis": [22, 37, 53], "custom_lin": 22, "savefig": [22, 24, 40, 52], "machinescheduling_": 22, "svg": [22, 24, 40, 52], "dpi": [22, 24, 40, 52], "bbox_inch": [22, 24, 40, 52], "31": [22, 25, 29, 65, 66], "priorit": 22, "familiar": [22, 24, 37, 41, 45, 68], "homework": 22, "circumst": [22, 69], "late": 22, "longest": 22, "twice": [22, 29, 65], "famili": [22, 24, 30, 50], "disjuct": 22, "machine_schedul": 22, "orderd": 22, "job_releas": 22, "job_dur": 22, "past_due_constraint": 22, "xor": [22, 23, 24, 26, 27, 64], "machine_deconflict": 22, "job_a": 22, "job_b": 22, "minimize_past": 22, "optimalschedul": 22, "extract_valu": [22, 57], "outperform": 22, "nonetheless": 22, "tackl": [22, 30], "z_": [22, 39, 44, 50, 62], "slower": [22, 33], "machine_schedulemilo": 22, "machine_deconflict_a": 22, "machine_deconflict_b": 22, "optimalschedule_milo": 22, "c_t": [23, 30], "shut": 23, "dure": [23, 25, 33, 35, 39, 64, 69], "x_t": 23, "abl": [23, 29, 30, 33, 45], "earn": [23, 39], "y_t": [23, 30], "overlap": [23, 25, 27], "consecut": [23, 25], "ldot": [23, 25, 27, 29, 30, 31, 33, 37, 42, 44, 50, 53, 62, 63, 65], "sai": [23, 29, 30, 31, 33, 35, 55, 65], "exclus": [23, 24, 26, 27, 37], "convex": [23, 28, 29, 37, 38, 41, 45, 46, 47, 49, 50, 55, 58], "plane": [23, 45, 53, 62], "maintenance_plan": 23, "required_mainten": 23, "required_shutdown": 23, "plot_schedul": 23, "tab20": [23, 24, 27, 33], "daili": [23, 25, 26], "set_tick": 23, "set_ticklabel": 23, "length": [23, 24, 29, 31, 37, 50], "rng": [23, 27, 52, 55, 62, 63, 65, 66], "default_rng": [23, 52, 55, 62, 63, 65, 66], "shutdown": 23, "safe": 23, "decreas": [23, 45, 66], "_t": 23, "upos_max": 23, "3334": [23, 39], "uneg_max": 23, "maintenance_planning_ramp": 23, "upo": 23, "uneg": 23, "skip": [23, 24, 37, 68, 69], "frequenc": [23, 49, 62, 66], "particularli": [23, 30, 32, 66, 69], "revis": 23, "postpon": 23, "wedg": 23, "summat": [23, 39, 41, 53, 64], "termin": [23, 30, 32, 39, 55, 59], "paradox": [23, 47], "maintenance_planning_ramp_oper": 23, "sumi": 23, "sprd": 23, "comment": [23, 63, 69], "disj": 23, "rather": [23, 29, 32, 37, 40, 45, 50, 62, 65], "hint": 23, "z_t": 23, "systemat": 23, "effort": [23, 27], "visit": 24, "sightse": 24, "tour": 24, "road": [24, 34, 51], "trip": [24, 31], "routin": [24, 69], "pre": [24, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 63, 65, 69], "rest": [24, 25, 33, 65], "stop": [24, 39, 46, 55, 63], "batteri": 24, "driver": 24, "ahead": 24, "rate": [24, 29, 31, 38, 47, 48, 58, 66], "distanc": [24, 42, 50, 69], "arbitrari": [24, 41, 53], "drive": 24, "littl": [24, 32, 35, 63, 68, 69], "c_": [24, 29, 34, 37], "150": [24, 29, 32, 33, 37, 44, 55, 60, 62, 64], "kw": [24, 42, 50], "unforeseen": 24, "event": [24, 29, 59], "never": [24, 42, 50, 55], "drop": [24, 37, 46, 66], "comfort": 24, "lost": [24, 30, 46, 63], "assumpt": [24, 29, 55, 57, 58, 62], "travel": [24, 29, 51, 62], "speed": [24, 42, 50, 66], "km": 24, "discharg": 24, "kwh": 24, "elaps": [24, 33], "d_i": [24, 27, 35, 45, 57, 65, 66], "c_i": [24, 35, 45, 57, 65, 66], "arriv": [24, 29, 32, 34, 50, 53, 55, 63], "arr": [24, 53], "dep": [24, 53], "d_": [24, 29, 59], "r_i": [24, 27, 38, 47, 48, 58, 65], "t_i": [24, 44, 45], "script": [24, 29, 62], "departur": [24, 53], "opportun": [24, 31, 59, 63, 68], "That": [24, 42, 46, 50, 53, 62, 66], "heterogen": 24, "n_charging_st": 24, "randomli": 24, "cumsum": [24, 27, 46], "triangular": 24, "02d": [24, 25, 53], "s00": 24, "112": [24, 45, 49, 57, 60], "s01": 24, "294": 24, "s02": 24, "439": 24, "s03": 24, "517": 24, "s04": 24, "598": 24, "s05": 24, "729": [24, 42], "s06": 24, "773": 24, "s07": 24, "933": 24, "s08": 24, "1070": 24, "s09": 24, "1210": [24, 55], "s10": 24, "1340": 24, "s11": 24, "1475": 24, "s12": 24, "s13": 24, "1680": 24, "s14": 24, "1798": 24, "s15": 24, "1883": 24, "s16": 24, "1998": [24, 37, 45], "s17": 24, "2087": 24, "s18": 24, "2208": 24, "19": [24, 25, 29, 32, 37, 39, 41, 48, 53, 62, 65, 66], "s19": 24, "2259": 24, "plot_stat": 24, "ys": 24, "fontsiz": [24, 27, 30, 32, 37, 39, 45, 53], "275": [24, 55], "c_max": 24, "c_min": 24, "veloc": 24, "t_lost": 24, "t_rest": 24, "r_max": 24, "ev_plan": 24, "on_rout": 24, "ev": [24, 59], "segment": 24, "c_arr": 24, "c_dep": 24, "t_arr": 24, "t_dep": 24, "r_arr": 24, "r_dep": 24, "min_tim": [24, 53], "drive_tim": 24, "rest_tim": 24, "drive_dist": 24, "thtat": 24, "disjunct_1": 24, "disjunct_2": 24, "t_stop": 24, "nan": [24, 35, 64, 66], "122000": 24, "123": [24, 27], "072000": 24, "949000": 24, "157187": 24, "79": [24, 29, 35, 49, 66], "224000": 24, "83": [24, 29, 42], "376000": 24, "208187": 24, "603187": 24, "48": [24, 29, 35, 37, 39, 45, 64, 65, 66], "672000": 24, "381187": 24, "162973": 24, "91": [24, 29, 42, 50], "512000": 24, "781787": 24, "972973": 24, "284973": 24, "584000": 24, "725973": 24, "605680": 24, "304000": 24, "879707": 24, "199680": 24, "63": [24, 29, 41, 44, 60, 62, 63], "048000": 24, "576680": 24, "079107": 24, "576000": 24, "502427": 24, "478107": 24, "124773": 24, "646666": 24, "421773": 24, "872000": 24, "772773": 24, "941662": 24, "448000": 24, "781333": 24, "168889": 24, "161662": 24, "501333": 24, "992662": 24, "433747": 24, "37": [24, 29, 37, 39, 49, 55, 62], "557333": 24, "78": [24, 29, 52, 63], "720000": [24, 29], "441085": 24, "609747": 24, "496000": 24, "463747": 24, "742253": 24, "960000": 24, "278506": 24, "887253": 24, "480000": [24, 29], "907253": 24, "visualizeevplan": 24, "xv": 24, "cv": 24, "linewidth": [24, 35], "ev_result": 24, "entitl": [25, 50], "carballo": 25, "lozano": 25, "post": [25, 53, 69], "campu": 25, "primarili": 25, "eight": 25, "morn": [25, 62], "night": [25, 35], "sundai": 25, "employe": 25, "saturdai": 25, "principl": [25, 63, 69], "ten": [25, 65], "predetermin": [25, 37], "staf": [25, 63], "seven": 25, "weekend": [25, 62], "recap": 25, "w_1": 25, "w_2": 25, "w_n": [25, 46, 47, 49], "mon": 25, "tue": 25, "sun": [25, 44, 46, 49], "slot": [25, 33], "e_": [25, 62], "fill": [25, 32, 55, 57, 64], "n_w": 25, "e_w": 25, "loop": [25, 29, 37, 55, 69], "24h": 25, "d_1": 25, "s_1": 25, "d_2": 25, "s_2": 25, "d_3": 25, "s_3": 25, "mind": [25, 63], "beyond": 25, "shift_schedul": 25, "avaiabl": 25, "wed": [25, 30], "fri": 25, "sat": 25, "suffici": [25, 29, 32, 37, 63], "required_work": 25, "forti": 25, "forty_hour_limit": 25, "required_rest": 25, "d1": 25, "s1": 25, "d2": 25, "s2": 25, "d3": 25, "s3": 25, "is_need": 25, "is__weekend": 25, "minimize_work": 25, "particip": [25, 32, 65], "patch": [25, 27, 45, 55], "rectangl": [25, 27, 32, 45, 55], "bw": [25, 47], "colormap": 25, "add_patch": [25, 27, 45, 55], "id": [25, 37, 53, 66], "categori": [25, 57, 62, 68], "categoricaldtyp": 25, "worker_typ": 25, "day_typ": 25, "shift_typ": 25, "w06": 25, "w07": 25, "w01": 25, "w03": 25, "w04": 25, "w02": 25, "w05": 25, "receiv": [25, 29, 31, 32, 37, 39, 45, 46, 51], "worker_schedul": 25, "groupbi": [25, 35, 52, 57], "nwork": 25, "to_str": 25, "w08": 25, "w09": 25, "w10": 25, "day_schedul": 25, "nshift": 25, "discret": [26, 39, 46, 57, 62], "proposit": 26, "truth": 26, "technolog": [26, 39], "production_x": [26, 69], "production_i": [26, 69], "maximize_profit": 26, "labora": 26, "laborb": 26, "highli": [26, 32, 68], "assess": [26, 42, 52, 60], "benefici": 26, "underbrac": [26, 31, 39, 59], "40x": [26, 69], "30y": [26, 69], "60x": 26, "embed": [26, 29, 42, 45, 50, 68], "old": [26, 32], "profit_constr_1": 26, "profit_constr_2": 26, "laborb_1": 26, "laborb_2": 26, "3600": [26, 59], "benefit": [26, 32, 39, 65, 68, 69], "intellig": [26, 29], "partit": [26, 62], "sub": 26, "support": [26, 29, 36, 43, 45, 46, 49, 55, 68, 69], "sp": [27, 37], "onto": [27, 50], "shortest": [27, 29], "edg": [27, 29, 30, 32, 33, 34, 53, 65, 66], "guillotin": 27, "rectangular": 27, "motiv": [27, 32, 37], "industri": [27, 35, 39, 49, 57], "placement": 27, "macro": 27, "semiconductor": 27, "layout": [27, 34, 35, 45], "wood": 27, "textil": 27, "lai": 27, "workstat": 27, "bandwidth": 27, "endpoint": 27, "co_2": 27, "oil": [27, 39], "recoveri": 27, "combinatori": 27, "belong": 27, "grow": [27, 46, 64], "exponenti": [27, 46, 47, 49], "though": [27, 47], "depth": 27, "w_i": 27, "concret": 27, "millimet": 27, "generate_box": 27, "max_width": 27, "max_depth": 27, "deepest": 27, "154": [27, 50, 52], "176": [27, 35, 66], "121": [27, 49], "175": [27, 35, 49, 55, 60, 62, 66], "196": [27, 57], "186": [27, 49], "85": [27, 29, 35, 42, 62, 66], "126": [27, 31], "99": [27, 29, 31, 33, 35, 49, 66], "352": 27, "divid": [27, 42, 46, 49, 50], "lb": [27, 44, 45, 46, 47, 49, 50, 55, 69], "front": 27, "coordin": [27, 45], "corner": 27, "degre": [27, 29, 37, 49, 50, 57, 63], "frame": 27, "trivial": [27, 46, 65], "arrang": [27, 28, 32, 42], "pack_boxes_v0": 27, "copi": [27, 37, 39, 52, 53, 63], "show_box": 27, "facecolor": [27, 39, 45], "annot": [27, 39, 45], "292": 27, "431": [27, 55], "552": 27, "748": 27, "1060": 27, "1125": 27, "370": 27, "occupi": 27, "vertic": [27, 33, 42, 55], "drawn": 27, "reproduc": [27, 42], "lineup": 27, "prevent": 27, "doesn": [27, 30], "assur": [27, 69], "pack_boxes_v1": 27, "minimize_width": 27, "bounding_box": 27, "987": 27, "833": [27, 52], "694": 27, "573": 27, "377": 27, "191": [27, 44], "surpris": [27, 37], "did": [27, 30, 50, 66], "tightli": [27, 41], "orient": [27, 57], "pack_boxes_v2": 27, "yloc": 27, "743": 27, "814": 27, "487": 27, "366": 27, "249": [27, 44], "164": 27, "obvious": 27, "closer": 27, "stack": [27, 50, 62], "deeper": 27, "pack_boxes_v3": 27, "height": 27, "376": 27, "239": [27, 45], "256": [27, 55, 62], "307": 27, "382": 27, "338": 27, "372": [27, 29], "unchang": [27, 62], "especi": [27, 29, 33, 69], "suscept": [27, 35, 65, 66], "trespalacio": 27, "grossmann": 27, "modif": [27, 55, 63], "2017": [27, 46, 47, 49], "annal": 27, "258": 27, "747": [27, 29, 52], "759": 27, "doi": [27, 29, 39], "1007": [27, 39], "s10479": 27, "016": [27, 45], "2112": 27, "pack_boxes_v4": 27, "261": 27, "267": 27, "253": [27, 35, 44], "243": [27, 55], "dealt": 28, "oblivi": 28, "dinner": 28, "seat": [28, 61], "transport": [28, 32, 34, 39, 64], "franchis": 28, "gasolin": [28, 41], "graph": [28, 30, 32, 33, 34, 35, 53], "cryptocurr": 28, "arbitrag": 28, "energi": [28, 44, 51, 56, 61, 65], "dispatch": [28, 56, 61, 65], "forex": 28, "liquid": 29, "owner": [29, 42], "currenc": [29, 31], "wallet": 29, "transact": [29, 31], "risk": [29, 31, 38, 42, 48, 50, 57, 58, 63, 65, 66], "hypothesi": 29, "exploit": [29, 30, 31], "reach": [29, 30, 39, 55], "equilibrium": [29, 66], "fleet": [29, 51], "rapid": [29, 31], "trader": [29, 31], "creation": [29, 69], "manipul": [29, 69], "dynam": [29, 41, 69], "deafult": 29, "connect": [29, 33, 53], "nx": [29, 30, 31, 33, 35, 53, 65, 66], "glob": 29, "3d": [29, 45], "ljust": 29, "ac": [29, 45], "alpaca": 29, "ascendex": 29, "bequant": 29, "bigon": 29, "binanc": 29, "binancecoinm": 29, "binanceu": 29, "binanceusdm": 29, "bit2c": 29, "bitbank": 29, "bitbai": 29, "bitbn": 29, "bitcoincom": 29, "bitfinex": 29, "bitfinex2": 29, "bitflyer": 29, "bitforex": 29, "bitget": 29, "bithumb": 29, "bitmart": 29, "bitmex": 29, "bitopro": 29, "bitpanda": 29, "bitru": 29, "bitso": 29, "bitstamp": 29, "bitstamp1": 29, "bittrex": 29, "bitvavo": 29, "bkex": 29, "bl3p": 29, "blockchaincom": 29, "btcalpha": 29, "btcbox": 29, "btcmarket": 29, "btctradeua": 29, "btcturk": 29, "bybit": 29, "cex": 29, "coinbas": 29, "coinbaseprim": 29, "43": [29, 37, 45, 52], "coinbasepro": 29, "coincheck": 29, "coinex": 29, "46": 29, "coinfalcon": 29, "coinmat": 29, "coinon": 29, "49": [29, 37, 49], "coinsph": 29, "coinspot": 29, "cryptocom": 29, "currencycom": 29, "53": [29, 35, 37, 40, 65, 66], "deribit": 29, "55": [29, 32, 49, 60], "digifinex": 29, "exmo": 29, "fmfwio": 29, "gate": 29, "gateio": 29, "gemini": 29, "61": [29, 45, 63], "hitbtc": 29, "hitbtc3": 29, "hollaex": 29, "huobi": 29, "huobijp": 29, "huobipro": 29, "idex": 29, "independentreserv": 29, "69": [29, 65], "indodax": 29, "70": [29, 37, 62], "kraken": 29, "krakenfutur": 29, "kucoin": 29, "73": [29, 32, 33, 37, 60, 65], "kucoinfutur": 29, "74": 29, "kuna": 29, "latoken": 29, "lbank": 29, "77": [29, 52, 66], "lbank2": 29, "luno": 29, "lykk": 29, "mercado": 29, "mexc": 29, "mexc3": 29, "ndax": 29, "novadax": 29, "oceanex": 29, "okcoin": 29, "okex": 29, "okex5": 29, "okx": 29, "paymium": 29, "phemex": 29, "92": [29, 37, 42, 50], "poloniex": 29, "93": [29, 31, 34, 42, 45, 50, 63], "poloniexfutur": 29, "94": [29, 42, 50], "probit": 29, "tidex": 29, "96": [29, 35, 37], "timex": 29, "tokocrypto": 29, "upbit": 29, "wavesexchang": 29, "wazirx": 29, "whitebit": 29, "102": [29, 32, 35, 50, 66], "woo": 29, "103": [29, 44, 60], "yobit": 29, "zaif": 29, "105": [29, 37, 60], "zonda": 29, "terminolog": [29, 33], "host": 29, "slash": 29, "quot": 29, "denomin": [29, 44], "eth": 29, "btc": 29, "ethereum": 29, "bitcoin": 29, "bid": [29, 31], "node": [29, 30, 31, 32, 33, 34, 35, 53, 57, 65, 66], "destin": [29, 32, 69], "sampl": [29, 42, 50, 55, 57, 62, 65, 66], "get_exchange_dg": 29, "minimum_in_degre": 29, "load_market": 29, "dg": [29, 53], "digraph": [29, 30, 31, 32, 34, 35, 53], "add_edg": [29, 31, 53], "in_degre": 29, "remove_nod": 29, "out_degre": 29, "topological_sort": 29, "gold": [29, 32], "lightblu": [29, 31, 32, 34], "draw_dg": 29, "rad": 29, "draw": [29, 33, 34, 45, 47, 53], "n_node": 29, "po": [29, 31, 33, 34, 35, 41, 53], "circular_layout": [29, 53], "draw_networkx": [29, 31], "with_label": [29, 31, 33, 34], "node_color": [29, 31, 33, 35], "edge_color": [29, 34, 35, 53], "node_s": [29, 31, 33, 35, 53], "font_siz": [29, 34], "arrows": [29, 31], "connectionstyl": 29, "arc3": 29, "draw_networkx_edge_label": [29, 31, 34], "edge_label": [29, 31, 34], "src": [29, 32, 69], "dst": [29, 32, 69], "exchange_dg": 29, "indegre": 29, "155": [29, 31, 50, 62], "449": 29, "match": [29, 30, 35, 57, 66], "buyer": 29, "incom": [29, 30, 31, 39, 53, 65], "highest": [29, 47], "filenam": 29, "binance_us_orderbook_sav": 29, "order_book": 29, "githubusercont": [29, 35, 42, 50, 57, 65, 66], "com": [29, 31, 35, 37, 39, 42, 44, 45, 46, 47, 48, 49, 50, 57, 65, 66, 68], "main": [29, 35, 42, 50, 57, 65, 66], "timestamp": 29, "bid_pric": 29, "bid_volum": 29, "ask_pric": 29, "ask_volum": 29, "06": [29, 39, 48, 60, 65], "529": 29, "069735": 29, "012000": 29, "069759": 29, "050000": 29, "bnb": 29, "012743": 29, "012755": 29, "ada": 29, "637": [29, 45, 63], "2168": 29, "sol": [29, 57], "000935": 29, "420000": 29, "000936": 29, "120000": [29, 39], "matic": 29, "000052": 29, "200000": [29, 35, 39], "mana": 29, "848": 29, "000027": 29, "831": 29, "1409": 29, "trx": 29, "905": 29, "000003": 29, "25352": 29, "960": 29, "000214": 29, "994": 29, "900000": 29, "891": 29, "600000": [29, 35], "usdt": 29, "07": [29, 48], "23373": 29, "920000": 29, "118619": 29, "23376": 29, "045275": 29, "065": 29, "1630": 29, "950000": 29, "770000": 29, "500000": [29, 32], "297": 29, "857700": 29, "800000": [29, 35], "891900": 29, "172": [29, 62], "348630": 29, "348750": 29, "511": 29, "busd": 29, "226": 29, "999500": 29, "293433": 29, "930000": 29, "999600": 29, "317175": 29, "730000": 29, "288": [29, 64], "857000": 29, "870000": 29, "863500": 29, "usdc": 29, "342": [29, 49], "000100": 29, "307657": 29, "000200": 29, "299181": 29, "394": 29, "203000": 29, "1664": 29, "205000": 29, "5405": 29, "447": 29, "631000": 29, "157": [29, 46, 49, 50], "632200": 29, "571": 29, "501": 29, "069280": 29, "10824": 29, "069330": 29, "10818": 29, "612": [29, 35, 55], "23371": 29, "440000": 29, "021500": 29, "830000": 29, "665": 29, "763000": 29, "670000": 29, "952500": 29, "340000": 29, "719": 29, "210000": 29, "510000": 29, "760000": 29, "255000": 29, "772": 29, "203410": 29, "623": 29, "100000": [29, 32, 45], "204540": 29, "415": [29, 44, 45, 66], "893": 29, "999900": 29, "329027": 29, "279879": 29, "620000": 29, "950": 29, "630700": 29, "632100": 29, "3054": 29, "003": [29, 45], "348000": 29, "6582": 29, "349000": 29, "997": 29, "056": [29, 62], "390000": 29, "181": [29, 49], "090000": 29, "114": [29, 35, 42, 66], "069290": 29, "10823": 29, "069390": 29, "25220": 29, "400000": [29, 35], "170": [29, 37, 49, 64], "660000": 29, "020000": 29, "990000": 29, "051000": 29, "160000": 29, "810000": 29, "215000": 29, "298": [29, 65, 66], "520000": 29, "880000": 29, "201": [29, 44, 45], "080000": 29, "368": [29, 52], "348200": 29, "8615": 29, "349400": 29, "2433": 29, "433": [29, 45], "23366": 29, "049540": 29, "23394": 29, "360000": 29, "049500": 29, "485": 29, "1629": 29, "890000": 29, "497400": 29, "1631": 29, "490000": 29, "usd": [29, 31], "010000": 29, "007463": 29, "048805": 29, "675": 29, "564550": 29, "740000": 29, "580700": 29, "730": 29, "10407": 29, "954839": 29, "680000": 29, "782": 29, "900200": 29, "342000": 29, "835": 29, "348800": 29, "348900": 29, "3000": [29, 45, 64], "942": 29, "79157": 29, "795593": 29, "204000": 29, "937": 29, "204500": 29, "09": [29, 32, 48, 57], "5050": 29, "300000": 29, "517682": 29, "170000": 29, "631600": 29, "572": 29, "999100": 29, "4534": 29, "7591": 29, "820000": 29, "858100": 29, "865900": 29, "290000": 29, "069200": 29, "225602": 29, "069400": 29, "224245": 29, "prospect": 29, "counter": 29, "rightarrow": [29, 31, 40, 42, 46, 50, 68], "v_b": 29, "v_q": 29, "held": [29, 59], "convers": [29, 31, 41, 44], "arc": [29, 30, 31, 34, 53], "highlight": [29, 35, 44, 53], "order_book_to_dg": 29, "dg_order_book": 29, "isnan": 29, "order_book_dg": 29, "5s": 29, "16f": 29, "4668": 29, "534080": 29, "190981": 29, "335068": 29, "003488": 29, "403701": 29, "038263": 29, "66844": 29, "919786": 29, "032433": 29, "1068": 29, "261938": 29, "014154": 29, "19391": 29, "118868": 29, "007746": 29, "36968": 29, "576710": 29, "038113": 29, "335570": 29, "469799": 29, "075549": 29, "000043": 29, "1058": 29, "348400": 29, "000613": 29, "815": 29, "385000": 29, "003357": 29, "313520": 29, "867384": 29, "178": [29, 35, 49, 66], "281000": 29, "000400": 29, "317048": 29, "859708": 29, "045738": 29, "502": 29, "860500": 29, "999800": 29, "299240": 29, "836200": 29, "829876": 29, "6513": 29, "748000": 29, "581778": 29, "360": [29, 35, 45, 64, 66], "986200": 29, "423770": 29, "053538": 29, "601845": 29, "003356": 29, "399": [29, 45, 59], "256350": 29, "843800": 29, "830192": 29, "499": 29, "884100": 29, "582028": 29, "1930": [29, 37], "433400": 29, "865330": 29, "953000": 29, "045662": 29, "3965": 29, "871000": 29, "411298": 29, "043556": 29, "1192": [29, 52], "226490": 29, "350": [29, 55], "624150": 29, "045704": 29, "4399": 29, "630400": 29, "862049": 29, "850": 29, "125140": 29, "1158": 29, "020820": 29, "2431": 29, "396900": 29, "1140": 29, "900820": 29, "970718": 29, "954935": 29, "163968": 29, "852255": 29, "866151": 29, "1046": 29, "700000": 29, "795513": 29, "920652": 29, "830220": 29, "1129": 29, "218750": 29, "583281": 29, "361": 29, "489944": 29, "7592": 29, "579182": 29, "045733": 29, "927311": 29, "409222": 29, "15562": 29, "637700": 29, "itself": [29, 63], "unifi": 29, "treatment": [29, 31, 39, 62, 64], "i_0": 29, "i_1": [29, 63], "i_2": [29, 63], "i_": 29, "i_n": 29, "prod_": [29, 47], "i_k": 29, "limits_": [29, 30, 53, 63, 65], "cyclic": 29, "permut": 29, "daunt": 29, "bellman": [29, 30], "ford": [29, 30, 45], "negative_edge_cycl": 29, "luckili": [29, 36], "find_negative_cycl": 29, "thicker": 29, "sum_weight": 29, "arb": [29, 31], "bp": [29, 37], "exp": [29, 46, 47, 49, 50], "nreturn": 29, "dollar": 29, "smallest": [29, 33, 39], "crude": [29, 39], "pick": [29, 39, 47, 65], "accord": [29, 31, 55], "whatev": 29, "prohibit": [29, 31, 42, 50], "nevertheless": [29, 59], "understand": [29, 63, 65, 69], "simple_cycl": 29, "overlaid": 29, "dens": [29, 42, 50], "203147": 29, "974": 29, "n_cycles_to_list": 29, "774": 29, "699": 29, "673": 29, "n_cycles_to_show": 29, "fresh": 29, "reli": [29, 45, 66, 68], "secondli": 29, "adjac": [29, 33], "o_j": 29, "outgo": [29, 30, 31, 53, 65], "i_j": 29, "v_j": 29, "v_": [29, 37, 66], "v_0": 29, "crypto_model": 29, "v0": 29, "chain": [29, 31, 68], "t0": [29, 30, 31], "t1": [29, 30, 31, 47], "total_trad": 29, "edge_capac": 29, "out_nod": [29, 53], "in_nod": [29, 53], "vt": 29, "weath": 29, "2d": [29, 42, 45, 50], "10009": 29, "006": [29, 45], "evolut": [29, 52], "visibl": 29, "scheme": 29, "alon": [29, 42, 50], "00000": [29, 31, 44, 49], "00004": 29, "4953": 29, "27900": 29, "5046": 29, "73030": 29, "4955": 29, "75660": 29, "5049": 29, "25470": 29, "4958": 29, "23550": 29, "26110": 29, "5048": 29, "74980": 29, "4957": 29, "73970": 29, "30000": [29, 32, 41], "22570": 29, "00600": 29, "transcat": 29, "ntransact": 29, "1e": [29, 31, 42, 50], "6f": [29, 49], "774300": 29, "278972": 29, "225700": 29, "279000": 29, "261104": 29, "730323": 29, "730300": 29, "749800": 29, "261100": 29, "756626": 29, "756600": 29, "739696": 29, "254675": 29, "697500": 29, "279900": 29, "300020": 29, "277320": 29, "739700": 29, "000030": 29, "000012": 29, "235474": 29, "000042": 29, "976057": 29, "235500": 29, "794970": 29, "0000002": 29, "precis": [29, 33, 42, 45, 50, 60], "printout": 29, "00746": 29, "28100": 29, "69750": 29, "85971": 29, "20004": 29, "04600": 29, "20012": 29, "050820": 29, "05354": 29, "27732": 29, "87000": [29, 39], "62000": 29, "05100": 29, "20007": 29, "97600": 29, "976000": 29, "16397": 29, "77430": 29, "17000": [29, 64], "xlabel": [29, 30, 35, 38, 40, 46, 48, 53, 55, 57, 64, 66, 68], "ylabel": [29, 30, 35, 38, 40, 46, 48, 55, 57, 64, 66, 68], "gcf": 29, "realiti": [29, 43], "presenc": [29, 39, 47, 50], "affect": [29, 51, 53, 55, 60, 61, 63], "streamlit": 29, "detect": [29, 30, 31, 42, 50], "fetch_order_book": 29, "criteria": [29, 44], "get_order_book": 29, "get_ord": 29, "millisecond": 29, "fetch": 29, "to_datetim": 29, "mininum_in_degre": 29, "688": 29, "0534": 29, "0535": 29, "01680": 29, "34422": 29, "5300": 29, "04934": 29, "34450": 29, "7000": [29, 32], "00128": 29, "017": [29, 45, 62], "1840": 29, "2700": 29, "07030": 29, "1841": 29, "6900": 29, "09630": 29, "bat": 29, "2032": 29, "659": 29, "2044": 29, "213": [29, 45, 65], "5500": 29, "27000": 29, "8500": [29, 64], "143": [29, 42, 49], "614": 29, "34358": 29, "6800": 29, "00504": 29, "34467": 29, "3700": 29, "00290": 29, "144": [29, 37, 42], "712": 29, "1834": 29, "3500": [29, 32, 39], "11010": 29, "1862": 29, "0600": 29, "21520": 29, "145": 29, "828": 29, "33763": 29, "7400": 29, "00030": 29, "35062": 29, "9500": 29, "146": [29, 45], "036": [29, 39], "1635": 29, "0100": [29, 31, 35, 66], "02700": 29, "1872": 29, "4900": 29, "00120": 29, "147": [29, 62], "430": [29, 69], "0000": [29, 31, 32, 39], "4030": 29, "0006": [29, 45], "620": 29, "148": [29, 62], "search_tim": 29, "timeout": 29, "arb_threshold": 29, "fname": 29, "orderbook": 29, "utcnow": 29, "strftime": 29, "to_csv": 29, "crytocurr": 29, "academ": [29, 39, 45, 49], "earli": [29, 47, 69], "recurr": 29, "persist": 29, "makarov": 29, "schoar": 29, "2020": [29, 44, 46, 47, 49], "319": 29, "cr\u00e9pelli\u00e8r": 29, "zeisberg": 29, "ssrn": [29, 46, 49], "3606053": 29, "sol3": [29, 35, 46, 49], "cfm": [29, 46, 49], "abstract_id": [29, 46, 49], "literatur": [29, 39, 44], "site": 29, "peduzzi": 29, "jame": 29, "xu": [29, 44, 60], "septemb": 29, "jack": 29, "THE": 29, "rippler": 29, "decentr": 29, "xrp": 29, "ledger": 29, "3rd": 29, "confer": 29, "blockchain": 29, "innov": [29, 69], "brain": 29, "pp": [29, 45, 46, 47, 49], "ieee": [29, 35], "arxiv": [29, 39, 46, 47, 49], "org": [29, 37, 39, 45, 46, 47, 49], "2106": 29, "16158": 29, "bruzg\u0117": 29, "\u0161apkauskien\u0117": 29, "2022": [29, 31, 39, 40, 46, 49], "north": [29, 46, 47, 49], "american": [29, 49], "101562": 29, "1016": 29, "najef": 29, "brief": [29, 68], "107731": 29, "anilpai": 29, "medium": [29, 69], "8938dcea56ea": 29, "crypto": [29, 31], "byrn": 29, "novel": 29, "decentralis": 29, "www": [29, 31, 37, 39, 44, 45, 46, 47, 49, 64, 68], "scss": 29, "tcd": 29, "ie": 29, "donal": 29, "omahoni": 29, "bfg": 29, "202021": 29, "stephenbyrnedissert": 29, "levu": 29, "berko": 29, "chyrun": 29, "panasyuk": 29, "hrubel": 29, "ceur": 29, "workshop": 29, "proceed": 29, "407": 29, "440": [29, 66], "ws": 29, "vol": [29, 46, 49], "2917": 29, "paper32": 29, "crypocurr": 29, "angeri": 29, "agraw": 29, "evan": 29, "chitra": 29, "boyd": [29, 45, 46, 47, 49], "maker": [29, 57], "asset": [29, 38, 41, 46, 47, 48, 49, 58], "preprint": [29, 46, 47, 49], "2107": 29, "12484": 29, "baincapitalcrypto": 29, "organ": [30, 69], "guest": 30, "mingl": 30, "k_": [30, 46, 49], "sit": 30, "m_f": 30, "far": [30, 36, 63], "ft": 30, "fail": [30, 32, 35, 37], "networkx": [30, 31, 33, 34, 35, 53, 65, 66], "seat_alloc": 30, "kmax": 30, "get_solut": 30, "verbos": [30, 42, 50, 69], "termination_condit": [30, 33, 48, 55, 57, 58, 59, 60, 66], "six": [30, 41, 45], "five": 30, "seatplan": 30, "peculiar": 30, "divers": 30, "bring": [30, 42], "seat_allocation_minimize_group_s": 30, "unfortun": 30, "seat_allocation_minimize_t": 30, "necessarili": 30, "team": [30, 53, 69], "realli": [30, 63], "stand": 30, "arrow": [30, 39], "think": [30, 51, 62, 65], "rephras": 30, "everyon": [30, 32], "seating_allocation_maximize_flow_to_t": 30, "slightli": [30, 35, 40, 45, 48, 51, 53, 55, 65], "door": 30, "target": [30, 42, 50, 62], "nor": [30, 62], "unimpress": 30, "sound": 30, "implicitli": 30, "invok": 30, "model_as_network": 30, "digraphi": 30, "add_edges_from": 30, "flow_valu": 30, "flow_dict": 30, "maximum_flow": 30, "f0": 30, "f1": 30, "f2": 30, "f3": 30, "f4": 30, "f5": 30, "t2": [30, 47], "t3": 30, "t4": 30, "tailor": 30, "magnitud": [30, 42, 55, 63], "405": [30, 62], "\u00b5s": 30, "413": 30, "wall": [30, 44, 46, 47, 49], "414": 30, "max_flow": 30, "reset": 30, "component_data_object": 30, "ctype": 30, "descend_into": 30, "set_valu": 30, "nmax": 30, "mmax": 30, "runtim": 30, "fastest": 30, "transpos": [30, 52], "rotat": [30, 37, 44, 45, 50, 53], "rotation_mod": 30, "anchor": 30, "exchang": 31, "framework": [31, 32, 46, 49], "bank": [31, 49], "japanes": 31, "yen": 31, "jpy": 31, "00761": 31, "eur": 31, "140": [31, 63, 64], "131": [31, 42], "585": 31, "longrightarrow": [31, 68], "9954": 31, "fee": [31, 32], "broker": 31, "needless": 31, "reliabl": [31, 42, 48, 50], "eager": [31, 32], "foreign": 31, "globe": 31, "almost": [31, 42, 46, 47, 57, 63], "autom": 31, "0075": [31, 32], "133": 31, "leftarrow": 31, "remind": 31, "exchangen": 31, "333333": 31, "tell": 31, "ourselv": 31, "phase": [31, 35, 37], "unencumb": 31, "ne": 31, "credit": 31, "spread": 31, "initial_condit": 31, "max_trad": 31, "nt": 31, "niniti": 31, "gbp": 31, "chf": 31, "cad": 31, "aud": 31, "hkd": 31, "13160": 31, "97000": 31, "82238": 31, "44860": 31, "display_graph": 31, "add_nod": [31, 53], "nodelist": 31, "spring_layout": 31, "node_shap": 31, "11861": 31, "91270": 31, "45140": 31, "bloomberg": 31, "tradingview": 31, "extract": [31, 32, 42, 63, 66, 68], "1096": 31, "0084": 31, "3148": 31, "0677": 31, "7915": 31, "7376": 31, "1279": 31, "9012": 31, "0076": 31, "1849": 31, "9622": 31, "7133": 31, "6647": 31, "1153": 31, "6100": 31, "6097": 31, "9484": 31, "6389": 31, "8816": 31, "4867": 31, "1724": 31, "7606": 31, "8439": 31, "0064": 31, "8121": 31, "6020": 31, "5610": 31, "0973": 31, "9366": 31, "0393": 31, "0079": 31, "2314": 31, "7413": 31, "6908": 31, "1198": 31, "2634": 31, "4019": [31, 52], "0107": 31, "6611": 31, "3489": 31, "9319": 31, "1616": 31, "3557": 31, "5043": 31, "0114": 31, "7825": 31, "4475": 31, "0731": 31, "1734": 31, "8175": 31, "6743": 31, "0659": 31, "2784": 31, "3467": 31, "1877": 31, "7662": 31, "commod": [32, 41, 64], "invit": [32, 45], "pitfal": 32, "uneven": 32, "refin": [32, 37, 39], "didact": [32, 45], "shadow": 32, "yaya": 32, "ga": [32, 35, 39, 65, 66], "grub": 32, "franchisor": 32, "own": [32, 41], "franchise": 32, "truck": [32, 45], "gallon": 32, "charg": [32, 45], "0875": 32, "boost": [32, 50], "alic": 32, "badri": 32, "cara": 32, "dan": 32, "emma": 32, "fujita": 32, "grace": 32, "helen": 32, "313": 32, "subscript": 32, "ship": [32, 69], "d_d": 32, "shipment": [32, 39], "html": [32, 34, 45, 48, 58, 65], "40000": 32, "50000": 32, "45000": 32, "80000": 32, "br": 32, "to_fram": 32, "cost_to_destin": 32, "shipped_to_destin": 32, "shipped_from_sourc": 32, "supply_constraint": 32, "demand_constraint": [32, 69], "8000": [32, 45], "model1_result": 32, "27387": 32, "26113": 32, "2625": 32, "2490": 32, "3240": 32, "12000": 32, "38000": 32, "4375": 32, "4321": 32, "1600": 32, "3937": 32, "60000": 32, "6550": 32, "450": [32, 55, 66], "1575": 32, "1350": 32, "225": [32, 52, 55, 64, 69], "goe": [32, 50], "enthusiasm": 32, "rho": [32, 52, 62], "transport_v2": 32, "delivery_r": 32, "rate_to_destin": 32, "49754": 32, "245": [32, 55], "difficulti": 32, "remedi": 32, "paid": 32, "distributor": [32, 39], "surprisingli": 32, "inspect": [32, 42, 51, 57, 63], "payment": [32, 63], "imposs": [32, 57], "incent": 32, "transport_v3": 32, "allocate_cost": 32, "model3_result": 32, "2502": 32, "122": [32, 39], "3337": 32, "162": 32, "4171": 32, "203": [32, 62], "1668": 32, "3754": 32, "183": [32, 49], "6674": 32, "325": [32, 55], "1501": 32, "inadequ": 32, "marker": [32, 46, 57], "470": 32, "negoti": 32, "rates_index": 32, "083": 32, "081": 32, "09300000000000001": 32, "10099999999999999": 32, "133000": 32, "x_index": 32, "nobject": 32, "nconstraint": 32, "ndecis": 32, "sensit": [32, 42, 50, 51, 69], "0045": 32, "0855": 32, "0795": 32, "node_attr": 32, "edge_attr": 32, "nsuppli": 32, "nship": 32, "nsen": 32, "fillcolor": 32, "ndemand": 32, "lectur": [33, 45], "hall": 33, "indirect": 33, "hire": 33, "temporari": 33, "staff": 33, "invigil": 33, "obei": 33, "undirect": 33, "th": [33, 38, 44, 57, 58, 65], "ik": [33, 63], "w_k": 33, "jk": [33, 63], "tri": [33, 40], "chromat": 33, "graph_color": 33, "besid": [33, 65, 66], "too": [33, 37, 58, 63, 66], "catch_infeas": 33, "diagnos": 33, "rais": [33, 45, 64], "edge_constraint": 33, "node_constraint": 33, "used_color_constraint": 33, "number_used_color": 33, "catch": [33, 66], "load_solut": 33, "get_color": [33, 41, 46, 60], "unique_label": 33, "color_palett": 33, "label_to_color": 33, "erdo": 33, "renyi": 33, "gnp_random_graph": 33, "is_connect": 33, "kamada_kawai_layout": [33, 34, 35], "start_tim": 33, "terminationcondit": 33, "greedi": 33, "nxcolor": 33, "greedy_color": 33, "logist": [34, 39], "retail": [34, 60], "contin": 34, "outlet": 34, "correspondingli": 34, "character": [34, 37], "b_j": 34, "transship": 34, "rail": 34, "airwai": 34, "sent": [34, 51], "cheapest": 34, "mcf": 34, "draw_networkx_label": [34, 53], "draw_label": 34, "draw_edge_label": 34, "draw_networkx_edg": [34, 35, 53], "draw_edg": 34, "markdown": [34, 48, 58, 65], "draw_network": 34, "edge_flow": [34, 35], "font_color": [34, 53], "edgelist": 34, "arrowstyl": 34, "shifted_po": 34, "font_weight": 34, "mincostflow": 34, "incoming_flow": [34, 35, 65, 66], "outgoing_flow": [34, 35, 65, 66], "flow_conserv": [34, 35, 65, 66], "flow_upper_bound": 34, "noptim": 34, "countri": 35, "renew": [35, 44, 65, 66], "nation": [35, 65], "transmiss": [35, 47], "citi": [35, 44, 57], "district": [35, 57], "inject": 35, "p_i": [35, 47, 57, 65, 66], "f_": [35, 59, 65, 66], "easier": [35, 57, 63], "ji": [35, 65, 66], "control": [35, 41, 57, 66], "school": [35, 39, 69], "law": 35, "theta_": 35, "angl": [35, 66], "mathbf": [35, 47], "theta": [35, 40, 63, 65, 66], "theta_i": [35, 65, 66], "theta_j": [35, 65, 66], "constrat": 35, "dc": 35, "admit": 35, "cheaper": [35, 65], "moreov": [35, 42, 48, 50], "179": [35, 45, 49, 62, 66], "ast": [35, 65, 66], "literal_ev": [35, 65, 66], "make_tupl": [35, 65, 66], "base_url": [35, 57, 65, 66], "nodes_df": [35, 57, 65, 66], "edges_df": [35, 65, 66], "node_id": [35, 57, 65, 66], "to_dict": [35, 42, 50, 57, 65, 66], "edge_id": [35, 65, 66], "example_nod": 35, "example_edg": 35, "visualize_network": 35, "buse": 35, "solar": [35, 65, 66], "ffcb36": 35, "wind": [35, 51, 57, 61, 65], "hydro": [35, 65, 66], "a5efff": 35, "coal": [35, 65, 66], "686868": 35, "00ab4": 35, "b6b6b6": 35, "vertex2color": 35, "energy_typ": [35, 65, 66], "v2c_list": 35, "draw_networkx_nod": [35, 53], "595959": 35, "set_edgecolor": 35, "set_axis_off": 35, "cyan": 35, "dark": 35, "solarfarm": 35, "windmil": 35, "p_min": [35, 57, 65, 66], "p_max": [35, 57, 65, 66], "c_var": [35, 57, 65, 66], "is_gener": [35, 65, 66], "boolean": [35, 63], "397": 35, "948321": 35, "873": 35, "220980": 35, "993982": 35, "720": 35, "202306": 35, "484861": 35, "180": [35, 44, 45, 62, 64, 69], "602933": 35, "916": 35, "330000": 35, "1146": 35, "1175": 35, "194": [35, 45], "110": [35, 42, 44, 49, 66], "142": [35, 38], "186145": 35, "921628": 35, "884795": 35, "961682": 35, "113": [35, 49, 60, 62, 66], "396000": 35, "864042": 35, "108": [35, 41, 64], "311328": 35, "116": [35, 45, 66], "703998": 35, "242759": 35, "f_max": [35, 65, 66], "271": 35, "5849": [35, 66], "3133": [35, 66], "316": [35, 45], "2593": [35, 66], "315": 35, "5185": [35, 66], "174": [35, 49, 62, 66], "9059": [35, 66], "177": [35, 49, 62, 66], "8216": [35, 66], "246": [35, 45, 66], "9136": [35, 66], "12992": 35, "easiest": [35, 38, 48, 58], "lab": 35, "attr1": 35, "attr2": 35, "bit": 35, "confus": [35, 42, 50], "921627803299574": 35, "realist": [35, 66], "pattern": [35, 63], "96th": 35, "averag": [35, 39, 45, 52, 64, 65, 66], "opf1": 35, "power_gener": 35, "power_flow": 35, "q1": [35, 47], "fab": 35, "fm": 35, "abs_flow": 35, "flows_upper_bound": [35, 65], "generation_upper_bound": [35, 65, 66], "generation_lower_bound": [35, 65, 66], "sol1": 35, "102898": 35, "emit": 35, "co2": 35, "carbon": 35, "neutral": 35, "dutch": 35, "govern": 35, "inact": 35, "opf2": 35, "q2": [35, 47], "generation_upperound": 35, "max_gas_pl": 35, "max_coal_pl": 35, "sol2": 35, "53120": 35, "pose": 35, "threat": 35, "lift": [35, 68], "m_0": 35, "ym_2": 35, "opf3": 35, "q3": 35, "max_total_renewable_product": 35, "renewable_energy_product": 35, "41623": 35, "view": [35, 58, 62, 65], "wherea": [35, 57, 63, 66], "f_1": [35, 53], "f_2": [35, 53], "f_3": 35, "expens": [35, 39, 42, 44, 50, 63, 64, 65, 66], "mitig": [35, 63], "solvabl": [36, 68], "milk": 36, "pool": 36, "ordinari": 36, "ol": 36, "classif": [36, 50], "refineri": [36, 39], "conic": [36, 44, 46, 48, 49, 55, 58], "anyon": 37, "broadli": 37, "minlo": [37, 55], "couenn": 37, "ida": [37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 68], "compil": [37, 55], "pse": [37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 68], "os": [37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 66], "milo_solv": 37, "minlo_solv": [37, 55], "d_f": 37, "f_f": 37, "gilmor": 37, "gamori": 37, "1961": 37, "rapidli": 37, "s_p": 37, "pf": 37, "make_pattern": 37, "partial": [37, 42], "num_cut": 37, "cuts_dict": 37, "plot_pattern": 37, "cmap": 37, "tab10": 37, "background": 37, "y_lo": 37, "y_hi": 37, "overlai": 37, "xa": 37, "xb": 37, "clean": [37, 69], "bottom": 37, "cut_pattern": 37, "plot_nonzero_pattern": 37, "wrapper": 37, "unus": [37, 41, 63], "_2": [37, 40, 42, 44, 45, 48, 50, 55, 58, 63], "n_p": 37, "x_p": 37, "symmetri": 37, "substitut": [37, 45, 63, 69], "cone": [37, 46, 47, 48, 49, 50], "bilinear_cut_stock": 37, "f_total_demand": 37, "a_bound": 37, "assign_each_stock_to_pattern": 37, "feasible_pattern": 37, "max_pattern": 37, "shouldn": 37, "_f": [37, 53], "generate_pattern_bilinear": 37, "xp": [37, 60], "ap": 37, "sum_to_on": 37, "add_pattern": 37, "new_pattern": 37, "pi_f": 37, "sf": [37, 69], "generate_pattern_du": 37, "subprob": 37, "marginal_valu": 37, "stock_length": 37, "reduced_valu": 37, "somewhat": [37, 68], "generate_patterns_bilinear": 37, "timeit": 37, "generate_patterns_du": 37, "std": [37, 42, 62], "137": [37, 42, 49, 62], "exhaust": [37, 39], "empir": [37, 55, 62, 65], "cut_stock": 37, "non_zero_indic": 37, "jl": 37, "stabl": [37, 45, 50], "cutting_stock_column_gener": 37, "en": [37, 46, 47], "wiki": [37, 46, 47], "cutting_stock_problem": 37, "roll": 37, "5600": [37, 59], "1520": 37, "1560": 37, "1710": 37, "1820": 37, "1880": 37, "2050": 37, "2100": 37, "2140": [37, 63], "2150": 37, "2200": 37, "2x4": 37, "lumber": 37, "arm": 37, "outdoor": 37, "sofa": 37, "ana": 37, "imag": [37, 42, 50], "spreadsheet": 37, "1zx7kj2kwtggyqev_a3log0nqsxsc38ykk53a7vgwafu": 37, "gid": 37, "1104632299": 37, "read_google_sheet": 37, "sheet_id": 37, "sheet_nam": 37, "lowercas": [37, 69], "str": [37, 42, 50, 52, 55], "gviz": 37, "tq": 37, "tqx": 37, "settings_df": 37, "nset": 37, "finish_df": 37, "nfinish": 37, "stocks_df": 37, "nstock": 37, "kerf": 37, "120": [37, 44, 46, 63, 64], "168": 37, "192": [37, 64], "216": 37, "240": [37, 45, 64], "2x6": 37, "pivot_t": [37, 39], "aggfunc": 37, "sort_index": 37, "gomori": 37, "trim": [37, 68], "849": 37, "859": 37, "jstor": [37, 45], "1963": 37, "863": [37, 62], "888": 37, "haessler": 37, "sweenei": 37, "european": [37, 64, 66], "delorm": 37, "iori": 37, "martello": 37, "2016": [37, 41, 44, 46, 47, 49], "exact": [37, 45, 51, 66], "255": [37, 45, 58], "sciencedirect": [37, 44, 45], "implemen": 37, "mathwork": 37, "matlab": 37, "aimm": 37, "scip": 37, "pulp": 37, "harjunkoski": 37, "westerlund": 37, "p\u00f6rn": 37, "skrifvar": 37, "minlp": [37, 39], "594": 37, "603": 37, "abo": 37, "fi": 37, "engin": [37, 39, 44, 64], "s471": 37, "s474": 37, "ipopt": [38, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 68], "mosek_direct": [38, 40, 44, 45, 46, 47, 48, 49, 50, 57, 58], "stochast": [38, 51, 52, 54, 57, 60, 63, 66], "she": 38, "riski": [38, 49, 58], "tild": [38, 40, 48, 58], "mu": [38, 48, 58, 62], "sigma": [38, 48, 58, 62], "mathrm": [38, 47], "compromis": [38, 46], "willing": [38, 57], "exclud": [38, 69], "semi": [38, 40, 42, 48, 50, 58], "xtild": [38, 48, 58], "bounded_vari": [38, 48], "total_asset": [38, 48, 58], "predefin": 38, "linalg": [38, 42, 48, 50], "eigval": [38, 42, 48, 50], "rand": [38, 48, 53, 58], "x_3": [38, 48, 58], "158": 38, "561": 38, "gamma_valu": 38, "stream": 39, "mixtur": 39, "petroleum": 39, "sector": [39, 46], "tankag": 39, "train": [39, 43, 49], "pipelin": 39, "agricultur": 39, "mine": 39, "wastewat": 39, "composit": [39, 44], "solver_lo": [39, 40, 42], "solver_nlo": [39, 42, 55], "bulk": 39, "fat": 39, "farm": [39, 51, 64], "afford": 39, "grade": 39, "tank": 39, "station": 39, "diagram": [39, 45], "noth": [39, 47], "min_fat": 39, "045": 39, "6000": [39, 41, 45, 64], "030": [39, 44], "2500": [39, 41, 52, 60], "040": 39, "033": 39, "050": [39, 55], "local_suppli": 39, "remote_suppli": 39, "ncustom": 39, "nsupplier": 39, "_c": 39, "_l": 39, "v1": 39, "flowrat": 39, "fat_cont": 39, "81000": 39, "2666": 39, "1333": 39, "justifi": [39, 47], "v2": 39, "122441": 39, "1764": 39, "4235": 39, "2352": 39, "1647": 39, "extent": [39, 65], "giveawai": 39, "surpass": 39, "parameter": 39, "y_c": 39, "_r": [39, 50], "enter": 39, "implic": 39, "profound": 39, "repeatedli": [39, 57], "milk_pooling_bilinear": 39, "v3": 39, "customer_demand": 39, "pool_bal": 39, "pool_qual": 39, "customer_qu": 39, "p_plot": 39, "025": [39, 45, 55], "f_plot": 39, "contrast": [39, 41], "minima": 39, "thee": 39, "w_c": [39, 46], "incomplet": 39, "isn": 39, "concentr": [39, 51, 68], "conc": 39, "underlin": 39, "mccormick": 39, "envelop": 39, "milk_pooling_convex": 39, "hh": 39, "lh": 39, "hl": 39, "report_solut": 39, "npool": 39, "4f": [39, 44, 46, 47, 60], "m_convex": 39, "0400": 39, "111411": 39, "112500": 39, "1029": 39, "4118": 39, "43235": 39, "2956": 39, "4852": 39, "9412": 39, "179558": 39, "8244": 39, "4117": [39, 45], "6471": 39, "185294": 39, "1195": 39, "0421": 39, "312000": 39, "1470": 39, "5882": 39, "0359": 39, "111": [39, 49, 53], "412": 39, "search": [39, 55, 63], "xy": [39, 45], "xytext": [39, 45], "106000": 39, "arrowprop": [39, 45], "shrink": [39, 45], "headwidth": [39, 45], "miss": [39, 52], "scan": [39, 53], "m_est": 39, "105000": 39, "100088": 39, "270000": 39, "3823": 39, "5294": 39, "141470": 39, "5878": 39, "2676": 39, "4706": 39, "120441": 39, "1770": 39, "088": 39, "fall": 39, "441": 39, "discrep": 39, "milk_pooling_bilinear_nlo": 39, "localmin": 39, "bound_frac": 39, "m_global": 39, "035": 39, "0330": 39, "102833": 39, "0001": 39, "2333": 39, "8333": 39, "375000": 39, "0037": 39, "4166": 39, "6667": 39, "154166": 39, "6683": 39, "0031": 39, "0012": 39, "1666": 39, "0020": 39, "converg": [39, 63], "pure": 39, "luck": 39, "kkt": 39, "suboptim": 39, "trigger": 39, "m_global2": 39, "bo": 39, "0245": 39, "96000": 39, "0495": 39, "93000": 39, "0450": 39, "101392": 39, "3333": [39, 46], "3833": 39, "161000": 39, "0016": 39, "2549": 39, "0196": 39, "94313": 39, "7265": 39, "6117": 39, "275294": 39, "1203": 39, "augment": [39, 46, 50], "awai": [39, 68], "prototyp": 39, "feed": [39, 64, 68], "un": 39, "haverli": 39, "1978": 39, "fuel": [39, 41], "recurs": [39, 68], "acm": 39, "sigmap": 39, "bulletin": 39, "dl": 39, "1145": 39, "1111237": 39, "1111238": 39, "encyclopedia": 39, "patholog": [39, 47], "visweswaran": 39, "springer": [39, 45, 62, 64], "referenceworkentri": 39, "978": 39, "387": [39, 55], "74759": 39, "0_375": 39, "misen": 39, "flouda": 39, "researchg": 39, "profil": [39, 49], "ruth": 39, "public": 39, "242290955_advances_for_the_pooling_problem_modeling_global_optimization_and_computational_studies_survei": 39, "0046352e7d1dfeb40f000000": 39, "gupt": 39, "ahm": 39, "dei": 39, "cheon": 39, "georgia": 39, "institut": 39, "atlanta": 39, "exxonmobil": [39, 49], "annandal": 39, "nj": 39, "db_file": 39, "2012": [39, 44], "3658": 39, "ceccon": 39, "galini": 39, "107660": 39, "2105": 39, "01687": 39, "probabl": [39, 46, 47, 49, 57, 59, 60, 62, 63], "underappreci": 39, "programm": 39, "wfp": 39, "cccc": 40, "unconstrain": 40, "hessian": 40, "nabla": 40, "resort": [40, 44, 65], "ols_regress": 40, "sum_of_square_error": 40, "498473126416755": 40, "428094680287527": 40, "428576": 40, "4130268": 40, "y_fit2": 40, "explan": [41, 50], "unusu": 41, "seborg": 41, "edgar": 41, "mellichamp": 41, "doyl": 41, "dale": 41, "thoma": 41, "duncan": 41, "franci": 41, "wilei": 41, "son": 41, "24000": 41, "28000": 41, "volumetr": 41, "feed_cost": 41, "process_cost": 41, "860275": 41, "832": 41, "explicit": [41, 53, 66, 69], "implicit": 41, "sharp": 41, "cxvpy": 41, "to_numpi": [41, 42, 50], "8620663473": 41, "results_crud": 41, "dual_valu": 41, "26206": 41, "6896": 41, "results_product": 41, "5103": 41, "896": 41, "xlim": [41, 42, 50], "32000": 41, "xplot": 41, "regim": 41, "doubl": 41, "kerosen": 41, "hydrocarbon": 41, "hyperplan": [42, 46, 49, 50], "banknot": [42, 50], "medic": 42, "diseas": 42, "enjoi": 42, "movi": 42, "photo": 42, "car": [42, 45], "genuin": [42, 50], "counterfeit": [42, 50], "vend": 42, "accur": [42, 63, 66], "reject": 42, "ones": [42, 50, 60, 63], "tp": 42, "fn": 42, "tn": 42, "frustrat": 42, "incorrectli": [42, 45], "low": [42, 44, 45, 47, 48, 60, 63, 69], "innoc": 42, "proven": 42, "guilti": 42, "unless": 42, "perspect": [42, 65], "specimen": [42, 50], "wavelet": [42, 50], "skew": [42, 50], "curtosi": [42, 50], "entropi": [42, 50], "authent": [42, 50], "model_select": [42, 50], "train_test_split": [42, 50], "data_banknote_authent": [42, 50], "txt": [42, 50], "header": [42, 50], "62160": 42, "6661": 42, "8073": 42, "44699": 42, "54590": 42, "1674": 42, "4586": 42, "46210": 42, "86600": [42, 64], "6383": 42, "9242": 42, "10645": 42, "45660": 42, "5228": 42, "0112": 42, "59440": 42, "32924": 42, "4552": 42, "5718": 42, "98880": 42, "1372": 42, "433735": 42, "922353": 42, "397627": 42, "191657": 42, "444606": 42, "842763": 42, "869047": 42, "310030": 42, "101013": [42, 49], "497103": 42, "042100": 42, "773100": 42, "286100": 42, "548200": 42, "773000": 42, "708200": 42, "574975": 42, "413450": 42, "319650": 42, "616630": 42, "586650": 42, "821475": 42, "814625": 42, "179250": 42, "394810": 42, "824800": 42, "951600": 42, "927400": 42, "449500": 42, "exposit": [42, 50], "df_train": [42, 50], "df_test": [42, 50], "test_siz": [42, 50], "x_train": [42, 50], "y_train": [42, 50], "x_test": [42, 50], "y_test": [42, 50], "scatter_labeled_data": [42, 50], "prepend": [42, 50], "catch_warn": [42, 50], "filterwarn": [42, 50], "pred": [42, 50], "sgn": [42, 50], "scalar": 42, "linearsvm": [42, 50], "bia": [42, 50], "__call__": [42, 50, 68], "__repr__": [42, 50], "surfac": [42, 44], "accuraci": [42, 45, 50], "score": [42, 50], "estima": 42, "y_pred": [42, 50], "scatter_comparison": [42, 50], "xmin": [42, 50], "ymin": [42, 50], "xmax": [42, 50], "ymax": [42, 50], "topic": [42, 50, 68], "recommend": [42, 50, 69], "matthew": [42, 50], "mcc": [42, 50], "y_true": [42, 50], "bool": [42, 50], "true_posit": [42, 50], "false_neg": [42, 50], "false_posit": [42, 50], "true_neg": [42, 50], "mcc_numer": [42, 50], "mcc_denomin": [42, 50], "confusion_matrix": [42, 50], "661": 42, "pm": [42, 50, 55, 63, 66], "ambigu": 42, "perfectli": [42, 49, 57, 66], "z_i": [42, 45, 50], "misclassifi": [42, 50], "hing": 42, "poorli": 42, "penal": [42, 46], "_1": [42, 50, 55, 63], "lasso": 42, "spars": 42, "neglect": [42, 49], "2n": 42, "recast": [42, 49], "factori": [42, 45, 50], "svm_factory_lp": 42, "lambd": [42, 46, 47, 49], "wp": [42, 46, 47], "wn": 42, "hingeloss": 42, "svm_lp": 42, "24257023720674875": 42, "055108819378508436": 42, "004704238874285824": 42, "slack": [42, 50], "settl": [42, 50, 68], "soft": [42, 50], "misclassif": [42, 50], "accompani": [42, 50, 69], "svm_factory_qp": 42, "qp": 42, "svm_qp": 42, "36656392059193305": 42, "11710989157644607": 42, "14541701315506445": 42, "742": 42, "lagrangian": 42, "alpha_i": [42, 50, 65], "beta_i": 42, "saddl": 42, "alpha_j": [42, 50], "y_j": [42, 50, 55], "symmetr": [42, 50, 55, 62], "y_n": [42, 44, 50], "x_n": [42, 44, 50], "vdot": [42, 50], "ddot": [42, 50], "sim": [42, 44, 45, 50, 62, 66], "rank": [42, 48, 50], "defici": [42, 50], "elimin": [42, 45, 50, 53, 63, 69], "ff": [42, 50], "complementar": 42, "svm_factory_du": 42, "mul": 42, "interior": [42, 44, 45], "closest": 42, "argmin": 42, "svm_dual": 42, "36659753046810317": 42, "11713531687779753": 42, "1452699652847259": 42, "phi": [42, 50, 58, 62], "machineri": 42, "mercer": [42, 50], "theorem": [42, 50], "spectral": [42, 50], "diagon": [42, 50], "eigenvalu": [42, 50], "i_q": [42, 50], "kernal": [42, 50], "sv": [42, 50], "kernelsvm": [42, 50], "svm_factory_kernel": 42, "tol": [42, 50], "callabl": [42, 68], "eigvec": 42, "eigh": [42, 50], "diag": [42, 50, 62], "y_support": [42, 50], "svm_kernel": 42, "__main__": 42, "0x17ff39120": 42, "0x17faaf460": 42, "845": 42, "cubic": [42, 44], "0x17f341c00": 42, "827": 42, "kelli": [43, 46, 49], "layer": [43, 63], "insul": 43, "luenberg": 43, "wheel": 43, "growth": [43, 46], "thermal": 44, "annual": [44, 45, 49], "heat": 44, "air": [44, 62], "kernel": [44, 45, 46, 47, 48, 49, 55, 57], "pmo": [44, 45, 46, 47, 48, 49, 50], "temperatur": 44, "t_o": 44, "conduct": 44, "ua": 44, "transfer": [44, 68], "invers": [44, 58, 60, 62], "serial": 44, "resist": 44, "r_0": 44, "r_n": [44, 46, 47], "k_n": 44, "thick": 44, "proport": [44, 57], "affin": 44, "a_n": 44, "b_n": [44, 46], "ty_n": 44, "bx": 44, "sq": 44, "meter": 44, "r0": [44, 47], "watt": 44, "xopt": 44, "9962": 44, "2864": 44, "z_n": 44, "r_1": [44, 45, 46, 47], "r_2": [44, 45, 47], "z_0": 44, "z_1": [44, 45, 55], "rotated_quadrat": [44, 50], "as_domain": [44, 46, 47, 49, 50], "99615": 44, "28640": 44, "overcom": 44, "ru": 44, "2ru": 44, "middl": 44, "isol": 44, "a_ny_n": 44, "b_nx_n": 44, "variable_dict": [44, 45, 46, 49], "constraint_dict": 44, "miner": 44, "wool": 44, "rigid": 44, "foam": 44, "015": [44, 45], "1549": 44, "19361": 44, "010": [44, 45], "2299": 44, "06276": 44, "08724": 44, "x_0": 44, "curv": [44, 66], "x0": 44, "meshgrid": 44, "contour": [44, 45], "my": [44, 68], "hasan": 44, "cycl": 44, "124": [44, 45, 49], "pii": [44, 45], "s0306261999000239": 44, "kaynakli": 44, "review": [44, 69], "sustain": 44, "425": [44, 55, 64], "s1364032111004163": 44, "nyer": 44, "kajtar": 44, "tomi\u0107": 44, "2015": 44, "268": 44, "s0378778814008688": 44, "gori": 44, "guattari": 44, "evangelisti": 44, "asdrubali": 44, "mass": [44, 49], "359": 44, "s0017931016303647": 44, "huang": 44, "zhou": 44, "wu": 44, "chines": 44, "zone": 44, "humid": 44, "subtrop": 44, "climat": 44, "101840": 44, "s221067071931457x": 44, "s\u00f6ylemez": 44, "\u00fcnsal": 44, "refriger": 44, "s0196890498001253": 44, "a\u00e7\u0131kkalp": 44, "kandemir": 44, "2019": [44, 49], "environment": 44, "s2451904918305377": 44, "ylm\u00e9n": 44, "mj\u00f6rnell": 44, "berlin": 44, "arfvidsson": 44, "optimis": [44, 45], "107544": 44, "s0360132320309112": 44, "mba": 45, "1915": 45, "deplet": 45, "hx": 45, "modulo": 45, "analyt": [45, 47, 66], "fopt": 45, "3651": 45, "2738": 45, "tangent": 45, "yopt": 45, "3200": 45, "0008": 45, "elementari": 45, "geometri": 45, "hyperbola": 45, "intersect": 45, "lorenz": 45, "lobo": 45, "iff": [45, 47, 50], "2w": 45, "tilt": 45, "displac": [45, 62], "stretch": 45, "geometr": [45, 47], "4xy": 45, "mpl_toolkit": 45, "mplot3d": 45, "art3d": 45, "t_max": 45, "co": 45, "sin": 45, "plot3d": 45, "arcco": 45, "text3d": 45, "view_init": 45, "elev": 45, "azim": 45, "pathpatch_2d_to_3d": 45, "zdir": 45, "set_zlim": 45, "simpler": 45, "cd": 45, "experiment": 45, "u_eq": 45, "neoq": 45, "3654": 45, "stumbl": 45, "sledgehamm": 45, "swat": 45, "fly": 45, "compet": 45, "he": [45, 46], "perish": 45, "b_0": 45, "lb_i": 45, "ub_i": 45, "h_i": 45, "deliveri": [45, 63], "hypothet": [45, 59], "tire": 45, "weather": [45, 59, 64], "heavi": 45, "duti": 45, "block_dict": [45, 46, 49], "b_cap": 45, "eoq_display_result": 45, "req": 45, "306": 45, "918": 45, "153": 45, "1225": 45, "151": 45, "754": 45, "367": 45, "1101": 45, "df_larg": 45, "03d": 45, "688059": 45, "329": 45, "1220": 45, "110966": 45, "452672": 45, "2671": 45, "984745": 45, "4851": 45, "180476": 45, "364": 45, "3286": 45, "560933": 45, "1955": 45, "727272": 45, "458": 45, "2010": [45, 46, 47, 49], "911743": 45, "408": 45, "410": 45, "007": 45, "621799": 45, "478": [45, 48], "008": 45, "317468": 45, "335": [45, 49], "1056": 45, "009": 45, "460362": 45, "339": [45, 59], "2996": 45, "960022": 45, "801": 45, "011": 45, "926136": 45, "381": 45, "2800": 45, "688914": 45, "422": [45, 66], "3076": 45, "013": 45, "545538": 45, "014": 45, "668708": 45, "2260": 45, "755557": 45, "322": 45, "4872": 45, "587431": 45, "640": 45, "801025": 45, "445": [45, 66], "1693": 45, "018": 45, "636593": 45, "473": 45, "4066": 45, "019": 45, "717248": 45, "476": [45, 52], "2194": 45, "020": 45, "053587": 45, "324": 45, "1518": 45, "021": 45, "318844": 45, "2681": 45, "022": 45, "625933": 45, "746": 45, "023": 45, "995664": 45, "3192": 45, "338183": 45, "468": 45, "2830": 45, "679697": 45, "354": 45, "2449": 45, "026": 45, "780842": 45, "358": 45, "926": 45, "236800": 45, "411": 45, "4618": 45, "028": 45, "252901": 45, "455": 45, "3022": [45, 49], "029": 45, "039994": 45, "423": 45, "4253": 45, "132": [45, 49], "2274": 45, "3327": 45, "4801": 45, "3905": 45, "169": 45, "2901": 45, "3443": 45, "1449": 45, "1982": 45, "2121": 45, "209": [45, 62], "3588": 45, "1922": 45, "3659": 45, "236": [45, 62], "4046": 45, "3068": 45, "4445": 45, "3079": 45, "291": 45, "4982": 45, "214": 45, "3668": 45, "2508": 45, "224": 45, "3842": 45, "3915": 45, "4102": 45, "193": [45, 46], "3307": 45, "119": 45, "287": [45, 62], "4917": 45, "4184": 45, "4797": 45, "curiou": 45, "twist": 45, "1931": 45, "citat": 45, "shaw": 45, "chap": 45, "iv": 45, "chicago": 45, "ziegler": 45, "singli": 45, "252": [45, 49], "016763778290030x": 45, "bretthauer": 45, "shetti": 45, "1995": 45, "670": 45, "171693": 45, "kuo": 45, "mittleman": 45, "2004": 45, "mittelmann": 45, "285": 45, "1023": 45, "coap": 45, "0000033964": 45, "95511": 45, "vandenbergh": 45, "lebret": 45, "284": [45, 66], "stanford": [45, 46, 49], "socp": [45, 58], "letchford": 45, "park": [45, 66], "2018": [45, 46, 49], "guid": [45, 67], "rairo": 45, "1106": 45, "cs": 45, "nott": 45, "uk": 45, "pszajp": 45, "pub": 45, "el": 45, "ghaoui": 45, "laurent": 45, "inst": 45, "eec": 45, "berkelei": [45, 46, 49], "ee127": 45, "fa19": 45, "12_socp": 45, "cookbook": [45, 48], "section": [45, 62, 68], "cqo": 45, "bypass": 45, "6cm": 45, "4pt": 45, "u_i": [45, 47], "v_i": [45, 66], "wager": [46, 47], "spin": 46, "game": 46, "indefinit": 46, "interact": [46, 68, 69], "w_a": 46, "w_b": 46, "stake": 46, "bisect": 46, "ipywidget": 46, "widget": 46, "wheel_sim": 46, "odd": [46, 47], "quantil": [46, 52, 58, 60, 62], "semilog": [46, 47], "bisect_left": 46, "wealth_next": 46, "elogr": [46, 47, 49], "interact_manu": 46, "floatslid": 46, "wb": 46, "wc": [46, 64], "wheel_interact1": 46, "p_n": 46, "q_n": 46, "wheel_model": 46, "expression_dict": [46, 49], "sum_w": 46, "primal_exponenti": [46, 47, 49], "06758": 46, "406": 46, "167": 46, "suffer": 46, "chanc": [46, 56, 65], "drawdown": 46, "busseti": [46, 47, 49], "ryu": [46, 47, 49], "gambl": [46, 47, 49], "infti": [46, 55, 60], "admiss": 46, "p_1": [46, 47], "u_n": 46, "wheel_rc_model": 46, "sum_u": 46, "06025": 46, "36406": 46, "26663": 46, "1667": 46, "12614": 46, "wheel_interact2": 46, "semilogx": [46, 49], "determinist": [46, 63, 65, 66], "popular": [46, 47], "poundston": [46, 47], "fortun": [46, 47], "untold": [46, 47], "scientif": [46, 47, 49], "bet": [46, 47, 49], "beat": [46, 47, 49], "casino": [46, 47], "street": [46, 47, 49], "hill": [46, 47], "wang": [46, 47], "onlinecasinoground": [46, 47], "nl": [46, 47], "upload": [46, 47], "boek": [46, 47], "van": [46, 47, 69], "thorp": [46, 47, 49], "man": [46, 47, 49], "la": [46, 47, 49, 69], "vega": [46, 47, 49], "dealer": [46, 47, 49], "2008": [46, 47, 49], "blackjack": [46, 47, 49], "sport": [46, 47, 49], "handbook": [46, 47, 49], "liabil": [46, 47, 49], "385": [46, 47, 49], "428": [46, 47, 49], "holland": [46, 47, 49], "palmislandtrad": [46, 47, 49], "econ136": [46, 47, 49], "thorpe_kelly_crit": [46, 47, 49], "maclean": [46, 49], "ziemba": [46, 49], "aldou": [46, 49], "good_bad_kelli": [46, 49], "2011": [46, 49, 62, 64], "worldscientif": [46, 49], "worldscibook": [46, 49], "7598": [46, 49], "aboutbook": [46, 49], "wikipedia": [46, 47, 68], "kelly_criterion": [46, 47], "oup": 46, "catalogu": 46, "ush": 46, "9780199740086": 46, "caja": [46, 49], "3833617": [46, 49], "134": [46, 47, 49, 62, 65], "1603": [46, 47, 49], "06183": [46, 47, 49], "fu": [46, 47, 49], "narasimhan": [46, 47, 49], "cvxr": [46, 47, 49], "1711": [46, 47, 49], "07582": [46, 47, 49], "1812": [46, 49], "10371": [46, 49], "robust_kelli": [46, 49], "ch": [46, 49], "hsieh": [46, 49], "2202": [46, 49, 52], "03858": [46, 49], "1956": 47, "bell": 47, "laboratori": 47, "analog": 47, "claud": 47, "shannon": 47, "encod": [47, 62, 69], "noisi": 47, "channel": 47, "gambler": 47, "predat": 47, "1738": 47, "daniel": 47, "bernoulli": 47, "resolut": 47, "st": 47, "petersburg": 47, "cousin": 47, "nichola": 47, "adventur": 47, "laid": 47, "obscur": 47, "cowork": [47, 49], "avers": 47, "ident": [47, 49, 53, 63, 68], "polici": 47, "q_1": 47, "q_2": 47, "w_conic": 47, "w_analyt": 47, "1180": 47, "p_2": 47, "q_i": 47, "u_1": [47, 50], "u_2": [47, 50], "kelly_rc": 47, "u1": 47, "u2": 47, "r1": [47, 69], "r2": [47, 69], "w_rc": 47, "constrainend": 47, "0589": 47, "kelly_sim": 47, "mont": 47, "carlo": 47, "binomi": 47, "cumprod": [47, 49], "logr": 47, "transax": 47, "1e6": 47, "semidefinit": 48, "choleski": 48, "lorentz": 48, "2_2": [48, 55], "practiv": 48, "qcqo": 48, "markowitz_revisit": 48, "ok": [48, 55, 58, 60], "283": 48, "130": 48, "109": [48, 49], "alpha_valu": 48, "critiqu": 49, "economist": 49, "20th": 49, "paul": 49, "samuelson": 49, "ground": 49, "lack": [49, 59], "controversi": 49, "didn": 49, "fund": 49, "histor": [49, 57, 59], "yfinanc": 49, "holidai": 49, "elabor": 49, "gspc": 49, "ixic": 49, "nasdaq": 49, "dji": 49, "jone": 49, "rut": 49, "russel": 49, "amgen": 49, "appl": 49, "boe": 49, "caterpillar": 49, "chevron": 49, "jpmorgan": 49, "chase": 49, "mcdonald": 49, "microsoft": 49, "proctor": 49, "n_test": 49, "n_train": 49, "dropna": 49, "prop": 49, "r_f": 49, "futur": [49, 51, 59, 62], "borrow": 49, "e_m": 49, "q_t": 49, "equiprob": [49, 57, 62], "kelly_portfolio": 49, "u_sum": 49, "w_sum": 49, "kelly_report": 49, "247": 49, "190366": 49, "564623": 49, "480615": 49, "500638": 49, "152": 49, "966799": 49, "056351": 49, "107": [49, 62, 64], "132849": 49, "303171": 49, "247408": 49, "071398": 49, "924581": 49, "324833": 49, "955780": 49, "664067": 49, "665347": 49, "512189": 49, "226212": 49, "793304": 49, "976357": 49, "340": [49, 64, 69], "524902": 49, "859108": 49, "259621": 49, "789543": 49, "749512": 49, "810425": 49, "666946": 49, "046753": 49, "898674": 49, "26805": 49, "529297": 49, "3010": 49, "290039": 49, "8185": 49, "799805": 49, "1548": 49, "489990": 49, "955654": 49, "784424": 49, "724091": 49, "860046": 49, "127": [49, 65], "212341": 49, "170517": 49, "675674": 49, "463715": 49, "385712": 49, "427185": 49, "651657": 49, "028133": 49, "26958": 49, "060547": 49, "550049": 49, "8243": 49, "120117": 49, "1558": 49, "709961": 49, "556232": 49, "519867": 49, "026421": 49, "336": [49, 65], "897766": 49, "512772": 49, "011734": 49, "883026": 49, "913925": 49, "756805": 49, "860023": 49, "534607": 49, "27090": 49, "720703": 49, "3039": 49, "419922": 49, "8325": 49, "990234": 49, "1571": 49, "930054": 49, "155693": 49, "185": 49, "043839": 49, "930519": 49, "344": 49, "853729": 49, "128": [49, 62, 69], "668976": 49, "719246": 49, "030106": 49, "649017": 49, "701126": 49, "448059": 49, "968727": 49, "372787": 49, "27071": 49, "460938": 49, "3036": 49, "889893": 49, "8276": 49, "849609": 49, "1577": 49, "069946": 49, "148396": 49, "717285": 49, "544601": 49, "017273": 49, "767677": 49, "240089": 49, "409836": 49, "542816": 49, "326614": 49, "160965": 49, "182632": 49, "790260": 49, "27186": 49, "689453": 49, "3046": 49, "770020": 49, "8303": 49, "980469": 49, "1572": 49, "849976": 49, "carta": 49, "conversano": 49, "rebalanc": 49, "577050": 49, "frontiersin": 49, "3389": 49, "fam": 49, "thing": [50, 55, 63, 65, 66, 68], "move": [50, 62], "trail": 50, "classifi": 50, "rescal": [50, 68], "wrong": [50, 68], "unnecessarili": [50, 66], "orthogon": 50, "_n": 50, "m_r": 50, "2u_1u_2": 50, "u_3": 50, "u_m": 50, "conicsvmfactori": 50, "variable_list": [50, 55], "qr": 50, "constraint_list": [50, 55], "svm_v2": 50, "546234": 50, "152174": 50, "21435828724315473": 50, "769": 50, "q_r": 50, "computation": 50, "rememb": [50, 65], "conicdualsvmfactori": 50, "w_bar": 50, "svm_v3": 50, "546247": 50, "152194": 50, "21435778397469038": 50, "room": 50, "onward": 50, "alpha_ik": 50, "y_nk": 50, "kernelsvmfactori": 50, "hstack": 50, "nz": 50, "pz": 50, "rbf": 50, "881": 50, "encourag": 50, "poli": 50, "438": 50, "argu": [51, 65], "trust": 51, "substanc": 51, "ingredi": 51, "antenna": 51, "simul": [51, 55, 62, 66], "contrib": 52, "only_child_var": 52, "material_demand": 52, "eot_inventori": 52, "fold": 52, "initialize_problem_data": 52, "problem_data": 52, "demand_chips_ref": 52, "demand_chips_simul": 52, "showtableofpyomovari": 52, "decim": 52, "23580": 52, "722": 52, "1823": 52, "1233": 52, "2465": 52, "682": 52, "1620": 52, "1586": 52, "1964": 52, "1678": 52, "1430": 52, "5020": 52, "4396": 52, "5017": 52, "3187": 52, "1807": 52, "643": 52, "2425": 52, "minimize_missed_demand_in_period": 52, "missed_demand": 52, "nb": 52, "resource_constraint": 52, "produced_plus_unmet": 52, "total_unmet": 52, "simulation_per_trajectori": 52, "simulate_perform": 52, "perturbed_demand": 52, "applymap": 52, "inv": 52, "md": 52, "missing_demand": 52, "missingdemand": 52, "swaplevel": 52, "inventoryevolut": 52, "average_missed_demand": 52, "bim_robust_missed_demand": 52, "realized_inv_cost": 52, "trajectori": 52, "n_sim": 52, "simresult": 52, "sllighli": 52, "nonzero": 52, "20309": 52, "3270": 52, "3309": 52, "flown": 53, "airlin": [53, 61], "airplan": [53, 62], "randomst": 53, "airport": 53, "generate_flight": 53, "n_flight": 53, "min_dur": 53, "max_dur": 53, "max_departur": 53, "rs": 53, "end_flight": 53, "start_flight": 53, "floor": 53, "ceil": 53, "flightdata": 53, "draw_flight": 53, "add_subplot": 53, "get_yaxi": 53, "iterrow": 53, "1h": 53, "feasible_flight_pair": 53, "turnaound": 53, "turnaround": [53, 68], "flight_pair": 53, "reassign": 53, "unexpect": 53, "delai": [53, 63], "sink": 53, "bigcup_": 53, "cup": [53, 65, 66], "eq": 53, "71a": 53, "71b": 53, "71c": 53, "71d": 53, "71e": 53, "eqref": 53, "drawback": 53, "blind": 53, "swap": 53, "lot": 53, "huge": [53, 65], "altogeth": 53, "flight1": 53, "flight2": 53, "p_f": 53, "unassign": 53, "q_f": 53, "minimize_airplan": 53, "redraw": 53, "dg_soln": 53, "layov": 53, "flightschedul": 53, "travers": 53, "a01": 53, "a04": 53, "a03": 53, "a02": 53, "a12": 53, "a05": 53, "a06": 53, "a07": 53, "a08": 53, "a13": 53, "a09": 53, "a11": 53, "a10": 53, "a14": 53, "aircraftschedul": 53, "from_fram": 53, "nplane": 53, "n_plane": 53, "minimize_risk": 53, "nlo": 55, "bonmin": 55, "nlo_solv": 55, "rrcrcl": 55, "gemanium": 55, "showdual": 55, "feel": 55, "lognorm": 55, "somehow": [55, 59], "currentaxi": 55, "922766922829344": 55, "9701110863753781": 55, "061793174956137": 55, "0328386701386703": 55, "z_2": 55, "infinit": 55, "robustifi": 55, "rrr": 55, "rrl": 55, "bimwithboxuncertainti": 55, "robustcopp": 55, "pervari": 55, "1137": 55, "17587": 55, "tune": [55, 57], "bimwithsymmetricalboxuncertainti": 55, "606": 55, "1143": 55, "17568": 55, "gave": 55, "1138": 55, "17586": 55, "behav": 55, "17634": 55, "628": 55, "1122": 55, "1144": 55, "17502": 55, "584": [55, 62], "17436": 55, "562": 55, "1188": 55, "17370": 55, "540": 55, "17304": 55, "518": 55, "1232": 55, "17238": 55, "496": 55, "1254": 55, "17175": 55, "475": 55, "17109": 55, "453": 55, "1297": 55, "17043": 55, "1319": 55, "16977": 55, "409": 55, "1341": 55, "16911": 55, "1363": 55, "16845": 55, "1385": 55, "16779": 55, "1407": 55, "16713": 55, "321": 55, "1429": 55, "16650": 55, "1450": 55, "16584": 55, "278": 55, "1472": 55, "16518": 55, "1494": 55, "16416": 55, "16296": 55, "16001": 55, "17999": 55, "z_j": 55, "lagrang": 55, "rrcrcrcrcrcrcl": 55, "t_1": 55, "t_2": 55, "bimwithbudgetuncertainti": 55, "lam": 55, "up_rul": 55, "down_rul": 55, "641": 55, "1109": 55, "17673": 55, "violat": [55, 57, 63], "bimwithsetofscenario": 55, "worst": [55, 57, 63, 65], "bimpessim": 55, "pessim": [55, 63], "absolute_value_1": 55, "absolute_value_2": 55, "absolute_value_less_than_on": 55, "budget_constraint": 55, "worst_z": 55, "wrap": 55, "gradual": [55, 63], "reoptim": 55, "adversarial_converg": 55, "stopping_precis": [55, 63], "max_iter": [55, 63], "adversarial_iter": 55, "master": [55, 63], "niter": [55, 63], "constraint_viol": 55, "baselin": [55, 66], "viabl": 55, "polytop": 55, "ellipsoid": 55, "extrem": [55, 63], "minuscul": 55, "radiu": 55, "_1x_1": 55, "_2x_2": 55, "newli": [55, 63, 65], "pyk": 55, "bimwithballuncertainti": 55, "domain_typ": 55, "realset": 55, "idxchip": 55, "xtow": 55, "617": 55, "755": 55, "1132": 55, "17603": 55, "integerset": 55, "solver_minlo": 55, "1133": 55, "17601": 55, "bimwithballuncertaintyassquaredsecondordercon": 55, "soc": 55, "pop": 56, "seafood": 56, "llll": [57, 65, 66], "offshor": 57, "turbin": [57, 65, 66], "fluctuat": [57, 65, 66], "intermitt": 57, "mismatch": 57, "varepsilon": [57, 60], "fine": 57, "saa": [57, 61], "seaborn": 57, "sn": 57, "read_economic_dispatch_data": 57, "wind_production_samples_df": 57, "discrete_wind": 57, "wind_production_sampl": 57, "fifth": 57, "94632359541376": 57, "set_styl": 57, "darkgrid": 57, "histplot": 57, "kde": 57, "kde_kw": 57, "23034433319671": 57, "bubbl": 57, "df_node": 57, "showinst": 57, "zorder": 57, "u_j": 57, "thank": [57, 58], "omega_j": 57, "u_jm_j": 57, "deactiv": [57, 66], "incorrect": 57, "certainli": 57, "economic_dispatch": 57, "supply_demand_leq": 57, "supply_demand_geq": 57, "success_prob": 57, "sum_product": 57, "sum_demand": 57, "3007": 57, "1733": 57, "393": 57, "7850": 57, "601": 57, "reward": 57, "tradeoff": [57, 63, 64], "getlogg": [57, 66], "setlevel": [57, 66], "fixed_delta": 57, "feas_ep": 57, "feas_obj": 57, "num": 57, "epsilon": 57, "fixed_ep": 57, "feas_delta": 57, "tighter": 57, "flat": 57, "multivari": [58, 62], "gaussian": 58, "cdf": [58, 60, 62], "ppf": [58, 60, 62], "dramat": [58, 65], "markowitz_chanceconstraint": 58, "chance_constraint": 58, "078": 58, "commemor": 59, "unsold": [59, 60, 62], "salvag": 59, "sunni": 59, "ski": 59, "poor": [59, 64, 66], "dilemma": 59, "expected_demand": 59, "10220": 59, "165": [59, 64], "3950": 59, "8339": 59, "satisfactori": 59, "lesser": 59, "operation": 59, "sales_less_than_ord": 59, "sales_less_than_demand": 59, "11200": [59, 64], "8920": 59, "920": 59, "581": 59, "compens": [59, 65], "unfold": 59, "probablist": 59, "transpir": 59, "varaibl": 59, "variat": 59, "18200": 59, "evss": 59, "hypother": 59, "220": [59, 69], "vpi": 59, "math": [60, 64], "ton": [60, 64], "tuna": 60, "whom": 60, "fish": 60, "leftov": 60, "cold": 60, "cx": 60, "cumul": [60, 68], "pareto": 60, "expon": 60, "weibul": [60, 66], "5357": 60, "weibull_min": 60, "838": 60, "extratick": 60, "x_opt": 60, "ytick": 60, "parametr": [60, 69], "mean_demand": 60, "first_stage_profit": 60, "cant_sell_fish_i_dont_hav": 60, "fish_do_not_disappear": 60, "second_stage_profit": 60, "total_profit": 60, "determist": 60, "naiveseafoodstocksaa": 60, "distributiontyp": 60, "indices_rul": 60, "xi": 60, "cantsoldthingsfishdonthav": 60, "fishdonotdisappear": 60, "total_expected_profit": 60, "7500": [60, 64], "naiveprofit_uniform": 60, "xm": 60, "naiveprofit_pareto": 60, "naiveprofit_weibul": 60, "966": [60, 62], "910": [60, 62], "vss": 60, "seafoodstocksaa": 60, "printflag": 60, "cantsoldfishidonthav": 60, "smartprofit_uniform": 60, "smartprofit_pareto": 60, "smartprofit_weibul": 60, "979": 60, "890": 60, "919": 60, "profit_uniform": 60, "profit_pareto": 60, "profit_weibul": 60, "xw": 60, "recours": [61, 62, 66], "ccg": [61, 63], "farmer": 61, "land": [61, 64], "curtail": [61, 65], "birg": [62, 64], "louveaux": [62, 64], "media": [62, 64], "bueno": 62, "economi": 62, "passeng": 62, "ticket": 62, "weekdai": 62, "traffic": 62, "middai": 62, "overbook": 62, "downgrad": 62, "unavail": 62, "revenue_factor": 62, "seat_factor": 62, "seat_report": 62, "unsatisfi": 62, "spillag": 62, "equivalent_seat": 62, "nseat": 62, "nticket": 62, "unmet": 62, "nspillag": 62, "unfulfil": 62, "nexpect": 62, "rot": 62, "trial": 62, "seats_all_economi": 62, "eev": 62, "evm": 62, "s_c": 62, "t_c": 62, "r_c": 62, "f_c": 62, "mu_c": 62, "bm": [62, 63], "airline_determinist": 62, "plane_seat": 62, "demand_limit": 62, "seat_limit": 62, "airline_solv": 62, "model_eev": 62, "seats_eev": 62, "boldsymbol": 62, "z_c": 62, "tuplic": 62, "airline_stochast": 62, "model_stochast": 62, "seats_stochast": 62, "client": [62, 64], "enrol": 62, "loyalti": 62, "cover": [62, 63, 65], "z_f": 62, "mu_f": 62, "sigma_f": 62, "z_b": [62, 63], "mu_b": 62, "sigma_b": 62, "mu_": 62, "sigma_": 62, "s_f": 62, "s_b": 62, "054": 62, "counterpart": [62, 65], "qo": 62, "airline_cc": 62, "qosf": 62, "qosfb": 62, "first_class": 62, "business_class": 62, "model_cc": 62, "seats_cc": 62, "z_e": 62, "sigma_c": 62, "simplif": 62, "anymor": 62, "sake": [62, 63], "nmodel": 62, "nearest": 62, "multivariate_norm": 62, "demand_saa": 62, "demand_saa_stat": 62, "ci": 62, "889": 62, "088936": 62, "051534": 62, "839669": 62, "seat_report_saa": 62, "model_ssa": 62, "seats_saa": 62, "764": 62, "416": 62, "944": 62, "211": 62, "mu_e": 62, "ccc": 62, "rho_": 62, "fb": 62, "fe": 62, "bf": 62, "BE": 62, "ef": 62, "eb": 62, "truncat": 62, "nsampl": 62, "cov": 62, "cj": 62, "convari": 62, "590": 62, "301": 62, "951388": 62, "139984": 62, "147365": 62, "613469": 62, "044965": 62, "434823": 62, "229": 62, "219119": 62, "216627": 62, "916315": 62, "303": 62, "184": 62, "697": 62, "816": 62, "airline_fin": 62, "first_class_loy": 62, "first_class_loyality_r": 62, "business_class_loy": 62, "business_class_loyality_r": 62, "995": 62, "031": 62, "969": 62, "startup": 63, "announc": 63, "campaign": 63, "chief": 63, "offic": 63, "coo": 63, "z_a": 63, "z_d": 63, "attain": 63, "subtract": 63, "p_u": 63, "p_v": 63, "preorder": 63, "10x": 63, "50z_a": 63, "80z_b": 63, "40z_b": 63, "tau": [63, 69], "model_param": 63, "uniformli": [63, 65], "z_sampl": 63, "max_min_profit": 63, "stage_net_profit": 63, "model_constraint": 63, "nsolut": 63, "883": 63, "547": 63, "slight": 63, "max_avg_profit": 63, "avg_profit": 63, "avg_case_p": 63, "2305": 63, "max_profit_fixed_x": 63, "fixed_x_valu": 63, "worst_cas": 63, "fixed_x": [63, 66], "xopt_rob": 63, "nsolv": 63, "worst_case_p": 63, "xopt_avg": 63, "underperform": 63, "narrow": 63, "stabler": 63, "phenomenon": 63, "unsur": 63, "downsid": 63, "i_3": 63, "_3": 63, "i1": 63, "i2": 63, "i3": 63, "i4": 63, "subproblem_param": 63, "hack": 63, "proxi": 63, "acceler": 63, "freeli": 63, "hurt": 63, "pessimization_problem": 63, "master_solut": 63, "z_a_max": 63, "z_b_max": 63, "z_d_max": 63, "big_m": 63, "z_indic": 63, "z_ab": 63, "a_ub": 63, "a_lb": 63, "a_ab": 63, "b_lb": 63, "b_ub": 63, "b_ab": 63, "d_lb": 63, "d_ub": 63, "d_ab": 63, "z_budget": 63, "blockwis": 63, "at_least_one_viol": 63, "max_viol": 63, "subproblem": 63, "seem": [63, 65, 68], "hundr": 63, "ccg_converg": 63, "ccg_iter": 63, "export": 63, "single_solut": 63, "x_kei": 63, "y_kei": 63, "theta_opt": 63, "560": 63, "555": 63, "zeng": 63, "zhao": 63, "457": 63, "461": 63, "francoi": 64, "acr": 64, "crop": 64, "wheat": 64, "corn": 64, "beet": 64, "230": 64, "cattl": 64, "wholesal": 64, "decad": 64, "quota": 64, "excess": [64, 69], "interview": 64, "stai": 64, "advic": 64, "total_land": 64, "limit_on_planted_land": 64, "crop_yield": 64, "under_quota": 64, "over_quota": 64, "farm_report": 64, "nscenario": 64, "118600": 64, "18400": 64, "216000": 64, "78000": 64, "138000": 64, "analys": 64, "hear": 64, "108390": 64, "167000": 64, "52700": 64, "25500": 64, "27200": 64, "7200": 64, "65000": 64, "151000": 64, "109350": 64, "38250": 64, "12750": 64, "180000": 64, "115000": 64, "48820": 64, "23800": 64, "1700": 64, "28480": 64, "144000": 64, "79000": 64, "lower_bound_profit": 64, "59950": 64, "113250": 64, "37250": 64, "246000": 64, "97500": 64, "148500": 64, "6500": 64, "40400": 64, "4975": 64, "2525": 64, "204350": 64, "106850": 64, "43550": 64, "118500": 64, "231000": 64, "133500": 64, "00000000055": 64, "min_profit": 64, "56750": 64, "56820": 64, "820": 64, "800": 64, "980": 64, "390": 64, "290": 64, "56800": 64, "107100": 64, "147000": 64, "23000": 64, "228000": 64, "150000": 64, "117500": 64, "14000": 64, "172800": 64, "94800": 64, "uiowa": 64, "dbricker": 64, "stacks_pdf1": 64, "slpwr_farmer": 64, "uh": 64, "rohop": 64, "spring_15": 64, "chapter1": 64, "surplu": 65, "shortag": 65, "opf": [65, 66], "panel": 65, "p_j": 65, "lllll": [65, 66], "delta_i": 65, "respond": 65, "jointli": 65, "adversari": 65, "costli": 65, "rnd": 65, "rework": 65, "opf_participationfactor": 65, "totalimbal": 65, "abstotalimbal": 65, "uniformparticipationfactor": 65, "swh": 65, "cg": 65, "ng": 65, "isna": 65, "abs_total_imbal": 65, "total_imbal": 65, "windsolarhydro_nopartecipationfactor": 65, "load_nopartecipationfactor": 65, "sum_on": 65, "equal_participationfactor": 65, "power_withrecours": 65, "generation_upper_bound_withrecours": 65, "generation_lower_bound_withrecours": 65, "flows_lower_bound": 65, "sw": 65, "sw_df": 65, "isin": 65, "zeroimbal": 65, "zerototalimbal": 65, "zeroabstotalimbal": 65, "firststagecost": 65, "40385": 65, "227": [65, 66], "235": [65, 66], "asid": 65, "proportion": 65, "averagerecoursecost": 65, "averagetotalcost": 65, "5354": 65, "45739": 65, "nfirst": 65, "205": 65, "276": 65, "41719": 65, "47073": 65, "cascad": 65, "failur": 65, "blackout": [65, 66], "damag": 65, "infrastructur": 65, "societ": 65, "unafford": 65, "281": 65, "40446": 65, "5969": 65, "46415": 65, "hertz": 66, "mainli": 66, "disconnect": 66, "offlin": 66, "advent": 66, "fairli": 66, "hydropow": 66, "former": 66, "predic": 66, "uc": [66, 69], "kappa_i": 66, "c_fix": 66, "nontrivi": 66, "g_i": 66, "shore": 66, "Being": 66, "g_": 66, "16563": 66, "4718": 66, "18007": 66, "72049": 66, "_v": 66, "705509": 66, "734756": 66, "273978": 66, "159230": 66, "852748": 66, "602": 66, "814908": 66, "230344": 66, "690399": 66, "514209": 66, "248977": 66, "784856": 66, "664045": 66, "163": 66, "009206": 66, "175633": 66, "504459": 66, "086431": 66, "1689": 66, "384370": 66, "1057": 66, "306239": 66, "1837": 66, "349675": 66, "1456": 66, "262510": 66, "526012": 66, "753966": 66, "693808": 66, "050352": 66, "747257": 66, "554867": 66, "1504": 66, "397099": 66, "1751": 66, "390683": 66, "2450": 66, "534057": 66, "2184": 66, "454": 66, "660581": 66, "1617": 66, "451": 66, "133883": 66, "1627": 66, "g_offshor": 66, "piecewis": 66, "g_onshor": 66, "uc_windcurtail": 66, "vmax": 66, "nw": 66, "voltag": 66, "term2": 66, "term1": 66, "wind_speed_to_pow": 66, "wind_curtail": 66, "scale64": 66, "shape64": 66, "scale65": 66, "shape65": 66, "turbineact": 66, "tubin": 66, "29662": 66, "uc_windcurtailment_fixed_x": 66, "mean_sampl": 66, "m_nomin": 66, "15101": 66, "mechan": 66, "n_infeas": 66, "m_singl": 66, "workflow": 67, "py": 68, "thon": 68, "ptimiz": 68, "odel": 68, "bject": 68, "stateless": 68, "immut": [68, 69], "mutat": 68, "incompat": 68, "glanc": 68, "encapsul": 68, "forward": 68, "invoc": 68, "concurr": 68, "exclaim": 68, "exclam": 68, "lawn": 68, "circ": 68, "enthus": 68, "hello": 68, "someth": 68, "bind": 68, "contains_valu": 68, "boilerpl": 68, "push": 68, "attributeerror": 68, "spe": 68, "ca": 68, "clone": 68, "_solver": 68, "new_model": 68, "_transform": 68, "overridden": 68, "rtype": 68, "__rshift__": 68, "production_model": 68, "2400": 68, "dae": 68, "reaction": 68, "stackrel": 68, "k_1": 68, "k_2": 68, "isotherm": 68, "ultim": 68, "t_f": 68, "max_t": 68, "da": 68, "dt": 68, "db": 68, "tractabl": 68, "t_ff": 68, "ode_model_build": 68, "k1": 68, "k2": 68, "continuousset": 68, "tf": 68, "dadt": 68, "derivativevar": 68, "dbdt": 68, "max_b": 68, "odea": 68, "odeb": 68, "colloc": 68, "669": 68, "15767005981401438": 68, "8541314382648219": 68, "ode_solv": 68, "023594361612317": 68, "6687402900841761": 68, "philliam": 68, "codeproject": 68, "5290753": 68, "deploy": 69, "guidelin": 69, "supplement": 69, "pep": 69, "emphas": 69, "modular": 69, "strongli": 69, "discourag": 69, "gen": 69, "r1bi": 69, "r3": 69, "r4": 69, "filter_rul": 69, "r5": 69, "trace": 69, "time_period": 69, "ny": 69, "cariabl": 69, "callback": 69, "p1": 69, "p2": 69, "validate_param": 69, "p3": 69, "param_a": 69, "param_b": 69, "intent": 69, "scope": 69, "inconsist": 69, "redefin": 69, "cognit": 69, "burden": 69, "lower_bound": 69, "upper_bound": 69, "_rule": 69, "new_constraint_rul": 69, "new_constraint": 69, "bahavior": 69, "capacity_constraint": 69, "underscor": 69, "finish_tim": 69, "total_tim": 69, "camelcas": 69, "snake_cas": 69, "2x": 69, "promot": 69, "semant": 69, "suit": 69, "doubli": 69, "primari": 69, "secondari": 69, "referenc": 69, "ob": 69, "slice": 69, "254": 69, "173": 69, "330": 69, "reorgan": 69, "wrangl": 69, "colleagu": 69, "draft": 69, "woodruff": 69, "davi": 69, "javier": 69, "salmeron": 69, "medrano": 69, "naval": 69, "postgradu": 69, "bethani": 69, "nicholson": 69, "siirola": 69, "michael": 69, "bynum": 69, "jasper": 69, "doorn": 69, "leon": 69, "lan": 69}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"index": [0, 69], "hand": 1, "On": 1, "optim": [1, 2, 6, 8, 12, 14, 15, 16, 18, 22, 26, 28, 35, 36, 37, 38, 39, 40, 42, 43, 44, 47, 48, 49, 50, 51, 54, 56, 58, 60, 62, 63, 65, 66, 68], "python": [1, 4], "get": 1, "start": 1, "help": 1, "us": [1, 12, 18, 22, 26, 37, 55, 60, 62, 63, 68, 69], "about": 1, "citat": 1, "1": [2, 5, 27, 32, 35, 39, 44, 62, 64], "mathemat": [2, 3, 4, 33, 34, 68], "what": 2, "A": [3, 4, 5, 7, 12, 27, 30, 37, 68], "first": [3, 20, 22], "product": [3, 4, 8, 9, 10, 11, 12, 15, 17, 18, 21, 26, 41, 52, 55, 63, 68], "plan": [3, 12, 23, 32, 52, 55, 63, 68], "problem": [3, 7, 8, 9, 10, 11, 12, 17, 18, 20, 22, 23, 24, 25, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 41, 44, 45, 46, 47, 48, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 68], "statement": [3, 23, 24, 25, 46, 63, 64, 68], "model": [3, 4, 5, 7, 12, 13, 14, 15, 18, 19, 20, 21, 23, 24, 25, 26, 27, 29, 31, 32, 35, 37, 38, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 62, 64, 68, 69], "data": [4, 7, 13, 14, 15, 17, 18, 22, 25, 31, 32, 35, 37, 40, 41, 42, 49, 50, 53, 57, 62, 64, 65, 66, 69], "driven": 4, "pyomo": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 52, 53, 55, 57, 60, 65, 66, 67, 68, 69], "preambl": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 46, 48, 52, 55, 57, 60, 66], "instal": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 46, 48, 52, 55, 57, 60, 62, 66], "solver": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 46, 48, 52, 55, 57, 60, 66, 68], "represent": 4, "The": [4, 5, 8, 12, 20, 42, 45, 47, 50, 59, 63, 64, 68], "For": 4, "expert": 4, "creat": [4, 5, 25, 53], "subclass": 4, "concretemodel": [4, 5, 69], "basic": 5, "step": 5, "import": [5, 18, 29, 35, 57, 62, 65, 66, 68], "2": [5, 6, 27, 32, 35, 39, 44, 62, 64], "object": [5, 10, 11, 23, 25, 45, 69], "3": [5, 16, 27, 32, 39, 62, 64], "decis": [5, 25], "variabl": [5, 25, 69], "4": [5, 28, 62, 64], "express": 5, "5": [5, 36, 62, 64], "6": [5, 43, 62], "constraint": [5, 23, 25, 29, 44, 45, 58, 62, 63, 69], "7": [5, 51], "solv": [5, 35, 62, 63], "8": [5, 54], "report": [5, 7, 25, 32], "solut": [5, 19, 25, 32, 37, 39, 44, 46, 52, 55, 57, 59, 60, 62, 63, 64, 65, 66], "pprint": 5, "access": 5, "valu": [5, 59], "pyo": [5, 69], "panda": [5, 32, 69], "linear": [6, 16, 37, 42, 45, 50], "extra": [7, 15, 19, 21, 23, 27, 31, 35, 37, 41, 46, 49, 64, 66], "materi": [7, 12, 15, 19, 21, 23, 27, 31, 35, 37, 41, 46, 49], "wine": 7, "qualiti": [7, 66], "predict": 7, "l_1": 7, "regress": [7, 13, 40], "descript": [7, 8, 17, 18, 20, 22, 29, 30, 33, 34, 35, 38, 39, 44, 48, 52, 53, 60, 62, 63, 65, 69], "mean": [7, 14, 15, 59, 64], "absolut": [7, 13, 14], "deviat": [7, 13, 14], "mad": [7, 14], "preliminari": [7, 66], "look": 7, "which": 7, "featur": [7, 42, 50], "influenc": 7, "lad": [7, 13, 40], "line": [7, 27], "fit": 7, "identifi": 7, "multivari": 7, "how": [7, 46], "do": 7, "perform": [7, 42, 50, 52], "bim": [8, 9, 10, 11, 12, 17, 18, 52, 55], "microchip": [8, 55], "build": [8, 44, 64], "matrix": 8, "reformul": [8, 30, 37, 45, 57], "canon": 8, "form": [8, 42, 62], "lo": [8, 30], "dual": [9, 37, 42, 50], "deriv": 9, "variant": [10, 11, 55, 64], "two": [10, 27, 61, 62, 63, 66], "fraction": 10, "addit": [10, 14, 29, 39], "fix": [10, 69], "cost": [10, 32, 34], "worst": [11, 15, 64], "case": [11, 15, 44, 62, 63, 64, 65], "minmax": 11, "function": [11, 50, 68], "maxim": [11, 15, 59], "lowest": 11, "possibl": 11, "profit": [11, 15, 59, 60], "demand": [12, 60, 62], "forecast": [12, 65], "acquisit": 12, "more": [12, 30], "parsimoni": 12, "least": [13, 40], "gener": [13, 37, 40, 53, 62, 63, 65], "visual": [13, 21, 25, 40, 53, 57, 69], "result": [13, 21, 32, 40, 41, 60], "portfolio": [14, 38, 48, 49, 58], "yfinanc": 14, "download": [14, 29], "histor": 14, "stock": [14, 37, 60], "price": [14, 41], "analysi": [14, 52, 57], "asset": 14, "scale": 14, "statist": 14, "daili": 14, "return": [14, 64], "risk": [14, 46, 47, 49, 64], "versu": [14, 64], "free": [14, 49, 53], "multi": [15, 26, 44, 69], "facil": [15, 20], "scenario": [15, 59, 62, 63, 65], "summari": [15, 59, 64], "mix": [16, 44], "integ": [16, 44, 55], "perturb": 17, "revisit": [18, 48], "implement": [18, 21, 23, 25, 26, 30, 42, 49, 50, 55, 65], "altern": 18, "block": [18, 69], "cryptarithm": 19, "puzzl": 19, "suggest": [19, 41], "exercis": [19, 21, 23, 29, 41, 46], "locat": 20, "milo": [20, 26, 57], "formul": [20, 21, 25, 33, 34, 37, 38, 42, 45, 48, 50, 53, 63], "second": [20, 45, 55], "option": [20, 39], "job": [21, 22], "shop": [21, 59], "schedul": [21, 22, 25, 33, 53], "exampl": [21, 37, 68], "task": 21, "decomposit": 21, "print": 21, "gantt": [21, 22], "chart": [21, 22], "applic": 21, "batch": [21, 68], "process": [21, 22], "singl": [21, 44, 45, 54, 56], "strategi": [21, 24, 27, 64], "multipl": [21, 44, 45], "overlap": 21, "ad": [21, 46, 62], "time": [21, 22, 29], "unit": [21, 66], "clean": 21, "out": [21, 22], "zero": 21, "wait": 21, "polici": [21, 35], "refer": [21, 37, 68], "specif": 21, "cleanout": 21, "comput": 21, "impact": 21, "machin": [22, 42, 50], "empir": 22, "rule": 22, "fifo": 22, "earliest": 22, "due": 22, "date": 22, "edd": 22, "shortest": 22, "spt": 22, "disjunct": [22, 23, 26], "program": [22, 26, 42, 68], "mainten": 23, "ramp": 23, "specifi": 23, "minimum": [23, 34], "number": [23, 30], "oper": [23, 32], "dai": 23, "between": [23, 30, 62], "period": 23, "recharg": 24, "an": [24, 29, 39, 40], "electr": 24, "vehicl": 24, "charg": 24, "station": 24, "inform": [24, 59], "rout": 24, "car": 24, "workforc": 25, "shift": 25, "set": [25, 42, 50, 55, 69], "paramet": [25, 49, 69], "master": 25, "categor": 25, "worker": 25, "store": 25, "manag": 25, "factori": 26, "strip": 27, "pack": 27, "statment": 27, "lower": 27, "upper": 27, "bound": [27, 69], "shelf": 27, "width": 27, "version": [27, 47], "up": [27, 59], "box": [27, 55], "rotat": 27, "place": 27, "dimens": 27, "advanc": 27, "topic": 27, "symmetri": [27, 53], "break": 27, "network": [28, 30, 35, 66], "cryptocurr": 29, "arbitrag": [29, 31], "search": 29, "librari": 29, "need": 29, "networkx": 29, "ccxt": 29, "avail": 29, "exchang": 29, "repres": 29, "direct": 29, "graph": [29, 31], "order": [29, 45, 55], "book": 29, "trade": 29, "find": 29, "have": 29, "opportun": 29, "brute": 29, "forc": 29, "simpl": 29, "cycl": 29, "capac": 29, "reader": 29, "real": 29, "from": [29, 37, 39, 60], "bibliograph": [29, 39, 44, 45, 46, 47, 49, 63, 64], "note": [29, 39, 44, 45, 46, 47, 49, 63, 64], "dinner": 30, "seat": [30, 62], "arrang": 30, "minim": [30, 32], "maximum": 30, "group": 30, "size": 30, "tabl": 30, "max": 30, "flow": [30, 34, 35, 65], "systemat": 30, "comparison": [30, 40], "algorithm": [30, 37], "forex": 31, "demonstr": 31, "triangular": 31, "displai": [31, 32, 69], "gasolin": 32, "distribut": [32, 39, 60, 62], "franchis": 32, "total": [32, 53], "deliveri": [32, 39], "entri": 32, "rate": [32, 49], "owner": 32, "share": [32, 45], "compar": [32, 35], "appendix": [32, 45, 67], "method": [32, 45, 60, 62], "manual": 32, "format": 32, "graphviz": 32, "exam": 33, "room": 33, "energi": [35, 57, 66], "dispatch": [35, 57, 66], "background": 35, "power": [35, 65], "physic": 35, "setup": 35, "code": [35, 69], "edg": 35, "structur": 35, "instanc": 35, "opf": 35, "strict": 35, "fossil": 35, "fuel": 35, "pt": 35, "three": 35, "convex": [36, 39, 40], "cut": 37, "pattern": 37, "known": [37, 69], "bilinear": [37, 39], "hybrid": 37, "jump": 37, "document": 37, "column": [37, 63], "wikipedia": 37, "woodwork": 37, "googl": 37, "sheet": 37, "markowitz": [38, 48, 58], "milk": 39, "pool": 39, "blend": 39, "wholesal": 39, "busi": 39, "usual": 39, "bui": 39, "truck": 39, "remot": 39, "supplier": 39, "why": [39, 41, 68], "ar": 39, "hard": 39, "approxim": [39, 60], "nonlinear": [39, 42, 50], "nlo": 39, "ipopt": 39, "conclud": 39, "remark": 39, "ordinari": 40, "squar": 40, "ol": 40, "refineri": 41, "shadow": 41, "cvxpy": 41, "crude": 41, "oil": 41, "feed": 41, "kerosin": 41, "so": 41, "high": 41, "support": [42, 50], "vector": [42, 50], "binari": [42, 47], "classif": 42, "read": [42, 50], "select": [42, 50], "train": [42, 50], "svm": [42, 50], "classifi": 42, "metric": [42, 50], "quadrat": [42, 44, 45], "primal": [42, 50], "kernel": [42, 50], "space": [42, 50], "trick": [42, 50], "polynomi": [42, 50], "conic": [43, 45, 47, 50], "design": [44, 49], "multilay": 44, "insul": 44, "analyt": [44, 60, 62], "n": 44, "layer": 44, "miqco": 44, "econom": [45, 57], "quantiti": 45, "usag": 45, "eoq": 45, "classic": 45, "item": 45, "hyperbol": 45, "cone": [45, 55], "as_domain": 45, "simplifi": 45, "rotated_quadrat": 45, "extend": 45, "resourc": 45, "test": 45, "larger": 45, "soco": 45, "luenberg": 46, "s": [46, 47, 64], "invest": 46, "wheel": 46, "simul": [46, 47, 52], "avers": [46, 49], "doe": 46, "chang": 46, "kelli": 47, "criterion": 47, "log": 47, "growth": [47, 49], "game": 47, "outcom": 47, "constrain": [47, 55, 57], "financi": 49, "effect": 49, "equiti": 49, "multipli": 49, "interest": 49, "extens": [49, 62], "radial": 50, "basi": 50, "account": 51, "uncertainti": [51, 55], "meet": 51, "realiti": 51, "robust": [52, 54, 55, 63], "via": 52, "actual": 52, "fleet": 53, "assign": 53, "flight": 53, "naiv": 53, "unimodular": 53, "aircraft": 53, "reduc": [53, 68], "riski": 53, "stage": [54, 56, 61, 62, 63, 66], "origin": 55, "copper": 55, "consumpt": 55, "counterpart": 55, "cardin": 55, "adversari": 55, "approach": 55, "budget": 55, "ball": 55, "environ": 55, "9": 56, "stochast": [56, 59, 62, 64, 65], "system": 57, "chanc": [57, 58, 62], "ed": 57, "understand": 57, "sensit": 57, "pop": 59, "net": 59, "expect": 59, "evm": 59, "vss": 59, "perfect": [59, 65], "evpi": 59, "seafood": 60, "center": 60, "explicit": 60, "determinist": [60, 62], "averag": [60, 62, 63], "sampl": [60, 63], "converg": 60, "saa": [60, 62, 63, 65], "10": 61, "airlin": 62, "alloc": 62, "attribut": 62, "its": [62, 64], "continu": 62, "uncorrel": 62, "correl": 62, "differ": 62, "type": 62, "tackl": 62, "farmer": 64, "recommend": 64, "plant": 64, "recours": 65, "action": 65, "imbal": 65, "nonzero": 65, "wind": 66, "curtail": 66, "commit": 66, "packag": 66, "assess": 66, "work": 67, "workflow": [68, 69], "monad": 68, "pure": 68, "composit": 68, "map": 68, "filter": 68, "functool": 68, "mayb": 68, "failur": 68, "wrap": 68, "transform": 68, "pyomomonad": 68, "reactor": 68, "builder": 68, "execut": 68, "alternt": 68, "syntax": 68, "style": 69, "guid": 69, "convent": 69, "namespac": 69, "instead": 69, "abstractmodel": 69, "rangeset": 69, "domain": 69, "rather": 69, "than": 69, "within": 69, "when": 69, "prefer": 69, "constraintlist": 69, "decor": 69, "improv": 69, "readabl": 69, "name": 69, "short": 69, "mai": 69, "all": 69, "cap": 69, "capit": 69, "tidi": 69, "dimension": 69, "acknowledg": 69}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinxcontrib.bibtex": 9, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["genindex", "intro", "notebooks/01/01.00", "notebooks/01/production-planning", "notebooks/01/production-planning-advanced", "notebooks/01/production-planning-basic", "notebooks/02/02.00", "notebooks/02/L1-regression-wine-quality", "notebooks/02/bim", "notebooks/02/bim-dual", "notebooks/02/bim-fractional", "notebooks/02/bim-maxmin", "notebooks/02/bim-rawmaterialplanning", "notebooks/02/lad-regression", "notebooks/02/mad-portfolio-optimization", "notebooks/02/multiproductionfaciliity_worstcase", "notebooks/03/03.00", "notebooks/03/bim-perturbed", "notebooks/03/bim-production-revisited", "notebooks/03/cryptarithms", "notebooks/03/facility-location", "notebooks/03/job-shop-scheduling", "notebooks/03/machine-scheduling", "notebooks/03/maintenance-planning", "notebooks/03/recharging-electric-vehicle", "notebooks/03/shift-scheduling", "notebooks/03/simple-production-model-gdp", "notebooks/03/strip-packing", "notebooks/04/04.00", "notebooks/04/cryptocurrency-arbitrage", "notebooks/04/dinner-seat-allocation", "notebooks/04/forex-arbitrage", "notebooks/04/gasoline-distribution", "notebooks/04/graph-coloring", "notebooks/04/mincost-flow", "notebooks/04/power-network", "notebooks/05/05.00", "notebooks/05/cutting-stock", "notebooks/05/markowitz_portfolio", "notebooks/05/milk-pooling", "notebooks/05/ols-regression", "notebooks/05/refinery-production", "notebooks/05/svm", "notebooks/06/06.00", "notebooks/06/building-insulation", "notebooks/06/economic-order-quantity", "notebooks/06/investment-wheel", "notebooks/06/kelly-criterion", "notebooks/06/markowitz_portfolio_revisited", "notebooks/06/optimal-growth-portfolios", "notebooks/06/svm-conic", "notebooks/07/07.00", "notebooks/07/bim-robustness-analysis", "notebooks/07/fleet-assignment", "notebooks/08/08.00", "notebooks/08/bim-robust-optimization", "notebooks/09/09.00", "notebooks/09/economicdispatch", "notebooks/09/markowitz_portfolio_with_chance_constraint", "notebooks/09/pop-up_shop", "notebooks/09/seafood", "notebooks/10/10.00", "notebooks/10/airline-seating", "notebooks/10/ccg", "notebooks/10/farmer", "notebooks/10/opf-ldr", "notebooks/10/opf-wind-curtailment", "notebooks/appendix/appendix", "notebooks/appendix/functional-programming-pyomo", "notebooks/appendix/pyomo-style-guide"], "filenames": ["genindex.md", "intro.md", "notebooks/01/01.00.md", "notebooks/01/production-planning.ipynb", "notebooks/01/production-planning-advanced.ipynb", "notebooks/01/production-planning-basic.ipynb", "notebooks/02/02.00.md", "notebooks/02/L1-regression-wine-quality.ipynb", "notebooks/02/bim.ipynb", "notebooks/02/bim-dual.ipynb", "notebooks/02/bim-fractional.ipynb", "notebooks/02/bim-maxmin.ipynb", "notebooks/02/bim-rawmaterialplanning.ipynb", "notebooks/02/lad-regression.ipynb", "notebooks/02/mad-portfolio-optimization.ipynb", "notebooks/02/multiproductionfaciliity_worstcase.ipynb", "notebooks/03/03.00.md", "notebooks/03/bim-perturbed.ipynb", "notebooks/03/bim-production-revisited.ipynb", "notebooks/03/cryptarithms.ipynb", "notebooks/03/facility-location.ipynb", "notebooks/03/job-shop-scheduling.ipynb", "notebooks/03/machine-scheduling.ipynb", "notebooks/03/maintenance-planning.ipynb", "notebooks/03/recharging-electric-vehicle.ipynb", "notebooks/03/shift-scheduling.ipynb", "notebooks/03/simple-production-model-gdp.ipynb", "notebooks/03/strip-packing.ipynb", "notebooks/04/04.00.md", "notebooks/04/cryptocurrency-arbitrage.ipynb", "notebooks/04/dinner-seat-allocation.ipynb", "notebooks/04/forex-arbitrage.ipynb", "notebooks/04/gasoline-distribution.ipynb", "notebooks/04/graph-coloring.ipynb", "notebooks/04/mincost-flow.ipynb", "notebooks/04/power-network.ipynb", "notebooks/05/05.00.md", "notebooks/05/cutting-stock.ipynb", "notebooks/05/markowitz_portfolio.ipynb", "notebooks/05/milk-pooling.ipynb", "notebooks/05/ols-regression.ipynb", "notebooks/05/refinery-production.ipynb", "notebooks/05/svm.ipynb", "notebooks/06/06.00.md", "notebooks/06/building-insulation.ipynb", "notebooks/06/economic-order-quantity.ipynb", "notebooks/06/investment-wheel.ipynb", "notebooks/06/kelly-criterion.ipynb", "notebooks/06/markowitz_portfolio_revisited.ipynb", "notebooks/06/optimal-growth-portfolios.ipynb", "notebooks/06/svm-conic.ipynb", "notebooks/07/07.00.md", "notebooks/07/bim-robustness-analysis.ipynb", "notebooks/07/fleet-assignment.ipynb", "notebooks/08/08.00.md", "notebooks/08/bim-robust-optimization.ipynb", "notebooks/09/09.00.md", "notebooks/09/economicdispatch.ipynb", "notebooks/09/markowitz_portfolio_with_chance_constraint.ipynb", "notebooks/09/pop-up_shop.ipynb", "notebooks/09/seafood.ipynb", "notebooks/10/10.00.md", "notebooks/10/airline-seating.ipynb", "notebooks/10/ccg.ipynb", "notebooks/10/farmer.ipynb", "notebooks/10/opf-ldr.ipynb", "notebooks/10/opf-wind-curtailment.ipynb", "notebooks/appendix/appendix.md", "notebooks/appendix/functional-programming-pyomo.ipynb", "notebooks/appendix/pyomo-style-guide.md"], "titles": ["Index", "Hands-On Optimization with Python", "1. Mathematical Optimization", "A first production planning problem", "A data-driven Pyomo Model", "A basic Pyomo model", "2. Linear Optimization", "Extra material: Wine quality prediction with \\(L_1\\) regression", "BIM production", "Dual of the BIM production problem", "BIM production variants", "BIM production for worst case", "BIM production using demand forecasts", "Least Absolute Deviation (LAD) Regression", "Mean Absolute Deviation (MAD) portfolio optimization", "Extra material: Multi-product facility production", "3. Mixed Integer Linear Optimization", "BIM production with perturbed data", "BIM production revisited", "Extra material: Cryptarithms puzzle", "Facility location problem", "Extra material: Job shop scheduling", "Machine Scheduling", "Extra material: Maintenance planning", "Recharging strategy for an electric vehicle", "Workforce shift scheduling", "Production model using disjunctions", "Extra material: Strip packing", "4. Network Optimization", "Cryptocurrency arbitrage search", "Dinner seating arrangement", "Extra material: Forex Arbitrage", "Gasoline distribution", "Exam room scheduling", "Minimum-Cost Flow Problem", "Extra material: Energy dispatch problem", "5. Convex Optimization", "Extra Material: Cutting Stock", "Markowitz portfolio optimization", "Milk pooling and blending", "Ordinary Least Squares (OLS) Regression", "Extra material: Refinery production and shadow pricing with CVXPY", "Support Vector Machines for Binary Classification", "6. Conic Optimization", "Optimal Design of Multilayered Building Insulation", "Economic Order Quantity", "Extra material: Luenberger\u2019s Investment Wheel", "The Kelly Criterion", "Markowitz portfolio optimization revisited", "Extra material: Optimal Growth Portfolios with Risk Aversion", "Training Support Vector Machines with Conic Optimization", "7. Accounting for Uncertainty: Optimization Meets Reality", "Robustness analysis of BIM production plan via simulations", "Fleet assignment problem", "8. Robust Optimization - Single Stage Problems", "Robust BIM microchip production problem", "9. Stochastic Optimization - Single Stage Problems", "Economic dispatch in energy systems", "Markowitz portfolio optimization with chance constraints", "Pop-up shop", "Stock optimization for seafood distribution center", "10. Two-Stage Problems", "Airline seat allocation problem", "Two-stage Production Planning", "Extra: The farmer\u2019s problem and its variants", "Optimal power flow problem with recourse actions", "Extra: Two-stage energy dispatch optimization with wind curtailment", "Appendix: Working with Pyomo", "Functional Programming with Pyomo", "Pyomo style guide"], "terms": {"welcom": [1, 69], "thi": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69], "repositori": [1, 7, 25, 57], "companion": [1, 5, 6, 16, 28, 36, 43, 54, 56, 61], "notebook": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 55, 57, 60, 63, 65, 66, 67, 68], "book": [1, 8, 15, 20, 22, 35, 42, 46, 47, 50, 57, 63, 65, 66, 69], "which": [1, 2, 3, 4, 5, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 35, 36, 37, 38, 39, 40, 42, 44, 45, 47, 48, 50, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "publish": 1, "cambridg": [1, 20], "univers": [1, 20, 25, 33], "press": [1, 20, 21], "2024": [1, 20], "introduc": [1, 2, 3, 4, 5, 9, 10, 11, 13, 18, 20, 21, 22, 23, 26, 27, 30, 32, 34, 35, 37, 39, 40, 42, 45, 46, 47, 49, 50, 57, 59, 62, 63, 66, 69], "concept": [1, 45, 46, 49, 50, 68], "tool": [1, 2, 5, 8, 13, 29, 30, 32, 40, 50, 53], "mathemat": [1, 5, 15, 20, 23, 29, 30, 32, 36, 37, 39, 44, 48, 49, 53, 59, 69], "exampl": [1, 2, 3, 4, 5, 6, 7, 8, 12, 16, 19, 20, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 36, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 64, 66, 69], "from": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 30, 31, 32, 33, 34, 35, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 61, 62, 63, 64, 65, 66, 68, 69], "rang": [1, 5, 7, 8, 12, 13, 14, 20, 21, 23, 24, 25, 27, 30, 33, 37, 38, 39, 42, 45, 46, 47, 48, 50, 52, 53, 55, 57, 58, 60, 63, 65, 66, 68, 69], "disciplin": [1, 41, 46, 47, 49], "The": [1, 2, 3, 6, 7, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 46, 48, 49, 52, 53, 55, 57, 58, 60, 62, 65, 66, 67, 69], "goal": [1, 2, 3, 5, 8, 18, 22, 27, 29, 30, 31, 33, 34, 35, 42, 57, 62, 66, 68], "ar": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 42, 44, 45, 46, 47, 49, 50, 51, 52, 53, 55, 57, 59, 62, 63, 64, 65, 66, 68, 69], "provid": [1, 4, 5, 7, 8, 12, 13, 14, 15, 18, 22, 23, 24, 29, 30, 31, 32, 35, 39, 40, 42, 45, 46, 47, 48, 49, 50, 57, 59, 62, 68, 69], "foundat": 1, "learn": [1, 7, 13, 30, 40, 42, 64], "demonstr": [1, 4, 5, 7, 8, 22, 24, 25, 29, 32, 35, 37, 39, 41, 42, 45, 46, 49, 50, 57, 62, 63, 65, 66, 67, 68], "practic": [1, 4, 5, 18, 27, 29, 32, 35, 37, 39, 42, 45, 46, 49, 50, 53, 57, 66, 68, 69], "reader": [1, 4, 7, 33, 63, 68], "develop": [1, 3, 4, 5, 26, 29, 32, 37, 39, 42, 45, 50, 69], "skill": [1, 2, 26], "need": [1, 2, 3, 4, 5, 8, 9, 10, 12, 14, 16, 18, 21, 23, 24, 25, 26, 27, 30, 33, 35, 37, 38, 39, 42, 43, 45, 50, 52, 53, 55, 57, 58, 60, 62, 63, 64, 65, 66, 68, 69], "build": [1, 4, 5, 18, 20, 25, 29, 37, 42, 43, 50, 52, 55, 62, 63, 66, 68, 69], "model": [1, 2, 6, 8, 9, 10, 16, 22, 28, 30, 33, 34, 36, 39, 43, 51, 52, 54, 56, 57, 58, 59, 60, 61, 63, 65, 66, 67], "solv": [1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 61, 64, 65, 66, 68, 69], "problem": [1, 2, 4, 5, 6, 13, 14, 15, 16, 19, 21, 26, 28, 36, 40, 42, 43, 49, 50, 51, 58, 66, 69], "state": [1, 3, 11, 18, 24, 29, 32, 35, 39, 55, 59, 68, 69], "art": [1, 7, 39], "languag": [1, 5, 41, 69], "solver": [1, 28, 40, 41, 42, 45, 47, 49, 50, 53, 58, 59, 62, 63, 64, 65], "make": [1, 2, 4, 8, 12, 14, 15, 16, 18, 21, 23, 24, 25, 29, 30, 32, 33, 35, 36, 37, 38, 41, 55, 57, 58, 63, 65, 68, 69], "extens": [1, 7, 20, 23, 26, 27, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 50, 55, 57, 58, 60, 68, 69], "pyomo": [1, 2, 3, 6, 16, 28, 36, 40, 43, 47, 54, 56, 58, 59, 61, 62, 63, 64], "complet": [1, 3, 18, 21, 22, 23, 29, 31, 39, 42, 45, 49, 50, 53, 62, 63, 66], "versatil": 1, "packag": [1, 3, 20, 21, 22, 27, 30, 44, 46, 47, 49, 57, 65], "ecosystem": 1, "mean": [1, 5, 6, 8, 9, 12, 13, 17, 18, 25, 29, 30, 34, 35, 37, 38, 40, 42, 45, 46, 47, 52, 53, 57, 58, 60, 62, 65, 66, 68], "decis": [1, 2, 3, 4, 6, 8, 9, 13, 14, 16, 17, 18, 21, 22, 23, 24, 26, 27, 30, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 57, 59, 60, 61, 62, 63, 65, 66, 68, 69], "variabl": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 55, 57, 59, 60, 61, 62, 63, 64, 65, 66, 68], "constraint": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 46, 47, 48, 49, 50, 52, 53, 55, 56, 57, 59, 60, 64, 65, 66, 68], "object": [1, 2, 3, 4, 6, 7, 8, 9, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "transform": [1, 4, 5, 8, 13, 17, 18, 23, 26, 37, 42, 47, 50, 69], "gener": [1, 2, 3, 4, 5, 6, 7, 8, 11, 14, 16, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 35, 38, 39, 44, 45, 48, 50, 51, 55, 57, 58, 60, 66, 68, 69], "solut": [1, 2, 3, 4, 8, 9, 10, 12, 13, 15, 16, 17, 18, 20, 22, 23, 24, 26, 27, 28, 29, 30, 33, 34, 35, 36, 38, 40, 41, 42, 45, 47, 48, 49, 50, 51, 53, 58, 68, 69], "open": [1, 2, 3, 5, 20, 25, 29], "sourc": [1, 3, 5, 20, 29, 30, 32, 35, 37, 39, 53, 66, 69], "commerci": [1, 3, 5, 20, 37, 45, 55], "all": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 20, 21, 22, 25, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 42, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68], "can": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "run": [1, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 42, 44, 46, 47, 48, 49, 52, 57, 60, 62, 66], "googl": [1, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "colab": [1, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "A": [1, 2, 6, 8, 13, 14, 15, 16, 17, 18, 21, 22, 23, 25, 26, 28, 29, 31, 32, 38, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 58, 59, 60, 62, 63, 69], "launch": 1, "icon": 1, "appear": [1, 3, 4, 5, 7, 10, 13, 18, 19, 26, 29, 30, 31, 37, 39, 42, 44, 46, 48, 50, 53, 59, 62, 68, 69], "top": [1, 6, 8, 13, 16, 21, 22, 29, 37, 38, 40, 42, 47, 48, 50, 58, 63], "page": 1, "look": [1, 9, 12, 14, 27, 29, 50, 57, 63], "rocket": 1, "indic": [1, 4, 8, 11, 13, 16, 18, 22, 23, 26, 27, 29, 32, 35, 37, 39, 42, 44, 49, 50, 53, 60, 62, 63, 65, 66, 69], "an": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 42, 44, 45, 46, 47, 48, 49, 50, 51, 53, 55, 57, 58, 59, 62, 63, 65, 66, 67, 68, 69], "execut": [1, 7, 21, 22, 29, 30, 31, 59], "document": [1, 55, 69], "select": [1, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 46, 48, 49, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "reopen": 1, "cell": [1, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 59, 60, 62, 65, 66, 68], "insid": [1, 29, 68], "perform": [1, 4, 5, 19, 20, 21, 22, 27, 29, 30, 46, 47, 51, 55, 59, 60, 62, 63, 64, 65, 66, 68], "ani": [1, 3, 4, 5, 6, 8, 13, 14, 15, 16, 18, 21, 22, 23, 24, 25, 27, 29, 30, 32, 33, 35, 37, 42, 45, 47, 49, 50, 59, 60, 62, 63, 64, 65, 68, 69], "necessari": [1, 4, 27, 28, 33, 39, 51, 57, 68], "instal": [1, 40, 41, 42, 45, 47, 49, 50, 53, 58, 59, 63, 64, 65, 68], "code": [1, 4, 5, 7, 8, 9, 12, 13, 17, 18, 19, 20, 24, 25, 27, 29, 30, 42, 45, 47, 49, 50, 63, 68], "within": [1, 5, 15, 20, 27, 29, 35, 55, 59, 63, 66, 68], "your": [1, 20, 23, 46, 62, 64], "journei": [1, 29], "first": [1, 2, 4, 5, 6, 8, 9, 10, 12, 14, 15, 18, 21, 23, 24, 26, 27, 28, 29, 30, 31, 32, 34, 35, 37, 38, 39, 42, 44, 45, 48, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "chapter": [1, 2, 5, 6, 15, 16, 18, 20, 22, 28, 36, 40, 43, 46, 48, 51, 53, 54, 56, 61, 63, 65, 66], "we": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "seek": [1, 2, 9, 42, 50, 62, 66], "feedback": [1, 69], "If": [1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 38, 39, 42, 44, 45, 46, 47, 48, 50, 52, 55, 57, 58, 60, 62, 63, 65, 66, 68, 69], "you": [1, 4, 8, 15, 20, 23, 27, 29, 35, 45, 48, 50, 55, 57, 58, 63, 64, 66, 69], "encount": [1, 4, 15, 58], "issu": [1, 14, 19, 21, 27, 29, 30, 37, 44, 63, 65], "have": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68, 69], "suggest": [1, 7, 25, 37, 49, 59, 69], "how": [1, 2, 3, 4, 8, 13, 17, 18, 20, 22, 23, 24, 25, 26, 27, 29, 30, 31, 37, 38, 39, 41, 42, 44, 45, 47, 49, 50, 51, 55, 58, 59, 60, 62, 63, 64, 65, 66, 67, 68], "better": [1, 27, 28, 29, 30, 32, 39, 42, 48, 51, 53, 63, 66, 69], "pleas": [1, 50, 65], "link": [1, 27, 29, 31, 39, 45, 53], "everi": [1, 2, 4, 5, 13, 14, 20, 21, 27, 29, 33, 34, 35, 37, 39, 47, 55, 57, 62, 63, 65, 66, 68], "github": [1, 20, 25], "cat": [1, 14, 49], "group": [1, 6, 8, 25, 32, 52, 57], "research": [1, 21, 27, 29, 37, 39, 45, 63], "educ": 1, "who": [1, 4, 14, 25, 30, 32, 37], "came": 1, "togeth": [1, 4, 18, 27, 42, 57, 59, 63, 65, 68, 69], "common": [1, 2, 4, 5, 8, 15, 20, 21, 22, 27, 29, 31, 32, 37, 39, 42, 45, 50, 62, 68, 69], "purpos": [1, 4, 21, 22, 35, 42, 45, 57, 62, 63, 65, 68], "materi": [1, 3, 4, 5, 6, 8, 16, 17, 18, 26, 28, 29, 36, 39, 43, 44, 52, 63, 69], "our": [1, 2, 5, 8, 12, 18, 21, 22, 25, 26, 29, 30, 31, 35, 36, 42, 44, 50, 51, 53, 55, 57, 58, 59, 63, 65, 66], "classroom": 1, "teach": [1, 64, 69], "hopefulli": [1, 39, 63], "find": [1, 2, 3, 7, 9, 13, 14, 15, 20, 22, 23, 24, 27, 28, 30, 31, 32, 33, 34, 37, 39, 42, 44, 46, 49, 53, 55, 57, 59, 60, 63, 64, 65, 68], "other": [1, 2, 3, 4, 5, 6, 8, 9, 13, 14, 15, 22, 23, 24, 25, 27, 29, 30, 31, 32, 33, 35, 37, 39, 41, 42, 44, 45, 46, 47, 49, 50, 55, 59, 62, 63, 66, 68, 69], "most": [1, 5, 6, 9, 15, 19, 21, 22, 23, 27, 29, 31, 32, 34, 35, 37, 39, 42, 47, 49, 53, 55, 57, 60, 63, 69], "importantli": [1, 57, 65], "those": [1, 3, 4, 8, 11, 12, 21, 27, 29, 34, 42, 50, 60, 62, 63, 65], "entri": [1, 31, 39, 42, 50, 62, 69], "world": [1, 2, 31, 36, 39, 46, 49, 51, 62], "data": [1, 3, 5, 12, 16, 20, 21, 24, 26, 27, 29, 30, 34, 39, 51, 52, 55, 59, 60, 63, 68], "rich": 1, "applic": [1, 2, 4, 5, 7, 22, 25, 26, 27, 29, 31, 32, 37, 39, 42, 44, 45, 49, 50, 53, 57, 63, 65, 68, 69], "krzysztof": 1, "postek": 1, "boston": 1, "consult": [1, 45, 64], "formerli": 1, "tu": 1, "delft": 1, "alessandro": 1, "zocca": 1, "vu": 1, "amsterdam": [1, 62], "joaquim": 1, "gromicho": 1, "ortec": 1, "jeffrei": 1, "kantor": 1, "notr": 1, "dame": 1, "wish": [1, 4, 14, 21, 39, 42, 62], "cite": [1, 29, 39, 45, 49], "work": [1, 5, 6, 8, 11, 20, 22, 25, 29, 30, 31, 37, 39, 42, 45, 46, 47, 49, 50, 57, 65, 68, 69], "postekzocca2024": 1, "titl": [1, 5, 14, 20, 22, 35, 37, 42, 46, 49, 50, 53, 62, 68], "author": 1, "year": [1, 12, 18, 45, 49, 52, 64, 69], "onlin": [1, 29, 39, 66], "url": [1, 37], "http": [1, 7, 20, 29, 31, 35, 37, 39, 42, 44, 45, 46, 47, 48, 49, 50, 57, 64, 65, 66, 68], "mobook": [1, 29, 35, 42, 50, 57, 65, 66], "io": [1, 12, 18, 20, 31, 52], "mo": [1, 29, 35, 42, 50, 57, 65, 66], "broad": 2, "term": [2, 3, 4, 5, 13, 17, 18, 20, 21, 25, 26, 29, 31, 32, 33, 37, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 53, 57, 59, 60, 63, 65, 66], "describ": [2, 3, 4, 6, 8, 12, 18, 21, 22, 23, 24, 25, 27, 29, 32, 34, 35, 37, 38, 41, 42, 44, 45, 48, 49, 57, 58, 59, 62, 66, 69], "wai": [2, 3, 4, 5, 8, 11, 13, 16, 20, 21, 22, 23, 28, 29, 30, 31, 32, 34, 35, 38, 39, 45, 46, 48, 49, 50, 53, 57, 58, 63, 65, 66, 68, 69], "them": [2, 4, 5, 8, 9, 16, 18, 24, 29, 30, 36, 38, 39, 49, 53, 55, 58, 62, 63, 65, 66], "us": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 59, 61, 64, 65, 66, 67], "dedic": [2, 55], "algorithm": [2, 3, 27, 29, 33, 45, 53, 63], "consist": [2, 5, 7, 13, 14, 20, 21, 25, 29, 31, 33, 35, 40, 42, 49, 50, 62, 68, 69], "three": [2, 4, 18, 21, 22, 25, 27, 31, 39, 49, 51, 59, 60, 62, 64, 68], "part": [2, 3, 21, 37, 42, 45, 50, 55, 63, 64, 65], "correspond": [2, 3, 4, 8, 9, 11, 12, 13, 14, 17, 18, 19, 22, 23, 25, 27, 29, 33, 35, 37, 42, 44, 45, 48, 50, 53, 55, 60, 62, 63, 65, 66, 69], "action": [2, 61, 66], "choic": [2, 4, 15, 21, 24, 26, 35, 37, 39, 42, 44, 57, 68, 69], "whether": [2, 8, 22, 24, 26, 27, 29, 31, 33, 35, 36, 44, 45, 53, 57, 63, 66], "new": [2, 4, 5, 7, 8, 13, 17, 21, 23, 25, 26, 27, 29, 30, 32, 35, 37, 39, 41, 42, 45, 48, 55, 59, 62, 63, 66, 68, 69], "manufactur": [2, 8, 17, 27, 34, 41, 63], "facil": [2, 6, 16, 21, 26, 27, 34, 39, 45], "suppli": [2, 4, 30, 32, 34, 35, 39, 57, 66], "rout": [2, 29, 51, 53, 62], "price": [2, 3, 4, 10, 11, 12, 18, 29, 31, 32, 37, 39, 49, 52, 59, 60, 62, 63, 64, 68, 69], "should": [2, 3, 8, 14, 15, 18, 22, 23, 24, 25, 26, 29, 33, 34, 36, 37, 39, 42, 47, 50, 53, 55, 57, 59, 63, 64, 65, 66, 68, 69], "sell": [2, 3, 11, 15, 18, 26, 29, 31, 32, 38, 39, 59, 60, 62, 63, 64], "product": [2, 5, 6, 16, 20, 23, 34, 35, 36, 37, 39, 42, 45, 46, 50, 51, 54, 57, 61, 64, 65, 66], "function": [2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 18, 19, 20, 21, 22, 25, 26, 27, 29, 30, 32, 33, 34, 36, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 53, 55, 57, 58, 60, 62, 63, 64, 65, 66, 67, 69], "evalu": [2, 13, 42, 50, 63], "specif": [2, 3, 5, 6, 8, 10, 13, 14, 15, 17, 20, 25, 29, 30, 34, 35, 37, 39, 41, 42, 45, 48, 53, 55, 57, 59, 60, 62, 63, 65, 67, 68, 69], "i": [2, 5, 6, 7, 8, 9, 12, 13, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 40, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 60, 62, 63, 65, 66, 69], "e": [2, 7, 18, 19, 21, 22, 25, 27, 29, 30, 32, 33, 34, 35, 37, 38, 40, 41, 42, 44, 45, 46, 47, 49, 50, 53, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "valu": [2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 60, 62, 63, 65, 66, 68, 69], "earlier": [2, 5, 10, 21, 42, 45, 48, 52, 57, 59], "For": [2, 3, 5, 8, 10, 14, 16, 18, 20, 21, 22, 24, 27, 29, 30, 31, 34, 35, 36, 37, 39, 41, 42, 44, 45, 46, 47, 49, 50, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68, 69], "specifi": [2, 4, 5, 8, 13, 21, 24, 27, 29, 30, 31, 34, 37, 38, 39, 42, 45, 46, 48, 50, 58, 66, 68, 69], "either": [2, 3, 4, 5, 20, 21, 22, 23, 24, 26, 27, 29, 35, 50, 59, 63, 65, 69], "maxim": [2, 3, 4, 5, 6, 8, 9, 10, 17, 18, 20, 23, 26, 29, 30, 31, 35, 37, 38, 39, 41, 46, 47, 48, 49, 55, 58, 60, 62, 63, 64, 68, 69], "minim": [2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 18, 20, 21, 22, 24, 25, 27, 29, 33, 34, 35, 37, 40, 42, 44, 45, 50, 52, 53, 55, 57, 64, 65, 66, 69], "In": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 18, 20, 21, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69], "oper": [2, 3, 15, 21, 22, 27, 29, 35, 37, 39, 41, 42, 44, 45, 53, 59, 62, 63, 65, 66, 68], "cost": [2, 3, 4, 5, 6, 11, 12, 14, 15, 18, 20, 26, 28, 29, 30, 31, 33, 35, 37, 39, 41, 44, 45, 52, 53, 57, 59, 60, 63, 64, 65, 66, 68], "number": [2, 3, 4, 5, 8, 9, 10, 13, 16, 17, 18, 19, 20, 22, 24, 25, 27, 29, 31, 33, 35, 37, 38, 40, 42, 43, 44, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 58, 59, 60, 61, 62, 63, 64, 65, 66, 69], "satisfi": [2, 3, 9, 15, 16, 18, 19, 20, 27, 29, 30, 31, 32, 34, 39, 42, 46, 47, 49, 57, 59, 62, 65], "custom": [2, 20, 21, 29, 32, 37, 39, 42, 51, 57, 62, 69], "restrict": [2, 16, 25, 30, 33, 35, 46, 49, 53, 55, 68, 69], "possibl": [2, 4, 5, 6, 9, 13, 15, 16, 17, 18, 19, 20, 21, 24, 27, 29, 30, 32, 33, 34, 35, 38, 39, 40, 42, 47, 50, 53, 55, 57, 58, 60, 62, 63, 64, 65, 66, 68, 69], "condit": [2, 3, 8, 15, 18, 23, 24, 26, 27, 29, 30, 39, 42, 44, 50, 55, 59, 64, 68, 69], "must": [2, 3, 5, 19, 21, 23, 26, 27, 29, 31, 32, 35, 38, 39, 44, 53, 63, 64, 65, 66, 68], "requir": [2, 3, 4, 8, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 37, 39, 45, 47, 52, 53, 57, 59, 62, 63, 64, 66, 68, 69], "maximum": [2, 3, 8, 11, 15, 18, 23, 24, 25, 29, 33, 34, 35, 39, 44, 47, 48, 49, 53, 55, 57, 63, 66, 68], "allow": [2, 4, 8, 18, 23, 24, 27, 29, 31, 32, 35, 41, 45, 48, 49, 53, 55, 57, 65, 68], "budget": [2, 12, 37, 52, 63], "demand": [2, 3, 4, 6, 18, 20, 26, 30, 32, 34, 35, 37, 39, 45, 51, 52, 57, 59, 63, 64, 65, 66, 68, 69], "import": [2, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 58, 59, 60, 63, 64, 69], "met": [2, 35, 39, 57], "capac": [2, 12, 18, 23, 24, 30, 34, 35, 41, 52, 57, 62, 66, 69], "warehous": [2, 18, 45, 51, 60, 69], "exceed": [2, 29, 30, 39, 57], "both": [2, 4, 5, 8, 12, 13, 17, 20, 23, 24, 26, 27, 29, 33, 35, 37, 38, 39, 42, 45, 47, 50, 61, 62, 63], "express": [2, 3, 4, 7, 8, 9, 10, 11, 12, 16, 18, 19, 22, 26, 29, 30, 32, 34, 35, 39, 41, 42, 44, 45, 46, 49, 50, 52, 55, 57, 60, 64, 65, 66, 68, 69], "defin": [2, 4, 5, 8, 9, 12, 13, 14, 16, 20, 22, 25, 26, 27, 32, 33, 35, 37, 39, 40, 41, 42, 45, 46, 50, 53, 55, 57, 62, 63, 65, 66, 68, 69], "feasibl": [2, 5, 8, 9, 17, 20, 30, 35, 37, 41, 44, 46, 47, 49, 53, 60, 63, 65, 66], "region": [2, 8, 20, 32, 35], "set": [2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 44, 45, 46, 47, 48, 49, 52, 53, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "candid": [2, 3, 7, 21, 37], "meet": [2, 3, 5, 12, 18, 22, 25, 29, 30, 32, 35, 37, 39, 43, 52, 57, 59, 65, 66], "best": [2, 5, 7, 8, 29, 30, 35, 44, 57, 63, 66, 69], "global": [2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 46, 48, 52, 55, 57, 60, 62, 66, 69], "optimum": [2, 39, 41, 44], "among": [2, 3, 7, 11, 14, 15, 21, 22, 26, 31, 32, 33, 47, 48, 49, 62, 64, 65, 69], "appli": [2, 4, 5, 18, 24, 35, 37, 39, 42, 44, 45, 49, 65, 66, 68], "type": [2, 3, 4, 5, 6, 8, 12, 16, 17, 19, 21, 25, 29, 30, 35, 37, 42, 45, 50, 52, 55, 57, 65, 66, 68], "relat": [2, 5, 18, 23, 26, 29, 33, 50, 55, 57, 62, 63, 65], "fundament": [2, 14, 39, 68], "question": [2, 8, 15, 22, 29, 42, 45, 51, 59, 64, 65], "translat": [2, 4, 5, 18, 22, 29, 32, 37, 44], "real": [2, 4, 5, 7, 13, 16, 21, 30, 31, 35, 36, 37, 40, 46, 47, 49, 51, 53, 55, 57, 59, 62, 63, 65], "abstract": [2, 4, 8, 68], "represent": [2, 21, 42, 44, 50], "Not": [2, 29], "aspect": [2, 6, 8, 14, 16, 28, 36, 43, 54, 56, 61], "taken": [2, 29, 33, 63, 65, 69], "account": [2, 10, 18, 23, 24, 29, 31, 35, 43, 46, 47, 55, 59, 60, 63, 65, 66, 68], "so": [2, 3, 4, 5, 8, 9, 13, 18, 21, 23, 24, 25, 27, 29, 30, 35, 36, 37, 38, 39, 40, 42, 44, 48, 50, 51, 53, 55, 57, 62, 63, 66, 68], "mani": [2, 3, 4, 8, 16, 19, 20, 22, 23, 27, 29, 30, 31, 33, 37, 42, 45, 46, 47, 49, 50, 52, 53, 55, 59, 62, 63, 65, 66, 69], "made": [2, 3, 10, 12, 18, 20, 24, 29, 52, 59, 63, 66], "step": [2, 3, 4, 8, 9, 12, 14, 15, 18, 21, 29, 45, 46, 52, 53, 62, 63, 68, 69], "typic": [2, 21, 35, 57, 59, 63, 68, 69], "signific": [2, 5, 8, 41, 45, 46, 47, 49, 50], "impact": [2, 7, 39, 51, 64], "approach": [2, 5, 7, 8, 10, 13, 14, 17, 19, 20, 22, 26, 27, 30, 33, 37, 39, 44, 46, 49, 57, 63, 65, 68], "There": [2, 5, 18, 19, 22, 25, 26, 29, 30, 35, 37, 39, 44, 45, 59, 63, 68, 69], "multipl": [2, 3, 12, 15, 18, 27, 29, 31, 32, 34, 37, 39, 69], "equival": [2, 5, 8, 18, 20, 22, 33, 42, 44, 45, 53, 55, 58, 62, 69], "formul": [2, 3, 4, 6, 8, 9, 11, 13, 14, 15, 16, 18, 22, 23, 26, 27, 28, 29, 30, 32, 35, 36, 39, 40, 44, 49, 51, 55, 57, 59, 60, 62, 65, 66, 69], "conceptu": 2, "same": [2, 3, 4, 5, 10, 11, 13, 14, 15, 18, 19, 21, 22, 25, 27, 29, 30, 31, 32, 33, 34, 40, 42, 45, 46, 50, 53, 55, 57, 60, 63, 65, 66, 68, 69], "comput": [2, 4, 5, 7, 8, 14, 15, 18, 22, 23, 29, 30, 31, 35, 37, 39, 42, 45, 46, 49, 50, 52, 59, 62, 64, 65, 66, 68, 69], "complex": [2, 4, 5, 15, 21, 22, 23, 29, 31, 37, 68, 69], "mai": [2, 3, 4, 5, 10, 11, 12, 15, 16, 17, 18, 20, 21, 23, 27, 29, 31, 32, 35, 37, 39, 41, 42, 45, 46, 50, 52, 55, 57, 58, 64, 68], "differ": [2, 3, 5, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 27, 29, 30, 32, 33, 34, 35, 37, 39, 40, 41, 42, 44, 45, 48, 49, 50, 51, 53, 55, 57, 59, 60, 63, 64, 65, 66, 69], "interpret": [2, 4, 15, 33, 41], "s": [2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 42, 43, 44, 45, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "after": [2, 5, 13, 23, 29, 30, 31, 40, 47, 53, 55, 59, 63, 64, 65, 66, 68], "ha": [2, 3, 4, 5, 7, 10, 12, 14, 18, 21, 22, 24, 25, 26, 27, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 55, 57, 59, 60, 62, 63, 65, 66, 68], "back": [2, 13, 23, 29, 31, 33, 42, 50, 63, 68], "origin": [2, 3, 4, 5, 8, 9, 10, 13, 14, 17, 25, 27, 30, 35, 37, 39, 45, 48], "These": [2, 4, 15, 25, 27, 29, 34, 35, 39, 42, 45, 47, 49, 53, 57, 59, 62, 68, 69], "treat": [2, 21, 30, 39, 51, 66], "continu": [2, 12, 18, 22, 23, 39, 42, 44, 50, 52, 60, 66], "process": [2, 4, 23, 29, 39, 41, 42, 45, 50, 53, 55, 68, 69], "sequenti": 2, "final": [2, 4, 5, 12, 14, 21, 22, 23, 29, 31, 39, 45, 62, 65], "turn": [2, 3, 16, 21, 30, 36, 42, 50, 53, 57, 66], "out": [2, 3, 23, 24, 27, 29, 30, 32, 36, 37, 53, 57, 65, 66], "impract": [2, 29], "adjust": [2, 4, 14, 29, 35, 41, 57, 62, 65, 66], "certain": [2, 16, 29, 30, 32, 42, 45, 50, 55, 57, 62, 66], "desir": [2, 3, 12, 18, 25, 30, 36, 52, 68], "properti": [2, 8, 30, 36, 44, 46, 48, 49, 57], "cannot": [2, 8, 12, 16, 21, 22, 25, 29, 33, 35, 44, 52, 53, 60, 62, 63, 66], "effici": [2, 10, 14, 21, 27, 29, 30, 48, 49, 50, 55, 69], "perhap": [2, 19, 32, 37], "re": [2, 69], "includ": [2, 5, 6, 14, 16, 18, 19, 21, 22, 23, 24, 27, 28, 29, 31, 32, 36, 37, 39, 41, 42, 44, 45, 46, 47, 49, 50, 53, 55, 57, 58, 62, 63, 64, 65, 66, 67, 68, 69], "well": [2, 5, 7, 13, 14, 19, 22, 27, 36, 37, 44, 46, 47, 60, 64, 69], "except": [2, 20, 25, 33, 66, 68, 69], "mathematician": 2, "studi": [2, 15, 21, 27, 29, 37, 39, 44, 57, 60, 69], "alwai": [2, 4, 10, 12, 17, 24, 35, 38, 40, 42, 46, 47, 48, 50, 51, 55, 58, 62, 68], "flaw": 2, "challeng": [2, 8, 19, 27, 31, 37, 39, 42], "follow": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 45, 46, 47, 49, 50, 51, 52, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68, 69], "given": [2, 3, 4, 5, 7, 8, 9, 11, 13, 14, 15, 17, 18, 20, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 35, 37, 39, 42, 44, 45, 46, 47, 49, 50, 51, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "f": [2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "x": [2, 4, 6, 7, 8, 10, 11, 12, 13, 15, 16, 17, 18, 20, 23, 24, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 47, 48, 50, 52, 53, 55, 57, 58, 59, 60, 63, 64, 65, 66, 68, 69], "mathbb": [2, 6, 8, 13, 16, 17, 18, 26, 35, 37, 38, 40, 42, 45, 46, 47, 49, 50, 55, 57, 58, 59, 60, 62, 65, 66], "r": [2, 4, 6, 8, 13, 14, 16, 18, 19, 21, 22, 24, 25, 27, 29, 31, 32, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 58, 59, 60, 62, 63, 64, 65, 66, 68], "subseteq": [2, 16, 33, 35, 53], "n": [2, 6, 7, 8, 9, 13, 16, 17, 18, 19, 20, 21, 23, 24, 25, 27, 29, 30, 31, 32, 33, 35, 37, 38, 39, 40, 42, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 60, 62, 63, 69], "being": [2, 5, 6, 8, 33, 35, 38, 39, 50, 53, 66], "y": [2, 4, 7, 8, 9, 13, 14, 18, 19, 20, 23, 24, 26, 27, 29, 30, 31, 32, 34, 35, 38, 39, 40, 41, 42, 44, 45, 47, 48, 49, 50, 55, 57, 59, 60, 63, 64, 66, 68, 69], "geq": [2, 6, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 60, 62, 63, 65, 66, 68], "foral": [2, 4, 7, 11, 12, 13, 14, 15, 18, 19, 20, 22, 23, 24, 25, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 42, 45, 46, 48, 49, 50, 53, 55, 57, 59, 62, 63, 65, 66], "least": [2, 6, 7, 12, 18, 22, 24, 33, 35, 36, 37, 39, 52, 53, 63, 64], "good": [2, 4, 5, 7, 15, 20, 27, 29, 33, 34, 38, 46, 49, 59, 63, 64, 69], "similarli": [2, 8, 13, 18, 35, 40], "chang": [2, 4, 10, 14, 15, 21, 23, 24, 27, 29, 30, 31, 32, 33, 35, 38, 39, 40, 41, 48, 51, 53, 55, 57, 58, 62, 63, 65, 68, 69], "last": [2, 12, 18, 22, 23, 24, 38, 39, 52, 53, 55, 64, 66], "leq": [2, 3, 4, 8, 9, 10, 11, 12, 14, 15, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 57, 58, 59, 62, 63, 65, 66, 69], "case": [2, 3, 4, 5, 7, 8, 13, 16, 20, 21, 25, 26, 27, 29, 30, 32, 37, 38, 39, 40, 42, 46, 47, 49, 50, 55, 57, 59, 60, 66, 68, 69], "refer": [2, 3, 4, 6, 8, 13, 16, 20, 24, 27, 29, 32, 34, 39, 40, 42, 47, 50, 65, 69], "begin": [2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "align": [2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "min": [2, 6, 7, 8, 9, 11, 13, 14, 16, 18, 20, 22, 24, 25, 27, 29, 30, 32, 33, 34, 35, 37, 39, 40, 42, 44, 45, 46, 50, 53, 55, 57, 59, 60, 63, 65, 66, 69], "quad": [2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 53, 58, 59, 60, 62, 63, 65, 68, 69], "text": [2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "t": [2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "end": [2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "lead": [2, 14, 17, 18, 19, 20, 21, 22, 26, 29, 36, 39, 42, 44, 50, 55, 57, 63, 66, 69], "techniqu": [2, 7, 11, 13, 21, 22, 23, 26, 32, 42, 45, 49, 57, 63, 65], "introductori": [2, 61], "present": [2, 4, 5, 7, 8, 13, 14, 24, 29, 31, 32, 35, 37, 39, 40, 41, 42, 46, 47, 48, 49, 50, 53, 62, 64, 66, 68, 69], "simpl": [2, 3, 4, 5, 12, 21, 26, 30, 31, 36, 37, 39, 41, 42, 45, 50, 55, 68, 69], "context": [2, 15, 25, 33, 34, 58, 63, 66], "plan": [2, 4, 5, 10, 11, 15, 16, 18, 24, 25, 27, 45, 51, 59, 61], "explain": [2, 7, 35, 39, 50, 57, 66], "structur": [2, 4, 8, 17, 26, 28, 29, 30, 37, 44, 62, 63, 65, 66, 68, 69], "formal": [2, 16], "implement": [2, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 22, 24, 27, 28, 29, 32, 35, 36, 37, 38, 39, 40, 43, 44, 45, 46, 51, 54, 56, 57, 58, 59, 61, 62, 63, 68, 69], "second": [2, 4, 5, 10, 13, 18, 21, 27, 29, 31, 32, 33, 35, 37, 38, 39, 42, 50, 60, 61, 62, 63, 64, 65, 66], "also": [2, 3, 4, 5, 8, 11, 12, 14, 15, 18, 20, 22, 23, 25, 29, 30, 35, 36, 38, 39, 41, 42, 45, 53, 55, 58, 62, 63, 65, 66, 69], "serv": [2, 4, 5, 20, 34, 53, 63], "tutori": [2, 25, 37, 46, 47, 69], "lastli": [2, 3, 62, 63, 66], "discuss": [2, 32, 42, 45, 50, 51, 63], "some": [2, 3, 4, 5, 7, 8, 13, 16, 21, 23, 27, 29, 30, 32, 33, 35, 39, 40, 41, 42, 44, 46, 47, 49, 50, 55, 57, 63, 65, 66, 68, 69], "advanc": [2, 3, 5, 23, 39, 45, 51, 63, 65, 66], "featur": [2, 4, 5, 6, 8, 13, 16, 20, 21, 22, 23, 27, 34, 39, 40, 47, 49, 60, 62, 68, 69], "third": [2, 4, 5, 32], "go": [2, 6, 8, 13, 14, 16, 21, 28, 30, 35, 36, 39, 40, 43, 51, 53, 54, 56, 63, 64, 65, 68], "next": [2, 3, 4, 5, 6, 7, 8, 12, 15, 16, 18, 21, 22, 23, 25, 28, 29, 30, 32, 34, 36, 38, 43, 46, 50, 51, 53, 54, 56, 57, 60, 64, 65, 66], "about": [2, 6, 8, 16, 20, 24, 28, 29, 30, 36, 43, 51, 54, 56, 57, 59, 62, 63, 65], "linear": [2, 3, 5, 7, 8, 10, 11, 12, 13, 14, 15, 17, 19, 20, 22, 23, 26, 29, 31, 35, 36, 39, 40, 41, 55, 57, 60, 61, 62, 63, 65], "compani": [3, 6, 8, 12, 17, 18, 34, 39, 45, 51, 52, 53, 55, 63], "produc": [3, 4, 7, 8, 10, 12, 15, 17, 21, 23, 26, 29, 31, 32, 35, 37, 39, 42, 46, 47, 52, 53, 55, 57, 63, 65, 66, 68], "two": [3, 4, 5, 6, 8, 12, 13, 14, 16, 17, 19, 20, 21, 23, 25, 26, 29, 30, 31, 32, 33, 37, 39, 42, 45, 47, 50, 53, 55, 56, 57, 59, 60, 65, 68, 69], "version": [3, 4, 5, 10, 18, 20, 30, 35, 39, 45, 53, 54, 55, 63, 65, 66, 69], "each": [3, 4, 5, 8, 9, 12, 13, 14, 18, 19, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 42, 46, 47, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "raw": [3, 5, 8, 12, 18, 26, 29, 35, 39, 42, 50, 52, 57, 63, 65, 66], "10": [3, 4, 5, 7, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 27, 29, 30, 31, 32, 33, 34, 35, 37, 39, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 57, 59, 60, 62, 63, 64, 65, 66, 68, 69], "per": [3, 8, 10, 12, 14, 18, 23, 24, 25, 26, 29, 32, 34, 37, 44, 45, 52, 60, 63, 64, 65], "gram": [3, 18, 42, 50], "special": [3, 4, 11, 12, 13, 16, 28, 30, 37, 40, 45, 62, 69], "labor": [3, 4, 26, 63, 68], "finish": [3, 12, 18, 21, 22, 23, 26, 37, 52, 53, 69], "u": [3, 4, 5, 14, 18, 23, 29, 34, 42, 44, 45, 46, 49, 50, 53, 55, 57, 63, 68, 69], "higher": [3, 14, 26, 29, 39, 42, 47, 50, 52, 57, 59, 63, 65], "270": [3, 4, 5, 26, 29, 63, 66, 68], "unit": [3, 4, 5, 10, 12, 14, 15, 18, 23, 24, 26, 29, 31, 32, 34, 35, 39, 44, 45, 47, 52, 57, 58, 59, 60, 62, 63, 64, 65, 68], "one": [3, 4, 5, 6, 8, 9, 13, 14, 15, 17, 18, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 37, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 62, 63, 64, 65, 66], "hour": [3, 4, 21, 24, 25, 26, 53, 63], "b": [3, 4, 5, 6, 7, 8, 13, 15, 16, 18, 19, 21, 22, 25, 26, 29, 32, 34, 35, 37, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 60, 62, 63, 65, 66, 68, 69], "due": [3, 4, 12, 14, 18, 29, 35, 38, 39, 51, 52, 55, 59, 62, 64, 65, 69], "market": [3, 4, 14, 15, 29, 31, 39, 46, 47, 49, 62, 63, 64], "limit": [3, 5, 12, 18, 20, 21, 24, 25, 26, 29, 32, 35, 37, 39, 41, 44, 46, 49, 52, 57, 63, 65, 66, 69], "40": [3, 4, 5, 7, 24, 25, 26, 29, 32, 33, 37, 44, 45, 46, 59, 62, 63, 64, 68, 69], "week": [3, 25, 29, 33, 62], "v": [3, 4, 5, 14, 20, 21, 24, 29, 30, 33, 34, 35, 39, 42, 45, 46, 50, 53, 57, 63, 65, 66, 68, 69], "lower": [3, 4, 5, 12, 14, 21, 29, 31, 32, 37, 39, 40, 55, 59, 62, 64, 65, 69], "unlimit": [3, 4, 26, 37, 63], "210": [3, 4, 5, 26, 62, 63, 64, 68], "9": [3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 15, 17, 19, 20, 21, 22, 23, 24, 25, 27, 29, 30, 32, 34, 35, 37, 39, 41, 42, 45, 50, 51, 52, 53, 55, 62, 63, 66, 68], "1": [3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 33, 34, 37, 38, 40, 41, 42, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 61, 63, 65, 66, 68, 69], "summar": [3, 4, 25, 32, 35, 39, 42, 50, 59, 62, 63, 64], "tabl": [3, 4, 18, 21, 22, 24, 26, 27, 31, 42, 46, 52, 53, 55, 59, 60, 62, 64, 69], "g": [3, 4, 8, 14, 18, 20, 22, 27, 29, 30, 31, 32, 33, 34, 35, 39, 40, 42, 44, 45, 50, 53, 55, 60, 65, 66, 68], "hr": [3, 4, 24, 53], "2": [3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 33, 34, 37, 38, 40, 41, 42, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 63, 65, 66, 68, 69], "weekli": [3, 25], "avail": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 59, 60, 62, 63, 66, 68], "inventori": [3, 12, 18, 29, 45, 52, 59, 60], "shelf": 3, "life": [3, 22, 30, 36, 44, 53], "order": [3, 4, 10, 12, 18, 21, 22, 25, 30, 32, 35, 37, 41, 42, 43, 50, 52, 53, 59, 63], "left": [3, 7, 8, 9, 10, 12, 13, 21, 22, 23, 24, 25, 27, 30, 32, 37, 39, 40, 42, 44, 45, 47, 49, 50, 52, 53, 57, 60, 62, 63, 65], "over": [3, 4, 10, 11, 14, 18, 21, 23, 25, 29, 30, 35, 37, 39, 41, 42, 45, 47, 50, 52, 59, 62, 63, 64, 68, 69], "discard": 3, "detail": [3, 8, 20, 25, 42, 44, 50, 59], "resourc": [3, 4, 15, 21, 25, 27, 29, 30, 37, 52, 64, 65, 68], "amount": [3, 4, 12, 15, 16, 17, 18, 21, 22, 25, 29, 31, 32, 34, 38, 39, 51, 52, 55, 57, 58, 60, 63, 64, 65, 69], "80": [3, 4, 5, 26, 29, 32, 35, 41, 47, 49, 50, 63, 64, 66, 68], "50": [3, 4, 5, 9, 14, 18, 24, 26, 29, 31, 32, 35, 37, 39, 42, 44, 45, 52, 55, 60, 62, 63, 64, 66, 68, 69], "100": [3, 4, 5, 10, 18, 19, 20, 22, 24, 26, 29, 31, 32, 35, 37, 38, 39, 41, 42, 45, 47, 49, 50, 52, 55, 57, 60, 62, 63, 64, 65, 66, 68, 69], "want": [3, 14, 17, 18, 20, 29, 32, 33, 38, 40, 42, 48, 55, 58, 62, 63, 69], "its": [3, 5, 7, 8, 9, 13, 14, 20, 22, 30, 34, 37, 40, 42, 45, 50, 55, 63, 65, 68, 69], "gross": [3, 46, 47, 49], "profit": [3, 4, 5, 6, 8, 9, 10, 17, 23, 26, 29, 32, 37, 39, 41, 55, 62, 63, 64, 68, 69], "much": [3, 8, 12, 13, 17, 18, 23, 24, 27, 30, 33, 37, 44, 47, 51, 63, 65, 66], "abov": [3, 4, 6, 8, 11, 12, 13, 14, 17, 18, 22, 23, 24, 29, 30, 32, 33, 35, 37, 40, 44, 45, 46, 48, 49, 50, 52, 55, 57, 60, 62, 63, 65, 69], "optim": [3, 4, 5, 9, 10, 11, 13, 17, 20, 21, 23, 24, 25, 27, 29, 30, 31, 32, 33, 34, 41, 45, 46, 52, 53, 55, 57, 59, 61, 67, 69], "reformul": [3, 10, 13, 14, 44, 46, 47, 49, 50, 55, 62], "involv": [3, 5, 6, 8, 11, 21, 31, 39, 42, 45, 46, 47, 49], "few": [3, 4, 5, 29, 32, 33, 42, 62, 68], "crucial": [3, 35], "element": [3, 4, 5, 8, 25, 30, 32, 42, 44, 47, 50, 65, 68, 69], "start": [3, 5, 7, 8, 13, 14, 18, 21, 22, 23, 24, 27, 29, 31, 33, 37, 49, 55, 62, 63], "point": [3, 4, 7, 8, 13, 16, 20, 23, 27, 29, 34, 39, 40, 41, 42, 45, 47, 50, 55, 60, 62, 66, 69], "list": [3, 4, 8, 14, 19, 21, 24, 25, 26, 29, 30, 31, 33, 35, 37, 42, 44, 46, 49, 50, 52, 53, 57, 60, 62, 63, 65, 68, 69], "relev": [3, 4, 18, 20, 27, 29, 66, 68, 69], "hand": [3, 4, 8, 9, 17, 20, 24, 25, 29, 30, 31, 42, 50, 55, 57, 59], "quantiti": [3, 8, 11, 12, 18, 34, 35, 37, 39, 43, 51, 52, 55, 63], "modifi": [3, 5, 17, 20, 21, 23, 29, 31, 42, 55, 57, 62, 65, 66, 68, 69], "achiev": [3, 11, 14, 23, 25, 38, 42, 50, 65, 68], "outcom": [3, 15, 32, 42, 46, 50, 57, 59, 63], "while": [3, 5, 8, 9, 12, 14, 17, 18, 20, 21, 24, 25, 26, 29, 33, 34, 35, 37, 42, 48, 49, 50, 51, 52, 53, 55, 57, 59, 62, 63, 65, 66], "stage": [3, 5, 27, 39, 46, 47, 60, 64, 65, 68, 69], "prove": [3, 8], "redund": [3, 69], "later": [3, 4, 5, 15, 21, 24, 27, 45, 47, 66, 69], "creat": [3, 12, 13, 14, 15, 19, 21, 22, 23, 27, 29, 30, 31, 33, 37, 39, 42, 45, 46, 49, 50, 57, 59, 62, 63, 64, 68, 69], "comprehens": [3, 7, 42, 50], "below": [3, 5, 9, 11, 12, 14, 17, 20, 21, 24, 29, 30, 35, 37, 39, 42, 44, 45, 46, 50, 55, 57, 60, 62, 63, 66, 69], "symbol": [3, 14, 22, 29, 31, 32, 49, 59, 68, 69], "descript": [3, 15, 21, 32, 42, 51, 55, 66], "upper": [3, 4, 5, 9, 12, 14, 21, 22, 23, 24, 29, 32, 33, 37, 38, 39, 40, 44, 45, 52, 55, 60, 68, 69], "bound": [3, 4, 5, 9, 14, 19, 21, 22, 23, 24, 26, 29, 30, 31, 33, 37, 38, 39, 42, 44, 53, 55, 57, 63, 64, 66, 68], "known": [3, 4, 5, 7, 13, 14, 19, 21, 22, 23, 27, 33, 38, 39, 40, 42, 44, 45, 47, 49, 50, 53, 57, 59, 63, 64, 65, 66], "x_m": [3, 5, 60], "0": [3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "x_a": [3, 5], "x_b": [3, 5], "y_u": [3, 5], "y_v": [3, 5], "measur": [3, 7, 10, 14, 23, 24, 25, 29, 39, 42, 50, 51], "max": [3, 4, 7, 8, 9, 10, 11, 14, 15, 17, 21, 22, 23, 24, 25, 26, 27, 29, 35, 37, 38, 39, 41, 42, 44, 46, 47, 48, 50, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "equal": [3, 5, 6, 7, 8, 10, 12, 15, 16, 23, 25, 26, 27, 29, 30, 32, 33, 34, 38, 39, 40, 41, 44, 45, 46, 47, 49, 53, 55, 57, 59, 60, 62, 63, 65, 66], "between": [3, 4, 5, 8, 10, 13, 14, 20, 21, 24, 25, 27, 29, 31, 32, 34, 35, 36, 38, 39, 40, 42, 44, 46, 47, 48, 50, 53, 57, 64, 65, 66, 68, 69], "revenu": [3, 4, 5, 10, 11, 41, 59, 62, 64, 68], "written": [3, 4, 5, 15, 42, 45, 58, 59, 62, 68, 69], "As": [3, 4, 5, 8, 14, 18, 21, 25, 29, 30, 31, 39, 42, 45, 46, 50, 53, 59, 60, 63, 66, 69], "shown": [3, 5, 39, 42, 45, 46, 69], "here": [3, 4, 5, 10, 12, 13, 21, 22, 24, 25, 26, 29, 31, 39, 40, 42, 45, 46, 47, 49, 52, 53, 55, 57, 58, 59, 62, 63, 66, 68, 69], "algebra": [3, 5, 19, 41, 42, 45], "combin": [3, 4, 5, 18, 19, 29, 39, 44, 53, 57, 63, 65, 68, 69], "name": [3, 4, 5, 9, 10, 12, 13, 14, 15, 17, 18, 20, 21, 22, 24, 25, 29, 30, 32, 37, 40, 41, 42, 48, 50, 59, 60, 62, 65, 66], "when": [3, 4, 5, 7, 8, 12, 13, 16, 20, 21, 22, 23, 24, 25, 29, 31, 32, 35, 38, 39, 41, 42, 43, 45, 46, 47, 50, 57, 59, 60, 63, 64, 65, 66, 67, 68], "place": [3, 4, 29, 30, 31, 35, 39, 45, 46, 59, 68, 69], "break": [3, 4, 29, 33, 53, 57, 63, 66], "up": [3, 4, 12, 16, 17, 18, 19, 21, 23, 29, 37, 39, 42, 46, 47, 50, 52, 56, 57, 62, 63, 64], "longer": [3, 20, 21, 30, 45, 50, 53, 57, 62, 68], "smaller": [3, 4, 10, 16, 27, 51, 57], "simplifi": [3, 5, 24, 27, 50, 62, 68, 69], "relationship": [3, 5, 13, 22, 24, 25, 27, 29, 31, 44, 45, 46, 69], "inequ": [3, 6, 8, 9, 39, 47, 55, 65], "overal": [3, 8, 15, 25, 39, 44], "now": [3, 4, 5, 7, 8, 12, 14, 18, 20, 21, 24, 25, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 42, 45, 46, 47, 48, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68], "readi": [3, 29, 31, 45, 50, 63], "full": [3, 7, 13, 20, 23, 24, 32, 37, 39, 40, 42, 44, 49, 50, 55, 62, 63, 69], "canon": [3, 6, 38], "nonumb": [3, 4, 30], "textbook": [3, 20, 63, 64], "customari": [3, 8, 50], "under": [3, 4, 5, 14, 15, 18, 20, 25, 26, 31, 42, 52, 57, 59, 62, 63, 64, 68], "clearli": [3, 4, 7, 18, 20, 23, 25, 39, 53, 63, 66], "distinguish": [3, 29, 66, 69], "paramet": [3, 4, 5, 18, 21, 23, 32, 33, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 50, 51, 55, 57, 59, 60, 62, 63, 65, 66, 68], "might": [3, 15, 16, 27, 29, 31, 33, 35, 36, 39, 42, 51, 59, 65, 68], "letter": [3, 19, 45, 63], "throughout": [3, 5, 8, 29, 63, 69], "websit": 3, "howev": [3, 4, 8, 13, 15, 16, 17, 18, 20, 28, 29, 30, 31, 33, 35, 36, 39, 42, 44, 45, 48, 49, 50, 53, 55, 57, 59, 62, 63, 65, 66, 69], "stick": 3, "convent": [3, 5, 6, 8, 57, 65, 66], "onli": [3, 4, 7, 8, 9, 16, 18, 20, 21, 24, 25, 26, 27, 29, 30, 32, 33, 35, 37, 39, 42, 45, 49, 53, 55, 57, 59, 62, 63, 64, 65, 69], "explicitli": [3, 8, 17, 29, 30, 31, 50, 53, 62, 64, 69], "domain": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 48, 52, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68], "vector": [3, 6, 8, 11, 12, 13, 35, 36, 38, 40, 41, 43, 58, 62, 63], "minimum": [3, 11, 12, 14, 16, 21, 24, 25, 28, 29, 33, 35, 37, 39, 44, 53, 62, 64], "even": [3, 5, 20, 25, 29, 30, 39, 42, 48, 50, 53, 62, 63, 65, 66], "like": [3, 4, 8, 9, 11, 12, 14, 18, 29, 30, 31, 32, 37, 39, 42, 50, 52, 62, 63, 65, 66], "immedi": [3, 21, 29], "clear": [3, 9, 17, 36, 57, 63, 69], "what": [3, 8, 15, 21, 22, 25, 29, 31, 39, 41, 43, 46, 47, 51, 55, 57, 59, 62, 63, 64, 66, 68], "exactli": [3, 14, 33, 34, 35, 45, 50, 51, 53, 55, 62, 63, 66], "where": [3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 35, 37, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 57, 59, 60, 62, 63, 65, 66, 68, 69], "come": [3, 4, 14, 15, 30, 36, 42, 50, 63], "plai": [3, 8, 36, 46, 50, 53, 63], "thei": [3, 5, 8, 16, 18, 22, 24, 29, 30, 31, 32, 36, 37, 39, 42, 49, 51, 53, 57, 62, 63, 65, 66, 68, 69], "procedur": [3, 37, 55, 63], "long": [3, 4, 14, 16, 22, 25, 29, 46, 47, 60, 63, 69], "standard": [3, 5, 6, 8, 13, 14, 22, 35, 39, 41, 42, 50, 58, 62, 69], "fashion": [3, 4, 53], "practition": [3, 49], "often": [3, 4, 16, 21, 28, 32, 35, 51, 63, 66, 69], "boil": 3, "down": [3, 17, 23, 30, 35, 47, 62, 63, 64], "pass": [3, 4, 5, 18, 20, 21, 24, 28, 42, 50, 68], "softwar": [3, 26], "regardless": [3, 4, 8, 12, 18, 29, 46, 52, 60], "wa": [3, 5, 7, 14, 25, 29, 30, 32, 35, 36, 37, 39, 45, 46, 47, 48, 49, 53, 55, 59, 63, 65], "stori": [3, 46, 47], "behind": 3, "To": [3, 5, 8, 18, 21, 22, 23, 24, 25, 27, 29, 30, 35, 37, 39, 42, 44, 45, 49, 50, 53, 55, 57, 59, 60, 62, 63, 65, 66, 68], "do": [3, 4, 8, 20, 23, 25, 29, 30, 31, 33, 35, 39, 41, 45, 53, 55, 57, 62, 63, 65, 66, 68, 69], "interfac": [3, 4, 5, 14, 45, 69], "commun": [3, 5, 7, 20, 25, 27, 64], "adopt": [3, 8, 26, 32, 42, 44, 47, 55], "python": [3, 5, 8, 13, 17, 20, 21, 25, 29, 30, 32, 37, 40, 41, 42, 45, 50, 53, 57, 66, 68, 69], "base": [3, 7, 12, 13, 19, 21, 26, 29, 32, 35, 40, 41, 42, 47, 49, 50, 51, 52, 57, 63, 65, 68, 69], "carri": [3, 24, 35], "ll": [4, 39], "revisit": [4, 16, 25, 43, 61], "time": [4, 5, 6, 8, 14, 18, 20, 23, 24, 25, 26, 27, 30, 31, 33, 35, 36, 37, 39, 40, 42, 45, 46, 49, 50, 51, 52, 53, 57, 59, 62, 63, 65, 66, 68, 69], "capabl": [4, 7, 26, 39, 55], "scale": [4, 7, 29, 30, 35, 37, 39, 42, 57, 60, 62, 63, 66], "enabl": [4, 5, 28, 29, 45, 50, 68], "vari": [4, 12, 38, 50, 52, 55, 57, 64], "addit": [4, 6, 7, 12, 15, 18, 21, 23, 25, 27, 37, 42, 45, 47, 49, 50, 59, 62, 63, 66, 68, 69], "compon": [4, 5, 8, 13, 14, 18, 22, 26, 38, 45, 50, 58, 69], "index": [4, 5, 8, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 27, 29, 30, 31, 32, 35, 37, 39, 40, 41, 42, 44, 45, 49, 50, 52, 53, 57, 59, 62, 64, 65, 68], "essenti": [4, 22, 29, 30, 37, 42, 50, 53, 55, 63], "scalabl": [4, 6], "maintain": [4, 5, 8, 27, 29, 45, 66, 69], "more": [4, 5, 8, 10, 11, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 31, 32, 35, 37, 39, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68, 69], "analysi": [4, 7, 8, 12, 13, 21, 29, 32, 42, 46, 47, 50, 51, 53, 55, 62, 69], "examin": [4, 7, 17, 49], "identifi": [4, 5, 16, 18, 24, 27, 29, 31, 34, 37, 39, 42, 44, 45, 47, 50, 62, 66, 69], "underli": [4, 40, 63], "check": [4, 8, 29, 31, 38, 39, 45, 48, 50, 51, 58, 65, 66, 68, 69], "doe": [4, 15, 21, 23, 25, 27, 29, 30, 35, 37, 40, 42, 45, 50, 55, 62, 66], "quiet": 4, "high": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 39, 42, 44, 49, 50, 52, 55, 57, 59, 60, 63, 65, 66, 69], "test": [4, 5, 19, 21, 29, 35, 37, 42, 49, 50, 68, 69], "verifi": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 46, 48, 50, 52, 53, 55, 57, 59, 60, 62, 66], "store": [4, 5, 18, 21, 22, 29, 30, 32, 35, 42, 45, 50, 52, 59, 60, 63, 65, 66, 68, 69], "sy": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "modul": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "pip": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "dev": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66], "null": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66], "highspi": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 39, 40, 41, 42, 52, 53, 59, 60, 62, 63, 64, 65, 66], "appsi_high": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 39, 40, 41, 42, 53, 55, 59, 60, 62, 63, 64, 65, 66], "environ": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "pyo": [4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "solverfactori": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "assert": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 55, 57, 60], "basic": [4, 16, 17, 21, 27, 42, 55, 65, 68, 69], "previou": [4, 5, 9, 12, 15, 18, 28, 29, 35, 42, 45, 50, 51, 63], "were": [4, 18, 27, 30, 35, 42, 49, 62, 65], "distinct": [4, 22, 29], "evid": [4, 20], "compris": [4, 21, 23, 25, 31, 37, 40, 59, 68, 69], "abbrevi": [4, 29, 68], "m": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "factor": [4, 7, 20, 31, 42, 44, 48, 50, 55, 62, 65, 69], "attribut": [4, 5, 7, 14, 29, 35, 37, 45, 65, 68, 69], "built": [4, 20, 57], "librari": [4, 5, 8, 13, 21, 30, 32, 33, 40, 41, 44, 45, 47, 49, 50, 69], "handl": [4, 23, 26, 45, 68], "tabular": [4, 5], "sever": [4, 5, 6, 7, 11, 16, 19, 24, 26, 28, 29, 36, 37, 39, 42, 49, 57, 69], "option": [4, 5, 14, 21, 27, 29, 33, 41, 42, 50, 63, 65, 68, 69], "would": [4, 7, 8, 12, 15, 17, 18, 19, 21, 25, 26, 29, 31, 32, 33, 35, 39, 42, 45, 48, 49, 50, 52, 53, 55, 57, 59, 62, 63, 64, 65, 66, 68], "appropri": [4, 5, 42, 50], "task": [4, 16, 20, 24, 29, 30, 32, 37, 42, 53], "nest": [4, 37, 63, 68, 69], "dictionari": [4, 18, 21, 29, 34, 35, 37, 42, 45, 50, 53, 57, 63, 69], "column": [4, 5, 7, 12, 14, 15, 18, 20, 22, 24, 25, 29, 30, 31, 32, 35, 39, 42, 45, 49, 50, 52, 53, 62, 64, 66, 69], "show": [4, 5, 7, 9, 12, 13, 14, 18, 20, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 33, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 51, 52, 53, 55, 57, 59, 60, 62, 63, 66, 68, 69], "repres": [4, 6, 8, 18, 19, 22, 23, 25, 31, 33, 34, 35, 37, 39, 42, 44, 45, 46, 47, 49, 50, 57, 59, 68, 69], "kei": [4, 5, 8, 14, 20, 21, 29, 32, 33, 34, 35, 37, 40, 46, 49, 52, 53, 57, 59, 60, 63, 65, 66, 68, 69], "outermost": 4, "inner": [4, 42, 50], "float": [4, 30, 42, 50, 52, 60, 69], "none": [4, 5, 7, 20, 21, 27, 29, 30, 32, 34, 35, 40, 42, 45, 47, 50, 52, 57, 66, 68], "print": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 22, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68], "item": [4, 21, 30, 32, 34, 35, 37, 50, 53, 57, 59, 60, 65, 66, 69], "consum": [4, 21, 35, 57, 65, 69], "8s": [4, 29, 49], "row": [4, 5, 7, 8, 22, 29, 31, 35, 42, 53, 63, 66, 69], "label": [4, 7, 13, 15, 24, 27, 29, 31, 32, 33, 34, 35, 37, 39, 40, 41, 42, 44, 45, 50, 52, 53, 57, 60, 66, 69], "4s": 4, "By": [4, 5, 7, 14, 30, 31, 32, 55, 69], "rearrang": [4, 42], "straightforward": [4, 18, 55, 69], "becom": [4, 8, 9, 14, 19, 20, 22, 25, 29, 38, 39, 41, 42, 45, 47, 49, 50, 57, 58, 59, 60, 65, 66], "collect": [4, 5, 6, 7, 11, 13, 15, 20, 21, 27, 31, 32, 33, 35, 40, 42, 50, 62, 63, 69], "compar": [4, 7, 8, 13, 14, 19, 20, 22, 29, 30, 37, 39, 40, 42, 45, 47, 50, 59, 60, 62, 64, 66], "adapt": [4, 15, 49, 57, 62, 63, 65], "let": [4, 7, 8, 9, 11, 12, 15, 19, 20, 21, 25, 27, 29, 30, 33, 34, 35, 37, 38, 39, 44, 45, 47, 50, 52, 55, 57, 58, 59, 62, 63, 65, 68], "cal": [4, 50], "p": [4, 11, 12, 18, 23, 24, 26, 33, 35, 37, 39, 41, 42, 44, 46, 47, 49, 50, 52, 53, 57, 58, 60, 62, 65, 66, 68], "respect": [4, 5, 8, 14, 18, 21, 26, 27, 29, 30, 32, 34, 35, 37, 39, 42, 46, 55, 57, 62, 63, 64, 66, 68], "x_r": [4, 39], "y_p": 4, "denot": [4, 8, 12, 15, 18, 19, 21, 23, 26, 27, 29, 30, 31, 35, 37, 39, 40, 49, 53, 57, 62, 65, 69], "constrain": [4, 12, 15, 16, 29, 35, 39, 45, 46, 49], "zero": [4, 13, 19, 29, 35, 37, 40, 41, 42, 44, 45, 50, 52, 60, 63, 65, 66], "b_r": 4, "b_p": 4, "b_q": 4, "don": [4, 8, 29, 57, 66, 69], "insert": [4, 5, 32, 45, 47], "larger": [4, 8, 20, 27, 30, 33, 37, 42, 47, 50, 53, 59], "than": [4, 5, 8, 10, 12, 15, 16, 17, 20, 21, 23, 24, 25, 27, 29, 30, 32, 33, 35, 37, 38, 39, 42, 46, 47, 49, 50, 52, 53, 55, 57, 59, 60, 62, 63, 65], "ever": [4, 42, 50], "design": [4, 5, 14, 19, 22, 27, 32, 39, 40, 42, 43, 66, 68], "caus": [4, 5, 39, 68], "ignor": [4, 35, 42, 50, 57], "befor": [4, 13, 20, 21, 22, 30, 33, 39, 40, 42, 46, 53, 57, 59, 60, 62, 63, 65, 66], "sum_": [4, 7, 12, 13, 14, 15, 18, 20, 23, 25, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 53, 57, 58, 59, 62, 63, 65, 66, 69], "c_p": 4, "c_r": 4, "a_": [4, 15, 25, 29, 31, 37], "put": [4, 42, 59, 63, 65], "piec": [4, 21, 37], "flexibl": [4, 32, 35, 36, 63, 68], "particular": [4, 14, 16, 21, 25, 30, 33, 35, 37, 39, 40, 45, 55, 62, 63, 65, 66, 69], "hold": [4, 5, 8, 9, 12, 14, 16, 18, 24, 27, 29, 35, 45, 52, 57, 59, 60, 62, 63, 65, 66], "scienc": [4, 5, 25, 32, 44, 45, 46, 62, 64], "see": [4, 5, 20, 21, 25, 26, 30, 31, 40, 44, 45, 46, 48, 50, 55, 57, 60, 63, 64, 65, 66, 68], "facilit": [4, 8, 14, 69], "construct": [4, 5, 7, 9, 14, 18, 21, 29, 32, 37, 38, 42, 44, 45, 50, 53, 65, 66, 68, 69], "initi": [4, 7, 8, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 27, 29, 30, 31, 32, 33, 35, 37, 38, 39, 40, 41, 42, 46, 48, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "assign": [4, 5, 15, 16, 19, 22, 24, 25, 29, 30, 31, 32, 33, 37, 41, 42, 50, 51, 66], "decor": [4, 5, 8, 9, 25, 32, 62], "declar": [4, 5, 35, 65, 66, 69], "return": [4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "form": [4, 6, 22, 23, 36, 44, 45, 51, 58, 60, 63, 65, 68], "param": [4, 7, 12, 14, 15, 18, 21, 22, 23, 24, 25, 27, 29, 30, 32, 39, 42, 52, 57, 60, 65, 68, 69], "omit": [4, 69], "emb": 4, "extern": [4, 21, 44, 55], "directli": [4, 5, 7, 14, 22, 23, 32, 35, 44, 45, 50, 59], "effect": [4, 5, 21, 23, 34, 44, 46, 47, 53, 68], "keep": [4, 12, 18, 25, 33, 35, 39, 50, 53, 63, 65, 69], "shorter": 4, "remov": [4, 6, 8, 15, 29, 37, 42, 53], "overhead": 4, "blur": 4, "boundari": [4, 27, 69], "statement": [4, 30, 32, 62], "edit": [4, 37, 46], "locat": [4, 16, 24, 29, 32, 34, 39, 41, 42, 57, 59, 69], "portion": [4, 49], "therebi": 4, "significantli": [4, 8, 27, 30, 39, 42, 50], "improv": [4, 5, 25, 39, 42, 44, 45, 47, 64], "maintainabi": 4, "concern": [4, 30], "overkil": 4, "small": [4, 5, 8, 12, 25, 26, 29, 30, 31, 33, 34, 37, 39, 41, 63, 65, 69], "consider": [4, 14, 15, 21, 25, 32, 42, 59, 69], "note": [4, 5, 9, 11, 12, 13, 14, 15, 17, 18, 20, 24, 25, 32, 33, 34, 35, 37, 40, 41, 42, 48, 55, 57, 60, 62, 66, 68, 69], "becaus": [4, 8, 11, 18, 21, 25, 27, 29, 30, 32, 35, 37, 39, 42, 45, 50, 53, 55, 57, 63, 65, 68, 69], "take": [4, 5, 7, 8, 9, 11, 16, 17, 18, 21, 22, 23, 24, 27, 29, 31, 33, 35, 38, 39, 42, 45, 47, 48, 50, 51, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68], "logic": [4, 5, 8, 12, 17, 18, 19, 22, 26, 29, 52, 55, 69], "def": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "coeffici": [4, 6, 7, 8, 13, 15, 17, 18, 29, 40, 42, 44, 50, 55, 62, 63], "cp": [4, 41], "cr": 4, "argumentn": 4, "var": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 48, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "fix": [4, 5, 6, 7, 12, 14, 24, 25, 27, 30, 32, 35, 40, 44, 45, 46, 47, 49, 57, 60, 62, 63, 64, 65, 66, 68], "done": [4, 5, 21, 22, 39, 42, 59, 63], "parlanc": 4, "sometim": [4, 36, 46, 58], "call": [4, 8, 24, 27, 29, 31, 32, 35, 38, 39, 40, 42, 48, 49, 50, 53, 59, 62, 66, 68], "rule": [4, 12, 29, 39, 45, 60, 61, 63, 65, 69], "lambda": [4, 18, 19, 20, 21, 22, 25, 27, 29, 31, 35, 39, 42, 44, 46, 47, 49, 50, 52, 53, 55, 57, 60, 65, 66, 68, 69], "argument": [4, 5, 18, 33, 39, 42, 50, 55, 62, 63, 65, 68, 69], "member": [4, 30, 32], "tupl": [4, 5, 8, 21, 25, 29, 37, 68], "quicksum": [4, 12, 18, 30, 33, 52, 55], "accept": [4, 5, 21, 22, 29, 32, 42, 46, 49, 57, 63, 69], "success": [4, 7, 47, 68, 69], "sum": [4, 5, 7, 8, 9, 13, 14, 15, 19, 20, 21, 22, 23, 25, 27, 29, 30, 31, 32, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "sens": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 46, 47, 48, 49, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69], "Then": [4, 22, 33, 34, 35, 42, 50, 53, 55, 62, 65, 66, 68], "associ": [4, 21, 24, 26, 32, 34, 35, 37, 40, 68, 69], "manner": [4, 32], "block": [4, 25, 37, 39, 44, 45, 46, 47, 49, 50, 55, 63, 68], "materials_us": [4, 68], "report": [4, 14, 18, 29, 30, 35, 37, 39, 42, 50, 52, 55, 57, 60, 62, 68, 69], "access": [4, 21, 32, 35, 45, 57, 68], "iter": [4, 5, 18, 29, 55, 63, 68, 69], "pprint": [4, 69], "nproduct": 4, "nresourc": 4, "3": [4, 7, 11, 12, 14, 15, 18, 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 33, 34, 35, 37, 38, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 58, 59, 60, 63, 66, 69], "size": [4, 5, 7, 12, 13, 14, 22, 24, 25, 27, 29, 32, 37, 38, 39, 40, 42, 45, 47, 48, 49, 50, 52, 53, 55, 57, 59, 60, 62, 69], "dimen": [4, 21, 32, 33], "a_index": 4, "true": [4, 5, 7, 12, 13, 14, 15, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 39, 40, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 55, 57, 60, 62, 63, 64, 65, 66, 68, 69], "6": [4, 7, 9, 10, 12, 14, 18, 19, 20, 22, 23, 24, 25, 27, 29, 30, 31, 32, 33, 34, 35, 37, 41, 42, 44, 45, 46, 49, 50, 52, 53, 55, 57, 58, 59, 63, 64, 66], "5": [4, 7, 9, 10, 12, 14, 18, 19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 52, 53, 55, 58, 63, 65, 66, 68, 69], "default": [4, 5, 8, 14, 21, 24, 25, 29, 32, 33, 39, 42, 50, 66, 69], "mutabl": [4, 14, 25, 27, 32, 57, 60, 69], "fals": [4, 5, 8, 14, 20, 21, 22, 25, 26, 30, 32, 33, 35, 37, 39, 40, 42, 45, 50, 52, 53, 55, 57, 60, 62, 63, 65, 66, 68], "stale": [4, 5, 32, 40], "activ": [4, 5, 25, 26, 29, 32, 35, 55, 66], "bodi": [4, 5, 32, 50], "inf": [4, 5, 63], "12": [4, 5, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 20, 21, 23, 24, 25, 27, 29, 30, 31, 32, 35, 37, 42, 45, 47, 48, 50, 53, 55, 59, 62, 63, 69], "date": [4, 5, 13, 14, 18, 25, 26, 31, 42, 49], "2023": [4, 5, 18, 20, 23, 24, 25, 26, 27, 29, 30, 31, 42, 57], "05": [4, 5, 12, 18, 22, 24, 25, 26, 29, 31, 37, 39, 42, 44, 45, 46, 48, 49, 50, 52, 55, 58, 60, 62, 65, 66], "16": [4, 5, 7, 18, 22, 24, 25, 26, 29, 30, 31, 37, 39, 42, 44, 45, 48, 49, 50, 53, 62, 64, 65, 66], "git": [4, 5, 18, 25, 26, 31, 42], "hash": [4, 5, 18, 25, 26, 31, 42], "594fa5a9d": [4, 5, 18, 25, 26, 31, 42], "copyright": [4, 5, 18, 25, 26, 31, 42], "c": [4, 5, 6, 8, 9, 11, 15, 16, 18, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 34, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 53, 55, 58, 59, 60, 62, 63, 64, 65, 68, 69], "mit": [4, 5, 18, 25, 26, 31, 42], "licenc": [4, 5, 18, 25, 26, 31, 42], "2600": [4, 5, 26, 63], "20": [4, 5, 7, 14, 18, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 33, 37, 44, 45, 46, 48, 49, 53, 55, 57, 62, 63, 64, 66, 68, 69], "60": [4, 5, 7, 24, 26, 29, 35, 49, 59, 64, 65, 66, 68], "740": [4, 5, 55, 63, 68], "experienc": [4, 7], "class": [4, 5, 6, 8, 11, 22, 25, 27, 28, 30, 42, 50, 62, 68, 69], "extend": [4, 14, 27, 39, 42, 46, 49, 66, 68, 69], "productionmodel": 4, "inherit": 4, "method": [4, 5, 13, 14, 22, 23, 26, 28, 29, 37, 42, 44, 50, 63, 65, 68, 69], "displai": [4, 5, 7, 8, 12, 13, 14, 15, 18, 22, 24, 25, 27, 29, 30, 34, 37, 39, 40, 41, 42, 44, 45, 48, 50, 52, 53, 58, 59, 62, 63, 64, 65, 68], "__init__": [4, 42, 50, 68], "self": [4, 42, 50, 68], "instanc": [4, 5, 8, 12, 20, 30, 34, 37, 42, 47, 50, 57, 59, 66, 68, 69], "contain": [4, 5, 13, 20, 25, 26, 35, 37, 40, 42, 50, 55, 57, 66, 68, 69], "inform": [4, 14, 15, 20, 21, 22, 25, 29, 32, 37, 47, 52, 57, 63, 64], "super": 4, "save": [4, 29, 32, 44, 55], "flag": [4, 21, 63, 68], "monitor": [4, 29], "statu": [4, 5, 20, 30, 48, 55, 58, 60, 68], "build_model": [4, 69], "buildth": 4, "integr": [5, 17, 41, 53, 67, 68, 69], "program": [5, 7, 15, 19, 23, 27, 37, 43, 45, 46, 49, 50, 62, 64, 67, 69], "It": [5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 34, 35, 39, 44, 45, 46, 48, 52, 55, 57, 60, 63, 65, 66], "user": [5, 29, 30, 41, 42, 50, 64, 69], "varieti": [5, 35], "project": [5, 39, 42, 45, 50, 67, 69], "ti": 5, "vendor": 5, "constantli": 5, "evolv": 5, "through": [5, 13, 21, 29, 32, 34, 35, 42, 44, 53, 57, 65, 68], "contribut": [5, 7, 14, 19], "parti": [5, 29, 32], "direct": [5, 9, 13, 27, 31, 32, 34, 35, 37, 45, 53, 55], "simplic": [5, 33, 35], "reus": [5, 18, 21], "anoth": [5, 11, 12, 16, 18, 19, 21, 22, 29, 31, 38, 41, 42, 50, 53, 55, 58, 66], "write": [5, 21, 31, 32, 35, 55, 62, 67, 69], "driven": [5, 51], "unfamiliar": [5, 69], "current": [5, 8, 15, 24, 26, 29, 32, 39, 46, 51, 55, 63, 66, 68], "offer": [5, 8, 18, 20, 29, 31, 32, 46, 47, 57, 63, 69], "readabl": [5, 8, 25, 32], "rel": [5, 8, 24, 25, 26, 29, 31, 48, 63, 68], "recent": [5, 37, 39, 44, 46, 47, 49, 69], "intend": [5, 25, 69], "cloud": 5, "person": [5, 7, 21, 45], "session": [5, 20], "mix": [5, 6, 17, 23, 26, 36, 37, 39, 55, 57], "integ": [5, 6, 7, 12, 17, 18, 19, 20, 23, 26, 30, 36, 37, 39, 57, 59, 62, 69], "assum": [5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 35, 37, 38, 39, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 60, 62, 63, 65, 66, 68, 69], "been": [5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 60, 62, 64, 66, 68, 69], "previous": [5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 35, 38, 39, 44, 46, 47, 48, 50, 52, 53, 57, 60, 62, 65, 66, 68, 69], "suitabl": [5, 22, 33, 42, 50, 68], "coin": 5, "OR": [5, 21, 23, 27, 45], "cbc": [5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 35, 52, 53, 59, 60, 62, 63, 64, 65, 66, 68], "glpk": 5, "cplex": [5, 20, 55], "gurobi": [5, 20, 30, 45, 55], "mosek": [5, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 57], "elsewher": [5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 35, 38, 39, 44, 46, 48, 52, 57, 60, 66, 69], "via": [5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 38, 39, 44, 46, 48, 50, 51, 57, 60, 66], "appsi": [5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 35, 52, 60, 66], "commonli": [5, 14, 26, 39, 42, 50, 69], "although": [5, 16, 30, 55], "mention": [5, 8, 11], "again": [5, 18, 29, 30, 31, 35, 42, 48, 50, 63], "emphas": [5, 69], "uniform": [5, 8, 23, 32, 39, 45, 46, 60, 63, 65, 69], "alia": 5, "short": [5, 14, 21, 29, 31, 35, 38, 39, 45, 49, 57, 68], "sinc": [5, 8, 9, 18, 20, 24, 25, 27, 30, 33, 35, 37, 40, 42, 44, 45, 48, 50, 51, 55, 57, 60, 62, 63, 65, 66], "prefix": 5, "string": [5, 29, 32, 42, 50, 68], "subsequ": [5, 7, 13, 14, 21, 29, 35, 37, 39, 40, 53, 59, 62, 69], "altern": [5, 7, 8, 10, 13, 15, 26, 32, 33, 47, 50, 66, 69], "abstractmodel": 5, "But": [5, 15, 21, 32, 37, 39, 42, 50, 66], "normal": [5, 14, 31, 39, 42, 46, 49, 50, 53, 58, 62, 69], "content": [5, 29, 39, 45, 46, 47], "At": [5, 12, 21, 24, 25, 27, 31, 47, 52, 64], "major": [5, 32], "empti": 5, "valid": [5, 42, 47, 50, 69], "dot": [5, 7, 8, 12, 13, 14, 15, 16, 18, 23, 29, 32, 33, 38, 40, 42, 44, 45, 47, 48, 50, 52, 57, 58, 62, 65], "notat": [5, 19, 29, 31, 42, 63, 65], "chosen": [5, 38], "reflect": [5, 10], "keyword": [5, 42, 50, 69], "nonnegativer": [5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 22, 24, 26, 29, 30, 31, 32, 34, 35, 37, 38, 39, 40, 41, 42, 48, 52, 55, 57, 58, 60, 63, 65, 66, 68, 69], "nonnegativeinteg": [5, 17, 18, 30, 37, 55, 59, 62], "binari": [5, 16, 19, 20, 22, 23, 25, 26, 27, 30, 33, 35, 36, 37, 44, 50, 53, 55, 57, 61, 62, 63, 66], "placehold": [5, 30], "unknown": [5, 38, 39, 42, 58, 60, 63, 65], "yet": [5, 55], "updat": [5, 21, 22, 24, 38, 39, 40, 41, 42, 45, 48, 50, 51, 52, 55], "formula": [5, 42, 46, 47, 60], "could": [5, 8, 14, 15, 16, 17, 21, 23, 29, 30, 31, 37, 38, 39, 40, 45, 48, 55, 57, 59, 62, 63, 64, 66, 69], "expr": [5, 8, 9, 10, 11, 17, 39, 50, 55, 60, 63, 65, 69], "releas": [5, 22, 53], "With": [5, 12, 18, 26, 29, 39, 47, 50, 63, 66], "behavior": [5, 39, 49], "line": [5, 8, 13, 14, 20, 22, 29, 35, 41, 44, 60, 66, 69], "add": [5, 8, 11, 12, 20, 21, 22, 23, 25, 29, 30, 31, 32, 37, 41, 42, 46, 47, 53, 55, 57, 60, 62, 63, 69], "tag": [5, 53, 69], "syntax": [5, 45, 55, 69], "separ": [5, 20, 21, 29, 35, 36, 39, 42, 44, 50, 57, 65, 66, 69], "less": [5, 20, 21, 25, 27, 29, 46, 49, 50, 57, 63, 69], "greater": [5, 15, 17, 25, 49], "raw_materi": 5, "labor_a": [5, 69], "labor_b": [5, 69], "output": [5, 18, 20, 35, 42, 50, 53, 65, 66, 68], "whenev": [5, 21, 25, 33, 63], "fulli": [5, 8, 30, 55, 57], "tee": [5, 8], "debug": 5, "aris": [5, 31, 39], "result": [5, 7, 8, 14, 15, 18, 20, 23, 24, 25, 29, 30, 31, 33, 35, 37, 39, 42, 45, 46, 47, 48, 49, 50, 52, 55, 57, 58, 59, 62, 63, 64, 65, 66, 68, 69], "warn": [5, 20, 30, 42, 50, 57, 66], "No": [5, 23, 25, 37, 55, 59, 63], "semi": [5, 38, 40, 42, 48, 50, 58], "non": [5, 6, 8, 9, 17, 18, 19, 21, 27, 29, 31, 34, 37, 38, 39, 42, 45, 46, 47, 50, 55, 57, 59, 62, 65, 68, 69], "presolv": [5, 20], "col": 5, "nonzero": [5, 52], "reduct": [5, 7, 8, 64, 65], "lp": [5, 7, 11, 15, 42, 53], "ekk": 5, "dual": [5, 6, 32, 41, 55], "simplex": 5, "serial": [5, 44], "infeas": [5, 12, 33, 57, 58, 63, 65, 66], "num": [5, 57], "0999953995e": 5, "02": [5, 14, 17, 18, 29, 48, 57, 62], "ph1": 5, "du": 5, "0s": 5, "6000000000e": 5, "03": [5, 14, 29, 31, 39, 48], "pr": 5, "postsolv": 5, "00": [5, 7, 9, 10, 11, 12, 20, 25, 26, 29, 32, 35, 37, 39, 46, 49, 52, 55, 60, 62, 63, 64], "format": [5, 8, 10, 17, 21, 23, 45, 52], "graphic": [5, 37, 41, 44, 60], "overview": [5, 31, 39], "visual": [5, 8, 12, 14, 18, 20, 22, 24, 30, 32, 34, 35, 42, 55], "appendix": 5, "entir": [5, 8, 32, 34, 35, 62], "individu": [5, 14, 21, 25, 29, 30, 32, 39, 55, 57, 69], "whole": [5, 44, 62], "successfulli": [5, 7, 20, 39, 42], "conveni": [5, 13, 22, 25, 32, 65, 68], "2f": [5, 9, 10, 11, 13, 18, 20, 26, 29, 32, 33, 35, 38, 39, 45, 46, 48, 49, 52, 55, 58, 60, 62, 63, 64, 65, 66], "18000": [5, 32, 64], "15400": 5, "shortcut": 5, "wide": [5, 27, 29, 35], "seri": [5, 7, 8, 14, 15, 21, 32, 42, 45, 49, 50, 52, 62, 64, 68], "matplotlib": [5, 7, 12, 13, 14, 18, 20, 21, 22, 23, 24, 25, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 60, 62, 63, 64, 65, 66], "bar": [5, 7, 13, 14, 15, 22, 23, 29, 32, 39, 40, 42, 45, 50, 55, 60, 63, 65], "chart": [5, 14, 25, 29, 32, 45, 57, 62], "pd": [5, 7, 12, 14, 15, 18, 20, 21, 22, 23, 24, 25, 27, 29, 30, 31, 32, 35, 37, 39, 41, 42, 44, 45, 49, 50, 52, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68], "dtype": [5, 15, 50, 60, 62, 68], "float64": [5, 15, 50, 62, 68], "pyplot": [5, 7, 12, 13, 14, 18, 20, 21, 22, 23, 24, 25, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 60, 62, 63, 64, 65, 66], "plt": [5, 7, 12, 13, 14, 18, 20, 21, 22, 23, 24, 25, 27, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 60, 62, 63, 64, 65, 66], "1x2": 5, "grid": [5, 7, 12, 13, 14, 15, 18, 21, 24, 29, 35, 39, 40, 44, 45, 46, 47, 49, 52, 64, 66, 68], "subplot": [5, 7, 13, 14, 20, 21, 22, 23, 24, 25, 27, 29, 32, 34, 37, 39, 41, 42, 44, 45, 46, 47, 49, 50, 52, 57, 60, 62, 63], "configur": [5, 27, 62, 65], "fig": [5, 7, 13, 14, 21, 22, 23, 24, 25, 27, 29, 32, 34, 37, 39, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 57, 60, 62, 63], "ax": [5, 7, 12, 13, 14, 15, 19, 20, 21, 22, 23, 24, 25, 27, 29, 32, 34, 35, 37, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 60, 62, 63, 64, 68], "figsiz": [5, 7, 12, 14, 18, 20, 21, 22, 23, 24, 25, 27, 29, 30, 32, 34, 35, 37, 39, 41, 42, 44, 45, 46, 47, 49, 50, 52, 53, 57, 60, 62, 63], "rcparam": [5, 7, 12, 13, 14, 22, 24, 25, 30, 38, 39, 40, 45, 48, 52, 55], "font": [5, 7, 12, 13, 14, 22, 24, 25, 38, 39, 40, 45, 48, 52, 55], "color": [5, 7, 8, 12, 13, 14, 15, 21, 22, 23, 24, 25, 27, 28, 29, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 46, 47, 48, 50, 52, 53, 55, 57, 60], "cm": [5, 21, 25, 38, 48, 52], "tab20c": [5, 7, 12, 25, 38, 48, 52], "color_set": 5, "dataset": [5, 7, 13, 29, 40, 42, 50, 57], "plot": [5, 7, 12, 13, 14, 15, 18, 20, 21, 22, 24, 29, 30, 32, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 60, 62, 63, 64, 66, 68], "enumer": [5, 9, 14, 20, 21, 22, 25, 29, 37, 50, 60, 62], "zip": [5, 7, 12, 14, 18, 21, 27, 29, 30, 33, 52, 57], "kind": [5, 7, 15, 29, 32, 37, 42, 45, 50, 62, 63], "barh": [5, 14, 62], "alpha": [5, 7, 13, 18, 21, 22, 24, 25, 26, 27, 32, 34, 37, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 57, 58, 60, 62, 63, 65], "set_xlabel": [5, 7, 12, 13, 14, 21, 22, 23, 24, 25, 27, 29, 39, 41, 44, 45, 46, 47, 49, 52, 62, 63], "invert_yaxi": 5, "tight_layout": [5, 7, 12, 13, 14, 18, 21, 22, 23, 24, 25, 27, 29, 30, 32, 37, 38, 39, 40, 42, 44, 45, 46, 48, 49, 52, 60, 62], "discov": [5, 29], "simplest": [6, 53], "lo": [6, 9, 14, 16, 17, 28, 39], "adher": [6, 8], "nonneg": [6, 8, 16, 55, 62], "word": [6, 8, 19, 22, 29, 35, 49, 55, 68, 69], "matrix": [6, 12, 19, 31, 38, 40, 41, 42, 48, 49, 50, 53, 58, 62, 63], "ii": [6, 8, 21, 33, 37], "iii": [6, 8, 33, 41], "unbound": [6, 8], "posit": [6, 8, 18, 24, 25, 27, 29, 37, 38, 40, 42, 48, 50, 58, 59, 60, 62], "x_i": [6, 7, 8, 11, 16, 35, 38, 42, 45, 48, 50, 58, 66], "fact": [6, 8, 9, 17, 20, 29, 30, 32, 34, 36, 38, 39, 42, 44, 45, 48, 50, 55, 59, 62, 63, 65], "easili": [6, 8, 11, 18, 31, 33, 35, 38, 44, 45, 52, 57, 63, 68, 69], "convert": [6, 8, 21, 29, 31, 37, 41, 42, 50, 68], "ad": [6, 8, 9, 30, 37, 39, 41, 45, 53, 55, 65, 66, 68, 69], "multipli": [6, 8, 9, 29, 42, 45], "explor": [6, 8, 16, 26, 28, 29, 36, 37, 39, 42, 43, 53, 54, 56, 57, 61], "variou": [6, 8, 16, 22, 26, 28, 30, 36, 37, 39, 43, 51, 52, 54, 55, 56, 61, 68, 69], "microchip": [6, 11, 17], "bim": [6, 15, 16, 51, 54], "absolut": [6, 11, 29, 35, 40, 42, 57, 65], "deviat": [6, 40, 55, 57, 58, 62, 63, 65, 66, 69], "lad": 6, "regress": [6, 36, 42], "mad": 6, "portfolio": [6, 31, 36, 43, 46, 47, 56], "variant": [6, 27, 58, 65, 66], "lowest": [6, 15, 29, 30], "fraction": [6, 12, 14, 17, 23, 29, 42, 46, 47, 49, 55, 58, 62, 65], "forecast": [6, 7, 51, 52, 62, 66], "extra": [6, 16, 18, 25, 28, 30, 36, 43, 44, 57, 59, 61, 63, 65], "wine": 6, "qualiti": [6, 39, 62], "predict": [6, 12, 13, 42, 50, 52, 62, 66], "l_1": [6, 13], "multi": [6, 29, 43, 45, 61], "els": [7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 29, 33, 34, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 60, 62, 63, 65, 66, 68, 69], "aim": [7, 10, 12, 13, 20, 29, 32, 34, 36, 45, 48, 52, 53, 64], "valuabl": 7, "coupl": [7, 68], "physicochem": 7, "machin": [7, 8, 13, 16, 21, 36, 40, 43, 69], "2009": [7, 39, 46], "articl": [7, 25, 44, 45, 49, 68], "cortez": 7, "et": [7, 45], "al": [7, 45], "physic": [7, 37, 42, 66], "chemic": [7, 21, 37, 39, 51, 68], "sensori": 7, "metric": [7, 13, 21, 22], "gather": 7, "red": [7, 8, 13, 14, 15, 29, 34, 44, 53, 57], "white": [7, 21, 22, 34, 35, 37, 53, 68], "portug": 7, "uci": [7, 42, 50], "download": [7, 20, 35, 49, 65, 66], "panda": [7, 12, 14, 15, 18, 20, 21, 22, 23, 24, 25, 27, 29, 30, 31, 35, 37, 39, 41, 42, 44, 45, 49, 50, 52, 53, 55, 57, 59, 60, 62, 63, 64, 65, 66, 68], "numpi": [7, 8, 12, 13, 14, 18, 20, 23, 24, 29, 30, 31, 35, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 69], "np": [7, 8, 12, 13, 14, 18, 20, 23, 24, 27, 29, 30, 31, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66], "read_csv": [7, 12, 18, 29, 31, 35, 37, 42, 50, 52, 57, 65, 66], "archiv": [7, 42, 50], "ic": [7, 42, 50], "edu": [7, 42, 45, 46, 49, 50, 64], "ml": [7, 42, 50, 51], "databas": [7, 29], "winequ": 7, "csv": [7, 29, 35, 37, 57, 65, 66], "sep": [7, 12, 18, 31, 52], "acid": 7, "volatil": [7, 14], "citric": 7, "residu": [7, 13, 40, 41, 60], "sugar": [7, 64, 68], "chlorid": 7, "free": [7, 29, 33, 38, 45, 58, 63], "sulfur": [7, 39], "dioxid": 7, "total": [7, 8, 12, 14, 18, 21, 22, 23, 25, 27, 29, 30, 35, 37, 38, 39, 42, 44, 45, 49, 50, 52, 55, 57, 62, 65, 66, 69], "densiti": [7, 57], "ph": 7, "sulphat": 7, "alcohol": 7, "7": [7, 10, 11, 13, 18, 19, 20, 21, 22, 24, 25, 27, 29, 31, 32, 33, 34, 37, 39, 42, 45, 49, 50, 52, 53, 60, 64, 66], "4": [7, 8, 9, 10, 11, 12, 17, 18, 21, 22, 23, 24, 25, 27, 29, 30, 32, 33, 34, 35, 37, 39, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 57, 60, 61, 63, 65, 66, 68, 69], "700": [7, 18, 32, 45], "076": 7, "11": [7, 11, 15, 18, 21, 22, 24, 25, 29, 31, 34, 35, 37, 42, 44, 45, 48, 53, 62, 66], "34": [7, 21, 29, 32, 52, 66], "99780": 7, "51": [7, 20, 22, 29, 37, 40, 47], "56": [7, 18, 29, 49, 64, 65], "8": [7, 11, 14, 15, 18, 19, 20, 21, 22, 24, 25, 27, 29, 30, 31, 32, 34, 35, 37, 39, 40, 41, 42, 44, 45, 46, 49, 50, 52, 53, 55, 57, 59, 60, 62, 65, 66, 69], "880": 7, "098": [7, 32], "25": [7, 21, 22, 24, 25, 29, 32, 35, 37, 39, 42, 46, 47, 48, 49, 53, 55, 58, 60, 62, 63, 64, 65, 66], "67": [7, 10, 12, 18, 29, 35, 37, 52, 66], "99680": 7, "68": [7, 12, 18, 22, 29, 35, 37, 52, 66], "760": 7, "04": [7, 17, 29, 35, 39, 48, 63, 65], "092": 7, "15": [7, 14, 18, 21, 22, 24, 25, 29, 31, 33, 34, 35, 37, 44, 45, 48, 50, 53, 58, 60, 62, 63, 66, 69], "54": [7, 18, 29, 32, 37, 49, 52, 60, 64], "99700": 7, "26": [7, 21, 25, 29, 33, 53, 55], "65": [7, 12, 18, 27, 29, 35, 37, 50, 52, 60, 65, 66], "280": [7, 45], "075": [7, 32, 55], "17": [7, 21, 24, 25, 29, 31, 37, 38, 42, 45, 48, 49, 53, 62, 66], "99800": 7, "58": [7, 29, 35, 64, 65, 66], "1594": 7, "600": [7, 18, 66], "08": [7, 14, 29, 32, 34, 48, 52, 60, 63], "090": 7, "32": [7, 21, 22, 25, 29, 37], "44": [7, 18, 20, 29, 37, 41, 49, 57, 65, 66], "99490": 7, "45": [7, 21, 29, 30, 32, 35, 39, 41, 66], "1595": 7, "550": 7, "062": [7, 14], "39": [7, 13, 29, 30, 65], "99512": 7, "52": [7, 12, 29, 39, 44, 45, 64], "76": [7, 29, 35, 39], "1596": 7, "510": [7, 64], "13": [7, 14, 18, 21, 22, 24, 25, 29, 30, 31, 37, 42, 44, 48, 52, 53, 60, 65], "29": [7, 25, 29, 37, 49, 53], "99574": 7, "42": [7, 21, 29, 37, 39, 62], "75": [7, 29, 32, 37, 40, 42, 45, 55, 60, 62, 64, 65], "1597": [7, 24], "645": [7, 62], "99547": 7, "57": [7, 24, 29, 37, 52, 63, 65], "71": [7, 27, 29, 60], "1598": 7, "310": [7, 12, 18, 52, 64], "47": [7, 12, 18, 29, 37, 50, 52, 62, 63], "067": 7, "18": [7, 24, 25, 29, 32, 35, 37, 39, 46, 48, 53, 62, 65, 66, 69], "99549": 7, "66": [7, 12, 13, 18, 29, 52, 62, 65], "1599": [7, 45], "repeat": [7, 15, 21, 46, 47, 55, 63], "observ": [7, 13, 25, 32, 35, 40, 42, 49, 55, 57, 60, 63, 65, 66, 69], "respons": [7, 66], "y_i": [7, 42, 45, 50, 53, 55], "frac": [7, 10, 14, 24, 27, 29, 31, 42, 44, 45, 47, 49, 50, 57, 60, 62, 63, 65, 68], "df": [7, 20, 30, 31, 37, 42, 44, 45, 49, 50, 52, 55, 59, 62, 64, 68], "ab": [7, 14, 31, 35, 42, 44, 45, 46, 47, 49, 63, 65], "5f": [7, 14, 29, 31, 44, 46, 47, 49], "14": [7, 12, 13, 14, 18, 22, 24, 25, 27, 29, 37, 38, 39, 40, 41, 48, 50, 52, 53, 66, 69], "get_cmap": [7, 12, 13, 14, 23, 24, 27, 33, 37], "axhlin": [7, 14, 15, 24, 25, 27, 39, 41, 60], "ls": [7, 14, 24, 27], "lw": [7, 12, 14, 21, 22, 24, 25, 27, 37, 39, 40, 44, 45, 46, 47, 49, 52, 53, 60, 62], "legend": [7, 12, 13, 14, 15, 22, 24, 27, 32, 35, 40, 41, 44, 45, 46, 49, 52, 57, 60, 62, 66], "set_ylabel": [7, 12, 13, 14, 21, 22, 23, 24, 25, 27, 29, 39, 41, 44, 45, 46, 47, 49, 52, 62], "68318": 7, "599": 7, "eleven": 7, "characterist": [7, 8, 68], "plu": [7, 10, 18], "record": [7, 49, 51], "histogram": [7, 13, 14, 29, 40, 62, 63], "insight": [7, 13, 42, 50], "sharei": [7, 14], "flatten": [7, 14], "hist": [7, 13, 14, 29, 40, 62, 63], "bin": [7, 13, 14, 29, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 62, 63], "30": [7, 13, 18, 21, 22, 24, 25, 26, 29, 32, 35, 37, 41, 44, 45, 49, 53, 59, 62, 63, 66, 69], "axvlin": [7, 14, 24, 25, 27, 29, 39, 41, 53], "set_titl": [7, 14, 20, 21, 23, 24, 29, 32, 37, 41, 44, 46, 47, 49, 52, 57, 62], "explanatori": [7, 13, 40], "interest": [7, 9, 31, 33, 42, 45, 50, 60, 63], "deep": [7, 52], "knowledg": [7, 44, 49, 59, 63], "area": [7, 27, 44, 57], "onenologist": 7, "head": [7, 42, 49, 50, 53], "naiv": [7, 17, 55, 59], "scientist": 7, "absenc": 7, "experi": [7, 46], "proce": [7, 68], "correl": [7, 42, 50], "_": [7, 8, 11, 12, 13, 18, 20, 21, 22, 25, 26, 29, 31, 34, 35, 37, 39, 40, 46, 47, 48, 49, 50, 53, 55, 57, 59, 62, 63, 64, 65, 69], "corr": 7, "000000": [7, 24, 29, 31, 35, 42, 66], "022026": 7, "202288": 7, "390558": 7, "496180": [7, 42], "174919": 7, "476166": 7, "figur": [7, 20, 29, 30, 35, 37, 40, 45, 52, 53, 55, 57, 62], "strong": [7, 9, 20], "singl": [7, 8, 13, 14, 15, 20, 22, 26, 29, 33, 35, 39, 53, 57, 63, 65, 66, 68, 69], "determin": [7, 12, 24, 25, 27, 30, 35, 36, 37, 42, 44, 45, 47, 50, 53, 57, 58, 59, 60, 63, 64, 65, 66, 69], "largest": [7, 37], "reduc": [7, 14, 15, 20, 26, 27, 32, 37, 39, 42, 44, 45, 47, 50, 64, 69], "right": [7, 8, 9, 10, 12, 13, 14, 20, 21, 22, 23, 25, 27, 30, 37, 39, 40, 42, 44, 45, 47, 50, 53, 55, 60, 62, 63, 65], "prior": [7, 21, 23, 24, 32, 59, 62], "lad_fit_1": 7, "y_col": 7, "x_col": 7, "concretemodel": [7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 48, 52, 53, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 68], "len": [7, 12, 13, 14, 18, 20, 21, 22, 23, 24, 25, 29, 30, 33, 37, 40, 41, 42, 45, 49, 52, 53, 55, 57, 62, 63, 64, 65, 66], "rangeset": [7, 13, 14, 23, 24, 29, 31, 33, 37, 40], "loc": [7, 12, 14, 15, 18, 21, 22, 24, 27, 29, 30, 31, 32, 37, 39, 41, 42, 44, 45, 49, 52, 53, 57, 60, 64], "e_po": 7, "e_neg": 7, "prediction_error": 7, "54117": 7, "calcul": [7, 13, 14, 21, 27, 30, 31, 35, 38, 39, 40, 42, 44, 45, 47, 50, 55, 59, 60, 63, 65, 66, 68, 69], "fig1": 7, "ax1": 7, "count": [7, 13, 18, 29, 40, 42, 50, 66], "fig2": [7, 13], "ax2": [7, 13], "scatter": [7, 13, 14, 40, 42, 50, 57], "set_aspect": [7, 27, 44], "box": 7, "min_val": [7, 14], "get_xlim": [7, 27], "get_ylim": [7, 21, 62], "max_val": [7, 14], "set_xlim": [7, 14, 23, 25, 27, 41, 44, 45, 46, 53, 57, 62], "set_ylim": [7, 21, 22, 24, 25, 27, 32, 41, 44, 45, 46, 47, 49, 57], "m_j": [7, 13, 40, 57], "hat": [7, 12, 52, 59, 65], "min_": [7, 39, 40, 42, 45], "_i": [7, 22, 50, 65], "j": [7, 8, 12, 13, 14, 15, 18, 20, 21, 22, 25, 27, 29, 30, 31, 33, 34, 35, 37, 40, 41, 42, 44, 45, 50, 52, 53, 57, 62, 63, 65, 66, 69], "x_": [7, 12, 18, 19, 20, 23, 27, 29, 30, 31, 32, 33, 34, 37, 39, 42, 50, 53, 59], "care": [7, 14, 18, 29, 63, 69], "l1_fit": 7, "l1": 7, "49980": 7, "34242": 7, "98062": 7, "28928": 7, "90609": 7, "00219": 7, "50083": 7, "06382": 7, "substanti": [7, 14, 41], "benchmark": [7, 21, 39], "tabul": 7, "statist": [7, 13, 40, 42, 49, 50], "regressor": [7, 13], "683": [7, 45], "541": 7, "500": [7, 12, 18, 30, 32, 40, 41, 45, 46, 49, 52, 53, 55, 57, 64], "enough": [7, 8, 17, 25, 26, 29, 33, 36, 39, 59], "replac": [7, 20, 29, 30, 31, 39, 42, 46, 50, 57, 62], "human": 7, "judgment": 7, "judg": 7, "intern": [8, 12, 18, 44, 46, 49, 52, 69], "chip": [8, 10, 12, 17, 18, 52, 55], "1g": 8, "silicon": [8, 9, 10, 11, 12, 15, 17, 18, 52, 55], "plastic": [8, 9, 10, 11, 12, 15, 17, 18, 52, 55], "4g": 8, "copper": [8, 9, 10, 11, 12, 15, 17, 18, 52], "memori": [8, 12, 14, 17, 18, 52, 55, 69], "germanium": [8, 9, 10, 11, 12, 15, 17, 18, 52, 55], "2g": 8, "sold": [8, 29, 39, 59, 60, 62, 64], "stock": [8, 12, 18, 36, 39, 46, 47, 49, 51, 52, 56], "1000g": 8, "1500g": 8, "1750g": 8, "4800g": 8, "euro": [8, 31, 64], "12x": 8, "9y": 8, "know": [8, 29, 30, 39, 45, 50, 51, 55, 59, 62, 66], "joint": 8, "usag": [8, 69], "4x": 8, "exce": [8, 25, 30, 39, 66], "1000": [8, 9, 10, 11, 12, 13, 15, 17, 18, 19, 20, 26, 29, 35, 45, 46, 52, 55, 57, 60, 62, 63, 64, 66], "deduc": 8, "role": [8, 29, 36, 39, 53, 55, 63], "1500": [8, 9, 10, 11, 12, 15, 17, 18, 29, 52, 55, 60, 64], "1750": [8, 9, 10, 11, 12, 15, 17, 18, 29, 32, 52, 55], "2y": [8, 69], "4800": [8, 9, 10, 11, 12, 17, 18, 45, 52, 55, 64], "leverag": [8, 30, 31, 40, 45, 49, 55], "dimension": [8, 21, 27, 37, 42, 44, 50, 55, 62], "grai": [8, 24, 34, 35, 53], "enclos": 8, "solid": [8, 34, 65], "isolin": [8, 44], "parallel": [8, 33], "dash": [8, 21, 22], "blue": [8, 13, 21, 35], "increas": [8, 14, 20, 21, 23, 27, 29, 31, 39, 41, 46, 47, 59, 60, 66], "intens": [8, 31, 39], "intuit": [8, 17, 47, 65], "alreadi": [8, 18, 20, 32, 50, 58, 66], "guess": [8, 33], "mark": [8, 24, 29, 46, 50], "easi": [8, 9, 53, 55], "imagin": [8, 29, 30], "complic": [8, 11, 50, 69], "matter": 8, "expand": [8, 63], "obfusc": 8, "discern": 8, "analyz": [8, 28, 62, 66], "matric": [8, 63], "close": [8, 13, 14, 29, 39, 44, 49, 60], "greatli": 8, "identif": [8, 29, 31], "similar": [8, 14, 20, 39, 42, 63, 65, 69], "food": [8, 21, 25, 39], "refresh": 8, "equat": [8, 13, 18, 19, 20, 27, 29, 35, 37, 42, 45, 50, 68], "toward": [8, 25, 27], "renam": 8, "x_1": [8, 9, 10, 17, 38, 42, 44, 48, 50, 55, 58], "x_2": [8, 9, 10, 17, 38, 42, 48, 50, 55, 58], "obtain": [8, 9, 12, 13, 17, 22, 27, 29, 30, 33, 35, 38, 39, 40, 42, 44, 45, 47, 48, 50, 55, 57, 59, 60, 62, 63, 65, 66], "pmatrix": [8, 63], "just": [8, 11, 21, 29, 32, 34, 37, 39, 44, 55, 59, 63, 65], "rewrit": [8, 13, 17, 35, 40, 44, 45, 47, 48, 58, 63], "12x_1": [8, 10, 17, 55], "9x_2": [8, 10, 17, 55], "bmatrix": [8, 19, 22, 24, 26, 27, 42, 45, 50], "system": [8, 18, 29, 31, 35, 39, 46, 47, 56, 63, 66], "read": [8, 14, 21, 23, 29, 35, 37, 44, 49, 57, 62, 63, 66, 68, 69], "correctli": [8, 18, 25, 42, 66], "replic": 8, "4x_1": [8, 10, 55], "longleftrightarrow": [8, 44, 45], "arrai": [8, 13, 38, 40, 42, 44, 45, 48, 49, 50, 55, 57, 58, 62, 63, 65, 66, 69], "l": [8, 19, 29, 37, 39, 42, 44, 45, 46, 48, 49, 63, 69], "2x_2": [8, 10, 55], "x1": [8, 9, 10, 11, 17, 27, 44], "x2": [8, 9, 10, 11, 17, 27], "1f": [8, 10, 11, 15, 21, 42, 46, 50, 60], "650": [8, 10, 55, 59], "1100": [8, 10, 18, 29, 55], "17700": [8, 9, 10, 55], "emploi": [8, 13, 25, 42], "enhanc": [8, 27, 69], "thu": [8, 17, 18, 25, 29, 30, 33, 35, 40, 48, 57, 60, 62, 63, 66], "util": [8, 27, 29, 32, 46, 47, 49, 53, 68], "encompass": 8, "advantag": [8, 18, 28, 30, 31, 42, 50, 68], "concis": [8, 20], "space": [8, 16, 44, 45, 53, 62, 68], "clariti": 8, "reveal": [8, 39, 50], "across": [8, 29, 34, 35, 63, 65], "furthermor": [8, 18, 23, 44, 69], "unnecessari": [8, 69], "theoret": [8, 52, 60], "streamlin": [8, 21, 69], "Is": [8, 15, 30, 46], "answer": [8, 42, 59], "textit": 8, "sign": [8, 42, 50], "onc": [8, 22, 23, 37, 42, 50, 62, 66], "commit": [8, 31, 65], "deriv": [8, 22, 27, 35, 41, 42, 45, 50, 62], "sort": [8, 14, 20, 21, 25, 29, 33, 42, 46, 50], "consid": [8, 11, 13, 14, 15, 18, 20, 21, 22, 24, 27, 28, 29, 30, 31, 32, 33, 37, 38, 39, 40, 42, 44, 46, 47, 48, 49, 53, 55, 57, 58, 60, 62, 63, 64, 65, 66, 68], "anywai": [8, 30, 63], "without": [8, 15, 23, 27, 32, 33, 37, 39, 42, 46, 47, 50, 53, 59, 63, 68, 69], "Of": [8, 16, 63], "cours": [8, 16, 17, 22, 33, 39, 63, 69], "illustr": [8, 12, 18, 20, 21, 26, 27, 29, 30, 37, 44, 45, 52, 55, 60, 65, 66], "shall": [8, 18, 45, 50, 65], "upon": [8, 21, 57], "had": [8, 17, 18, 29, 42, 50, 59, 65], "neg": [8, 9, 17, 18, 21, 29, 34, 35, 37, 38, 42, 45, 47, 50, 51, 57, 59, 62, 69], "therefor": [8, 14, 27, 32, 35, 38, 42, 45, 50, 62, 63, 66], "overlin": 8, "side": [8, 9, 14, 25, 29, 30, 42, 55, 57, 68], "One": [8, 9, 15, 19, 21, 22, 27, 29, 30, 35, 37, 38, 63, 65, 68], "inde": [8, 20, 25, 44, 50, 57, 63, 65], "yield": [8, 10, 17, 18, 27, 29, 39, 41, 45, 50, 52, 53, 55, 57, 63, 64, 68], "n_var": 8, "n_constraint": 8, "constraintlist": [8, 11, 60], "optimal_x": 8, "round": [8, 12, 14, 17, 18, 24, 25, 30, 31, 32, 33, 34, 37, 38, 39, 41, 44, 45, 48, 52, 55, 62, 64, 65], "addition": [8, 58, 63], "avoid": [8, 12, 18, 19, 21, 22, 27, 32, 33, 42, 52, 66, 68, 69], "hard": [8, 27, 29, 42, 50, 63], "doc": [8, 37, 45, 48, 69], "lambda_1": 9, "lambda_2": 9, "lambda_3": 9, "lambda_4": 9, "four": [9, 24, 39, 41, 42, 50, 63], "rh": [9, 50], "tight": [9, 20, 22, 24, 40, 52, 58], "Such": [9, 55, 57, 65, 66], "tightest": 9, "y1": [9, 10, 27, 63], "y2": [9, 10, 27, 63], "y3": [9, 63], "y4": 9, "obj": [9, 20, 35], "dualiti": [9, 55], "primal": 9, "coincid": [9, 30], "ask": [9, 29, 31, 64], "suffix": [9, 32, 37, 55, 69], "component_object": [9, 55], "y_": [9, 18, 20, 23, 27, 39, 42, 50, 53, 59, 62], "y_1": [9, 10, 42, 50, 55, 63], "y_2": [9, 10, 42, 50, 55, 63], "y_3": [9, 63], "y_4": 9, "recal": [10, 12, 18, 35, 47, 48, 52, 60, 63], "pair": [10, 18, 19, 21, 22, 25, 27, 29, 31, 32, 34, 42, 53, 55, 66], "sale": [10, 14, 29, 59], "suppos": [10, 11, 13, 26, 40, 41, 55, 63], "independ": [10, 13, 35, 39, 40, 47, 49, 55, 62], "6x_1": 10, "6x_2": 10, "reason": [10, 18, 27, 29, 30, 33, 35, 36, 42, 45, 46, 49, 50, 53, 55, 57, 60, 63, 64, 68, 69], "bim_with_revenues_minus_cost": 10, "minu": [10, 18, 34, 57, 66], "variable_cost": 10, "fixed_cost": 10, "bim_linear": 10, "3f": [10, 14, 17, 29, 38, 42, 46, 47, 48, 50, 52, 57, 58, 68], "15925": 10, "000": [10, 14, 17, 29, 32, 39, 45, 46, 55, 58, 62, 64], "1775": 10, "ratio": 10, "dfrac": 10, "deal": [10, 55], "auxiliari": [10, 11, 12, 14, 18, 22, 34, 42, 45, 47, 50, 55, 63], "12y_1": 10, "9y_2": 10, "cdot": [10, 18, 25, 26, 29, 30, 39, 47, 50, 60, 62, 65, 66], "4y_1": 10, "2y_2": 10, "100y": 10, "despit": 10, "recov": [10, 30, 46, 65], "bim_with_revenues_over_cost": 10, "bim_fract": 10, "250": [10, 24, 35, 45, 55, 60, 64, 69], "051": [10, 29], "16500": 10, "1641": 10, "667": [10, 58], "972": 10, "strictli": [10, 53], "seemingli": 11, "rewritten": [11, 58], "maxima": [11, 39], "finit": [11, 13, 29, 33, 40, 62, 63], "k": [11, 13, 18, 21, 22, 23, 24, 25, 27, 29, 30, 31, 33, 34, 37, 40, 42, 44, 45, 46, 47, 49, 50, 60, 63], "c_k": 11, "minimax": 11, "max_": [11, 15, 39, 46, 47, 49, 59, 62, 69], "top_": 11, "latter": [11, 24, 37, 55, 66], "z": [11, 15, 16, 18, 22, 26, 29, 37, 39, 42, 44, 45, 47, 50, 55, 57, 59, 60, 62, 63], "qquad": [11, 15, 20, 23, 25, 39, 40, 42, 45, 53, 62, 65], "guarante": [11, 14, 15, 32, 33, 38, 44, 48, 55, 57, 58, 62, 63, 65], "vice": [11, 63], "versa": [11, 63], "henc": [11, 35, 62, 66], "uncertainti": [11, 15, 43, 44, 52, 61, 63, 65, 66], "regard": [11, 15, 25, 39, 42, 45, 50, 51, 55, 64], "instead": [11, 16, 20, 29, 30, 33, 35, 36, 39, 41, 55, 57, 62, 63, 65, 66, 68], "nomin": [11, 52, 55, 63, 64, 65, 66], "estim": [11, 13, 39, 51, 57, 60, 63], "trick": [11, 45], "bim_maxmin": 11, "maxmin": [11, 15], "c1": [11, 21], "c2": [11, 21], "583": [11, 15, 29], "1166": [11, 15, 55], "17500": [11, 15], "carefulli": [12, 52], "manag": [12, 44, 45, 46, 47, 49, 51, 52, 56, 69], "led": [12, 52], "monthli": [12, 18, 52], "jan": [12, 18, 52], "feb": [12, 18, 52], "mar": [12, 18, 52], "apr": [12, 18, 52], "jun": [12, 18, 52], "jul": [12, 18, 52], "aug": [12, 18, 52], "oct": [12, 18, 52], "nov": [12, 18, 52], "dec": [12, 18, 52, 63], "88": [12, 18, 20, 29, 35, 37, 50, 52, 62, 66], "125": [12, 18, 35, 37, 49, 52, 55, 62, 66], "260": [12, 18, 32, 52, 64], "217": [12, 18, 29, 52, 66], "238": [12, 17, 18, 29, 52, 64], "286": [12, 18, 52], "248": [12, 18, 52], "265": [12, 18, 52, 55, 66], "293": [12, 18, 29, 52], "259": [12, 18, 27, 45, 52], "244": [12, 18, 45, 52], "62": [12, 18, 29, 33, 37, 52, 65], "81": [12, 18, 29, 32, 35, 39, 52, 63], "95": [12, 18, 29, 32, 35, 42, 47, 52, 62, 65], "118": [12, 18, 24, 29, 31, 35, 46, 47, 49, 52, 66], "86": [12, 18, 24, 29, 35, 37, 42, 44, 52, 66], "89": [12, 18, 29, 42, 50, 52], "82": [12, 18, 29, 52, 60], "84": [12, 18, 29, 37, 42, 45, 52, 60, 66], "480": [12, 18, 52], "200": [12, 14, 18, 20, 27, 35, 39, 44, 45, 52, 55, 59, 62, 64, 66, 69], "acquir": [12, 18, 39, 52], "month": [12, 18, 52], "9000": [12, 52, 64], "spend": [12, 52], "5000": [12, 23, 45, 46, 52, 60, 64], "kept": [12, 18, 52], "datafram": [12, 14, 15, 18, 20, 21, 22, 24, 25, 27, 29, 30, 31, 32, 35, 37, 39, 41, 42, 44, 45, 49, 50, 52, 53, 55, 57, 59, 62, 63, 64, 66, 68, 69], "stringio": [12, 18, 31, 52], "ipython": [12, 30, 32, 34, 48, 58, 65], "demand_data": [12, 18, 52], "price_data": [12, 52], "demand_chip": [12, 18, 52], "index_col": [12, 18, 29, 31, 35, 52, 57, 65, 66], "consumpt": [12, 41], "dict": [12, 18, 20, 31, 37, 39, 42, 45, 50, 52, 57, 60], "from_dict": [12, 18, 52, 57, 59, 68], "fillna": [12, 14, 18, 39, 52, 64], "astyp": [12, 18, 25, 30, 37, 52], "int": [12, 13, 18, 19, 27, 29, 30, 33, 37, 40, 47, 49, 52, 53, 60, 68], "135": [12, 18, 29, 32, 49, 60, 65, 69], "187": [12, 18], "341": [12, 18], "282": [12, 18], "333": [12, 15, 18, 45, 46], "404": [12, 18], "334": [12, 18, 37], "327": [12, 18, 45, 52], "347": [12, 18, 29], "375": [12, 18, 45, 52, 55, 64, 69], "343": [12, 18, 29, 52, 55], "446": [12, 18], "624": [12, 18], "1202": [12, 18], "998": [12, 18, 29], "1142": [12, 18, 46, 49], "1380": [12, 18, 37], "1164": [12, 18, 52], "1130": [12, 18], "1224": [12, 18], "1336": [12, 18], "1204": [12, 18], "1108": [12, 18], "pt": [12, 18, 52], "s_": [12, 14, 18, 32, 37], "uniqu": [12, 19, 21, 22, 25, 29, 35, 40, 42, 50, 59, 66, 69], "eas": [12, 65], "pi_": [12, 18, 37], "h_": [12, 20], "happen": [12, 25, 43, 55, 62, 65, 66, 68], "constant": [12, 19, 24, 26, 29, 30, 40, 44, 45, 57, 59, 60, 62, 66, 69], "focu": [12, 30, 42], "beta": [12, 18, 26, 44, 58], "further": [12, 13, 18, 21, 29, 37, 40, 45, 46, 50, 53, 60, 62], "storag": 12, "ell": [12, 55], "balanc": [12, 18, 29, 30, 31, 34, 39, 41, 42, 52, 55, 57, 64, 65, 66], "delta_": [12, 18], "impli": [12, 35, 41, 42, 45, 63], "period": [12, 14, 18, 21, 25, 29, 46, 52, 66], "texttt": 12, "januari": 12, "captur": [12, 35, 38, 62, 68], "level": [12, 14, 18, 21, 24, 35, 44, 48, 51, 52, 53, 57, 58, 60, 62, 65, 66], "decemb": 12, "textrm": [12, 18], "omega_p": [12, 18], "bimproductacquisitionandinventori": [12, 52], "acquisition_pric": [12, 52], "exist": [12, 18, 22, 29, 30, 31, 32, 42, 46, 50, 52, 66, 68, 69], "stock_limit": [12, 18, 52], "month_budget": [12, 52], "prev": [12, 18, 52], "bloat": [12, 18, 52], "pi": [12, 18, 45, 52], "h": [12, 25, 27, 29, 37, 44, 45, 46, 49, 52, 53, 60, 68, 69], "delta": [12, 14, 18, 29, 52, 55, 57, 65], "acquisition_cost": [12, 18, 52], "inventory_cost": [12, 18, 52], "total_cost": [12, 18, 32, 52], "2000": [12, 18, 20, 21, 22, 24, 31, 37, 41, 45, 49, 52, 55, 57, 64], "show_table_of_pyomo_vari": 12, "from_record": [12, 18, 52], "report_pyomo_solut": 12, "nthe": 12, "equidistant_color": 12, "drawstyl": [12, 18, 52], "mid": [12, 18, 52], "set_xtick": [12, 25, 53], "tick": [12, 37, 52], "set_xticklabel": [12, 25], "965": 12, "1078": 12, "266": [12, 18, 52], "1310": [12, 18, 52], "3548": 12, "962": 12, "4312": 12, "912": [12, 18, 52], "787": [12, 18, 60], "527": [12, 18], "1275": [12, 55], "1037": 12, "751": 12, "503": 12, "785": [12, 29], "744": [12, 52], "1615": [12, 18, 52], "1428": [12, 18, 52], "1087": [12, 18, 45, 52], "805": [12, 18, 52], "472": [12, 18, 52], "4354": [12, 18], "3730": [12, 18], "6076": 12, "5078": 12, "3936": 12, "2556": 12, "1392": 12, "262": [12, 41], "3108": 12, "1453": [12, 18, 52], "1391": [12, 18, 52], "1245": [12, 18, 52], "1150": [12, 18, 52], "1032": [12, 18, 52], "946": [12, 18, 29, 52], "857": [12, 18, 52], "775": [12, 18, 52], "693": [12, 18, 52], "609": [12, 18, 52], "543": [12, 18, 52], "situat": [12, 15, 16, 21, 23, 26, 27, 29, 30, 31, 36, 42, 50, 53, 63, 64, 68], "444": 12, "559": [12, 62], "666": [12, 52], "400": [12, 18, 35, 55, 59, 62, 66], "1065": 12, "221": 12, "33": [12, 29, 37, 39, 46, 52, 60, 62, 66], "323": [12, 45, 65], "983": 12, "695": 12, "934": [12, 27], "1356": 12, "1790": 12, "1530": [12, 18], "1980": 12, "1742": 12, "1856": 12, "1673": 12, "38": [12, 29, 35, 37, 60, 62, 65, 66], "1435": 12, "1296": [12, 52], "1003": [12, 52], "718": 12, "4575": 12, "4274": 12, "5072": 12, "4074": 12, "3932": 12, "2552": 12, "1388": 12, "1241": 12, "98": [12, 29, 42, 49, 60, 62, 66], "713": [12, 17], "1377": 12, "2173": 12, "remain": [12, 13, 16, 18, 22, 35, 37, 45, 55, 57, 59, 62, 65, 69], "forc": [12, 25], "fewer": [12, 37, 53], "variabel": 12, "get": [12, 13, 17, 18, 20, 21, 29, 30, 34, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 63, 68], "rid": 12, "bimproductacquisitionandinventory_v2": 12, "non_negative_stock": 12, "supervis": [13, 42], "19th": 13, "centuri": [13, 49], "cornerston": 13, "modern": [13, 14, 22], "depend": [13, 21, 22, 33, 35, 39, 40, 47, 62, 63, 64, 66, 69], "tradit": 13, "unlik": 13, "squar": [13, 36, 42, 44, 45], "error": [13, 19, 33, 40, 51, 57, 66, 68, 69], "focus": [13, 66], "norm": [13, 42, 50, 58, 62], "robust": [13, 46, 49, 51, 56, 65, 66], "against": [13, 27, 40, 63], "outlier": 13, "methodolog": 13, "survei": [13, 37, 39], "paper": [13, 14, 21, 29, 37, 44, 45, 46, 47, 49, 57], "subash": 13, "narula": 13, "john": [13, 21, 41, 47, 64, 69], "wellington": 13, "scikit": [13, 40], "make_regress": [13, 40], "synthet": [13, 40], "n_sampl": [13, 40], "n_featur": [13, 40], "sklearn": [13, 40, 42, 50], "nois": [13, 40], "random": [13, 20, 23, 24, 27, 30, 33, 38, 40, 45, 46, 47, 48, 49, 52, 53, 55, 57, 58, 60, 62, 63, 65, 66], "seed": [13, 20, 24, 30, 33, 40, 52, 53, 55, 57, 60, 62, 63, 65, 66], "2021": [13, 29, 44, 46, 49], "prepar": [13, 25, 40, 62, 66, 68], "versu": [13, 40], "coolwarm": [13, 14], "sqrt": [13, 29, 40, 42, 44, 45, 50, 53, 62], "edgecolor": [13, 25, 27], "black": [13, 39, 45], "e_i": [13, 40], "quantifi": [13, 38, 48], "diverg": 13, "_j": [13, 14, 22, 40, 42, 50, 55, 57, 65], "m_1": [13, 35, 40], "m_k": [13, 40], "criterion": [13, 15, 29, 40, 43, 46, 49], "attempt": [13, 29, 32, 37, 39, 68], "intercept": [13, 40, 50], "approxim": [13, 42, 46, 49, 62, 63, 65], "m_i": [13, 40], "nonlinear": [13, 36, 37, 40, 44, 45, 55, 68], "wors": [13, 63], "differenti": [13, 29, 30, 42, 68], "lad_regress": [13, 40], "dimens": [13, 20, 42, 50], "shape": [13, 27, 32, 40, 42, 50, 60, 66], "style": [13, 21, 32, 34, 40, 67, 68], "ep": [13, 40, 57], "em": [13, 40, 49], "sum_of_abs_error": [13, 40], "24276": 13, "numer": [13, 29, 36, 41, 45, 48, 50, 60, 69], "nativ": [13, 26, 69], "inclus": [13, 47, 49, 69], "fit": [13, 27, 37, 40, 42, 45, 50, 62, 68], "found": [13, 21, 27, 29, 33, 35, 37, 39, 47, 49, 51, 52, 55, 59, 63, 64], "actual": [13, 17, 39, 42, 47, 50, 51, 53, 55, 59, 63, 65, 68], "y_fit": [13, 40], "distribut": [13, 14, 21, 24, 28, 29, 34, 46, 47, 49, 55, 56, 58, 63, 66, 69], "theori": [14, 46, 49, 58, 68], "histori": [14, 39], "financ": [14, 29, 45, 46, 47, 49], "invest": [14, 29, 38, 41, 43, 44, 47, 48, 49, 58], "princip": 14, "idea": [14, 15, 20, 22, 27, 45, 46, 47, 53, 57, 63, 65], "blend": [14, 25, 36], "financi": [14, 29, 31, 41, 59, 65], "secur": 14, "trade": [14, 31, 42, 44, 48, 49, 50], "off": [14, 20, 29, 42, 44, 45, 48, 50, 63, 66, 68], "introduct": [14, 25, 46, 47, 62, 64, 68], "1952": 14, "doctor": 14, "thesi": [14, 29], "harri": [14, 45, 49], "markowitz": [14, 36, 43, 49, 56], "award": 14, "share": [14, 33], "1990": [14, 21], "nobel": 14, "prize": 14, "econom": [14, 27, 29, 39, 41, 43, 44, 56], "hi": [14, 19, 24, 46, 47], "field": [14, 63, 66], "covari": [14, 38, 48, 58, 62], "constitu": 14, "varianc": [14, 38, 42, 46, 48, 50, 62], "quadrat": [14, 37, 38, 39, 48, 50, 55], "subject": [14, 24, 26, 30, 31, 32, 37, 38, 44, 46, 47, 51, 53, 59, 63, 64, 69], "alloc": [14, 27, 30, 32, 33, 37, 45, 47, 61, 64], "wealth": [14, 29, 31, 46, 47], "remark": [14, 42, 50], "1991": [14, 21, 37], "konno": 14, "yamazaki": 14, "propos": [14, 32, 37, 47, 49, 62, 68], "incorpor": [14, 23, 29, 37, 49, 69], "larg": [14, 15, 20, 22, 23, 25, 26, 29, 30, 32, 33, 35, 37, 39, 41, 42, 49, 50, 62, 63, 65, 69], "yahoo": [14, 49], "web": [14, 29, 45, 46, 49, 64], "servic": [14, 20, 29, 31, 32, 53, 62], "notori": 14, "fickl": 14, "colaboratori": 14, "upgrad": [14, 49, 62], "q": [14, 29, 41, 42, 44, 45, 46, 49, 50, 53, 60, 62, 63, 65, 66, 68], "mdate": 14, "scipi": [14, 20, 58, 60, 62], "stat": [14, 46, 49, 57, 58, 60, 62], "datetim": [14, 29, 49], "yf": [14, 20, 49], "n_year": 14, "load": [14, 20, 21, 33, 35, 50, 65, 66, 68], "consolid": 14, "split": [14, 20, 25, 29, 42, 61], "dividend": 14, "ticker": 14, "axp": [14, 49], "aapl": [14, 49], "amgn": [14, 49], "ba": [14, 49], "crm": 14, "csco": 14, "cvx": [14, 49], "di": 14, "dow": [14, 49], "gs": 14, "hd": 14, "ibm": 14, "intc": 14, "jnj": 14, "jpm": [14, 49], "ko": 14, "mcd": [14, 49], "mmm": [14, 49], "mrk": 14, "msft": [14, 49], "nke": 14, "pg": [14, 49], "trv": 14, "unh": 14, "vz": 14, "wba": 14, "wmt": 14, "xom": [14, 49], "end_dat": 14, "todai": [14, 49], "start_dat": 14, "timedelta": [14, 49], "365": [14, 49, 55, 59], "progress": [14, 44], "adj": [14, 49], "bfill": 14, "inplac": [14, 21, 45, 49, 53, 64], "ffill": 14, "logi": [14, 49], "bbox_to_anchor": [14, 22, 24, 46, 49], "log": [14, 29, 37, 46, 49, 55, 57, 66, 68], "preserv": [14, 26], "arithmet": [14, 19], "logarithm": [14, 29, 47], "assets_sc": 14, "div": 14, "iloc": [14, 49, 50, 52], "dai": [14, 25, 26, 29, 35, 59, 60], "r_": [14, 24, 32, 47, 49], "daily_return": 14, "diff": 14, "shift": [14, 16, 49], "sharex": [14, 24, 49], "xaxi": 14, "set_major_loc": 14, "yearloc": 14, "set_major_formatt": 14, "dateformatt": 14, "delta_j": [14, 65], "depict": [14, 37], "interv": [14, 21, 22, 53, 60, 68], "whose": [14, 18, 27, 38, 40, 47, 57, 58], "green": [14, 21, 29, 34, 35, 44, 53, 57], "mean_return": 14, "mean_absolute_devi": 14, "linestyl": [14, 15, 24, 39, 41, 57, 60], "comparison": [14, 20, 22, 23, 42, 63], "vs": [14, 23, 36, 48, 49, 62], "scalarformatt": 14, "gradient_barplot": 14, "color_map": [14, 35], "range_v": 14, "val": 14, "normalized_v": 14, "35": [14, 18, 29, 37, 48, 58, 65, 66], "choos": [14, 15, 18, 23, 26, 33, 42, 44, 47, 50, 55, 59], "map": [14, 19, 37, 42, 50, 66], "color_map2": 14, "revers": [14, 29, 69], "color_map3": 14, "ylgn": 14, "set_ytick": [14, 21, 22, 25, 37], "arang": [14, 18, 52], "set_yticklabel": [14, 21, 25], "0005": [14, 45], "0021": 14, "formatt": 14, "usemathtext": 14, "set_scientif": 14, "set_powerlimit": 14, "001": [14, 45], "ms": [14, 24, 29, 30, 35, 37, 39, 41, 44, 45, 46, 60, 68], "formatterx": 14, "formatteri": 14, "yaxi": [14, 23], "w_t": 14, "t_": [14, 21, 24, 62], "w_": [14, 27, 29, 33, 42, 46, 47, 62], "n_": [14, 19, 25, 29, 32], "jn_": 14, "weight": [14, 18, 21, 22, 25, 27, 29, 34, 35, 37, 42, 46, 49, 50, 53], "w_j": [14, 31], "investor": [14, 29, 38, 46, 47, 48, 49], "impos": [14, 22, 23, 25, 30, 42, 46, 55], "horizon": [14, 22, 23, 24, 52], "w": [14, 22, 23, 25, 27, 31, 33, 37, 39, 42, 44, 45, 46, 47, 49, 50, 53, 55, 59, 66], "big": [14, 18, 22, 23, 25, 26, 29, 35, 45, 57, 62], "ub": [14, 21, 27, 44, 50, 69], "enforc": [14, 25, 29, 53, 65], "diversif": 14, "u_t": [14, 23, 49], "v_t": 14, "mad_portfolio": 14, "w_lb": [14, 27], "w_ub": [14, 27], "portfolio_return": 14, "sum_of_weight": 14, "mean_portfolio_return": 14, "no_short": [14, 29], "diversifi": 14, "002": [14, 29, 45], "024": [14, 45, 68], "101": [14, 24, 29], "027": [14, 45], "004": [14, 45], "115": [14, 35, 44, 45, 49, 66], "141": [14, 37, 49], "104": [14, 29], "012": [14, 29, 45, 62], "01": [14, 29, 31, 32, 37, 38, 39, 46, 47, 48, 55], "199": [14, 62], "00740": 14, "mad_visu": 14, "mad_portfolio_weight": 14, "color_map1": 14, "grei": [14, 37], "97": [14, 21, 29, 42, 49, 50, 66], "005": [14, 45, 48, 55, 62], "21": [14, 20, 22, 24, 25, 29, 35, 44, 49, 53, 55, 62, 65], "000015": [14, 29], "0028": 14, "toler": [14, 38, 42, 48, 55, 57, 66], "central": [14, 36], "strategi": [14, 16, 17, 19, 22, 26, 29, 31, 33, 34, 38, 46, 49, 59, 62], "linspac": [14, 38, 39, 41, 44, 45, 46, 47, 49, 55, 57, 60, 64, 66], "portfolio_mean_return": 14, "portfolio_mean_absolute_devi": 14, "ro": [14, 39, 41, 45], "_0": 14, "w_0": [14, 46, 47], "mad_portfolio_withriskfreeasset": 14, "rf": [14, 49], "138": [14, 27, 49], "049": 14, "139": [14, 27, 38, 49], "117": [14, 27, 35, 62, 66], "037": 14, "906": 14, "00731": 14, "instruct": 14, "mpt": 14, "frontier": [14, 48, 49], "capit": [14, 37, 38, 44, 46, 47, 48, 49, 58], "minor": [14, 17], "veri": [14, 23, 28, 30, 33, 36, 50, 51, 53, 55, 63, 66], "depart": [14, 34, 53], "c_j": [15, 20], "x_j": [15, 20, 42], "ij": [15, 20, 22, 34, 35, 65, 66], "b_i": [15, 45], "net": [15, 26, 29, 31, 34, 39, 60, 65, 66], "margin": [15, 32, 37, 42, 50, 55, 64, 66], "uncertain": [15, 48, 55, 59, 63, 65, 66], "thorni": 15, "reserv": [15, 31], "plausibl": 15, "plant": [15, 16, 23, 35, 66], "_s": 15, "deem": 15, "probabilist": [15, 62], "conserv": [15, 34, 35, 44, 66], "bim_scenario": 15, "nprofit": [15, 39], "bim_resourc": 15, "4000": [15, 39, 45, 64], "set_index": [15, 21, 32, 35, 45, 53, 57, 65, 66], "navail": 15, "tolist": [15, 39], "scenario_profit": [15, 64], "resource_limit": 15, "worst_case_profit": [15, 63, 64], "nworst": 15, "worst_case_plan": 15, "33333": 15, "66670": 15, "outlook": 15, "worth": [15, 35, 39, 64], "investig": [15, 63, 66], "simpli": [15, 29, 32, 45, 53, 59, 62, 66], "max_profit": 15, "mean_cas": 15, "mean_case_profit": 15, "mean_case_plan": 15, "nmean": [15, 62], "17833": 15, "750": [15, 29], "expect": [15, 31, 35, 38, 46, 47, 48, 50, 51, 55, 57, 58, 60, 62, 63, 64, 65], "prefer": [15, 25, 42, 49, 65], "mean_case_outcom": 15, "worst_case_outcom": 15, "concat": [15, 52], "axi": [15, 24, 29, 30, 37, 39, 42, 45, 52, 57, 59, 62, 66], "ylim": [15, 41, 42, 50, 55, 60], "15000": [15, 41, 64], "20000": [15, 32, 64], "orang": [15, 35], "penalti": [15, 42, 48, 50, 59], "bad": [15, 22, 46, 49, 51, 63, 64], "payout": [15, 46], "favor": [15, 46], "occur": [15, 23, 29, 45, 46, 47], "why": [15, 29, 49, 57, 69], "peopl": [16, 30], "power": [16, 42, 50, 51, 57, 61, 66], "threshold": [16, 29, 30, 38, 42, 55, 57, 58, 66], "neither": [16, 30, 32], "seen": [16, 57], "still": [16, 59, 65, 66], "milo": [16, 17, 22, 23, 28, 29, 30, 33, 37, 55, 65], "mathcal": [16, 35, 42, 48, 50, 53, 62, 65, 66], "subset": [16, 25, 42, 50, 69], "tacitli": 16, "perturb": [16, 55, 63, 65], "workforc": 16, "schedul": [16, 23, 27, 28, 65, 66], "recharg": 16, "electr": [16, 35, 51, 66], "vehicl": [16, 51], "disjunct": [16, 19, 21, 24, 27, 64, 69], "cryptarithm": 16, "puzzl": 16, "strip": [16, 20, 68], "pack": [16, 37], "job": 16, "shop": [16, 56], "mainten": [16, 32], "network": [16, 29, 31, 32, 34, 39, 65], "realiz": [17, 23, 29, 30, 32, 35, 39, 48, 52, 55, 59, 62, 63, 65, 66], "wast": [17, 63], "gr": [17, 55], "accordingli": 17, "approx": [17, 39, 60, 62], "626": [17, 27, 62], "1123": 17, "762": [17, 50], "roughli": 17, "17628": 17, "loss": [17, 29, 31, 37, 42, 58, 59, 64], "ineffici": 17, "627": 17, "1124": 17, "unfeas": 17, "potenti": [17, 26, 29, 39, 42, 50, 63, 66], "intric": 17, "difficult": [17, 27, 36, 66], "safer": 17, "outlin": [17, 22, 67], "sophist": [18, 29], "acquisit": [18, 52], "protocol": 18, "supplier": [18, 20, 32, 59], "deliv": [18, 22, 32, 35, 39], "sheet": [18, 21], "unitari": 18, "batch": 18, "half": 18, "discount": [18, 44], "purchas": [18, 29, 31, 37, 39, 52, 62, 63, 64], "summari": [18, 29], "incur": [18, 20, 45, 66], "pai": [18, 32, 63], "kilogram": 18, "moment": [18, 23, 31, 35, 65], "usual": [18, 21, 22, 34, 42], "track": [18, 25, 27, 29, 62], "bui": [18, 29, 60, 64], "volum": [18, 29, 32, 35, 65], "ts": 18, "u_": [18, 34, 63], "tricki": 18, "b_": [18, 34, 35, 37, 65, 66], "r_t": [18, 49], "p_t": 18, "sure": [18, 25, 38, 46, 47, 58, 63, 65], "p_": [18, 35, 57, 59, 65, 66], "cent": [18, 32], "alpha_": 18, "setminu": [18, 65, 66], "h_p": 18, "ensur": [18, 30, 33, 35, 38, 48, 53, 57, 62, 65, 66], "natur": [18, 25, 34, 36, 37, 39, 45, 51, 55, 59, 63, 69], "etc": [18, 29], "give": [18, 35, 39, 42, 44, 45, 47, 50, 53, 63, 66], "gamma_": 18, "textup": [18, 22, 25], "10000": [18, 19, 22, 24, 26, 29, 45], "automat": [18, 65], "input": [18, 35, 38, 42, 48, 50, 53, 58, 60, 62, 63, 65, 68], "bimproduction_v1": 18, "supplying_copp": 18, "supplying_batch": 18, "price_copper_sheet": 18, "price_batch": 18, "discounted_pric": 18, "batch_siz": 18, "copper_sheet_mass": 18, "copper_bucket_s": 18, "unitary_product": 18, "unitary_holding_cost": 18, "kappa": 18, "gamma": [18, 25, 38, 42, 48, 50, 55, 63], "omega": [18, 57], "units_in_batch": 18, "copper_in_bucket": 18, "inventory_capac": 18, "pairs_in_batch": 18, "pairs_in_sheet": 18, "bought": [18, 59, 60], "quickli": [18, 29, 31], "pars": [18, 30], "table1d": 18, "retriev": [18, 29], "table2d": 18, "table3d": 18, "multiindex": [18, 53], "from_product": 18, "m1": 18, "300": [18, 22, 24, 40, 44, 45, 52, 55, 59, 62, 64], "0f": [18, 20, 27, 32, 34, 60, 66], "xtick": [18, 30, 52], "110216": 18, "1102": 18, "228": [18, 29, 45], "233": [18, 55], "274": [18, 44], "349": [18, 44, 65], "257": 18, "690": [18, 29], "326": 18, "371": [18, 45, 65, 66], "351": [18, 27], "1200": [18, 64, 66], "1300": [18, 45], "3100": 18, "72": [18, 20, 24, 29, 37, 41, 49, 60], "36": [18, 29, 37, 41, 60, 62, 64], "24": [18, 24, 25, 29, 32, 35, 39, 42, 45, 49, 53, 62, 64, 65, 66], "2528": 18, "388": 18, "90": [18, 23, 26, 27, 29, 50, 62, 63, 64], "2042": [18, 45], "bimproduction_v2": 18, "in_batch": 18, "m2": [18, 40], "1427": [18, 35], "1086": 18, "804": [18, 29], "471": 18, "juli": 19, "1924": 19, "famou": [19, 30, 49, 59], "british": 19, "magazin": 19, "strand": 19, "henri": 19, "dudenei": 19, "regular": [19, 42, 50], "perplex": 19, "digit": [19, 29], "d": [19, 21, 22, 24, 25, 27, 32, 34, 35, 37, 39, 40, 42, 45, 46, 49, 50, 53, 57, 58, 59, 63, 65, 66, 68, 69], "o": [19, 20, 32, 44, 46, 47, 49, 50, 53, 57, 68], "along": [19, 24, 27, 29, 42, 50, 51, 68], "n_a": 19, "n_e": 19, "n_n": 19, "n_d": [19, 32], "n_m": 19, "n_o": 19, "n_r": 19, "n_y": 19, "n_b": 19, "lt": 19, "veebar": [19, 21, 22, 23, 24, 26, 27], "gdp": [19, 21, 22, 23, 24, 26, 27, 64], "filter": [19, 21, 22, 25, 27, 29, 31, 35, 53, 69], "messag": [19, 20, 30, 57, 66, 68], "leading_digit_nonzero": 19, "unique_assign": 19, "dummi": [19, 30, 53], "dummy_object": 19, "transformationfactori": [19, 21, 22, 23, 24, 26, 27, 64, 68], "bigm": [19, 21, 22, 23, 24, 26, 27, 62, 64], "apply_to": [19, 21, 22, 23, 24, 26, 27, 64, 68], "letters2num": 19, "join": [19, 25, 29, 31, 34, 49], "send": [19, 30], "monei": [19, 29, 32, 44, 49, 59], "gdpopt": [19, 20], "mip": 19, "gecod": 19, "refactor": 19, "On": [20, 21, 23, 24, 35, 46, 49, 55, 59], "notic": [20, 55, 63, 68], "exercis": [20, 35, 62], "face": [20, 22], "strike": 20, "speedup": 20, "apt": 20, "qq": 20, "coinor": 20, "fulfil": [20, 37], "simultan": [20, 21, 31, 37, 47], "decid": [20, 22, 32, 35, 59, 62, 63, 66], "otherwis": [20, 25, 30, 33, 35, 42, 47, 50, 55, 57, 63], "sum_j": [20, 22, 65], "sum_i": 20, "relax": [20, 24, 37, 39, 42, 50, 57], "inadvert": 20, "around": [20, 30, 31, 52, 53, 55], "weaker": 20, "itertool": 20, "perf_count": [20, 30, 33], "pc": [20, 30, 33], "tqdm": [20, 30], "subprocess": 20, "listavailablesolv": 20, "shell_command": 20, "help": [20, 35, 57, 63, 65], "check_output": 20, "shell": 20, "decod": 20, "startswith": 20, "endswith": 20, "getsolvernam": 20, "try": [20, 25, 38, 50, 53, 63, 66, 68], "switchcutsoff": 20, "solver_nam": 20, "cut": [20, 23, 26, 27, 36, 45, 57], "elif": [20, 24, 34], "mip_cuts_bqp": 20, "mip_cuts_cliqu": 20, "mip_cuts_cov": 20, "mip_cuts_disjunct": 20, "mip_cuts_flowcov": 20, "mip_cuts_pathcut": 20, "mip_cuts_gomori": 20, "mip_cuts_gubcov": 20, "mip_cuts_impli": 20, "mip_cuts_localimpli": 20, "mip_cuts_liftproj": 20, "mip_cuts_mircut": 20, "mip_cuts_mcfcut": 20, "mip_cuts_rlt": 20, "mip_cuts_zerohalfcut": 20, "ergo": 20, "definit": [20, 38, 40, 42, 48, 50, 58, 63], "xpress": [20, 21, 22, 55], "cutstrategi": 20, "switchpresolveoff": 20, "preprocessing_presolv": 20, "limitsolvetim": 20, "max_in_second": 20, "timelimit": 20, "time_limit": 20, "maxtim": [20, 22], "closureformaxtim": 20, "compos": [20, 68], "arg": [20, 37, 42, 45, 50, 68], "kwarg": [20, 42, 50], "func": [20, 68], "initial_solv": 20, "appsi_cbc": 20, "gloa": 20, "lbb": 20, "loa": 20, "ric": 20, "mindtpi": 20, "ecp": 20, "fp": [20, 35, 37, 42], "goa": 20, "oa": [20, 46, 47], "mpec_minlp": 20, "mpec_nlp": 20, "multistart": 20, "fsolv": 20, "newton": 20, "root": 20, "secant": 20, "trustregion": 20, "facilitylocationcommon": 20, "chooseonefacil": 20, "facilitylocationweak": 20, "weak": 20, "serveifopen": 20, "facilitylocationstrong": 20, "getsolut": 20, "generatefacilitylocationinst": 20, "noffacil": 20, "nofcustum": 20, "xc": [20, 27], "randint": [20, 27, 30, 45, 57], "yc": [20, 27], "xf": [20, 21], "dist": [20, 24], "showfacilityloc": 20, "gca": [20, 29, 35, 55], "proper": [20, 48, 52, 65], "hood": 20, "clever": 20, "gurobipi": 20, "cp310": 20, "manylinux2014_x86_64": 20, "whl": 20, "mb": 20, "2k": 20, "90m": 20, "0m": 20, "32m12": 20, "31m48": 20, "eta": 20, "36m0": 20, "25hinstal": 20, "22": [20, 22, 24, 25, 29, 30, 35, 37, 39, 53, 62, 66], "manylinux1_x86_64": 20, "32m44": 20, "31m20": 20, "32m72": 20, "31m8": 20, "25hrequir": 20, "0a0": 20, "usr": 20, "local": [20, 39, 68, 69], "lib": 20, "python3": 20, "23": [20, 24, 25, 29, 35, 37, 42, 45, 53, 58, 62, 66, 69], "available_solv": 20, "appsi_cplex": 20, "appsi_gurobi": 20, "cplex_direct": 20, "cplex_persist": 20, "gurobi_direct": [20, 30, 45], "gurobi_persist": 20, "xpress_direct": 20, "xpress_persist": 20, "subplots_adjust": 20, "hspace": 20, "licens": [20, 45], "path": [20, 29, 31, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 57, 58], "file": [20, 68], "init": 20, "fico": 20, "xpauth": 20, "xpr": 20, "increasingli": [20, 30, 51, 66], "faster": [20, 23, 30, 33, 48, 63], "solveinst": 20, "fromkei": 20, "leav": [20, 27, 50, 59, 60], "rfind": 20, "core": [20, 21, 55, 57, 66, 69], "solverresult": 20, "abort": 20, "classic": [21, 22, 37, 40, 47], "hous": [21, 46, 47, 49], "patient": 21, "hospit": 21, "meal": 21, "fast": [21, 29], "restaur": [21, 22], "devic": [21, 42, 51, 63], "durat": [21, 22], "makespan": 21, "christel": [21, 22], "gueret": [21, 22], "christian": [21, 22, 25], "prin": [21, 22], "marc": [21, 22], "sevaux": [21, 22], "mp": [21, 22], "flow": [21, 28, 29, 39, 61, 66], "minut": [21, 24, 35, 62], "yellow": [21, 35], "28": [21, 25, 29, 35, 37, 39, 45, 49, 53, 62, 66], "decompos": 21, "until": [21, 22, 23, 33, 37, 39, 42, 47, 55, 59, 63], "prerequisit": 21, "json": 21, "dur": [21, 53], "paper_1": 21, "prec": 21, "paper_2": 21, "paper_3": 21, "preced": [21, 29], "start_": 21, "wise": 21, "conflict": [21, 33, 42], "jobshopmodel": 21, "jobshop_model": 21, "cross": [21, 29, 31, 39], "taskord": 21, "establish": [21, 29, 62], "minimize_makespan": 21, "finish_task": 21, "no_overlap": [21, 23, 27], "pyomomodel": 21, "0x7f90cf08ad60": 21, "jobshop_solv": 21, "jobshop": 21, "87": [21, 29, 31, 42, 62], "64": [21, 29, 32, 35, 65, 66], "59": [21, 29, 49], "nschedul": 21, "sort_valu": [21, 22, 25, 53], "mpl": 21, "bar_styl": [21, 53], "solid_capstyl": [21, 22, 24, 37, 53], "butt": [21, 22, 24, 37, 53], "text_styl": [21, 53], "bold": [21, 22, 27, 34, 37, 53], "center": [21, 22, 24, 25, 27, 34, 37, 42, 46, 49, 53, 55, 56], "va": [21, 22, 25, 27, 37, 47, 53], "dark2": 21, "jdx": 21, "mdx": 21, "xs": [21, 24], "idx": [21, 30, 42, 50], "attent": [21, 50], "dunn": 21, "2013": [21, 39, 63], "recip": 21, "mixer": 21, "reactor": 21, "recipe_to_task": 21, "recipea": 21, "recipeb": 21, "recipec": 21, "a1": 21, "a2": 21, "a3": 21, "a4": 21, "took": [21, 29], "gain": [21, 29, 30, 31], "append": [21, 29, 31, 37, 38, 48, 50, 52, 55, 57, 63, 68], "b1": 21, "b2": 21, "equip": 21, "vee": [21, 26], "jobshopmodel_clean": 21, "jobshop_model_clean": 21, "tclean": 21, "hull": [21, 23], "intermedi": [21, 39, 68], "vessel": 21, "precid": 21, "sequenc": [21, 22, 23, 29, 31, 53, 68], "zw": 21, "basi": [21, 29, 57, 62], "jobshop_model_clean_zw": 21, "mode": [21, 23, 34, 57], "appleg": 21, "david": [21, 46, 69], "william": [21, 46, 47], "cook": 21, "orsa": 21, "journal": [21, 29, 37, 44, 46, 47, 49], "149": [21, 29, 62], "156": [21, 27], "pdf": [21, 29, 37, 39, 45, 46, 47, 49, 60, 64], "beaslei": 21, "electron": 21, "mail": 21, "societi": [21, 44], "41": [21, 29, 37, 49, 62, 63, 65], "1069": 21, "1072": 21, "gu\u00e9ret": 21, "contract": [21, 32], "1999": [21, 37, 44, 45], "00034": 21, "mann": 21, "alan": 21, "1960": 21, "219": 21, "223": [21, 24], "slow": 21, "frequent": [21, 42, 50, 69], "accommod": [21, 23, 29, 33], "descreas": 21, "consequ": [21, 39, 42, 50, 62], "busi": [22, 24, 37, 45, 62, 64], "student": [22, 33, 45, 69], "courier": 22, "server": 22, "wait": [22, 29], "thread": 22, "assembl": 22, "heurist": [22, 27, 29], "address": [22, 29, 32, 37, 47, 64], "past": [22, 62], "scenario": [22, 29, 55, 57, 60, 64, 66, 68, 69], "schedule_job": 22, "seq": [22, 45], "27": [22, 25, 29, 35, 42, 53, 65], "line2d": 22, "width": [22, 29, 33, 34, 35, 39, 45, 53, 55], "window": [22, 35], "fill_between": [22, 25, 27, 37, 41, 45], "total_past_du": 22, "spine": [22, 37], "set_vis": [22, 37, 53], "custom_lin": 22, "savefig": [22, 24, 40, 52], "machinescheduling_": 22, "svg": [22, 24, 40, 52], "dpi": [22, 24, 40, 52], "bbox_inch": [22, 24, 40, 52], "31": [22, 25, 29, 65, 66], "priorit": 22, "familiar": [22, 24, 37, 41, 45, 68], "homework": 22, "circumst": [22, 69], "late": 22, "longest": 22, "twice": [22, 29, 65], "famili": [22, 24, 30, 50], "disjuct": 22, "machine_schedul": 22, "orderd": 22, "job_releas": 22, "job_dur": 22, "past_due_constraint": 22, "xor": [22, 23, 24, 26, 27, 64], "machine_deconflict": 22, "job_a": 22, "job_b": 22, "minimize_past": 22, "optimalschedul": 22, "extract_valu": [22, 57], "outperform": 22, "nonetheless": 22, "tackl": [22, 30], "z_": [22, 39, 44, 50, 62], "slower": [22, 33], "machine_schedulemilo": 22, "machine_deconflict_a": 22, "machine_deconflict_b": 22, "optimalschedule_milo": 22, "c_t": [23, 30], "shut": 23, "dure": [23, 25, 33, 35, 39, 64, 69], "x_t": 23, "abl": [23, 29, 30, 33, 45], "earn": [23, 39], "y_t": [23, 30], "overlap": [23, 25, 27], "consecut": [23, 25], "ldot": [23, 25, 27, 29, 30, 31, 33, 37, 42, 44, 50, 53, 62, 63, 65], "sai": [23, 29, 30, 31, 33, 35, 55, 65], "exclus": [23, 24, 26, 27, 37], "convex": [23, 28, 29, 37, 38, 41, 45, 46, 47, 49, 50, 55, 58], "plane": [23, 45, 53, 62], "maintenance_plan": 23, "required_mainten": 23, "required_shutdown": 23, "plot_schedul": 23, "tab20": [23, 24, 27, 33], "daili": [23, 25, 26], "set_tick": 23, "set_ticklabel": 23, "length": [23, 24, 29, 31, 37, 50], "rng": [23, 27, 52, 55, 62, 63, 65, 66], "default_rng": [23, 52, 55, 62, 63, 65, 66], "shutdown": 23, "safe": 23, "decreas": [23, 45, 66], "_t": 23, "upos_max": 23, "3334": [23, 39], "uneg_max": 23, "maintenance_planning_ramp": 23, "upo": 23, "uneg": 23, "skip": [23, 24, 37, 68, 69], "frequenc": [23, 49, 62, 66], "particularli": [23, 30, 32, 66, 69], "revis": 23, "postpon": 23, "wedg": 23, "summat": [23, 39, 41, 53, 64], "termin": [23, 30, 32, 39, 55, 59], "paradox": [23, 47], "maintenance_planning_ramp_oper": 23, "sumi": 23, "sprd": 23, "comment": [23, 63, 69], "disj": 23, "rather": [23, 29, 32, 37, 40, 45, 50, 62, 65], "hint": 23, "z_t": 23, "systemat": 23, "effort": [23, 27], "visit": 24, "sightse": 24, "tour": 24, "road": [24, 34, 51], "trip": [24, 31], "routin": [24, 69], "pre": [24, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 63, 65, 69], "rest": [24, 25, 33, 65], "stop": [24, 39, 46, 55, 63], "batteri": 24, "driver": 24, "ahead": 24, "rate": [24, 29, 31, 38, 47, 48, 58, 66], "distanc": [24, 42, 50, 69], "arbitrari": [24, 41, 53], "drive": 24, "littl": [24, 32, 35, 63, 68, 69], "c_": [24, 29, 34, 37], "150": [24, 29, 32, 33, 37, 44, 55, 60, 62, 64], "kw": [24, 42, 50], "unforeseen": 24, "event": [24, 29, 59], "never": [24, 42, 50, 55], "drop": [24, 37, 46, 66], "comfort": 24, "lost": [24, 30, 46, 63], "assumpt": [24, 29, 55, 57, 58, 62], "travel": [24, 29, 51, 62], "speed": [24, 42, 50, 66], "km": 24, "discharg": 24, "kwh": 24, "elaps": [24, 33], "d_i": [24, 27, 35, 45, 57, 65, 66], "c_i": [24, 35, 45, 57, 65, 66], "arriv": [24, 29, 32, 34, 50, 53, 55, 63], "arr": [24, 53], "dep": [24, 53], "d_": [24, 29, 59], "r_i": [24, 27, 38, 47, 48, 58, 65], "t_i": [24, 44, 45], "script": [24, 29, 62], "departur": [24, 53], "opportun": [24, 31, 59, 63, 68], "That": [24, 42, 46, 50, 53, 62, 66], "heterogen": 24, "n_charging_st": 24, "randomli": 24, "cumsum": [24, 27, 46], "triangular": 24, "02d": [24, 25, 53], "s00": 24, "112": [24, 45, 49, 57, 60], "s01": 24, "294": 24, "s02": 24, "439": 24, "s03": 24, "517": 24, "s04": 24, "598": 24, "s05": 24, "729": [24, 42], "s06": 24, "773": 24, "s07": 24, "933": 24, "s08": 24, "1070": 24, "s09": 24, "1210": [24, 55], "s10": 24, "1340": 24, "s11": 24, "1475": 24, "s12": 24, "s13": 24, "1680": 24, "s14": 24, "1798": 24, "s15": 24, "1883": 24, "s16": 24, "1998": [24, 37, 45], "s17": 24, "2087": 24, "s18": 24, "2208": 24, "19": [24, 25, 29, 32, 37, 39, 41, 48, 53, 62, 65, 66], "s19": 24, "2259": 24, "plot_stat": 24, "ys": 24, "fontsiz": [24, 27, 30, 32, 37, 39, 45, 53], "275": [24, 55], "c_max": 24, "c_min": 24, "veloc": 24, "t_lost": 24, "t_rest": 24, "r_max": 24, "ev_plan": 24, "on_rout": 24, "ev": [24, 59], "segment": 24, "c_arr": 24, "c_dep": 24, "t_arr": 24, "t_dep": 24, "r_arr": 24, "r_dep": 24, "min_tim": [24, 53], "drive_tim": 24, "rest_tim": 24, "drive_dist": 24, "thtat": 24, "disjunct_1": 24, "disjunct_2": 24, "t_stop": 24, "nan": [24, 35, 64, 66], "122000": 24, "123": [24, 27], "072000": 24, "949000": 24, "157187": 24, "79": [24, 29, 35, 49, 66], "224000": 24, "83": [24, 29, 42], "376000": 24, "208187": 24, "603187": 24, "48": [24, 29, 35, 37, 39, 45, 64, 65, 66], "672000": 24, "381187": 24, "162973": 24, "91": [24, 29, 42, 50], "512000": 24, "781787": 24, "972973": 24, "284973": 24, "584000": 24, "725973": 24, "605680": 24, "304000": 24, "879707": 24, "199680": 24, "63": [24, 29, 41, 44, 60, 62, 63], "048000": 24, "576680": 24, "079107": 24, "576000": 24, "502427": 24, "478107": 24, "124773": 24, "646666": 24, "421773": 24, "872000": 24, "772773": 24, "941662": 24, "448000": 24, "781333": 24, "168889": 24, "161662": 24, "501333": 24, "992662": 24, "433747": 24, "37": [24, 29, 37, 39, 49, 55, 62], "557333": 24, "78": [24, 29, 52, 63], "720000": [24, 29], "441085": 24, "609747": 24, "496000": 24, "463747": 24, "742253": 24, "960000": 24, "278506": 24, "887253": 24, "480000": [24, 29], "907253": 24, "visualizeevplan": 24, "xv": 24, "cv": 24, "linewidth": [24, 35], "ev_result": 24, "entitl": [25, 50], "carballo": 25, "lozano": 25, "post": [25, 53, 69], "campu": 25, "primarili": 25, "eight": 25, "morn": [25, 62], "night": [25, 35], "sundai": 25, "employe": 25, "saturdai": 25, "principl": [25, 63, 69], "ten": [25, 65], "predetermin": [25, 37], "staf": [25, 63], "seven": 25, "weekend": [25, 62], "recap": 25, "w_1": 25, "w_2": 25, "w_n": [25, 46, 47, 49], "mon": 25, "tue": 25, "sun": [25, 44, 46, 49], "slot": [25, 33], "e_": [25, 62], "fill": [25, 32, 55, 57, 64], "n_w": 25, "e_w": 25, "loop": [25, 29, 37, 55, 69], "24h": 25, "d_1": 25, "s_1": 25, "d_2": 25, "s_2": 25, "d_3": 25, "s_3": 25, "mind": [25, 63], "beyond": 25, "shift_schedul": 25, "avaiabl": 25, "wed": [25, 30], "fri": 25, "sat": 25, "suffici": [25, 29, 32, 37, 63], "required_work": 25, "forti": 25, "forty_hour_limit": 25, "required_rest": 25, "d1": 25, "s1": 25, "d2": 25, "s2": 25, "d3": 25, "s3": 25, "is_need": 25, "is__weekend": 25, "minimize_work": 25, "particip": [25, 32, 65], "patch": [25, 27, 45, 55], "rectangl": [25, 27, 32, 45, 55], "bw": [25, 47], "colormap": 25, "add_patch": [25, 27, 45, 55], "id": [25, 37, 53, 66], "categori": [25, 57, 62, 68], "categoricaldtyp": 25, "worker_typ": 25, "day_typ": 25, "shift_typ": 25, "w06": 25, "w07": 25, "w01": 25, "w03": 25, "w04": 25, "w02": 25, "w05": 25, "receiv": [25, 29, 31, 32, 37, 39, 45, 46, 51], "worker_schedul": 25, "groupbi": [25, 35, 52, 57], "nwork": 25, "to_str": 25, "w08": 25, "w09": 25, "w10": 25, "day_schedul": 25, "nshift": 25, "discret": [26, 39, 46, 57, 62], "proposit": 26, "truth": 26, "technolog": [26, 39], "production_x": [26, 69], "production_i": [26, 69], "maximize_profit": 26, "labora": 26, "laborb": 26, "highli": [26, 32, 68], "assess": [26, 42, 52, 60], "benefici": 26, "underbrac": [26, 31, 39, 59], "40x": [26, 69], "30y": [26, 69], "60x": 26, "embed": [26, 29, 42, 45, 50, 68], "old": [26, 32], "profit_constr_1": 26, "profit_constr_2": 26, "laborb_1": 26, "laborb_2": 26, "3600": [26, 59], "benefit": [26, 32, 39, 65, 68, 69], "intellig": [26, 29], "partit": [26, 62], "sub": 26, "support": [26, 29, 36, 43, 45, 46, 49, 55, 68, 69], "sp": [27, 37], "onto": [27, 50], "shortest": [27, 29], "edg": [27, 29, 30, 32, 33, 34, 53, 65, 66], "guillotin": 27, "rectangular": 27, "motiv": [27, 32, 37], "industri": [27, 35, 39, 49, 57], "placement": 27, "macro": 27, "semiconductor": 27, "layout": [27, 34, 35, 45], "wood": 27, "textil": 27, "lai": 27, "workstat": 27, "bandwidth": 27, "endpoint": 27, "co_2": 27, "oil": [27, 39], "recoveri": 27, "combinatori": 27, "belong": 27, "grow": [27, 46, 64], "exponenti": [27, 46, 47, 49], "though": [27, 47], "depth": 27, "w_i": 27, "concret": 27, "millimet": 27, "generate_box": 27, "max_width": 27, "max_depth": 27, "deepest": 27, "154": [27, 50, 52], "176": [27, 35, 66], "121": [27, 49], "175": [27, 35, 49, 55, 60, 62, 66], "196": [27, 57], "186": [27, 49], "85": [27, 29, 35, 42, 62, 66], "126": [27, 31], "99": [27, 29, 31, 33, 35, 49, 66], "352": 27, "divid": [27, 42, 46, 49, 50], "lb": [27, 44, 45, 46, 47, 49, 50, 55, 69], "front": 27, "coordin": [27, 45], "corner": 27, "degre": [27, 29, 37, 49, 50, 57, 63], "frame": 27, "trivial": [27, 46, 65], "arrang": [27, 28, 32, 42], "pack_boxes_v0": 27, "soln": [27, 30, 68], "copi": [27, 37, 39, 52, 53, 63], "show_box": 27, "facecolor": [27, 39, 45], "annot": [27, 39, 45], "292": 27, "431": [27, 55], "552": 27, "748": 27, "1060": 27, "1125": 27, "370": 27, "occupi": 27, "vertic": [27, 33, 42, 55], "drawn": 27, "reproduc": [27, 42], "lineup": 27, "prevent": 27, "doesn": [27, 30], "assur": [27, 69], "pack_boxes_v1": 27, "minimize_width": 27, "bounding_box": 27, "987": 27, "833": [27, 52], "694": 27, "573": 27, "377": 27, "191": [27, 44], "surpris": [27, 37], "did": [27, 30, 50, 66], "tightli": [27, 41], "orient": [27, 57], "pack_boxes_v2": 27, "yloc": 27, "743": 27, "814": 27, "487": 27, "366": 27, "249": [27, 44], "164": 27, "obvious": 27, "closer": 27, "stack": [27, 50, 62], "deeper": 27, "pack_boxes_v3": 27, "height": 27, "376": 27, "239": [27, 45], "256": [27, 55, 62], "307": 27, "382": 27, "338": 27, "372": [27, 29], "unchang": [27, 62], "especi": [27, 29, 33, 69], "suscept": [27, 35, 65, 66], "trespalacio": 27, "grossmann": 27, "modif": [27, 55, 63], "2017": [27, 46, 47, 49], "annal": 27, "258": 27, "747": [27, 29, 52], "759": 27, "doi": [27, 29, 39], "1007": [27, 39], "s10479": 27, "016": [27, 45], "2112": 27, "pack_boxes_v4": 27, "261": 27, "267": 27, "253": [27, 35, 44], "243": [27, 55], "dealt": 28, "oblivi": 28, "dinner": 28, "seat": [28, 61], "transport": [28, 32, 34, 39, 64], "franchis": 28, "gasolin": [28, 41], "graph": [28, 30, 32, 33, 34, 35, 53], "cryptocurr": 28, "arbitrag": 28, "energi": [28, 44, 51, 56, 61, 65], "dispatch": [28, 56, 61, 65], "forex": 28, "liquid": 29, "owner": [29, 42], "currenc": [29, 31], "wallet": 29, "transact": [29, 31], "risk": [29, 31, 38, 42, 48, 50, 57, 58, 63, 65, 66], "hypothesi": 29, "exploit": [29, 30, 31], "reach": [29, 30, 39, 55], "equilibrium": [29, 66], "fleet": [29, 51], "rapid": [29, 31], "trader": [29, 31], "creation": [29, 69], "manipul": [29, 69], "dynam": [29, 41, 69], "deafult": 29, "connect": [29, 33, 53], "command": [29, 45], "nx": [29, 30, 31, 33, 35, 53, 65, 66], "glob": 29, "3d": [29, 45], "ljust": 29, "ac": [29, 45], "alpaca": 29, "ascendex": 29, "bequant": 29, "bigon": 29, "binanc": 29, "binancecoinm": 29, "binanceu": 29, "binanceusdm": 29, "bit2c": 29, "bitbank": 29, "bitbai": 29, "bitbn": 29, "bitcoincom": 29, "bitfinex": 29, "bitfinex2": 29, "bitflyer": 29, "bitforex": 29, "bitget": 29, "bithumb": 29, "bitmart": 29, "bitmex": 29, "bitopro": 29, "bitpanda": 29, "bitru": 29, "bitso": 29, "bitstamp": 29, "bitstamp1": 29, "bittrex": 29, "bitvavo": 29, "bkex": 29, "bl3p": 29, "blockchaincom": 29, "btcalpha": 29, "btcbox": 29, "btcmarket": 29, "btctradeua": 29, "btcturk": 29, "bybit": 29, "cex": 29, "coinbas": 29, "coinbaseprim": 29, "43": [29, 37, 45, 52], "coinbasepro": 29, "coincheck": 29, "coinex": 29, "46": 29, "coinfalcon": 29, "coinmat": 29, "coinon": 29, "49": [29, 37, 49], "coinsph": 29, "coinspot": 29, "cryptocom": 29, "currencycom": 29, "53": [29, 35, 37, 40, 65, 66], "deribit": 29, "55": [29, 32, 49, 60], "digifinex": 29, "exmo": 29, "fmfwio": 29, "gate": 29, "gateio": 29, "gemini": 29, "61": [29, 45, 63], "hitbtc": 29, "hitbtc3": 29, "hollaex": 29, "huobi": 29, "huobijp": 29, "huobipro": 29, "idex": 29, "independentreserv": 29, "69": [29, 65], "indodax": 29, "70": [29, 37, 62], "kraken": 29, "krakenfutur": 29, "kucoin": 29, "73": [29, 32, 33, 37, 60, 65], "kucoinfutur": 29, "74": 29, "kuna": 29, "latoken": 29, "lbank": 29, "77": [29, 52, 66], "lbank2": 29, "luno": 29, "lykk": 29, "mercado": 29, "mexc": 29, "mexc3": 29, "ndax": 29, "novadax": 29, "oceanex": 29, "okcoin": 29, "okex": 29, "okex5": 29, "okx": 29, "paymium": 29, "phemex": 29, "92": [29, 37, 42, 50], "poloniex": 29, "93": [29, 31, 34, 42, 45, 50, 63], "poloniexfutur": 29, "94": [29, 42, 50], "probit": 29, "tidex": 29, "96": [29, 35, 37], "timex": 29, "tokocrypto": 29, "upbit": 29, "wavesexchang": 29, "wazirx": 29, "whitebit": 29, "102": [29, 32, 35, 50, 66], "woo": 29, "103": [29, 44, 60], "yobit": 29, "zaif": 29, "105": [29, 37, 60], "zonda": 29, "terminolog": [29, 33], "host": 29, "slash": 29, "quot": 29, "denomin": [29, 44], "eth": 29, "btc": 29, "ethereum": 29, "bitcoin": 29, "bid": [29, 31], "node": [29, 30, 31, 32, 33, 34, 35, 53, 57, 65, 66], "destin": [29, 32, 69], "sampl": [29, 42, 50, 55, 57, 62, 65, 66], "get_exchange_dg": 29, "minimum_in_degre": 29, "load_market": 29, "dg": [29, 53], "digraph": [29, 30, 31, 32, 34, 35, 53], "add_edg": [29, 31, 53], "in_degre": 29, "remove_nod": 29, "out_degre": 29, "topological_sort": 29, "gold": [29, 32], "lightblu": [29, 31, 32, 34], "draw_dg": 29, "rad": 29, "draw": [29, 33, 34, 45, 47, 53], "n_node": 29, "po": [29, 31, 33, 34, 35, 41, 53], "circular_layout": [29, 53], "draw_networkx": [29, 31], "with_label": [29, 31, 33, 34], "node_color": [29, 31, 33, 35], "edge_color": [29, 34, 35, 53], "node_s": [29, 31, 33, 35, 53], "font_siz": [29, 34], "arrows": [29, 31], "connectionstyl": 29, "arc3": 29, "draw_networkx_edge_label": [29, 31, 34], "edge_label": [29, 31, 34], "src": [29, 32, 69], "dst": [29, 32, 69], "exchange_dg": 29, "indegre": 29, "155": [29, 31, 50, 62], "449": 29, "match": [29, 30, 35, 57, 66], "buyer": 29, "incom": [29, 30, 31, 39, 53, 65], "highest": [29, 47], "filenam": 29, "binance_us_orderbook_sav": 29, "order_book": 29, "githubusercont": [29, 35, 42, 50, 57, 65, 66], "com": [29, 31, 35, 37, 39, 42, 44, 45, 46, 47, 48, 49, 50, 57, 65, 66, 68], "main": [29, 35, 42, 50, 57, 65, 66], "timestamp": 29, "bid_pric": 29, "bid_volum": 29, "ask_pric": 29, "ask_volum": 29, "06": [29, 39, 48, 60, 65], "529": 29, "069735": 29, "012000": 29, "069759": 29, "050000": 29, "bnb": 29, "012743": 29, "012755": 29, "ada": 29, "637": [29, 45, 63], "2168": 29, "sol": [29, 57], "000935": 29, "420000": 29, "000936": 29, "120000": [29, 39], "matic": 29, "000052": 29, "200000": [29, 35, 39], "mana": 29, "848": 29, "000027": 29, "831": 29, "1409": 29, "trx": 29, "905": 29, "000003": 29, "25352": 29, "960": 29, "000214": 29, "994": 29, "900000": 29, "891": 29, "600000": [29, 35], "usdt": 29, "07": [29, 48], "23373": 29, "920000": 29, "118619": 29, "23376": 29, "045275": 29, "065": 29, "1630": 29, "950000": 29, "770000": 29, "500000": [29, 32], "297": 29, "857700": 29, "800000": [29, 35], "891900": 29, "172": [29, 62], "348630": 29, "348750": 29, "511": 29, "busd": 29, "226": 29, "999500": 29, "293433": 29, "930000": 29, "999600": 29, "317175": 29, "730000": 29, "288": [29, 64], "857000": 29, "870000": 29, "863500": 29, "usdc": 29, "342": [29, 49], "000100": 29, "307657": 29, "000200": 29, "299181": 29, "394": 29, "203000": 29, "1664": 29, "205000": 29, "5405": 29, "447": 29, "631000": 29, "157": [29, 46, 49, 50], "632200": 29, "571": 29, "501": 29, "069280": 29, "10824": 29, "069330": 29, "10818": 29, "612": [29, 35, 55], "23371": 29, "440000": 29, "021500": 29, "830000": 29, "665": 29, "763000": 29, "670000": 29, "952500": 29, "340000": 29, "719": 29, "210000": 29, "510000": 29, "760000": 29, "255000": 29, "772": 29, "203410": 29, "623": 29, "100000": [29, 32, 45], "204540": 29, "415": [29, 44, 45, 66], "893": 29, "999900": 29, "329027": 29, "279879": 29, "620000": 29, "950": 29, "630700": 29, "632100": 29, "3054": 29, "003": [29, 45], "348000": 29, "6582": 29, "349000": 29, "997": 29, "056": [29, 62], "390000": 29, "181": [29, 49], "090000": 29, "114": [29, 35, 42, 66], "069290": 29, "10823": 29, "069390": 29, "25220": 29, "400000": [29, 35], "170": [29, 37, 49, 64], "660000": 29, "020000": 29, "990000": 29, "051000": 29, "160000": 29, "810000": 29, "215000": 29, "298": [29, 65, 66], "520000": 29, "880000": 29, "201": [29, 44, 45], "080000": 29, "368": [29, 52], "348200": 29, "8615": 29, "349400": 29, "2433": 29, "433": [29, 45], "23366": 29, "049540": 29, "23394": 29, "360000": 29, "049500": 29, "485": 29, "1629": 29, "890000": 29, "497400": 29, "1631": 29, "490000": 29, "usd": [29, 31], "010000": 29, "007463": 29, "048805": 29, "675": 29, "564550": 29, "740000": 29, "580700": 29, "730": 29, "10407": 29, "954839": 29, "680000": 29, "782": 29, "900200": 29, "342000": 29, "835": 29, "348800": 29, "348900": 29, "3000": [29, 45, 64], "942": 29, "79157": 29, "795593": 29, "204000": 29, "937": 29, "204500": 29, "09": [29, 32, 48, 57], "5050": 29, "300000": 29, "517682": 29, "170000": 29, "631600": 29, "572": 29, "999100": 29, "4534": 29, "7591": 29, "820000": 29, "858100": 29, "865900": 29, "290000": 29, "069200": 29, "225602": 29, "069400": 29, "224245": 29, "prospect": 29, "counter": 29, "rightarrow": [29, 31, 40, 42, 46, 50, 68], "v_b": 29, "v_q": 29, "held": [29, 59], "convers": [29, 31, 41, 44], "arc": [29, 30, 31, 34, 53], "highlight": [29, 35, 44, 53], "order_book_to_dg": 29, "dg_order_book": 29, "isnan": 29, "order_book_dg": 29, "5s": 29, "16f": 29, "4668": 29, "534080": 29, "190981": 29, "335068": 29, "003488": 29, "403701": 29, "038263": 29, "66844": 29, "919786": 29, "032433": 29, "1068": 29, "261938": 29, "014154": 29, "19391": 29, "118868": 29, "007746": 29, "36968": 29, "576710": 29, "038113": 29, "335570": 29, "469799": 29, "075549": 29, "000043": 29, "1058": 29, "348400": 29, "000613": 29, "815": 29, "385000": 29, "003357": 29, "313520": 29, "867384": 29, "178": [29, 35, 49, 66], "281000": 29, "000400": 29, "317048": 29, "859708": 29, "045738": 29, "502": 29, "860500": 29, "999800": 29, "299240": 29, "836200": 29, "829876": 29, "6513": 29, "748000": 29, "581778": 29, "360": [29, 35, 45, 64, 66], "986200": 29, "423770": 29, "053538": 29, "601845": 29, "003356": 29, "399": [29, 45, 59], "256350": 29, "843800": 29, "830192": 29, "499": 29, "884100": 29, "582028": 29, "1930": [29, 37], "433400": 29, "865330": 29, "953000": 29, "045662": 29, "3965": 29, "871000": 29, "411298": 29, "043556": 29, "1192": [29, 52], "226490": 29, "350": [29, 55], "624150": 29, "045704": 29, "4399": 29, "630400": 29, "862049": 29, "850": 29, "125140": 29, "1158": 29, "020820": 29, "2431": 29, "396900": 29, "1140": 29, "900820": 29, "970718": 29, "954935": 29, "163968": 29, "852255": 29, "866151": 29, "1046": 29, "700000": 29, "795513": 29, "920652": 29, "830220": 29, "1129": 29, "218750": 29, "583281": 29, "361": 29, "489944": 29, "7592": 29, "579182": 29, "045733": 29, "927311": 29, "409222": 29, "15562": 29, "637700": 29, "itself": [29, 63], "unifi": 29, "treatment": [29, 31, 39, 62, 64], "i_0": 29, "i_1": [29, 63], "i_2": [29, 63], "i_": 29, "i_n": 29, "prod_": [29, 47], "i_k": 29, "limits_": [29, 30, 53, 63, 65], "cyclic": 29, "permut": 29, "daunt": 29, "bellman": [29, 30], "ford": [29, 30, 45], "negative_edge_cycl": 29, "luckili": [29, 36], "find_negative_cycl": 29, "thicker": 29, "sum_weight": 29, "arb": [29, 31], "bp": [29, 37], "exp": [29, 46, 47, 49, 50], "nreturn": 29, "dollar": 29, "smallest": [29, 33, 39], "crude": [29, 39], "pick": [29, 39, 47, 65], "accord": [29, 31, 55], "whatev": 29, "prohibit": [29, 31, 42, 50], "nevertheless": [29, 59], "understand": [29, 63, 65, 69], "simple_cycl": 29, "overlaid": 29, "dens": [29, 42, 50], "203147": 29, "974": 29, "n_cycles_to_list": 29, "774": 29, "699": 29, "673": 29, "n_cycles_to_show": 29, "fresh": 29, "reli": [29, 45, 66, 68], "secondli": 29, "adjac": [29, 33], "o_j": 29, "outgo": [29, 30, 31, 53, 65], "i_j": 29, "v_j": 29, "v_": [29, 37, 66], "v_0": 29, "crypto_model": 29, "v0": 29, "chain": [29, 31, 68], "t0": [29, 30, 31], "t1": [29, 30, 31, 47], "total_trad": 29, "edge_capac": 29, "out_nod": [29, 53], "in_nod": [29, 53], "vt": 29, "weath": 29, "2d": [29, 42, 45, 50], "10009": 29, "006": [29, 45], "evolut": [29, 52], "visibl": 29, "scheme": 29, "alon": [29, 42, 50], "00000": [29, 31, 44, 49], "00004": 29, "4953": 29, "27900": 29, "5046": 29, "73030": 29, "4955": 29, "75660": 29, "5049": 29, "25470": 29, "4958": 29, "23550": 29, "26110": 29, "5048": 29, "74980": 29, "4957": 29, "73970": 29, "30000": [29, 32, 41], "22570": 29, "00600": 29, "transcat": 29, "ntransact": 29, "1e": [29, 31, 42, 50], "6f": [29, 49], "774300": 29, "278972": 29, "225700": 29, "279000": 29, "261104": 29, "730323": 29, "730300": 29, "749800": 29, "261100": 29, "756626": 29, "756600": 29, "739696": 29, "254675": 29, "697500": 29, "279900": 29, "300020": 29, "277320": 29, "739700": 29, "000030": 29, "000012": 29, "235474": 29, "000042": 29, "976057": 29, "235500": 29, "794970": 29, "0000002": 29, "precis": [29, 33, 42, 45, 50, 60], "printout": 29, "00746": 29, "28100": 29, "69750": 29, "85971": 29, "20004": 29, "04600": 29, "20012": 29, "050820": 29, "05354": 29, "27732": 29, "87000": [29, 39], "62000": 29, "05100": 29, "20007": 29, "97600": 29, "976000": 29, "16397": 29, "77430": 29, "17000": [29, 64], "xlabel": [29, 30, 35, 38, 40, 46, 48, 53, 55, 57, 64, 66, 68], "ylabel": [29, 30, 35, 38, 40, 46, 48, 55, 57, 64, 66, 68], "gcf": 29, "realiti": [29, 43], "presenc": [29, 39, 47, 50], "affect": [29, 51, 53, 55, 60, 61, 63], "streamlit": 29, "detect": [29, 30, 31, 42, 50], "fetch_order_book": 29, "criteria": [29, 44], "get_order_book": 29, "get_ord": 29, "millisecond": 29, "fetch": 29, "to_datetim": 29, "mininum_in_degre": 29, "688": 29, "0534": 29, "0535": 29, "01680": 29, "34422": 29, "5300": 29, "04934": 29, "34450": 29, "7000": [29, 32], "00128": 29, "017": [29, 45, 62], "1840": 29, "2700": 29, "07030": 29, "1841": 29, "6900": 29, "09630": 29, "bat": 29, "2032": 29, "659": 29, "2044": 29, "213": [29, 45, 65], "5500": 29, "27000": 29, "8500": [29, 64], "143": [29, 42, 49], "614": 29, "34358": 29, "6800": 29, "00504": 29, "34467": 29, "3700": 29, "00290": 29, "144": [29, 37, 42], "712": 29, "1834": 29, "3500": [29, 32, 39], "11010": 29, "1862": 29, "0600": 29, "21520": 29, "145": 29, "828": 29, "33763": 29, "7400": 29, "00030": 29, "35062": 29, "9500": 29, "146": [29, 45], "036": [29, 39], "1635": 29, "0100": [29, 31, 35, 66], "02700": 29, "1872": 29, "4900": 29, "00120": 29, "147": [29, 62], "430": [29, 69], "0000": [29, 31, 32, 39], "4030": 29, "0006": [29, 45], "620": 29, "148": [29, 62], "search_tim": 29, "timeout": 29, "arb_threshold": 29, "fname": 29, "orderbook": 29, "utcnow": 29, "strftime": 29, "to_csv": 29, "crytocurr": 29, "academ": [29, 39, 45, 49], "earli": [29, 47, 69], "recurr": 29, "persist": 29, "makarov": 29, "schoar": 29, "2020": [29, 44, 46, 47, 49], "319": 29, "cr\u00e9pelli\u00e8r": 29, "zeisberg": 29, "ssrn": [29, 46, 49], "3606053": 29, "sol3": [29, 35, 46, 49], "cfm": [29, 46, 49], "abstract_id": [29, 46, 49], "literatur": [29, 39, 44], "site": 29, "peduzzi": 29, "jame": 29, "xu": [29, 44, 60], "septemb": 29, "jack": 29, "THE": 29, "rippler": 29, "decentr": 29, "xrp": 29, "ledger": 29, "3rd": 29, "confer": 29, "blockchain": 29, "innov": [29, 69], "brain": 29, "pp": [29, 45, 46, 47, 49], "ieee": [29, 35], "arxiv": [29, 39, 46, 47, 49], "org": [29, 37, 39, 45, 46, 47, 49], "2106": 29, "16158": 29, "bruzg\u0117": 29, "\u0161apkauskien\u0117": 29, "2022": [29, 31, 39, 40, 46, 49], "north": [29, 46, 47, 49], "american": [29, 49], "101562": 29, "1016": 29, "najef": 29, "brief": [29, 68], "107731": 29, "anilpai": 29, "medium": [29, 69], "8938dcea56ea": 29, "crypto": [29, 31], "byrn": 29, "novel": 29, "decentralis": 29, "www": [29, 31, 37, 39, 44, 45, 46, 47, 49, 64, 68], "scss": 29, "tcd": 29, "ie": 29, "donal": 29, "omahoni": 29, "bfg": 29, "202021": 29, "stephenbyrnedissert": 29, "levu": 29, "berko": 29, "chyrun": 29, "panasyuk": 29, "hrubel": 29, "ceur": 29, "workshop": 29, "proceed": 29, "407": 29, "440": [29, 66], "ws": 29, "vol": [29, 46, 49], "2917": 29, "paper32": 29, "crypocurr": 29, "angeri": 29, "agraw": 29, "evan": 29, "chitra": 29, "boyd": [29, 45, 46, 47, 49], "maker": [29, 57], "asset": [29, 38, 41, 46, 47, 48, 49, 58], "preprint": [29, 46, 47, 49], "2107": 29, "12484": 29, "baincapitalcrypto": 29, "organ": [30, 69], "guest": 30, "mingl": 30, "k_": [30, 46, 49], "sit": 30, "m_f": 30, "far": [30, 36, 63], "ft": 30, "fail": [30, 32, 35, 37], "networkx": [30, 31, 33, 34, 35, 53, 65, 66], "seat_alloc": 30, "kmax": 30, "get_solut": 30, "verbos": [30, 42, 50, 69], "termination_condit": [30, 33, 48, 55, 57, 58, 59, 60, 66], "six": [30, 41, 45], "five": 30, "seatplan": 30, "peculiar": 30, "divers": 30, "bring": [30, 42], "seat_allocation_minimize_group_s": 30, "unfortun": 30, "seat_allocation_minimize_t": 30, "necessarili": 30, "team": [30, 53, 69], "realli": [30, 63], "stand": 30, "arrow": [30, 39], "think": [30, 51, 62, 65], "rephras": 30, "everyon": [30, 32], "seating_allocation_maximize_flow_to_t": 30, "slightli": [30, 35, 40, 45, 48, 51, 53, 55, 65], "door": 30, "target": [30, 42, 50, 62], "nor": [30, 62], "unimpress": 30, "sound": 30, "implicitli": 30, "invok": 30, "model_as_network": 30, "digraphi": 30, "add_edges_from": 30, "flow_valu": 30, "flow_dict": 30, "maximum_flow": 30, "f0": 30, "f1": 30, "f2": 30, "f3": 30, "f4": 30, "f5": 30, "t2": [30, 47], "t3": 30, "t4": 30, "tailor": 30, "magnitud": [30, 42, 55, 63], "cpu": 30, "405": [30, 62], "\u00b5s": 30, "413": 30, "wall": [30, 44, 46, 47, 49], "414": 30, "max_flow": 30, "reset": 30, "component_data_object": 30, "ctype": 30, "descend_into": 30, "set_valu": 30, "nmax": 30, "mmax": 30, "runtim": 30, "fastest": 30, "transpos": [30, 52], "rotat": [30, 37, 44, 45, 50, 53], "rotation_mod": 30, "anchor": 30, "exchang": 31, "framework": [31, 32, 46, 49], "bank": [31, 49], "japanes": 31, "yen": 31, "jpy": 31, "00761": 31, "eur": 31, "140": [31, 63, 64], "131": [31, 42], "585": 31, "longrightarrow": [31, 68], "9954": 31, "fee": [31, 32], "broker": 31, "needless": 31, "reliabl": [31, 42, 48, 50], "eager": [31, 32], "foreign": 31, "globe": 31, "almost": [31, 42, 46, 47, 57, 63], "autom": 31, "0075": [31, 32], "133": 31, "leftarrow": 31, "remind": 31, "exchangen": 31, "333333": 31, "tell": 31, "ourselv": 31, "phase": [31, 35, 37], "unencumb": 31, "ne": 31, "credit": 31, "spread": 31, "initial_condit": 31, "max_trad": 31, "nt": 31, "niniti": 31, "gbp": 31, "chf": 31, "cad": 31, "aud": 31, "hkd": 31, "13160": 31, "97000": 31, "82238": 31, "44860": 31, "display_graph": 31, "add_nod": [31, 53], "nodelist": 31, "spring_layout": 31, "node_shap": 31, "11861": 31, "91270": 31, "45140": 31, "bloomberg": 31, "tradingview": 31, "extract": [31, 32, 42, 63, 66, 68], "1096": 31, "0084": 31, "3148": 31, "0677": 31, "7915": 31, "7376": 31, "1279": 31, "9012": 31, "0076": 31, "1849": 31, "9622": 31, "7133": 31, "6647": 31, "1153": 31, "6100": 31, "6097": 31, "9484": 31, "6389": 31, "8816": 31, "4867": 31, "1724": 31, "7606": 31, "8439": 31, "0064": 31, "8121": 31, "6020": 31, "5610": 31, "0973": 31, "9366": 31, "0393": 31, "0079": 31, "2314": 31, "7413": 31, "6908": 31, "1198": 31, "2634": 31, "4019": [31, 52], "0107": 31, "6611": 31, "3489": 31, "9319": 31, "1616": 31, "3557": 31, "5043": 31, "0114": 31, "7825": 31, "4475": 31, "0731": 31, "1734": 31, "8175": 31, "6743": 31, "0659": 31, "2784": 31, "3467": 31, "1877": 31, "7662": 31, "commod": [32, 41, 64], "invit": [32, 45], "pitfal": 32, "uneven": 32, "refin": [32, 37, 39], "didact": [32, 45], "shadow": 32, "yaya": 32, "ga": [32, 35, 39, 65, 66], "grub": 32, "franchisor": 32, "own": [32, 41], "franchise": 32, "truck": [32, 45], "gallon": 32, "charg": [32, 45], "0875": 32, "boost": [32, 50], "alic": 32, "badri": 32, "cara": 32, "dan": 32, "emma": 32, "fujita": 32, "grace": 32, "helen": 32, "313": 32, "subscript": 32, "ship": [32, 69], "d_d": 32, "shipment": [32, 39], "html": [32, 34, 45, 48, 58, 65], "40000": 32, "50000": 32, "45000": 32, "80000": 32, "br": 32, "to_fram": 32, "cost_to_destin": 32, "shipped_to_destin": 32, "shipped_from_sourc": 32, "supply_constraint": 32, "demand_constraint": [32, 69], "8000": [32, 45], "model1_result": 32, "27387": 32, "26113": 32, "2625": 32, "2490": 32, "3240": 32, "12000": 32, "38000": 32, "4375": 32, "4321": 32, "1600": 32, "3937": 32, "60000": 32, "6550": 32, "450": [32, 55, 66], "1575": 32, "1350": 32, "225": [32, 52, 55, 64, 69], "goe": [32, 50], "enthusiasm": 32, "rho": [32, 52, 62], "transport_v2": 32, "delivery_r": 32, "rate_to_destin": 32, "49754": 32, "245": [32, 55], "difficulti": 32, "remedi": 32, "paid": 32, "distributor": [32, 39], "surprisingli": 32, "inspect": [32, 42, 51, 57, 63], "payment": [32, 63], "imposs": [32, 57], "incent": 32, "transport_v3": 32, "allocate_cost": 32, "model3_result": 32, "2502": 32, "122": [32, 39], "3337": 32, "162": 32, "4171": 32, "203": [32, 62], "1668": 32, "3754": 32, "183": [32, 49], "6674": 32, "325": [32, 55], "1501": 32, "inadequ": 32, "marker": [32, 46, 57], "470": 32, "negoti": 32, "rates_index": 32, "083": 32, "081": 32, "09300000000000001": 32, "10099999999999999": 32, "133000": 32, "x_index": 32, "nobject": 32, "nconstraint": 32, "ndecis": 32, "sensit": [32, 42, 50, 51, 69], "0045": 32, "0855": 32, "0795": 32, "node_attr": 32, "edge_attr": 32, "nsuppli": 32, "nship": 32, "nsen": 32, "fillcolor": 32, "ndemand": 32, "lectur": [33, 45], "hall": 33, "indirect": 33, "hire": 33, "temporari": 33, "staff": 33, "invigil": 33, "obei": 33, "undirect": 33, "th": [33, 38, 44, 57, 58, 65], "ik": [33, 63], "w_k": 33, "jk": [33, 63], "tri": [33, 40], "chromat": 33, "graph_color": 33, "besid": [33, 65, 66], "too": [33, 37, 58, 63, 66], "catch_infeas": 33, "diagnos": 33, "rais": [33, 45, 64], "edge_constraint": 33, "node_constraint": 33, "used_color_constraint": 33, "number_used_color": 33, "catch": [33, 66], "load_solut": 33, "get_color": [33, 41, 46, 60], "unique_label": 33, "color_palett": 33, "label_to_color": 33, "erdo": 33, "renyi": 33, "gnp_random_graph": 33, "is_connect": 33, "kamada_kawai_layout": [33, 34, 35], "start_tim": 33, "terminationcondit": 33, "greedi": 33, "nxcolor": 33, "greedy_color": 33, "logist": [34, 39], "retail": [34, 60], "contin": 34, "outlet": 34, "correspondingli": 34, "character": [34, 37], "b_j": 34, "transship": 34, "rail": 34, "airwai": 34, "sent": [34, 51], "cheapest": 34, "mcf": 34, "draw_networkx_label": [34, 53], "draw_label": 34, "draw_edge_label": 34, "draw_networkx_edg": [34, 35, 53], "draw_edg": 34, "markdown": [34, 48, 58, 65], "draw_network": 34, "edge_flow": [34, 35], "font_color": [34, 53], "edgelist": 34, "arrowstyl": 34, "shifted_po": 34, "font_weight": 34, "mincostflow": 34, "incoming_flow": [34, 35, 65, 66], "outgoing_flow": [34, 35, 65, 66], "flow_conserv": [34, 35, 65, 66], "flow_upper_bound": 34, "noptim": 34, "countri": 35, "renew": [35, 44, 65, 66], "nation": [35, 65], "transmiss": [35, 47], "citi": [35, 44, 57], "district": [35, 57], "inject": 35, "p_i": [35, 47, 57, 65, 66], "f_": [35, 59, 65, 66], "easier": [35, 57, 63], "ji": [35, 65, 66], "control": [35, 41, 57, 66], "school": [35, 39, 69], "law": 35, "theta_": 35, "angl": [35, 66], "mathbf": [35, 47], "theta": [35, 40, 63, 65, 66], "theta_i": [35, 65, 66], "theta_j": [35, 65, 66], "constrat": 35, "dc": 35, "admit": 35, "cheaper": [35, 65], "moreov": [35, 42, 48, 50], "179": [35, 45, 49, 62, 66], "ast": [35, 65, 66], "literal_ev": [35, 65, 66], "make_tupl": [35, 65, 66], "base_url": [35, 57, 65, 66], "nodes_df": [35, 57, 65, 66], "edges_df": [35, 65, 66], "node_id": [35, 57, 65, 66], "to_dict": [35, 42, 50, 57, 65, 66], "edge_id": [35, 65, 66], "example_nod": 35, "example_edg": 35, "visualize_network": 35, "buse": 35, "solar": [35, 65, 66], "ffcb36": 35, "wind": [35, 51, 57, 61, 65], "hydro": [35, 65, 66], "a5efff": 35, "coal": [35, 65, 66], "686868": 35, "00ab4": 35, "b6b6b6": 35, "vertex2color": 35, "energy_typ": [35, 65, 66], "v2c_list": 35, "draw_networkx_nod": [35, 53], "595959": 35, "set_edgecolor": 35, "set_axis_off": 35, "cyan": 35, "dark": 35, "solarfarm": 35, "windmil": 35, "p_min": [35, 57, 65, 66], "p_max": [35, 57, 65, 66], "c_var": [35, 57, 65, 66], "is_gener": [35, 65, 66], "boolean": [35, 63], "397": 35, "948321": 35, "873": 35, "220980": 35, "993982": 35, "720": 35, "202306": 35, "484861": 35, "180": [35, 44, 45, 62, 64, 69], "602933": 35, "916": 35, "330000": 35, "1146": 35, "1175": 35, "194": [35, 45], "110": [35, 42, 44, 49, 66], "142": [35, 38], "186145": 35, "921628": 35, "884795": 35, "961682": 35, "113": [35, 49, 60, 62, 66], "396000": 35, "864042": 35, "108": [35, 41, 64], "311328": 35, "116": [35, 45, 66], "703998": 35, "242759": 35, "f_max": [35, 65, 66], "271": 35, "5849": [35, 66], "3133": [35, 66], "316": [35, 45], "2593": [35, 66], "315": 35, "5185": [35, 66], "174": [35, 49, 62, 66], "9059": [35, 66], "177": [35, 49, 62, 66], "8216": [35, 66], "246": [35, 45, 66], "9136": [35, 66], "12992": 35, "easiest": [35, 38, 48, 58], "lab": 35, "attr1": 35, "attr2": 35, "bit": 35, "confus": [35, 42, 50], "921627803299574": 35, "realist": [35, 66], "pattern": [35, 63], "96th": 35, "averag": [35, 39, 45, 52, 64, 65, 66], "opf1": 35, "power_gener": 35, "power_flow": 35, "q1": [35, 47], "fab": 35, "fm": 35, "abs_flow": 35, "flows_upper_bound": [35, 65], "generation_upper_bound": [35, 65, 66], "generation_lower_bound": [35, 65, 66], "sol1": 35, "102898": 35, "emit": 35, "co2": 35, "carbon": 35, "neutral": 35, "dutch": 35, "govern": 35, "inact": 35, "opf2": 35, "q2": [35, 47], "generation_upperound": 35, "max_gas_pl": 35, "max_coal_pl": 35, "sol2": 35, "53120": 35, "pose": 35, "threat": 35, "lift": [35, 68], "m_0": 35, "ym_2": 35, "opf3": 35, "q3": 35, "max_total_renewable_product": 35, "renewable_energy_product": 35, "41623": 35, "view": [35, 58, 62, 65], "wherea": [35, 57, 63, 66], "f_1": [35, 53], "f_2": [35, 53], "f_3": 35, "expens": [35, 39, 42, 44, 50, 63, 64, 65, 66], "mitig": [35, 63], "solvabl": [36, 68], "milk": 36, "pool": 36, "ordinari": 36, "ol": 36, "classif": [36, 50], "refineri": [36, 39], "conic": [36, 44, 46, 48, 49, 55, 58], "anyon": 37, "broadli": 37, "minlo": [37, 55], "couenn": 37, "ida": [37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 68], "compil": [37, 55], "pse": [37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 68], "os": [37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 66], "milo_solv": 37, "minlo_solv": [37, 55], "d_f": 37, "f_f": 37, "gilmor": 37, "gamori": 37, "1961": 37, "rapidli": 37, "s_p": 37, "pf": 37, "make_pattern": 37, "partial": [37, 42], "num_cut": 37, "cuts_dict": 37, "plot_pattern": 37, "cmap": 37, "tab10": 37, "background": 37, "y_lo": 37, "y_hi": 37, "overlai": 37, "xa": 37, "xb": 37, "clean": [37, 69], "bottom": 37, "cut_pattern": 37, "plot_nonzero_pattern": 37, "wrapper": 37, "unus": [37, 41, 63], "_2": [37, 40, 42, 44, 45, 48, 50, 55, 58, 63], "n_p": 37, "x_p": 37, "symmetri": 37, "substitut": [37, 45, 63, 69], "cone": [37, 46, 47, 48, 49, 50], "bilinear_cut_stock": 37, "f_total_demand": 37, "a_bound": 37, "assign_each_stock_to_pattern": 37, "feasible_pattern": 37, "max_pattern": 37, "shouldn": 37, "_f": [37, 53], "generate_pattern_bilinear": 37, "xp": [37, 60], "ap": 37, "sum_to_on": 37, "add_pattern": 37, "new_pattern": 37, "pi_f": 37, "sf": [37, 69], "generate_pattern_du": 37, "subprob": 37, "marginal_valu": 37, "stock_length": 37, "reduced_valu": 37, "somewhat": [37, 68], "generate_patterns_bilinear": 37, "timeit": 37, "generate_patterns_du": 37, "std": [37, 42, 62], "137": [37, 42, 49, 62], "exhaust": [37, 39], "empir": [37, 55, 62, 65], "cut_stock": 37, "non_zero_indic": 37, "jl": 37, "stabl": [37, 45, 50], "cutting_stock_column_gener": 37, "en": [37, 46, 47], "wiki": [37, 46, 47], "cutting_stock_problem": 37, "roll": 37, "5600": [37, 59], "1520": 37, "1560": 37, "1710": 37, "1820": 37, "1880": 37, "2050": 37, "2100": 37, "2140": [37, 63], "2150": 37, "2200": 37, "2x4": 37, "lumber": 37, "arm": 37, "outdoor": 37, "sofa": 37, "ana": 37, "imag": [37, 42, 50], "spreadsheet": 37, "1zx7kj2kwtggyqev_a3log0nqsxsc38ykk53a7vgwafu": 37, "gid": 37, "1104632299": 37, "read_google_sheet": 37, "sheet_id": 37, "sheet_nam": 37, "lowercas": [37, 69], "str": [37, 42, 50, 52, 55], "gviz": 37, "tq": 37, "tqx": 37, "settings_df": 37, "nset": 37, "finish_df": 37, "nfinish": 37, "stocks_df": 37, "nstock": 37, "kerf": 37, "120": [37, 44, 46, 63, 64], "168": 37, "192": [37, 64], "216": 37, "240": [37, 45, 64], "2x6": 37, "pivot_t": [37, 39], "aggfunc": 37, "sort_index": 37, "gomori": 37, "trim": [37, 68], "849": 37, "859": 37, "jstor": [37, 45], "1963": 37, "863": [37, 62], "888": 37, "haessler": 37, "sweenei": 37, "european": [37, 64, 66], "delorm": 37, "iori": 37, "martello": 37, "2016": [37, 41, 44, 46, 47, 49], "exact": [37, 45, 51, 66], "255": [37, 45, 58], "sciencedirect": [37, 44, 45], "implemen": 37, "mathwork": 37, "matlab": 37, "aimm": 37, "scip": 37, "pulp": 37, "harjunkoski": 37, "westerlund": 37, "p\u00f6rn": 37, "skrifvar": 37, "minlp": [37, 39], "594": 37, "603": 37, "abo": 37, "fi": 37, "engin": [37, 39, 44, 64], "s471": 37, "s474": 37, "ipopt": [38, 40, 42, 44, 45, 46, 47, 48, 49, 50, 55, 57, 58, 68], "mosek_direct": [38, 40, 44, 45, 46, 47, 48, 49, 50, 57, 58], "stochast": [38, 51, 52, 54, 57, 60, 63, 66], "she": 38, "riski": [38, 49, 58], "tild": [38, 40, 48, 58], "mu": [38, 48, 58, 62], "sigma": [38, 48, 58, 62], "mathrm": [38, 47], "compromis": [38, 46], "willing": [38, 57], "exclud": [38, 69], "xtild": [38, 48, 58], "bounded_vari": [38, 48], "total_asset": [38, 48, 58], "predefin": 38, "linalg": [38, 42, 48, 50], "eigval": [38, 42, 48, 50], "rand": [38, 48, 53, 58], "x_3": [38, 48, 58], "158": 38, "561": 38, "gamma_valu": 38, "stream": 39, "mixtur": 39, "petroleum": 39, "sector": [39, 46], "tankag": 39, "train": [39, 43, 49], "pipelin": 39, "agricultur": 39, "mine": 39, "wastewat": 39, "composit": [39, 44], "solver_lo": [39, 40, 42], "solver_nlo": [39, 42, 55], "bulk": 39, "fat": 39, "farm": [39, 51, 64], "afford": 39, "grade": 39, "tank": 39, "station": 39, "diagram": [39, 45], "noth": [39, 47], "min_fat": 39, "045": 39, "6000": [39, 41, 45, 64], "030": [39, 44], "2500": [39, 41, 52, 60], "040": 39, "033": 39, "050": [39, 55], "local_suppli": 39, "remote_suppli": 39, "ncustom": 39, "nsupplier": 39, "_c": 39, "_l": 39, "v1": 39, "flowrat": 39, "fat_cont": 39, "81000": 39, "2666": 39, "1333": 39, "justifi": [39, 47], "v2": 39, "122441": 39, "1764": 39, "4235": 39, "2352": 39, "1647": 39, "extent": [39, 65], "giveawai": 39, "surpass": 39, "parameter": 39, "y_c": 39, "_r": [39, 50], "enter": 39, "implic": 39, "profound": 39, "repeatedli": [39, 57], "milk_pooling_bilinear": 39, "v3": 39, "customer_demand": 39, "pool_bal": 39, "pool_qual": 39, "customer_qu": 39, "p_plot": 39, "025": [39, 45, 55], "f_plot": 39, "contrast": [39, 41], "minima": 39, "thee": 39, "w_c": [39, 46], "incomplet": 39, "isn": 39, "concentr": [39, 51, 68], "conc": 39, "underlin": 39, "mccormick": 39, "envelop": 39, "milk_pooling_convex": 39, "hh": 39, "lh": 39, "hl": 39, "report_solut": 39, "npool": 39, "4f": [39, 44, 46, 47, 60], "m_convex": 39, "0400": 39, "111411": 39, "112500": 39, "1029": 39, "4118": 39, "43235": 39, "2956": 39, "4852": 39, "9412": 39, "179558": 39, "8244": 39, "4117": [39, 45], "6471": 39, "185294": 39, "1195": 39, "0421": 39, "312000": 39, "1470": 39, "5882": 39, "0359": 39, "111": [39, 49, 53], "412": 39, "search": [39, 55, 63], "xy": [39, 45], "xytext": [39, 45], "106000": 39, "arrowprop": [39, 45], "shrink": [39, 45], "headwidth": [39, 45], "miss": [39, 52], "scan": [39, 53], "m_est": 39, "105000": 39, "100088": 39, "270000": 39, "3823": 39, "5294": 39, "141470": 39, "5878": 39, "2676": 39, "4706": 39, "120441": 39, "1770": 39, "088": 39, "fall": 39, "441": 39, "discrep": 39, "milk_pooling_bilinear_nlo": 39, "localmin": 39, "bound_frac": 39, "m_global": 39, "035": 39, "0330": 39, "102833": 39, "0001": 39, "2333": 39, "8333": 39, "375000": 39, "0037": 39, "4166": 39, "6667": 39, "154166": 39, "6683": 39, "0031": 39, "0012": 39, "1666": 39, "0020": 39, "converg": [39, 63], "pure": 39, "luck": 39, "kkt": 39, "suboptim": 39, "trigger": 39, "m_global2": 39, "bo": 39, "0245": 39, "96000": 39, "0495": 39, "93000": 39, "0450": 39, "101392": 39, "3333": [39, 46], "3833": 39, "161000": 39, "0016": 39, "2549": 39, "0196": 39, "94313": 39, "7265": 39, "6117": 39, "275294": 39, "1203": 39, "augment": [39, 46, 50], "awai": [39, 68], "prototyp": 39, "feed": [39, 64, 68], "un": 39, "haverli": 39, "1978": 39, "fuel": [39, 41], "recurs": [39, 68], "acm": 39, "sigmap": 39, "bulletin": 39, "dl": 39, "1145": 39, "1111237": 39, "1111238": 39, "encyclopedia": 39, "patholog": [39, 47], "visweswaran": 39, "springer": [39, 45, 62, 64], "referenceworkentri": 39, "978": 39, "387": [39, 55], "74759": 39, "0_375": 39, "misen": 39, "flouda": 39, "researchg": 39, "profil": [39, 49], "ruth": 39, "public": 39, "242290955_advances_for_the_pooling_problem_modeling_global_optimization_and_computational_studies_survei": 39, "0046352e7d1dfeb40f000000": 39, "gupt": 39, "ahm": 39, "dei": 39, "cheon": 39, "georgia": 39, "institut": 39, "atlanta": 39, "exxonmobil": [39, 49], "annandal": 39, "nj": 39, "db_file": 39, "2012": [39, 44], "3658": 39, "ceccon": 39, "galini": 39, "107660": 39, "2105": 39, "01687": 39, "probabl": [39, 46, 47, 49, 57, 59, 60, 62, 63], "underappreci": 39, "programm": 39, "wfp": 39, "cccc": 40, "unconstrain": 40, "hessian": 40, "nabla": 40, "resort": [40, 44, 65], "ols_regress": 40, "sum_of_square_error": 40, "498473126416755": 40, "428094680287527": 40, "428576": 40, "4130268": 40, "y_fit2": 40, "explan": [41, 50], "unusu": 41, "seborg": 41, "edgar": 41, "mellichamp": 41, "doyl": 41, "dale": 41, "thoma": 41, "duncan": 41, "franci": 41, "wilei": 41, "son": 41, "24000": 41, "28000": 41, "volumetr": 41, "feed_cost": 41, "process_cost": 41, "860275": 41, "832": 41, "explicit": [41, 53, 66, 69], "implicit": 41, "sharp": 41, "cxvpy": 41, "to_numpi": [41, 42, 50], "8620663473": 41, "results_crud": 41, "dual_valu": 41, "26206": 41, "6896": 41, "results_product": 41, "5103": 41, "896": 41, "xlim": [41, 42, 50], "32000": 41, "xplot": 41, "regim": 41, "doubl": 41, "kerosen": 41, "hydrocarbon": 41, "hyperplan": [42, 46, 49, 50], "banknot": [42, 50], "medic": 42, "diseas": 42, "enjoi": 42, "movi": 42, "photo": 42, "car": [42, 45], "genuin": [42, 50], "counterfeit": [42, 50], "vend": 42, "accur": [42, 63, 66], "reject": 42, "ones": [42, 50, 60, 63], "tp": 42, "fn": 42, "tn": 42, "frustrat": 42, "incorrectli": [42, 45], "low": [42, 44, 45, 47, 48, 60, 63, 69], "innoc": 42, "proven": 42, "guilti": 42, "unless": 42, "perspect": [42, 65], "specimen": [42, 50], "wavelet": [42, 50], "skew": [42, 50], "curtosi": [42, 50], "entropi": [42, 50], "authent": [42, 50], "model_select": [42, 50], "train_test_split": [42, 50], "data_banknote_authent": [42, 50], "txt": [42, 50], "header": [42, 50], "62160": 42, "6661": 42, "8073": 42, "44699": 42, "54590": 42, "1674": 42, "4586": 42, "46210": 42, "86600": [42, 64], "6383": 42, "9242": 42, "10645": 42, "45660": 42, "5228": 42, "0112": 42, "59440": 42, "32924": 42, "4552": 42, "5718": 42, "98880": 42, "1372": 42, "433735": 42, "922353": 42, "397627": 42, "191657": 42, "444606": 42, "842763": 42, "869047": 42, "310030": 42, "101013": [42, 49], "497103": 42, "042100": 42, "773100": 42, "286100": 42, "548200": 42, "773000": 42, "708200": 42, "574975": 42, "413450": 42, "319650": 42, "616630": 42, "586650": 42, "821475": 42, "814625": 42, "179250": 42, "394810": 42, "824800": 42, "951600": 42, "927400": 42, "449500": 42, "exposit": [42, 50], "df_train": [42, 50], "df_test": [42, 50], "test_siz": [42, 50], "x_train": [42, 50], "y_train": [42, 50], "x_test": [42, 50], "y_test": [42, 50], "scatter_labeled_data": [42, 50], "prepend": [42, 50], "catch_warn": [42, 50], "filterwarn": [42, 50], "pred": [42, 50], "sgn": [42, 50], "scalar": 42, "linearsvm": [42, 50], "bia": [42, 50], "__call__": [42, 50, 68], "__repr__": [42, 50], "surfac": [42, 44], "accuraci": [42, 45, 50], "score": [42, 50], "estima": 42, "y_pred": [42, 50], "correct": [42, 45, 62], "scatter_comparison": [42, 50], "xmin": [42, 50], "ymin": [42, 50], "xmax": [42, 50], "ymax": [42, 50], "topic": [42, 50, 68], "recommend": [42, 50, 69], "matthew": [42, 50], "mcc": [42, 50], "y_true": [42, 50], "bool": [42, 50], "true_posit": [42, 50], "false_neg": [42, 50], "false_posit": [42, 50], "true_neg": [42, 50], "mcc_numer": [42, 50], "mcc_denomin": [42, 50], "confusion_matrix": [42, 50], "661": 42, "pm": [42, 50, 55, 63, 66], "ambigu": 42, "perfectli": [42, 49, 57, 66], "z_i": [42, 45, 50], "misclassifi": [42, 50], "hing": 42, "poorli": 42, "penal": [42, 46], "_1": [42, 50, 55, 63], "lasso": 42, "spars": 42, "neglect": [42, 49], "2n": 42, "recast": [42, 49], "factori": [42, 45, 50], "svm_factory_lp": 42, "lambd": [42, 46, 47, 49], "wp": [42, 46, 47], "wn": 42, "hingeloss": 42, "svm_lp": 42, "24257023720674875": 42, "055108819378508436": 42, "004704238874285824": 42, "slack": [42, 50], "settl": [42, 50, 68], "soft": [42, 50], "misclassif": [42, 50], "accompani": [42, 50, 69], "svm_factory_qp": 42, "qp": 42, "svm_qp": 42, "36656392059193305": 42, "11710989157644607": 42, "14541701315506445": 42, "742": 42, "lagrangian": 42, "alpha_i": [42, 50, 65], "beta_i": 42, "saddl": 42, "alpha_j": [42, 50], "y_j": [42, 50, 55], "symmetr": [42, 50, 55, 62], "y_n": [42, 44, 50], "x_n": [42, 44, 50], "vdot": [42, 50], "ddot": [42, 50], "sim": [42, 44, 45, 50, 62, 66], "rank": [42, 48, 50], "defici": [42, 50], "elimin": [42, 45, 50, 53, 63, 69], "ff": [42, 50], "complementar": 42, "svm_factory_du": 42, "mul": 42, "interior": [42, 44, 45], "closest": 42, "argmin": 42, "svm_dual": 42, "36659753046810317": 42, "11713531687779753": 42, "1452699652847259": 42, "phi": [42, 50, 58, 62], "machineri": 42, "mercer": [42, 50], "theorem": [42, 50], "spectral": [42, 50], "diagon": [42, 50], "eigenvalu": [42, 50], "i_q": [42, 50], "kernal": [42, 50], "sv": [42, 50], "kernelsvm": [42, 50], "svm_factory_kernel": 42, "tol": [42, 50], "callabl": [42, 68], "eigvec": 42, "eigh": [42, 50], "diag": [42, 50, 62], "y_support": [42, 50], "svm_kernel": 42, "__main__": 42, "0x17ff39120": 42, "0x17faaf460": 42, "845": 42, "cubic": [42, 44], "0x17f341c00": 42, "827": 42, "kelli": [43, 46, 49], "layer": [43, 63], "insul": 43, "luenberg": 43, "wheel": 43, "growth": [43, 46], "thermal": 44, "annual": [44, 45, 49], "heat": 44, "air": [44, 62], "kernel": [44, 45, 46, 47, 48, 49, 55, 57], "pmo": [44, 45, 46, 47, 48, 49, 50], "temperatur": 44, "t_o": 44, "conduct": 44, "ua": 44, "transfer": [44, 68], "invers": [44, 58, 60, 62], "resist": 44, "r_0": 44, "r_n": [44, 46, 47], "k_n": 44, "thick": 44, "proport": [44, 57], "affin": 44, "a_n": 44, "b_n": [44, 46], "ty_n": 44, "bx": 44, "sq": 44, "meter": 44, "r0": [44, 47], "watt": 44, "xopt": 44, "9962": 44, "2864": 44, "z_n": 44, "r_1": [44, 45, 46, 47], "r_2": [44, 45, 47], "z_0": 44, "z_1": [44, 45, 55], "rotated_quadrat": [44, 50], "as_domain": [44, 46, 47, 49, 50], "99615": 44, "28640": 44, "overcom": 44, "ru": 44, "2ru": 44, "middl": 44, "isol": 44, "a_ny_n": 44, "b_nx_n": 44, "variable_dict": [44, 45, 46, 49], "constraint_dict": 44, "opt": [44, 45], "miner": 44, "wool": 44, "rigid": 44, "foam": 44, "015": [44, 45], "1549": 44, "19361": 44, "010": [44, 45], "2299": 44, "06276": 44, "08724": 44, "x_0": 44, "curv": [44, 66], "x0": 44, "meshgrid": 44, "contour": [44, 45], "my": [44, 68], "hasan": 44, "cycl": 44, "124": [44, 45, 49], "pii": [44, 45], "s0306261999000239": 44, "kaynakli": 44, "review": [44, 69], "sustain": 44, "425": [44, 55, 64], "s1364032111004163": 44, "nyer": 44, "kajtar": 44, "tomi\u0107": 44, "2015": 44, "268": 44, "s0378778814008688": 44, "gori": 44, "guattari": 44, "evangelisti": 44, "asdrubali": 44, "mass": [44, 49], "359": 44, "s0017931016303647": 44, "huang": 44, "zhou": 44, "wu": 44, "chines": 44, "zone": 44, "humid": 44, "subtrop": 44, "climat": 44, "101840": 44, "s221067071931457x": 44, "s\u00f6ylemez": 44, "\u00fcnsal": 44, "refriger": 44, "s0196890498001253": 44, "a\u00e7\u0131kkalp": 44, "kandemir": 44, "2019": [44, 49], "environment": 44, "s2451904918305377": 44, "ylm\u00e9n": 44, "mj\u00f6rnell": 44, "berlin": 44, "arfvidsson": 44, "optimis": [44, 45], "107544": 44, "s0360132320309112": 44, "mba": 45, "1915": 45, "deplet": 45, "hx": 45, "modulo": 45, "analyt": [45, 47, 66], "fopt": 45, "3651": 45, "2738": 45, "tangent": 45, "yopt": 45, "3200": 45, "0008": 45, "elementari": 45, "geometri": 45, "hyperbola": 45, "intersect": 45, "lorenz": 45, "lobo": 45, "iff": [45, 47, 50], "2w": 45, "tilt": 45, "displac": [45, 62], "stretch": 45, "geometr": [45, 47], "4xy": 45, "mpl_toolkit": 45, "mplot3d": 45, "art3d": 45, "t_max": 45, "co": 45, "sin": 45, "plot3d": 45, "arcco": 45, "text3d": 45, "view_init": 45, "elev": 45, "azim": 45, "pathpatch_2d_to_3d": 45, "zdir": 45, "set_zlim": 45, "simpler": 45, "cd": 45, "experiment": 45, "u_eq": 45, "neoq": 45, "3654": 45, "stumbl": 45, "sledgehamm": 45, "swat": 45, "fly": 45, "compet": 45, "he": [45, 46], "perish": 45, "b_0": 45, "lb_i": 45, "ub_i": 45, "h_i": 45, "deliveri": [45, 63], "hypothet": [45, 59], "tire": 45, "weather": [45, 59, 64], "heavi": 45, "duti": 45, "block_dict": [45, 46, 49], "b_cap": 45, "eoq_display_result": 45, "req": 45, "306": 45, "918": 45, "153": 45, "1225": 45, "151": 45, "754": 45, "367": 45, "1101": 45, "df_larg": 45, "03d": 45, "688059": 45, "329": 45, "1220": 45, "110966": 45, "452672": 45, "2671": 45, "984745": 45, "4851": 45, "180476": 45, "364": 45, "3286": 45, "560933": 45, "1955": 45, "727272": 45, "458": 45, "2010": [45, 46, 47, 49], "911743": 45, "408": 45, "410": 45, "007": 45, "621799": 45, "478": [45, 48], "008": 45, "317468": 45, "335": [45, 49], "1056": 45, "009": 45, "460362": 45, "339": [45, 59], "2996": 45, "960022": 45, "801": 45, "011": 45, "926136": 45, "381": 45, "2800": 45, "688914": 45, "422": [45, 66], "3076": 45, "013": 45, "545538": 45, "014": 45, "668708": 45, "2260": 45, "755557": 45, "322": 45, "4872": 45, "587431": 45, "640": 45, "801025": 45, "445": [45, 66], "1693": 45, "018": 45, "636593": 45, "473": 45, "4066": 45, "019": 45, "717248": 45, "476": [45, 52], "2194": 45, "020": 45, "053587": 45, "324": 45, "1518": 45, "021": 45, "318844": 45, "2681": 45, "022": 45, "625933": 45, "746": 45, "023": 45, "995664": 45, "3192": 45, "338183": 45, "468": 45, "2830": 45, "679697": 45, "354": 45, "2449": 45, "026": 45, "780842": 45, "358": 45, "926": 45, "236800": 45, "411": 45, "4618": 45, "028": 45, "252901": 45, "455": 45, "3022": [45, 49], "029": 45, "039994": 45, "423": 45, "4253": 45, "132": [45, 49], "2274": 45, "3327": 45, "4801": 45, "3905": 45, "169": 45, "2901": 45, "3443": 45, "1449": 45, "1982": 45, "2121": 45, "209": [45, 62], "3588": 45, "1922": 45, "3659": 45, "236": [45, 62], "4046": 45, "3068": 45, "4445": 45, "3079": 45, "291": 45, "4982": 45, "214": 45, "3668": 45, "2508": 45, "224": 45, "3842": 45, "3915": 45, "4102": 45, "193": [45, 46], "3307": 45, "119": 45, "287": [45, 62], "4917": 45, "4184": 45, "4797": 45, "curiou": 45, "twist": 45, "1931": 45, "citat": 45, "shaw": 45, "chap": 45, "iv": 45, "chicago": 45, "ziegler": 45, "singli": 45, "252": [45, 49], "016763778290030x": 45, "bretthauer": 45, "shetti": 45, "1995": 45, "670": 45, "171693": 45, "kuo": 45, "mittleman": 45, "2004": 45, "mittelmann": 45, "285": 45, "1023": 45, "coap": 45, "0000033964": 45, "95511": 45, "vandenbergh": 45, "lebret": 45, "284": [45, 66], "stanford": [45, 46, 49], "socp": [45, 58], "letchford": 45, "park": [45, 66], "2018": [45, 46, 49], "guid": [45, 67], "rairo": 45, "1106": 45, "cs": 45, "nott": 45, "uk": 45, "pszajp": 45, "pub": 45, "el": 45, "ghaoui": 45, "laurent": 45, "inst": 45, "eec": 45, "berkelei": [45, 46, 49], "ee127": 45, "fa19": 45, "12_socp": 45, "cookbook": [45, 48], "section": [45, 62, 68], "cqo": 45, "bypass": 45, "6cm": 45, "4pt": 45, "u_i": [45, 47], "v_i": [45, 66], "wager": [46, 47], "spin": 46, "game": 46, "indefinit": 46, "interact": [46, 68, 69], "w_a": 46, "w_b": 46, "stake": 46, "bisect": 46, "ipywidget": 46, "widget": 46, "wheel_sim": 46, "odd": [46, 47], "quantil": [46, 52, 58, 60, 62], "semilog": [46, 47], "bisect_left": 46, "wealth_next": 46, "elogr": [46, 47, 49], "interact_manu": 46, "floatslid": 46, "wb": 46, "wc": [46, 64], "wheel_interact1": 46, "p_n": 46, "q_n": 46, "wheel_model": 46, "expression_dict": [46, 49], "sum_w": 46, "primal_exponenti": [46, 47, 49], "06758": 46, "406": 46, "167": 46, "suffer": 46, "chanc": [46, 56, 65], "drawdown": 46, "busseti": [46, 47, 49], "ryu": [46, 47, 49], "gambl": [46, 47, 49], "infti": [46, 55, 60], "admiss": 46, "p_1": [46, 47], "u_n": 46, "wheel_rc_model": 46, "sum_u": 46, "06025": 46, "36406": 46, "26663": 46, "1667": 46, "12614": 46, "wheel_interact2": 46, "semilogx": [46, 49], "determinist": [46, 63, 65, 66], "popular": [46, 47], "poundston": [46, 47], "fortun": [46, 47], "untold": [46, 47], "scientif": [46, 47, 49], "bet": [46, 47, 49], "beat": [46, 47, 49], "casino": [46, 47], "street": [46, 47, 49], "hill": [46, 47], "wang": [46, 47], "onlinecasinoground": [46, 47], "nl": [46, 47], "upload": [46, 47], "boek": [46, 47], "van": [46, 47, 69], "thorp": [46, 47, 49], "man": [46, 47, 49], "la": [46, 47, 49, 69], "vega": [46, 47, 49], "dealer": [46, 47, 49], "2008": [46, 47, 49], "blackjack": [46, 47, 49], "sport": [46, 47, 49], "handbook": [46, 47, 49], "liabil": [46, 47, 49], "385": [46, 47, 49], "428": [46, 47, 49], "holland": [46, 47, 49], "palmislandtrad": [46, 47, 49], "econ136": [46, 47, 49], "thorpe_kelly_crit": [46, 47, 49], "maclean": [46, 49], "ziemba": [46, 49], "aldou": [46, 49], "good_bad_kelli": [46, 49], "2011": [46, 49, 62, 64], "worldscientif": [46, 49], "worldscibook": [46, 49], "7598": [46, 49], "aboutbook": [46, 49], "wikipedia": [46, 47, 68], "kelly_criterion": [46, 47], "oup": 46, "catalogu": 46, "ush": 46, "9780199740086": 46, "caja": [46, 49], "3833617": [46, 49], "134": [46, 47, 49, 62, 65], "1603": [46, 47, 49], "06183": [46, 47, 49], "fu": [46, 47, 49], "narasimhan": [46, 47, 49], "cvxr": [46, 47, 49], "1711": [46, 47, 49], "07582": [46, 47, 49], "1812": [46, 49], "10371": [46, 49], "robust_kelli": [46, 49], "ch": [46, 49], "hsieh": [46, 49], "2202": [46, 49, 52], "03858": [46, 49], "1956": 47, "bell": 47, "laboratori": 47, "analog": 47, "claud": 47, "shannon": 47, "encod": [47, 62, 69], "noisi": 47, "channel": 47, "gambler": 47, "predat": 47, "1738": 47, "daniel": 47, "bernoulli": 47, "resolut": 47, "st": 47, "petersburg": 47, "cousin": 47, "nichola": 47, "adventur": 47, "laid": 47, "obscur": 47, "cowork": [47, 49], "avers": 47, "ident": [47, 49, 53, 63, 68], "polici": 47, "q_1": 47, "q_2": 47, "w_conic": 47, "w_analyt": 47, "1180": 47, "p_2": 47, "q_i": 47, "u_1": [47, 50], "u_2": [47, 50], "kelly_rc": 47, "u1": 47, "u2": 47, "r1": [47, 69], "r2": [47, 69], "w_rc": 47, "constrainend": 47, "0589": 47, "kelly_sim": 47, "mont": 47, "carlo": 47, "binomi": 47, "cumprod": [47, 49], "logr": 47, "transax": 47, "1e6": 47, "semidefinit": 48, "choleski": 48, "lorentz": 48, "2_2": [48, 55], "practiv": 48, "qcqo": 48, "markowitz_revisit": 48, "ok": [48, 55, 58, 60], "283": 48, "130": 48, "109": [48, 49], "alpha_valu": 48, "critiqu": 49, "economist": 49, "20th": 49, "paul": 49, "samuelson": 49, "ground": 49, "lack": [49, 59], "controversi": 49, "didn": 49, "fund": 49, "histor": [49, 57, 59], "yfinanc": 49, "holidai": 49, "elabor": 49, "gspc": 49, "ixic": 49, "nasdaq": 49, "dji": 49, "jone": 49, "rut": 49, "russel": 49, "amgen": 49, "appl": 49, "boe": 49, "caterpillar": 49, "chevron": 49, "jpmorgan": 49, "chase": 49, "mcdonald": 49, "microsoft": 49, "proctor": 49, "n_test": 49, "n_train": 49, "dropna": 49, "prop": 49, "r_f": 49, "futur": [49, 51, 59, 62], "borrow": 49, "e_m": 49, "q_t": 49, "equiprob": [49, 57, 62], "kelly_portfolio": 49, "u_sum": 49, "w_sum": 49, "kelly_report": 49, "247": 49, "190366": 49, "564623": 49, "480615": 49, "500638": 49, "152": 49, "966799": 49, "056351": 49, "107": [49, 62, 64], "132849": 49, "303171": 49, "247408": 49, "071398": 49, "924581": 49, "324833": 49, "955780": 49, "664067": 49, "665347": 49, "512189": 49, "226212": 49, "793304": 49, "976357": 49, "340": [49, 64, 69], "524902": 49, "859108": 49, "259621": 49, "789543": 49, "749512": 49, "810425": 49, "666946": 49, "046753": 49, "898674": 49, "26805": 49, "529297": 49, "3010": 49, "290039": 49, "8185": 49, "799805": 49, "1548": 49, "489990": 49, "955654": 49, "784424": 49, "724091": 49, "860046": 49, "127": [49, 65], "212341": 49, "170517": 49, "675674": 49, "463715": 49, "385712": 49, "427185": 49, "651657": 49, "028133": 49, "26958": 49, "060547": 49, "550049": 49, "8243": 49, "120117": 49, "1558": 49, "709961": 49, "556232": 49, "519867": 49, "026421": 49, "336": [49, 65], "897766": 49, "512772": 49, "011734": 49, "883026": 49, "913925": 49, "756805": 49, "860023": 49, "534607": 49, "27090": 49, "720703": 49, "3039": 49, "419922": 49, "8325": 49, "990234": 49, "1571": 49, "930054": 49, "155693": 49, "185": 49, "043839": 49, "930519": 49, "344": 49, "853729": 49, "128": [49, 62, 69], "668976": 49, "719246": 49, "030106": 49, "649017": 49, "701126": 49, "448059": 49, "968727": 49, "372787": 49, "27071": 49, "460938": 49, "3036": 49, "889893": 49, "8276": 49, "849609": 49, "1577": 49, "069946": 49, "148396": 49, "717285": 49, "544601": 49, "017273": 49, "767677": 49, "240089": 49, "409836": 49, "542816": 49, "326614": 49, "160965": 49, "182632": 49, "790260": 49, "27186": 49, "689453": 49, "3046": 49, "770020": 49, "8303": 49, "980469": 49, "1572": 49, "849976": 49, "carta": 49, "conversano": 49, "rebalanc": 49, "577050": 49, "frontiersin": 49, "3389": 49, "fam": 49, "thing": [50, 55, 63, 65, 66, 68], "move": [50, 62], "trail": 50, "classifi": 50, "rescal": [50, 68], "wrong": [50, 68], "unnecessarili": [50, 66], "orthogon": 50, "_n": 50, "m_r": 50, "2u_1u_2": 50, "u_3": 50, "u_m": 50, "conicsvmfactori": 50, "variable_list": [50, 55], "qr": 50, "constraint_list": [50, 55], "svm_v2": 50, "546234": 50, "152174": 50, "21435828724315473": 50, "769": 50, "q_r": 50, "computation": 50, "rememb": [50, 65], "conicdualsvmfactori": 50, "w_bar": 50, "svm_v3": 50, "546247": 50, "152194": 50, "21435778397469038": 50, "room": 50, "onward": 50, "alpha_ik": 50, "y_nk": 50, "kernelsvmfactori": 50, "hstack": 50, "nz": 50, "pz": 50, "rbf": 50, "881": 50, "encourag": 50, "poli": 50, "438": 50, "argu": [51, 65], "trust": 51, "substanc": 51, "ingredi": 51, "antenna": 51, "simul": [51, 55, 62, 66], "contrib": 52, "only_child_var": 52, "material_demand": 52, "eot_inventori": 52, "fold": 52, "initialize_problem_data": 52, "problem_data": 52, "demand_chips_ref": 52, "demand_chips_simul": 52, "showtableofpyomovari": 52, "decim": 52, "23580": 52, "722": 52, "1823": 52, "1233": 52, "2465": 52, "682": 52, "1620": 52, "1586": 52, "1964": 52, "1678": 52, "1430": 52, "5020": 52, "4396": 52, "5017": 52, "3187": 52, "1807": 52, "643": 52, "2425": 52, "minimize_missed_demand_in_period": 52, "missed_demand": 52, "nb": 52, "resource_constraint": 52, "produced_plus_unmet": 52, "total_unmet": 52, "simulation_per_trajectori": 52, "simulate_perform": 52, "perturbed_demand": 52, "applymap": 52, "inv": 52, "md": 52, "missing_demand": 52, "missingdemand": 52, "swaplevel": 52, "inventoryevolut": 52, "average_missed_demand": 52, "bim_robust_missed_demand": 52, "realized_inv_cost": 52, "trajectori": 52, "n_sim": 52, "simresult": 52, "sllighli": 52, "20309": 52, "3270": 52, "3309": 52, "flown": 53, "airlin": [53, 61], "airplan": [53, 62], "randomst": 53, "airport": 53, "generate_flight": 53, "n_flight": 53, "min_dur": 53, "max_dur": 53, "max_departur": 53, "rs": 53, "end_flight": 53, "start_flight": 53, "floor": 53, "ceil": 53, "flightdata": 53, "draw_flight": 53, "add_subplot": 53, "get_yaxi": 53, "iterrow": 53, "milp": 53, "1h": 53, "feasible_flight_pair": 53, "turnaound": 53, "turnaround": [53, 68], "flight_pair": 53, "reassign": 53, "unexpect": 53, "delai": [53, 63], "sink": 53, "bigcup_": 53, "cup": [53, 65, 66], "eq": 53, "71a": 53, "71b": 53, "71c": 53, "71d": 53, "71e": 53, "eqref": 53, "drawback": 53, "blind": 53, "swap": 53, "lot": 53, "huge": [53, 65], "altogeth": 53, "flight1": 53, "flight2": 53, "p_f": 53, "unassign": 53, "q_f": 53, "minimize_airplan": 53, "redraw": 53, "dg_soln": 53, "layov": 53, "flightschedul": 53, "travers": 53, "a01": 53, "a04": 53, "a03": 53, "a02": 53, "a12": 53, "a05": 53, "a06": 53, "a07": 53, "a08": 53, "a13": 53, "a09": 53, "a11": 53, "a10": 53, "a14": 53, "aircraftschedul": 53, "from_fram": 53, "nplane": 53, "n_plane": 53, "minimize_risk": 53, "nlo": 55, "bonmin": 55, "nlo_solv": 55, "rrcrcl": 55, "gemanium": 55, "showdual": 55, "feel": 55, "lognorm": 55, "somehow": [55, 59], "currentaxi": 55, "922766922829344": 55, "9701110863753781": 55, "061793174956137": 55, "0328386701386703": 55, "z_2": 55, "infinit": 55, "robustifi": 55, "rrr": 55, "rrl": 55, "bimwithboxuncertainti": 55, "robustcopp": 55, "pervari": 55, "1137": 55, "17587": 55, "tune": [55, 57], "bimwithsymmetricalboxuncertainti": 55, "606": 55, "1143": 55, "17568": 55, "gave": 55, "1138": 55, "17586": 55, "behav": 55, "17634": 55, "628": 55, "1122": 55, "1144": 55, "17502": 55, "584": [55, 62], "17436": 55, "562": 55, "1188": 55, "17370": 55, "540": 55, "17304": 55, "518": 55, "1232": 55, "17238": 55, "496": 55, "1254": 55, "17175": 55, "475": 55, "17109": 55, "453": 55, "1297": 55, "17043": 55, "1319": 55, "16977": 55, "409": 55, "1341": 55, "16911": 55, "1363": 55, "16845": 55, "1385": 55, "16779": 55, "1407": 55, "16713": 55, "321": 55, "1429": 55, "16650": 55, "1450": 55, "16584": 55, "278": 55, "1472": 55, "16518": 55, "1494": 55, "16416": 55, "16296": 55, "16001": 55, "17999": 55, "z_j": 55, "lagrang": 55, "rrcrcrcrcrcrcl": 55, "t_1": 55, "t_2": 55, "bimwithbudgetuncertainti": 55, "lam": 55, "up_rul": 55, "down_rul": 55, "641": 55, "1109": 55, "17673": 55, "violat": [55, 57, 63], "bimwithsetofscenario": 55, "worst": [55, 57, 63, 65], "bimpessim": 55, "pessim": [55, 63], "absolute_value_1": 55, "absolute_value_2": 55, "absolute_value_less_than_on": 55, "budget_constraint": 55, "worst_z": 55, "wrap": 55, "gradual": [55, 63], "reoptim": 55, "adversarial_converg": 55, "stopping_precis": [55, 63], "max_iter": [55, 63], "adversarial_iter": 55, "master": [55, 63], "niter": [55, 63], "constraint_viol": 55, "baselin": [55, 66], "viabl": 55, "polytop": 55, "ellipsoid": 55, "extrem": [55, 63], "minuscul": 55, "radiu": 55, "_1x_1": 55, "_2x_2": 55, "newli": [55, 63, 65], "pyk": 55, "bimwithballuncertainti": 55, "domain_typ": 55, "realset": 55, "idxchip": 55, "xtow": 55, "617": 55, "755": 55, "1132": 55, "17603": 55, "integerset": 55, "solver_minlo": 55, "1133": 55, "17601": 55, "bimwithballuncertaintyassquaredsecondordercon": 55, "soc": 55, "pop": 56, "seafood": 56, "llll": [57, 65, 66], "offshor": 57, "turbin": [57, 65, 66], "fluctuat": [57, 65, 66], "intermitt": 57, "mismatch": 57, "varepsilon": [57, 60], "fine": 57, "saa": [57, 61], "seaborn": 57, "sn": 57, "read_economic_dispatch_data": 57, "wind_production_samples_df": 57, "discrete_wind": 57, "wind_production_sampl": 57, "fifth": 57, "94632359541376": 57, "set_styl": 57, "darkgrid": 57, "histplot": 57, "kde": 57, "kde_kw": 57, "23034433319671": 57, "bubbl": 57, "df_node": 57, "showinst": 57, "zorder": 57, "u_j": 57, "thank": [57, 58], "omega_j": 57, "u_jm_j": 57, "deactiv": [57, 66], "incorrect": 57, "certainli": 57, "economic_dispatch": 57, "supply_demand_leq": 57, "supply_demand_geq": 57, "success_prob": 57, "sum_product": 57, "sum_demand": 57, "3007": 57, "1733": 57, "393": 57, "7850": 57, "601": 57, "reward": 57, "tradeoff": [57, 63, 64], "getlogg": [57, 66], "setlevel": [57, 66], "fixed_delta": 57, "feas_ep": 57, "feas_obj": 57, "epsilon": 57, "fixed_ep": 57, "feas_delta": 57, "tighter": 57, "flat": 57, "multivari": [58, 62], "gaussian": 58, "cdf": [58, 60, 62], "ppf": [58, 60, 62], "dramat": [58, 65], "markowitz_chanceconstraint": 58, "chance_constraint": 58, "078": 58, "commemor": 59, "unsold": [59, 60, 62], "salvag": 59, "sunni": 59, "ski": 59, "poor": [59, 64, 66], "dilemma": 59, "expected_demand": 59, "10220": 59, "165": [59, 64], "3950": 59, "8339": 59, "satisfactori": 59, "lesser": 59, "operation": 59, "sales_less_than_ord": 59, "sales_less_than_demand": 59, "11200": [59, 64], "8920": 59, "920": 59, "581": 59, "compens": [59, 65], "unfold": 59, "probablist": 59, "transpir": 59, "varaibl": 59, "variat": 59, "18200": 59, "evss": 59, "hypother": 59, "220": [59, 69], "vpi": 59, "math": [60, 64], "ton": [60, 64], "tuna": 60, "whom": 60, "fish": 60, "leftov": 60, "cold": 60, "cx": 60, "cumul": [60, 68], "pareto": 60, "expon": 60, "weibul": [60, 66], "5357": 60, "weibull_min": 60, "838": 60, "extratick": 60, "x_opt": 60, "ytick": 60, "parametr": [60, 69], "mean_demand": 60, "first_stage_profit": 60, "cant_sell_fish_i_dont_hav": 60, "fish_do_not_disappear": 60, "second_stage_profit": 60, "total_profit": 60, "determist": 60, "naiveseafoodstocksaa": 60, "distributiontyp": 60, "indices_rul": 60, "xi": 60, "cantsoldthingsfishdonthav": 60, "fishdonotdisappear": 60, "total_expected_profit": 60, "7500": [60, 64], "naiveprofit_uniform": 60, "xm": 60, "naiveprofit_pareto": 60, "naiveprofit_weibul": 60, "966": [60, 62], "910": [60, 62], "vss": 60, "seafoodstocksaa": 60, "printflag": 60, "cantsoldfishidonthav": 60, "smartprofit_uniform": 60, "smartprofit_pareto": 60, "smartprofit_weibul": 60, "979": 60, "890": 60, "919": 60, "profit_uniform": 60, "profit_pareto": 60, "profit_weibul": 60, "xw": 60, "recours": [61, 62, 66], "ccg": [61, 63], "farmer": 61, "land": [61, 64], "curtail": [61, 65], "birg": [62, 64], "louveaux": [62, 64], "media": [62, 64], "bueno": 62, "economi": 62, "passeng": 62, "ticket": 62, "weekdai": 62, "traffic": 62, "middai": 62, "overbook": 62, "downgrad": 62, "unavail": 62, "revenue_factor": 62, "seat_factor": 62, "seat_report": 62, "unsatisfi": 62, "spillag": 62, "equivalent_seat": 62, "nseat": 62, "nticket": 62, "unmet": 62, "nspillag": 62, "unfulfil": 62, "nexpect": 62, "rot": 62, "trial": 62, "seats_all_economi": 62, "eev": 62, "evm": 62, "s_c": 62, "t_c": 62, "r_c": 62, "f_c": 62, "mu_c": 62, "bm": [62, 63], "airline_determinist": 62, "plane_seat": 62, "demand_limit": 62, "seat_limit": 62, "airline_solv": 62, "model_eev": 62, "seats_eev": 62, "boldsymbol": 62, "z_c": 62, "tuplic": 62, "airline_stochast": 62, "model_stochast": 62, "seats_stochast": 62, "client": [62, 64], "enrol": 62, "loyalti": 62, "cover": [62, 63, 65], "z_f": 62, "mu_f": 62, "sigma_f": 62, "z_b": [62, 63], "mu_b": 62, "sigma_b": 62, "mu_": 62, "sigma_": 62, "s_f": 62, "s_b": 62, "054": 62, "counterpart": [62, 65], "qo": 62, "airline_cc": 62, "qosf": 62, "qosfb": 62, "first_class": 62, "business_class": 62, "model_cc": 62, "seats_cc": 62, "z_e": 62, "sigma_c": 62, "simplif": 62, "anymor": 62, "sake": [62, 63], "nmodel": 62, "nearest": 62, "multivariate_norm": 62, "demand_saa": 62, "demand_saa_stat": 62, "ci": 62, "889": 62, "088936": 62, "051534": 62, "839669": 62, "seat_report_saa": 62, "model_ssa": 62, "seats_saa": 62, "764": 62, "416": 62, "944": 62, "211": 62, "mu_e": 62, "ccc": 62, "rho_": 62, "fb": 62, "fe": 62, "bf": 62, "BE": 62, "ef": 62, "eb": 62, "truncat": 62, "nsampl": 62, "cov": 62, "cj": 62, "convari": 62, "590": 62, "301": 62, "951388": 62, "139984": 62, "147365": 62, "613469": 62, "044965": 62, "434823": 62, "229": 62, "219119": 62, "216627": 62, "916315": 62, "303": 62, "184": 62, "697": 62, "816": 62, "airline_fin": 62, "first_class_loy": 62, "first_class_loyality_r": 62, "business_class_loy": 62, "business_class_loyality_r": 62, "995": 62, "031": 62, "969": 62, "startup": 63, "announc": 63, "campaign": 63, "chief": 63, "offic": 63, "coo": 63, "z_a": 63, "z_d": 63, "attain": 63, "subtract": 63, "p_u": 63, "p_v": 63, "preorder": 63, "10x": 63, "50z_a": 63, "80z_b": 63, "40z_b": 63, "tau": [63, 69], "model_param": 63, "uniformli": [63, 65], "z_sampl": 63, "max_min_profit": 63, "stage_net_profit": 63, "model_constraint": 63, "nsolut": 63, "883": 63, "547": 63, "slight": 63, "max_avg_profit": 63, "avg_profit": 63, "avg_case_p": 63, "2305": 63, "max_profit_fixed_x": 63, "fixed_x_valu": 63, "worst_cas": 63, "fixed_x": [63, 66], "xopt_rob": 63, "nsolv": 63, "worst_case_p": 63, "xopt_avg": 63, "underperform": 63, "narrow": 63, "stabler": 63, "phenomenon": 63, "unsur": 63, "downsid": 63, "i_3": 63, "_3": 63, "i1": 63, "i2": 63, "i3": 63, "i4": 63, "subproblem_param": 63, "hack": 63, "proxi": 63, "acceler": 63, "freeli": 63, "hurt": 63, "pessimization_problem": 63, "master_solut": 63, "z_a_max": 63, "z_b_max": 63, "z_d_max": 63, "big_m": 63, "z_indic": 63, "z_ab": 63, "a_ub": 63, "a_lb": 63, "a_ab": 63, "b_lb": 63, "b_ub": 63, "b_ab": 63, "d_lb": 63, "d_ub": 63, "d_ab": 63, "z_budget": 63, "blockwis": 63, "at_least_one_viol": 63, "max_viol": 63, "subproblem": 63, "seem": [63, 65, 68], "hundr": 63, "ccg_converg": 63, "ccg_iter": 63, "export": 63, "single_solut": 63, "x_kei": 63, "y_kei": 63, "theta_opt": 63, "560": 63, "555": 63, "zeng": 63, "zhao": 63, "457": 63, "461": 63, "francoi": 64, "acr": 64, "crop": 64, "wheat": 64, "corn": 64, "beet": 64, "230": 64, "cattl": 64, "wholesal": 64, "decad": 64, "quota": 64, "excess": [64, 69], "interview": 64, "stai": 64, "advic": 64, "total_land": 64, "limit_on_planted_land": 64, "crop_yield": 64, "under_quota": 64, "over_quota": 64, "farm_report": 64, "nscenario": 64, "118600": 64, "18400": 64, "216000": 64, "78000": 64, "138000": 64, "analys": 64, "hear": 64, "108390": 64, "167000": 64, "52700": 64, "25500": 64, "27200": 64, "7200": 64, "65000": 64, "151000": 64, "109350": 64, "38250": 64, "12750": 64, "180000": 64, "115000": 64, "48820": 64, "23800": 64, "1700": 64, "28480": 64, "144000": 64, "79000": 64, "lower_bound_profit": 64, "59950": 64, "113250": 64, "37250": 64, "246000": 64, "97500": 64, "148500": 64, "6500": 64, "40400": 64, "4975": 64, "2525": 64, "204350": 64, "106850": 64, "43550": 64, "118500": 64, "231000": 64, "133500": 64, "00000000055": 64, "min_profit": 64, "56750": 64, "56820": 64, "820": 64, "800": 64, "980": 64, "390": 64, "290": 64, "56800": 64, "107100": 64, "147000": 64, "23000": 64, "228000": 64, "150000": 64, "117500": 64, "14000": 64, "172800": 64, "94800": 64, "uiowa": 64, "dbricker": 64, "stacks_pdf1": 64, "slpwr_farmer": 64, "uh": 64, "rohop": 64, "spring_15": 64, "chapter1": 64, "surplu": 65, "shortag": 65, "opf": [65, 66], "panel": 65, "p_j": 65, "lllll": [65, 66], "delta_i": 65, "respond": 65, "jointli": 65, "adversari": 65, "costli": 65, "rnd": 65, "rework": 65, "opf_participationfactor": 65, "totalimbal": 65, "abstotalimbal": 65, "uniformparticipationfactor": 65, "swh": 65, "cg": 65, "ng": 65, "isna": 65, "abs_total_imbal": 65, "total_imbal": 65, "windsolarhydro_nopartecipationfactor": 65, "load_nopartecipationfactor": 65, "sum_on": 65, "equal_participationfactor": 65, "power_withrecours": 65, "generation_upper_bound_withrecours": 65, "generation_lower_bound_withrecours": 65, "flows_lower_bound": 65, "sw": 65, "sw_df": 65, "isin": 65, "zeroimbal": 65, "zerototalimbal": 65, "zeroabstotalimbal": 65, "firststagecost": 65, "40385": 65, "227": [65, 66], "235": [65, 66], "asid": 65, "proportion": 65, "averagerecoursecost": 65, "averagetotalcost": 65, "5354": 65, "45739": 65, "nfirst": 65, "205": 65, "276": 65, "41719": 65, "47073": 65, "cascad": 65, "failur": 65, "blackout": [65, 66], "damag": 65, "infrastructur": 65, "societ": 65, "unafford": 65, "281": 65, "40446": 65, "5969": 65, "46415": 65, "hertz": 66, "mainli": 66, "disconnect": 66, "switch": 66, "offlin": 66, "advent": 66, "fairli": 66, "hydropow": 66, "former": 66, "predic": 66, "uc": [66, 69], "kappa_i": 66, "c_fix": 66, "nontrivi": 66, "g_i": 66, "shore": 66, "Being": 66, "g_": 66, "16563": 66, "4718": 66, "18007": 66, "72049": 66, "_v": 66, "705509": 66, "734756": 66, "273978": 66, "159230": 66, "852748": 66, "602": 66, "814908": 66, "230344": 66, "690399": 66, "514209": 66, "248977": 66, "784856": 66, "664045": 66, "163": 66, "009206": 66, "175633": 66, "504459": 66, "086431": 66, "1689": 66, "384370": 66, "1057": 66, "306239": 66, "1837": 66, "349675": 66, "1456": 66, "262510": 66, "526012": 66, "753966": 66, "693808": 66, "050352": 66, "747257": 66, "554867": 66, "1504": 66, "397099": 66, "1751": 66, "390683": 66, "2450": 66, "534057": 66, "2184": 66, "454": 66, "660581": 66, "1617": 66, "451": 66, "133883": 66, "1627": 66, "g_offshor": 66, "piecewis": 66, "g_onshor": 66, "uc_windcurtail": 66, "vmax": 66, "nw": 66, "voltag": 66, "term2": 66, "term1": 66, "wind_speed_to_pow": 66, "wind_curtail": 66, "scale64": 66, "shape64": 66, "scale65": 66, "shape65": 66, "turbineact": 66, "tubin": 66, "29662": 66, "uc_windcurtailment_fixed_x": 66, "mean_sampl": 66, "m_nomin": 66, "15101": 66, "mechan": 66, "n_infeas": 66, "m_singl": 66, "workflow": 67, "py": 68, "thon": 68, "ptimiz": 68, "odel": 68, "bject": 68, "stateless": 68, "immut": [68, 69], "mutat": 68, "incompat": 68, "glanc": 68, "encapsul": 68, "forward": 68, "invoc": 68, "concurr": 68, "exclaim": 68, "exclam": 68, "lawn": 68, "circ": 68, "enthus": 68, "hello": 68, "someth": 68, "bind": 68, "contains_valu": 68, "boilerpl": 68, "push": 68, "attributeerror": 68, "spe": 68, "ca": 68, "clone": 68, "_solver": 68, "new_model": 68, "_transform": 68, "overridden": 68, "rtype": 68, "__rshift__": 68, "production_model": 68, "2400": 68, "dae": 68, "reaction": 68, "stackrel": 68, "k_1": 68, "k_2": 68, "isotherm": 68, "ultim": 68, "t_f": 68, "max_t": 68, "da": 68, "dt": 68, "db": 68, "tractabl": 68, "t_ff": 68, "ode_model_build": 68, "k1": 68, "k2": 68, "continuousset": 68, "tf": 68, "dadt": 68, "derivativevar": 68, "dbdt": 68, "max_b": 68, "odea": 68, "odeb": 68, "colloc": 68, "669": 68, "15767005981401438": 68, "8541314382648219": 68, "ode_solv": 68, "023594361612317": 68, "6687402900841761": 68, "philliam": 68, "codeproject": 68, "5290753": 68, "deploy": 69, "guidelin": 69, "supplement": 69, "pep": 69, "modular": 69, "strongli": 69, "discourag": 69, "gen": 69, "r1bi": 69, "r3": 69, "r4": 69, "filter_rul": 69, "r5": 69, "trace": 69, "time_period": 69, "ny": 69, "cariabl": 69, "callback": 69, "p1": 69, "p2": 69, "validate_param": 69, "p3": 69, "param_a": 69, "param_b": 69, "intent": 69, "scope": 69, "inconsist": 69, "redefin": 69, "cognit": 69, "burden": 69, "lower_bound": 69, "upper_bound": 69, "_rule": 69, "new_constraint_rul": 69, "new_constraint": 69, "bahavior": 69, "capacity_constraint": 69, "underscor": 69, "finish_tim": 69, "total_tim": 69, "camelcas": 69, "snake_cas": 69, "2x": 69, "promot": 69, "semant": 69, "suit": 69, "doubli": 69, "primari": 69, "secondari": 69, "referenc": 69, "ob": 69, "slice": 69, "254": 69, "173": 69, "330": 69, "reorgan": 69, "wrangl": 69, "colleagu": 69, "draft": 69, "woodruff": 69, "davi": 69, "javier": 69, "salmeron": 69, "medrano": 69, "naval": 69, "postgradu": 69, "bethani": 69, "nicholson": 69, "siirola": 69, "michael": 69, "bynum": 69, "jasper": 69, "doorn": 69, "leon": 69, "lan": 69}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"index": [0, 69], "hand": 1, "On": 1, "optim": [1, 2, 6, 8, 12, 14, 15, 16, 18, 22, 26, 28, 35, 36, 37, 38, 39, 40, 42, 43, 44, 47, 48, 49, 50, 51, 54, 56, 58, 60, 62, 63, 65, 66, 68], "python": [1, 4], "get": 1, "start": 1, "help": 1, "us": [1, 12, 18, 22, 26, 37, 55, 60, 62, 63, 68, 69], "about": 1, "citat": 1, "1": [2, 5, 27, 32, 35, 39, 44, 62, 64], "mathemat": [2, 3, 4, 33, 34, 68], "what": 2, "A": [3, 4, 5, 7, 12, 27, 30, 37, 68], "first": [3, 20, 22], "product": [3, 4, 8, 9, 10, 11, 12, 15, 17, 18, 21, 26, 41, 52, 55, 63, 68], "plan": [3, 12, 23, 32, 52, 55, 63, 68], "problem": [3, 7, 8, 9, 10, 11, 12, 17, 18, 20, 22, 23, 24, 25, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 41, 44, 45, 46, 47, 48, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 68], "statement": [3, 23, 24, 25, 46, 63, 64, 68], "model": [3, 4, 5, 7, 12, 13, 14, 15, 18, 19, 20, 21, 23, 24, 25, 26, 27, 29, 31, 32, 35, 37, 38, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 55, 62, 64, 68, 69], "data": [4, 7, 13, 14, 15, 17, 18, 22, 25, 31, 32, 35, 37, 40, 41, 42, 49, 50, 53, 57, 62, 64, 65, 66, 69], "driven": 4, "pyomo": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 52, 53, 55, 57, 60, 65, 66, 67, 68, 69], "preambl": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 46, 48, 52, 55, 57, 60, 66], "instal": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 46, 48, 52, 55, 57, 60, 62, 66], "solver": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 46, 48, 52, 55, 57, 60, 66, 68], "represent": 4, "The": [4, 5, 8, 12, 20, 42, 45, 47, 50, 59, 63, 64, 68], "For": 4, "expert": 4, "creat": [4, 5, 25, 53], "subclass": 4, "concretemodel": [4, 5, 69], "basic": 5, "step": 5, "import": [5, 18, 29, 35, 57, 62, 65, 66, 68], "2": [5, 6, 27, 32, 35, 39, 44, 62, 64], "object": [5, 10, 11, 23, 25, 45, 69], "3": [5, 16, 27, 32, 39, 62, 64], "decis": [5, 25], "variabl": [5, 25, 69], "4": [5, 28, 62, 64], "express": 5, "5": [5, 36, 62, 64], "6": [5, 43, 62], "constraint": [5, 23, 25, 29, 44, 45, 58, 62, 63, 69], "7": [5, 51], "solv": [5, 35, 62, 63], "8": [5, 54], "report": [5, 7, 25, 32], "solut": [5, 19, 25, 32, 37, 39, 44, 46, 52, 55, 57, 59, 60, 62, 63, 64, 65, 66], "pprint": 5, "access": 5, "valu": [5, 59], "pyo": [5, 69], "panda": [5, 32, 69], "linear": [6, 16, 37, 42, 45, 50], "extra": [7, 15, 19, 21, 23, 27, 31, 35, 37, 41, 46, 49, 64, 66], "materi": [7, 12, 15, 19, 21, 23, 27, 31, 35, 37, 41, 46, 49], "wine": 7, "qualiti": [7, 66], "predict": 7, "l_1": 7, "regress": [7, 13, 40], "descript": [7, 8, 17, 18, 20, 22, 29, 30, 33, 34, 35, 38, 39, 44, 48, 52, 53, 60, 62, 63, 65, 69], "mean": [7, 14, 15, 59, 64], "absolut": [7, 13, 14], "deviat": [7, 13, 14], "mad": [7, 14], "preliminari": [7, 66], "look": 7, "which": 7, "featur": [7, 42, 50], "influenc": 7, "lad": [7, 13, 40], "line": [7, 27], "fit": 7, "identifi": 7, "multivari": 7, "how": [7, 46], "do": 7, "perform": [7, 42, 50, 52], "bim": [8, 9, 10, 11, 12, 17, 18, 52, 55], "microchip": [8, 55], "build": [8, 44, 64], "matrix": 8, "reformul": [8, 30, 37, 45, 57], "canon": 8, "form": [8, 42, 62], "lo": [8, 30], "dual": [9, 37, 42, 50], "deriv": 9, "variant": [10, 11, 55, 64], "two": [10, 27, 61, 62, 63, 66], "fraction": 10, "addit": [10, 14, 29, 39], "fix": [10, 69], "cost": [10, 32, 34], "worst": [11, 15, 64], "case": [11, 15, 44, 62, 63, 64, 65], "minmax": 11, "function": [11, 50, 68], "maxim": [11, 15, 59], "lowest": 11, "possibl": 11, "profit": [11, 15, 59, 60], "demand": [12, 60, 62], "forecast": [12, 65], "acquisit": 12, "more": [12, 30], "parsimoni": 12, "least": [13, 40], "gener": [13, 37, 40, 53, 62, 63, 65], "visual": [13, 21, 25, 40, 53, 57, 69], "result": [13, 21, 32, 40, 41, 60], "portfolio": [14, 38, 48, 49, 58], "yfinanc": 14, "download": [14, 29], "histor": 14, "stock": [14, 37, 60], "price": [14, 41], "analysi": [14, 52, 57], "asset": 14, "scale": 14, "statist": 14, "daili": 14, "return": [14, 64], "risk": [14, 46, 47, 49, 64], "versu": [14, 64], "free": [14, 49, 53], "multi": [15, 26, 44, 69], "facil": [15, 20], "scenario": [15, 59, 62, 63, 65], "summari": [15, 59, 64], "mix": [16, 44], "integ": [16, 44, 55], "perturb": 17, "revisit": [18, 48], "implement": [18, 21, 23, 25, 26, 30, 42, 49, 50, 55, 65], "altern": 18, "block": [18, 69], "cryptarithm": 19, "puzzl": 19, "suggest": [19, 41], "exercis": [19, 21, 23, 29, 41, 46], "locat": 20, "milo": [20, 26, 57], "formul": [20, 21, 25, 33, 34, 37, 38, 42, 45, 48, 50, 53, 63], "second": [20, 45, 55], "option": [20, 39], "job": [21, 22], "shop": [21, 59], "schedul": [21, 22, 25, 33, 53], "exampl": [21, 37, 68], "task": 21, "decomposit": 21, "print": 21, "gantt": [21, 22], "chart": [21, 22], "applic": 21, "batch": [21, 68], "process": [21, 22], "singl": [21, 44, 45, 54, 56], "strategi": [21, 24, 27, 64], "multipl": [21, 44, 45], "overlap": 21, "ad": [21, 46, 62], "time": [21, 22, 29], "unit": [21, 66], "clean": 21, "out": [21, 22], "zero": 21, "wait": 21, "polici": [21, 35], "refer": [21, 37, 68], "specif": 21, "cleanout": 21, "comput": 21, "impact": 21, "machin": [22, 42, 50], "empir": 22, "rule": 22, "fifo": 22, "earliest": 22, "due": 22, "date": 22, "edd": 22, "shortest": 22, "spt": 22, "disjunct": [22, 23, 26], "program": [22, 26, 42, 68], "mainten": 23, "ramp": 23, "specifi": 23, "minimum": [23, 34], "number": [23, 30], "oper": [23, 32], "dai": 23, "between": [23, 30, 62], "period": 23, "recharg": 24, "an": [24, 29, 39, 40], "electr": 24, "vehicl": 24, "charg": 24, "station": 24, "inform": [24, 59], "rout": 24, "car": 24, "workforc": 25, "shift": 25, "set": [25, 42, 50, 55, 69], "paramet": [25, 49, 69], "master": 25, "categor": 25, "worker": 25, "store": 25, "manag": 25, "factori": 26, "strip": 27, "pack": 27, "statment": 27, "lower": 27, "upper": 27, "bound": [27, 69], "shelf": 27, "width": 27, "version": [27, 47], "up": [27, 59], "box": [27, 55], "rotat": 27, "place": 27, "dimens": 27, "advanc": 27, "topic": 27, "symmetri": [27, 53], "break": 27, "network": [28, 30, 35, 66], "cryptocurr": 29, "arbitrag": [29, 31], "search": 29, "librari": 29, "need": 29, "networkx": 29, "ccxt": 29, "avail": 29, "exchang": 29, "repres": 29, "direct": 29, "graph": [29, 31], "order": [29, 45, 55], "book": 29, "trade": 29, "find": 29, "have": 29, "opportun": 29, "brute": 29, "forc": 29, "simpl": 29, "cycl": 29, "capac": 29, "reader": 29, "real": 29, "from": [29, 37, 39, 60], "bibliograph": [29, 39, 44, 45, 46, 47, 49, 63, 64], "note": [29, 39, 44, 45, 46, 47, 49, 63, 64], "dinner": 30, "seat": [30, 62], "arrang": 30, "minim": [30, 32], "maximum": 30, "group": 30, "size": 30, "tabl": 30, "max": 30, "flow": [30, 34, 35, 65], "systemat": 30, "comparison": [30, 40], "algorithm": [30, 37], "forex": 31, "demonstr": 31, "triangular": 31, "displai": [31, 32, 69], "gasolin": 32, "distribut": [32, 39, 60, 62], "franchis": 32, "total": [32, 53], "deliveri": [32, 39], "entri": 32, "rate": [32, 49], "owner": 32, "share": [32, 45], "compar": [32, 35], "appendix": [32, 45, 67], "method": [32, 45, 60, 62], "manual": 32, "format": 32, "graphviz": 32, "exam": 33, "room": 33, "energi": [35, 57, 66], "dispatch": [35, 57, 66], "background": 35, "power": [35, 65], "physic": 35, "setup": 35, "code": [35, 69], "edg": 35, "structur": 35, "instanc": 35, "opf": 35, "strict": 35, "fossil": 35, "fuel": 35, "pt": 35, "three": 35, "convex": [36, 39, 40], "cut": 37, "pattern": 37, "known": [37, 69], "bilinear": [37, 39], "hybrid": 37, "jump": 37, "document": 37, "column": [37, 63], "wikipedia": 37, "woodwork": 37, "googl": 37, "sheet": 37, "markowitz": [38, 48, 58], "milk": 39, "pool": 39, "blend": 39, "wholesal": 39, "busi": 39, "usual": 39, "bui": 39, "truck": 39, "remot": 39, "supplier": 39, "why": [39, 41, 68], "ar": 39, "hard": 39, "approxim": [39, 60], "nonlinear": [39, 42, 50], "nlo": 39, "ipopt": 39, "conclud": 39, "remark": 39, "ordinari": 40, "squar": 40, "ol": 40, "refineri": 41, "shadow": 41, "cvxpy": 41, "crude": 41, "oil": 41, "feed": 41, "kerosin": 41, "so": 41, "high": 41, "support": [42, 50], "vector": [42, 50], "binari": [42, 47], "classif": 42, "read": [42, 50], "select": [42, 50], "train": [42, 50], "svm": [42, 50], "classifi": 42, "metric": [42, 50], "quadrat": [42, 44, 45], "primal": [42, 50], "kernel": [42, 50], "space": [42, 50], "trick": [42, 50], "polynomi": [42, 50], "conic": [43, 45, 47, 50], "design": [44, 49], "multilay": 44, "insul": 44, "analyt": [44, 60, 62], "n": 44, "layer": 44, "miqco": 44, "econom": [45, 57], "quantiti": 45, "usag": 45, "eoq": 45, "classic": 45, "item": 45, "hyperbol": 45, "cone": [45, 55], "as_domain": 45, "simplifi": 45, "rotated_quadrat": 45, "extend": 45, "resourc": 45, "test": 45, "larger": 45, "soco": 45, "luenberg": 46, "s": [46, 47, 64], "invest": 46, "wheel": 46, "simul": [46, 47, 52], "avers": [46, 49], "doe": 46, "chang": 46, "kelli": 47, "criterion": 47, "log": 47, "growth": [47, 49], "game": 47, "outcom": 47, "constrain": [47, 55, 57], "financi": 49, "effect": 49, "equiti": 49, "multipli": 49, "interest": 49, "extens": [49, 62], "radial": 50, "basi": 50, "account": 51, "uncertainti": [51, 55], "meet": 51, "realiti": 51, "robust": [52, 54, 55, 63], "via": 52, "actual": 52, "fleet": 53, "assign": 53, "flight": 53, "naiv": 53, "unimodular": 53, "aircraft": 53, "reduc": [53, 68], "riski": 53, "stage": [54, 56, 61, 62, 63, 66], "origin": 55, "copper": 55, "consumpt": 55, "counterpart": 55, "cardin": 55, "adversari": 55, "approach": 55, "budget": 55, "ball": 55, "environ": 55, "9": 56, "stochast": [56, 59, 62, 64, 65], "system": 57, "chanc": [57, 58, 62], "ed": 57, "understand": 57, "sensit": 57, "pop": 59, "net": 59, "expect": 59, "evm": 59, "vss": 59, "perfect": [59, 65], "evpi": 59, "seafood": 60, "center": 60, "explicit": 60, "determinist": [60, 62], "averag": [60, 62, 63], "sampl": [60, 63], "converg": 60, "saa": [60, 62, 63, 65], "10": 61, "airlin": 62, "alloc": 62, "attribut": 62, "its": [62, 64], "continu": 62, "uncorrel": 62, "correl": 62, "differ": 62, "type": 62, "tackl": 62, "farmer": 64, "recommend": 64, "plant": 64, "recours": 65, "action": 65, "imbal": 65, "nonzero": 65, "wind": 66, "curtail": 66, "commit": 66, "packag": 66, "assess": 66, "work": 67, "workflow": [68, 69], "monad": 68, "pure": 68, "composit": 68, "map": 68, "filter": 68, "functool": 68, "mayb": 68, "failur": 68, "wrap": 68, "transform": 68, "pyomomonad": 68, "reactor": 68, "builder": 68, "execut": 68, "alternt": 68, "syntax": 68, "style": 69, "guid": 69, "convent": 69, "namespac": 69, "instead": 69, "abstractmodel": 69, "rangeset": 69, "domain": 69, "rather": 69, "than": 69, "within": 69, "when": 69, "prefer": 69, "constraintlist": 69, "decor": 69, "improv": 69, "readabl": 69, "name": 69, "short": 69, "mai": 69, "all": 69, "cap": 69, "capit": 69, "tidi": 69, "dimension": 69, "acknowledg": 69}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinxcontrib.bibtex": 9, "sphinx": 56}}) \ No newline at end of file