{
"cells": [
{
"cell_type": "markdown",
"id": "dcadad27-4c87-4222-b248-17b1068311ff",
"metadata": {
"tags": [],
"id": "dcadad27-4c87-4222-b248-17b1068311ff"
},
"source": [
"```{index} single: application; airline seating allocation\n",
"```\n",
"```{index} single: solver; cbc\n",
"```\n",
"```{index} pandas dataframe\n",
"```\n",
"```{index} single: AMPL; sets\n",
"```\n",
"```{index} stochastic optimization\n",
"```\n",
"```{index} chance constraints\n",
"```\n",
"```{index} sample average approximation\n",
"```\n",
"```{index} two-stage problem\n",
"```\n",
"\n",
"# Airline seat allocation problem\n",
"\n",
"## Attribution\n",
"\n",
"The following problem statement is adapted from an exercise and examples presented by Birge and Louveaux (2011).\n",
"\n",
"* Birge, J. R., & Louveaux, F. (2011). Introduction to stochastic programming. Springer Science & Business Media.\n",
"\n",
"The adaptations include a change to parameters for consistency among reformulations of the problem, and additional treatments for sample average approximation (SAA) with chance constraints."
]
},
{
"cell_type": "markdown",
"id": "78a7e349-0b92-4f23-b76b-b1d0e1e153f0",
"metadata": {
"tags": [],
"id": "78a7e349-0b92-4f23-b76b-b1d0e1e153f0"
},
"source": [
"## Problem description\n",
"\n",
"An airline is deciding how to partition a new plane for the Amsterdam-Buenos Aires route. This plane can seat 200 economy-class passengers. A section can be created for first-class seats, but each of these seats takes the space of 2 economy-class seats. A business-class section can also be created, but each of these takes the space of 1.5 economy-class seats. The profit for a first-class ticket is three times the profit of an economy ticket, while a business-class ticket has a profit of two times an economy ticket's profit. Once the plane is partitioned into these seating classes, it cannot be changed.\n",
"\n",
"The airlines knows that the plane will not always be full in every section. The airline has initially identified three scenarios to consider with about equal frequency:\n",
"\n",
"1. Weekday morning and evening traffic;\n",
"2. Weekend traffic; and\n",
"3. Weekday midday traffic.\n",
"\n",
"Under Scenario 1 the airline thinks they can sell as many as 20 first-class tickets, 50 business-class tickets, and 200 economy tickets. Under Scenario 2 these figures are 10 , 24, and 175, while under Scenario 3, they are 6, 10, and 150, respectively. The following table summarizes the forecast demand for these three scenarios.\n",
"\n",
"
\n",
"\n",
"The goal of the airline is to maximize ticket revenue. For marketing purposes, the airline will not sell more tickets than seats in each of the sections (hence no overbooking strategy). We further assume customers seeking a first-class or business-class seat will not downgrade if those seats are unavailable."
]
},
{
"cell_type": "markdown",
"id": "347cbd20-15e4-4634-8a05-e782dc0e0929",
"metadata": {
"id": "347cbd20-15e4-4634-8a05-e782dc0e0929"
},
"source": [
"## Installation and imports"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "ea71de65",
"metadata": {
"ExecuteTime": {
"end_time": "2022-09-30T21:49:05.660595Z",
"start_time": "2022-09-30T21:49:05.457825Z"
},
"id": "ea71de65",
"outputId": "2338046a-dbcd-45be-aa03-227edb45e891",
"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 pandas matplotlib numpy scipy\n",
"\n",
"SOLVER = \"highs\"\n",
"\n",
"from amplpy import AMPL, ampl_notebook\n",
"\n",
"ampl = ampl_notebook(\n",
" modules=[\"highs\"], # modules to install\n",
" license_uuid=\"default\", # license to use\n",
") # instantiate AMPL object and register magics"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "e91fbe82",
"metadata": {
"ExecuteTime": {
"end_time": "2022-09-30T21:49:07.404490Z",
"start_time": "2022-09-30T21:49:05.663157Z"
},
"id": "e91fbe82"
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"id": "2f7df9f7-9a96-4358-9e47-50cd63d7611a",
"metadata": {
"id": "2f7df9f7-9a96-4358-9e47-50cd63d7611a"
},
"source": [
"## Problem data\n",
"\n",
"Pandas DataFrames and Series are used to encode problem data in the following cell, and to encode problem solutions in subsequent cells."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "51e9fdd8-d586-48e6-be86-0d97fbad8a3f",
"metadata": {
"id": "51e9fdd8-d586-48e6-be86-0d97fbad8a3f"
},
"outputs": [],
"source": [
"# scenario data\n",
"demand = pd.DataFrame(\n",
" {\n",
" \"morning and evening\": {\"F\": 20, \"B\": 50, \"E\": 200},\n",
" \"weekend\": {\"F\": 10, \"B\": 24, \"E\": 175},\n",
" \"midday\": {\"F\": 6, \"B\": 10, \"E\": 150},\n",
" }\n",
").T\n",
"\n",
"# global revenue and seat factor data\n",
"capacity = 200\n",
"revenue_factor = pd.Series({\"F\": 3.0, \"B\": 2.0, \"E\": 1.0})\n",
"seat_factor = pd.Series({\"F\": 2.0, \"B\": 1.5, \"E\": 1.0})"
]
},
{
"cell_type": "markdown",
"id": "cfbd3423-f10d-49a4-b7f7-f6545729c9cc",
"metadata": {
"id": "cfbd3423-f10d-49a4-b7f7-f6545729c9cc"
},
"source": [
"## Analytics\n",
"\n",
"Prior to optimization, a useful first step is to prepare an analytics function to display performance for any given allocation of seats. The first-stage decision variables are the number of seats allocated for each class $c\\in C$. We would like to provide a analysis showing the operational consequences for any proposed allocation of seats. For this purpose, we create a function ``seat_report()`` that show the tickets that can be sold in each scenario, the resulting revenue, and the unsatisfied demand ('spillage').\n",
"\n",
"To establish a basis for analyzing possible solutions to the airline's problem, this function first is demonstrated for the case where the airplane is configured as entirely economy-class."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "3eed107a-1fec-4d6c-9b01-f399fbe3bb99",
"metadata": {
"id": "3eed107a-1fec-4d6c-9b01-f399fbe3bb99",
"outputId": "d4a06a5a-6e08-4437-d421-f8f4f42ed54d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\n",
"Seat Allocation\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
" F B E TOTAL\n",
"seat allocation 0.0 0.0 200.0 200.0\n",
"economy equivalent seat allocation 0.0 0.0 200.0 200.0"
],
"text/html": [
"\n",
"
"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAJOCAYAAAAqFJGJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB7TUlEQVR4nO3dd3RU1fr/8c+kMOkJJKRRA4QiTYpU6SChCnhBinRQkCJKEUQELDQV9KoUvUBQ4SqIopeqCEF6DyBSI01NiJQ0IAGS8/uDX+brmJCAQzIJeb/WmrVy9tln7+dsDpl5cvbZYzIMwxAAAAAA2MDB3gEAAAAAyP9ILAAAAADYjMQCAAAAgM1ILAAAAADYjMQCAAAAgM1ILAAAAADYjMQCAAAAgM1ILAAAAADYjMQCAAAAgM1ILAAA+IeaNm2qKlWq2DuMh0K/fv1UunRpe4cBwAYkFgAAhYeHy2QyWV5OTk4qVqyY+vXrp99//93e4RV4SUlJmjx5sqpUqSJ3d3f5+vrq0Ucf1QsvvKA//vjD3uEBgCTJyd4BAADyjtdff10hISFKTk7Wrl27FB4erm3btunnn3+Wi4uLvcMrkG7duqXGjRvr+PHj6tu3r0aMGKGkpCQdPXpUy5YtU+fOnRUcHGzvMG32ySefKC0tzd5hALABiQUAwKJNmzaqXbu2JGnQoEHy8/PTzJkz9d1336lbt252jq5gWrVqlQ4ePKilS5eqZ8+eVvuSk5N18+ZNO0X2YFy7dk3u7u5ydna2dygAbMRUKADAXTVq1EiSFBUVZVV+/Phx/etf/1KRIkXk4uKi2rVr67vvvrPs37dvn0wmk5YsWZKhzQ0bNshkMmn16tWWst9//10DBgxQQECAzGazKleurEWLFlkdFxERIZPJpOXLl+utt95S8eLF5eLiohYtWuj06dNWdUuXLq1+/fpl6Ltp06Zq2rSpVVlKSoomT56scuXKyWw2q0SJEho3bpxSUlLuaYwkaf/+/WrQoIFcXV0VEhKi+fPnW/YlJSXJ3d1dL7zwQobjfvvtNzk6Omr69Ol3bTt97Bs2bJhhn4uLi7y8vKzKjh8/rm7duqlo0aJydXVVhQoVNHHiRKs6D3q8t27dqq5du6pkyZKWMXzxxRd148YNq3r9+vWTh4eHoqKi1LZtW3l6eqpXr16WfX9/xuLatWsaPXq0SpQoIbPZrAoVKuidd96RYRh3HS8A9sMdCwDAXZ09e1aSVLhwYUvZ0aNH1bBhQxUrVkzjx4+Xu7u7li9frk6dOmnlypXq3LmzateurTJlymj58uXq27evVZtffvmlChcurNatW0uSLl68qHr16slkMmn48OEqWrSo1q1bp4EDByohIUGjRo2yOn7GjBlycHDQmDFjFB8fr1mzZqlXr17avXv3fZ9fWlqaOnbsqG3btunZZ59VpUqVdOTIEc2ZM0cnT57UqlWrsm3j6tWratu2rbp166YePXpo+fLlGjp0qAoVKqQBAwbIw8NDnTt31pdffqnZs2fL0dHRcux///tfGYZh+XCdmVKlSkmSPv30U7366qsymUx3rXv48GE1atRIzs7OevbZZ1W6dGlFRUXpf//7n9566y1JOTPeK1as0PXr1zV06FD5+vpqz549+uCDD/Tbb79pxYoVVu3dvn1brVu31uOPP6533nlHbm5umZ6LYRjq2LGjNm/erIEDB+rRRx/Vhg0bNHbsWP3++++aM2fOXccBgJ0YAIACb/HixYYkY+PGjcaff/5pXLhwwfjqq6+MokWLGmaz2bhw4YKlbosWLYyqVasaycnJlrK0tDSjQYMGRmhoqKVswoQJhrOzs3HlyhVLWUpKiuHj42MMGDDAUjZw4EAjKCjIuHTpklVM3bt3N7y9vY3r168bhmEYmzdvNiQZlSpVMlJSUiz13n//fUOSceTIEUtZqVKljL59+2Y4zyZNmhhNmjSxbH/22WeGg4ODsXXrVqt68+fPNyQZ27dvz3LcmjRpYkgy3n33XatzfPTRRw1/f3/j5s2bhmEYxoYNGwxJxrp166yOr1atmlU8mbl+/bpRoUIFQ5JRqlQpo1+/fsbChQuNixcvZqjbuHFjw9PT0zh37pxVeVpamuXnnBjv9GP+avr06YbJZLKKpW/fvoYkY/z48Rnq9+3b1yhVqpRle9WqVYYk480337Sq969//cswmUzG6dOnM7QBwL6YCgUAsGjZsqWKFi2qEiVK6F//+pfc3d313XffqXjx4pKkK1euaNOmTerWrZsSExN16dIlXbp0SZcvX1br1q116tQpyypSTz/9tG7duqWvv/7a0v7333+vuLg4Pf3005Lu/FV65cqV6tChgwzDsLR36dIltW7dWvHx8Tpw4IBVjP3791ehQoUs2+nTtX799df7Pt8VK1aoUqVKqlixolXfzZs3lyRt3rw52zacnJz03HPPWbYLFSqk5557TrGxsdq/f79lXIODg7V06VJLvZ9//lmHDx/WM888k2X7rq6u2r17t8aOHSvpzgpeAwcOVFBQkEaMGGGZsvXnn3/qp59+0oABA1SyZEmrNtLvcuTUeLu6ulp+vnbtmi5duqQGDRrIMAwdPHgwwzkNHTo0y3OWpLVr18rR0VEjR460Kh89erQMw9C6deuybQNA7mIqFADA4qOPPlL58uUVHx+vRYsW6aeffpLZbLbsP336tAzD0KRJkzRp0qRM24iNjVWxYsVUvXp1VaxYUV9++aUGDhwo6c40KD8/P8sH9z///FNxcXH6+OOP9fHHH9+1vb/6+4fm9GlaV69eve/zPXXqlI4dO6aiRYveU9+ZCQ4Olru7u1VZ+fLlJd2ZSlavXj05ODioV69emjdvnq5fvy43NzctXbpULi4u6tq1a7Z9eHt7a9asWZo1a5bOnTunH3/8Ue+8844+/PBDeXt7680337R80M/qezVyarzPnz+v1157Td99912Gf4f4+HirbScnJ0uimpVz584pODhYnp6eVuWVKlWy7AeQt5BYAAAs6tSpY1kVqlOnTnr88cfVs2dPnThxQh4eHpblQMeMGWN5RuLvypUrZ/n56aef1ltvvaVLly7J09NT3333nXr06CEnpztvP+ntPfPMMxmexUhXrVo1q+2/PqPwV8ZfHui923MIqampVsenpaWpatWqmj17dqb1S5QokWn5P9GnTx+9/fbbWrVqlXr06KFly5apffv28vb2vq92SpUqpQEDBqhz584qU6aMli5dqjfffPOejs2J8U5NTVWrVq105coVvfzyy6pYsaLc3d31+++/q1+/fhmWkDWbzXJwYMIE8DAisQAAZCp9taJmzZrpww8/1Pjx41WmTBlJkrOzs1q2bJltG08//bSmTp2qlStXKiAgQAkJCerevbtlf9GiReXp6anU1NR7au9eFS5cWHFxcRnKz507ZzkHSSpbtqwOHTqkFi1aZPlQdFb++OMPy5Kp6U6ePClJVqscValSRTVq1NDSpUtVvHhxnT9/Xh988ME/6lO6c45ly5bVzz//LEmW80rfzkxOjPeRI0d08uRJLVmyRH369LGU//DDDza1W6pUKW3cuFGJiYlWdy2OHz9u2Q8gb+FPBgCAu2ratKnq1Kmj9957T8nJyfL391fTpk21YMECRUdHZ6j/559/Wm1XqlRJVatW1Zdffqkvv/xSQUFBaty4sWW/o6OjnnrqKa1cuTLTD8R/b+9elS1bVrt27bL6jofVq1frwoULVvW6deum33//XZ988kmGNm7cuKFr165l29ft27e1YMECy/bNmze1YMECFS1aVLVq1bKq27t3b33//fd677335OvrqzZt2mTb/qFDh3Tp0qUM5efOndMvv/yiChUqSLqTNDRu3FiLFi3S+fPnreqm313IifFOv6Px1ztGhmHo/fffv++2/qpt27ZKTU3Vhx9+aFU+Z84cmUymexo7ALmLOxYAgCyNHTtWXbt2VXh4uIYMGaKPPvpIjz/+uKpWrarBgwerTJkyunjxonbu3KnffvtNhw4dsjr+6aef1muvvSYXFxcNHDgwwzSYGTNmaPPmzapbt64GDx6sRx55RFeuXNGBAwe0ceNGXbly5b5jHjRokL766iuFhYWpW7duioqK0ueff66yZcta1evdu7eWL1+uIUOGaPPmzWrYsKFSU1N1/PhxLV++XBs2bLBMDbub4OBgzZw5U2fPnlX58uX15ZdfKjIyUh9//HGGL33r2bOnxo0bp2+++UZDhw69py+F++GHHzR58mR17NhR9erVk4eHh3799VctWrRIKSkpmjJliqXuv//9bz3++OOqWbOmnn32WYWEhOjs2bNas2aNIiMjJT348a5YsaLKli2rMWPG6Pfff5eXl5dWrlz5j555+asOHTqoWbNmmjhxos6ePavq1avr+++/17fffqtRo0Zl+LcEkAfYZzEqAEBekr7c7N69ezPsS01NNcqWLWuULVvWuH37tmEYhhEVFWX06dPHCAwMNJydnY1ixYoZ7du3N7766qsMx586dcqQZEgytm3blmn/Fy9eNIYNG2aUKFHCcHZ2NgIDA40WLVoYH3/8saVO+vKnK1assDr2zJkzhiRj8eLFVuXvvvuuUaxYMcNsNhsNGzY09u3bl2G5WcMwjJs3bxozZ840KleubJjNZqNw4cJGrVq1jKlTpxrx8fFZjluTJk2MypUrG/v27TPq169vuLi4GKVKlTI+/PDDux7Ttm1bQ5KxY8eOLNtO9+uvvxqvvfaaUa9ePcPf399wcnIyihYtarRr187YtGlThvo///yz0blzZ8PHx8dwcXExKlSoYEyaNMmqzoMe719++cVo2bKl4eHhYfj5+RmDBw82Dh06lKFe3759DXd390zP8+/LzRqGYSQmJhovvviiERwcbDg7OxuhoaHG22+/bbV8LoC8w2QYfH0lAAC5pXPnzjpy5EiGb68GgPyOZywAAMgl0dHRWrNmjXr37m3vUADggeMZCwAActiZM2e0fft2/ec//5Gzs7PVF+oBwMOCOxYAAOSwLVu2qHfv3jpz5oyWLFmiwMBAe4cEAA8cz1gAAAAAsBl3LAAAAADYjMQCAAAAgM14eBt5Vlpamv744w95enrKZDLZOxwAAIACxzAMJSYmKjg4OMMXnP4diQXyrD/++EMlSpSwdxgAAAAF3oULF1S8ePEs65BYIM/y9PSUdOdC9vLysnM0AAAgJ9V4/QdJ0sHXWtk5EvxVQkKCSpQoYflclhUSC+RZ6dOfvLy8SCwAAHjIOZrdJIn3/DzqXqal8/A2AAAAAJuRWAAAAACwGVOhAAAAYHcB3mZ7hwAbkVgAAADA7raOa27vEGAjpkIBAAAAsBmJBQAAAACbkVgAAADA7spPXKfyE9fZOwzYgMQCAAAAgM1ILAAAAADYjMQCAAAAgM1ILAAAAADYjMQCAAAAgM1ILAAAAADYjG/eBgAAgN19/XwDe4cAG5FYAAAAwO6qFPO2dwiwEYkF8rwqkzfIwexm7zAAALDJ2Rnt7B0CkKN4xgIAAAB299xn+/TcZ/vsHQZswB0LAAAA2N3m43/aOwTYiDsWAAAAAGxGYgEAAADAZiQWAAAAAGxGYgEAAADAZiQWAAAAAGzGqlAAAACwu+HNy9k7BNiIxAIAAAB2N7JFqL1DgI2YCgUAAADAZiQWAAAAsLvley9o+d4L9g4DNiCxeMhFRETIZDIpLi7urnXCw8Pl4+OTZTtTpkzRo48++kBjAwAASPfqqp/16qqf7R0GbEBi8ZBr0KCBoqOj5e3tbe9QAAAA8BDj4e2HXKFChRQYGGjvMAAAAPCQ445FPtO0aVONGDFCo0aNUuHChRUQEKBPPvlE165dU//+/eXp6aly5cpp3bp1kjKfChUeHq6SJUvKzc1NnTt31uXLlzP0M2PGDAUEBMjT01MDBw5UcnKy1f69e/eqVatW8vPzk7e3t5o0aaIDBw5Y9g8YMEDt27e3OubWrVvy9/fXwoULH+CIAAAAIC8gsciHlixZIj8/P+3Zs0cjRozQ0KFD1bVrVzVo0EAHDhzQE088od69e+v69esZjt29e7cGDhyo4cOHKzIyUs2aNdObb75pVWf58uWaMmWKpk2bpn379ikoKEhz5861qpOYmKi+fftq27Zt2rVrl0JDQ9W2bVslJiZKkgYNGqT169crOjracszq1at1/fp1Pf300zkwKgAAALAnk2EYhr2DwL1r2rSpUlNTtXXrVklSamqqvL291aVLF3366aeSpJiYGAUFBWnnzp1KTk5Ws2bNdPXqVfn4+Khnz56Kj4/XmjVrLG12795d69evt9zVaNCggWrUqKGPPvrIUqdevXpKTk5WZGRkpnGlpaXJx8dHy5Yts9ypqFy5svr27atx48ZJkjp27ChfX18tXrw40zZSUlKUkpJi2U5ISFCJEiVUYtRyOZjd/tmAAQCQR5yd0c7eIeRp5SfemW1x8q02do4Ef5WQkCBvb2/Fx8fLy8sry7rcsciHqlWrZvnZ0dFRvr6+qlq1qqUsICBAkhQbG5vh2GPHjqlu3bpWZfXr17/vOhcvXtTgwYMVGhoqb29veXl5KSkpSefPn7fUGTRokCWJuHjxotatW6cBAwbc9bymT58ub29vy6tEiRJ3rQsAAB4ulYK9VCk46w+uyNt4eDsfcnZ2tto2mUxWZSaTSdKduwg5pW/fvrp8+bLef/99lSpVSmazWfXr19fNmzctdfr06aPx48dr586d2rFjh0JCQtSoUaO7tjlhwgS99NJLlu30OxYAAODh9+2whvYOATYisShgKlWqpN27d1uV7dq1K9M6ffr0uWud7du3a+7cuWrbtq0k6cKFC7p06ZJVHV9fX3Xq1EmLFy/Wzp071b9//yxjM5vNMpvN931OAAAAsD8SiwJm5MiRatiwod555x09+eST2rBhg9avX29V54UXXlC/fv1Uu3ZtNWzYUEuXLtXRo0dVpkwZS53Q0FB99tlnql27thISEjR27Fi5urpm6G/QoEFq3769UlNT1bdv3xw/PwAAkD9dTrrznKWvB39kzK94xqKAqVevnj755BO9//77ql69ur7//nu9+uqrVnWefvppTZo0SePGjVOtWrV07tw5DR061KrOwoULdfXqVdWsWVO9e/fWyJEj5e/vn6G/li1bKigoSK1bt1ZwcHCOnhsAAMi/6k/fpPrTN9k7DNiAVaGQo5KSklSsWDEt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ADYjsQAAAABgMxILAAAAADYjsQAAAABgMxILAAAAADYjsQAAAABgMxILAAAAADYjsQAAAABgMxILAAAAADYjsQAAAABgMxILAAAAADYjsQAAAABgMxILAAAAADYjsQAA4D5NmTJFJpPJ3mHkCRERETKZTIqIiLB3KADsjMQCAHDPwsPDZTKZLC8XFxcFBwerdevW+ve//63ExER7h5jn/O9//1OTJk3k7+8vNzc3lSlTRt26ddP69evtHRoAPFBO9g4AAJD/vP766woJCdGtW7cUExOjiIgIjRo1SrNnz9Z3332natWq2TvEPOGdd97R2LFj1aRJE02YMEFubm46ffq0Nm7cqC+++EJhYWH2DtFmjRs31o0bN1SoUCF7hwLAzkgsAAD3rU2bNqpdu7Zle8KECdq0aZPat2+vjh076tixY3J1dbVjhPZ3+/ZtvfHGG2rVqpW+//77DPtjY2PtENWDk5ycrEKFCsnBwUEuLi72DgdAHsBUKADAA9G8eXNNmjRJ586d0+eff2617/jx4/rXv/6lIkWKyMXFRbVr19Z3331nVSd9mtW2bds0cuRIFS1aVD4+Pnruued08+ZNxcXFqU+fPipcuLAKFy6scePGyTAMqzbeeecdNWjQQL6+vnJ1dVWtWrX01VdfZYjVZDJp+PDhWrVqlapUqSKz2azKlStnOj1p27Zteuyxx+Ti4qKyZctqwYIF9zQely5dUkJCgho2bJjpfn9/f6vt5ORkTZkyReXLl5eLi4uCgoLUpUsXRUVFWeqkpaXpvffeU+XKleXi4qKAgAA999xzunr1qlVbpUuXVvv27bVt2zbVqVNHLi4uKlOmjD799FOreleuXNGYMWNUtWpVeXh4yMvLS23atNGhQ4es6qU/R/HFF1/o1VdfVbFixeTm5qaEhIS7PmOxYsUK1apVS66urvLz89Mzzzyj33//3apOTEyM+vfvr+LFi8tsNisoKEhPPvmkzp49ey9DDCCPIbEAADwwvXv3liSrv9AfPXpU9erV07FjxzR+/Hi9++67cnd3V6dOnfTNN99kaGPEiBE6deqUpk6dqo4dO+rjjz/WpEmT1KFDB6WmpmratGl6/PHH9fbbb+uzzz6zOvb9999XjRo19Prrr2vatGlycnJS165dtWbNmgz9bNu2Tc8//7y6d++uWbNmKTk5WU899ZQuX75sqXPk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\n"
},
"metadata": {}
}
],
"source": [
"# function to report analytics for any given seat allocations\n",
"def seat_report(seats, demand):\n",
" classes = seats.index\n",
"\n",
" # report seat allocation\n",
" equivalent_seats = pd.DataFrame(\n",
" {\n",
" \"seat allocation\": {c: seats[c] for c in classes},\n",
" \"economy equivalent seat allocation\": {\n",
" c: seats[c] * seat_factor[c] for c in classes\n",
" },\n",
" }\n",
" ).T\n",
" equivalent_seats[\"TOTAL\"] = equivalent_seats.sum(axis=1)\n",
" print(\"\\nSeat Allocation\")\n",
" display(equivalent_seats)\n",
"\n",
" # tickets sold is the minimum of available seats and demand\n",
" tickets = pd.DataFrame()\n",
" for c in classes:\n",
" tickets[c] = np.minimum(seats[c], demand[c])\n",
" print(\"\\nTickets Sold\")\n",
" display(tickets)\n",
"\n",
" # seats unsold\n",
" unsold = pd.DataFrame()\n",
" for c in classes:\n",
" unsold[c] = seats[c] - tickets[c]\n",
" print(\"\\nSeats not Sold\")\n",
" display(unsold)\n",
"\n",
" # spillage (unmet demand)\n",
" spillage = demand - tickets\n",
" print(\"\\nSpillage (Unfulfilled Demand)\")\n",
" display(spillage)\n",
"\n",
" # compute revenue\n",
" revenue = tickets.dot(revenue_factor)\n",
" print(\n",
" f\"\\nExpected Revenue (in units of economy ticket price): {revenue.mean():.2f}\"\n",
" )\n",
"\n",
" # charts\n",
" fig, ax = plt.subplots(2, 1, figsize=(8, 6))\n",
" revenue.plot(ax=ax[0], kind=\"barh\", title=\"Revenue by Scenario\")\n",
" ax[0].plot([revenue.mean()] * 2, ax[0].get_ylim(), \"--\", lw=1.4)\n",
" ax[0].set_xlabel(\"Revenue\")\n",
"\n",
" tickets[classes].plot(\n",
" ax=ax[1], kind=\"barh\", rot=0, stacked=False, title=\"Demand Scenarios\"\n",
" )\n",
" demand[classes].plot(\n",
" ax=ax[1],\n",
" kind=\"barh\",\n",
" rot=0,\n",
" stacked=False,\n",
" title=\"Demand Scenarios\",\n",
" alpha=0.2,\n",
" )\n",
" for c in classes:\n",
" ax[1].plot([seats[c]] * 2, ax[1].get_ylim(), \"--\", lw=1.4)\n",
" ax[1].set_xlabel(\"Seats\")\n",
" fig.tight_layout()\n",
"\n",
" return\n",
"\n",
"\n",
"# a trial solution\n",
"seats_all_economy = pd.Series({\"F\": 0, \"B\": 0, \"E\": 200})\n",
"seat_report(seats_all_economy, demand)"
]
},
{
"cell_type": "markdown",
"id": "60309d8c-a2e4-48ee-9510-d2cccb2fd1af",
"metadata": {
"id": "60309d8c-a2e4-48ee-9510-d2cccb2fd1af"
},
"source": [
"## Model 1. Deterministic solution for the average demand scenario\n",
"\n",
"A common starting point in stochastic optimization is to solve the deterministic problem where future demands are fixed at their mean values and compute the corresponding optimal solution. The resulting value of the objective has been called the *expectation of the expected value problem (EEV)* by Birge, or the *expected value of the mean (EVM)* solution by others.\n",
"\n",
"Let us introduce the set $C$ of the three possible classes, i.e., $C=\\{F,B,E\\}$. The objective function is to maximize ticket revenue.\n",
"\n",
"$$\n",
"\\max_{s_c, t_c} \\quad \\sum_{c\\in C} r_c t_c\n",
"$$\n",
"\n",
"where $r_c$ is the revenue from selling a ticket for a seat in class $c\\in C$.\n",
"\n",
"Let $s_c$ denote the number of seats of class $c \\in C$ installed in the new plane. Let $f_c$ be the scale factor denoting the number of economy seats displaced by one seat in class $c \\in C$. Then, since there is a total of 200 economy-class seats that could fit on the plane, the capacity constraint reads as\n",
"\n",
"$$\n",
" \\sum_{c\\in C} f_c s_c \\leq 200,\n",
"$$\n",
"\n",
"Let $\\mu_c$ be the mean demand for seats of class $c\\in C$, and let $t_c$ be the number of tickets of class $c\\in C$ that are sold. To ensure we do not sell more tickets than available seats nor more than demand, we need to add two more constraints:\n",
"\n",
"$$\n",
"\\begin{align*}\n",
" t_c & \\leq s_c \\qquad \\forall \\, c\\in C \\\\\n",
" t_c & \\leq \\mu_c \\qquad \\forall \\, c\\in C\n",
"\\end{align*}\n",
"$$\n",
"\n",
"Lastly, both ticket and seat variables need to be nonnegative integers, so we add the constraints $\\bm{t}, \\bm{s} \\in \\mathbb{Z}_+$.\n",
"\n",
"The following cell presents an AMPL model implementing this model."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "c88edf7a",
"metadata": {
"id": "c88edf7a",
"outputId": "5132a0c1-60fd-45bd-f7f7-03d5fa9e99d7",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Overwriting airline_deterministic.mod\n"
]
}
],
"source": [
"%%writefile airline_deterministic.mod\n",
"\n",
"param capacity;\n",
"\n",
"set CLASSES;\n",
"\n",
"param seat_factor{CLASSES};\n",
"param demand{CLASSES};\n",
"param revenue_factor{CLASSES};\n",
"\n",
"# first stage variables and constraints\n",
"var seats{CLASSES} integer >= 0;\n",
"\n",
"s.t. plane_seats: sum{c in CLASSES}(seats[c] * seat_factor[c]) <= capacity;\n",
"\n",
"# second stage variable and constraints\n",
"var tickets{CLASSES} integer >= 0;\n",
"\n",
"s.t. demand_limits {c in CLASSES}: tickets[c] <= demand[c];\n",
"s.t. seat_limits {c in CLASSES}: tickets[c] <= seats[c];\n",
"\n",
"# objective\n",
"maximize revenue: sum{c in CLASSES}(tickets[c] * revenue_factor[c]);"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "434a69fc-3bd2-4eb8-95f2-2613e82432b0",
"metadata": {
"id": "434a69fc-3bd2-4eb8-95f2-2613e82432b0",
"outputId": "b95f81d9-527b-4dab-b552-9de5452a4d0a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"HiGHS 1.5.3: \b\b\b\b\b\b\b\b\b\b\b\b\bHiGHS 1.5.3: optimal solution; objective 226\n",
"2 simplex iterations\n",
"1 branching nodes\n",
" \n",
"\n",
"Seat Allocation\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
" F B E TOTAL\n",
"seat allocation 12.0 28.0 134.0 174.0\n",
"economy equivalent seat allocation 24.0 42.0 134.0 200.0"
],
"text/html": [
"\n",
"
"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAJOCAYAAAAqFJGJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB8tUlEQVR4nO3dZ3gUZf/28XNT2IRUSEIKvYQiTYpU6S2AKOBNlw4KUgQpgoiAhWIBK6DeSlDhVhBF/1RpQUA6hCY10lRCqClAAiTzvED2cU2AkE0yCXw/x7FHsjPXzHXOlclmf5myFsMwDAEAAACAA5zMDgAAAAAg96OwAAAAAOAwCgsAAAAADqOwAAAAAOAwCgsAAAAADqOwAAAAAOAwCgsAAAAADqOwAAAAAOAwCgsAAAAADqOwAAAggxo2bKgKFSqYHeOB0KtXLxUrVszsGAAcQGEBAFB4eLgsFovt4eLiooIFC6pXr176888/zY730EtISNCECRNUoUIFeXh4yM/PT48++qheeOEF/fXXX2bHAwBJkovZAQAAOcdrr72m4sWLKzExUVu2bFF4eLg2btyo/fv3y83Nzex4D6UbN26ofv36OnTokHr27KkhQ4YoISFBBw4c0Pz589WuXTuFhISYHdNhn332mVJSUsyOAcABFBYAAJuWLVuqevXqkqR+/frJ399f06ZN008//aSOHTuanO7htHjxYu3evVvz5s1T165d7eYlJibq+vXrJiXLHFeuXJGHh4dcXV3NjgLAQZwKBQC4o3r16kmSoqKi7KYfOnRI//nPf5Q/f365ubmpevXq+umnn2zzd+zYIYvForlz56Za58qVK2WxWLRkyRLbtD///FN9+vRRYGCgrFarypcvry+++MJuuYiICFksFi1YsEBvvvmmChUqJDc3NzVp0kTHjh2za1usWDH16tUrVd8NGzZUw4YN7aYlJSVpwoQJKlWqlKxWqwoXLqzRo0crKSkpXWMkSTt37lSdOnXk7u6u4sWLa/bs2bZ5CQkJ8vDw0AsvvJBquT/++EPOzs6aMmXKHdd9e+zr1q2bap6bm5u8vb3tph06dEgdO3ZUQECA3N3dVaZMGY0bN86uTWaP94YNG9ShQwcVKVLENobDhw/XtWvX7Nr16tVLnp6eioqKUqtWreTl5aVu3brZ5v37GosrV65oxIgRKly4sKxWq8qUKaN33nlHhmHccbwAmIcjFgCAOzpx4oQkKV++fLZpBw4cUN26dVWwYEGNGTNGHh4eWrBggdq2batFixapXbt2ql69ukqUKKEFCxaoZ8+eduv89ttvlS9fPrVo0UKSdPbsWdWqVUsWi0WDBw9WQECAli9frr59+youLk7Dhg2zW37q1KlycnLSyJEjFRsbq7feekvdunXT1q1b73v7UlJS9OSTT2rjxo169tlnVa5cOe3bt08zZszQkSNHtHjx4nuu49KlS2rVqpU6duyoLl26aMGCBRo4cKDy5MmjPn36yNPTU+3atdO3336r6dOny9nZ2bbs//73PxmGYXtznZaiRYtKkr788ku98sorslgsd2y7d+9e1atXT66urnr22WdVrFgxRUVF6f/+7//05ptvSsqa8V64cKGuXr2qgQMHys/PT9u2bdOHH36oP/74QwsXLrRb382bN9WiRQs9/vjjeuedd5Q3b940t8UwDD355JNat26d+vbtq0cffVQrV67UqFGj9Oeff2rGjBl3HAcAJjEAAA+9OXPmGJKM1atXG+fOnTNOnz5tfPfdd0ZAQIBhtVqN06dP29o2adLEqFixopGYmGiblpKSYtSpU8cIDQ21TRs7dqzh6upqXLx40TYtKSnJ8PX1Nfr06WOb1rdvXyM4ONg4f/68XabOnTsbPj4+xtWrVw3DMIx169YZkoxy5coZSUlJtnbvv/++IcnYt2+fbVrRokWNnj17ptrOBg0aGA0aNLA9/+qrrwwnJydjw4YNdu1mz55tSDI2bdp013Fr0KCBIcl499137bbx0UcfNQoUKGBcv37dMAzDWLlypSHJWL58ud3ylSpVssuTlqtXrxplypQxJBlFixY1evXqZXz++efG2bNnU7WtX7++4eXlZZw8edJuekpKiu37rBjv28v805QpUwyLxWKXpWfPnoYkY8yYMana9+zZ0yhatKjt+eLFiw1JxhtvvGHX7j//+Y9hsViMY8eOpVoHAHNxKhQAwKZp06YKCAhQ4cKF9Z///EceHh766aefVKhQIUnSxYsXtXbtWnXs2FHx8fE6f/68zp8/rwsXLqhFixY6evSo7S5SnTp10o0bN/T999/b1v/zzz/r8uXL6tSpk6Rb/5VetGiR2rRpI8MwbOs7f/68WrRoodjYWO3atcsuY+/evZUnTx7b89una/3+++/3vb0LFy5UuXLlVLZsWbu+GzduLElat27dPdfh4uKi5557zvY8T548eu655xQTE6OdO3faxjUkJETz5s2ztdu/f7/27t2rZ5555q7rd3d319atWzVq1ChJt+7g1bdvXwUHB2vIkCG2U7bOnTunX375RX369FGRIkXs1nH7KEdWjbe7u7vt+ytXruj8+fOqU6eODMPQ7t27U23TwIED77rNkrRs2TI5Oztr6NChdtNHjBghwzC0fPnye64DQPbiVCgAgM3HH3+s0qVLKzY2Vl988YV++eUXWa1W2/xjx47JMAyNHz9e48ePT3MdMTExKliwoCpXrqyyZcvq22+/Vd++fSXdOg3K39/f9sb93Llzunz5sj799FN9+umnd1zfP/37TfPt07QuXbp039t79OhRHTx4UAEBAenqOy0hISHy8PCwm1a6dGlJt04lq1WrlpycnNStWzfNmjVLV69eVd68eTVv3jy5ubmpQ4cO9+zDx8dHb731lt566y2dPHlSa9as0TvvvKOPPvpIPj4+euONN2xv9O/2uRpZNd6nTp3Sq6++qp9++inVzyE2NtbuuYuLi61QvZuTJ08qJCREXl5edtPLlStnmw8gZ6GwAADY1KhRw3ZXqLZt2+rxxx9X165ddfjwYXl6etpuBzpy5EjbNRL/VqpUKdv3nTp10ptvvqnz58/Ly8tLP/30k7p06SIXl1t/fm6v75lnnkl1LcZtlSpVsnv+z2sU/sn4xwW9d7oOITk52W75lJQUVaxYUdOnT0+zfeHChdOcnhE9evTQ22+/rcWLF6tLly6aP3++nnjiCfn4+NzXeooWLao+ffqoXbt2KlGihObNm6c33ngjXctmxXgnJyerWbNmunjxol566SWVLVtWHh4e+vPPP9WrV69Ut5C1Wq1ycuKECeBBRGEBAEjT7bsVNWrUSB999JHGjBmjEiVKSJJcXV3VtGnTe66jU6dOmjRpkhYtWqTAwEDFxcWpc+fOtvkBAQHy8vJScnJyutaXXvny5dPly5dTTT958qRtGySpZMmS2rNnj5o0aXLXi6Lv5q+//rLdMvW2I0eOSJLdXY4qVKigKlWqaN68eSpUqJBOnTqlDz/8MEN9Sre2sWTJktq/f78k2bbr9vO0ZMV479u3T0eOHNHcuXPVo0cP2/RVq1Y5tN6iRYtq9erVio+PtztqcejQIdt8ADkL/zIAANxRw4YNVaNGDb333ntKTExUgQIF1LBhQ33yySc6c+ZMqvbnzp2ze16uXDlVrFhR3377rb799lsFBwerfv36tvnOzs56+umntWjRojTfEP97felVsmRJbdmyxe4zHpYsWaLTp0/btevYsaP+/PNPffbZZ6nWce3aNV25cuWefd28eVOffPKJ7fn169f1ySefKCAgQNWqVbNr2717d/38889677335Ofnp5YtW95z/Xv27NH58+dTTT958qR+++03lSlTRtKtoqF+/fr64osvdOrUKbu2t48uZMV43z6i8c8jRoZh6P3337/vdf1Tq1atlJycrI8++shu+owZM2SxWNI1dgCyF0csAAB3NWrUKHXo0EHh4eEaMGCAPv74Yz3++OOqWLGi+vfvrxIlSujs2bPavHmz/vjjD+3Zs8du+U6dOunVV1+Vm5ub+vbtm+o0mKlTp2rdunWqWbOm+vfvr0ceeUQXL17Url27tHr1al28ePG+M/fr10/fffedwsLC1LFjR0VFRenrr79WyZIl7dp1795dCxYs0IABA7Ru3TrVrVtXycnJOnTokBYsWKCVK1faTg27k5CQEE2bNk0nTpxQ6dKl9e233yoyMlKffvppqg9969q1q0aPHq0ffvhBAwcOTNeHwq1atUoTJkzQk08+qVq1asnT01O///67vvjiCyUlJWnixIm2th988IEef/xxVa1aVc8++6yKFy+uEydOaOnSpYqMjJSU+eNdtmxZlSxZUiNHjtSff/4pb29vLVq0KEPXvPxTmzZt1KhRI40bN04nTpxQ5cqV9fPPP+vHH3/UsGHDUv0sAeQA5tyMCgCQk9y+3ez27dtTzUtOTjZKlixplCxZ0rh586ZhGIYRFRVl9OjRwwgKCjJcXV2NggULGk888YTx3XffpVr+6NGjhiRDkrFx48Y0+z979qwxaNAgo3Dhwoarq6sRFBRkNGnSxPj0009tbW7f/nThwoV2yx4/ftyQZMyZM8du+rvvvmsULFjQsFqtRt26dY0dO3akut2sYRjG9evXjWnTphnly5c3rFarkS9fPqNatWrGpEmTjNjY2LuOW4MGDYzy5csbO3bsMGrXrm24ubkZRYsWNT766KM7LtOqVStDkvHrr7/edd23/f7778arr75q1KpVyyhQoIDh4uJiBAQEGK1btzbWrl2bqv3+/fuNdu3aGb6+voab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daoCAwPl5eWlvn37KjExMTOGCwAAADkQhUUOUK9ePcXHx2v37t2SpPXr18vf39+uGFi/fr0aNmyoqKgohYWF6emnn9bevXv17bffauPGjRo8eLCt7eDBg7V582Z988032rt3rzp06KCwsDAdPXo0Vd+nT59WvXr1VKFCBX333XeyWq2aMmWKvvzyS82ePVsHDhzQ8OHD9cwzz2j9+vV2y44bN07vvvuuduzYIRcXF/Xp08c2b8GCBZo4caImT56sHTt2KDg4WDNnzrzrOCQlJSkuLs7uAQAAgNzBYhiGYXYISNWqVVOXLl00cuRItWvXTo899pgmTZqkCxcuKDY2VoUKFdKRI0c0bdo0OTs765NPPrEtu3HjRjVo0EBXrlxRTEyMSpQooVOnTikkJMTWpmnTpqpRo4YmT56s8PBwDRs2TFu3blWzZs3Url07vffee7JYLEpKSlL+/Pm1evVq1a5d27Z8v379dPXqVc2fP18RERFq1KiRVq9erSZNmkiSli1bptatW+vatWtyc3NTnTp1VKVKFX388ce2ddSqVUuJiYmKjIxMcwwmTpyoSZMmpZpeeNgCOVnzOjrEAAAA9+3E1NZmRzBVXFycfHx8FBsbK29v77u25YhFDtGgQQNFRETIMAxt2LBB7du3V7ly5bRx40atX79eISEhCg0N1Z49exQeHi5PT0/bo0WLFkpJSdHx48e1b98+JScnq3Tp0nZt1q9fr6ioKFt/165dU7169dS+fXu9//77slgskqRjx47p6tWratasmd3yX375pd3yklSpUiXb98HBwZKkmJgYSdLBgwdVs2ZNu/b/LFTSMnbsWMXGxtoep0+fzviAAgAAIFu5mB0AtzRs2FBffPGF9uzZI1dXV5UtW1YNGzZURESELl26pAYNGkiSEhIS9Nxzz2no0KGp1lGkSBHt3btXzs7O2rlzp5ydne3me3p62r63Wq1q2rSplixZolGjRqlgwYK29UvS0qVLbdP+ucw/ubq62r6/XZikpKRkdAhktVpT9QEAAIDcgcIih7h9ncWMGTNsRUTDhg01depUXbp0SSNGjJAkVa1aVb/99ptKlSqV5nqqVKmi5ORkxcTEqF69enfsz8nJSV999ZW6du2qRo0aKSIiQiEhIXrkkUdktVp16tQpW46MKFeunLZu3aoePXrYpm3ZsiXD6wMAAEDOxqlQOUS+fPlUqVIlzZs3Tw0bNpQk1a9fX7t27dKRI0dsb/Jfeukl/frrrxo8eLAiIyN19OhR/fjjj7aLt0uXLq1u3bqpR48e+v7773X8+HFt27ZNU6ZM0dKlS+36dHZ21rx581S5cmU1btxY0dHR8vLy0siRIzV8+HDNnTtXUVFR2rVrlz788EPNnTs33dvzwgsv6IsvvtCcOXN05MgRTZgwQQcOHMicwQIAAECOQ2GRgzRo0EDJycm2wiJ//vx65JFHFBQUpDJlyki6dV3D+vXrdeTIEdWrV09VqlTRq6++aneh9pw5c9SjRw+NGDFCZcqUUdu2bbV9+3YVKVIkVZ8uLi763//+p/Lly6tx48aKiYnR66+/rvHjx2vKlCkqV66cwsLCtHTpUhUvXjzd29KpUyeNHz9eo0ePVrVq1XTy5EkNHDjQsQECAABAjsVdoZBj3b4LAXeFAgAAZuGuUNwVCgAAAEA2orAAAAAA4DAKCwAAAAAOo7AAAAAA4DAKCwAAAAAOo7AAAAAA4DAKCwAAAAAOo7AAAAAA4DAKCwAAAAAOo7AAAAAA4DAKCwAAAAAOczE7AHAv+ye1kLe3t9kxAABADlR63HJJ0pE3W5qcBByxAAAAAOAwCgsAAAAADqOwAAAAAOAwCgsAAAAADuPibQAAAORaveoWMzsC/kZhAQAAgFzr5VblzI6Av3EqFAAAAACHUVgAAAAg11q+74yW7ztjdgyIU6EAAACQi73wTaQkqWXFYHODgCMWAAAAABxHYQEAAADAYRQWAAAAABxGYQEAAADAYRQWAAAAABzGXaEAAACQaxXxy2t2BPyNwgIAAAC51uoXG5gdAX/jVCgAAAAADqOwAAAAQK6VdDNZSTeTzY4BcSoUAAAAcrGKE36WJB15s6XJScARCwAAAAAOo7AAAAAA4DAKCwAAAAAOo7AAAAAA4DAKCwAAAAAOo7AAAAAA4DBuNwsAAIBca+nQx82OgL9RWAAAACDXCg30MjsC/sapUAAAAAAcRmEBAACAXKtP+Hb1Cd9udgyIU6EAAACQi208et7sCPgbRywAAAAAOIzCAgAAAIDDKCwAAAAAOIzCAgAAAIDDuHgbOV6FCSvlZM1rdgwAAJCDFRuz1OwI2eLE1NZmR7gjjlgAAAAAcBiFBQAAAACHUVgAAAAAcBiFBQAAAACHUVgAAAAAcBiFBQAAAACHUVgAAAAAcBiFBQAAAACHUVgAAAAAcBiFBQAAAACHUVgAAAAAcFiuLiwmTpyoRx991OwYGRYRESGLxaLLly+bHeWeLBaLFi9ebHYMAAAA5FAuZgdwxMiRIzVkyBCzYzwUzpw5o3z58pkdAwAAADlUjiwsrl+/rjx58tyznaenpzw9PbMhEYKCgsyOAAAAgBzsvk6FatiwoYYMGaJhw4YpX758CgwM1GeffaYrV66od+/e8vLyUqlSpbR8+XK75davX68aNWrIarUqODhYY8aM0c2bN+3WO3jwYA0bNkz+/v5q0aKF7TShNWvWqHr16sqbN6/q1Kmjw4cP25b796lQvXr1Utu2bfXOO+8oODhYfn5+GjRokG7cuGFrc+bMGbVu3Vru7u4qXry45s+fr2LFium9996743Zv375dzZo1k7+/v3x8fNSgQQPt2rXLro3FYtF///tftWvXTnnz5lVoaKh++uknuzbLli1T6dKl5e7urkaNGunEiRP3HPPLly+rX79+CggIkLe3txo3bqw9e/ZIko4cOSKLxaJDhw7ZLTNjxgyVLFnS9nz//v1q2bKlPD09FRgYqO7du+v8+fN24z906FCNHj1a+fPnV1BQkCZOnJhq+26fCnXixAlZLBZ9//33atSokfLmzavKlStr8+bNdst89tlnKly4sPLmzat27dpp+vTp8vX1vec2AwAAIPe572ss5s6dK39/f23btk1DhgzRwIED1aFDB9WpU0e7du1S8+bN1b17d129elWS9Oeff6pVq1Z67LHHtGfPHs2aNUuff/653njjjVTrzZMnjzZt2qTZs2fbpo8bN07vvvuuduzYIRcXF/Xp0+eu+datW6eoqCitW7dOc+fOVXh4uMLDw23ze/Toob/++ksRERFatGiRPv30U8XExNx1nfHx8erZs6c2btyoLVu2KDQ0VK1atVJ8fLxdu0mTJqljx47au3evWrVqpW7duunixYuSpNOnT6t9+/Zq06aNIiMj1a9fP40ZM+ae492hQwfFxMRo+fLl2rlzp6pWraomTZro4sWLKl26tKpXr6558+bZLTNv3jx17dpV0q3CpHHjxqpSpYp27NihFStW6OzZs+rYsaPdMnPnzpWHh4e2bt2qt956S6+99ppWrVp112zjxo3TyJEjFRkZqdKlS6tLly62gnHTpk0aMGCAXnjhBUVG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2QEAALnPa6+9puLFi+vGjRuKjo5WRESEhg0bpunTp+unn35SpUqVzI6YI7zzzjsaNWqUGjRooLFjxypv3rw6duyYVq9erW+++UZhYWFmR3RY/fr1de3aNeXJk8fsKABMRmEBALhvLVu2VPXq1W3Px44dq7Vr1+qJJ57Qk08+qYMHD8rd3d3EhOa7efOmXn/9dTVr1kw///xzqvkxMTEmpMo8iYmJypMnj5ycnOTm5mZ2HAA5AKdCAQAyRePGjTV+/HidPHlSX3/9td28Q4cO6T//+Y/y588vNzc3Va9eXT/99JNdm9unWW3cuFFDhw5VQECAfH199dxzz+n69eu6fPmyevTooXz58ilfvnwaPXq0DMOwW8c777yjOnXqyM/PT+7u7qpWrZq+++67VFktFosGDx6sxYsXq0KFCrJarSpfvnyapydt3LhRjz32mNzc3FSyZEl98skn6RqP8+fPKy4uTnXr1k1zfoECBeyeJyYmauLEiSpdurTc3NwUHBys9u3bKyoqytYmJSVF7733nsqXLy83NzcFBgbqueee06VLl+zWVaxYMT3xxBPauHGjatSoITc3N5UoUUJffvmlXbuLFy9q5MiRqlixojw9PeXt7a2WLVtqz549du1uX0fxzTff6JVXXlHBggWVN29excXF3fEai4ULF6patWpyd3eXv7+/nnnmGf355592baKjo9W7d28VKlRIVqtVwcHBeuqpp3TixIn0DDGAHIbCAgCQabp37y5Jdv+hP3DggGrVqqWDBw9qzJgxevfdd+Xh4aG2bdvqhx9+SLWOIUOG6OjRo5o0aZKefPJJffrppxo/frzatGmj5ORkTZ48WY8//rjefvttffXVV3bLvv/++6pSpYpee+01TZ48WS4uLurQoYOWLl2aqp+NGzfq+eefV+fOnfXWW28pMTFRTz/9tC5cuGBrs2/fPjVv3lwxMTGaOHGievfurQkTJqSZ+98KFCggd3d3/d///Z8uXrx417bJycl64oknNGnSJFWrVk3vvvuuXnjhBcXGxmr//v22ds8995xGjRqlunXr6v3331fv3r01b948tWjRQjdu3LBb57Fjx/Sf//xHzZo107vvvqt8+fKpV69eOnDggK3N77//rsWLF+uJJ57Q9OnTNWrUKO3bt08NGjTQX3/9lSrn66+/rqVLl2rkyJGaPHnyHU9/Cg8P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gyQpOTlZPj4+at++vb788ktJUnR0tIKDg7V582YlJiaqUaNGunTpknx9fdW1a1fFxsZq6dKltnV27txZK1assB3VqFOnjqpUqaKPP/7Y1qZWrVpKTExUZGRkmrlSUlLk6+ur+fPn245UlC9fXj179tTo0aMlSU8++aT8/Pw0Z86cNNcxceJETZo0KdX02DFept8VqvS4W0eAjrzZMvtyZJbXA259HX/O3BwAkAmqflVVkrSr+657tAQyLjExUcePH1fx4sXl5uZmP3NiNl+3msb7krvp1auXzp49a3u/FR0drVdeeUV79+7VqVOn0lzmbtsbFxcnHx8fxcbGytvb+659c8QiF6pUqZLte2dnZ/n5+alixYq2aYGBgZKkmJiYVMsePHhQNWvWtJtWu3bt+25z9uxZ9e/fX6GhofLx8ZG3t7cSEhLsdth+/frZduqzZ89q+fLl6tOnzx23a+zYsYqNjbU9Tp8+fce22a1ciLfKhdz9lynHCqp46wEAD4Cy+cuqbP6yZscAcjSr1aqgoCAFBQXp0Ucf1ZgxY3T69GmdO5e1/2Tk4u1cyNXV1e65xWKxm2ax3PrvfkpKSpZl6Nmzpy5cuKD3339fRYsWldVqVe3atXX9+nVbmx49emjMmDHavHmzfv31VxUvXlz16tW74zqtVqusVmuWZXbEj4Pqmh0h4/rn3k8NB4B/m996vtkRgFwlISFBX3/9tUqVKiU/P78s7YvC4iFTrlw5bd261W7ali1b0mzTo0ePO7bZtGmTZs6cqVatWkmSTp8+rfPnz9u18fPzU9u2bTVnzhxt3rxZvXv3zsxNAQAAQBqWLFkiT09PSdKVK1cUHBysJUuWyMkpa09WorB4yAwdOlR169bVO++8o6eeekorV67UihUr7Nq88MIL6tWrl6pXr666detq3rx5OnDggEqUKGFrExoaqq+++krVq1dXXFycRo0aJXd391T99evXT0888YSSk5PVs2fPLN++rHIhIUmS5OeZM4+o3NWVvws+D39zcwBAJriYeFGSlN8tv8lJgJyrUaNGmjVrliTp0qVLmjlzplq2bKlt27apaNGiWdYv11g8ZGrVqqXPPvtM77//vipXrqyff/5Zr7zyil2bTp06afz48Ro9erSqVaumkydPauDAgXZtPv/8c126dElVq1ZV9+7dNXToUBUoUCBVf02bNlVw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\n"
},
"metadata": {}
}
],
"source": [
"def airline_deterministic(demand):\n",
" # Create AMPL instance and load the model\n",
" ampl = AMPL()\n",
" ampl.read(\"airline_deterministic.mod\")\n",
"\n",
" # load the data\n",
" ampl.set[\"CLASSES\"] = demand.columns.tolist()\n",
" ampl.param[\"demand\"] = demand.mean()\n",
" ampl.param[\"revenue_factor\"] = revenue_factor\n",
" ampl.param[\"seat_factor\"] = seat_factor\n",
" ampl.param[\"capacity\"] = capacity\n",
"\n",
" # set solver\n",
" ampl.option[\"solver\"] = SOLVER\n",
"\n",
" return ampl\n",
"\n",
"\n",
"# Solve a given model and return a Pandas series of the seats for each class\n",
"def airline_solve(model):\n",
" model.solve()\n",
" return pd.Series(model.var[\"seats\"].to_dict()).reindex(index=[\"F\", \"B\", \"E\"])\n",
"\n",
"\n",
"# Solve deterministic model to obtain the expectation of the expected value problem (EEV)\n",
"model_eev = airline_deterministic(demand)\n",
"seats_eev = airline_solve(model_eev)\n",
"seat_report(seats_eev, demand)"
]
},
{
"cell_type": "markdown",
"id": "d1e11c9c-1ab7-4f33-938b-ca6b927640cb",
"metadata": {
"tags": [],
"id": "d1e11c9c-1ab7-4f33-938b-ca6b927640cb"
},
"source": [
"## Model 2. Two-stage stochastic optimization and its extensive form\n",
"\n",
"If we assume demand is not certain, we can formulate a two-stage stochastic optimization problem. The first-stage or here-and-now variables are the $s_c$'s, those related to the seat allocations. Due to their dependence on the realized demand $\\boldsymbol{z}$, the variables $t_c$'s describing the number of tickets sold, are second-stage or recourse decision variables. The full problem formulation is as follows: the first stage problem is\n",
"\n",
"$$\n",
"\\begin{align*}\n",
" \\max \\quad & \\mathbb E_{z} Q(\\boldsymbol{s},\\boldsymbol{z}) \\\\\n",
" \\text{s.t.} \\quad & \\sum_{c\\in C} f_c s_c \\leq 200,\\\\\n",
" & \\boldsymbol{s} \\in \\mathbb{Z}_+,\n",
"\\end{align*}\n",
"$$\n",
"\n",
"where $Q(\\boldsymbol{s},\\boldsymbol{z})$ is the value of the second-stage problem, defined as\n",
"\n",
"$$\n",
"\\begin{align*}\n",
" Q(\\boldsymbol{s},\\boldsymbol{z}) := \\max \\quad & \\sum_{c\\in C} r_c t_{c}\\\\\n",
" \\text{s.t.} \\quad\n",
" & t_c \\leq s_c & \\forall \\, c\\in C \\\\\n",
" & t_c \\leq z_c & \\forall \\, c\\in C \\\\\n",
" & \\boldsymbol{t} \\in \\mathbb{Z}_+.\n",
"\\end{align*}\n",
"$$\n",
"\n",
"In view of the assumption that there is only a finite number $N=|S|$ of scenarios for ticket demand, we can write the extensive form of the two-stage stochastic optimization problem above and solve it exactly. To do so, we modify the second-stage variables $t_{c,s}$ so that they are indexed by both class $c$ and scenario $s$. The expectation can thus be replaced with the average revenue over the $N$ scenarios, that is\n",
"\n",
"$$\n",
"\\max \\quad \\sum_{s \\in S} \\frac{1}{N} \\sum_{c\\in C} r_c t_{c, s},\n",
"$$\n",
"\n",
"where the fraction $\\frac{1}{N}$ appears since we assume that all $N$ scenarios are equally likely. The first stage constraint remains unchanged, while the second stage constraints are tuplicated for each scenario $s \\in S$, namely\n",
"\n",
"$$\n",
"\\begin{align*}\n",
"t_{c,s} & \\leq s_c & \\forall \\, c\\in C \\\\\n",
"t_{c,s} & \\leq z_{c, s} & \\forall \\, (c, s) \\in C \\times S\n",
"\\end{align*}\n",
"$$\n",
"\n",
"The following cell presents an AMPL model implementing this model and solving it for the $N=3$ equiprobable scenarios introduced above."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "0a1b8dd3",
"metadata": {
"id": "0a1b8dd3",
"outputId": "db5bcd9f-4d26-4d94-d5db-6d5e6cffe7c4",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Overwriting airline_stochastic.mod\n"
]
}
],
"source": [
"%%writefile airline_stochastic.mod\n",
"\n",
"param capacity;\n",
"\n",
"set CLASSES;\n",
"set SCENARIOS;\n",
"\n",
"param demand{CLASSES, SCENARIOS};\n",
"param seat_factor{CLASSES};\n",
"param revenue_factor{CLASSES};\n",
"\n",
"# first stage variables and constraints\n",
"var seats{CLASSES} integer >= 0;\n",
"\n",
"s.t. plane_seats: sum{c in CLASSES}(seats[c] * seat_factor[c]) <= capacity;\n",
"\n",
"# second stage variable and constraints\n",
"var tickets{CLASSES, SCENARIOS} integer >= 0;\n",
"\n",
"s.t. demand_limits {c in CLASSES, s in SCENARIOS}: tickets[c, s] <= demand[c, s];\n",
"s.t. seat_limits {c in CLASSES, s in SCENARIOS}: tickets[c, s] <= seats[c];\n",
"\n",
"# objective\n",
"maximize revenue: sum{c in CLASSES, s in SCENARIOS}(tickets[c, s] * revenue_factor[c]);"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "be868fbe-efcf-4970-beaa-fd85718c8914",
"metadata": {
"id": "be868fbe-efcf-4970-beaa-fd85718c8914",
"outputId": "6a4746b5-9d49-476c-cfb9-5136eed75e34",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"HiGHS 1.5.3: \b\b\b\b\b\b\b\b\b\b\b\b\bHiGHS 1.5.3: optimal solution; objective 628\n",
"7 simplex iterations\n",
"1 branching nodes\n",
" \n",
"\n",
"Seat Allocation\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
" F B E TOTAL\n",
"seat allocation 10.0 20.0 150.0 180.0\n",
"economy equivalent seat allocation 20.0 30.0 150.0 200.0"
],
"text/html": [
"\n",
"
"
],
"image/png": "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6tVTtWrV9P777ystLU358+dXvXr19Omnn+rEiRNZ2p86dcrqeZkyZVS+fHl9//33+v777xUSEqI6depY1js7O+vZZ5/V/Pnzb/mG+Ob93avixYtrw4YNVp/xsHDhQh0/ftyqXdu2bfX333/r888/z7KPS5cu6cKFC3eNdfXqVX366aeW55cvX9ann36qwMBAValSxapt586d9euvv+r999+Xv7+/mjZtetf979ixQ6dPn86y/OjRo/rjjz9UqlQpSdeKhjp16uirr77SsWPHrNpeH13Ijv6+PqJx44iRYRj64IMP7ntfN2rWrJkyMjL08ccfWy2fOnWqTCbTPfUdAPtixAIAcEfDhw9XmzZtFB0drb59++qTTz7Rk08+qfLly6t3794qVqyYTp48qfXr1+uvv/7Sjh07rLZv166dXnvtNbm5ualnz55ZLoOZNGmSVq1aperVq6t379567LHHdPbsWW3btk3Lly/X2bNn7zvnXr166YcfflBUVJTatm2r+Ph4ffvttypevLhVu86dO2vu3Lnq27evVq1apVq1aikjI0P79u3T3LlztXTpUsulYbcTGhqqyZMn68iRIypZsqS+//57xcXF6bPPPsvyoW8dO3bUiBEj9NNPP6lfv3739KFwy5Yt09ixY/X000+rRo0a8vLy0p9//qmvvvpK6enpGjdunKXthx9+qCeffFKVK1dWnz59FBYWpiNHjmjRokWKi4uT9PD7u3Tp0ipevLiGDRumv//+Wz4+Ppo/f/4DzXm5UYsWLVS/fn2NHj1aR44cUcWKFfXrr7/q559/1uDBg7P8LAHkAI65GRUAICe5frvZzZs3Z1mXkZFhFC9e3ChevLhx9epVwzAMIz4+3ujSpYsRHBxsuLq6GgUKFDCeeuop44cffsiy/cGDBw1JhiRj7dq1t4x/8uRJo3///kahQoUMV1dXIzg42GjYsKHx2WefWdpcv/3pvHnzrLY9fPiwIcmYOXOm1fL33nvPKFCggGE2m41atWoZW7ZsyXK7WcMwjMuXLxuTJ082ypYta5jNZiNv3rxGlSpVjPHjxxtJSUl37Le6desaZcuWNbZs2WJEREQYbm5uRpEiRYyPP/74tts0a9bMkGT8/vvvd9z3dX/++afx2muvGTVq1DDy589vuLi4GIGBgUbz5s2NlStXZmm/e/duo1WrVoafn5/h5uZm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AACAzSgsAAAAANiMwgIAAACAzSgsAAAAANiMwgIAAACAzSgsAAAAANiMwgIAAACAzSgsAAAAANiMwgIAAACAzf7VhcW4ceP0+OOPOzqNBxYbGyuTyaTz5887OpW7MplMWrBggaPTAAAAQA7l4ugEbDFs2DANHDjQ0WnkCidOnFDevHkdnQYAAAByqBxZWFy+fFl58uS5azsvLy95eXnZISMEBwc7OgUAAADkYPd1KVS9evU0cOBADR48WHnz5lVQUJA+//xzXbhwQd27d5e3t7dKlCihmJgYq+1Wr16tatWqyWw2KyQkRCNHjtTVq1et9jtgwAANHjxYAQEBioyMtFwmtGLFClWtWlUeHh6qWbOm9u/fb9nu5kuhunXrppYtW+rdd99VSEiI/P391b9/f125csXS5sSJE2revLnc3d0VFhamOXPmqGjRonr//fdve9ybN29W48aNFRAQIF9fX9WtW1fbtm2zamMymfTFF1+oVatW8vDwUHh4uH755RerNosXL1bJkiXl7u6u+vXr68iRI3ft8/Pnz6tXr14KDAyUj4+PGjRooB07dkiSDhw4IJPJpH379lltM3XqVBUvXtzyfPfu3WratKm8vLwUFBSkzp076/Tp01b9P2jQII0YMUL58uVTcHCwxo0bl+X4rl8KdeTIEZlMJv3444+qX7++PDw8VLFiRa1fv95qm88//1yFChWSh4eHWrVqpSlTpsjPz++uxwwAAIB/n/ueYzFr1iwFBARo06ZNGjhwoPr166c2bdqoZs2a2rZtm5o0aaLOnTvr4sWLkqS///5bzZo10xNPPKEdO3Zo+vTp+vLLL/Xmm29m2W+ePHm0bt06zZgxw7J89OjReu+997Rlyxa5uLioR48ed8xv1apVio+P16pVqzRr1ixFR0crOjrasr5Lly76559/FBsbq/nz5+uzzz5TYmLiHfeZkpKirl27au3atdqwYYPCw8PVrFkzpaSkWLUbP3682rZtq507d6pZs2bq1KmTzp49K0k6fvy4WrdurRYtWiguLk69evXSyJEj79rfbdq0UWJiomJiYrR161ZVrlxZDRs21NmzZ1WyZElVrVpVs2fPttpm9uzZ6tixo6RrhUmDBg1UqVIlbdmyRUuWLNHJkyfVtm1bq21mzZolT09Pbdy4UW+//bZef/11LVu27I65jR49WsOGDVNcXJxK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+fPLw8NDxYoVU9u2bbVkyRJHpwYAD5WLoxMAAPz7vP766woLC9OVK1eUkJCg2NhYDR48WFOmTNEvv/yiChUqODrFHOHdd9/V8OHDVbduXY0aNUoeHh46dOiQli9fru+++05RUVGOTtFmderU0aVLl5QnTx5HpwLAwSgsAAD3rWnTpqpatarl+ahRo7Ry5Uo99dRTevrpp7V37165u7s7MEPHu3r1qt544w01btxYv/76a5b1iYmJDsjq4UlLS1OePHnk5OQkNzc3R6cDIAfgUigAwEPRoEEDjRkzRkePHtW3335rtW7fvn36z3/+o3z58snNzU1Vq1bVL7/8YtXm+mVWa9eu1aBBgxQYGCg/Pz89//zzunz5ss6fP68uXboob968yps3r0aMGCHDMKz28e6776pmzZry9/eXu7u7qlSpoh9++CFLriaTSQMGDNCCBQtUrlw5mc1mlS1b9paXJ61du1ZPPPGE3NzcVLx4cX366af31B+nT59WcnKyatWqdcv1+fPnt3qelpamcePGqWTJknJzc1NISIhat26t+Ph4S5vMzEy9//77Klu2rNzc3BQUFKTnn39e586ds9pX0aJF9dRTT2nt2rWqVq2a3NzcVKxYMX399ddW7c6ePathw4apfPny8vLyko+Pj5o2baodO3ZYtbs+j+K7777Tq6++qgIFCsjDw0PJycm3nWMxb948ValSRe7u7goICNBzzz2nv//+26pNQkKCunfvroIFC8psNiskJETPPPOMjhw5ci9dDCCHobAAADw0nTt3liSr/9Dv2bNHNWrU0N69ezVy5Ei999578vT0VMuWLfXTTz9l2cfAgQN18OBBjR8/Xk8//bQ+++wzjRkzRi1atFBGRoYmTJigJ598Uu+8846++eYbq20/+OADVapUSa+//romTJggFxcXtWnTRosWLcoSZ+3atXrhhRfUvn17vf3220pLS9Ozzz6rM2fOWNrs2rVLTZo0UWJiosaNG6fu3btr7Nixt8z7Zvnz55e7u7v+97//6ezZs3dsm5GRoaeeekrjx49XlSpV9N577+nFF19UUlKSdu/ebWn3/PPPa/jw4apVq5Y++OADde/eXbNnz1ZkZKSuXLlitc9Dhw7pP//5jxo3bqz33ntPefPmVbdu3bRnzx5Lmz///FMLFizQU089pSlTpmj48OHatWuX6tatq3/+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\n"
},
"metadata": {}
}
],
"source": [
"def airline_stochastic(demand):\n",
" # Create AMPL instance and load the model\n",
" ampl = AMPL()\n",
" ampl.read(\"airline_stochastic.mod\")\n",
"\n",
" # load the data\n",
" ampl.set[\"CLASSES\"] = demand.columns.tolist()\n",
" ampl.set[\"SCENARIOS\"] = demand.index.values.tolist()\n",
" ampl.param[\"demand\"] = demand.T\n",
" ampl.param[\"revenue_factor\"] = revenue_factor\n",
" ampl.param[\"seat_factor\"] = seat_factor\n",
" ampl.param[\"capacity\"] = capacity\n",
"\n",
" # set solver\n",
" ampl.option[\"solver\"] = SOLVER\n",
"\n",
" return ampl\n",
"\n",
"\n",
"# create and solve model for the three scenarios defined above\n",
"model_stochastic = airline_stochastic(demand)\n",
"seats_stochastic = airline_solve(model_stochastic)\n",
"seat_report(seats_stochastic, demand)"
]
},
{
"cell_type": "markdown",
"id": "875bd08b",
"metadata": {
"id": "875bd08b"
},
"source": [
"## Model 3. Adding chance constraints\n",
"\n",
"The airline wishes a special guarantee for its clients enrolled in its loyalty program. In particular, it wants $98\\%$ probability to cover the demand of first-class seats and $95\\%$ probability to cover the demand of business-class seats (by clients of the loyalty program). First-class passengers are covered if they can purchase a first-class seat. Business-class passengers are covered if they purchase a business-class seat or upgrade to a first-class seat.\n",
"\n",
"Assume the demand of loyalty-program passengers is normally distributed as $z_F \\sim \\mathcal N(\\mu_F, \\sigma_F^2)$ and $z_B \\sim \\mathcal N(\\mu_B, \\sigma_B^2)$ for first-class and business, respectively, where the parameters are given in the table below. For completeness, we also include the parameters for economy-class passengers.\n",
"\n",
"
\n",
"\n",
"We further assume that the demands for first-class and business-class seats are independent of each other and of the scenario (time of the week).\n",
"\n",
"Let $s_F$ be the number of first-class seats and $s_B$ the number of business seats. The probabilistic constraints are\n",
"\n",
"$$\n",
"\\mathbb P(s_F \\geq z_F ) \\geq 0.98, \\qquad \\text{ and } \\qquad \\mathbb P(s_F + s_B \\geq z_F + z_B ) \\geq 0.95.\n",
"$$\n",
"\n",
"These are can be written equivalently as linear constraints, specifically\n",
"\n",
"$$\n",
"\\frac{s_F - \\mu_F}{\\sigma_F} \\geq \\Phi^{-1}(0.98) \\approx 2.054 \\qquad \\text{ and } \\qquad \\frac{(s_F + s_B) - (\\mu_F + \\mu_B)}{\\sqrt{\\sigma_F^2 + \\sigma_B^2}} \\geq \\Phi^{-1}(0.95) \\approx 1.645.\n",
"$$\n",
"\n",
"For the second constraint, we use the fact that the sum of the two independent random variables $z_F$ and $z_B$ is normally distributed with mean $\\mu_F + \\mu_B$ and variance $\\sigma_F^2 + \\sigma_B^2$.\n",
"\n",
"We add these equivalent linear counterparts of the two chance constraints to the stochastic optimization model. Rather than writing a function to create a whole new model, we can use the prior function to create and add the two chance constraints using decorators."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "2a3aeb53-b57f-4e00-91ed-1fb1ac4b75b8",
"metadata": {
"id": "2a3aeb53-b57f-4e00-91ed-1fb1ac4b75b8",
"outputId": "48bcd623-f8b7-4c4e-f006-2940acece56a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
}
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
" mu sigma\n",
"F 12.0 4\n",
"B 28.0 16\n",
"E 175.0 20"
],
"text/html": [
"\n",
"
"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAJOCAYAAAAqFJGJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB+fklEQVR4nO3dd3gU5f7+8XtT2IRUSEIKNUAo0qRIld4CiAIekCIdFKQIUgQRAQtNBSugHiXogaMgih6qtCAgvYPUSFMTQk0BEiCZ3x982Z9LaGFDZgPv13XtlezMMzP3PLNJ9pN5ZtZiGIYhAAAAAHCAi9kBAAAAAOR8FBYAAAAAHEZhAQAAAMBhFBYAAAAAHEZhAQAAAMBhFBYAAAAAHEZhAQAAAMBhFBYAAAAAHEZhAQAAAMBhFBYAAGRCvXr1VLZsWbNjPBS6deumIkWKmB0DQBahsACAR1RUVJQsFovt4ebmpvz586tbt27666+/zI73yEtOTtaYMWNUtmxZeXl5KSAgQI8//rhefvll/f3332bHA4AM3MwOAAAw15tvvqnw8HClpKRo48aNioqK0rp167R37155eHiYHe+RdPXqVdWpU0cHDhxQ165dNWDAACUnJ2vfvn2aM2eOWrdurbCwMLNjOuyLL75Qenq62TEAZBEKCwB4xDVr1kxVqlSRJPXq1UuBgYGaNGmSfv75Z7Vr187kdI+mBQsWaMeOHZo9e7Y6duxoNy8lJUVXrlwxKVnWuHjxory8vOTu7m52FABZiKFQAAA7tWvXliTFxMTYTT9w4ID+9a9/KW/evPLw8FCVKlX0888/2+Zv3bpVFotFs2bNyrDOZcuWyWKxaOHChbZpf/31l3r06KHg4GBZrVaVKVNGX331ld1y0dHRslgsmjt3rt555x0VKFBAHh4eatiwoY4cOWLXtkiRIurWrVuGbderV0/16tWzm5aamqoxY8aoePHislqtKliwoIYPH67U1NR76iNJ2rZtm2rWrClPT0+Fh4drxowZtnnJycny8vLSyy+/nGG5P//8U66urpowYcJt132j72vVqpVhnoeHh3x9fe2mHThwQO3atVNQUJA8PT1VsmRJjRo1yq5NVvf32rVr1bZtWxUqVMjWh4MHD9bly5ft2nXr1k3e3t6KiYlR8+bN5ePjo06dOtnm3XyNxcWLFzVkyBAVLFhQVqtVJUuW1HvvvSfDMG7bXwCcA2csAAB2jh07JknKkyePbdq+fftUq1Yt5c+fXyNGjJCXl5fmzp2rVq1aaf78+WrdurWqVKmiokWLau7cueratavdOr/77jvlyZNHTZs2lSSdOnVK1atXl8ViUf/+/RUUFKQlS5aoZ8+eSkxM1KBBg+yWnzhxolxcXDR06FAlJCRo8uTJ6tSpkzZt2pTp/UtPT9fTTz+tdevW6YUXXlDp0qW1Z88eTZ06VYcOHdKCBQvuuo7z58+refPmateunTp06KC5c+eqb9++ypUrl3r06CFvb2+1bt1a3333naZMmSJXV1fbsv/9739lGIbtzfWtFC5cWJL09ddf6/XXX5fFYrlt2927d6t27dpyd3fXCy+8oCJFiigmJkb/+9//9M4770h6MP09b948Xbp0SX379lVAQIA2b96sjz/+WH/++afmzZtnt75r166padOmevLJJ/Xee+8pd+7ct9wXwzD09NNPa/Xq1erZs6cef/xxLVu2TMOGDdNff/2lqVOn3rYfADgBAwDwSJo5c6YhyVixYoVx+vRp4+TJk8b3339vBAUFGVar1Th58qStbcOGDY1y5coZKSkptmnp6elGzZo1jYiICNu0kSNHGu7u7sa5c+ds01JTUw1/f3+jR48etmk9e/Y0QkNDjTNnzthlat++veHn52dcunTJMAzDWL16tSHJKF26tJGammpr9+GHHxqSjD179timFS5c2OjatWuG/axbt65Rt25d2/NvvvnGcHFxMdauXWvXbsaMGYYkY/369Xfst7p16xqSjPfff99uHx9//HEjX758xpUrVwzDMIxly5YZkowlS5bYLV++fHm7PLdy6dIlo2TJkoYko3Dhwka3bt2ML7/80jh16lSGtnXq1DF8fHyM48eP201PT0+3ff8g+vvGMv80YcIEw2Kx2GXp2rWrIckYMWJEhvZdu3Y1ChcubHu+YMECQ5Lx9ttv27X717/+ZVgsFuPIkSMZ1gHAeTAUCgAecY0aNVJQUJAKFiyof/3rX/Ly8tLPP/+sAgUKSJLOnTunVatWqV27dkpKStKZM2d05swZnT17Vk2bNtXhw4dtd5F67rnndPXqVf3www+29f/yyy+6cOGCnnvuOUnX/ys9f/58tWzZUoZh2NZ35swZNW3aVAkJCdq+fbtdxu7duytXrly25zeGa/3xxx+Z3t958+apdOnSKlWqlN22GzRoIElavXr1Xdfh5uamF1980fY8V65cevHFFxUfH69t27bZ+jUsLEyzZ8+2tdu7d692796t559//o7r9/T01KZNmzRs2DBJ1+/g1bNnT4WGhmrAgAG2IVunT5/Wr7/+qh49eqhQoUJ267hxluNB9benp6ft+4sXL+rMmTOqWbOmDMPQjh07MuxT375977jPkrR48WK5urpq4MCBdtOHDBkiwzC0ZMmSu64DgHkYCgUAj7hPP/1UJUqUUEJCgr766iv9+uuvslqttvlHjhyRYRgaPXq0Ro8efct1xMfHK3/+/KpQoYJKlSql7777Tj179pR0fRhUYGCg7Y376dOndeHCBX3++ef6/PPPb7u+f7r5TfONYVrnz5/P9P4ePnxY+/fvV1BQ0D1t+1bCwsLk5eVlN61EiRKSrg8lq169ulxcXNSpUydNnz5dly5dUu7cuTV79mx5eHiobdu2d92Gn5+fJk+erMmTJ+v48eNauXKl3nvvPX3yySfy8/PT22+/bXujf6fP1XhQ/X3ixAm98cYb+vnnnzMch4SEBLvnbm5utkL1To4fP66wsDD5+PjYTS9durRtPgDnRWEBAI+4qlWr2u4K1apVKz355JPq2LGjDh48KG9vb9vtQIcOHWq7RuJmxYsXt33/3HPP6Z133tGZM2fk4+Ojn3/+WR06dJCb2/U/OTfW9/zzz2e4FuOG8uXL2z3/5zUK/2T844Le212HkJaWZrd8enq6ypUrpylTptyyfcGCBW85/X506dJF7777rhYsWKAOHTpozpw5euqpp+Tn55ep9RQuXFg9evRQ69atVbRoUc2ePVtvv/32PS37IPo7LS1NjRs31rlz5/Tqq6+qVKlS8vLy0l9//aVu3bpluIWs1WqViwuDJICHHYUFAMDmxt2K6tevr08++UQjRoxQ0aJFJUnu7u5q1KjRXdfx3HPPady4cZo/f76Cg4OVmJio9u3b2+YHBQXJx8dHaWlp97S+e5UnTx5duHAhw/Tjx4/b9kGSihUrpl27dqlhw4Z3vCj6Tv7++2/bLVNvOHTokCTZ3eWobNmyqlixombPnq0CBQroxIkT+vjjj+9rm9L1fSxWrJj27t0rSbb9uvH8Vh5Ef+/Zs0eHDh3SrFmz1KVLF9v05cuXO7TewoULa8WKFUpKSrI7a3HgwAHbfADOi38fAADs1KtXT1WrVtUHH3yglJQU5cuXT/Xq1dNnn32m2NjYDO1Pnz5t97x06dIqV66cvvvuO3333XcKDQ1VnTp1bPNdXV317LPPav78+bd8Q3zz+u5VsWLFtHHjRrvPeFi4cKFOnjxp165du3b666+/9MUXX2RYx+XLl3Xx4sW7buvatWv67LPPbM+vXLmizz77TEFBQapcubJd286dO+uXX37RBx98oICAADVr1uyu69+1a5fOnDmTYfrx48f1+++/q2TJkpKuFw116tTRV199pRMnTti1vXF24UH0940zGv88Y2QYhj788MNMr+ufmjdvrrS0NH3yySd206dOnSqLxXJPfQfAPJyxAABkMGzYMLVt21ZRUVHq06ePPv30Uz355JMqV66cevfuraJFi+rUqVPasGGD/vzzT+3atctu+eeee05vvPGGPDw81LNnzwzDYCZOnKjVq1erWrVq6t27tx577DGdO3dO27dv14oVK3Tu3LlMZ+7Vq5e+//57RUZGql27doqJidF//vMfFStWzK5d586dNXfuXPXp00erV69WrVq1lJaWpgMHDmju3LlatmyZbWjY7YSFhWnSpEk6duyYSpQooe+++047d+7U559/nuFD3zp27Kjhw4frxx9/VN++fe/pQ+GWL1+uMWPG6Omnn1b16tXl7e2tP/74Q1999ZVSU1M1duxYW9uPPvpITz75pCpVqqQXXnhB4eHhOnbsmBYtWqSdO3dKyvr+LlWqlIoVK6ahQ4fqr7/+kq+vr+bPn39f17z8U8uWLVW/fn2NGjVKx44dU4UKFfTLL7/op59+0qBBgzIcSwBOxpybUQEAzHbjdrNbtmzJMC8tLc0oVqyYUaxYMePatWuGYRhGTEyM0aVLFyMkJMRwd3c38ufPbzz11FPG999/n2H5w4cPG5IMSca6detuuf1Tp04Z/fr1MwoWLGi4u7sbISEhRsOGDY3PP//c1ubG7U/nzZtnt+zRo0cNScbMmTPtpr///vtG/vz5DavVatSqVcvYunVrhtvNGoZhXLlyxZg0aZJRpkwZw2q1Gnny5DEqV65sjBs3zkhISLhjv9WtW9coU6aMsXXrVqNGjRqGh4eHUbhwYeOTTz657TLNmzc3JBm//fbbHdd9wx9//GG88cYbRvXq1Y18+fIZbm5uRlBQkNGiRQtj1apVGdrv3bvXaN26teHv7294eHgYJUuWNEaPHm3XJqv7+/fffzcaNWpkeHt7G4GBgUbv3r2NXbt2ZWjXtWtXw8vL65b7efPtZg3DMJKSkozBgwcbYWFhhru7uxEREWG8++67drfPBeCcLIbBR1kCAPAgtW7dWnv27Mnw6dUA8DDhGgsAAB6g2NhYLVq0SJ07dzY7CgA8UFxjAQDAA3D06FGtX79e//73v+Xu7m73gXoA8DDijAUAAA/AmjVr1LlzZx09elSzZs1SSEiI2ZEA4IHiGgsAAAAADuOMBQAAAACHUVgAAAAAcBgXb8Nppaen6++//5aPj48sFovZcQAAAB5ahmEoKSlJYWFhGT7U9F5RWMBp/f333ypYsKDZMQAAAB4ZJ0+eVIECBe5rWQoLOC0fHx9J11/gvr6+JqcBAOC6im8ulyTteKOxyUmArJOYmKiCBQva3n/dDwoLOK0bw598fX0pLAAATsPVmluS+NuEh5Ijw8+5eBsAAACAwygsAAAAADiMoVAAAACZEOxnNTsC4JQoLAAAADJh7fAGZkcAnBJDoQAAAAA4jMICAAAAgMMoLAAAADKhxKglKjFqidkxAKdDYQEAAADAYRQWAAAAABxGYQEAAADAYRQWAAAAABxGYQEAAADAYRQWAAAAABzGJ28DAABkwg8v1TQ7AuCUKCwAAAAyoWx+P7MjAE6JwgJOr+yYZXKx5jY7BgDc0bGJLcyOAACm4hoLAACATHjxm6168ZutZscAnA5nLAAAADJh9YHTZkcAnBJnLAAAAAA4jMICAAAAgMMoLAAAAAA4jMICAAAAgMMoLAAAAAA4jLtCAQAAZEL/BsXNjgA4JQoLAACATBjYMMLsCIBTYigUAAAAAIdRWAAAAGTC3C0nNXfLSbNjAE6HwuIhFx0dLYvFogsXLty2TVRUlPz9/e+4nrFjx+rxxx/P0mwAAOREry/Yq9cX7DU7BuB0KCwecjVr1lRsbKz8/PzMjgIAAICHGBdvP+Ry5cqlkJAQs2MAAADgIccZixymXr16GjBggAYNGqQ8efIoODhYX3zxhS5evKju3bvLx8dHxYsX15IlSyTdeihUVFSUChUqpNy5c6t169Y6e/Zshu1MnDhRwcHB8vHxUc+ePZWSkmI3f8uWLWrcuLECAwPl5+enunXravv27bb5PXr00FNPPWW3zNWrV5UvXz59+eWXWdgjAAAAcAYUFjnQrFmzFBgYqM2bN2vAgAHq27ev2rZtq5o1a2r79u1q0qSJOnfurEuXLmVYdtOmTerZs6f69++vnTt3qn79+nr77bft2sydO1djx47V+PHjtXXrVoWGhmratGl2bZKSktS1a1etW7dOGzduVEREhJo3b66kpCRJUq9evbR06VLFxsballm4cKEuXbqk55577gH0CgAAAMxkMQzDMDsE7l29evWUlpamtWvXSpLS0tLk5+enNm3a6Ouvv5YkxcXFKTQ0VBs2bFBKSorq16+v8+fPy9/fXx07dlRCQoIWLVpkW2f79u21dOlS21mNmjVrqmLFivr0009tbapXr66UlBTt3LnzlrnS09Pl7++vOXPm2M5UlClTRl27dtXw4cMlSU8//bQCAgI0c+bMW64jNTVVqamptueJiYkqWLCgCg6aKxdr7vvrMADIJscmtjA7ArJJiVHXRwUceqeZyUmArJOYmCg/Pz8lJCTI19f3vtbBGYscqHz58rbvXV1dFRAQoHLlytmmBQcHS5Li4+MzLLt//35Vq1bNblqNGjUy3ebUqVPq3bu3IiIi5OfnJ19fXyUnJ+vEiRO2Nr169bIVEadOndKSJUvUo0eP2+7XhAkT5OfnZ3sULFjwtm0BADBL6TBflQ67vzdewMOMi7dzIHd3d7vnFovFbprFYpF0/SzCg9K1a1edPXtWH374oQoXLiyr1aoaNWroypUrtjZdunTRiBEjtGHDBv32228KDw9X7dq1b7vOkSNH6pVXXrE9v3HGAgAAZ/JTv1pmRwCcEoXFI6Z06dLatGmT3bSNGzfesk2XLl1u22b9+vWaNm2amjdvLkk6efKkzpw5Y9cmICBArVq10syZM7VhwwZ17979jtmsVqusVmum9wkAAADmo7B4xAwcOFC1atXSe++9p2eeeUbLli3T0qVL7dq8/PLL6tatm6pUqaJatWpp9uzZ2rdvn4oWLWprExERoW+++UZVqlRRYmKihg0bJk9Pzwzb69Wrl5566imlpaWpa9euD3z/AAB40M4mX78eMMCbf4YB/8Q1Fo+Y6tWr64svvtCHH36oChUq6JdfftHrr79u1+a5557T6NGjNXz4cFWuXFnHjx9X37597dp8+eWXOn/+vCpVqqTOnTtr4MCBypcvX4btNWrUSKGhoWratKnCwsIe6L4BAJAdakxYpRoTVpkdA3A63BUKD1RycrLy58+vmTNnqk2bNpla9sbdCbgrFICcgLtCPTq4KxQeRllxVyiGQuGBSE9P15kzZ/T+++/L399fTz/9tNmRAAAA8ABRWOCBOHHihMLDw1WgQAFFRUXJzY2XGgAAwMOMd3t4IIoUKSJG2QEAADw6uHgbAAAAgMMoLAAAAAA4jKFQAAAAmbBmeD2zIwBOicICAAAgE0L9Mn4gLACGQgEAAADIAhQWAAAAmdBuxga1m7HB7BiA02EoFAAAQCbsPHnB7AiAU+KMBQAAAACHccYCTm/vuKby9fU1OwYAAADugDMWAAAAABxGYQEAAADAYRQWAAAAABzGNRYAAACZMLrlY2ZHAJwShQUAAEAmdK5e2OwIgFNiKBQAAAAAh1FYAAAAZMKMNTGasSbG7BiA02EoFAAAQCZM+eWQJKlP3WImJwGcC2csAAAAADiMwgIAAACAwygsAAAAADiMwgIAAACAwygsAAAAADiMu0IBAABkwpMRgWZHAJwShQUAAEAmfNXtCbMjAE6JoVAAAAAAHEZhAQAAkAmHTyXp8Kkks2MAToehUAAAAJnQ4qN1kqRD7zQzOQngXDhjAQAAAMBhFBYAAAAAHEZhAQAAAMBhFBYAAAAAHEZhAQAAAMBhFBYAAAAAHMbtZgEAADJhz7gmZkcAnBKFBQAAQCZY3VzNjgA4JYZCAQAAAHAYhQUAAEAmNJqyRo2mrDE7BuB0GAoFAACQCSfOXjI7AuCUOGMBAAAAwGEUFgAAAAAcRmEBAAAAwGEUFgAAAAAcRmEBAAAAwGHcFQoAACATPmz/uNkRAKdEYQGnV3bMMrlYc5sdAwDgpI5NbJGt22tWLjRbtwfkFAyFAgAAAOAwCgsAAIBMGL94v8Yv3m92DMDpUFgAAABkQtT6Y4paf8zsGIDTobAAAAAA4DAKCwAAAAAOo7AAAAAA4DAKCwAAAAAOo7AAAAAA4DA+IA8AACATWlYIMzsC4JQoLAAAADLh/XYVzI4AOCWGQgEAAABwGIXFIygqKkr+/v7Zvt2xY8fq8ccfz/btAgCQlTb+cVYb/zhrdgzA6TAUCgAAIBO6fLlZknTonWYmJwGcC2csAAAAADiMwsIJLFy4UP7+/kpLS5Mk7dy5UxaLRSNGjLC16dWrl55//nlJ0rp161S7dm15enqqYMGCGjhwoC5evGhrm5qaqqFDhyp//vzy8vJStWrVFB0dfdvtnz59WlWqVFHr1q2Vmpqq9PR0TZgwQeHh4fL09FSFChX0/fff29pHR0fLYrFo5cqVqlKlinLnzq2aNWvq4MGDduudOHGigoOD5ePjo549eyolJSUrugsAAABOiMLCCdSuXVtJSUnasWOHJGnNmjUKDAy0KwbWrFmjevXqKSYmRpGRkXr22We1e/dufffdd1q3bp369+9va9u/f39t2LBB3377rXbv3q22bdsqMjJShw8fzrDtkydPqnbt2ipbtqy+//57Wa1WTZgwQV9//bVmzJihffv2afDgwXr++ee1Zs0au2VHjRql999/X1u3bpWbm5t69Ohhmzd37lyNHTtW48eP19atWxUaGqpp06bdsR9SU1OVmJho9wAAAEDOYDEMwzA7BKTKlSurQ4cOGjp0qFq3bq0nnnhC48aN09mzZ5WQkKACBQro0KFDmjRpklxdXfXZZ5/Zll23bp3q1q2rixcvKj4+XkWLFtWJEycUFvb/77PdqFEjVa1aVePHj1dUVJQGDRqkTZs2qXHjxmrdurU++OADWSwWpaamKm/evFqxYoVq1KhhW75Xr166dOmS5syZo+joaNWvX18rVqxQw4YNJUmLFy9WixYtdPnyZXl4eKhmzZqqWLGiPv30U9s6qlevrpSUFO3cufOWfTB27FiNGzcuw/SCg+bKxZrb0S4GADykjk1ska3bKzFqiSSuscDDJTExUX5+fkpISJCvr+99rYMzFk6ibt26io6OlmEYWrt2rdq0aaPSpUtr3bp1WrNmjcLCwhQREaFdu3YpKipK3t7etkfTpk2Vnp6uo0ePas+ePUpLS1OJEiXs2qxZs0YxMTG27V2+fFm1a9dWmzZt9OGHH8pisUiSjhw5okuXLqlx48Z2y3/99dd2y0tS+fLlbd+HhoZKkuLj4yVJ+/fvV7Vq1eza/7NQuZWRI0cqISHB9jh58uT9dygAAACyFXeFchL16tXTV199pV27dsnd3V2lSpVSvXr1FB0drfPnz6tu3bqSpOTkZL344osaOHBghnUUKlRIu3fvlqurq7Zt2yZXV1e7+d7e3rbvrVarGjVqpIULF2rYsGHKnz+/bf2StGjRItu0fy7zT+7u7rbvbxQm6enp99sFslqtGbYBAICz8bK63r0R8AiisHASN66zmDp1qq2IqFevniZOnKjz589r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sVjspt0oINLT0zO1Xi8vr7tu717Wfat8mc1ys65du+rs2bP68MMPVbhwYVmtVtWoUUNXrlx5oNtOTk5WaGiooqOjM8y7cYYjJCREDRo00Jw5c1S9enXNmTNHffv2tVtHy5YtNWnSpAzruFEM3G/2rDju/zRy5Ei98sortuc3zlgAAADA+T3wu0KVLl1a8+fPl2EYtjef69evl4+PjwoUKPCgN2+nZMmSunbtmnbs2GE7Q3LkyBGdP3/+jsutX79e06ZNU/PmzSVdv17inxc/34vSpUtnuJj7xlmG26lUqZLi4uLk5uamIkWK3LZdp06dNHz4cHXo0EF//PGH2rdvb7eO+fPnq0iRInJzy76bgJUsWVJbtmyxm3bz85tZrVa7IV8AAADIOR74B+S99NJLOnnypAYMGKADBw7op59+0pgxY/TKK6/IxSV7P5+vVKlSatSokV544QVt3rxZO3bs0AsvvCBPT0+7oVo3i4iI0DfffKP9+/dr06ZN6tSpkzw9PTO17T59+ujw4cMaNmyYDh48qDlz5thdVH4rjRo1Uo0aNdSqVSv98ssvOnbsmH777TeNGjVKW7dutbVr06aNkpKS1LdvX9WvX19hYWG2ef369dO5c+fUoUMHbdmyRTExMVq2bJm6d++utLS0TO1DZgwYMECLFy/WlClTdPjwYX322WdasmTJHfsZAAAAOdcDf2efP39+LV68WJs3b1aFChXUp08f9ezZU6+//vqD3vQtff311woODladOnXUunVr9e7dWz4+PvLw8LjtMl9++aXOnz+vSpUqqXPnzho4cKDy5cuXqe0WKlRI8+fP14IFC1ShQgXNmDFD48ePv+MyFotFixcvVp06ddS9e3eVKFFC7du31/Hjx23XskiSj4+PWrZsqV27dqlTp0526wgLC9P69euVlpamJk2aqFy5cho0aJD8/f0faGFXq1YtzZgxQ1OmTFGFChW0dOlSDR48+I79DAAAgJwrU3eFehjduEPSP+8+hQejd+/eOnDggN3dp+7kxt0JuCsUAAB41OTEu0I55SdvP0irVq1ScnKyypUrp9jYWA0fPlxFihRRnTp1zI720HnvvffUuHFjeXl5acmSJZo1a5amTZtmdiwAAAA8AI9cYXH16lW99tpr+uOPP+Tj46OaNWtq9uzZGe6KBMdt3rxZkydPVlJSkooWLaqPPvpI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wGEUFgAAAAAcRmEBAAAAwGEUFgAAAAAcRmEBAHiodevWTRaLRRaLRe7u7goPD9fw4cOVkpJidjQAeKi4mR0AAIAHLTIyUjNnztTVq1e1bds2de3aVRaLRZMmTTI7GgA8NDhjAQB46FmtVoWEhKhgwYJq1aqVGjVqpOXLl0uS0tPTNWHCBIWHh8vT01MVKlTQ999/b5tXoEABTZ8+3W59O3bskIuLi44fPy5JunDhgnr16qWgoCD5+vqqQYMG2rVrl6392LFj9fjjj+ubb75RkSJF5Ofnp/bt2yspKcnWpkiRIvrggw/stvP4449r7Nixtud32w4AmInCAgDwSNm7d69+++035cqVS5I0YcIEff3115oxY4b27dunwYMH6/nnn9eaNWvk4uKiDh06aM6cOXbrmD17tmrVqqXChQtLktq2bav4+HgtWbJE27ZtU6VKldSwYUOdO3fOtkxMTIwWLFighQsXauHChVqzZo0mTpyYqez3sh0AMAuFBQDgobdw4UJ5e3vLw8ND5cqVU3x8vIYNG6bU1FSNHz9eX331lZo2baqiRYuqW7duev755/XZZ59Jkjp16qT169frxIkTkq6fxfj222/VqVMnSdK6deu0efNmzZs3T1WqVFFERITee+89+fv728583FguKipKZcuWVe3atdW5c2etXLnynvfhXrcDAGbhGgsAwEOvfv36mj59ui5evKipU6fKzc1Nzz77rPbt26dLly6pcePGdu2vXLmiihUrSro+HKl06dKaM2eORowYoTVr1ig+Pl5t27aVJO3atUvJyckKCAiwW8fly5cVExNje16kSBH5+PjYnoeGhio+Pv6e9+FetwMAZqGwAAA89Ly8vFS8eHFJ0ldffaUKFSroyy+/VNmyZSVJixYtUv78+e2WsVqttu87depkKyzmzJmjyMhI2xv85ORkhYaGKjo6OsN2/f39bd+7u7vbzbNYLEpPT7c9d3FxkWEYdm2uXr1q+/5etwMAZqGwAAA8UlxcXPTaa6/plVde0aFDh2S1WnXixAnVrVv3tst07NhRr7/+urZt26bvv/9eM2bMsM2rVKmS4uLi5ObmpiJFitx3rqCgIMXGxtqeJyYm6ujRo1m+HQB4ULjGAgDwyGnbtq1cXV312WefaejQoRo8eLBmzZqlmJgYbd++XR9//LFmzZpla1+kSBHVrFlTPXv2VFpamp5++mnbvEaNGqlGjRpq1aqVfvnlFx07dky//fabRo0apa1bt95zpgYNGuibb77R2rVrtWfPHnXt2lWurq5Zvh0AeFA4YwEAeOS4ubmpf//+mjx5so4ePaqgoCBNmDBBf/zxh/z9/VWpUiW99tprdst06tRJL730krp06SJPT0/bdIvFosWLF2vUqFHq3r27Tp8+rZCQENWpU0fBwcH3nGnkyJE6evSonnrqKfn5+emtt96yO2ORVdsBgAfFYtw8oBMAAAAAMomhUAAAAAAcRmEBAAAAwGEUFgAAAAAcRmEBAAAAwGEUFgAAAAAcRmEBAAAAwGEUFgAAAAAcRmEBAAAAwGEUFgAAAAAcRmEBAAAAwGEUFgAAAAAcRmEBAAAAwGEUFgAAAAAcRmEBAAAAwGEUFgAAAAAcRmEBAAAAwGEUFgAA3IOxY8fKYrGYHcMpREdHy2KxKDo62uwoAJwIhQUA4I6ioqJksVhsDw8PD4WFhalp06b66KOPlJSUZHZEp/O///1PdevWVb58+ZQ7d24VLVpU7dq109KlS82OBgAPjJvZAQAAOcObb76p8PBwXb16VXFxcYqOjtagQYM0ZcoU/fzzzypfvrzZEZ3Ce++9p2HDhqlu3boaOXKkcufOrSNHjmjFihX69ttvFRkZaXZEh9WpU0eXL19Wrly5zI4CwIlQWAAA7kmzZs1UpUoV2/ORI0dq1apVeuqpp/T0009r//798vT0NDGh+a5du6a33npLjRs31i+//JJhfnx8vAmpsk5KSopy5colFxcXeXh4mB0HgJNhKBQA4L41aNBAo0eP1vHjx/Wf//zHbt6BAwf0r3/9S3nz5pWHh4eqVKmin3/+2a7NjWFW69at08CBAxUUFCR/f3+9+OKLunLlii5cuKAuXbooT548ypMnj4YPHy7DMOzW8d5776lmzZoKCAiQp6enKleurO+//z5DVovFov79+2vBggUqW7asrFarypQpc8vhSevWrdMTTzwhDw8PFStWTJ999tk99ceZM2eUmJioWrVq3XJ+vnz57J6npKRo7NixKlGihDw8PBQaGqo2bdooJibG1iY9PV0ffPCBypQpIw8PDwUHB+vFF1/U+fPn7dZVpEgRPfXUU1q3bp2qVq0qDw8PFS1aVF9//bVdu3Pnzmno0KEqV66cvL295evrq2bNmmnXrl127W5cR/Htt9/q9ddfV/78+ZU7d24lJibe9hqLefPmqXLlyvL09FRgYKCef/55/fXXX3Zt4uLi1L17dxUoUEBWq1WhoaF65plndOzYsXvpYgBOjMICAOCQzp07S5Ldf+j37dun6tWra//+/RoxYoTef/99eXl5qVWrVvrxxx8zrGPAgAE6fPiwxo0bp6efflqff/65Ro8erZYtWyotLU3jx4/Xk08+qXfffVfffPON3bIffvihKlasqDfffFPjx4+Xm5ub2rZtq0WLFmXYzrp16/TSSy+pffv2mjx5slJSUvTss8/q7NmztjZ79uxRkyZNFB8fr7Fjx6p79+4aM2bMLXPfLF++fPL09NT//vc/nTt37o5t09LS9NRTT2ncuHGqXLmy3n//fb388stKSEjQ3r17be1efPFFDRs2TLVq1dKHH36o7t27a/bs2WratKmuXr1qt84jR47oX//6lxo3bqz3339fefLkUbdu3bRv3z5bmz/++EMLFizQU089pSlTpmjYsGHas2eP6tatq7///jtDzrfeekuLFi3S0KFDNX78+NsOf4qKilK7du3k6uqqCRMmqHfv3vrhhx/05JNP6sKFC7Z2zz77rH788Ud1795d06ZN08CBA5WUlKQTJ07ctX8BODkDAIA7mDlzpiHJ2LJly23b+Pn5GRUrVrQ9b9iwoVGuXDkjJSXFNi09Pd2oWbOmERERkWHdTZs2NdLT023Ta9SoYVgsFqNPnz62adeuXTMKFChg1K1b127bly5dsnt+5coVo2zZskaDBg3spksycuXKZRw5csQ2bdeuXYYk4+OPP7ZNa9WqleHh4WEcP37cNu333383XF1djXv5s/nGG28YkgwvLy+jWbNmxjvvvGNs27YtQ7uvvvrKkGRMmTIlw7wbfbF27VpDkjF79my7+UuXLs0wvXDhwoYk49dff7VNi4+PN6xWqzFkyBDbtJSUFCMtLc1ufUePHjWsVqvx5ptv2qatXr3akGQULVo0Qx/fmLd69WrDMK73eb58+YyyZcsaly9ftrVbuHChIcl44403DMMwjPPnzxuSjHfffffWnQcgR+OMBQDAYd7e3ra7Q507d06rVq1Su3btlJSUpDNnzujMmTM6e/asmjZtqsOHD2cYHtOzZ0+7W7lWq1ZNhmGoZ8+etmmurq6qUqWK/vjjD7tl/3ldx/nz55WQkKDatWtr+/btGXI2atRIxYoVsz0vX768fH19betMS0vTsmXL1KpVKxUqVMjWrnTp0mratOk99cW4ceM0Z84cVaxYUcuWLdOoUaNUuXJlVapUSfv377e1mz9/vgIDAzVgwIAM67jRF/PmzZOfn58aN25s68czZ86ocuXK8vb21urVq+2We+yxx1S7dm3b86CgIJUsWdKuz6xWq1xcXGz7e/bsWXl7e6tkyZK37LOuXbve9dqZrVu3Kj4+Xi+99JLdtRctWrRQqVKlbGePPD09lStXLkVHR2cYygUg56OwAAA4LDk5WT4+PpKuD8cxDEOjR49WUFCQ3WPMmDGSMl7E/M838ZLk5+cnSSpYsGCG6Te/IV24cKGqV68uDw8P5c2bV0FBQZo+fboSEhIy5Lx5O5KUJ08e2zpPnz6ty5cvKyIiIkO7kiVL3rEP/qlDhw5au3atzp8/r19++UUdO3bUjh071LJlS6WkpEiSYmJiVLJkSbm53f4+KocPH1ZCQoLy5cuXoS+Tk5Pv2o837590/ZqNqVOnKiIiQlarVYGBgQoKCtLu3btv2Wfh4eF33d/jx49LunUflSpVyjbfarVq0qRJWrJkiYKDg1WnTh1NnjxZcXFxd90GAOfHXaEAAA75888/lZCQoOLFi0u6/sZVkoYOHXrb//LfaHuDq6vrLdvdarrxj4u3165dq6efflp16tTRtGnTFBoaKnd3d82cOVNz5sy5p/XdvM6s5Ovrq8aNG6tx48Zyd3fXrFmztGnTJtWtW/eelk9PT1e+fPk0e/bsW84PCgqye34v+zd+/HiNHj1aPXr00FtvvaW8efPKxcVFgwYNsh27f8rqO30NGjRILVu21IIFC7Rs2TKNHj1aEyZM0KpVq1SxYsUs3RaA7EVhAQBwyI2LqW8UEUWLFpUkubu7q1GjRg902/Pnz5eHh4eWLVsmq9Vqmz5z5sz7Wl9QUJA8PT11+PDhDPMOHjx43zklqUqVKpo1a5ZiY2MlScWKFdOmTZt09epVubu733KZYsWKacWKFapVq1aWvcH//vvvVb9+fX355Zd20y9cuKDAwMD7WmfhwoUlXe+jBg0a2M07ePCgbf4NxYoV05AhQzRkyBAdPnxYjz/+uN5///0MdxYDkLMwFAoAcN9WrVqlt956S+Hh4erUqZOk63dGqlevnj777DPbm+h/On36dJZt39XVVRaLRWlpabZpx44d04IFC+57fU2bNtWCBQvs7lK0f/9+LVu27K7LX7p0SRs2bLjlvCVLlkj6/8OFnn32WZ05c0affPJJhrY3zjC0a9dOaWlpeuuttzK0uXbtmt3dlu6Vq6trhjM08+bNy3DdS2ZUqVJF+fLl04wZM5SammqbvmTJEu3fv18tWrSQdL1/bgwFu6FYsWLy8fGxWw5AzsQZCwDAPVmyZIkOHDiga9eu6dSpU1q1apWWL1+uwoUL6+eff7a7aPfTTz/Vk08+qXLlyql3794qWrSoTp06pQ0bNujPP//M8JkJ96tFixaaMmWKIiMj1bFjR8XHx+vTTz9V8eLFtXv37vta57hx47R06VLVrl1bL730kq5du6aPP/5YZcqUues6L126pJo1a6p69eqKjIxUwYIFdeHCBS1YsEBr165Vq1atbMN9unTpoq+//lqvvPKKNm/erNq1a+vixYtasWKFXnrpJT3zzDOqW7euXnzxRU2YMEE7d+5UkyZN5O7ursOHD2vevHn68MMP9a9//StT+/fUU0/pzTffVPfu3VWzZk3t2bNHs2fPtp1puh/u7u6aNGmSunfvrrp166pDhw46deqUPvzwQxUpUkSDBw+WJB06dEgNGzZUu3bt9Nhjj8nNzU0//vijTp06pfbt29/39gE4BwoLAMA9eeONNyRJuXLlUt68eVWuXDl98MEH6t69u+3C7Rsee+wxbd26VePGjVNUVJTOnj2rfPnyqWLFirb1ZIUGDRroyy+/1MSJEzVo0CCFh4dr0qRJOnbs2H0XFuXLl9eyZcv0yiuv6I033lCBAgU0btw4xcbG3nWd/v7++uKLL7Ro0SLNnDlTcXFxcnV1VcmSJfXuu+9q4MCBtraurq5avHix3nnnHc2ZM0fz589XQECArSC7YcaMGapcubI+++wzvfbaa3Jzc1ORIkX0/PPP3/aD+O7ktdde08WLFzVnzhx99913qlSpkhYtWqQRI0Zkel3/1K1bN+XOnVsTJ07Uq6++Ki8vL7Vu3VqTJk2Sv7+/pOsX43fo0EErV67UN998Izc3N5UqVUpz587Vs88+69D2AZjPYjyoK9YAAAAAPDK4xgIAAACAwygsAAAAADiMwgIAAACAwygsAAAAADiMwgIAAACAwygsAAAAADiMwgIAAACAw/iAPDit9PR0/f333/Lx8ZHFYjE7DgAAwEPLMAwlJSUpLCxMLi73d+6BwgJO6++//1bBggXNjgEAAPDIOHnypAoUKHBfy1JYwGn5+PhIuv4C9/X1NTlN9qj45nJJ0o43GpucJAeYFH7966tHzc0Bh9X+trYkaW37tSYnAYBHV2JiogoWLGh7/3U/KCzgtG4Mf/L19X1kCgtXa25JemT21yEe/3ealr7K8Vw9XSXxugcAZ+DI8HMu3gYAAADgMAoLAAAAAA5jKBTgRIL9rGZHyDl8Qs1OgCySL3c+syMAALKAxTAMw+wQwK0kJibKz89PCQkJjL0GAAAPXFpamq5evWp2jAcmV65ct72VbFa87+KMBQAAAB5phmEoLi5OFy5cMDvKA+Xi4qLw8HDlypXrgayfwgIAAACPtBtFRb58+ZQ7d+6H8oN5b3zwcGxsrAoVKvRA9pHCAnAiJUYtkSQdeqeZyUlygLeCrn8dfdrcHHBYpW8qSZK2d95uchIAj6K0tDRbUREQEGB2nAcqKChIf//9t65duyZ3d/csXz93hQIAAMAj68Y1Fblz5zY5yYN3YwhUWlraA1k/hQUAAAAeeQ/j8KebPeh9pLAAAAAA4DAKCwAAACAH6tatmywWS4bHkSNHTMnDxdsAAADATYqMWJSt2zs2scV9LRcZGamZM2faTQsKCsqKSJlGYQEAAADkUFarVSEhIWbHkERhATiVH16qaXaEnKPXCrMTIIvMbj7b7AgAgCxAYQGnV31Odbl6upodA8AD9O1T32rf2X1mxwCyVJmAMmZHwCNg4cKF8vb2tj1v1qyZ5s2bZ0oWCgsAAAAgh6pfv76mT59ue+7l5WVaFgoLwIlc/vN5SZJngf+YnMT5TT11/RO3Bwebc4Eastb7W9/XkCpDzI4BADmOl5eXihcvbnYMSRQWgFO5llzK7Ag5Rp1Ll82OgCy0I36H2REAAA7icywAAAAAOIzCAgAAAIDDGAoFAAAA3OR+P7AuO0VFRZkdwQ5nLAAAAAA4jMICAAAAgMMYCgU4kVwBq8yOkGN87u9ndgRkodbFW5sdAQDgIAoLwIlYgygs7tVneSgsHibPlnjW7AgAAAcxFAoAAACAwzhjAae38fif8rVasm+DYxOyb1s3mbvlpCSp3RMFTcuQY2z/5vrXSp3NzQGH/Xj4Rx06d0itIxgOBQA5GWcsHnLR0dGyWCy6cOHCbdtERUXJ39//jusZO3asHn/88SzNhoxeX7BXry/Ya3aMnGHRK9cfyPHe2viW3tr4ltkxAAAOorB4yNWsWVOxsbHy82M8OgAAAB4chkI95HLlyqWQkBCzYwAAAOAhxxmLHKZevXoaMGCABg0apDx58ig4OFhffPGFLl68qO7du8vHx0fFixfXkiVLJN16KFRUVJQKFSqk3Llzq3Xr1jp79myG7UycOFHBwcHy8fFRz549lZKSYjd/y5Ytaty4sQIDA+Xn56e6detq+/bttvk9evTQU089ZbfM1atXlS9fPn355ZdZ2CMAAABwBhQWOdCsWbMUGBiozZs3a8CAAerbt6/atm2rmjVravv27WrSpIk6d+6sS5cuZVh206ZN6tmzp/r376+dO3eqfv36evvtt+3azJ07V2PHjtX48eO1detWhYaGatq0aXZtkpKS1LVrV61bt04bN25URESEmjdvrqSkJElSr169tHTpUsXGxtqWWbhwoS5duqTnnnvulvuVmpqqxMREuwcAAABurVu3brJYLLZHQECAIiMjtXv3blPyWAzDMEzZMu5LvXr1lJaWprVr10qS0tLS5OfnpzZt2ujrr7+WJMXFxSk0NFQbNmxQSkqK6tevr/Pnz8vf318dO3ZUQkKCFi1aZFtn+/bttXTpUttZjZo1a6pixYr69NNPbW2qV6+ulJQU7dy585a50tPT5e/vrzlz5tjOVJQpU0Zdu3bV8OHDJUlPP/20AgICNHPmzFuuY+zYsRo3blyG6QkjfB6Zu0KVGHX9TNOhd5qZliHHeCvo+tfRp83NAYdV+qaSJGl75+13aQkAWS8lJUVHjx5VeHi4PDw8/v+Msdl8fep9vP/o1q2bTp06ZXtvFRcXp9dff127d+/WiRMnMrS/7b5KSkxMlJ+fnxISEuTr63tfu8AZixyofPnytu9dXV0VEBCgcuXK2aYFBwdLkuLj4zMsu3//flWrVs1uWo0aNTLd5tSpU+rdu7ciIiLk5+cnX19fJScn272Ie/XqZXuhnzp1SkuWLFGPHj1uu18jR45UQkKC7XHy5Mnbtn1YlQ7zVemw+/thfuSElLv+QI5XKm8plcpbyuwYAJAjWa1WhYSEKCQkRI8//rhGjBihkydP6vTp7P/HGxdv50Du7u52zy0Wi900i+X6f/fT09MfWIauXbvq7Nmz+vDDD1W4cGFZrVbVqFFDV65csbXp0qWLRowYoQ0bNui3335TeHi4ateufdt1Wq1WWa3WB5Y5J/ipXy2zI+QcvfmU8ofFnBZzzI4AAA+F5ORk/ec//1Hx4sUVEBCQ7dunsHjElC5dWps2bbKbtnHjxlu26dKly23brF+/XtOmTVPz5s0lSSdPntSZM2fs2gQEBKhVq1aaOXOmNmzYoO7du2flrgAAADzyFi5cKG9vb0nSxYsXFRoaqoULF8rFJfsHJlFYPGIGDhyoWrVq6b333tMzzzyjZcuWaenSpXZtXn75ZXXr1k1VqlRRrVq1NHv2bO3bt09Fixa1tYmIiNA333yjKlWqKDExUcOGDZOnp2eG7fXq1UtPPfWU0tLS1LVr1we+fznd2eRUSVKA96N95uaeXPy/QtYr0NwccNi5lHOSpLweeU1OAgA5T/369TV9+nRJ0vnz5zVt2jQ1a9ZMmzdvVuHChbM1C9dYPGKqV6+uL774Qh9++KEqVKigX375Ra+//rpdm+eee06jR4/W8OHDVblyZR0/flx9+/a1a/Pll1/q/PnzqlSpkjp37qyBAwcqX758GbbXqFEjhYaGqmnTpgoLC3ug+/YwqDFhlWpMYIjPPZlS+voDOV6jeY3UaF4js2MAQI7k5eWl4sWLq3jx4nriiSf073//WxcvXtQXX3yR7Vk4Y5HDREdHZ5h27NixDNP+ebOvm2/81aNHjwwXUQ8ZMsTu+WuvvabXXnvNbtqkSZNs31esWFFbtmyxm/+vf/0rQ46LFy/q/Pnz6tmzZ4Z596psypdyMXLf9/LHJra472UBAAByEovFIhcXF12+fDnbt01hgQciPT1dZ86c0fvvvy9/f389/fTTZkcCAAB46KSmpiouLk7S9aFQn3zyiZKTk9WyZctsz0JhgQfixIkTCg8PV4ECBRQVFSU3N15qAAAAWW3p0qUKDQ2VJPn4+KhUqVKaN2+e6tWrl+1ZeLeHB6JIkSIZhmABAADkGCZ+YO69ioqKUlRUlNkxbLh4GwAAAIDDKCwAAAAAOIyhUIATWTO8ntkRco6BO81OgCyyuM1isyMAALIAhQXgREL9Mn7IIG7DL7/ZCZBFQrxCzI4AAMgCDIUCAAAA4DAKC8CJtJuxQe1mbDA7Rs7wVbPrD+R4XZd0VdclXc2OAQBwEEOhACey8+QFsyPkHH9tNTsBssieM3vMjgAAyAKcsQAAAADgMM5YwOntHddUvr6+ZscAAADAHXDGAgAAAIDDKCwAAACAHKhbt26yWCwZHpGRkabkYSgUAAAAcJNys8pl6/b2dL2/G1lERkZq5syZdtOsVmtWRMo0CgvAiYxu+ZjZEXKOyAlmJ0AWefWJV82OAAA5ltVqVUiIc3zQKIUF4EQ6Vy9sdoSc44leZidAFnmu1HNmRwAAZAGusQAAAAByqIULF8rb29vuMX78eFOycMYCcCIz1sRIkvrULWZykhxg3QfXvz45yMwUyAJf7f1KktSjbA+TkwBAzlO/fn1Nnz7dblrevHlNyUJhATiRKb8ckkRhcU9Wv3P9K4VFjvfJjk8kUVgAwP3w8vJS8eLFzY4hiaFQAAAAALIAZywAAACAHCo1NVVxcXF209zc3BQYGJjtWSgsAAAAgBxq6dKlCg0NtZtWsmRJHThwINuzUFgAAAAAN7nfD6zLTlFRUYqKijI7hg3XWAAAAABwGGcsACfyZET2j4fMsYrWNzsBskiNsBpmRwAAZAEKC8CJfNXtCbMj5Byd5pqdAFnk04afmh0BAJAFGAoFAAAAwGEUFoATOXwqSYdPJZkdI2eIP3D9gRwv5kKMYi7EmB0DAOAghkIBTqTFR+skSYfeaWZykhzgs9rXv44+bW4OOKzt/9pKkrZ33m5yEgCAIzhjAQAAAMBhFBYAAAAAHEZhAQAAAMBhFBYAAAAAHMbF2wAAAMBN9vyZkK3bK1fAL9PLdOvWTbNmzcow/fDhwypevHhWxMoUCgsAAAAgh4qMjNTMmTPtpgUFBZmShcICcCJ7xjUxO0LOMfJPsxMgi2zsuNHsCACQY1mtVoWEhJgdQxKFBeBUrG6uZkfIOdysZidAFsnlmsvsCACALMDF2wAAAEAOtXDhQnl7e9sebdu2NS0LZywAJ9JoyhpJ0opX6pqcJAf4pOr1r/03m5sDDntmwTOSpJ9a/WRyEgDIeerXr6/p06fbnnt5eZmWhcICcCInzl4yO0LOcf6o2QmQRU4mnTQ7AgDkWF5eXqbcAepWGAoFAAAAwGEUFgAAAAAcRmEBAAAAwGFcYwEAAADc5H4+CTu7RUVFmR3BDmcsAAAAADiMMxZwetXnVJer56PxwXEuIWUlSeVmDTc5ifNrFOArSVoxq5zJSZAVBlcerH1n95kdA0A2KhNQxuwIyGIUFoATcffda3aEHGOFV26zIyALVQutZnYEAICDGAoFAAAAwGEUFoATSTnVTCmnmpkdI0d45dx5vXLuvNkxkEX+8/t/zI4AAHAQhQXgRK6er6Wr52uZHSNH6JSQpE4JSWbHQBZZemyp2REAAA6isAAAAADgMAoLAAAAAA6jsAAAAADgMAoLAAAAAA7jcywAAACAm/29I3u3F1Yx04t069ZNs2bNsj3PmzevnnjiCU2ePFnly5fPynT3hDMWgBNx890lN99dZsfIEZZ4e2mJt5fZMZBFaobVNDsCAORIkZGRio2NVWxsrFauXCk3Nzc99dRTpmThjAXgRDzD5pkdIcd4PSjA7AjIQi89/pLZEQAgR7JarQoJCZEkhYSEaMSIEapdu7ZOnz6toKCgbM1CYfEIioqK0qBBg3ThwoVs3e7YsWO1YMEC7dy5M1PLbTz+p3ytlgcTKicam2B2AgAA4ISSk5P1n//8R8WLF1dAQPb/A47CAnAiG9NLSZKquxwwOUkOcGzd9a9FnjQ3Bxy2JW6LJOmJkCdMTgIAOc/ChQvl7e0tSbp48aJCQ0O1cOFCubhk/xUPFBaAE+lyZaQk6ZBHV5OT5ADftL7+dfRpc3PAYS8uf1GStL3zdpOTAEDOU79+fU2fPl2SdP78eU2bNk3NmjXT5s2bVbhw4WzNwsXbTmDhwoXy9/dXWlqaJGnnzp2yWCwaMWKErU2vXr30/PPPS5LWrVun2rVry9PTUwULFtTAgQN18eJFW9vU1FQNHTpU+fPnl5eXl6pVq6bo6Ojbbv/06dOqUqWKWrdurdTUVKWnp2vChAkKDw+Xp6enKlSooO+//97WPjo6WhaLRStXrlSVKlWUO3du1axZUwcPHrRb78SJExUcHCwfHx/17NlTKSkpWdFdAAAA+D9eXl4qXry4ihcvrieeeEL//ve/dfHiRX3xxRfZnoXCwgnUrl1bSUlJ2rHj+m3N1qxZo8DAQLtiYM2aNapXr55iYmIUGRmpZ599Vrt379Z3332ndevWqX///ra2/fv314YNG/Ttt99q9+7datu2rSIjI3X48OEM2z558qRq166tsmXL6vvvv5fVatWECRP09ddfa8aMGdq3b58GDx6s559/XmvWrLFbdtSoUXr//fe1detWubm5qUePHrZ5c+fO1dixYzV+/Hht3bpVoaGhmjZtWhb3HAAAAP7JYrHIxcVFly9fzvZtMxTKCfj5+enxxx9XdHS0qlSpoujoaA0ePFjjxo1TcnKyEhISdOTIEdWtW1cTJkxQp06dNGjQIElSRESEPvroI9WtW1fTp09XfHy8Zs6cqRMnTigsLEySNHToUC1dulQzZ87U+PHjbds9ePCgGjdurNatW+uDDz6QxWJRamqqxo8frxUrVqhGjRqSpKJFi2rdunX67LPPVLduXdvy77zzju35iBEj1KJFC6WkpMjDw0MffPCBevbsqZ49e0qS3n77ba1YseKOZy1SU1OVmppqe56YmJg1HQwAAPCQSk1NVVxcnKTrQ6E++eQTJScnq2XLltmehcLCSdStW1fR0dEaMmSI1q5dqwkTJmju3Llat26dzp07p7CwMEVERGjXrl3avXu3Zs+ebVvWMAylp6fr6NGj+uOPP5SWlqYSJUrYrT81NdXu7gCXL19W7dq11bFjR33wwQe26UeOHNGlS5fUuHFju+WvXLmiihXtP7jlnx+8EhoaKkmKj49XoUKFtH//fvXp08eufY0aNbR69erb9sGECRM0bty4u/QUAAAAbli6dKntfZiPj49KlSqlefPmqV69etmehcLCSdSrV09fffWVdu3aJXd3d5UqVUr16tVTdHS0zp8/bzszkJycrBdffFEDBw7MsI5ChQpp9+7dcnV11bZt2+Tq6mo3/8YdA6Tr9zxu1KiRFi5cqGHDhil//vy29UvSokWLbNP+ucw/ubu72763WK7fDjY9Pf1+u0AjR47UK6+8YnuemJioggUL3vf6AAAA7tt9fBJ2douKilJUVJTZMWwoLJzEjesspk6daisi6tWrp4kTJ+r8+fMaMmSIJKlSpUr6/fffVbx48Vuup2LFikpLS1N8fLxq16592+25uLjom2++UceOHVW/fn1FR0crLCxMjz32mKxWq06cOGE37CmzSpcurU2bNqlLly62aRs3brzjMlarNUPx8qjxEhe437Nc3ndvgxzBy51PUAeAhwGFhZPIkyePypcvr9mzZ+uTTz6RJNWpU0ft2rXT1atXbW/yX331VVWvXl39+/dXr1695OXlpd9//13Lly/XJ598ohIlSqhTp07q0qWL3n//fVWsWFGnT5/WypUrVb58ebVo0cK2TVdXV82ePVsdOnRQgwYNFB0drZCQEA0dOlSDBw9Wenq6nnzySSUkJGj9+vXy9fVV1673dhvUl19+Wd26dVOV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4i7GKe5inNkxAAAOylRhUa9ePQ0YMECDBg1Snjx5FBwcrC+++EIXL15U9+7d5ePjo+LFi2vJkiV2y61Zs0ZVq1aV1WpVaGioRowYoWvXrtmtt3///ho0aJACAwPVtGlTRUdHy2KxaOXKlapSpYpy586tmjVr6uDBg7blxo4dq8cff9z2vFu3bmrVqpXee+89hYaGKiAgQP369dPVq1dtbWJjY9WiRQt5enoqPDxcc+bMUZEiRfTBBx/cdr+3bNmixo0bKzAwUH5+fqpbt662b99u18Zisejf//63Wrdurdy5cysiIkI///yzXZvFixerRIkS8vT0VP369XXs2LG79vmFCxfUq1cvBQUFydfXVw0aNNCuXbskSYcOHZLFYtGBAwfslpk6daqKFStme7537141a9ZM3t7eCg4OVufOnXXmzBm7/h84cKCGDx+uvHnzKiQkRGPHjs2wfwsWLJAkHTt2TBaLRT/88IPq16+v3Llzq0KFCtqwYYPdMl988YUKFiyo3Llzq3Xr1poyZYrTD/kyW93UqaqbOtXsGDnHt53MToAs0PyH5mr+Q3OzYwAAHJTpMxazZs1SYGCgNm/erAEDBqhv375q27atatasqe3bt6tJkybq3LmzLl26JEn666+/1Lx5cz3xxBPatWuXpk+fri+//FJvv/12hvXmypVL69ev14wZM2zTR40apffff19bt26Vm5ubevToccd8q1evVkxMjFavXq1Zs2YpKipKUVFRtvldunTR33//rejoaM2fP1+ff/654uPv/F/PpKQkde3aVevWrdPGjRsVERGh5s2bKykpya7duHHj1K5dO+3evVvNmzdXp06ddO7cOUnSyZMn1aZNG7Vs2VI7d+5Ur169NGLEiLv2d9u2bRUfH68lS5Zo27ZtqlSpkho2bKhz586pRIkSqlKlimbPnm23zOzZs9WxY0dJ1wuTBg0aqGLFitq6dauWLl2qU6dOqV27dnbLzJo1S15eXtq0aZMmT56sN998U8uXL79jtlGjRmno0KHauXOnSpQooQ4dOtgKxvXr16tPnz56+eWXtXPnTjVu3FjvvPPOHdeXmpqqxMREuwcAAAByBothGMa9Nq5Xr57S0tK0du1aSVJaWpr8/PzUpk0bff3115KkuLg4hYaGasOGDapevbpGjRql+fPna//+/bJYrl+AO23aNL366qtK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\n"
},
"metadata": {}
}
],
"source": [
"# import the scipy.stats.norm object needed to use the quantile function of the standard normal distribution\n",
"from scipy.stats import norm\n",
"\n",
"# define the mean and standard deviation of the demand for each class\n",
"mu = demand.mean()\n",
"sigma = {\"F\": 4, \"B\": 16, \"E\": 20}\n",
"display(pd.DataFrame({\"mu\": mu, \"sigma\": sigma}))\n",
"\n",
"\n",
"# create a new model with chance constraints that takes as input also\n",
"# the target quality of service (QoS) levels for classes F and B\n",
"def airline_cc(demand, QoSF=0.98, QoSFB=0.95):\n",
" # create two-stage stochastic model as before\n",
" m = airline_stochastic(demand)\n",
"\n",
" # add equivalent counterparts of the two chance constraints to the first stage problem\n",
" # the two coefficients related the inverse CDF of the standard normal are computed using the norm.ppf function\n",
"\n",
" first_class = \"s.t. first_class: seats['F'] - {} >= {};\".format(\n",
" mu[\"F\"], norm.ppf(QoSF) * sigma[\"F\"]\n",
" )\n",
" m.eval(first_class)\n",
" business_class = \"s.t. business_class: seats['F'] + seats['B'] - {} >= {};\".format(\n",
" mu[\"F\"] + mu[\"B\"], norm.ppf(QoSFB) * np.sqrt(sigma[\"F\"] ** 2 + sigma[\"B\"] ** 2)\n",
" )\n",
" m.eval(business_class)\n",
" print(m.con[\"first_class\"])\n",
" print(m.con[\"business_class\"])\n",
"\n",
" return m\n",
"\n",
"\n",
"# create and solve model\n",
"model_cc = airline_cc(demand)\n",
"seats_cc = airline_solve(model_cc)\n",
"seat_report(seats_cc, demand)"
]
},
{
"cell_type": "markdown",
"id": "801f475e",
"metadata": {
"tags": [],
"id": "801f475e"
},
"source": [
"## Model 4. Solving the case of continuous demand distributions using the SAA method\n",
"\n",
"Let us now move past the simplifying assumption that there are only three equally likely scenarios and consider the case where the demand is described by a random vector $(z_F, z_B, z_E)$, where $z_c$ is the demand for seats of class $c\\in C$. The demand for class $c$ is assumed to be independent and normally distributed with mean $\\mu_c$ and variance $\\sigma_c^2$ as reported in the following table\n",
"\n",
"
\n",
"\n",
"Note that we model the demand for each class using a continuous random variable, which is a simplification of the real world, where the ticket demand is always a discrete nonnegative number. Therefore, we round down all the obtained random numbers.\n",
"\n",
"However, now that the number of scenarios is not finite anymore, we cannot solve the problem exactly. Instead, we can use the SAA method to approximate the expected value appearing in the objective function. The first step of the SAA is to generate a collection of $N$ scenarios $(z_{F,s}, z_{B,s}, z_{E,s})$ for $s=1,\\ldots,N$. We can do this by sampling from the normal distributions with the given means and variances.\n",
"\n",
"For sake of generality, we create a script to generate scenarios in which the three demands have a general correlation structure captured by a correlation matrix $\\bm{\\rho}$."
]
},
{
"cell_type": "markdown",
"id": "10a9b698-59b8-42a9-ae7e-9c37a32d8a0c",
"metadata": {
"id": "10a9b698-59b8-42a9-ae7e-9c37a32d8a0c"
},
"source": [
"### Scenario generation (uncorrelated case)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "d537f6ac-407c-4d73-8f52-5f4ac31b8ec8",
"metadata": {
"ExecuteTime": {
"end_time": "2022-09-30T21:49:08.708126Z",
"start_time": "2022-09-30T21:49:07.626836Z"
},
"id": "d537f6ac-407c-4d73-8f52-5f4ac31b8ec8",
"outputId": "ca419e5f-2b0c-49fa-d0db-fec3c7f6c5ae",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 596
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\n",
"Model Covariance\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
" F B E\n",
"F 16 0 0\n",
"B 0 256 0\n",
"E 0 0 400"
],
"text/html": [
"\n",
"
"
],
"image/png": "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e/vtt1VRUaH77rtPkmS1WhUcHNysICYkJMhqtdrbfH9Aqml/077W5Ofna+bMmc22b9q0qdVfGM5He0mrV3/itONdiMLCQk93wWXIdv7atWsns9ms6upq1dXVOew7VVPj0nNLUk3tf8/RNDjc5mPU1MgwjGbPt9lsqq+vV1VVlf024erq6hbPU11dLUkaNGiQVqxYoQ0bNqh///4O+x9//HHdeuutzZ5bV1dnn6fj1KlTOn78uKTTf3GfNGmSbr31Vq1bt06FhYWaMWOGlixZouHDh7eax2QyKSMjQxkZGZoyZYpuuukmPf3001q0aJHq6+tls9kcMjT1/fjx46qqqlJ9fb3q6upUVVWlU6dOSTr9vf3+X8YNw1BNTU2L34u6ujqdOnVKW7dubTb/SNOtJgDgj/hc4f0YlALgda666iqFhYVpw4YN+vWvf91qu3Hjxum6667Tz372M73//vu66aabJEm9evVSSUmJrrzyylafazKZHOY9anL11Vfr6quv1qRJk3TXXXepoKDgB4vH9wUHB+uKK66wr5LRtWtX/e1vf5NhGPa/amzbtk2RkZHq1KlTs+enpKSovr5excXF9stsS0pKVFFRcU7n90ZLlizRsGHD1LFjR5efKy8vT7m5ufbHVVVV6ty5swYMGKC4uDinnWfFnm90Z5/mr5872Ww2FRYWavDgwa3OT+CryHbhampq9PXXXysiIqLZL8xhoRUuO69hnB6QCg0JVdMfcqOios7rWKGhoQoICGj2fJPJpHbt2ikqKko9e/ZUWFiYdu7cqW7dujU7RtPqSw8//LB69eqlu+++W++9955DrfjXv/6lHj16tNoPk8mk4OBgRUZG6vjx44qMjFRAQIB69eqlXr166fHHH9fdd9+tP//5z7r77rvPOd+VV16puro6RUVFqVu3bnrrrbfsx5akTz75RJGRkeratasCAwPVrl07BQcH23PX19fr888/d6gVlZWVCg0NbfF7XlNTo7CwMPXv37/Zz8TRo0fPud8A4Gv4XOH9nyvaPCj17bffasqUKVqzZo1OnjypK6+8UgUFBerTp4+k03+lmT59ul599VVVVFSoX79+WrRokcM9lMeOHdOECRP03nvvKTAwUFlZWXr++ed9bulGAK4RGhqqKVOm6LHHHlNwcLD69eunf//73zpw4IDGjBnj0HbChAlqaGjQ8OHDtWbNGt14442aNm2ahg8frqSkJP385z9XYGCgPv74Y+3fv19PPfWUpNMrZWzYsEEWi0V1dXUymUyaMmWKfv7znys5OVnffPONdu/eraysrBb7uGrVKi1fvlwjR47U1VdfLcMw9N5772n16tUqKCiQJD300ENasGCBJkyYoPHjx6ukpETTp09Xbm5us/u+Jemaa67R0KFD9T//8z9atGiR2rVrp4kTJ57zX3i8zb/+9S+tX79eb731ln2b2WxWXV2dKioqHK6WKisrk9lstrfZtWuXw7GaVudratOSkJAQhYSENNtuMpmcOwAQGOQ1gyVOz+ZFyHb+GhoaFBAQoMDAwGbvNQEBrlx4ufH/neO/52npve5cND2vef8D7NnCw8M1ZcoUPf744woNDW1WK75/jIcffliNjY362c9+1qxWdOnS5QdrxaZNm9SvX79Wa8WePXuUlZXVYtbWasWaNWtUUFCgwMBA5eTk6Pnnn9cjjzxirxUzZsxQbm6u2rVr55A9MDBQXbt21dChQzVu3LhmtaKpTUvfz4CAgBZ/9vz1/zMAkPhc4QufK9o0KPXdd9+pX79+GjBggNasWaMOHTro888/1yWXXGJvM2/ePL3wwgt6/fXXlZycrCeffFIZGRk6ePCg/S8zo0aN0pEjR1RYWCibzab7779fY8eO1bJly5ybDoDPevLJJ9WuXTtNmzZNhw8fVmJioh588MEW206cOFGNjY265ZZbtHbtWmVkZGjVqlWaNWuWnnnmGZlMJqWkpDj8deR3v/udcnNz9eqrryoxMVGfffaZjh49qtGjR6usrEyXXnqpRowY0eLtYJKUmpqq8PBwPfroo/r6668VEhKiq666Sn/4wx907733SpJ+9KMfafXq1Zo8ebKuv/56xcbGasyYMZo6dWqruQsKCvTrX/9aN910kxISEvTUU0/pySefvIDvpOcUFBQoPj5emZmZ9m29e/eWyWTShg0b7IW5pKREpaWlslgskk7PpTJnzhyVl5crPj5e0unbnaKiopSamur+IAC8FrXC92sFALgatcLLa4XRBlOmTDFuvPHGVvc3NjYaZrPZ+O1vf2vfVlFRYYSEhBh/+tOfDMMwjIMHDxqSjN27d9vbrFmzxggICDC+/fbbc+pHZWWlIcn4z3/+05bu+4S6ujrj7bffNurq6jzdFacj24U7deqUcfDgQePUqVMuPc+ZGhoajO+++85oaGhw63ndwdez/dDPxH/+8x9DklFZWen2fjU0NBhJSUnGlClTmu178MEHjaSkJGPjxo3Gnj17DIvFYlgsFvv++vp647rrrjOGDBli7N2711i7dq3RoUMHIy8vr019cFWteHPHv5x6vPPB+6lvolb4Ll/P5q21whvwucI3+WO2pt8vqBW+y9ezeapWtOma6nfffVd9+vTRnXfeqfj4ePXs2VOvvvqqff+hQ4dktVodVlWKjo5W3759VVRUJEkqKipSTEyM/XY/SUpPT1dgYKB27tx53oNrAADvsX79epWWlupXv/pVs33z58/X8OHDlZWVpf79+8tsNjvc4hcUFKRVq1YpKChIFotF99xzj0aPHq1Zs2a5MwIAAAAAF2vT7Xv//Oc/tWjRIuXm5uqJJ57Q7t279fDDDys4OFjZ2dn2VZFaWjXp+6sqNd2OYe9Eu3aKjY1tdVUlty3z7QVYCts3ecMy365kfG8pbHee1x18PZu3LvM9ZMgQ+/f2TKGhoVq4cKEWLlzY6vO7dOmi1atXu6p7AAAAALxAmwalGhsb1adPH82dO1eS1LNnT+3fv1+LFy9Wdna2SzoouW+Zb2/CUti+yZPLfLtD05LY/shXs7HMNwAAAABf1aZBqcTExGaTzDYtTSj9d1WksrIyJSYm2tuUlZXZl9s1m80qLy93OEZ9fb2OHTvW6qpK7lrm2xuwFLZv8oZlvl3JMAyHpbD9ia9nY5lvAAAAAL6qTYNS/fr1U0lJicO2zz77TF26dJEkJScny2w2a8OGDfZBqKqqKu3cuVPjxo2TdHpVpYqKChUXF6t3796SpI0bN6qxsVF9+/Zt8bxuW+bbi5DNN3lymW9XarqtrbWlpn2Zr2djmW8AAAAAvqpNg1KTJk3ST37yE82dO1e/+MUvtGvXLr3yyit65ZVXJJ3+UDdx4kQ99dRTuuqqq5ScnKwnn3xSHTt21O233y7p9JVVQ4cO1QMPPKDFixfLZrNp/PjxGjlypDp27Oj0gAAAAAAAAPA+bRqUuuGGG7Ry5Url5eVp1qxZSk5O1oIFCzRq1Ch7m8cee0wnTpzQ2LFjVVFRoRtvvFFr1651uK3kzTff1Pjx4zVo0CAFBgYqKytLL7zwgvNSAQAAAAAAwKu1aVBKkoYPH67hw4e3uj8gIECzZs36waW7Y2NjtWzZsraeGgAAAAAAAH7C9yZQAQAvct9999lvTwYAoCXUCgDA2VystYJBKQBucd999ykgIMA+KXdCQoIGDx6s1157zT7ZOADg4katAACcDbXCv7T59j0AXmpPgeuObRgKrqmRQkOlgIDT2/rc3+bDDB06VAUFBWpoaFBZWZnWrl2rRx55RH/961/17rvvql073pIAwKWoFQCAs6FWwI24UgqA24SEhMhsNutHP/qRevXqpSeeeELvvPOO1qxZo6VLl0qSKioq9Otf/1odOnRQVFSUBg4cqI8//th+jBkzZqhHjx567bXXlJSUpIiICD300ENqaGjQvHnzZDabFR8frzlz5jic+7nnnlO3bt3Uvn17de7cWQ899JCqq6vt+5cuXaqYmBh98MEH6tq1qyIiIjR06FAdOXLE3qahoUG5ubmKiYlRXFycHnvsMRmG4dpvGgBcZKgVAICzoVb4DwalAHjUwIEDdf311+utt96SJN15550qLy/XmjVrVFxcrF69emnQoEE6duyY/Tlffvml1qxZo7Vr1+pPf/qTlixZoszMTH3zzTfasmWLnnnmGU2dOlU7d+60PycwMFAvvPCCDhw4oNdff10bN27UY4895tCXkydP6tlnn9X//u//auvWrSotLdVvfvMb+/7f/e53Wrp0qV577TV9+OGHOnbsmFauXOni7xAAgFoBADgbaoVv4po2AB6XkpKiTz75RB9++KF27dql8vJyhYSESJKeffZZvf322/rrX/+qsWPHSpIaGxv12muvKTIyUqmpqRowYIBKSkq0evVqBQYG6pprrtEzzzyjTZs2qW/fvpKkiRMn2s932WWX6amnntKDDz6ol156yb7dZrNp8eLFuuKKKyRJ48ePd1hJdMGCBcrLy9OIESMkSYsXL9YHH3zg0u8NAOA0agUA4GyoFb6HQSkAHmcYhgICAvTxxx+rurpacXFxDvtPnTqlL7/80v74sssuU2RkpP1xQkKCgoKCFBgY6LCtvLzc/nj9+vXKz8/XP/7xD1VVVam+vl41NTU6efKkvU14eLi9cEhSYmKi/RiVlZU6cuSIvRhJUrt27dSnT5+L9lJbAHAnagUA4GyoFb6HQSkAHvfpp58qOTlZ1dXVSkxM1ObNm5u1iYmJsX9tMpkc9jWtvHHmtqbVN7766isNHz5c48aN05w5cxQbG6sPP/xQY8aMUV1d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\n"
},
"metadata": {}
}
],
"source": [
"model_ssa = airline_stochastic(demand_saa)\n",
"seats_saa = airline_solve(model_ssa)\n",
"seat_report_saa(seats_saa, demand_saa)"
]
},
{
"cell_type": "markdown",
"id": "d20a5abd-2b54-436d-a171-b8f1fa3048dd",
"metadata": {
"id": "d20a5abd-2b54-436d-a171-b8f1fa3048dd"
},
"source": [
"## Model 6. Tackling chance constraints using SAA in the case of correlated demand\n",
"\n",
"The linear counterparts of the chance constraints used above in Model 3 were derived under the assumption of independent normal distributions of demand for first-class and business travel. That assumption no longer holds for the case where demand scenarios are sampled from correlated distributions.\n",
"\n",
"This final model replaces the chance constraints by approximating them using two linear constraints that explicitly track unsatisfied demand. In doing so, we introduce two new sets of integer variables $y_s$ and $w_s$ and a big-M constant and approximate the true multivariate distribution with the empirical one obtained from the sample.\n",
"\n",
"The first stage remains unchanged and so does the objective value of the second stage. The adjusted second-stage constraints are:\n",
"\n",
"$$\n",
"\\begin{align*}\n",
" t_c & \\leq s_c & \\forall c\\in C \\\\\n",
" t_c & \\leq z_{c, s} & \\forall (c, s) \\in C \\times S \\\\\n",
" s_F + M y_s & \\geq z_{F, s} & \\forall s \\in S\\\\\n",
" s_F + s_B + M w_s & \\geq z_{F, s} + z_{B,s} & \\forall s \\in S \\\\\n",
" \\frac{1}{N} \\sum_{s\\in S} y_s & \\leq 1 - 0.98 \\\\\n",
" \\frac{1}{N} \\sum_{s\\in S} z_s & \\leq 1 - 0.95\n",
"\\end{align*}\n",
"$$\n",
"\n",
"where $y_s$ and $w_s$ are binary variables indicating those scenarios which do not satisfy the requirements of the airline's loyalty programs for first-class and business-class passengers.\n",
"\n",
"The following cell implements this new model. Note that the running time for the cell can be up to a few minutes for a large number of scenarios."
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "aa07016d",
"metadata": {
"id": "aa07016d",
"outputId": "9fcee4c4-028b-48e8-da76-3ccd015141f9",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Overwriting airline_final.mod\n"
]
}
],
"source": [
"%%writefile airline_final.mod\n",
"\n",
"param capacity;\n",
"\n",
"set CLASSES;\n",
"set SCENARIOS;\n",
"\n",
"param nSCENARIOS := card(SCENARIOS);\n",
"param bigM;\n",
"\n",
"param demand{CLASSES, SCENARIOS};\n",
"param seat_factor{CLASSES};\n",
"param revenue_factor{CLASSES};\n",
"\n",
"param first_class_id symbolic;\n",
"param business_class_id symbolic;\n",
"\n",
"param first_class_demand_cover_prop;\n",
"param business_class_demand_cover_prop;\n",
"\n",
"# first stage variables and constraints\n",
"var seats{CLASSES} integer >= 0;\n",
"\n",
"s.t. plane_seats: sum{c in CLASSES}(seats[c] * seat_factor[c]) <= capacity;\n",
"\n",
"# second stage variable and constraints\n",
"var tickets{CLASSES, SCENARIOS} integer >= 0;\n",
"var first_class {SCENARIOS} binary;\n",
"var business_class {SCENARIOS} binary;\n",
"\n",
"s.t. demand_limits {c in CLASSES, s in SCENARIOS}: tickets[c, s] <= demand[c, s];\n",
"s.t. seat_limits {c in CLASSES, s in SCENARIOS}: tickets[c, s] <= seats[c];\n",
"\n",
"s.t. first_class_loyality {s in SCENARIOS}:\n",
" seats[first_class_id] + bigM * first_class[s] >= demand[first_class_id, s];\n",
"s.t. first_class_loyality_rate:\n",
" sum{s in SCENARIOS} first_class[s] <= (1 - first_class_demand_cover_prop) * nSCENARIOS;\n",
"s.t. business_class_loyality {s in SCENARIOS}:\n",
" seats[first_class_id] + seats[business_class_id] + bigM * business_class[s] >=\n",
" demand[business_class_id, s] + demand[first_class_id, s];\n",
"s.t. business_class_loyality_rate:\n",
" sum{s in SCENARIOS} business_class[s] <= (1 - business_class_demand_cover_prop) * nSCENARIOS;\n",
"\n",
"# objective\n",
"maximize revenue: sum{c in CLASSES, s in SCENARIOS}(tickets[c, s] * revenue_factor[c]);"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "f10836c0-a503-4b06-b450-a9731e1fd55d",
"metadata": {
"id": "f10836c0-a503-4b06-b450-a9731e1fd55d",
"outputId": "0b5134c5-b3ed-4bca-db6d-3afbb22bfddf",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"HiGHS 1.5.3: \b\b\b\b\b\b\b\b\b\b\b\b\bHiGHS 1.5.3: optimal solution; objective 170908\n",
"3591 simplex iterations\n",
"1 branching nodes\n",
" \n",
"\n",
"Seat Allocation\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
" F B E TOTAL\n",
"seat allocation 20.0 54.0 79.0 153.0\n",
"economy equivalent seat allocation 40.0 81.0 79.0 200.0"
],
"text/html": [
"\n",
"