{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "9hBrO0SNlv6f",
"tags": []
},
"source": [
"```{index} single: application; production planning\n",
"```\n",
"```{index} single: solver; cbc\n",
"```\n",
"```{index} single: solver; highs\n",
"```\n",
"```{index} pandas dataframe\n",
"```\n",
"```{index} single: AMPL; AMPL Python API\n",
"```\n",
"```{index} single: AMPL MP Library\n",
"```\n",
"```{index} simulations\n",
"```\n",
"\n",
"# Robustness analysis of BIM production plan via simulations\n",
"\n",
"This example is a continuation of the BIM chip production problem illustrated [here](../02/bim.ipynb). Recall hat BIM produces logic and memory chips using copper, silicon, germanium, and plastic and that each chip requires the following quantities of raw materials:\n",
"\n",
"| chip | copper | silicon | germanium | plastic |\n",
"|:-------|-------:|--------:|----------:|--------:|\n",
"|logic | 0.4 | 1 | - | 1 |\n",
"|memory | 0.2 | - | 1 | 1 |\n",
"\n",
"BIM needs to carefully manage the acquisition and inventory of these raw materials based on the forecasted demand for the chips. Data analysis led to the following prediction of monthly demands:\n",
"\n",
"| chip | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec |\n",
"|:-------|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|\n",
"|logic | 88 | 125 | 260 | 217 | 238 | 286 | 248 | 238 | 265 | 293 | 259 | 244 |\n",
"|memory | 47 | 62 | 81 | 65 | 95 | 118 | 86 | 89 | 82 | 82 | 84 | 66 |\n",
"\n",
"At the beginning of the year, BIM has the following stock:\n",
"\n",
"|copper|silicon|germanium|plastic|\n",
"|-----:|------:|--------:|------:|\n",
"| 480| 1000 | 1500| 1750 |\n",
"\n",
"The company would like to have at least the following stock at the end of the year:\n",
"\n",
"|copper|silicon|germanium|plastic|\n",
"|-----:|------:|--------:|------:|\n",
"| 200| 500 | 500| 1000 |\n",
"\n",
"Each raw material can be acquired at each month, but the unit prices vary as follows:\n",
"\n",
"| product | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec |\n",
"|:---------|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|\n",
"|copper | 1 | 1 | 1 | 2 | 2 | 3 | 3 | 2 | 2 | 1 | 1 | 2 |\n",
"|silicon | 4 | 3 | 3 | 3 | 5 | 5 | 6 | 5 | 4 | 3 | 3 | 5 |\n",
"|germanium | 5 | 5 | 5 | 3 | 3 | 3 | 3 | 2 | 3 | 4 | 5 | 6 |\n",
"|plastic | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 |\n",
"\n",
"The inventory is limited by a capacity of a total of 9000 units per month, regardless of the type of material of products in stock. The holding costs of the inventory are 0.05 per unit per month regardless of the material type. Due to budget constraints, BIM cannot spend more than 5000 per month on acquisition.\n",
"\n",
"BIM aims at minimizing the acquisition and holding costs of the materials while meeting the required quantities for production. The production is made to order, meaning that no inventory of chips is kept.\n",
"\n",
"Let us model the material acquisition planning and solve it optimally based on the forecasted chip demand above."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"id": "M5Nh7EXxlv6h",
"outputId": "b97262d9-deb1-42d1-9a6f-431ef6311eca",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Using default Community Edition License for Colab. Get yours at: https://ampl.com/ce\n",
"Licensed to AMPL Community Edition License for the AMPL Model Colaboratory (https://colab.ampl.com).\n"
]
}
],
"source": [
"# install dependencies and select solver\n",
"%pip install -q amplpy numpy pandas matplotlib\n",
"\n",
"SOLVER = \"cbc\" # highs, scip, cbc, mosek, gurobi, cplex, xpress, knitro\n",
"\n",
"from amplpy import AMPL, ampl_notebook\n",
"\n",
"ampl = ampl_notebook(\n",
" modules=[\"coin\", \"highs\"], # modules to install\n",
" license_uuid=\"default\", # license to use\n",
") # instantiate AMPL object and register notebook magics"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"id": "UelTHFPz9pLW",
"outputId": "fa5b6f6d-abdd-45ca-c120-6a64d8835e66",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 332
}
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
" Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\n",
"chip \n",
"logic 88 125 260 217 238 286 248 238 265 293 259 244\n",
"memory 47 62 81 65 95 118 86 89 82 82 84 66"
],
"text/html": [
"\n",
"
\n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Jan \n",
" Feb \n",
" Mar \n",
" Apr \n",
" May \n",
" Jun \n",
" Jul \n",
" Aug \n",
" Sep \n",
" Oct \n",
" Nov \n",
" Dec \n",
" \n",
" \n",
" chip \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" logic \n",
" 88 \n",
" 125 \n",
" 260 \n",
" 217 \n",
" 238 \n",
" 286 \n",
" 248 \n",
" 238 \n",
" 265 \n",
" 293 \n",
" 259 \n",
" 244 \n",
" \n",
" \n",
" memory \n",
" 47 \n",
" 62 \n",
" 81 \n",
" 65 \n",
" 95 \n",
" 118 \n",
" 86 \n",
" 89 \n",
" 82 \n",
" 82 \n",
" 84 \n",
" 66 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
" Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov \\\n",
"product \n",
"copper 1.0 1.0 1.0 2.0 2.0 3.0 3.0 2.0 2.0 1.0 1.0 \n",
"silicon 4.0 3.0 3.0 3.0 5.0 5.0 6.0 5.0 4.0 3.0 3.0 \n",
"germanium 5.0 5.0 5.0 3.0 3.0 3.0 3.0 2.0 3.0 4.0 5.0 \n",
"plastic 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 \n",
"\n",
" Dec \n",
"product \n",
"copper 2.0 \n",
"silicon 5.0 \n",
"germanium 6.0 \n",
"plastic 0.1 "
],
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Jan \n",
" Feb \n",
" Mar \n",
" Apr \n",
" May \n",
" Jun \n",
" Jul \n",
" Aug \n",
" Sep \n",
" Oct \n",
" Nov \n",
" Dec \n",
" \n",
" \n",
" product \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" copper \n",
" 1.0 \n",
" 1.0 \n",
" 1.0 \n",
" 2.0 \n",
" 2.0 \n",
" 3.0 \n",
" 3.0 \n",
" 2.0 \n",
" 2.0 \n",
" 1.0 \n",
" 1.0 \n",
" 2.0 \n",
" \n",
" \n",
" silicon \n",
" 4.0 \n",
" 3.0 \n",
" 3.0 \n",
" 3.0 \n",
" 5.0 \n",
" 5.0 \n",
" 6.0 \n",
" 5.0 \n",
" 4.0 \n",
" 3.0 \n",
" 3.0 \n",
" 5.0 \n",
" \n",
" \n",
" germanium \n",
" 5.0 \n",
" 5.0 \n",
" 5.0 \n",
" 3.0 \n",
" 3.0 \n",
" 3.0 \n",
" 3.0 \n",
" 2.0 \n",
" 3.0 \n",
" 4.0 \n",
" 5.0 \n",
" 6.0 \n",
" \n",
" \n",
" plastic \n",
" 0.1 \n",
" 0.1 \n",
" 0.1 \n",
" 0.1 \n",
" 0.1 \n",
" 0.1 \n",
" 0.1 \n",
" 0.1 \n",
" 0.1 \n",
" 0.1 \n",
" 0.1 \n",
" 0.1 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
]
},
"metadata": {}
}
],
"source": [
"from io import StringIO\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"plt.rcParams.update({\"font.size\": 14})\n",
"\n",
"demand_data = \"\"\"\n",
"chip, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec\n",
"logic, 88, 125, 260, 217, 238, 286, 248, 238, 265, 293, 259, 244\n",
"memory, 47, 62, 81, 65, 95, 118, 86, 89, 82, 82, 84, 66\n",
"\"\"\"\n",
"\n",
"demand_chips = pd.read_csv(StringIO(demand_data), index_col=\"chip\")\n",
"display(demand_chips)\n",
"\n",
"price_data = \"\"\"\n",
"product, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec\n",
"copper, 1, 1, 1, 2, 2, 3, 3, 2, 2, 1, 1, 2\n",
"silicon, 4, 3, 3, 3, 5, 5, 6, 5, 4, 3, 3, 5\n",
"germanium, 5, 5, 5, 3, 3, 3, 3, 2, 3, 4, 5, 6\n",
"plastic, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1\n",
"\"\"\"\n",
"\n",
"price = pd.read_csv(StringIO(price_data), index_col=\"product\")\n",
"display(price)\n",
"\n",
"use = dict()\n",
"use[\"logic\"] = {\"silicon\": 1, \"plastic\": 1, \"copper\": 4}\n",
"use[\"memory\"] = {\"germanium\": 1, \"plastic\": 1, \"copper\": 2}\n",
"use = pd.DataFrame.from_dict(use).fillna(0).astype(int)\n",
"material_demand = use.dot(demand_chips)\n",
"\n",
"existing = pd.Series(\n",
" {\"silicon\": 1000, \"germanium\": 1500, \"plastic\": 1750, \"copper\": 4800}\n",
")\n",
"eot_inventory = pd.Series(\n",
" {\"silicon\": 500, \"germanium\": 500, \"plastic\": 1000, \"copper\": 2000}\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"id": "JW7ikzYC9pLZ"
},
"outputs": [],
"source": [
"# we store all the problem data in one object to easily perform folding-horizon simulations\n",
"def initialize_problem_data():\n",
" problem_data = {\n",
" \"price\": price.copy(deep=True),\n",
" \"inventory_cost\": 0.05,\n",
" \"material_demand\": material_demand.copy(deep=True),\n",
" \"demand_chips_ref\": demand_chips.copy(deep=True),\n",
" \"demand_chips_simulation\": demand_chips.copy(deep=True),\n",
" \"use\": use.copy(deep=True),\n",
" \"existing\": existing.copy(deep=True),\n",
" \"eot_inventory\": eot_inventory.copy(deep=True),\n",
" \"stock_limit\": 9000,\n",
" \"month_budget\": 2500,\n",
" }\n",
" return problem_data\n",
"\n",
"\n",
"def ShowTable(X, I, J):\n",
" return pd.DataFrame.from_records(\n",
" [[X[i, j] for j in J] for i in I], index=I, columns=J\n",
" ).round(decimals=2)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"id": "uME82DhNYDhQ",
"outputId": "3427f0a0-8d9b-4a79-d2d2-abfc76ce0a59",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Overwriting product_inventory.mod\n"
]
}
],
"source": [
"%%writefile product_inventory.mod\n",
"\n",
"set PERIODS;\n",
"set PRODUCTS;\n",
"\n",
"param first symbolic;\n",
"param prev_period{PERIODS} symbolic;\n",
"param last symbolic;\n",
"\n",
"param stock_limit;\n",
"param month_budget;\n",
"\n",
"param pi{PERIODS, PRODUCTS}; # acquisition price\n",
"param h{PERIODS, PRODUCTS}; # holding cost\n",
"param delta{PERIODS, PRODUCTS}; # demand\n",
"\n",
"param existing{PRODUCTS};\n",
"param desired{PRODUCTS};\n",
"\n",
"var x{PERIODS, PRODUCTS} >= 0;\n",
"var s{PERIODS, PRODUCTS} >= 0;\n",
"\n",
"var acquisition_cost\n",
" = sum {t in PERIODS, p in PRODUCTS} pi[t,p] * x[t,p];\n",
"\n",
"var inventory_cost\n",
" = sum {t in PERIODS, p in PRODUCTS} h[t,p] * s[t,p];\n",
"\n",
"minimize TotalCost: acquisition_cost + inventory_cost;\n",
"\n",
"s.t. Balance{t in PERIODS, p in PRODUCTS}:\n",
" (if t==first then existing[p] else s[prev_period[t],p])\n",
" + x[t,p] == delta[t,p] + s[t,p];\n",
"\n",
"s.t. Finish{p in PRODUCTS}:\n",
" s[last,p] >= desired[p];\n",
"\n",
"s.t. Inventory{t in PERIODS}:\n",
" sum {p in PRODUCTS} s[t,p] <= stock_limit;\n",
"\n",
"s.t. Budget{t in PERIODS}:\n",
" sum {p in PRODUCTS} pi[t,p]*x[t,p] <= month_budget;\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"outputId": "b95f3617-6977-4035-a7f3-faee526c1105",
"id": "_Zi7OMcaYDhR",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 516
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 23580.34083\n",
"0 simplex iterations\n",
" \n",
"\n",
"\"option abs_boundtol 1.1368683772161603e-13;\"\n",
"or \"option rel_boundtol 2.2737367544323206e-16;\"\n",
"will change deduced dual values.\n",
"\n",
"The optimal solution yields a total cost of 23580.34\n",
"\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
" Jan Feb Mar Apr May Jun Jul Aug \\\n",
"silicon 0.00 833.33 0.0 833.33 0.00 0.0 0.0 0.00 \n",
"plastic 0.00 0.00 0.0 0.00 0.00 0.0 266.0 327.00 \n",
"copper 214.67 0.00 2500.0 0.00 536.45 0.0 0.0 1233.65 \n",
"germanium 0.00 0.00 0.0 0.00 0.00 0.0 0.0 0.00 \n",
"\n",
" Sep Oct Nov Dec \n",
"silicon 594.33 0.0 0.0 0.0 \n",
"plastic 722.00 0.0 343.0 1310.0 \n",
"copper 25.23 2500.0 2465.7 682.3 \n",
"germanium 0.00 0.0 0.0 0.0 "
],
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Jan \n",
" Feb \n",
" Mar \n",
" Apr \n",
" May \n",
" Jun \n",
" Jul \n",
" Aug \n",
" Sep \n",
" Oct \n",
" Nov \n",
" Dec \n",
" \n",
" \n",
" \n",
" \n",
" silicon \n",
" 0.00 \n",
" 833.33 \n",
" 0.0 \n",
" 833.33 \n",
" 0.00 \n",
" 0.0 \n",
" 0.0 \n",
" 0.00 \n",
" 594.33 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" plastic \n",
" 0.00 \n",
" 0.00 \n",
" 0.0 \n",
" 0.00 \n",
" 0.00 \n",
" 0.0 \n",
" 266.0 \n",
" 327.00 \n",
" 722.00 \n",
" 0.0 \n",
" 343.0 \n",
" 1310.0 \n",
" \n",
" \n",
" copper \n",
" 214.67 \n",
" 0.00 \n",
" 2500.0 \n",
" 0.00 \n",
" 536.45 \n",
" 0.0 \n",
" 0.0 \n",
" 1233.65 \n",
" 25.23 \n",
" 2500.0 \n",
" 2465.7 \n",
" 682.3 \n",
" \n",
" \n",
" germanium \n",
" 0.00 \n",
" 0.00 \n",
" 0.0 \n",
" 0.00 \n",
" 0.00 \n",
" 0.0 \n",
" 0.0 \n",
" 0.00 \n",
" 0.00 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
" Jan Feb Mar Apr May Jun Jul \\\n",
"silicon 912.00 1620.33 1360.33 1976.67 1738.67 1452.67 1204.67 \n",
"plastic 1615.00 1428.00 1087.00 805.00 472.00 68.00 0.00 \n",
"copper 4568.67 3944.67 5242.67 4244.67 3639.12 2259.12 1095.12 \n",
"germanium 1453.00 1391.00 1310.00 1245.00 1150.00 1032.00 946.00 \n",
"\n",
" Aug Sep Oct Nov Dec \n",
"silicon 966.67 1296.0 1003.0 744.0 500.0 \n",
"plastic 0.00 375.0 0.0 0.0 1000.0 \n",
"copper 1198.77 0.0 1164.0 2425.7 2000.0 \n",
"germanium 857.00 775.0 693.0 609.0 543.0 "
],
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Jan \n",
" Feb \n",
" Mar \n",
" Apr \n",
" May \n",
" Jun \n",
" Jul \n",
" Aug \n",
" Sep \n",
" Oct \n",
" Nov \n",
" Dec \n",
" \n",
" \n",
" \n",
" \n",
" silicon \n",
" 912.00 \n",
" 1620.33 \n",
" 1360.33 \n",
" 1976.67 \n",
" 1738.67 \n",
" 1452.67 \n",
" 1204.67 \n",
" 966.67 \n",
" 1296.0 \n",
" 1003.0 \n",
" 744.0 \n",
" 500.0 \n",
" \n",
" \n",
" plastic \n",
" 1615.00 \n",
" 1428.00 \n",
" 1087.00 \n",
" 805.00 \n",
" 472.00 \n",
" 68.00 \n",
" 0.00 \n",
" 0.00 \n",
" 375.0 \n",
" 0.0 \n",
" 0.0 \n",
" 1000.0 \n",
" \n",
" \n",
" copper \n",
" 4568.67 \n",
" 3944.67 \n",
" 5242.67 \n",
" 4244.67 \n",
" 3639.12 \n",
" 2259.12 \n",
" 1095.12 \n",
" 1198.77 \n",
" 0.0 \n",
" 1164.0 \n",
" 2425.7 \n",
" 2000.0 \n",
" \n",
" \n",
" germanium \n",
" 1453.00 \n",
" 1391.00 \n",
" 1310.00 \n",
" 1245.00 \n",
" 1150.00 \n",
" 1032.00 \n",
" 946.00 \n",
" 857.00 \n",
" 775.0 \n",
" 693.0 \n",
" 609.0 \n",
" 543.0 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
]
},
"metadata": {}
}
],
"source": [
"def BIMProductAcquisitionAndInventory(problem_data):\n",
" demand = problem_data[\"use\"].dot(problem_data[\"demand_chips_ref\"])\n",
" acquisition_price = problem_data[\"price\"]\n",
" existing = problem_data[\"existing\"]\n",
" desired = problem_data[\"eot_inventory\"]\n",
" stock_limit = problem_data[\"stock_limit\"]\n",
" month_budget = problem_data[\"month_budget\"]\n",
"\n",
" ampl = AMPL()\n",
" ampl.read(\"product_inventory.mod\")\n",
"\n",
" periods = list(demand.columns)\n",
" products = list(demand.index)\n",
"\n",
" ampl.set[\"PERIODS\"] = periods\n",
" ampl.set[\"PRODUCTS\"] = products\n",
" ampl.param[\"first\"] = periods[0]\n",
" ampl.param[\"prev_period\"] = {j: i for i, j in zip(periods, periods[1:])}\n",
" ampl.param[\"last\"] = periods[-1]\n",
"\n",
" ampl.param[\"stock_limit\"] = stock_limit\n",
" ampl.param[\"month_budget\"] = month_budget\n",
"\n",
" ampl.param[\"pi\"] = acquisition_price.T\n",
" ampl.param[\"h\"] = {(t, p): 0.05 for p in products for t in periods}\n",
" ampl.param[\"delta\"] = demand.T\n",
"\n",
" ampl.param[\"existing\"] = existing\n",
" ampl.param[\"desired\"] = desired\n",
"\n",
" ampl.option[\"solver\"] = SOLVER\n",
" ampl.solve()\n",
"\n",
" return ampl, products, periods\n",
"\n",
"\n",
"problem_data = initialize_problem_data()\n",
"m, products, periods = BIMProductAcquisitionAndInventory(problem_data)\n",
"\n",
"print(f\"The optimal solution yields a total cost of {m.get_value('TotalCost'):.2f}\\n\")\n",
"\n",
"x = m.get_variable(\"x\").to_dict()\n",
"# x.index = pd.MultiIndex.from_tuples(x.index)\n",
"problem_data[\"purchases\"] = ShowTable(x, periods, products).T\n",
"\n",
"s = m.get_variable(\"s\").to_dict()\n",
"problem_data[\"stock\"] = ShowTable(s, periods, products).T\n",
"\n",
"display(problem_data[\"purchases\"])\n",
"display(problem_data[\"stock\"])"
]
},
{
"cell_type": "markdown",
"metadata": {
"tags": [],
"id": "s4GUWYgeYDhS"
},
"source": [
"## Actual performance of the robust solution\n",
"\n",
"We now perform a stochastic simulation to assess the performance of the robust solutions that we found earlier."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"id": "_ocx9Ht8YDhT",
"outputId": "cf813b47-92dc-4201-fe2c-f1505fdcd587",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Overwriting product_demand_missed_in_period.mod\n"
]
}
],
"source": [
"%%writefile product_demand_missed_in_period.mod\n",
"\n",
"set PRODUCTS;\n",
"set MATERIALS;\n",
"\n",
"param avail{MATERIALS};\n",
"param use{MATERIALS, PRODUCTS};\n",
"param demand_chips{PRODUCTS};\n",
"\n",
"# Decision variable: nb of chips to produce >= 0\n",
"var x{PRODUCTS} >= 0;\n",
"\n",
"# Decision variable: missed demand\n",
"var s{PRODUCTS} >= 0;\n",
"\n",
"# Constraint: per resource we cannot use more than there is\n",
"s.t. ResourceConstraint{i in MATERIALS}:\n",
" sum {p in PRODUCTS} x[p] * use[i, p] <= avail[i];\n",
"\n",
"# Constraint: production + missed demand = total demand in this period\n",
"s.t. ProducedPlusUnmet{p in PRODUCTS}:\n",
" x[p] + s[p] == demand_chips[p];\n",
"\n",
"# Objective - minimize the missed demand\n",
"minimize TotalUnmet:\n",
" sum {p in PRODUCTS} s[p];\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"id": "TznpEjpP9pLb"
},
"outputs": [],
"source": [
"def minimize_missed_demand_in_period(\n",
" inventory, missed_demand, purchases, existing, demand_chips, use, period=None\n",
"):\n",
" periods = inventory.columns\n",
" first = periods[0]\n",
" prev = {j: i for i, j in zip(periods, periods[1:])}\n",
" last = periods[-1]\n",
"\n",
" ampl = AMPL()\n",
" ampl.read(\"product_demand_missed_in_period.mod\")\n",
"\n",
" products = list(use.columns)\n",
" materials = list(use.index)\n",
"\n",
" ampl.set[\"PRODUCTS\"] = products\n",
" ampl.set[\"MATERIALS\"] = materials\n",
"\n",
" ampl.param[\"avail\"] = {\n",
" i: inventory.loc[i, prev[period]] + purchases.loc[i, period] for i in materials\n",
" }\n",
" ampl.param[\"use\"] = {(i, p): use.at[i, p] for i in materials for p in products}\n",
" ampl.param[\"demand_chips\"] = demand_chips.loc[:, period]\n",
"\n",
" ampl.option[\"solver\"] = SOLVER\n",
" ampl.solve()\n",
"\n",
" x = ampl.get_variable(\"x\").to_dict()\n",
" s = ampl.get_variable(\"s\").to_dict()\n",
"\n",
" # update inventory\n",
" for i in materials:\n",
" inventory.loc[i, period] = (\n",
" inventory.loc[i, prev[period]]\n",
" + purchases.loc[i, period]\n",
" - sum([x[p] * use.loc[i, p] for p in products])\n",
" )\n",
"\n",
" # update missed demand\n",
" for p in products:\n",
" missed_demand.loc[p, period] = s[p]\n",
"\n",
" return 0\n",
"\n",
"\n",
"def simulation_per_trajectory(purchases, existing, demand_chips, use):\n",
" # Set up the table to store inventory evolution\n",
" inventory = pd.DataFrame(index=purchases.index, columns=purchases.columns)\n",
" inventory = pd.concat(\n",
" [pd.DataFrame(existing, index=existing.index, columns=[\"existing\"]), inventory],\n",
" axis=1,\n",
" )\n",
"\n",
" # Set up the DF to store missed demand information\n",
" missed_demand = pd.DataFrame(\n",
" np.zeros((len(demand_chips.index), len(purchases.columns))),\n",
" index=demand_chips.index,\n",
" columns=purchases.columns,\n",
" )\n",
"\n",
" # Proper simulation\n",
" for period in inventory.columns[1:]:\n",
" minimize_missed_demand_in_period(\n",
" inventory, missed_demand, purchases, existing, demand_chips, use, period\n",
" )\n",
"\n",
" return inventory.iloc[:, 1:], missed_demand\n",
"\n",
"\n",
"def simulate_performance(problem_data, n=50, rho=0.05, seed=0):\n",
" rng = np.random.default_rng(seed)\n",
"\n",
" results = []\n",
" for i in range(n):\n",
" perturbed_demand = problem_data[\"demand_chips_simulation\"].applymap(\n",
" lambda x: x * (1 + rho * (1 - 2 * rng.random()))\n",
" )\n",
" inv, md = simulation_per_trajectory(\n",
" problem_data[\"purchases\"], problem_data[\"existing\"], perturbed_demand, use\n",
" )\n",
" results.append({\"inventory\": inv, \"missing_demand\": md})\n",
"\n",
" MissingDemand = pd.concat(\n",
" [i[\"missing_demand\"] for i in results], keys=[i for i in range(len(results))]\n",
" )\n",
" MissingDemand = MissingDemand.astype(\"float\").swaplevel()\n",
"\n",
" InventoryEvolution = pd.concat(\n",
" [i[\"inventory\"] for i in results], keys=[i for i in range(len(results))]\n",
" )\n",
" InventoryEvolution = InventoryEvolution.astype(\"float\").swaplevel()\n",
"\n",
" return {\"MissingDemand\": MissingDemand, \"InventoryEvolution\": InventoryEvolution}\n",
"\n",
"\n",
"def report(MissingDemand, InventoryEvolution, problem_data):\n",
" # list to store DFs with per-group computed quantiles at various levels\n",
" average_missed_demand = MissingDemand.groupby(level=0).mean().transpose()\n",
"\n",
" # build a plot with as many subplots as there are chip types\n",
" fig, axis = plt.subplots(figsize=(11, 4))\n",
" average_missed_demand.plot(ax=axis, drawstyle=\"steps-mid\", grid=True)\n",
" plt.xticks(\n",
" ticks=np.arange(len(average_missed_demand.index)),\n",
" labels=average_missed_demand.index,\n",
" )\n",
" # axis.set_title(\"Missed demand of chips under \" + str(rho * 100) + \"% uncertainty\")\n",
" fig.tight_layout(pad=3.0)\n",
" plt.savefig(\"bim_robust_missed_demand.pdf\")\n",
"\n",
" realized_inv_cost = (\n",
" InventoryEvolution.groupby(level=0).mean().sum(axis=1).sum()\n",
" * problem_data[\"inventory_cost\"]\n",
" )\n",
" print(\n",
" f'Purchasing cost: {(problem_data[\"price\"] * problem_data[\"purchases\"]).sum().sum():.2f}'\n",
" )\n",
" print(\n",
" f'Theoretical inventory cost: {(problem_data[\"stock\"] * problem_data[\"inventory_cost\"]).sum().sum():.2f}\\n'\n",
" )\n",
" print(f\"Simulated realized inventory cost: {realized_inv_cost:.2f}\")\n",
" print(\n",
" f\"Simulated average missed demand for logic chips is {MissingDemand.groupby(level = 0).mean().sum(axis = 1)[0]:.3f} and for memory chips is {MissingDemand.groupby(level = 0).mean().sum(axis = 1)[1]:.3f}\\n\"\n",
" )\n",
" print(\n",
" \"Plot of missed chips demand over time under \"\n",
" + str(rho * 100)\n",
" + \"% uncertainty\\n\"\n",
" )\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "by6F3bNoYDhZ"
},
"source": [
"We now simulate 50 trajectories assuming there is a $\\rho=8\\%$ uncertainty around the nominal demand."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"id": "b9rPisw69pLc",
"outputId": "bc48358b-d164-419f-df60-c9c79956ad87",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 23580.34083\n",
"0 simplex iterations\n",
" \n",
"\n",
"\"option abs_boundtol 1.1368683772161603e-13;\"\n",
"or \"option rel_boundtol 2.2737367544323206e-16;\"\n",
"will change deduced dual values.\n",
"\n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 25.69183428\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 14.44019085\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 19.27288053\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 6.184000687\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0.006370060829\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0.3304217781\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 4.260205779\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 29.60809783\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 14.64876595\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 13.82087188\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 2.972689303\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 1.197848606\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 18.83629081\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 1.928102786\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 21.41704284\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 14.39737256\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 19.71720675\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0.2895346977\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 16.82419217\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 3.98996927\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 14.58302638\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 4.601283596\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 16.87890233\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 3.456471017\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 13.15310629\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 8.851052463\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 48.53569211\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 12.34528189\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 9.176017599\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 6.913838808\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 29.24160359\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0.6841452299\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 16.03590389\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 9.597856797\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 21.55840715\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 44.20812945\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 7.220685618\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 2.294975269\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 7.054840807\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 1.171080061\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 9.169182314\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 7.035965405\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 1.270361572\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 10.04285461\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 19.21934309\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 8.883369035\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 36.74701521\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 8.42640034\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 14.47067719\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 28.1304537\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 18.69176404\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 11.49122778\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 17.60432621\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 9.453323895\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 32.62889045\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 23.92289873\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 9.433215566\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 23.64121828\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 30.4397849\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 32.55773796\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0.6895265503\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 13.94010107\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 1.537517002\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 8.049814088\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n",
"cbc 2.10.10: \b\b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.10: optimal solution; objective 0\n",
"0 simplex iterations\n",
" \n"
]
}
],
"source": [
"rho = 0.08\n",
"N_sim = 50\n",
"\n",
"problem_data[\"demand_chips_ref\"] = demand_chips\n",
"m, products, periods = BIMProductAcquisitionAndInventory(problem_data)\n",
"\n",
"x = m.get_variable(\"x\").to_dict()\n",
"problem_data[\"purchases\"] = ShowTable(x, periods, products).T\n",
"s = m.get_variable(\"s\").to_dict()\n",
"problem_data[\"stock\"] = ShowTable(s, periods, products).T\n",
"\n",
"SimResults = simulate_performance(problem_data, N_sim, rho)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "zCnYkifIYDhd"
},
"source": [
"The simulation results report a sllighly higher inventory cost and a nonzero amount of missed chip demand."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"id": "n8zvzddFYDhe",
"outputId": "2f2fe332-a60f-4a48-b6a0-773560611e40",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 467
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Purchasing cost: 20309.73\n",
"Theoretical inventory cost: 3270.58\n",
"\n",
"Simulated realized inventory cost: 3309.54\n",
"Simulated average missed demand for logic chips is 4.543 and for memory chips is 13.154\n",
"\n",
"Plot of missed chips demand over time under 8.0% uncertainty\n",
"\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
""
],
"image/png": "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jpo2baqoqCi1b99es2bNks1m0/PPP+9xO6tWrZLNZtPw4cO9ynNRoFgHAAAAgDJm48aN6tSpk+Li4jR8+HBddtllev311zV06FAtXLhQt912m5KSkjR8+HDFx8dr8uTJevrpp3Ot49FHH1WvXr30448/qnfv3ho1apQiIyP14IMPql+/fh63++GHH+r222/XFVdcoREjRqhcuXJ68skn9fe//12TJ0/WmDFj1KhRIw0bNkzZ2dl66KGHNG/evFzrOHfunDp27KhJkyYpOjpa999/v7p3767Vq1erXbt2WrRokcdtT548WaNGjVLdunU1ZswYtWrVSnfccYdiY2P15ptvelxm5syZkqShQ4d6m2K/MWw7AAAAABgjudICs+3s7PPbzgiVQi5yPdUeJdlsfm9yxYoV+uijj9SzZ09J5x/F3axZMy1YsECfffaZ1q5dq2uuuUaSNHHiRNWqVUsvv/yyHn30Udntdn3++ed69tln1a1bNy1ZskTR0dGSJGOMRo0apTfeeENLlizRrbfemmu7n376qb766qs8637ppZcUGxurrVu36oorrpAk/fWvf1WtWrU0ZcoUDRw40L2O559/Xps2bdKdd96p+fPnyxgjp9OpcePG6brrrtOwYcN0/fXXKyYmJte216xZo40bN+rKK6/MNf3OO+/U66+/rjVr1qhdu3bu6b///rs+/PBDNW7cWM2aNfM7596iWAcAAAAAV5r0dNWAbDpEUnxhG//tiBQe7fc2O3To4C7UJclut+u2227T999/r5tuusldTEtSTEyMevToodmzZ+uXX37R5ZdfrldffVWSNGPGDHehLkk2m03PPvuspk+frnfffTdPsX7XXXflu+6HH37YXahL58dKa926tdasWaPMzEz3I8Lnzp0ru92uZ599VjabTcYYSVKTJk00aNAgzZw5Ux999JEGDBiQa9vDhg3LU6hL0ogRI/T6669r1qxZuYr1+fPnKz09PSBX1SWKdQAAAAAocxo3bpxnWpUqVS4678iRI7r88su1YcMGRUdHa/bs2R7XHxkZqR9++KFItpuVlaVjx46pWrVqcjqd+umnn1S/fn1Vr149T/sOHTpo5syZ2rZtW55ivXnz5h5jveqqq9SyZUstXrxY06ZNU3x8vCTpzTffVFRUlO68806PyxU3inUAAAAAsEedv2odANnZ2XKePq3Y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SwcPHlTPnj316quvelzO2/eWYPHll1/qwIEDatmypTp37pxvuyFDhqhq1apat26d9u3b555+9uxZdezYUePGjVNKSoruvvtujRw5UnXq1NH06dN18OBBxcfHa8KECYqLi1NcXJwmTJjg/mnfvn0J7GXxGThwoBo2bKhZs2YV6jg8d+6cOnbsqEmTJik6OloPPPCAevbsqS+//FLt2rXTokWL3G3vuusu2Ww2vf322x7XNX/+fEnSgAEDimZnLCQyMlJ//etfJUkLFy7MNe/jjz9W8+bN9fHHH6t9+/Z64IEHdOWVV+rVV1/Vtddeqz/++CNX+yVLlqh58+ZatGiRWrRoofHjx+vGG2/U4cOHi+w11i+BvrRvFZ664Z07d8788ssvedru3LnTlCtXznTu3DnX9LfeestIMmFhYWb9+vXu6ZmZmaZ9+/ZGkvnmm2+KbydKWFJSkgkNDTUTJkzI8/Puu++621133XUmNDTUrFixItfyP/74o4mJiTFXXnllnvVKMm3btjXp6enu6YcOHTIJCQnG4XB4/H8JFhd27Rk9erQJCwvLddz95S9/ceekW7duebok+3pchoSEmM8//7wY9igwPv74YyPJDB8+3D2tbdu2xmazmb179+ZpP2jQICPJVKxY0Rw6dMg9PT093d31e/Hixe7pX375pZFkJJnZs2cX784Us5I+5kaOHGkkmdWrV+eafvLkSeNwOEzjxo2LatcCxtN7Rs659tZbb+Vpn3M8TZgwIdf0nGNs1KhRubryzZo1K8/xXVoVVS5LUxfaP/P29S4np57kvBZeeI7nHG833HCDyczMdE/ftWuXiYiI8JjvYHDo0CETGxtrbDab6d+/v1m0aJE5cOBAgcv87W9/M5LM448/brKzs93TnU6nadasmQkPDzeHDx92T/f2vSXYJCcnG0nmf//3fy/atn///kaSmTdvnnva+PHjjSQzYMCAXMeWMcacOnXKnD592v13aTqHL3zfXbZsmZFkbr311lxtPHWDnzhxopFk7rzzzlzH35YtW0x4eLiJj483TqfTPb1169YmNDTUHDlyJNd6Tp48acLDw02zZs2KeM9KRmFutd2/f7+RZBITE93TTpw4YWJjY021atXynOvvvvuukWRGjx7tnnb06FETHR1toqOjzZYtW/Js48JzOlC4sl4Ah8OhatWq5Zn+l7/8RR06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3Vu33nprce+CZZTEMdegQQO1adNG69atk8PhCOpRpQujatWquuOOO7RgwQJdffXVuv766/Xbb7/pww8/1PXXX68lS5YEOsSgQS79e727++679fzzzys5OVnbtm1TzZo1tXnzZu3cuVPt2rVzd1fOcffdd2v+/Plavny5mjRpohtuuEG///673nvvPXXp0kVLly71OI6M1f3www8aO3asEhIS1LZtW9WsWVPGGO3bt0+ffPKJMjIyNHLkSPfVOEmaOHGitmzZoldeeUXLly9X27ZtValSJR0+fFg7duzQ9u3b9c033+S5F7g0v7f07NlT06dP17333qvrrrtOHTt2VJMmTZSdna0NGzboq6++Urly5fT++++radOmuZadNGmSNmzYoPnz52vDhg264YYb5HA49NNPP2nFihVav369+0pxx44dtXnzZt1www1q06aNwsPD1bZtW7Vt2zYAe108Lr30Uo0dO9b9pIA/e+ihh7R8+XLNnz9fu3fvVqdOnfTbb79p4cKFyszM1MyZMxUTE5NnuQEDBui1117T3//+d/ffwS4zM9M9OHVWVpZOnTql77//Xl999ZWysrLUs2dPzZkzJ9ftihUrVtS7776rPn36qFGjRrr++utVr149paen68CBA1qzZo2uu+46rVixQpJUqVIlzZs3T/369VPz5s118803q27dujpx4oQ2btyoGjVq5Bp9PyAC/W2BVbRu3dpIMidPnsw1ffHixaZp06YmKirKJCQkmNtvv93s37/f43NKubKev99//9089thjpmHDhiYyMtKUK1fO1K5d2/Tv39988MEHedablJRkfv/9dzNs2DBTuXJl43A4TKNGjcyCBQuKY1dKlDd583SV05iiOy6DzfTp040kM2jQoIu2bdWqlZFkvvrqK2PMf69+7N+/3zz77LOmVq1aJjw83CQlJZnk5ORcvTiMKV3nbEkfcxfKeX5zv379/NwLa8nvPSMtLc2MGTPG/bp11VVXmXfeeafA56yX9SvrRZXL0pYvf17vjDFm27ZtplOnTiYqKsrExsaanj17mr179+Z7zp45c8aMHz/eVK1a1TgcDtOgQQMzY8YMs3jxYiPJvPTSS0W7gyXgt99+MzNnzjS33XabqVu3romJiTF2u91UqVLF9OjRI98r3pmZmWb69OmmVatWJjY21jgcDnPZZZeZ66+/3rz++uvmzJkz7rbevrcEsx9//NGMHDnS1K5d20RGRpqoqCjToEEDM378+FzPnv+zc+fOmSlTppjGjRu7PwPmLPfHH3+4250+fdoMHTrUVKlSxYSGhgb1e3BB77spKSkmISHBSPL4mnXmzBnz+OOPmzp16rifrX7DDTeYdevWFbjN2rVrG0mmevXquXrIBKOcXrY5P+Hh4SYhIcFcc801ZtSoUWb9+vUFLv/DDz+Ye+65xyQlJZnw8HBTvnx5c+WVV5oxY8aYTZs25Wm/detWc/vtt5vKlSu7XyNuuOEGs2zZsuLaxUKzGWNMSXwpYHX16tXTTz/9pLNnz/r1+BMA1jR48GDNnTtX//73vwt9RRn+Gz16tP7xj3/on//8p3tE+dKA94yiQy6t7bHHHtNTTz2lTz75RDfccEOgw7Ec3lsAFKfg69NUDHbv3q09e/bo6quv5oMCABSR48ePa+7cuapbt646dOgQ6HCKDO8ZRYdcWsevv/6aZ9q//vUvvfLKK4qPj1f79u1LPigAKOPK9D3r7733ntasWaP3339fxhiNGzcu0CEBQNBbvny5tmzZosWLF+vMmTNKTk4uFY/A4z2j6JBL6xk5cqQOHDig5s2bq3z58tq/f7+WLl0ql8ulN998U5GRkYEOEQDKnDJfrH/22WeqX7++pk2bVuAALgCAwlm0aJHmzp2rqlWr6umnn1a/fv0CHVKR4D2j6JBL6+nTp4/eeOMNffDBB0pJSVG5cuXUrl07jR8//qKPdwQAFA/uWQcAAAAAwGK4Zx0AAAAAAIuhWAcAAAAAwGIo1gEAAAAAsBiKdQAAAAAALIZiHQAAAAAAi6FYBwAAAADAYijWAQAAAACwGIp1AAAAAAAshmIdAAAAAACL+X/+XBhl2V4e2gAAAABJRU5ErkJggg==\n"
},
"metadata": {}
}
],
"source": [
"report(SimResults[\"MissingDemand\"], SimResults[\"InventoryEvolution\"], problem_data)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.6"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,
"autoclose": false,
"autocomplete": true,
"bibliofile": "biblio.bib",
"cite_by": "apalike",
"current_citInitial": 1,
"eqLabelWithNumbers": true,
"eqNumInitial": 1,
"hotkeys": {
"equation": "Ctrl-E",
"itemize": "Ctrl-I"
},
"labels_anchors": false,
"latex_user_defs": false,
"report_style_numbering": false,
"user_envs_cfg": false
},
"colab": {
"provenance": []
}
},
"nbformat": 4,
"nbformat_minor": 0
}