{
"cells": [
{
"cell_type": "markdown",
"id": "261dd435-3512-4a17-ae65-8c852d5ace69",
"metadata": {
"id": "261dd435-3512-4a17-ae65-8c852d5ace69"
},
"source": [
"```{index} disjunctive programming\n",
"```\n",
"```{index} single: application; electric vehicles\n",
"```\n",
"```{index} single: solver; highs\n",
"```\n",
"```{index} single: AMPL; Set\n",
"```\n",
"```{index} pandas dataframe\n",
"```\n",
"# Recharging strategy for an electric vehicle\n",
"\n",
"Whether it is to visit family, take a sightseeing tour or call on business associates, planning a road trip is a familiar and routine task. Here we consider a road trip on a pre-determined route for which need to plan rest and recharging stops. This example demonstrates use of AMPL disjunctions to model the decisions on where to stop."
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "700a2a08-73ab-411e-a5e0-8dafaf2fbc30",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "700a2a08-73ab-411e-a5e0-8dafaf2fbc30",
"outputId": "b998b7fc-8e81-4abd-abcc-bc79d1947a05"
},
"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://ampl.com/colab).\n"
]
}
],
"source": [
"# install dependencies and select solver\n",
"%pip install -q amplpy pandas numpy matplotlib\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": "markdown",
"id": "8d93181c-3ee4-42f5-899b-3aef314bf1ea",
"metadata": {
"id": "8d93181c-3ee4-42f5-899b-3aef314bf1ea"
},
"source": [
"## Problem Statement\n",
"\n",
"Given the current location $x$, battery charge $c$, and planning horizon $D$, the task is to plan a series of recharging and rest stops. Data is provided for the location and the charging rate available at each charging stations. The objective is to drive from location $x$ to location $x + D$ in as little time as possible subject to the following constraints:\n",
"\n",
"* To allow for unforeseen events, the state of charge should never drop below 20% of the maximum capacity.\n",
"* The the maximum charge is $c_{max} = 80$ kWh.\n",
"* For comfort, no more than 4 hours should pass between stops, and that a rest stop should last at least $t^{rest}$.\n",
"* Any stop includes a $t^{lost} = 10$ minutes of \"lost time\".\n",
"\n",
"For this first model we make several simplifying assumptions that can be relaxed as a later time.\n",
"\n",
"* Travel is at a constant speed $v = 100$ km per hour and a constant discharge rate $R = 0.24$ kWh/km\n",
"* The batteries recharge at a constant rate determined by the charging station.\n",
"* Only consider stops at the recharging stations."
]
},
{
"cell_type": "markdown",
"id": "04e6c32e-7deb-4ea7-8df6-a24a5185ad4a",
"metadata": {
"id": "04e6c32e-7deb-4ea7-8df6-a24a5185ad4a"
},
"source": [
"## Modeling\n",
"\n",
"The problem statement identifies four state variables.\n",
"\n",
"* $c$ the current battery charge\n",
"* $r$ the elapsed time since the last rest stop\n",
"* $t$ elapsed time since the start of the trip\n",
"* $x$ the current location\n",
"\n",
"The charging stations are located at positions $d_i$ for $i\\in I$ with capacity $C_i$. The arrival time at charging station $i$ is given by\n",
"\n",
"$$\n",
"\\begin{align*}\n",
"c_i^{arr} & = c_{i-1}^{dep} - R (d_i - d_{i-1}) \\\\\n",
"r_i^{arr} & = r_{i-1}^{dep} + \\frac{d_i - d_{i-1}}{v} \\\\\n",
"t_i^{arr} & = t_{i-1}^{dep} + \\frac{d_i - d_{i-1}}{v} \\\\\n",
"\\end{align*}\n",
"$$\n",
"\n",
"where the script $t_{i-1}^{dep}$ refers to departure from the prior location. At each charging location there is a decision to make of whether to stop, rest, and recharge. If the decision is positive, then\n",
"\n",
"$$\n",
"\\begin{align*}\n",
"c_i^{dep} & \\leq c^{max} \\\\\n",
"r_i^{dep} & = 0 \\\\\n",
"t_i^{dep} & \\geq t_{i}^{arr} + t_{lost} + \\frac{c_i^{dep} - c_i^{arr}}{C_i} \\\\\n",
"t_i^{dep} & \\geq t_{i}^{arr} + t_{rest}\n",
"\\end{align*}\n",
"$$\n",
"\n",
"which account for the battery charge, the lost time and time required for battery charging, and allows for a minimum rest time. On the other hand, if a decision is make to skip the charging and rest opportunity,\n",
"\n",
"$$\n",
"\\begin{align*}\n",
"c_i^{dep} & = c_i^{arr} \\\\\n",
"r_i^{dep} & = r_i^{arr} \\\\\n",
"t_i^{dep} & = t_i^{arr}\n",
"\\end{align*}\n",
"$$\n",
"\n",
"The latter sets of constraints have an exclusive-or relationship. That is, either one or the other of the constraint sets hold, but not both. \n",
"\n",
"$$\n",
"\\begin{align*}\n",
"\\min \\quad & t_{n+1}^{arr} \\\\\n",
"\\text{s.t.} \\quad\n",
" & r_i^{arr} \\leq r^{max} & \\forall \\, i \\in I \\\\\n",
" & c_i^{arr} \\geq c^{min} & \\forall \\,i \\in I \\\\\n",
" & c_i^{arr} = c_{i-1}^{dep} - R (d_i - d_{i-1}) & \\forall \\,i \\in I \\\\\n",
" & r_i^{arr} = r_{i-1}^{dep} + \\frac{d_i - d_{i-1}}{v} & \\forall \\,i \\in I \\\\\n",
" & t_i^{arr} = t_{i-1}^{dep} + \\frac{d_i - d_{i-1}}{v} & \\forall \\,i \\in I \\\\\n",
"& \\begin{bmatrix}\n",
" c_i^{dep} & \\leq & c^{max} \\\\\n",
" r_i^{dep} & = & 0 \\\\\n",
" t_i^{dep} & \\geq & t_{i}^{arr} + t_{lost} + \\frac{c_i^{dep} - c_i^{arr}}{C_i} \\\\\n",
" t_i^{dep} & \\geq & t_{i}^{arr} + t_{rest}\n",
"\\end{bmatrix}\n",
"\\veebar\n",
"\\begin{bmatrix}\n",
" c_i^{dep} = c_i^{arr} \\\\\n",
" r_i^{dep} = r_i^{arr} \\\\\n",
" t_i^{dep} = t_i^{arr}\n",
"\\end{bmatrix} & \\forall \\, i \\in I.\n",
"\\end{align*}\n",
"$$\n"
]
},
{
"cell_type": "markdown",
"id": "82aee043-4d9a-4108-8649-f3bea3dcf210",
"metadata": {
"id": "82aee043-4d9a-4108-8649-f3bea3dcf210"
},
"source": [
"## Charging Station Information"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "fff98145-1b94-42cf-9b0d-ec3593495a8c",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 677
},
"id": "fff98145-1b94-42cf-9b0d-ec3593495a8c",
"outputId": "a6434e4f-6de6-498a-e9b9-571f8e8dfafc"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
" name location kw\n",
"0 S_00 191.6 150\n",
"1 S_01 310.6 100\n",
"2 S_02 516.0 50\n",
"3 S_03 683.6 50\n",
"4 S_04 769.9 50\n",
"5 S_05 869.7 100\n",
"6 S_06 1009.1 150\n",
"7 S_07 1164.7 100\n",
"8 S_08 1230.8 100\n",
"9 S_09 1350.8 250\n",
"10 S_10 1508.4 100\n",
"11 S_11 1639.8 100\n",
"12 S_12 1809.4 150\n",
"13 S_13 1947.3 250\n",
"14 S_14 2145.2 150\n",
"15 S_15 2337.5 100\n",
"16 S_16 2415.6 100\n",
"17 S_17 2590.0 100\n",
"18 S_18 2691.2 100\n",
"19 S_19 2896.2 100"
],
"text/html": [
"\n",
"
\n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" name \n",
" location \n",
" kw \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" S_00 \n",
" 191.6 \n",
" 150 \n",
" \n",
" \n",
" 1 \n",
" S_01 \n",
" 310.6 \n",
" 100 \n",
" \n",
" \n",
" 2 \n",
" S_02 \n",
" 516.0 \n",
" 50 \n",
" \n",
" \n",
" 3 \n",
" S_03 \n",
" 683.6 \n",
" 50 \n",
" \n",
" \n",
" 4 \n",
" S_04 \n",
" 769.9 \n",
" 50 \n",
" \n",
" \n",
" 5 \n",
" S_05 \n",
" 869.7 \n",
" 100 \n",
" \n",
" \n",
" 6 \n",
" S_06 \n",
" 1009.1 \n",
" 150 \n",
" \n",
" \n",
" 7 \n",
" S_07 \n",
" 1164.7 \n",
" 100 \n",
" \n",
" \n",
" 8 \n",
" S_08 \n",
" 1230.8 \n",
" 100 \n",
" \n",
" \n",
" 9 \n",
" S_09 \n",
" 1350.8 \n",
" 250 \n",
" \n",
" \n",
" 10 \n",
" S_10 \n",
" 1508.4 \n",
" 100 \n",
" \n",
" \n",
" 11 \n",
" S_11 \n",
" 1639.8 \n",
" 100 \n",
" \n",
" \n",
" 12 \n",
" S_12 \n",
" 1809.4 \n",
" 150 \n",
" \n",
" \n",
" 13 \n",
" S_13 \n",
" 1947.3 \n",
" 250 \n",
" \n",
" \n",
" 14 \n",
" S_14 \n",
" 2145.2 \n",
" 150 \n",
" \n",
" \n",
" 15 \n",
" S_15 \n",
" 2337.5 \n",
" 100 \n",
" \n",
" \n",
" 16 \n",
" S_16 \n",
" 2415.6 \n",
" 100 \n",
" \n",
" \n",
" 17 \n",
" S_17 \n",
" 2590.0 \n",
" 100 \n",
" \n",
" \n",
" 18 \n",
" S_18 \n",
" 2691.2 \n",
" 100 \n",
" \n",
" \n",
" 19 \n",
" S_19 \n",
" 2896.2 \n",
" 100 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "stations",
"summary": "{\n \"name\": \"stations\",\n \"rows\": 20,\n \"fields\": [\n {\n \"column\": \"name\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 20,\n \"samples\": [\n \"S_00\",\n \"S_17\",\n \"S_15\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"location\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": 191.6,\n \"max\": 2896.2,\n \"num_unique_values\": 20,\n \"samples\": [\n 191.6,\n 2590.0,\n 2337.5\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"kw\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"50\",\n \"max\": \"250\",\n \"num_unique_values\": 4,\n \"samples\": [\n \"100\",\n \"250\",\n \"150\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {}
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"\n",
"# specify number of charging stations\n",
"n_charging_stations = 20\n",
"\n",
"# randomly distribute charging stations along a fixed route\n",
"np.random.seed(1842)\n",
"d = np.round(np.cumsum(np.random.triangular(20, 150, 223, n_charging_stations)), 1)\n",
"\n",
"# randomly assign changing capacities\n",
"c = np.random.choice([50, 100, 150, 250], n_charging_stations, p=[0.2, 0.4, 0.3, 0.1])\n",
"\n",
"# assign names to the charging stations\n",
"s = [f\"S_{i:02d}\" for i in range(n_charging_stations)]\n",
"\n",
"stations = pd.DataFrame([s, d, c]).T\n",
"stations.columns = [\"name\", \"location\", \"kw\"]\n",
"display(stations)"
]
},
{
"cell_type": "markdown",
"id": "8d537988-9151-4339-b48b-1e111469c45a",
"metadata": {
"id": "8d537988-9151-4339-b48b-1e111469c45a"
},
"source": [
"## Route Information"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "3be8a0da-811d-49cf-ab77-b42011fb7fc0",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 333
},
"id": "3be8a0da-811d-49cf-ab77-b42011fb7fc0",
"outputId": "20d3eca9-34a0-44d1-de4a-e3891a4fe3fb"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
""
],
"image/png": "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69ZNw4cPV2Fhof71r3+pbdu2Sk1NveCxK1eu1MiRI/X3v/9dl19+uc6cOaOPPvpInp6eGjhwoL1c586dtXz5ck2dOlX169dX48aN1bVrV91000366KOPFBgYqNatWys5OVnLly9X3bp1Hdq54oor5OnpqVdeeUVZWVmyWq26/vrrFRoaWiymYcOG6d1339WQIUOUkpKiRo0a6fPPP9f333+v6dOnKyAgoEzj87///U+9evXSbbfdptatW6tWrVr64osvdPjwYd1xxx1lqgsAANQsJNsAAECNdtlll2n9+vV67rnnNGfOHGVnZ+uyyy5Tnz59ij2k4GLq1q2rxYsX6/HHH9e4ceNUp04d3X333erVq5fi4uJKVYenp6f++9//6tFHH9Xs2bPl4eGhm2++WRMmTFC3bt3k4+NTnm4W07lzZy1ZskRPPPGEnnvuOUVGRmrSpEnasWNHsaem/lWHDh0UFxenr776SgcPHpSfn586dOigJUuW6Oqrr7aXmzp1qoYNG6Zx48bp9OnTGjx4sLp27ao33nhDnp6emjNnjnJzc9WtWzctX7682BiFh4dr5syZmjx5soYOHarCwkKtWrWqxGSbr6+vVq9erTFjxmj27NnKzs5WixYtNGvWLA0ZMqTM4xMZGalBgwZpxYoV+uijj1SrVi21bNlS8+bNc0goAgAA/JXFOPNOuQAAAHCJhQsX6uabb9Z3332nbt26uaydAQMGaNu2bdq1a5fL2gAAAKjOuGcbAACAmzl9+rTD+8LCQs2YMUM2m02dOnVyWTu7du3S119/rZiYGKe1AQAAUNNwGSkAAICbefjhh3X69GlFR0crLy9PCxYs0Lp16/TSSy/J19fXae00adJEQ4YMUZMmTfTrr7/qnXfekbe3t5566imntQEAAFDTcBkpAACAm5k7d65ef/117d69W7m5uWrWrJmGDx+ukSNHOrWd++67T6tWrVJGRoasVquio6P10ksvOXX1HAAAQE3jFsm2d955R++88472798vSWrTpo3Gjx+vPn36SJJyc3P1+OOP69NPP1VeXp7i4uL09ttvKywszF5HWlqahg8frlWrVsnf31+DBw/W5MmTVasWi/cAAAAAAABQMdzinm0NGjTQyy+/rJSUFP3000+6/vrr1b9/f23btk2SNGrUKH311VeaP3++1qxZo0OHDumWW26xH19YWKi+ffsqPz9f69at0+zZs5WYmKjx48dXVpcAAAAAAABQA7nFyraSBAcH69VXX9Wtt96qkJAQzZ07V7feeqsk6ZdfflGrVq2UnJysq6++WkuWLNFNN92kQ4cO2Ve7zZw5U08//bSOHj0qb2/vyuwKAAAAAAAAagi3u8aysLBQ8+fP16lTpxQdHa2UlBQVFBQoNjbWXqZly5aKioqyJ9uSk5PVrl07h8tK4+LiNHz4cG3btk0dO3Yssa28vDzl5eXZ3xcVFen48eOqW7euLBaL6zoJAAAAAAAAt2eM0YkTJ1S/fn15eJTuAlG3SbZt2bJF0dHRys3Nlb+/v7744gu1bt1aqamp8vb2VlBQkEP5sLAwZWRkSJIyMjIcEm1n95/ddz6TJ0/W888/79yOAAAAAAAAoFo5cOCAGjRoUKqybpNsa9GihVJTU5WVlaXPP/9cgwcP1po1a1za5tixYzV69Gj7+6ysLEVFRenAgQOy2WwubRsAAAAAAADuLTs7W5GRkQoICCj1MW6TbPP29lazZs0kSZ07d9aGDRv0xhtv6Pbbb1d+fr4yMzMdVrcdPnxY4eHhkqTw8HD9+OOPDvUdPnzYvu98rFarrFZrse02m41kGwAAAAAAACSpTLcbc4unkZakqKhIeXl56ty5s7y8vLRixQr7vp07dyotLU3R0dGSpOjoaG3ZskVHjhyxl0lKSpLNZlPr1q0rPHYAAAAAAADUTG6xsm3s2LHq06ePoqKidOLECc2dO1erV6/WN998o8DAQA0dOlSjR49WcHCwbDabHn74YUVHR+vqq6+WJPXu3VutW7fWPffcoylTpigjI0Pjxo1TQkJCiSvXAAAAAAAAAFdwi2TbkSNHdO+99yo9PV2BgYFq3769vvnmG91www2SpGnTpsnDw0MDBw5UXl6e4uLi9Pbbb9uP9/T01OLFizV8+HBFR0erdu3aGjx4sCZNmlRZXQIAAAAAAEANZDHGmMoOwl1kZ2crMDBQWVlZ3LMNAAAAAIBqxhijM2fOqLCwsLJDgZvw9PRUrVq1zntPtvLkitxiZRsAAAAAAIAr5efnKz09XTk5OZUdCtyMn5+fIiIi5O3t7ZT6SLYBAAAAAIBqraioSPv27ZOnp6fq168vb2/vMj1dEtWTMUb5+fk6evSo9u3bp+bNm8vD49KfJUqyDQAAAAAAVGv5+fkqKipSZGSk/Pz8KjscuBFfX195eXnp119/VX5+vnx8fC65zktP1wEAAAAAAFQBzli1hOrH2fOCWQYAAAAAAAA4Cck2AAAAAAAAwElItgEAAAAAAFRRjRo10vTp013axurVq2WxWJSZmVml6q4sJNsAAAAAAABQKa655hqlp6crMDCwskNxGpJtAAAAAACg5nrhBclqrZjXCy9Udm/dSkFBgby9vRUeHi6LxVLZ4TgNyTYAAAAAAFBzFRZK+fkV8yosLFNoMTExGjlypEaOHKnAwEDVq1dPzz33nIwx5z1m6tSpateunWrXrq3IyEiNGDFCJ0+etO9PTExUUFCQvvnmG7Vq1Ur+/v6Kj49Xenr6ReNJSUlRly5d5Ofnp2uuuUY7d+502P/OO++oadOm8vb2VosWLfTRRx857LdYLHrnnXf0t7/9TbVr19aLL75Y7DLSmJgYWSyWYq/9+/dLktLS0tS/f3/5+/vLZrPptttu0+HDh+1tTJw4UVdccYU++ugjNWrUSIGBgbrjjjt04sSJi/bPWUi2AQAAAAAAuKnZs2erVq1a+vHHH/XGG29o6tSpev/9989b3sPDQ2+++aa2bdum2bNna+XKlXrqqaccyuTk5Oi1117TRx99pLVr1yotLU1PPPHERWN59tln9frrr+unn35SrVq1dP/999v3ffHFF3r00Uf1+OOPa+vWrXrwwQd13333adWqVQ51TJw4UTfffLO2bNnicPxZCxYsUHp6uv11yy23qEWLFgoLC1NRUZH69++v48ePa82aNUpKStLevXt1++23O9SxZ88eLVy4UIsXL9bixYu1Zs0avfzyyxftn7PUqrCWAAAAAAAAUCaRkZGaNm2aLBaLWrRooS1btmjatGl64IEHSiz/2GOP2X9u1KiR/vnPf+qhhx7S22+/bd9eUFCgmTNnqmnTppKkkSNHatKkSReN5cUXX1SPHj0kSWPGjFHfvn2Vm5srHx8fvfbaaxoyZIhGjBghSRo9erR++OEHvfbaa+rZs6e9jjvvvFP33Xef/f3evXsd2ggODrb/PG3aNK1cuVLr16+Xr6+vkpKStGXLFu3bt0+RkZGSpA8//FBt2rTRhg0bdOWVV0qSioqKlJiYqICAAEnSPffcoxUrVujFF1+8aB+dgZVtAAAAAAAAburqq692uJ9ZdHS0du3apcLzXJK6fPly9erVS5dddpkCAgJ0zz336NixY8rJybGX8fPzsyfaJCkiIkJHjhy5aCzt27d3OEaS/bgdO3aoW7duDuW7deumHTt2OGzr0qXLRduRpCVLlmjMmDH67LPPdPnll9vbiIyMtCfaJKl169YKCgpyaKdRo0b2RFtZ+ucsJNsAAAAAAACqgf379+umm25S+/bt9Z///EcpKSl66623JEn5+fn2cl5eXg7HWSyWC94HrqTjziYAi4qKyhRj7dq1L1pm+/btuuOOO/Tyyy+rd+/eZapfKrl/ZY3zUnAZKQAAAAAAqLk8PSVv74prq4zWr1/v8P6HH35Q8+bN5VlCXSkpKSoqKtLrr78uD48/11fNmzevfLGWUatWrfT9999r8ODB9m3ff/+9WrduXaZ6fv/9d/Xr108DBw7UqFGjirVx4MABHThwwL66bfv27crMzCxzO65Esg0AAAAAANRczz3358tNpaWlafTo0XrwwQf1888/a8aMGXr99ddLLNusWTMVFBRoxowZ6tevn77//nvNnDmzQuJ88sknddttt6ljx46KjY3VV199pQULFmj58uVlqmfgwIHy8/PTxIkTlZGRYd8eEhKi2NhYtWvXTnfddZemT5+uM2fOaMSIEerRo0epL0+tCFxGCgAAAAAA4KbuvfdenT59WldddZUSEhL06KOPatiwYSWW7dChg6ZOnapXXnlFbdu21Zw5czR58uQKiXPAgAF644039Nprr6lNmzZ69913NWvWLMXExJSpnrVr12rr1q1q2LChIiIi7K8DBw7IYrFo0aJFqlOnjrp3767Y2Fg1adJEn332mWs6VU4WU5qLcmuI7OxsBQYGKisrSzabrbLDAQAAAAAATpCbm6t9+/apcePG8vHxqexwSi0mJkZXXHGFpk+fXtmhVGsXmh/lyRWxsg0AAAAAAABwEpJtAAAAAAAAgJPwgAQAAAAAAAA3tHr16soOAeXAyjYAAAAAAADASdwi2TZ58mRdeeWVCggIUGhoqAYMGKCdO3c6lImJiZHFYnF4PfTQQw5l0tLS1LdvX/n5+Sk0NFRPPvmkzpw5U5FdAQAAAAAAbopnRKIkzp4XbnEZ6Zo1a5SQkKArr7xSZ86c0TPPPKPevXtr+/btql27tr3cAw88oEmTJtnf+/n52X8uLCxU3759FR4ernXr1ik9PV333nuvvLy89NJLL1VofwAAAAAAgPvw8vKSJOXk5MjX17eSo4G7ycnJkfT/58mlcotk29KlSx3eJyYmKjQ0VCkpKerevbt9u5+fn8LDw0usY9myZdq+fbuWL1+usLAwXXHFFXrhhRf09NNPa+LEifL29nZpHwAAAAAAgHvy9PRUUFCQjhw5IunP/ILFYqnkqFDZjDHKycnRkSNHFBQUJE9PT6fU6xbJtr/KysqSJAUHBztsnzNnjj7++GOFh4erX79+eu655+yr25KTk9WuXTuFhYXZy8fFxWn48OHatm2bOnbsWKydvLw85eXl2d9nZ2e7ojsAAAAAAKCSnV28czbhBpwVFBR03sVd5eF2ybaioiI99thj6tatm9q2bWvffuedd6phw4aqX7++Nm/erKefflo7d+7UggULJEkZGRkOiTZJ9vcZGRkltjV58mQ9//zzLuoJAABAcTabdOJE2Y4JCJD4N0Gg9Pg9A1ASi8WiiIgIhYaGqqCgoLLDgZvw8vJy2oq2s9wu2ZaQkKCtW7fqu+++c9g+bNgw+8/t2rVTRESEevXqpT179qhp06blamvs2LEaPXq0/X12drYiIyPLFzgAAAAAAHB7np6eTk+uAOdyi6eRnjVy5EgtXrxYq1atUoMGDS5YtmvXrpKk3bt3S/pzOejhw4cdypx9f76lgFarVTabzeEFAAAAAAAAlJdbJNuMMRo5cqS++OILrVy5Uo0bN77oMampqZKkiIgISVJ0dLS2bNnicO11UlKSbDabWrdu7ZK4AQAAAAAAgHO5xWWkCQkJmjt3rhYtWqSAgAD7PdYCAwPl6+urPXv2aO7cubrxxhtVt25dbd68WaNGjVL37t3Vvn17SVLv3r3VunVr3XPPPZoyZYoyMjI0btw4JSQkyGq1Vmb3AAAAAAAAUENYjDGm0oM4z+N2Z82apSFDhujAgQO6++67tXXrVp06dUqRkZG6+eabNW7cOIdLP3/99VcNHz5cq1evVu3atTV48GC9/PLLqlWrdDnF7OxsBQYGKisri0tKAQCAS3DjdsD1+D0DADhLeXJFbpFscxck2wAAgKuRBABcj98zAICzlCdX5Bb3bAMAAAAAAACqA5JtAAAAAAAAgJOQbAMAAAAAAACchGQbAAAAAAAA4CQk2wAAAAAAAAAnIdkGAAAAAAAAOAnJNgAAAAAAAMBJSLYBAAAAAAAATkKyDQAAAAAAAHASkm0AAAAAAACAk5BsAwAAAAAAAJyEZBsAAAAAAADgJCTbAAAAAAAAACch2QYAAAAAAAA4Cck2AAAAAAAAwElItgEAAAAAAABOQrINAAAAAAAAcBKSbQAAAAAAAICTkGwDAAAAAAAAnIRkGwAAAAAAAOAkJNsAAAAAAAAAJyHZBgAAAAAAADiJWyTbJk+erCuvvFIBAQEKDQ3VgAEDtHPnTocyubm5SkhIUN26deXv76+BAwfq8OHDDmXS0tLUt29f+fn5KTQ0VE8++aTOnDlTkV0BAAAAAABADeYWybY1a9YoISFBP/zwg5KSklRQUKDevXvr1KlT9jKjRo3SV199pfnz52vNmjU6dOiQbrnlFvv+wsJC9e3bV/n5+Vq3bp1mz56txMREjR8/vjK6BAAAAAAAgBrIYowxlR3EXx09elShoaFas2aNunfvrqysLIWEhGju3Lm69dZbJUm//PKLWrVqpeTkZF199dVasmSJbrrpJh06dEhhYWGSpJkzZ+rpp5/W0aNH5e3tfdF2s7OzFRgYqKysLNlsNpf2EQAA1Ew2m3TiRNmOCQiQsrNdEw9QHfF7BgBwlvLkitxiZdtfZWVlSZKCg4MlSSkpKSooKFBsbKy9TMuWLRUVFaXk5GRJUnJystq1a2dPtElSXFycsrOztW3bthLbycvLU3Z2tsMLAAAAAAAAKC+3S7YVFRXpscceU7du3dS2bVtJUkZGhry9vRUUFORQNiwsTBkZGfYy5ybazu4/u68kkydPVmBgoP0VGRnp5N4AAAAAAACgJnG7ZFtCQoK2bt2qTz/91OVtjR07VllZWfbXgQMHXN4mAAAAAAAAqq9alR3AuUaOHKnFixdr7dq1atCggX17eHi48vPzlZmZ6bC67fDhwwoPD7eX+fHHHx3qO/u00rNl/spqtcpqtTq5FwAAAAAAAKip3GJlmzFGI0eO1BdffKGVK1eqcePGDvs7d+4sLy8vrVixwr5t586dSktLU3R0tCQpOjpaW7Zs0ZEjR+xlkpKSZLPZ1Lp164rpCAAAAAAAAGo0t1jZlpCQoLlz52rRokUKCAiw32MtMDBQvr6+CgwM1NChQzV69GgFBwfLZrPp4YcfVnR0tK6++mpJUu/evdW6dWvdc889mjJlijIyMjRu3DglJCSweg0AAAAAAAAVwi2Sbe+8844kKSYmxmH7rFmzNGTIEEnStGnT5OHhoYEDByovL09xcXF6++237WU9PT21ePFiDR8+XNHR0apdu7YGDx6sSZMmVVQ3AAAAAAAAUMNZjDGmsoNwF9nZ2QoMDFRWVpZsNltlhwMAAKohm006caJsxwQESNnZrokHqI74PQMAOEt5ckVucc82AAAAAAAAoDog2QYAAAAAAAA4Cck2AAAAAAAAwElItgEAAAAAAABOQrINAAAAAAAAcBKSbQAAAAAAAICTkGwDAAAAAAAAnIRkGwAAAAAAAOAkJNsAAAAAAAAAJyHZBgAAAAAAADgJyTYAAAAAAADASUi2AQAAAAAAAE5Csg0AAAAAAABwEpJtAAAAAAAAgJOQbAMAAAAAAACchGQbAAAAAAAA4CQk2wAAAAAAAAAnIdkGAAAAAAAAOAnJNgAAAAAAAMBJSLYBAAAAAAAATkKyDQAAAAAAAHASkm0AAAAAAACAk7hNsm3t2rXq16+f6tevL4vFooULFzrsHzJkiCwWi8MrPj7eoczx48d11113yWazKSgoSEOHDtXJkycrsBcAAAAAAACoydwm2Xbq1Cl16NBBb7311nnLxMfHKz093f765JNPHPbfdddd2rZtm5KSkrR48WKtXbtWw4YNc3XoAAAAAAAAgCSpVmUHcFafPn3Up0+fC5axWq0KDw8vcd+OHTu0dOlSbdiwQV26dJEkzZgxQzfeeKNee+011a9f3+kxAwAAAAAAAOdym5VtpbF69WqFhoaqRYsWGj58uI4dO2bfl5ycrKCgIHuiTZJiY2Pl4eGh9evXl1hfXl6esrOzHV4AAAAAAABAeVWZZFt8fLw+/PBDrVixQq+88orWrFmjPn36qLCwUJKUkZGh0NBQh2Nq1aql4OBgZWRklFjn5MmTFRgYaH9FRka6vB+oWDabZLGU7WWzVXbUAGoSvqcAuAu+j2oOPmsAcC23uYz0Yu644w77z+3atVP79u3VtGlTrV69Wr169SpXnWPHjtXo0aPt77Ozs0m4AQAAAAAAoNyqzMq2v2rSpInq1aun3bt3S5LCw8N15MgRhzJnzpzR8ePHz3ufN6vVKpvN5vACAAAAAAAAyqvKJtt+++03HTt2TBEREZKk6OhoZWZmKiUlxV5m5cqVKioqUteuXSsrTAAAAAAAANQgbnMZ6cmTJ+2r1CRp3759Sk1NVXBwsIKDg/X8889r4MCBCg8P1549e/TUU0+pWbNmiouLkyS1atVK8fHxeuCBBzRz5kwVFBRo5MiRuuOOO3gSKQAAAAAAACqE26xs++mnn9SxY0d17NhRkjR69Gh17NhR48ePl6enpzZv3qy//e1vuvzyyzV06FB17txZ3377raxWq72OOXPmqGXLlurVq5duvPFGXXvttXrvvfcqq0sAAAAAAACoYdxmZVtMTIyMMefd/80331y0juDgYM2dO9eZYQEAAAAAAACl5jYr2wAAAAAAAICqjmQbAAAAAAAA4CQk2wAAAAAAAAAnIdkGAAAAAAAAOEm5HpDQvXt3xcTEqEePHurWrZt8fHycHRcAAAAAAABQ5ZRrZVvv3r31ww8/qH///goKCtK1116rcePGKSkpSTk5Oc6OEQAAAAAAAKgSyrWybdy4cZKkM2fOaMOGDVqzZo1Wr16tKVOmyMPDQ7m5uU4NEgAAAAAAAKgKypVsO2vv3r3asmWLNm3apM2bNysgIEDdu3d3VmwAAAAAAABAlVKuZNudd96pNWvWKC8vT927d1ePHj00ZswYtW/fXhaLxdkxAgAAAAAAAFVCuZJtn376qerVq6d//OMfuv7663XttdfKz8/P2bEBAAAAAAAAVUq5HpBw7Ngxvf/++8rPz9fYsWNVr149XXPNNXrmmWe0bNkyZ8cIAAAAAAAAVAnlSrbVqVNHf/vb3zR16lSlpKRo8+bNuvzyy/Xqq6+qT58+zo4RAAAAAAAAqBLKdRnpsWPH7E8gXb16tbZv366goCD169dPPXr0cHaMAAAAAAAAQJVQrmRbaGio6tWrp+uuu04PPPCAYmJi1K5dO2fHBgAAAAAAAFQp5Uq2TZgwQePHjy9x35NPPqlXX331koICAAAAAAAAqqJy3bNt6tSpWrJkSbHto0aN0scff3zJQQEAAAAAAABVUbmSbXPmzNGgQYP03Xff2bc9/PDDmjdvnlatWuW04AAAAAAAAICqpFzJtr59++rtt9/W3/72N6WkpGjEiBFasGCBVq1apZYtWzo7RgAAAAAAAKBKKNc92yTpzjvvVGZmprp166aQkBCtWbNGzZo1c2ZsAAAAAAAAQJVS6mTb6NGjS9weEhKiTp066e2337Zvmzp16qVHBgAAAAAAAFQxpU62bdy4scTtzZo1U3Z2tn2/xWJxTmQAAAAAAABAFVPqZBsPPgAAAAAAAAAurFwPSHCFtWvXql+/fqpfv74sFosWLlzosN8Yo/HjxysiIkK+vr6KjY3Vrl27HMocP35cd911l2w2m4KCgjR06FCdPHmyAnsBAAAAAACAmsxtkm2nTp1Shw4d9NZbb5W4f8qUKXrzzTc1c+ZMrV+/XrVr11ZcXJxyc3PtZe666y5t27ZNSUlJWrx4sdauXathw4ZVVBcAAAAAAABQw5X7aaTO1qdPH/Xp06fEfcYYTZ8+XePGjVP//v0lSR9++KHCwsK0cOFC3XHHHdqxY4eWLl2qDRs2qEuXLpKkGTNm6MYbb9Rrr72m+vXrV1hfAAAAAAAAUDO5zcq2C9m3b58yMjIUGxtr3xYYGKiuXbsqOTlZkpScnKygoCB7ok2SYmNj5eHhofXr15dYb15enrKzsx1eAAAAAAAAQHlViWRbRkaGJCksLMxhe1hYmH1fRkaGQkNDHfbXqlVLwcHB9jJ/NXnyZAUGBtpfkZGRLogeKD2bTbJYyvay2So7aqBy8PtSdbj6s2IuuKeq/rlU9fgBlF1l/N7X5O8ad+y7O8bkrhirC6sSyTZXGTt2rLKysuyvAwcOVHZIAAAAAAAAqMKqRLItPDxcknT48GGH7YcPH7bvCw8P15EjRxz2nzlzRsePH7eX+Sur1SqbzebwAgAAAAAAAMqrSiTbGjdurPDwcK1YscK+LTs7W+vXr1d0dLQkKTo6WpmZmUpJSbGXWblypYqKitS1a9cKjxkAAAAAAAA1j9s8jfTkyZPavXu3/f2+ffuUmpqq4OBgRUVF6bHHHtM///lPNW/eXI0bN9Zzzz2n+vXra8CAAZKkVq1aKT4+Xg888IBmzpypgoICjRw5UnfccQdPIgUAAAAAAECFcJtk208//aSePXva348ePVqSNHjwYCUmJuqpp57SqVOnNGzYMGVmZuraa6/V0qVL5ePjYz9mzpw5GjlypHr16iUPDw8NHDhQb775ZoX3BQAAAAAAADWT2yTbYmJiZIw5736LxaJJkyZp0qRJ5y0THBysuXPnuiI8AAAAAAAA4KKqxD3bAAAAAAAAgKqAZBsAAAAAAADgJCTbAAAAAAAAACch2QYAAAAAAAA4Cck2AAAAAAAAwElItgEAAAAAAABOQrINAAAAAAAAcBKSbQAAAAAAAICTkGwDAAAAAAAAnIRkGwAAAAAAAOAkJNsAAAAAAAAAJyHZBgAAAAAAADgJyTYAAAAAAADASUi2AQAAAAAAAE5Csg0AAAAAAABwEpJtAAAAAAAAgJOQbAMAAAAAAACchGQbAAAAAAAA4CQk2wAAAAAAAAAnIdkGAAAAAAAAOAnJNgAAAAAAAMBJSLYBAAAAAAAATlJlkm0TJ06UxWJxeLVs2dK+Pzc3VwkJCapbt678/f01cOBAHT58uBIjBgAAAAAAQE1TZZJtktSmTRulp6fbX999951936hRo/TVV19p/vz5WrNmjQ4dOqRbbrmlEqMFAAAAAABATVOrsgMoi1q1aik8PLzY9qysLP373//W3Llzdf3110uSZs2apVatWumHH37Q1VdfXdGhAgAAAAAAoAaqUivbdu3apfr166tJkya66667lJaWJklKSUlRQUGBYmNj7WVbtmypqKgoJScnn7e+vLw8ZWdnO7wAAAAAAACA8qoyybauXbsqMTFRS5cu1TvvvKN9+/bpuuuu04kTJ5SRkSFvb28FBQU5HBMWFqaMjIzz1jl58mQFBgbaX5GRkS7uBQBnsdkki6VsL5utsqO+NJXZ55o43gAAAABQHlXmMtI+ffrYf27fvr26du2qhg0bat68efL19S1XnWPHjtXo0aPt77Ozs0m4AQAAAAAAoNyqzMq2vwoKCtLll1+u3bt3Kzw8XPn5+crMzHQoc/jw4RLv8XaW1WqVzWZzeAEAAAAAAADlVWWTbSdPntSePXsUERGhzp07y8vLSytWrLDv37lzp9LS0hQdHV2JUQIAAAAAAKAmqTKXkT7xxBPq16+fGjZsqEOHDmnChAny9PTUoEGDFBgYqKFDh2r06NEKDg6WzWbTww8/rOjoaJ5ECgAAAAAAgApTZZJtv/32mwYNGqRjx44pJCRE1157rX744QeFhIRIkqZNmyYPDw8NHDhQeXl5iouL09tvv13JUQMAAAAAAKAmqTLJtk8//fSC+318fPTWW2/prbfeqqCIAAAAAAAAAEdV9p5tAAAAAAAAgLsh2QYAAAAAAAA4Cck2AAAAAAAAwElItgEAAAAAAABOQrINAAAAAAAAcBKSbQAAAAAAAICTkGwDAAAAAAAAnIRkGwAAAAAAAOAkJNsAAAAAAAAAJyHZBgAAAAAAADgJyTYAAAAAAADASUi2AQAAAAAAAE5Csg0AAAAAAABwEpJtAAAAAAAAgJOQbAMAAAAAAACchGQbAAAAAAAA4CQk2wAAAAAAAAAnIdkGAAAAAAAAOEmtyg4ALmSMdOyYdPKk5O8v1a0rWSyVHRUAAABQtXGeDQC4AFa2VUeZmdIbb0jNm0shIVLjxn/+t3nzP7dnZlZ2hAAAAEDVw3k2AKAUSLZVN998IzVoII0aJe3d67hv794/tzdo8Gc5AAAAAKXDeTYAoJRItlUn33wj9e0rnT7959J2Yxz3n912+vSf5TgRAAAAAC6O82wAQBlUy2TbW2+9pUaNGsnHx0ddu3bVjz/+WNkhuV5mpjRw4J9/5IuKLly2qOjPcgMHstQdAAAAuBDOswEAZVTtHpDw2WefafTo0Zo5c6a6du2q6dOnKy4uTjt37lRoaGhlh+c6s2dLOTnF/5XtfIqKpFOnpHr1JE9P18ZWiY7ml+OgE5Kszo6kdKpavJWpJo5VZfbZHcfbHWMqj+rSjwtxdR+r2hhWtXjLq6r3s6rHXx7Vqc9O7Uth4Z+v0ioq+vO8/MMPpUceKUcgAICqzmJMabMzVUPXrl115ZVX6l//+pckqaioSJGRkXr44Yc1ZsyYCx6bnZ2twMBApR89JpvNVhHhOocxUvsO0v59pU+2AQAAAHANi0Vq1FjavMktn1IaHv7ng1TLwt9fyshwTTzuojLGpSZ/Fu7Yd3eMyV3VpLHKzs5WREhdZWVllTpXVK2Sbfn5+fLz89Pnn3+uAQMG2LcPHjxYmZmZWrRokUP5vLw85eXl2d9nZ2crMjJSkY/Nk4fVr6LCBgAAAAAAgBsqysvRgem3lSnZVq3u2fb777+rsLBQYWFhDtvDwsKUUUL6dPLkyQoMDLS/IiMjKypUAAAAAAAAVEPV7p5tZTF27FiNHj3a/v7syrYfn+1VtS4j/f2Y1KhhZUcBAAAA4Fy/pkl1gys7CgDAJcjOzlbE9LIdU62SbfXq1ZOnp6cOHz7ssP3w4cMKDw8vVt5qtcpqLX4XVD/vWvLzrkJDExEqRTWQ9u7lnm0AAABAZbNYpCZNpPAQt7xnGwCg9M6UIz9UhTJKF+ft7a3OnTtrxYoV9nu2FRUVacWKFRo5cmTlBudKFov08MPSqFFlP9bTs1o/jRQAAAC4JGV9GulZjzxCog0AaqhqlWyTpNGjR2vw4MHq0qWLrrrqKk2fPl2nTp3SfffdV9mhudbgwdKzz0qnT//5uPGL8fCQfH2l336TgoJcHh4AAABQJWVmSg0alP08+957XR4aAMA9Vbtk2+23366jR49q/PjxysjI0BVXXKGlS5cWe2hCtRMUJP3nP1Lfvn/+gb/QiYCHx5//yrZgAYk2AAAA4EI4zwYAlJHFGG7ydVZ2drYCAwPL9DhXt/PNN9LAgVJOzp/vz/14zy5j9/P78wSgd++Kjw8AAACoijjPBoAaqTy5Ig8Xx4SKFhf356Wh06f/eVPWczVp8uf2gwc5AQAAAADKgvNsAEApsbLtHNViZdu5jJGOH5dOnJACAqTgYG7SCgAAAFwqzrMBoMYoT66o2t2zDeewWKS6df98AQAAAHAOzrMBABfAZaSo0o4eParhw4crKipKVqtV4eHhiouL0/fff3/RY3Nzc5WQkKC6devK399fAwcO1OHDhx3KpKWlqW/fvvLz81NoaKiefPJJnTlzxm3jfeSRR9S5c2dZrVZdccUV5Y7THbhyrDZt2qRBgwYpMjJSvr6+atWqld544w1XdqdUXNnnY8eOKT4+XvXr15fValVkZKRGjhyp7Oxsl7d9rmPHjqlBgwayWCzKzMystPGQJIvFUuz16aefXrTu8qiI8U1MTFT79u3l4+Oj0NBQJSQkuKIrJXJl/xITE0v8rCwWi3r27Om0MdywYYN69eqloKAg1alTR3Fxcdq0aVPZB0Ou/7xXrFiha665RgEBAQoPD9fTTz99SX+byutS+vnee+8pJiZGNpvtvN8Hx48f11133SWbzaagoCANHTpUJ0+erDLxv/jii7rmmmvk5+enIDe6Ub4r+71//34NHTpUjRs3lq+vr5o2baoJEyYoPz+/SvVDkv72t78pKipKPj4+ioiI0D333KNDhw45vR+u4urxOSsvL09XXHGFLBaLUlNTndcBF3H1uDRq1KjY36px48a5/LP473//q65du8rX11d16tTRgAEDLlp3RXHlmK9evfq85wgbNmyo8Hgk6X//+5/69++vevXqyWaz6dprr9WqVasuWrc7cvVY/fzzz7rhhhsUFBSkunXratiwYU79O1/ZSLahShs4cKA2btyo2bNn63//+5++/PJLxcTE6NixYxc9dtSoUfrqq680f/58rVmzRocOHdItt9xi319YWKi+ffsqPz9f69at0+zZs5WYmKjx48e7Zbxn3X///br99tvLHaO7cOVYpaSkKDQ0VB9//LG2bdumZ599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xaLly5dr48aNCggIkI+Pj6ZOnaqlS5eqTp06Tmmjorh6rK6//nplZGTo1VdfVX5+vv744w/7LTEq8nzGlUi2oUobOHCgDh06pC+//FLx8fFavXq1OnXqpMTExMoOrURVLd7KVFFjtXXrVvXv318TJkxQ7969nVp3WVVEn6dNm6aff/5ZixYt0p49ezR69GiXtz127Fi1atVKd999d5mOc/V4PPfcc+rWrZs6duyop59+Wk899ZReffVVp9T9V67sS1FRkQoKCvTmm28qLi5OV199tT755BPt2rWrwm7IWxFzd+DAgVqwYIGMMRowYIBT2zh9+rSGDh2qbt266YcfftD333+vtm3bqm/fvjp9+nS5YnXVePTu3VuvvvqqHnroIVmtVl1++eW68cYbJalUq0adqar/Tavq8ZdXRfX74MGDio+P19///nc98MADTq1bqph+PPnkk9q4caOWLVsmT09P3XvvvS5ZAe0KrhyfGTNm6MSJExo7duylB1rBXD1vRo8erZiYGLVv314PPfSQXn/9dS1dulT79u1z2TmAJD377LMaOHCgOnfurFmzZslisWj+/PmXXL8zVNR3zm+//aZvvvlGQ4cOrbR4jDFKSEhQaGiovv32W/34448aMGCA+vXrVyUTSK4cqzZt2mj27Nl6/fXX5efnp/DwcDVu3FhhYWEVfj7jMq65orVq4p5t1cPQoUNNVFTUBcuc755RUVFRZurUqcYYY5577rli9z3bu3evkWR+/vlnt4v3XFX9nm3n4+yx2rZtmwkNDTXPPPOMs0N1GlfMj7O+/fZbI8kcOnTIpW136NDBeHh4GE9PT+Pp6Wk8PDyMJOPp6WnGjx9/wfpdFVNJFi9ebCSZ3NzcMsVUXs7qywcffGAkmQMHDjiUCQ0NNe+9955TYy4LV3xW999/v7niiiuc3sb7779f7L4heXl5xs/Pz3zyyScXrL+0nD0eRUVF5uDBgyYnJ8d+f7Mff/zRKbFeitL081znu5fLv//9bxMUFOSwraCgwHh6epoFCxY4I9QSOSv+c7nTPdvOx9n9PnjwoGnevLm55557HH6vXM0Vn99ZBw4cMJLMunXrLiHCyuWs8enfv7/D33VPT0/73/V7773XyVG7nivnzdatW40k88svv7ikzZUrVxpJ5ttvv3XYftVVV1X589tzlWbMJ02aZEJCQsp1X0VnxbN8+XLj4eFRLJ/QrFkzM3ny5DLH5Y5c8dllZGSYEydOmJMnTxoPDw8zb948J0TqXNyzDZDUunVrnTp16oJlOnfuLC8vL61YscK+befOnUpLS1N0dLQkKTo6Wlu2bNGRI0fsZZKSkmSz2dS6dWu3i7cmcOZYbdu2TT179tTgwYP14osvuizmS+XK+XH2X0PPdx8GZ7X9n//8R5s2bVJqaqpSU1P1/vvvS5K+/fZbJSQkXLB+V8VUktTUVNWpU0dWq7VMMZWXs/rSrVs3+/azjh8/rt9//10NGzZ0QeSl4+zP6uTJk5o3b57Dv1g7q42cnBx5eHjIYrHYy5x9f/b35FI5ezwsFovq168vX19fffLJJ4qMjFSnTp2cEuulKE0/SyM6OlqZmZkO96FbuXKlioqK1LVr10uu/3ycFX9V48x+Hzx4UDExMfYVNhW5QsGVn9/F/mZWBc4anzfffNPh7/rXX38tSfrss8/c+pzqfFw5b1JTU+Xh4VHssnhntdm5c2dZrVaHc4CCggLt37+/Us8BLsbZY26M0axZs3TvvfeW676KzoonJydHUvGV5h4eHk47n6hsrvh9CQsLk7+/vz777DP5+PjohhtucGr9lcZ1ub+qh5VtVcvvv/9uevbsaT766COzadMms3fvXjNv3jwTFhZm7r///ose/9BDD5moqCizcuVK89NPP5no6GgTHR1t33/mzBnTtm1b07t3b5OammqWLl1qQkJCzNixY90yXmOM2bVrl9m4caN58MEHzeWXX242btxoNm7cWK6np1YmV4/Vli1bTEhIiLn77rtNenq6/XXkyBFXduuCXN3n//73v+aDDz4wW7ZsMfv27TOLFy82rVq1Mt26dauQuXmu0vwLl6tj+vLLL83//d//mS1btphdu3aZt99+2/j5+ZV5pV1pVMT49u/f37Rp08Z8//33ZsuWLeamm24yrVu3rpCn5lVE/37//XfTsmVL4+XlZb799lunt7Fjxw5jtVrN8OHDzfbt283WrVvN3XffbQIDA8+78rMyx2PKlClm8+bNZuvWrWbSpEnGy8urQp6se65L7Wd6errZuHGj+b//+z/7k9s2btxojh07Zi8THx9vOnbsaNavX2++++4707x5czNo0KAqE/+vv/5qNm7caJ5//nnj7+9v/5t84sQJp/ShPFzd799++800a9bM9OrVy/z2228Of2OrUj9++OEHM2PGDLNx40azf/9+s2LFCnPNNdeYpk2bVtjq50tREfP7XPv27asSTyN19bisW7fOTJs2zaSmppo9e/aYjz/+2NStW9eEh4e79LN49NFHzWWXXWa++eYb88svv5ihQ4ea0NBQc/z48fIPlpNU1Fxcvny5kWR27NhRqfEcPXrU1K1b19xyyy0mNTXV7Ny50zzxxBPGy8vLpKamXrR+d1IRn92MGTNMSkqK2blzp/nXv/5lfH19zRtvvOHKbpVbeXJFJNvOQbKtasnNzTVjxowxnTp1MoGBgcbPz8+0aNHCjBs3zuTk5Fz0+NOnT5sRI0aYOnXqGD8/P3PzzTcXOxncv3+/6dOnj/H19TX16tUzjz/+uCkoKHDbeHv06GEkFXvt27evXDFXFleP1YQJE0ocp4YNG7qwVxfm6j6vXLnSREdHm8DAQOPj42OaN29unn76afPHH39UyNw8V2mSba6OacmSJeaKK64w/v7+pnbt2qZDhw5m5syZLrncqSLGNysry9x///0mKCjIBAcHm5tvvtmkpaU5vS8lqYj+5ebmmvr165s6deq4rI1ly5aZbt26mcDAQFOnTh1z/fXXm+Tk5LINhqmY8ejZs6f9d7lr167m66+/LnOcl+pS+3m+7+FZs2bZyxw7dswMGjTI+Pv7G5vNZu677z6nJaoqIv7BgweXWGbVqlVO6UN5uLrfs2bNKnG/s/9939X92Lx5s+nZs6cJDg42VqvVNGrUyDz00EPmt99+c2o/XKUi5ve5qkqyzdXjkpKSYrp27Wr/fm7VqpWZNGmSeeKJJ1z6WeTn55vHH3/chIaGmoCAABMbG2u2bt1a3mFyqoqai4MGDTLXXHONW8SzYcMG07t3bxMcHGwCAgLM1VdfXSl/py9VRYzVPffcY4KDg423t7dp3769+fDDD13Yo0tTnlyRxZgqcpfPCpCdna3AwEBlZWXJZrNVdjgAAAAAAACoROXJFXHPNgAAAAAAAMBJSLahWpozZ478/f1LfLVp06aywyumqsVbmWriWFVmn91xvN0xpvKqTn0pSUX0ryqNYVWK9VJU9X5W9fjLq7r0u7r0w1UYn5JVxrjU9M/C3frvbvG4M8aqdLiM9BxcRlp9nDhxQocPHy5xn5eXl9s9naeqxVuZauJYVWaf3XG83TGm8qpOfSlJRfSvKo1hVYr1UlT1flb1+MuruvS7uvTDVRifklXGuNT0z8Ld+u9u8bizmjhW5ckVkWw7B8k2AAAAAAAAnMU92wAAAAAAAIBKRLINAAAAAAAAcBKSbQAAAAAAAICTkGwDAAAAAAAAnKTKJNsaNWoki8Xi8Hr55ZcdymzevFnXXXedfHx8FBkZqSlTplRStAAAAAAAAKiJalV2AGUxadIkPfDAA/b3AQEB9p+zs7PVu3dvxcbGaubMmdqyZYvuv/9+BQUFadiwYZURLgAAAAAAAGqYKpVsCwgIUHh4eIn75syZo/z8fH3wwQfy9vZWmzZtlJqaqqlTp5JsAwAAAAAAQIWwGGNMZQdRGo0aNVJubq4KCgoUFRWlO++8U6NGjVKtWn/mC++9915lZ2dr4cKF9mNWrVql66+/XsePH1edOnWK1ZmXl6e8vDz7+6ysLEVFRenAgQOy2Wwu7xMAAAAAAADcV3Z2tiIjI5WZmanAwMBSHVNlVrY98sgj6tSpk4KDg7Vu3TqNHTtW6enpmjp1qiQpIyNDjRs3djgmLCzMvq+kZNvkyZP1/PPPF9seGRnpgh4AAAAAAACgKjpx4kSpk22VurJtzJgxeuWVVy5YZseOHWrZsmWx7R988IEefPBBnTx5UlarVb1791bjxo317rvv2sts375dbdq00fbt29WqVatidfx1ZVtRUZGOHz+uunXrymKxXELP3MfZDCyr9VDdMLdRHTGvUV0xt1EdMa9RHTGvUV1dytw2xujEiROqX7++PDxK95zRSl3Z9vjjj2vIkCEXLNOkSZMSt3ft2lVnzpzR/v371aJFC4WHh+vw4cMOZc6+P9993qxWq6xWq8O2oKCg0gVfxdhsNr4sUS0xt1EdMa9RXTG3UR0xr1EdMa9RXZV3bpd2RdtZlZpsCwkJUUhISLmOTU1NlYeHh0JDQyVJ0dHRevbZZ1VQUCAvLy9JUlJSklq0aFHiJaQAAAAAAACAs5Vu/VslS05O1vTp07Vp0ybt3btXc+bM0ahRo3T33XfbE2l33nmnvL29NXToUG3btk2fffaZ3njjDY0ePbqSowcAAAAAAEBNUSUekGC1WvXpp59q4sSJysvLU+PGjTVq1CiHRFpgYKCWLVumhIQEde7cWfXq1dP48eM1bNiwSoy88lmtVk2YMKHY5bJAVcfcRnXEvEZ1xdxGdcS8RnXEvEZ1VdFzu1IfkAAAAAAAAABUJ1XiMlIAAAAAAACgKiDZBgAAAAAAADgJyTYAAAAAAADASUi2AQAAAAAAAE5Csq2ae+utt9SoUSP5+Pioa9eu+vHHHys7JOC8Jk6cKIvF4vBq2bKlfX9ubq4SEhJUt25d+fv7a+DAgTp8+LBDHWlpaerbt6/8/PwUGhqqJ598UmfOnKnorqAGW7t2rfr166f69evLYrFo4cKFDvuNMRo/frwiIiLk6+ur2NhY7dq1y6HM8ePHddddd8lmsykoKEhDhw7VyZMnHcps3rxZ1113nXx8fBQZGakpU6a4umuo4S42t4cMGVLsOzw+Pt6hDHMb7mby5Mm68sorFRAQoNDQUA0YMEA7d+50KOOs84/Vq1erU6dOslqtatasmRITE13dPdRQpZnXMTExxb6zH3roIYcyzGu4m3feeUft27eXzWaTzWZTdHS0lixZYt/vTt/XJNuqsc8++0yjR4/WhAkT9PPPP6tDhw6Ki4vTkSNHKjs04LzatGmj9PR0++u7776z7xs1apS++uorzZ8/X2vWrNGhQ4d0yy232PcXFhaqb9++ys/P17p16zR79mwlJiZq/PjxldEV1FCnTp1Shw4d9NZbb5W4f8qUKXrzzTc1c+ZMrV+/XrVr11ZcXJxyc3PtZe666y5t27ZNSUlJWrx4sdauXathw4bZ92dnZ6t3795q2LChUlJS9Oqrr2rixIl67733XN4/1FwXm9uSFB8f7/Ad/sknnzjsZ27D3axZs0YJCQn64YcflJSUpIKCAvXu3VunTp2yl3HG+ce+ffvUt29f9ezZU6mpqXrsscf0j3/8Q998802F9hc1Q2nmtSQ98MADDt/Z5/7jBvMa7qhBgwZ6+eWXlZKSop9++knXX3+9+vfvr23btklys+9rg2rrqquuMgkJCfb3hYWFpn79+mby5MmVGBVwfhMmTDAdOnQocV9mZqbx8vIy8+fPt2/bsWOHkWSSk5ONMcZ8/fXXxsPDw2RkZNjLvPPOO8Zms5m8vDyXxg6URJL54osv7O+LiopMeHi4efXVV+3bMjMzjdVqNZ988okxxpjt27cbSWbDhg32MkuWLDEWi8UcPHjQGGPM22+/berUqeMwr59++mnTokULF/cI+NNf57YxxgwePNj079//vMcwt1EVHDlyxEgya9asMcY47/zjqaeeMm3atHFo6/bbbzdxcXGu7hJQbF4bY0yPHj3Mo48+et5jmNeoKurUqWPef/99t/u+ZmVbNZWfn6+UlBTFxsbat3l4eCg2NlbJycmVGBlwYbt27VL9+vXVpEkT3XXXXUpLS5MkpaSkqKCgwGFOt2zZUlFRUfY5nZycrHbt2iksLMxeJi4uTtnZ2fZ/7QAq0759+5SRkeEwjwMDA9W1a1eHeRwUFKQuXbrYy8TGxsrDw0Pr16+3l+nevbu8vb3tZeLi4rRz50798ccfFdQboLjVq1crNDRULVq00PDhw3Xs2DH7PuY2qoKsrCxJUnBwsCTnnX8kJyc71HG2DOflqAh/nddnzZkzR/Xq1VPbtm01duxY5eTk2Pcxr+HuCgsL9emnn+rUqVOKjo52u+/rWuXtGNzb77//rsLCQodJJElhYWH65ZdfKikq4MK6du2qxMREtWjRQunp6Xr++ed13XXXaevWrcrIyJC3t7eCgoIcjgkLC1NGRoYkKSMjo8Q5f3YfUNnOzsOS5um58zg0NNRhf61atRQcHOxQpnHjxsXqOLuvTp06LokfuJD4+Hjdcsstaty4sfbs2aNnnnlGffr0UXJysjw9PZnbcHtFRUV67LHH1K1bN7Vt21aSnHb+cb4y2dnZOn36tHx9fV3RJaDEeS1Jd955pxo2bKj69etr8+bNevrpp7Vz504tWLBAEvMa7mvLli2Kjo5Wbm6u/P399cUXX6h169ZKTU11q+9rkm0A3EafPn3sP7dv315du3ZVw4YNNW/ePP5YA4Cbu+OOO+w/t2vXTu3bt1fTpk21evVq9erVqxIjA0onISFBW7dudbhfLFDVnW9en3u/zHbt2ikiIkK9evXSnj171LRp04oOEyi1Fi1aKDU1VVlZWfr88881ePBgrVmzprLDKobLSKupevXqydPTs9iTNw4fPqzw8PBKigoom6CgIF1++eXavXu3wsPDlZ+fr8zMTIcy587p8PDwEuf82X1AZTs7Dy/03RweHl7sQTZnzpzR8ePHmeuoUpo0aaJ69epp9+7dkpjbcG8jR47U4sWLtWrVKjVo0MC+3VnnH+crY7PZ+AdFuMz55nVJunbtKkkO39nMa7gjb29vNWvWTJ07d9bkyZPVoUMHvfHGG273fU2yrZry9vZW586dtWLFCvu2oqIirVixQtHR0ZUYGVB6J0+e1J49exQREaHOnTvLy8vLYU7v3LlTaWlp9jkdHR2tLVu2OPzPXFJSkmw2m1q3bl3h8QN/1bhxY4WHhzvM4+zsbK1fv95hHmdmZiolJcVeZuXKlSoqKrKfCEdHR2vt2rUqKCiwl0lKSlKLFi24zA5u47ffftOxY8cUEREhibkN92SM0ciRI/XFF19o5cqVxS5jdtb5R3R0tEMdZ8twXg5XuNi8LklqaqokOXxnM69RFRQVFSkvL8/9vq/L97wHVAWffvqpsVqtJjEx0Wzfvt0MGzbMBAUFOTx5A3Anjz/+uFm9erXZt2+f+f77701sbKypV6+eOXLkiDHGmIceeshERUWZlStXmp9++slER0eb6Oho+/Fnzpwxbdu2Nb179zapqalm6dKlJiQkxIwdO7ayuoQa6MSJE2bjxo1m48aNRpKZOnWq2bhxo/n111+NMca8/PLLJigoyCxatMhs3rzZ9O/f3zRu3NicPn3aXkd8fLzp2LGjWb9+vfnuu+9M8+bNzaBBg+z7MzMzTVhYmLnnnnvM1q1bzaeffmr8/PzMu+++W+H9Rc1xobl94sQJ88QTT5jk5GSzb98+s3z5ctOpUyfTvHlzk5uba6+DuQ13M3z4cBMYGGhWr15t0tPT7a+cnBx7GWecf+zdu9f4+fmZJ5980uzYscO89dZbxtPT0yxdurRC+4ua4WLzevfu3WbSpEnmp59+Mvv27TOLFi0yTZo0Md27d7fXwbyGOxozZoxZs2aN2bdvn9m8ebMZM2aMsVgsZtmyZcYY9/q+JtlWzc2YMcNERUUZb29vc9VVV5kffvihskMCzuv22283ERERxtvb21x22WXm9ttvN7t377bvP336tBkxYoSpU6eO8fPzMzfffLNJT093qGP//v2mT58+xtfX19SrV888/vjjpqCgoKK7ghps1apVRlKx1+DBg40xxhQVFZnnnnvOhIWFGavVanr16mV27tzpUMexY8fMoEGDjL+/v7HZbOa+++4zJ06ccCizadMmc+211xqr1Wouu+wy8/LLL1dUF1FDXWhu5+TkmN69e5uQkBDj5eVlGjZsaB544IFi/8DH3Ia7KWlOSzKzZs2yl3HW+ceqVavMFVdcYby9vU2TJk0c2gCc6WLzOi0tzXTv3t0EBwcbq9VqmjVrZp588kmTlZXlUA/zGu7m/vvvNw0bNjTe3t4mJCTE9OrVy55oM8a9vq8txhhTtrVwAAAAAAAAAErCPdsAAAAAAAAAJyHZBgAAAAAAADgJyTYAAAAAAADASUi2AQAAAAAAAE5Csg0AAAAAAABwEpJtAAAAAAAAgJOQbAMAAAAAAACchGQbAAAAAAAA4CQk2wAAAKoRi8WihQsXVnYYAAAANRbJNgAAgCpgyJAhslgsslgs8vLyUlhYmG644QZ98MEHKioqspdLT09Xnz59SlUniTkAAADnI9kGAABQRcTHxys9PV379+/XkiVL1LNnTz366KO66aabdObMGUlSeHi4rFZrJUcKAABQc5FsAwAAqCKsVqvCw8N12WWXqVOnTnrmmWe0aNEiLVmyRImJiZIcV6vl5+dr5MiRioiIkI+Pjxo2bKjJkydLkho1aiRJuvnmm2WxWOzv9+zZo/79+yssLEz+/v668sortXz5coc4GjVqpJdeekn333+/AgICFBUVpffee8+hzG+//aZBgwYpODhYtWvXVpcuXbR+/Xr7/kWLFqlTp07y8fFRkyZN9Pzzz9sThgAAAFUZyTYAAIAq7Prrr1eHDh20YMGCYvvefPNNffnll5o3b5527typOXPm2JNqGzZskCTNmjVL6enp9vcnT57UjTfeqBUrVmjjxo2Kj49Xv379lJaW5lD366+/ri5dumjjxo0aMWKEhg8frp07d9rr6NGjhw4ePKgvv/xSmzZt0lNPPWW/3PXbb7/Vvffeq0cffVTbt2/Xu+++q8TERL344ouuGiYAAIAKU6uyAwAAAMCladmypTZv3lxse1pampo3b65rr71WFotFDRs2tO8LCQmRJAUFBSk8PNy+vUOHDurQoYP9/QsvvKAvvvhCX375pUaOHGnffuONN2rEiBGSpKefflrTpk3TqlWr1KJFC82dO1dHjx7Vhg0bFBwcLElq1qyZ/djnn39eY8aM0eDBgyVJTZo00QsvvKCnnnpKEyZMcMaQAAAAVBqSbQAAAFWcMUYWi6XY9iFDhuiGG25QixYtFB8fr5tuukm9e/e+YF0nT57UxIkT9d///lfp6ek6c+aMTp8+XWxlW/v27e0/WywWhYeH68iRI5Kk1NRUdezY0Z5o+6tNmzbp+++/d1jJVlhYqNzcXOXk5MjPz6/UfQcAAHA3JNsAAACquB07dqhx48bFtnfq1En79u3TkiVLtHz5ct12222KjY3V559/ft66nnjiCSUlJem1115Ts2bN5Ovrq1tvvVX5+fkO5by8vBzeWywW+2Wivr6+F4z35MmTev7553XLLbcU2+fj43PBYwEAANwdyTYAAIAqbOXKldqyZYtGjRpV4n6bzabbb79dt99+u2699VbFx8fr+PHjCg4OlpeXlwoLCx3Kf//99xoyZIhuvvlmSX8mxvbv31+mmNq3b6/333/f3s5fderUSTt37nS4tBQAAKC6INkGAABQReTl5SkjI0OFhYU6fPiwli5dqsmTJ+umm27SvffeW6z81KlTFRERoY4dO8rDw0Pz589XeHi4goKCJP35VNEVK1aoW7duslqtqlOnjpo3b64FCxaoX79+slgseu655+wr1kpr0KBBeumllzRgwABNnjxZERER2rhxo+rXr6/o6GiNHz9eN910k6KionTrrbfKw8NDmzZt0tatW/XPf/7TGUMFAABQaXgaKQAAQBWxdOlSRUREqFGjRoqPj9eqVav05ptvatGiRfL09CxWPiAgQFOmTFGXLl105ZVXav/+/fr666/l4fHnKeDrr7+upKQkRUZGqmPHjpL+TNDVqVNH11xzjfr166e4uDh16tSpTHF6e3tr2bJlCg0N1Y033qh27drp5ZdftscYFxenxYsXa9myZbryyit19dVXa9q0aQ4PcAAAAKiqLMYYU9lBAAAAAAAAANUBK9sAAAAAAAAAJyHZBgAAAAAAADgJyTYAAAAAAADASUi2AQAAAAAAAE5Csg0AAAAAAABwEpJtAAAAAAAAgJOQbAMAAAAAAACchGQbAAAAAAAA4CQk2wAAAAAAAAAnIdkGAAAAAAAAOAnJNgAAAAAAAMBJ/h8CSF0HJcymWAAAAABJRU5ErkJggg==\n"
},
"metadata": {}
}
],
"source": [
"# current location (km) and charge (kw)\n",
"x = 0\n",
"\n",
"# planning horizon\n",
"D = 2000\n",
"\n",
"# visualize\n",
"fig, ax = plt.subplots(1, 1, figsize=(15, 3))\n",
"\n",
"\n",
"def plot_stations(stations, x, D, ax=ax):\n",
" for station in stations.index:\n",
" xs = stations.loc[station, \"location\"]\n",
" ys = stations.loc[station, \"kw\"]\n",
" ax.plot([xs, xs], [0, ys], \"b\", lw=10, solid_capstyle=\"butt\")\n",
" ax.text(xs, 0 - 30, stations.loc[station, \"name\"], ha=\"center\")\n",
"\n",
" ax.plot([x, x + D], [0, 0], \"r\", lw=5, solid_capstyle=\"butt\", label=\"plan horizon\")\n",
" ax.plot([x, x + D], [0, 0], \"r.\", ms=20)\n",
"\n",
" ax.axhline(0)\n",
" ax.set_ylim(-50, 300)\n",
" ax.set_xlabel(\"Distance\")\n",
" ax.set_ylabel(\"kw\")\n",
" ax.set_title(\"charging stations\")\n",
" ax.legend()\n",
"\n",
"\n",
"plot_stations(stations, x, D)"
]
},
{
"cell_type": "markdown",
"id": "91ebd206-ca91-436c-86f9-71f89bb1f34d",
"metadata": {
"id": "91ebd206-ca91-436c-86f9-71f89bb1f34d"
},
"source": [
"## Car Information"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "2d6dad34-d50b-4acf-bb44-2fbf3e044086",
"metadata": {
"id": "2d6dad34-d50b-4acf-bb44-2fbf3e044086"
},
"outputs": [],
"source": [
"# charge limits (kw)\n",
"c_max = 150\n",
"c_min = 0.2 * c_max\n",
"c = c_max\n",
"\n",
"# velocity km/hr and discharge rate kwh/km\n",
"v = 100.0\n",
"R = 0.24\n",
"\n",
"# lost time\n",
"t_lost = 10 / 60\n",
"t_rest = 10 / 60\n",
"\n",
"# rest time\n",
"r_max = 3"
]
},
{
"cell_type": "markdown",
"id": "c797f5b1-c0a2-498c-9f94-2beaa947d961",
"metadata": {
"id": "c797f5b1-c0a2-498c-9f94-2beaa947d961"
},
"source": [
"## AMPL Model"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "5cabe50f",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "5cabe50f",
"outputId": "4b56c963-e193-4a1c-ed18-8a1efab05eec"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Overwriting ev_plan.mod\n"
]
}
],
"source": [
"%%writefile ev_plan.mod\n",
"\n",
"param n;\n",
"\n",
"# locations and road segments between location x and x + D\n",
"set STATIONS; # 1..n\n",
"set LOCATIONS; # 0, 1..n, D\n",
"set SEGMENTS; # 1..n + 1\n",
"\n",
"param C{STATIONS};\n",
"param D;\n",
"param c_min;\n",
"param c_max;\n",
"param v;\n",
"param R;\n",
"\n",
"param r_max;\n",
"param location{LOCATIONS};\n",
"param dist{SEGMENTS};\n",
"param t_lost;\n",
"\n",
"# distance traveled\n",
"var x{LOCATIONS} >= 0, <= 10000;\n",
"\n",
"# arrival and departure charge at each charging station\n",
"var c_arr{LOCATIONS} >= c_min, <= c_max;\n",
"var c_dep{LOCATIONS} >= c_min, <= c_max;\n",
"\n",
"# arrival and departure times from each charging station\n",
"var t_arr{LOCATIONS} >= 0, <= 100;\n",
"var t_dep{LOCATIONS} >= 0, <= 100;\n",
"\n",
"# arrival and departure rest from each charging station\n",
"var r_arr{LOCATIONS} >= 0, <= r_max;\n",
"var r_dep{LOCATIONS} >= 0, <= r_max;\n",
"\n",
"minimize min_time: t_arr[n + 1];\n",
"\n",
"s.t. drive_time {i in SEGMENTS}: t_arr[i] == t_dep[i-1] + dist[i]/v;\n",
"s.t. rest_time {i in SEGMENTS}: r_arr[i] == r_dep[i-1] + dist[i]/v;\n",
"s.t. drive_distance {i in SEGMENTS}: x[i] == x[i-1] + dist[i];\n",
"s.t. discharge {i in SEGMENTS}: c_arr[i] == c_dep[i-1] - R * dist[i];\n",
"\n",
"s.t. recharge {i in STATIONS}:\n",
" # list of constraints that apply if there is no stop at station i\n",
" ((c_dep[i] == c_arr[i] and t_dep[i] == t_arr[i] and r_dep[i] == r_arr[i])\n",
" or\n",
" # list of constraints that apply if there is a stop at station i\n",
" (t_dep[i] == t_lost + t_arr[i] + (c_dep[i] - c_arr[i])/C[i] and\n",
" c_dep[i] >= c_arr[i] and r_dep[i] == 0))\n",
" and not\n",
" ((c_dep[i] == c_arr[i] and t_dep[i] == t_arr[i] and r_dep[i] == r_arr[i])\n",
" and\n",
" (t_dep[i] == t_lost + t_arr[i] + (c_dep[i] - c_arr[i])/C[i] and\n",
" c_dep[i] >= c_arr[i] and r_dep[i] == 0));"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "d061b189-5ccd-4949-a1b9-f736533e8389",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 635
},
"id": "d061b189-5ccd-4949-a1b9-f736533e8389",
"outputId": "b82e7f3d-b3df-4f1f-ae20-70bbe33df543"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"HiGHS 1.10.0: \b\b\b\b\b\b\b\b\b\b\b\b\b\bHiGHS 1.10.0: optimal solution; objective 24.142507\n",
"9961 simplex iterations\n",
"116 branching nodes\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
" location t_arr t_dep c_arr c_dep t_stop\n",
"index \n",
"0 0.0 0.000000 0.000000 30.0000 150.0000 0.000000\n",
"1 191.6 1.916000 2.389227 104.0160 150.0000 0.473227\n",
"2 310.6 3.579227 4.031493 121.4400 150.0000 0.452267\n",
"3 516.0 6.085493 6.252162 100.7040 100.7041 0.166669\n",
"4 683.6 7.928162 7.928162 60.4801 60.4801 0.000000\n",
"5 769.9 8.791162 9.241507 39.7681 53.9520 0.450345\n",
"6 869.7 10.239507 10.740733 30.0000 63.4560 0.501227\n",
"7 1009.1 12.134733 12.848119 30.0000 112.0079 0.713386\n",
"8 1164.7 14.404119 14.404119 74.6639 74.6639 -0.000000\n",
"9 1230.8 15.065119 15.231787 58.7999 58.8000 0.166668\n",
"10 1350.8 16.431787 17.078454 30.0000 150.0000 0.646667\n",
"11 1508.4 18.654454 18.654454 112.1760 112.1760 0.000000\n",
"12 1639.8 19.968454 20.135120 80.6400 80.6400 0.166667\n",
"13 1809.4 21.831120 22.236507 39.9360 75.7440 0.405387\n",
"14 1947.3 23.615507 23.615507 42.6480 42.6480 0.000000\n",
"15 2000.0 24.142507 0.000000 30.0000 30.0000 -24.142507"
],
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" location \n",
" t_arr \n",
" t_dep \n",
" c_arr \n",
" c_dep \n",
" t_stop \n",
" \n",
" \n",
" index \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.0 \n",
" 0.000000 \n",
" 0.000000 \n",
" 30.0000 \n",
" 150.0000 \n",
" 0.000000 \n",
" \n",
" \n",
" 1 \n",
" 191.6 \n",
" 1.916000 \n",
" 2.389227 \n",
" 104.0160 \n",
" 150.0000 \n",
" 0.473227 \n",
" \n",
" \n",
" 2 \n",
" 310.6 \n",
" 3.579227 \n",
" 4.031493 \n",
" 121.4400 \n",
" 150.0000 \n",
" 0.452267 \n",
" \n",
" \n",
" 3 \n",
" 516.0 \n",
" 6.085493 \n",
" 6.252162 \n",
" 100.7040 \n",
" 100.7041 \n",
" 0.166669 \n",
" \n",
" \n",
" 4 \n",
" 683.6 \n",
" 7.928162 \n",
" 7.928162 \n",
" 60.4801 \n",
" 60.4801 \n",
" 0.000000 \n",
" \n",
" \n",
" 5 \n",
" 769.9 \n",
" 8.791162 \n",
" 9.241507 \n",
" 39.7681 \n",
" 53.9520 \n",
" 0.450345 \n",
" \n",
" \n",
" 6 \n",
" 869.7 \n",
" 10.239507 \n",
" 10.740733 \n",
" 30.0000 \n",
" 63.4560 \n",
" 0.501227 \n",
" \n",
" \n",
" 7 \n",
" 1009.1 \n",
" 12.134733 \n",
" 12.848119 \n",
" 30.0000 \n",
" 112.0079 \n",
" 0.713386 \n",
" \n",
" \n",
" 8 \n",
" 1164.7 \n",
" 14.404119 \n",
" 14.404119 \n",
" 74.6639 \n",
" 74.6639 \n",
" -0.000000 \n",
" \n",
" \n",
" 9 \n",
" 1230.8 \n",
" 15.065119 \n",
" 15.231787 \n",
" 58.7999 \n",
" 58.8000 \n",
" 0.166668 \n",
" \n",
" \n",
" 10 \n",
" 1350.8 \n",
" 16.431787 \n",
" 17.078454 \n",
" 30.0000 \n",
" 150.0000 \n",
" 0.646667 \n",
" \n",
" \n",
" 11 \n",
" 1508.4 \n",
" 18.654454 \n",
" 18.654454 \n",
" 112.1760 \n",
" 112.1760 \n",
" 0.000000 \n",
" \n",
" \n",
" 12 \n",
" 1639.8 \n",
" 19.968454 \n",
" 20.135120 \n",
" 80.6400 \n",
" 80.6400 \n",
" 0.166667 \n",
" \n",
" \n",
" 13 \n",
" 1809.4 \n",
" 21.831120 \n",
" 22.236507 \n",
" 39.9360 \n",
" 75.7440 \n",
" 0.405387 \n",
" \n",
" \n",
" 14 \n",
" 1947.3 \n",
" 23.615507 \n",
" 23.615507 \n",
" 42.6480 \n",
" 42.6480 \n",
" 0.000000 \n",
" \n",
" \n",
" 15 \n",
" 2000.0 \n",
" 24.142507 \n",
" 0.000000 \n",
" 30.0000 \n",
" 30.0000 \n",
" -24.142507 \n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "results",
"summary": "{\n \"name\": \"results\",\n \"rows\": 16,\n \"fields\": [\n {\n \"column\": \"index\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 4,\n \"min\": 0,\n \"max\": 15,\n \"num_unique_values\": 16,\n \"samples\": [\n 0,\n 1,\n 5\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"location\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 626.8555245229957,\n \"min\": 0.0,\n \"max\": 2000.0,\n \"num_unique_values\": 16,\n \"samples\": [\n 0.0,\n 191.6,\n 769.9\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"t_arr\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 7.715598867381851,\n \"min\": 0.0,\n \"max\": 24.14250700000007,\n \"num_unique_values\": 16,\n \"samples\": [\n 0.0,\n 1.916,\n 8.791162000000007\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"t_dep\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 7.712878680235608,\n \"min\": 0.0,\n \"max\": 23.61550700000006,\n \"num_unique_values\": 15,\n \"samples\": [\n 15.23178700000004,\n 18.65445366666673,\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"c_arr\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 32.97191876010049,\n \"min\": 30.0,\n \"max\": 121.44,\n \"num_unique_values\": 12,\n \"samples\": [\n 39.93599999999996,\n 80.63999999999999,\n 30.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"c_dep\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 41.36660570270018,\n \"min\": 30.0,\n \"max\": 150.0,\n \"num_unique_values\": 13,\n \"samples\": [\n 42.64800000000001,\n 80.63999999999999,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"t_stop\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 6.109653297216072,\n \"min\": -24.142507,\n \"max\": 0.713386,\n \"num_unique_values\": 12,\n \"samples\": [\n 0.405387,\n 0.166667,\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {}
}
],
"source": [
"def ev_plan(stations, x, D):\n",
" # data preprocessing\n",
"\n",
" # find stations between x and x + D\n",
" on_route = stations[(stations[\"location\"] >= x) & (stations[\"location\"] <= x + D)]\n",
"\n",
" # adjust the index to match the model directly\n",
" on_route.index += 1\n",
"\n",
" n = len(on_route)\n",
"\n",
" # get the values of the location parameter\n",
" location = on_route[\"location\"].to_dict()\n",
" location[0] = x\n",
" location[n + 1] = x + D\n",
"\n",
" # get the values for the dist parameter\n",
" dist = {}\n",
" for s in range(1, n + 2):\n",
" dist[s] = location[s] - location[s - 1]\n",
"\n",
" # define the indexing sets\n",
" # note the +1 at the end because Python ranges are not inclusive at the endpoint\n",
" STATIONS = list(range(1, n + 1)) # 1 to n\n",
" LOCATIONS = list(range(n + 2)) # 0 to n + 1\n",
" SEGMENTS = list(range(1, n + 2)) # 1 to n + 1\n",
"\n",
" # instantiate AMPL and load model\n",
" m = AMPL()\n",
" m.read(\"ev_plan.mod\")\n",
"\n",
" m.set[\"STATIONS\"] = STATIONS\n",
" m.set[\"LOCATIONS\"] = LOCATIONS\n",
" m.set[\"SEGMENTS\"] = SEGMENTS\n",
"\n",
" # load data\n",
" m.param[\"C\"] = on_route[\"kw\"]\n",
" m.param[\"location\"] = location\n",
" m.param[\"D\"] = D\n",
" m.param[\"n\"] = n\n",
" m.param[\"c_min\"] = c_min\n",
" m.param[\"c_max\"] = c_max\n",
" m.param[\"r_max\"] = r_max\n",
" m.param[\"t_lost\"] = t_lost\n",
" m.param[\"v\"] = v\n",
" m.param[\"R\"] = R\n",
" m.param[\"dist\"] = dist\n",
"\n",
" # initial conditions\n",
" m.var[\"x\"][0].fix(x)\n",
" m.var[\"t_dep\"][0].fix(0.0)\n",
" m.var[\"r_dep\"][0].fix(0.0)\n",
" m.var[\"c_dep\"][0].fix(c)\n",
"\n",
" # set solver and solve\n",
" m.solve(solver=SOLVER)\n",
" assert m.solve_result == \"solved\", m.solve_result\n",
"\n",
" return m\n",
"\n",
"\n",
"def get_results(model):\n",
" x = [(int(k), v) for k, v in model.var[\"x\"].to_list()]\n",
" t_arr = [v for k, v in model.var[\"t_arr\"].to_list()]\n",
" t_dep = [v for k, v in model.var[\"t_dep\"].to_list()]\n",
" c_arr = [v for k, v in model.var[\"c_arr\"].to_list()]\n",
" c_dep = [v for k, v in model.var[\"c_dep\"].to_list()]\n",
"\n",
" results = pd.DataFrame(x, columns=[\"index\", \"location\"]).set_index(\"index\")\n",
" results[\"t_arr\"] = t_arr\n",
" results[\"t_dep\"] = t_dep\n",
" results[\"c_arr\"] = c_arr\n",
" results[\"c_dep\"] = c_dep\n",
" results[\"t_stop\"] = results[\"t_dep\"] - results[\"t_arr\"]\n",
" results[\"t_stop\"] = results[\"t_stop\"].round(6)\n",
"\n",
" return results\n",
"\n",
"\n",
"m = ev_plan(stations, 0, 2000)\n",
"results = get_results(m)\n",
"display(results)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "6191e5d4-ac20-4b0c-b774-990d780f0295",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 751
},
"id": "6191e5d4-ac20-4b0c-b774-990d780f0295",
"outputId": "65adaf41-a809-4d90-c0a5-097eebef48e6"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"HiGHS 1.10.0: \b\b\b\b\b\b\b\b\b\b\b\b\b\bHiGHS 1.10.0: optimal solution; objective 24.142507\n",
"9961 simplex iterations\n",
"116 branching nodes\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
""
],
"image/png": "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tNeVjB49Wt9++62aN2+uAQMGKC8vT//973914403atu2bVdcd9WqVRo8eLDuuece1apVS7m5ufr000/l6emphIQE+3KNGzfWihUrNG7cOEVFRal69epq2rSpOnbsqE8//VQhISGqV6+eNm7cqBUrVig8PLzAfho2bChPT0+9/vrrSk1Nla+vr+644w5FRERclKl///764IMP1LdvX23ZskXVqlXTl19+qfXr12v8+PEqV65ckcbnt99+05133ql7771X9erVk5eXl77++msdP35c3bt3L9K2AABA2UKzDQAAlGnXXHONfvzxR73wwguaOXOm0tLSdM0116hdu3YX3aTgasLDw7Vo0SI99dRTGjlypMqXL69evXrpzjvvVFxcXKG24enpqW+++UZPPPGEpk2bJg8PD3Xt2lUvvviimjdvLj8/P0fKvEjjxo21ZMkSPf3003rhhRcUHR2tMWPGaM+ePRfdNfWfGjRooLi4OC1cuFBHjhxRQECAGjRooCVLlui2226zLzdu3Dj1799fI0eO1NmzZ9WnTx81bdpU7777rjw9PTVz5kxlZmaqefPmWrFixUVjFBkZqcmTJ2vs2LHq16+f8vLytHr16ks22/z9/bVmzRo999xzmjZtmtLS0lS7dm1NmTJFffv2LfL4REdHq0ePHlq5cqU+/fRTeXl5qU6dOpo9e3aBhiIAAMA/2Qwzr5QLAAAAp5g3b566du2q77//Xs2bN3fafrp06aJdu3Zp3759TtsHAABAacY12wAAAFzM2bNnCzzPy8vThAkTFBwcrJtvvtlp+9m3b58WL16s2NhY0/YBAABQ1nAaKQAAgIsZMmSIzp49q5iYGGVlZWnu3LnasGGDXn31Vfn7+5u2n+uuu059+/bVddddp0OHDun999+Xj4+Pnn32WdP2AQAAUNZwGikAAICLmTVrlt5++23t379fmZmZqlmzpgYMGKDBgwebup8HH3xQq1evVlJSknx9fRUTE6NXX33V1KPnAAAAyhqXaLa9//77ev/993Xw4EFJ0g033KBRo0apXbt2kqTMzEw99dRT+vzzz5WVlaW4uDhNmjRJlSpVsm8jMTFRAwYM0OrVqxUUFKQ+ffpo7Nix8vLi4D0AAAAAAACUDJe4ZluVKlX02muvacuWLdq8ebPuuOMOde7cWbt27ZIkDR06VAsXLtScOXO0du1aHT16VN26dbOvn5eXpw4dOig7O1sbNmzQtGnTNHXqVI0aNcqqkgAAAAAAAFAGucSRbZcSFhamN998U3fffbcqVqyoWbNm6e6775Yk/frrr6pbt642btyo2267TUuWLFHHjh119OhR+9FukydP1vDhw3Xy5En5+PhYWQoAAAAAAADKCJc7xzIvL09z5sxRRkaGYmJitGXLFuXk5KhNmzb2ZerUqaOqVavam20bN25U/fr1C5xWGhcXpwEDBmjXrl1q1KjRJfeVlZWlrKws+/P8/HwlJycrPDxcNpvNeUUCAAAAAADA5RmGodOnTysqKkoeHoU7QdRlmm07duxQTEyMMjMzFRQUpK+//lr16tXTtm3b5OPjo9DQ0ALLV6pUSUlJSZKkpKSkAo2286+ff+1yxo4dq5deesncQgAAAAAAAFCqHD58WFWqVCnUsi7TbKtdu7a2bdum1NRUffnll+rTp4/Wrl3r1H2OGDFCw4YNsz9PTU1V1apVdfjwYQUHBzt13wAAAAAAAHBtaWlpio6OVrly5Qq9jss023x8fFSzZk1JUuPGjbVp0ya9++67uu+++5Sdna2UlJQCR7cdP35ckZGRkqTIyEj99NNPBbZ3/Phx+2uX4+vrK19f34vmBwcH02wDAAAAAACAJBXpcmMucTfSS8nPz1dWVpYaN24sb29vrVy50v7a3r17lZiYqJiYGElSTEyMduzYoRMnTtiXWb58uYKDg1WvXr0Szw4AAAAAAICyySWObBsxYoTatWunqlWr6vTp05o1a5bWrFmjZcuWKSQkRP369dOwYcMUFham4OBgDRkyRDExMbrtttskSW3btlW9evX0wAMP6I033lBSUpJGjhypQYMGXfLINQAAAAAAAMAZXKLZduLECfXu3VvHjh1TSEiIbrrpJi1btkz/+te/JEnvvPOOPDw8lJCQoKysLMXFxWnSpEn29T09PbVo0SINGDBAMTExCgwMVJ8+fTRmzBirSgIAAAAAAEAZZDMMw7A6hKtIS0tTSEiIUlNTuWYbAAAAAAClUF5ennJycqyOARfh7e0tT0/Py77uSK/IJY5sAwAAAAAAcCbDMJSUlKSUlBSro8DFhIaGKjIyskg3QbgSmm0AAAAAAKDUO99oi4iIUEBAgGmNFbgvwzB05swZ+w03K1eubMp2abYBAAAAAIBSLS8vz95oCw8PtzoOXIi/v7+kc/cTiIiIuOIppYXlUewtAAAAAAAAuLDz12gLCAiwOAlc0fnPhVnX8qPZBgAAAAAAygROHcWlmP25oNkGAAAAAAAAmIRmGwAAAAAAgJuqVq2axo8f79R9rFmzRjabzSl3cnXmtq1Csw0AAAAAAACWaNasmY4dO6aQkBCro5iGu5ECAAAAAACgxOXk5MjHx0eRkZFWRzEVR7YBAAAAAICy6z//kXx9S2b6z3+KFC02NlaDBw/W4MGDFRISogoVKuiFF16QYRiXXWfcuHGqX7++AgMDFR0drYEDByo9Pd3++tSpUxUaGqply5apbt26CgoKUnx8vI4dO3bVPFu2bFGTJk0UEBCgZs2aae/evQVef//991WjRg35+Piodu3a+vTTTwu8brPZ9P777+uuu+5SYGCgXnnllYtOI42NjZXNZrtoOnjwoCQpMTFRnTt3VlBQkIKDg3Xvvffq+PHj9n2MHj1aDRs21Keffqpq1aopJCRE3bt31+nTp69an1lotgEAAAAAgLIrL0/Kzi6ZKS+vyPGmTZsmLy8v/fTTT3r33Xc1btw4ffTRR5dd3sPDQ++995527dqladOmadWqVXr22WcLLHPmzBm99dZb+vTTT7Vu3TolJibq6aefvmqWf//733r77be1efNmeXl56aGHHrK/9vXXX+uJJ57QU089pZ07d+rRRx/Vgw8+qNWrVxfYxujRo9W1a1ft2LGjwPrnzZ07V8eOHbNP3bp1U+3atVWpUiXl5+erc+fOSk5O1tq1a7V8+XL98ccfuu+++wps4/fff9e8efO0aNEiLVq0SGvXrtVrr7121frMwmmkAAAAAAAALio6OlrvvPOObDabateurR07duidd97RI488csnln3zySfvjatWq6eWXX9Zjjz2mSZMm2efn5ORo8uTJqlGjhiRp8ODBGjNmzFWzvPLKK2rVqpUk6bnnnlOHDh2UmZkpPz8/vfXWW+rbt68GDhwoSRo2bJh++OEHvfXWW2rdurV9G/fff78efPBB+/M//vijwD7CwsLsj9955x2tWrVKP/74o/z9/bV8+XLt2LFDBw4cUHR0tCRp+vTpuuGGG7Rp0ybdcsstkqT8/HxNnTpV5cqVkyQ98MADWrlypV555ZWr1mgGjmwDAAAAAABwUbfddptsNpv9eUxMjPbt26e8yxwlt2LFCt155526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TEREREREREREZkI212yTJAkjRozA+vXrsX37dvj4+BR6vVGjRrCyssK2bdu0z507dw7Xr1+Hr69vccclIiIiIiIiIiIzJJvBtoiICERFRWH58uUoUaIEUlJSkJKSgsePHwMAnJ2dMXjwYIwZMwY7duzAkSNHMHDgQPj6+vJOpFTY48dAkyYFy//3H6Mmt7wimWNbiayzMba3MWbShanUQyS5taHc8upK7vWUe35dmGOdiYiI9KSQJEkSHeJVKP7jgqyLFy/GgAEDAACZmZkYO3YsYmJikJWVhYCAAMyZM+c/p5E+TaVSwdnZGenp6XBycjJUdDI2Gg3g6FjwWK0GHBzE5nkZueUVyRzbSmSdjbG9jTGTLkylHiLJrQ3llldXcq+n3PPrwhzrTERE9ARdxopkc822VxkTtLW1xezZszF79uxiSERERERERERERFSYbKaREhERERERERERGTsOthERERERERERERkIB9uIiIiIiIiIiIgMhINtREREREREREREBiKbGyQQGZSbm+gEr0dueUUyx7YSWWdjbG9jzKQLU6mHSHJrQ7nl1ZXc6yn3/LowxzoTERHpQSG9ym0+zYQut3MlIiIiIiIiIiLTpMtYEaeREhERERERERERGQgH24iIiIiIiIiIiAyEg21kfh4/Bt56q2B5/Fh0mpeTW16RzLGtRNbZGNvbGDPpwlTqIZLc2lBueXUl93rKPb8uzLHOREREeuI1257Aa7aZCY0GcHQseKxWAw4OYvO8jNzyimSObSWyzsbY3saYSRemUg+R5NaGcsurK7nXU+75dWGOdSYiInoCr9lGREREREREREQkEAfbiIiIiIiIiIiIDISDbURERERERERERAbCwTYiIiIiIiIiIiID4WAbERERERERERGRgViKDkAkhL296ASvR255RTLHthJZZ2Nsb2PMpAtTqYdIcmtDueXVldzrKff8ujDHOhMREelBIUmSJDqEsdDldq5ERERERERERGSadBkr4jRSIiIiIiIiIiIiA+FgGxERERERERERkYFwsI3MT2Ym0LFjwZKZKTrNy8ktr0jm2FYi62yM7W2MmXRhKvUQSW5tKLe8upJ7PeWeXxfmWGciIiI98ZptT+A128yERgM4OhY8VqsBBwexeV5GbnlFMse2EllnY2xvY8ykC1Oph0hya0O55dWV3Osp9/y6MMc6ExERPYHXbCMiIiIiIiIiIhKIg21EREREREREREQGYpKDbbNnz0bFihVha2uLpk2b4uDBg6IjERERERERERGRGTC5wbaVK1dizJgxmDRpEo4ePYr69esjICAAd+7cER2NiIiIiIiIiIhMnMkNtv34448YMmQIBg4ciFq1amHevHmwt7fHokWLREcjIiIiIiIiIiITZyk6gCFlZ2fjyJEjmDBhgvY5pVIJf39/JCUlPbN+VlYWsrKytD+np6cDKLjTBJkwjebfxyoVkJcnLsurkFtekcyxrUTW2Rjb2xgz6cJU6iGS3NpQbnl1Jfd6yj2/LsyxzkRERE/4Z4xIkqRXfo9JDbbdu3cPeXl58PDwKPS8h4cH/v7772fWj4yMxJdffvnM8+XLly+yjGRkvLxEJ3g9cssrkjm2lcg6G2N7G2MmXZhKPUSSWxvKLa+u5F5PuefXhTnWmYiI6P9lZGTA2dn5ldY1qcG21zVhwgSMGTNG+3N+fj4ePHiAUqVKQaFQCExmOCqVCuXLl8eNGzfg5OQkOg6RwbBvkylivyZTxb5Npoj9mkwR+zWZKn36tiRJyMjIgNdrfOlkUoNtbm5usLCwQGpqaqHnU1NT4enp+cz6NjY2sLGxKfSci4tLUUYUxsnJiTtLMkns22SK2K/JVLFvkylivyZTxH5NpkrXvv2qZ7T9w6RukGBtbY1GjRph27Zt2ufy8/Oxbds2+Pr6CkxGRERERERERETmwKTObAOAMWPG4O2330bjxo3x5ptvYsaMGdBoNBg4cKDoaEREREREREREZOJMbrAtNDQUd+/exeeff46UlBQ0aNAACQkJz9w0wVzY2Nhg0qRJz0yXJZI79m0yRezXZKrYt8kUsV+TKWK/JlNV3H1bIb3OvUuJiIiIiIiIiIjoP5nUNduIiIiIiIiIiIhE4mAbERERERERERGRgXCwjYiIiIiIiIiIyEA42EZERERERERERGQgHGwzcbNnz0bFihVha2uLpk2b4uDBg6IjEf2nL774AgqFotBSo0YN7euZmZmIiIhAqVKl4OjoiO7duyM1NbVQGdevX0fHjh1hb28Pd3d3jBs3Drm5ucVdFTJju3fvRufOneHl5QWFQoENGzYUel2SJHz++ecoU6YM7Ozs4O/vjwsXLhRa58GDBwgPD4eTkxNcXFwwePBgqNXqQuucPHkSLVu2hK2tLcqXL4+pU6cWddXIzL2sbw8YMOCZfXhgYGChddi3ydhERkaiSZMmKFGiBNzd3dG1a1ecO3eu0DqG+vtj586deOONN2BjY4MqVapgyZIlRV09MlOv0q/feuutZ/bZw4YNK7QO+zUZm7lz56JevXpwcnKCk5MTfH19ER8fr33dmPbXHGwzYStXrsSYMWMwadIkHD16FPXr10dAQADu3LkjOhrRf6pduzaSk5O1y549e7SvjR49GrGxsVi9ejV27dqF27dvIyQkRPt6Xl4eOnbsiOzsbOzbtw9Lly7FkiVL8Pnnn4uoCpkpjUaD+vXrY/bs2c99ferUqZg5cybmzZuHAwcOwMHBAQEBAcjMzNSuEx4ejtOnT2Pr1q2Ii4vD7t27MXToUO3rKpUK7du3h7e3N44cOYLvv/8eX3zxBRYsWFDk9SPz9bK+DQCBgYGF9uExMTGFXmffJmOza9cuREREYP/+/di6dStycnLQvn17aDQa7TqG+PvjypUr6NixI1q3bo3jx49j1KhReOedd5CYmFis9SXz8Cr9GgCGDBlSaJ/95Jcb7NdkjMqVK4fJkyfjyJEjOHz4MNq0aYPg4GCcPn0agJHtryUyWW+++aYUERGh/TkvL0/y8vKSIiMjBaYi+m+TJk2S6tev/9zX0tLSJCsrK2n16tXa586ePSsBkJKSkiRJkqQtW7ZISqVSSklJ0a4zd+5cycnJScrKyirS7ETPA0Bav3699uf8/HzJ09NT+v7777XPpaWlSTY2NlJMTIwkSZJ05swZCYB06NAh7Trx8fGSQqGQbt26JUmSJM2ZM0cqWbJkoX798ccfS9WrVy/iGhEVeLpvS5Ikvf3221JwcPB/vod9m+Tgzp07EgBp165dkiQZ7u+Pjz76SKpdu3ahzwoNDZUCAgKKukpEz/RrSZKkVq1aSR988MF/vof9muSiZMmS0q+//mp0+2ue2WaisrOzceTIEfj7+2ufUyqV8Pf3R1JSksBkRC924cIFeHl5oVKlSggPD8f169cBAEeOHEFOTk6hPl2jRg1UqFBB26eTkpJQt25deHh4aNcJCAiASqXSfttBJNKVK1eQkpJSqB87OzujadOmhfqxi4sLGjdurF3H398fSqUSBw4c0K7j5+cHa2tr7ToBAQE4d+4cHj58WEy1IXrWzp074e7ujurVq+O9997D/fv3ta+xb5McpKenAwBcXV0BGO7vj6SkpEJl/LMO/y6n4vB0v/5HdHQ03NzcUKdOHUyYMAGPHj3SvsZ+TcYuLy8PK1asgEajga+vr9Htry11rRgZt3v37iEvL69QJwIADw8P/P3334JSEb1Y06ZNsWTJElSvXh3Jycn48ssv0bJlS/z1119ISUmBtbU1XFxcCr3Hw8MDKSkpAICUlJTn9vl/XiMS7Z9++Lx++mQ/dnd3L/S6paUlXF1dC63j4+PzTBn/vFayZMkiyU/0IoGBgQgJCYGPjw8uXbqETz75BEFBQUhKSoKFhQX7Nhm9/Px8jBo1Cs2bN0edOnUAwGB/f/zXOiqVCo8fP4adnV1RVInouf0aAPr06QNvb294eXnh5MmT+Pjjj3Hu3DmsW7cOAPs1Ga9Tp07B19cXmZmZcHR0xPr161GrVi0cP37cqPbXHGwjIqMRFBSkfVyvXj00bdoU3t7eWLVqFX9ZExEZubCwMO3junXrol69eqhcuTJ27tyJtm3bCkxG9GoiIiLw119/FbpeLJHc/Ve/fvJ6mXXr1kWZMmXQtm1bXLp0CZUrVy7umESvrHr16jh+/DjS09OxZs0avP3229i1a5foWM/gNFIT5ebmBgsLi2fuvJGamgpPT09BqYhej4uLC6pVq4aLFy/C09MT2dnZSEtLK7TOk33a09PzuX3+n9eIRPunH75o3+zp6fnMjWxyc3Px4MED9nWSlUqVKsHNzQ0XL14EwL5Nxm3EiBGIi4vDjh07UK5cOe3zhvr747/WcXJy4heKVGT+q18/T9OmTQGg0D6b/ZqMkbW1NapUqYJGjRohMjIS9evXx08//WR0+2sOtpkoa2trNGrUCNu2bdM+l5+fj23btsHX11dgMqJXp1arcenSJZQpUwaNGjWClZVVoT597tw5XL9+XdunfX19cerUqUIHc1u3boWTkxNq1apV7PmJnubj4wNPT89C/VilUuHAgQOF+nFaWhqOHDmiXWf79u3Iz8/X/iHs6+uL3bt3IycnR7vO1q1bUb16dU6zI6Nx8+ZN3L9/H2XKlAHAvk3GSZIkjBgxAuvXr8f27dufmcZsqL8/fH19C5Xxzzr8u5yKwsv69fMcP34cAArts9mvSQ7y8/ORlZVlfPtr3e73QHKwYsUKycbGRlqyZIl05swZaejQoZKLi0uhO28QGZOxY8dKO3fulK5cuSLt3btX8vf3l9zc3KQ7d+5IkiRJw4YNkypUqCBt375dOnz4sOTr6yv5+vpq35+bmyvVqVNHat++vXT8+HEpISFBKl26tDRhwgRRVSIzlJGRIR07dkw6duyYBED68ccfpWPHjknXrl2TJEmSJk+eLLm4uEgbN26UTp48KQUHB0s+Pj7S48ePtWUEBgZKDRs2lA4cOCDt2bNHqlq1qtS7d2/t62lpaZKHh4fUr18/6a+//pJWrFgh2dvbS/Pnzy/2+pL5eFHfzsjIkD788EMpKSlJunLlivTHH39Ib7zxhlS1alUpMzNTWwb7Nhmb9957T3J2dpZ27twpJScna5dHjx5p1zHE3x+XL1+W7O3tpXHjxklnz56VZs+eLVlYWEgJCQnFWl8yDy/r1xcvXpS++uor6fDhw9KVK1ekjRs3SpUqVZL8/Py0ZbBfkzEaP368tGvXLunKlSvSyZMnpfHjx0sKhUL6/fffJUkyrv01B9tM3KxZs6QKFSpI1tbW0ptvvint379fdCSi/xQaGiqVKVNGsra2lsqWLSuFhoZKFy9e1L7++PFjafjw4VLJkiUle3t7qVu3blJycnKhMq5evSoFBQVJdnZ2kpubmzR27FgpJyenuKtCZmzHjh0SgGeWt99+W5IkScrPz5cmTpwoeXh4SDY2NlLbtm2lc+fOFSrj/v37Uu/evSVHR0fJyclJGjhwoJSRkVFonRMnTkgtWrSQbGxspLJly0qTJ08uriqSmXpR33706JHUvn17qXTp0pKVlZXk7e0tDRky5Jkv+Ni3ydg8r08DkBYvXqxdx1B/f+zYsUNq0KCBZG1tLVWqVKnQZxAZ0sv69fXr1yU/Pz/J1dVVsrGxkapUqSKNGzdOSk9PL1QO+zUZm0GDBkne3t6StbW1VLp0aalt27bagTZJMq79tUKSJOn1zoUjIiIiIiIiIiKi5+E124iIiIiIiIiIiAyEg21EREREREREREQGwsE2IiIiIiIiIiIiA+FgGxERERERERERkYFwsI2IiIiIiIiIiMhAONhGRERERERERERkIBxsIyIiIiIiIiIiMhAOthERERERERERERkIB9uIiIiIiIiIiIgMhINtREREREREREREBsLBNiIiIiIiIiIiIgPhYBsREREREREREZGB/B8y6dWhwc4d/QAAAABJRU5ErkJggg==\n"
},
"metadata": {}
}
],
"source": [
"# visualize\n",
"\n",
"\n",
"def visualize(m):\n",
" D = m.param[\"D\"].value()\n",
"\n",
" results = get_results(m)\n",
"\n",
" results[\"t_stop\"] = results[\"t_dep\"] - results[\"t_arr\"]\n",
"\n",
" fig, ax = plt.subplots(2, 1, figsize=(15, 8), sharex=True)\n",
"\n",
" # plot stations\n",
" for station in stations.index:\n",
" xs = stations.loc[station, \"location\"]\n",
" ys = stations.loc[station, \"kw\"]\n",
" ax[0].plot([xs, xs], [0, ys], \"b\", lw=10, solid_capstyle=\"butt\")\n",
" ax[0].text(xs, 0 - 30, stations.loc[station, \"name\"], ha=\"center\")\n",
"\n",
" # plot planning horizon\n",
" ax[0].plot(\n",
" [x, x + D], [0, 0], \"r\", lw=5, solid_capstyle=\"butt\", label=\"plan horizon\"\n",
" )\n",
" ax[0].plot([x, x + D], [0, 0], \"r.\", ms=20)\n",
"\n",
" # annotations\n",
" ax[0].axhline(0)\n",
" ax[0].set_ylim(-50, 300)\n",
" ax[0].set_ylabel(\"kw\")\n",
" ax[0].set_title(\"charging stations\")\n",
" ax[0].legend()\n",
"\n",
" SEGMENTS = m.set[\"SEGMENTS\"].to_list()\n",
"\n",
" # plot battery charge\n",
" for i in SEGMENTS:\n",
" xv = [results.loc[i - 1, \"location\"], results.loc[i, \"location\"]]\n",
" cv = [results.loc[i - 1, \"c_dep\"], results.loc[i, \"c_arr\"]]\n",
" ax[1].plot(xv, cv, \"g\")\n",
"\n",
" STATIONS = m.set[\"STATIONS\"].to_list()\n",
"\n",
" # plot charge at stations\n",
" for i in STATIONS:\n",
" xv = [results.loc[i, \"location\"]] * 2\n",
" cv = [results.loc[i, \"c_arr\"], results.loc[i, \"c_dep\"]]\n",
" ax[1].plot(xv, cv, \"g\")\n",
"\n",
" # mark stop locations\n",
" for i in STATIONS:\n",
" if results.loc[i, \"t_stop\"] > 0:\n",
" ax[1].axvline(results.loc[i, \"location\"], color=\"r\", ls=\"--\")\n",
"\n",
" # show constraints on battery charge\n",
" ax[1].axhline(c_max, c=\"g\")\n",
" ax[1].axhline(c_min, c=\"g\")\n",
" ax[1].set_ylim(0, 1.1 * c_max)\n",
" ax[1].set_ylabel(\"Charge (kw)\")\n",
"\n",
"\n",
"visualize(ev_plan(stations, 0, 2000))"
]
},
{
"cell_type": "markdown",
"id": "479452ec-be4e-46e4-baa8-4f1e9de69968",
"metadata": {
"id": "479452ec-be4e-46e4-baa8-4f1e9de69968"
},
"source": [
"## Suggested Exercises\n",
"\n",
"1. Does increasing the battery capacity $c^{max}$ significantly reduce the time required to travel 2000 km? Explain what you observe.\n",
"\n",
"2. \"The best-laid schemes of mice and men go oft awry\" (Robert Burns, \"To a Mouse\"). Modify this model so that it can be used to update a plans in response to real-time measurements. How does the charging strategy change as a function of planning horizon $D$?"
]
}
],
"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"
},
"colab": {
"provenance": []
}
},
"nbformat": 4,
"nbformat_minor": 5
}