{ "cells": [ { "cell_type": "markdown", "id": "261dd435-3512-4a17-ae65-8c852d5ace69", "metadata": {}, "source": [ "```{index} disjunctive programming\n", "```\n", "```{index} single: application; electric vehicles\n", "```\n", "```{index} single: solver; cbc\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": null, "id": "700a2a08-73ab-411e-a5e0-8dafaf2fbc30", "metadata": {}, "outputs": [], "source": [ "# install dependencies and select solver\n", "%pip install -q amplpy matplotlib\n", "\n", "SOLVER = \"cbc\"\n", "\n", "from amplpy import AMPL, ampl_notebook\n", "\n", "ampl = ampl_notebook(\n", " modules=[\"cbc\"], # 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": {}, "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": {}, "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": {}, "source": [ "## Charging Station Information" ] }, { "cell_type": "code", "execution_count": 30, "id": "fff98145-1b94-42cf-9b0d-ec3593495a8c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namelocationkw
0S_00191.6150
1S_01310.6100
2S_02516.050
3S_03683.650
4S_04769.950
5S_05869.7100
6S_061009.1150
7S_071164.7100
8S_081230.8100
9S_091350.8250
10S_101508.4100
11S_111639.8100
12S_121809.4150
13S_131947.3250
14S_142145.2150
15S_152337.5100
16S_162415.6100
17S_172590.0100
18S_182691.2100
19S_192896.2100
\n", "
" ], "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" ] }, "metadata": {}, "output_type": "display_data" } ], "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": {}, "source": [ "## Route Information" ] }, { "cell_type": "code", "execution_count": 31, "id": "3be8a0da-811d-49cf-ab77-b42011fb7fc0", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABNsAAAE8CAYAAAD5bLdMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZ00lEQVR4nO3de1xU1f7/8feAMIAwIMrNBO9517yUkaWYJJh5tOxUdtPyZCl20W5apmanLCu1PJX17SRWWmnHtDxp4r2SzEi85/EapqCmASpyEdbvjx7OzwlUwBkY4PV8POYRs/faa33WmsWw+7j23hZjjBEAAAAAAACAS+ZR2QEAAAAAAAAA1QXJNgAAAAAAAMBJSLYBAAAAAAAATkKyDQAAAAAAAHASkm0AAAAAAACAk5BsAwAAAAAAAJyEZBsAAAAAAADgJCTbAAAAAAAAACch2QYAAAAAAAA4Cck2AACAi0hMTJTFYtFPP/1U2aE4mDhxoiwWS2WHUSliYmIUExNT2WEAAAAUQ7INAAAALvHSSy9p4cKF5T5++/btmjhxovbv3++0mAAAAFyNZBsAAEAVNW7cOJ0+fbqywzgvZyTbnn/++RKTbcuWLdOyZcvKHxwAAICLkGwDAABwEzk5OWUqX6tWLfn4+LgoGvfm7e0tb2/vyg4DAACgGJJtAACgxjt48KCGDh2q+vXry2q1qnHjxho+fLjy8/MdyuXl5Wn06NEKCQlR7dq1dfPNN+vo0aMOZRYtWqS+ffva62ratKleeOEFFRYWOpSLiYlR27ZtlZKSou7du8vPz0/PPPOMJOnYsWO65557ZLPZFBQUpMGDB2vTpk2yWCxKTEy011HSPdssFotGjhyphQsXqm3btrJarWrTpo2WLl1arN+rV69Wly5d5OPjo6ZNm+rdd98t9X3gdu3apYEDByo8PFw+Pj5q0KCB7rjjDmVlZdnjOHXqlGbPni2LxSKLxaIhQ4ZIkn799VeNGDFCLVq0kK+vr+rWrau///3vDivYEhMT9fe//12S1LNnT3sdq1evto/fX+/ZduTIEQ0dOlRhYWHy8fFRhw4dNHv2bIcy+/fvl8Vi0Wuvvab33ntPTZs2ldVq1ZVXXqkNGzY4lM3IyNB9992nBg0ayGq1KiIiQv379+eyVgAAcEG1KjsAAACAynTo0CFdddVVyszM1LBhw9SyZUsdPHhQn3/+uXJychxWTz388MOqU6eOJkyYoP3792v69OkaOXKkPvvsM3uZxMRE+fv7a/To0fL399fKlSs1fvx4ZWdn69VXX3Vo+9ixY+rTp4/uuOMO3X333QoLC1NRUZH69eunH3/8UcOHD1fLli21aNEiDR48uNR9+u6777RgwQKNGDFCAQEBevPNNzVw4EClpaWpbt26kqSNGzcqPj5eERERev7551VYWKhJkyYpJCTkovXn5+crLi5OeXl5evjhhxUeHq6DBw9q8eLFyszMVGBgoD766CP94x//0FVXXaVhw4ZJkpo2bSpJ2rBhg9atW6c77rhDDRo00P79+/XOO+8oJiZG27dvl5+fn7p3765HHnlEb775pp555hm1atVKkuz//avTp08rJiZGu3fv1siRI9W4cWPNnz9fQ4YMUWZmph599FGH8nPnztWJEyf04IMPymKxaMqUKbrlllu0d+9eeXl5SZIGDhyobdu26eGHH1ajRo105MgRJSUlKS0tTY0aNSr15wEAAGoYAwAAUIPde++9xsPDw2zYsKHYvqKiImOMMbNmzTKSTGxsrH2bMcaMGjXKeHp6mszMTPu2nJycYvU8+OCDxs/Pz+Tm5tq39ejRw0gyM2fOdCj7n//8x0gy06dPt28rLCw0119/vZFkZs2aZd8+YcIE89fTOUnG29vb7N69275t06ZNRpKZMWOGfVu/fv2Mn5+fOXjwoH3brl27TK1atYrV+VcbN240ksz8+fMvWK527dpm8ODBxbaXNEbJyclGkvnwww/t2+bPn28kmVWrVhUr36NHD9OjRw/7++nTpxtJ5uOPP7Zvy8/PN9HR0cbf399kZ2cbY4zZt2+fkWTq1q1rjh8/bi+7aNEiI8l89dVXxhhj/vjjDyPJvPrqqxfsIwAAwF9xGSkAAKixioqKtHDhQvXr109dunQptv+vl1MOGzbMYdt1112nwsJC/frrr/Ztvr6+9p9PnDih33//Xdddd51ycnL0yy+/ONRntVp13333OWxbunSpvLy89MADD9i3eXh4KCEhodT9io2Nta8ik6T27dvLZrNp7969kqTCwkItX75cAwYMUP369e3lmjVrpj59+ly0/sDAQEnSN998U+b7zEmOY1RQUKBjx46pWbNmCgoK0s8//1zm+iTp66+/Vnh4uAYNGmTf5uXlpUceeUQnT57UmjVrHMrffvvtqlOnjv39ddddJ0n2MfL19ZW3t7dWr16tP/74o1wxAQCAmolkGwAAqLGOHj2q7OxstW3btlTlo6KiHN6fTdacm4zZtm2bbr75ZgUGBspmsykkJER33323JNnvZ3bWZZddVuwm/7/++qsiIiLk5+fnsL1Zs2al61QJcZ6N9WycR44c0enTp0usszTtNG7cWKNHj9b777+vevXqKS4uTm+99Vax/p3P6dOnNX78eEVGRspqtapevXoKCQlRZmZmqev4q19//VXNmzeXh4fj6e3Zy07PTYhKF/8srVarXnnlFS1ZskRhYWHq3r27pkyZooyMjHLFBwAAag6SbQAAAKXk6elZ4nZjjCQpMzNTPXr00KZNmzRp0iR99dVXSkpK0iuvvCLpz5V05zp3hVdFxukMr7/+ujZv3qxnnnlGp0+f1iOPPKI2bdrot99+u+ixDz/8sF588UXddtttmjdvnpYtW6akpCTVrVu32Bi5SmnG6LHHHtP//vc/TZ48WT4+PnruuefUqlUrbdy4sUJiBAAAVRMPSAAAADVWSEiIbDabtm7d6pT6Vq9erWPHjmnBggXq3r27ffu+fftKXUfDhg21atUq5eTkOKxu2717t1NilKTQ0FD5+PiUWGdZ2mnXrp3atWuncePGad26derWrZtmzpypf/7zn5KKX4Z71ueff67Bgwfr9ddft2/Lzc1VZmamQ7nSPBX1rIYNG2rz5s0qKipyWN129tLdhg0blrquczVt2lSPP/64Hn/8ce3atUtXXHGFXn/9dX388cflqg8AAFR/rGwDAAA1loeHhwYMGKCvvvpKP/30U7H9ZV0Jdna11LnH5efn6+233y51HXFxcSooKND//d//2bcVFRXprbfeKlMsF4szNjZWCxcu1KFDh+zbd+/erSVLllz0+OzsbJ05c8ZhW7t27eTh4aG8vDz7ttq1axdLoJ1t/69jO2PGDBUWFjpsq127tiSVWMdf3XjjjcrIyHB4MuyZM2c0Y8YM+fv7q0ePHhet41w5OTnKzc112Na0aVMFBAQ49BEAAOCvWNkGAABqtJdeeknLli1Tjx49NGzYMLVq1Urp6emaP3++vvvuOwUFBZW6rmuuuUZ16tTR4MGD9cgjj8hiseijjz4qU9JuwIABuuqqq/T4449r9+7datmypb788ksdP35cUtlWe13IxIkTtWzZMnXr1k3Dhw9XYWGh/vWvf6lt27ZKTU294LErV67UyJEj9fe//12XX365zpw5o48++kienp4aOHCgvVznzp21fPlyTZ06VfXr11fjxo3VtWtX3XTTTfroo48UGBio1q1bKzk5WcuXL1fdunUd2rniiivk6empV155RVlZWbJarbr++usVGhpaLKZhw4bp3Xff1ZAhQ5SSkqJGjRrp888/1/fff6/p06crICCgTOPzv//9T7169dJtt92m1q1bq1atWvriiy90+PBh3XHHHWWqCwAA1Cwk2wAAQI122WWXaf369Xruuec0Z84cZWdn67LLLlOfPn2KPaTgYurWravFixfr8ccf17hx41SnTh3dfffd6tWrl+Li4kpVh6enp/773//q0Ucf1ezZs+Xh4aGbb75ZEyZMULdu3eTj41OebhbTuXNnLVmyRE888YSee+45RUZGatKkSdqxY0exp6b+VYcOHRQXF6evvvpKBw8elJ+fnzp06KAlS5bo6quvtpebOnWqhg0bpnHjxun06dMaPHiwunbtqjfeeEOenp6aM2eOcnNz1a1bNy1fvrzYGIWHh2vmzJmaPHmyhg4dqsLCQq1atarEZJuvr69Wr16tMWPGaPbs2crOzlaLFi00a9YsDRkypMzjExkZqUGDBmnFihX66KOPVKtWLbVs2VLz5s1zSCgCAAD8lcU48065AAAAcImFCxfq5ptv1nfffadu3bq5rJ0BAwZo27Zt2rVrl8vaAAAAqM64ZxsAAICbOX36tMP7wsJCzZgxQzabTZ06dXJZO7t27dLXX3+tmJgYp7UBAABQ03AZKQAAgJt5+OGHdfr0aUVHRysvL08LFizQunXr9NJLL8nX19dp7TRp0kRDhgxRkyZN9Ouvv+qdd96Rt7e3nnrqKae1AQAAUNNwGSkAAICbmTt3rl5//XXt3r1bubm5atasmYYPH66RI0c6tZ377rtPq1atUkZGhqxWq6Kjo/XSSy85dfUcAABATeMWybZ33nlH77zzjvbv3y9JatOmjcaPH68+ffpIknJzc/X444/r008/VV5enuLi4vT2228rLCzMXkdaWpqGDx+uVatWyd/fX4MHD9bkyZNVqxaL9wAAAAAAAFAx3OKebQ0aNNDLL7+slJQU/fTTT7r++uvVv39/bdu2TZI0atQoffXVV5o/f77WrFmjQ4cO6ZZbbrEfX1hYqL59+yo/P1/r1q3T7NmzlZiYqPHjx1dWlwAAAAAAAFADucXKtpIEBwfr1Vdf1a233qqQkBDNnTtXt956qyTpl19+UatWrZScnKyrr75aS5Ys0U033aRDhw7ZV7vNnDlTTz/9tI4ePSpvb+/K7AoAAAAAAABqCLe7xrKwsFDz58/XqVOnFB0drZSUFBUUFCg2NtZepmXLloqKirIn25KTk9WuXTuHy0rj4uI0fPhwbdu2TR07diyxrby8POXl5dnfFxUV6fjx46pbt64sFovrOgkAAAAAAAC3Z4zRiRMnVL9+fXl4lO4CUbdJtm3ZskXR0dHKzc2Vv7+/vvjiC7Vu3Vqpqany9vZWUFCQQ/mwsDBlZGRIkjIyMhwSbWf3n913PpMnT9bzzz/v3I4AAAAAAACgWjlw4IAaNGhQqrJuk2xr0aKFUlNTlZWVpc8//1yDBw/WmjVrXNrm2LFjNXr0aPv7rKwsRUVF6cCBA7LZbC5tGwAAAAAAAO4tOztbkZGRCggIKPUxbpNs8/b2VrNmzSRJnTt31oYNG/TGG2/o9ttvV35+vjIzMx1Wtx0+fFjh4eGSpPDwcP34448O9R0+fNi+73ysVqusVmux7TabjWQbAAAAAAAAJKlMtxtzi6eRlqSoqEh5eXnq3LmzvLy8tGLFCvu+nTt3Ki0tTdHR0ZKk6OhobdmyRUeOHLGXSUpKks1mU+vWrSs8dgAAAAAAANRMbrGybezYserTp4+ioqJ04sQJzZ07V6tXr9Y333yjwMBADR06VKNHj1ZwcLBsNpsefvhhRUdH6+qrr5Yk9e7dW61bt9Y999yjKVOmKCMjQ+PGjVNCQkKJK9cAAAAAAAAAV3CLZNuRI0d07733Kj09XYGBgWrfvr2++eYb3XDDDZKkadOmycPDQwMHDlReXp7i4uL09ttv24/39PTU4sWLNXz4cEVHR6t27doaPHiwJk2aVFldAgAAAAAAQA1kMcaYyg7CXWRnZyswMFBZWVncsw0AAAAAgGrGGKMzZ86osLCwskOBm/D09FStWrXOe0+28uSK3GJlGwAAAAAAgCvl5+crPT1dOTk5lR0K3Iyfn58iIiLk7e3tlPpItgEAAAAAgGqtqKhI+/btk6enp+rXry9vb+8yPV0S1ZMxRvn5+Tp69Kj27dun5s2by8Pj0p8lSrINAAAAAABUa/n5+SoqKlJkZKT8/PwqOxy4EV9fX3l5eenXX39Vfn6+fHx8LrnOS0/XAQAAAAAAVAHOWLWE6sfZ84JZBgAAAAAAADgJyTYAAAAAAADASUi2AQAAAAAAVFGNGjXS9OnTXdrG6tWrZbFYlJmZWaXqriwk2wAAAAAAAFAprrnmGqWnpyswMLCyQ3Eakm0AAAAAAKDmeuEFyWqtmNcLL1R2b91KQUGBvL29FR4eLovFUtnhOA3JNgAAAAAAUHMVFkr5+RXzKiwsU2gxMTEaOXKkRo4cqcDAQNWrV0/PPfecjDHnPWbq1Klq166dateurcjISI0YMUInT560709MTFRQUJC++eYbtWrVSv7+/oqPj1d6evpF40lJSVGXLl3k5+ena665Rjt37nTY/84776hp06by9vZWixYt9NFHHznst1gseuedd/S3v/1NtWvX1osvvljsMtKYmBhZLJZir/3790uS0tLS1L9/f/n7+8tms+m2227T4cOH7W1MnDhRV1xxhT766CM1atRIgYGBuuOOO3TixImL9s9ZSLYBAAAAAAC4qdmzZ6tWrVr68ccf9cYbb2jq1Kl6//33z1vew8NDb775prZt26bZs2dr5cqVeuqppxzK5OTk6LXXXtNHH32ktWvXKi0tTU888cRFY3n22Wf1+uuv66efflKtWrV0//332/d98cUXevTRR/X4449r69atevDBB3Xfffdp1apVDnVMnDhRN998s7Zs2eJw/FkLFixQenq6/XXLLbeoRYsWCgsLU1FRkfr376/jx49rzZo1SkpK0t69e3X77bc71LFnzx4tXLhQixcv1uLFi7VmzRq9/PLLF+2fs9SqsJYAAAAAAABQJpGRkZo2bZosFotatGihLVu2aNq0aXrggQdKLP/YY4/Zf27UqJH++c9/6qGHHtLbb79t315QUKCZM2eqadOmkqSRI0dq0qRJF43lxRdfVI8ePSRJY8aMUd++fZWbmysfHx+99tprGjJkiEaMGCFJGj16tH744Qe99tpr6tmzp72OO++8U/fdd5/9/d69ex3aCA4Otv88bdo0rVy5UuvXr5evr6+SkpK0ZcsW7du3T5GRkZKkDz/8UG3atNGGDRt05ZVXSpKKioqUmJiogIAASdI999yjFStW6MUXX7xoH52BlW0AAAAAAABu6uqrr3a4n1l0dLR27dqlwvNckrp8+XL16tVLl112mQICAnTPPffo2LFjysnJsZfx8/OzJ9okKSIiQkeOHLloLO3bt3c4RpL9uB07dqhbt24O5bt166YdO3Y4bOvSpctF25GkJUuWaMyYMfrss890+eWX29uIjIy0J9okqXXr1goKCnJop1GjRvZEW1n65ywk2wAAAAAAAKqB/fv366abblL79u31n//8RykpKXrrrbckSfn5+fZyXl5eDsdZLJYL3geupOPOJgCLiorKFGPt2rUvWmb79u2644479PLLL6t3795lql8quX9ljfNScBkpAAAAAACouTw9JW/vimurjNavX+/w/ocfflDz5s3lWUJdKSkpKioq0uuvvy4Pjz/XV82bN698sZZRq1at9P3332vw4MH2bd9//71at25dpnp+//139evXTwMHDtSoUaOKtXHgwAEdOHDAvrpt+/btyszMLHM7rkSyDQAAAAAA1FzPPffny02lpaVp9OjRevDBB/Xzzz9rxowZev3110ss26xZMxUUFGjGjBnq16+fvv/+e82cObNC4nzyySd12223qWPHjoqNjdVXX32lBQsWaPny5WWqZ+DAgfLz89PEiROVkZFh3x4SEqLY2Fi1a9dOd911l6ZPn64zZ85oxIgR6tGjR6kvT60IXEYKAAAAAADgpu69916dPn1aV111lRISEvToo49q2LBhJZbt0KGDpk6dqldeeUVt27bVnDlzNHny5AqJc8CAAXrjjTf02muvqU2bNnr33Xc1a9YsxcTElKmetWvXauvWrWrYsKEiIiLsrwMHDshisWjRokWqU6eOunfvrtjYWDVp0kSfffaZazpVThZTmotya4js7GwFBgYqKytLNputssMBAAAAAABOkJubq3379qlx48by8fGp7HBKLSYmRldccYWmT59e2aFUaxeaH+XJFbGyDQAAAAAAAHASkm0AAAAAAACAk/CABAAAAAAAADe0evXqyg4B5cDKNgAAAAAAAMBJ3CLZNnnyZF155ZUKCAhQaGioBgwYoJ07dzqUiYmJkcVicXg99NBDDmXS0tLUt29f+fn5KTQ0VE8++aTOnDlTkV0BAAAAAABuimdEoiTOnhducRnpmjVrlJCQoCuvvFJnzpzRM888o969e2v79u2qXbu2vdwDDzygSZMm2d/7+fnZfy4sLFTfvn0VHh6udevWKT09Xffee6+8vLz00ksvVWh/AAAAAACA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Y8eO1b/+9S9XdumiXNlnDw8P9e/fX19++aX+97//KTExUcuXL9dDDz3k8rbPNXToULVv377Sx+OsWbNmKT093f5y1cmpq/sydepUPfvssxozZoy2bdum5cuXKy4uziV9KYkr+3f77bcrPT1dXbt2VadOnfT555+re/fu6tixo3r37u2UNk6ePKn4+HhFRUVp/fr1+u677xQQEKC4uDgVFBS41Xhs2rRJN954o+Lj47Vx40Z99tln+vLLLzVmzJgyx3mpLqWfOTk5io+P1zPPPHPeMnfddZe2bdumpKQkLV68WGvXrtWwYcOqTPz5+fn6+9//ruHDhzstZmdwZb9/+eUXFRUV6d1339W2bds0bdo0zZw584LjVF6u/vx69uypefPmaefOnfrPf/6jPXv26NZbb3VmF1zK1eNz1lNPPaX69es7I+QKURHjMmnSJIdzi1WrVrm0zf/85z+65557dN9992nTpk36/vvvdeedd1607oriyjG/5pprHMY6PT1d//jHP9S4cWN16dKlwuORpJtuuklnzpzRypUrlZKSog4dOuimm25SRkbGRet3N64cq0OHDik2NlbNmjXT+vXrtXTpUm3btk1Dhgxxci8qkYFdVlaWkWSysrIqOxSUwh9//GEkmdWrV5f52MzMTOPl5WXmz59v37Zjxw4jySQnJxtjjPn666+Nh4eHycjIsJd55513jM1mM3l5eW4X77kmTJhgOnToUOZ23EVFjtVZI0aMMD179ixXvM5QGX1+4403TIMGDSqs7bffftv06NHDrFixwkgyf/zxx3nrrYiYJJkvvviizPWXlav7cvz4cePr62uWL1/utJjLoiI+q3PbOHLkiPHy8jIffvih09rYsGGDkWTS0tLsZTZv3mwkmV27dpWpT64ej7Fjx5ouXbo4HPfll18aHx8fk52dXeY2y+tS+nmuVatWlfh9sH37diPJbNiwwb5tyZIlxmKxmIMHD15Sm8a4Pv5zzZo1ywQGBl5SO85Skf0+a8qUKaZx48aX1N5fVUY/Fi1aZCwWi8nPz7+kNitCRY3P119/bVq2bGm2bdtmJJmNGzdeUnuuVhHj0rBhQzNt2rQKa7OgoMBcdtll5v3337+k+l2lon9X8/PzTUhIiJk0aVKlxHP06FEjyaxdu9a+LTs720gySUlJl9RmRXP1WL377rsmNDTUFBYW2reV99yrIpQnV8TKNlRZ/v7+8vf318KFC5WXl1emY1NSUlRQUKDY2Fj7tpYtWyoqKkrJycmSpOTkZLVr105hYWH2MnFxccrOzta2bdvcLt7qpDLGKisrS8HBweWO+VJVdJ8PHTqkBQsWqEePHhXS9vbt2zVp0iR9+OGH8vC4+J+eihqPhIQE1atXT1dddZU++OADGRc8M8jVfUlKSlJRUZEOHjyoVq1aqUGDBrrtttt04MABp/bjfCriszq3jQ8++EB+fn6lXmFSmjZatGihunXr6t///rfy8/N1+vRp/fvf/1arVq3UqFGjMvXJ1eORl5cnHx8fh+N8fX2Vm5urlJSUMrV3KS6ln6WRnJysoKAgh5UJsbGx8vDw0Pr16y+5flfH764qo9+u+Pta0f04fvy45syZo2uuuUZeXl4ub+9SVcT4HD58WA888IA++ugj+fn5uaQNZ6uoefPyyy+rbt266tixo2bOnOnSNn/++WcdPHhQHh4e6tixoyIiItSnTx9t3brV6W2VR0X/rn755Zc6duyY7rvvvkqJp27dumrRooU+/PBDnTp1SmfOnNG7776r0NBQde7c2entuZKrxyovL0/e3t4O/1/g6+srSfruu++c3l5lINmGKqtWrVpKTEzU7NmzFRQUpG7duumZZ57R5s2bL3psRkaGvL29i91DJSwszL7ENyMjwyHRdnb/2X3uFm91UtFjtW7dOn322WdOvTyprCqqz4MGDZKfn58uu+wy2Ww2vf/++y5vOy8vT4MGDdKrr76qqKioi9YpVcx4TJo0SfPmzVNSUpIGDhyoESNGaMaMGaWKryxc3Ze9e/eqqKhIL730kqZPn67PP/9cx48f1w033OCS+yT9VUV8Vue2MXbsWPn6+uqFF15wWhsBAQFavXq1Pv74Y/n6+srf319Lly7VkiVLVKtW2Z4l5erxiIuL07p16/TJJ5+osLBQBw8e1KRJkyRJ6enpZYr1UlxKP0sjIyNDoaGhxdoMDg52yt89V8fvriq637t379aMGTP04IMPOrXeiurH008/rdq1a6tu3bpKS0vTokWLnFq/q7h6fIwxGjJkiB566KHzXqrnjipi3jzyyCP69NNPtWrVKj344IN65ZVXFBMT47I29+7dK0maOHGixo0bp8WLF6tOnTqKiYnR8ePHndLGpajo75x///vfiouLU4MGDSolHovFouXLl2vjxo0KCAiQj4+Ppk6dqqVLl6pOnTpOaaOiuHqsrr/+emVkZOjVV19Vfn6+/vjjD/stMSryfMaVSLahShs4cKAOHTqkL7/8UvHx8Vq9erU6deqkxMTEyg6tRFUt3spUUWO1detW9e/fXxMmTFDv3r2dWndZVUSfp02bpp9//lmLFi3Snj17NHr0aJe3PXbsWLVq1Up33313mY5z9Xg899xz6tatmzp27Kinn35aTz31lF599VWn1P1XruxLUVGRCgoK9OabbyouLk5XX321PvnkE+3atavCbshbEXN34MCBWrBggYwxGjBggFPbOH36tIYOHapu3brphx9+0Pfff6+2bduqb9++On36dLliddV49O7dW6+++qoeeughWa1WXX755brxxhslqVSrRp2pqv9Nq+rxl1dF9fvgwYOKj4/X3//+dz3wwANOrVuqmH48+eST2rhxo5YtWyZPT0/de++9LlkB7QquHJ8ZM2boxIkTGjt27KUHWsFcPW9Gjx6tmJgYtW/fXg899JBef/11LV26VPv27XPZOYAkPfvssxo4cKA6d+6sWbNmyWKxaP78+ZdcvzNU1HfOb7/9pm+++UZDhw6ttHiMMUpISFBoaKi+/fZb/fjjjxowYID69etXJRNIrhyrNm3aaPbs2Xr99dfl5+en8PBwNW7cWGFhYRV+PuMyrrmitWrinm3Vw9ChQ01UVNQFy5zvnlFRUVFm6tSpxhhjnnvuuWL3Pdu7d6+RZH7++We3i/dcVf2ebefj7LHatm2bCQ0NNc8884yzQ3UaV8yPs7799lsjyRw6dMilbXfo0MF4eHgYT09P4+npaTw8PIwk4+npacaPH3/B+l0VU0kWL15sJJnc3NwyxVRezurLBx98YCSZAwcOOJQJDQ017733nlNjLgtXfFb333+/ueKKK5zexvvvv1/sviF5eXnGz8/PfPLJJxesv7ScPR5FRUXm4MGDJicnx35/sx9//NEpsV6K0vTzXOe7l8u///1vExQU5LCtoKDAeHp6mgULFjgj1BI5K/5zudM9287H2f0+ePCgad68ubnnnnscfq9czRWf31kHDhwwksy6desuIcLK5azx6d+/v8PfdU9PT/vf9XvvvdfJUbueK+fN1q1bjSTzyy+/uKTNlStXGknm22+/ddh+1VVXVfnz23OVZswnTZpkQkJCynVfRWfF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AAAAAAAAAFQnVeIyUgAAAAAAAKAqINkGAAAAAAAAOAnJNgAAAAAAAMBJSLYBAAAAAAAATkKyrZp766231KhRI/n4+Khr16768ccfKzsk4LwmTpwoi8Xi8GrZsqV9f25urhISElS3bl35+/tr4MCBOnz4sEMdaWlp6tu3r/z8/BQaGqonn3xSZ86cqeiuoAZbu3at+vXrp/r168tisWjhwoUO+40xGj9+vCIiIuTr66vY2Fjt2rXLoczx48d11113yWazKSgoSEOHDtXJkycdymzevFnXXXedfHx8FBkZqSlTpri6a6jhLja3hwwZUuw7PD4+3qEMcxvuZvLkybryyisVEBCg0NBQDRgwQDt37nQo46zzj9WrV6tTp06yWq1q1qyZEhMTXd091FClmdcxMTHFvrMfeughhzLMa7ibd955R+3bt5fNZpPNZlN0dLSWLFli3+9O39ck26qxzz77TKNHj9aECRP0888/q0OHDoqLi9ORI0cqOzTgvNq0aaP09HT767vvvrPvGzVqlL766ivNnz9fa9as0aFDh3TLLbfY9xcWFqpv377Kz8/XunXrNHv2bCUmJmr8+PGV0RXUUKdOnVKHDh301ltvlbh/ypQpevPNNzVz5kytX79etWvXVlxcnHJzc+1l7rrrLm3btk1JSUlavHix1q5dq2HDhtn3Z2dnq3fv3mrYsKFSUlL06quvauLEiXrvvfdc3j/UXBeb25IUHx/v8B3+ySefOOxnbsPdrFmzRgkJCfrhhx+UlJSkgoIC9e7dW6dOnbKXccb5x759+9S3b1/17NlTqampeuyxx/SPf/xD33zzTYX2FzVDaea1JD3wwAMO39nn/uMG8xruqEGDBnr55ZeVkpKin376Sddff7369++vbdu2SXKz72uDauuqq64yCQkJ9veFhYWmfv36ZvLkyZUYFXB+EyZMMB06dChxX2ZmpvHy8jLz58+3b9uxY4eRZJKTk40xxnz99dfGw8PDZGRk2Mu88847xmazmby8PJfGDpREkvniiy/s74uKikx4eLh59dVX7dsyMzON1Wo1n3zyiTHGmO3btxtJZsOGDfYyS5YsMRaLxRw8eNAYY8zbb79t6tSp4zCvn376adOiRQsX9wj401/ntjHGDB482PTv3/+8xzC3URUcOXLESDJr1qwxxjjv/OOpp54ybdq0cWjr9ttvN3Fx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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "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": {}, "source": [ "## Car Information" ] }, { "cell_type": "code", "execution_count": 32, "id": "2d6dad34-d50b-4acf-bb44-2fbf3e044086", "metadata": {}, "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": {}, "source": [ "## AMPL Model" ] }, { "cell_type": "code", "execution_count": 33, "id": "5cabe50f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "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": 34, "id": "d061b189-5ccd-4949-a1b9-f736533e8389", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cbc 2.10.7: \b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.7: optimal solution; objective 24.142507\n", "12091 simplex iterations\n", "12091 barrier iterations\n", "102 branching nodes\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
locationt_arrt_depc_arrc_dept_stop
index
00.00.0000000.00000030.0000150.00000.000000
1191.61.9160002.389227104.0160150.00000.473227
2310.63.5792274.031493121.4400150.00000.452267
3516.06.0854936.535840100.7040114.88800.450347
4683.68.2118408.21184074.664074.66400.000000
5769.99.0748409.24150753.952053.95200.166667
6869.710.23950710.74073330.000063.45600.501227
71009.112.13473312.84812030.0000112.00800.713387
81164.714.40412014.57078774.664074.66400.166667
91230.815.23178715.23178758.800058.80000.000000
101350.816.43178717.07845330.0000150.00000.646667
111508.418.65445318.654453112.1760112.1760-0.000000
121639.819.96845320.13512180.640080.64010.166668
131809.421.83112122.23650739.936175.74400.405386
141947.323.61550723.61550742.648042.64800.000000
152000.024.1425070.00000030.000030.0000-24.142507
\n", "
" ], "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.535840 100.7040 114.8880 0.450347\n", "4 683.6 8.211840 8.211840 74.6640 74.6640 0.000000\n", "5 769.9 9.074840 9.241507 53.9520 53.9520 0.166667\n", "6 869.7 10.239507 10.740733 30.0000 63.4560 0.501227\n", "7 1009.1 12.134733 12.848120 30.0000 112.0080 0.713387\n", "8 1164.7 14.404120 14.570787 74.6640 74.6640 0.166667\n", "9 1230.8 15.231787 15.231787 58.8000 58.8000 0.000000\n", "10 1350.8 16.431787 17.078453 30.0000 150.0000 0.646667\n", "11 1508.4 18.654453 18.654453 112.1760 112.1760 -0.000000\n", "12 1639.8 19.968453 20.135121 80.6400 80.6401 0.166668\n", "13 1809.4 21.831121 22.236507 39.9361 75.7440 0.405386\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" ] }, "metadata": {}, "output_type": "display_data" } ], "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.option[\"solver\"] = SOLVER\n", " m.solve()\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": 35, "id": "6191e5d4-ac20-4b0c-b774-990d780f0295", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cbc 2.10.7: \b\b\b\b\b\b\b\b\b\b\b\bcbc 2.10.7: optimal solution; objective 24.142507\n", "12091 simplex iterations\n", "12091 barrier iterations\n", "102 branching nodes\n" ] }, { "data": { "image/png": "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/vijmjRpon79+ik3N1f//e9/VadOHe3YseO6265cuVIDBw7Ugw8+qOrVqysnJ0dfffWV3N3dFR8fb12vYcOGWr58ucaMGaPIyEhVqVJFjRs3Vrt27fTVV18pODhYtWvX1saNG7V8+XKFhYXl20/9+vXl7u6ud999VykpKfL29tZ9992n8PDwKzL17dtXn376qXr37q1t27apcuXK+vbbb7V+/XqNHTtWgYGBhRqf3377Tffff78eeugh1a5dWx4eHvr+++916tQpde3atVBtAQAA10KxDQAAuLSbbrpJmzZt0muvvabp06crNTVVN910k1q3bn3FQwpuJCwsTAsXLtTzzz+vYcOGqUyZMurRo4fuv/9+xcbGFqgNd3d3/fDDD3r22Wc1ZcoUubm5qVOnTnr99dfVpEkT+fj4FKWbV2jYsKEWL16sF154Qa+99pqioqI0cuRI7d+//4qnpv5TvXr1FBsbqwULFuj48ePy8/NTvXr1tHjxYt19993W9caMGaO+fftq2LBhunDhgnr16qXGjRvro48+kru7u6ZPn66MjAw1adJEy5cvv2KMIiIiNHHiRI0aNUp9+vRRbm6uVq1addVim6+vr1avXq1XXnlFU6ZMUWpqqmrUqKFJkyapd+/ehR6fqKgodevWTStWrNBXX30lDw8P1axZU7NmzcpXUAQAAPgni2HmnXIBAABgE3PnzlWnTp20bt06NWnSxGb76dixo/bu3auDBw/abB8AAAClGfdsAwAAcDAXLlzI93dubq7GjRunoKAg3XHHHTbbz8GDB7Vo0SLFxMSYtg8AAABXw2WkAAAADmbQoEG6cOGCoqOjlZmZqTlz5mjDhg16++235evra9p+brnlFvXu3Vu33HKLjh49qk8++UReXl566aWXTNsHAACAq+EyUgAAAAczY8YMffDBBzp06JAyMjJUrVo19evXTwMHDjR1P4899phWrVqlxMREeXt7Kzo6Wm+//bapZ88BAAC4Gocotn3yySf65JNPdOTIEUnSbbfdpuHDh6t169aSpIyMDD3//POaOXOmMjMzFRsbqwkTJqh8+fLWNhISEtSvXz+tWrVKAQEB6tWrl0aNGiUPD07eAwAAAAAAQMlwiHu2VaxYUe+88462bdumrVu36r777lOHDh20d+9eSdLgwYO1YMECzZ49W2vWrNGJEyfUuXNn6/a5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3367fHx8FB4ergEDBtiiK1dly/5Nnjz5qu+VxWJRixYtTBvDLVu26P7771dISIjKlCmj2NhY7dy5s/CDIdu/3ytWrNA999yjwMBARURE6OWXXy7Wd1NRFaef//vf/xQTE6OgoKBrfh4kJSWpe/fuCgoKUkhIiPr06aO0tDSnyf/WW2/pnnvukZ+fn0JCQkzLXVy27PeRI0fUp08fValSRb6+vqpatapef/11ZWVlOVU/JOmBBx5QpUqV5OPjowoVKujRRx/ViRMnTO+Hrdh6fC7JzMxU/fr1ZbFYtGPHDvM6YCO2HpfKlStf8V01bNgwm78XP/zwgxo3bixfX1+VKVNGHTt2vGHbJcWWY7569epr/kbYsmVLieeRpN9++00dOnRQ2bJlFRQUpKZNm2rVqlU3bNsR2XqsfvnlF/3rX/9SSEiIwsLC1LdvX1O/5+2NYhucWnx8vLZv364pU6bot99+0/z58xUTE6OzZ8/ecNvBgwdrwYIFmj17ttasWaMTJ06oc+fO1uW5ublq27atsrKytGHDBk2ZMkWTJ0/W8OHDHTLvJY8//rgefvjhImd0FLYcq23btik8PFzTpk3T3r179e9//1tDhw7Vf//7X1t26YZs2Wc3Nzd16NBB8+fP12+//abJkydr+fLlevrpp22+78v16dNHt99+u93H45JJkybp5MmT1slWP05t3ZcxY8bo3//+t1555RXt3btXy5cvV2xsrE36cjW27N/DDz+skydPqnHjxrrjjjv07bffqlmzZmrQoIFatWplyj7S0tIUFxenSpUqadOmTVq3bp0CAwMVGxur7OxshxqPnTt3qk2bNoqLi9P27dv1zTffaP78+XrllVcKnbO4itPP8+fPKy4uTq+++uo11+nevbv27t2rZcuWaeHChVq7dq369u3rNPmzsrL04IMPql+/fqZlNoMt+/3rr78qLy9Pn376qfbu3asPP/xQEydOvO44FZWt378WLVpo1qxZOnDggL777jv9/vvv6tKli5ldsClbj88lL730kiIjI82IXCJKYlxGjhyZ77fFqlWrbLrP7777To8++qgee+wx7dy5U+vXr9cjjzxyw7ZLii3H/J577sk31idPntQTTzyhKlWqqFGjRiWeR5LatWunnJwcrVy5Utu2bVO9evXUrl07JSYm3rB9R2PLsTpx4oRatmypatWqadOm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6ys8fvxYs42goCChcePGwuHDh4X9+/cL1atXF/r37695PSMjQ/D09BTeeecd4a+//hLWrFkjODg4CIsXLy718pLleFXbzsrKEiZMmCAkJycLKSkpwh9//CG8+eabQvXq1YXs7GzNNti2ydh88MEHgrOzs7Bnzx4hNTVVszx69Eizjj7+/vjnn38EBwcHYeLEicKFCxeE+fPnC1ZWVkJiYmKplpcsw+va9ZUrV4SpU6cKx44dE1JSUoStW7cKVapUEfz9/TXbYLsmYzRp0iRh7969QkpKinDmzBlh0qRJgkQiEX7//XdBEIyrv+Zgm5mbN2+eULlyZUEmkwlvvfWWcOjQIbEjEb1UaGioUL58eUEmkwkVKlQQQkNDhStXrmhef/z4sTBq1CjB1dVVcHBwEHr27CmkpqYW2ca1a9eE4OBgwd7eXnB3dxfGjx8v5OXllXZRyILt3r1bAPDcMnjwYEEQBEGtVguTJ08WPD09BVtbW6FDhw7CxYsXi2zj/v37Qv/+/QVHR0fByclJGDp0qJCVlVVkndOnTwutWrUSbG1thQoVKgjTpk0rrSKShXpV23706JHQsWNHoVy5coKNjY3g4+MjjBgx4rkv+Ni2ydi8qE0DEJYvX65ZR19/f+zevVto1KiRIJPJhCpVqhT5DCJ9el27vn79uuDv7y+4ubkJtra2QrVq1YSJEycKmZmZRbbDdk3GZtiwYYKPj48gk8mEcuXKCR06dNAMtAmCcfXXEkEQhJKdC0dEREREREREREQvwmu2ERERERERERER6QkH24iIiIiIiIiIiPSEg21ERERERERERER6wsE2IiIiIiIiIiIiPeFgGxERERERERERkZ5wsI2IiIiIiIiIiEhPONhGRERERERERESkJxxsIyIiIiIiIiIi0hMOthEREREREREREekJB9uIiIiIiIiIiIj0hINtREREREREREREesLBNiIiIiIiIiIiIj35P6Us5a/8aMSqAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "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": {}, "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" } }, "nbformat": 4, "nbformat_minor": 5 }