{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ " # [EEP 147]: ESG Analysis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\"alternateBig Creek Hydroelectric Project - Southern California Edison
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook expands upon the concepts used in the tutorial notebook and can be utilized for analysis of rounds in the Electricity Strategy Game. Any of the following code can be changed to create new or different visualizations, but as is, running through the cells will allow you to visualize and calculate the profit that your plants have generated in a given hour.\n", "\n", "**Note:** This notebook does not currently take into account any loans, interest payments, or carbon credits, and is simply an evaluation of the individual hour you are examining." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First on our agenda is to import **dependencies** -- packages in Python that add to the basic functions in Python -- same as before." ] }, { "cell_type": "code", "execution_count": 141, "metadata": {}, "outputs": [], "source": [ "from datascience import *\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "import numpy as np\n", "import pandas as pd\n", "plt.style.use('fivethirtyeight')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we import our tables, one for each discussion section, and one with individualized information about our plants." ] }, { "cell_type": "code", "execution_count": 142, "metadata": {}, "outputs": [], "source": [ "bids_0 = Table.read_table('MC_bids.csv').sort('PORTFOLIO')\n", "bids_1 = Table.read_table('S1_bids_0.csv').sort('PORTFOLIO')\n", "bids_2 = Table.read_table('S2_bids_0.csv').sort('PORTFOLIO')\n", "bids_3 = Table.read_table('S3_bids_0.csv').sort('PORTFOLIO')\n", "bids_4 = Table.read_table('S4_bids_0.csv').sort('PORTFOLIO')\n", "ESG = Table.read_table('ESGPorfolios_forcsv.csv')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, let's select your portfolio. In the cell below, assign **section** to the section number that corresponds to your own according to the following table.\n", "\n", "| Number | Section Time |\n", "|---------|---------------|\n", "| 1 | Wednesday 8am |\n", "| 2 | Friday 2pm |\n", "| 3 | Wednesday 9am |\n", "| 4 | Friday 4pm |\n", "\n", "Assign **YOUR_PORTFOLIO** to the name of your portfolio from the following choices:\n", "\n", "**'Bay Views',\n", " 'Beachfront',\n", " 'Big Coal',\n", " 'Big Gas',\n", " 'East Bay',\n", " 'Fossil Light',\n", " 'Old Timers'**\n", " \n", "The variable, **demand**, should be set to the quantity demanded by the market for the given hour, and finally set **hour** to the hour (1-4) that you want to be examining. You can change these at any time, just be sure to rerun all cells after you make changes here." ] }, { "cell_type": "code", "execution_count": 143, "metadata": {}, "outputs": [], "source": [ "section = 0\n", "YOUR_PORTFOLIO = \"Big Gas\"\n", "demand = 16234\n", "hour = 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The table below should now display the names and bids that your team and others in your discussion section assigned for each individual plant." ] }, { "cell_type": "code", "execution_count": 144, "metadata": { "scrolled": false }, "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", " \n", "
TEAM TEAM_ID PORTFOLIO PORTFOLIO_ID PLANT PLANT_ID PERIOD PRICE1 PRICE2 PRICE3 PRICE4
Coase 3 Bay_Views 3 MORRO_BAY_1-2 31 1 38.78 38.78 38.78 38.78
Coase 3 Bay_Views 3 MORRO_BAY_3-4 32 1 36.61 36.61 36.61 36.61
Coase 3 Bay_Views 3 MOSS_LANDING_6 33 1 32.56 32.56 32.56 32.56
Coase 3 Bay_Views 3 MOSS_LANDING_7 34 1 32.56 32.56 32.56 32.56
Coase 3 Bay_Views 3 OAKLAND 35 1 61.17 61.17 61.17 61.17
Debreu 4 Beachfront 4 COOLWATER 41 1 42.39 42.39 42.39 42.39
Debreu 4 Beachfront 4 ETIWANDA_1-4 42 1 42.67 42.67 42.67 42.67
Debreu 4 Beachfront 4 ETIWANDA_5 43 1 62.89 62.89 62.89 62.89
Debreu 4 Beachfront 4 ELLWOOD 44 1 75.61 75.61 75.61 75.61
Debreu 4 Beachfront 4 MANDALAY_1-2 45 1 39.06 39.06 39.06 39.06
Debreu 4 Beachfront 4 MANDALAY_3 46 1 52.06 52.06 52.06 52.06
Debreu 4 Beachfront 4 ORMOND_BEACH_1 47 1 38.06 38.06 38.06 38.06
Debreu 4 Beachfront 4 ORMOND_BEACH_2 48 1 38.06 38.06 38.06 38.06
Arrow 1 Big_Coal 1 Four Corners 11 1 36.5 36.5 36.5 36.5
Arrow 1 Big_Coal 1 ALAMITOS_7 12 1 73.72 73.72 73.72 73.72
Arrow 1 Big_Coal 1 HUNTINGTON_BEACH_1-2 13 1 40.5 40.5 40.5 40.5
Arrow 1 Big_Coal 1 HUNTINGTON_BEACH_5 14 1 66.5 66.5 66.5 66.5
Arrow 1 Big_Coal 1 REDONDO_5-6 15 1 41.94 41.94 41.94 41.94
Arrow 1 Big_Coal 1 REDONDO_7-8 16 1 41.94 41.94 41.94 41.94
Becker 2 Big_Gas 2 EL_SEGUNDO_1-2 21 1 44.83 44.83 44.83 44.83
Becker 2 Big_Gas 2 EL_SEGUNDO_3-4 22 1 41.22 41.22 41.22 41.22
Becker 2 Big_Gas 2 LONG_BEACH 23 1 52.5 52.5 52.5 52.5
Becker 2 Big_Gas 2 NORTH_ISLAND 24 1 65.5 65.5 65.5 65.5
Becker 2 Big_Gas 2 ENCINA 25 1 41.67 41.67 41.67 41.67
Becker 2 Big_Gas 2 KEARNY 26 1 90.06 90.06 90.06 90.06
Becker 2 Big_Gas 2 SOUTH_BAY 27 1 43.83 43.83 43.83 43.83
Friedman 5 East_Bay 5 PITTSBURGH_1-4 51 1 40.94 40.94 40.94 40.94
Friedman 5 East_Bay 5 PITTSBURGH_5-6 52 1 36.61 36.61 36.61 36.61
Friedman 5 East_Bay 5 PITTSBURG_7 53 1 59.72 59.72 59.72 59.72
Friedman 5 East_Bay 5 CONTRA_COSTA_4-5 54 1 58.28 58.28 58.28 58.28
Friedman 5 East_Bay 5 CONTRA_COSTA_6-7 55 1 39.5 39.5 39.5 39.5
Friedman 5 East_Bay 5 POTRERO_HILL 56 1 69.83 69.83 69.83 69.83
Krugman 7 Low_Fossil 7 HUMBOLDT 71 1 47.44 47.44 47.44 47.44
Krugman 7 Low_Fossil 7 HELMS 72 1 0.5 0.5 0.5 0.5
Krugman 7 Low_Fossil 7 HUNTERS_POINT_1-2 73 1 49.17 49.17 49.17 49.17
Krugman 7 Low_Fossil 7 HUNTERS_POINT_4 74 1 75.89 75.89 75.89 75.89
Krugman 7 Low_Fossil 7 DIABLO_CANYON_1 75 1 11.5 11.5 11.5 11.5
Heckman 6 Old_Timers 6 BIG_CREEK 61 1 0 0 0 0
Heckman 6 Old_Timers 6 MOHAVE_1 62 1 34.5 34.5 34.5 34.5
Heckman 6 Old_Timers 6 MOHAVE_2 63 1 34.5 34.5 34.5 34.5
Heckman 6 Old_Timers 6 HIGHGROVE 64 1 49.61 49.61 49.61 49.61
Heckman 6 Old_Timers 6 SAN_BERNARDINO 65 1 53.94 53.94 53.94 53.94
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "bids = globals()['bids_' + str(section)]\n", "bids.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall the table ESG, which we used in the introductory notebook. The first few rows are shown below." ] }, { "cell_type": "code", "execution_count": 145, "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", "
Group Group_num UNIT NAME Capacity_MW Heat_Rate_MMBTUperMWh Fuel_Price_USDperMMBTU Fuel_Cost_USDperMWH Var_OandM_USDperMWH Total_Var_Cost_USDperMWH Carbon_tonsperMWH FixedCst_OandM_perDay Plant_ID
Big Coal 1 FOUR CORNERS 1900 11.67 3 35 1.5 36.5 1.1 $8,000 11
Big Coal 1 ALAMITOS 7 250 16.05 4.5 72.22 1.5 73.72 0.85 $0 12
Big Coal 1 HUNTINGTON BEACH 1&2 300 8.67 4.5 39 1.5 40.5 0.46 $2,000 13
Big Coal 1 HUNTINGTON BEACH 5 150 14.44 4.5 65 1.5 66.5 0.77 $2,000 14
Big Coal 1 REDONDO 5&6 350 8.99 4.5 40.44 1.5 41.94 0.48 $3,000 15
\n", "

... (37 rows omitted)

" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ESG.show(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will need both of these tables to generate an analysis of how our round went, so in the following cell we will join the tables based on the column **Plant_ID**:" ] }, { "cell_type": "code", "execution_count": 146, "metadata": { "scrolled": true }, "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", "
PLANT_ID TEAM TEAM_ID PORTFOLIO PORTFOLIO_ID PLANT PERIOD PRICE1 PRICE2 PRICE3 PRICE4 Group Group_num UNIT NAME Capacity_MW Heat_Rate_MMBTUperMWh Fuel_Price_USDperMMBTU Fuel_Cost_USDperMWH Var_OandM_USDperMWH Total_Var_Cost_USDperMWH Carbon_tonsperMWH FixedCst_OandM_perDay
61 Heckman 6 Old_Timers 6 BIG_CREEK 1 0 0 0 0 Old Timers 7 BIG CREEK 1000 nan 0 0 0 0 0 $15,000
72 Krugman 7 Low_Fossil 7 HELMS 1 0.5 0.5 0.5 0.5 Fossil Light 8 HELMS 800 nan 0 0 0.5 0.5 0 $15,000
75 Krugman 7 Low_Fossil 7 DIABLO_CANYON_1 1 11.5 11.5 11.5 11.5 Fossil Light 8 DIABLO CANYON 1 1000 1 7.5 7.5 4 11.5 0 $20,000
33 Coase 3 Bay_Views 3 MOSS_LANDING_6 1 32.56 32.56 32.56 32.56 Bay Views 4 MOSS LANDING 6 750 6.9 4.5 31.06 1.5 32.56 0.37 $8,000
34 Coase 3 Bay_Views 3 MOSS_LANDING_7 1 32.56 32.56 32.56 32.56 Bay Views 4 MOSS LANDING 7 750 6.9 4.5 31.06 1.5 32.56 0.37 $8,000
\n", "

... (37 rows omitted)

" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sorted_joined_table = bids.join(\"PLANT_ID\", ESG, \"Plant_ID\").sort(\"PRICE\" + str(hour), descending = False)\n", "sorted_joined_table.show(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Great! Now we have a table that has our bids for this round as well as information about the capacity of our plants as well as their marginal cost of production. Now we can continue and make plots similar to those in the introductory notebook, that will allow us to examine how we performed in this given hour. Run the following series of cells to generate a legend as well as a plot of plant capacity versus plant bid price, with bids ordered from least to greatest." ] }, { "cell_type": "code", "execution_count": 147, "metadata": {}, "outputs": [], "source": [ "def find_x_pos(widths):\n", " cumulative_widths = [0]\n", " cumulative_widths.extend(np.cumsum(widths))\n", " half_widths = [i/2 for i in widths]\n", " x_pos = []\n", " for i in range(0, len(half_widths)):\n", " x_pos.append(half_widths[i] + cumulative_widths[i])\n", " return x_pos\n" ] }, { "cell_type": "code", "execution_count": 148, "metadata": {}, "outputs": [], "source": [ "width = sorted_joined_table.column(\"Capacity_MW\")\n", "width\n", "height = sorted_joined_table.column('PRICE' + str(hour))\n", "height\n", "new_x = find_x_pos(width)" ] }, { "cell_type": "code", "execution_count": 149, "metadata": {}, "outputs": [], "source": [ "energy_colors_dict = {}\n", "count = 0\n", "colors = ['#EC5F67', '#F29056', '#F9C863', '#99C794', '#5FB3B3', '#6699CC', '#C594C5']\n", "for i in set(sorted_joined_table['Group']):\n", " energy_colors_dict[i] = colors[count]\n", " count += 1" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [], "source": [ "colors_mapped = list(pd.Series(sorted_joined_table['Group']).map(energy_colors_dict))\n", "sorted_joined_table = sorted_joined_table.with_column('Color', colors_mapped)" ] }, { "cell_type": "code", "execution_count": 151, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(5,1))\n", "plt.bar(energy_colors_dict.keys(), 1, color = energy_colors_dict.values())\n", "plt.xticks(rotation=60)\n", "plt.title('Legend')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 152, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAm0AAAGpCAYAAADfmgGBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xl0TPf/x/FXFkvEEksSNEgrIZZYYklKaYsqpZbWrlVUF0WraqetrzVBlaLaWoriW4SiXy1t0dpi6aJVW4MiVCISISEJkvn9kV+mRhYTWSZXno9znGPu53M/9z3zmeF17moXExNjEgAAAPI1e1sXAAAAgHsjtAEAABgAoQ0AAMAACG0AAAAGQGgDAAAwAEIbAACAARDagAJm5cqVcnFx0cqVKy2W+/r6ytfX10ZVAQDuhdAGPCAWLFggFxcXubi46Oeff8717fn6+pq3l9Gfu4MhpIiICI0bN04BAQGqWLGi3N3dVatWLbVp00bvvfeejh49ausSAeRTjrYuAEDOWLZsmezs7GQymbR06VI1bNgwT7b7+uuvq1SpUum2sefO0rFjx9S+fXtFRUWpZs2a6tGjh0qXLq2oqCj9+uuvmjt3rkqXLq2aNWvaulQA+RChDXgA7N27V8ePH1fXrl0VEhKir776SlOnTlXJkiVzfdsDBw5UlSpVcn07D4KxY8cqKipKo0eP1ujRo9O0nz9/XleuXLFBZQCMgMOjwANg6dKlkqQXXnhBPXv21PXr17V27VrbFnWXXbt2ycXFRQMHDtTZs2fVv39/PfLII3J3d9cTTzyhLVu2ZLjuxo0b1bFjR3l6esrNzU1+fn6aMGGCrl27lqZv6mHbxMRETZs2TX5+fnJ1dbUISeHh4XrjjTfk5eWl8uXL67HHHtOqVavMNU6bNs3c96mnnlLp0qV15syZdGtbsmSJXFxcNHny5Ht+Bvv375eUsncyPR4eHununbx06ZJGjhypunXrys3NTQ8//LC6d++uPXv2pOmb0TmLqdI7dzF1nWnTpungwYPq0qWLqlSpIhcXF8XExJj7hYaGavDgwapTp47c3NxUtWpVtW7dWvPmzUuzndOnT2vIkCGqXbu2uW/v3r116NChNH1jY2M1Y8YMNWnSRJUrV9ZDDz2kOnXq6IUXXtCuXbvSfR9AQURoAwzuypUr2rRpkypVqqTmzZurd+/esrOz07Jly2xdWrrCwsLUsmVLnTt3Tt27d1fnzp117Ngx9erVSzt37kzT/5133tFLL72kkydPqn379nr11Vfl5uam2bNnq02bNoqNjU13O3369NGyZcv06KOPauDAgfL29pYkRUZG6qmnntKqVavk7e2tgQMHqk6dOho+fLg++eSTNOP0799fJpNJy5cvT3c7n3/+uezt7fXSSy/d872XLl1aknTq1Kl79k117tw5Pfnkk/rss8/k4eGhQYMGqU2bNtq5c6eeffbZHD1v8MCBA3rmmWd0+/Zt9enTR926dZODg4MkaevWrWrevLlWrlypatWqadCgQerUqZMcHBw0c+ZMi3F++uknNW/eXP/9739Vt25dvf7662rRooW2bdump59+Wtu2bTP3NZlM6tKli6ZMmSInJyf17t1bAwYMUEBAgA4dOqSffvopx94fYHQcHgUM7r///a8SEhLUs2dP2dnZydPTU02aNNGePXv066+/ys/PL1e3v2DBggzPaRs4cKBcXFwslu3evTvN4cGuXbvq+eef19y5c9W8eXPz8tWrV2vx4sVq3769Fi5cKCcnJ3PbjBkzNGXKFAUGBmrKlClpth0WFqY9e/aobNmyFsv/85//KCwsTIMGDbJYb+DAgWrZsmWacTp37qxx48ZpxYoVGjNmjAoVKmRu+/nnn3X48GE9/fTTqlSpUkYfkcVY8+bNU48ePdS/f381a9ZMtWvXTvMZ3WnYsGG6cOFCms9s8ODBatWqlYYNG6YnnnhCDz300D23fy87duzQ7Nmz1bdvX4vlUVFReuWVV3Tr1i1t2LBBjz/+uEX7+fPnzX+/evWq+vXrp0KFCumHH36Qj4+Pue3EiRNq2bKlBg0apN9//11FihTR0aNHtX//fj3zzDNatWqVxbgmk4nDxcAd2NMGGFzqBQi9evUyL+vdu7ekfw+b5qZPPvlEQUFB6f65evVqmv6VKlXSiBEjLJa1bNlSHh4e+uWXXyyWf/zxx3JwcNDcuXMtApuUEmbKli2rNWvWpFvXuHHj0gS2mzdvat26dSpRooRGjhxp0ebr66sePXqkGado0aJ64YUXdOnSJW3evNmi7fPPP5ck9evXL90a7vbuu+/qpZde0pUrVxQUFKT27dvL09NT9evX19tvv53mytF//vlHP/zwgx566CENGzbMoq1WrVrq37+/EhMTtXr1aqu2fy++vr5pApskrVq1SteuXVPfvn3TBDYp5bBuqi+//FLR0dEaNWqURWCTpOrVq6tPnz4KDw9Pswft7vmVJDs7O5UpU+Y+3w3w4GFPG2Bge/fu1YkTJ9S0aVN5enqal3fs2FEjR47U+vXrNWXKFJUoUSLXavj999+zdCGCr6+v+ZDbnTw8PHTgwAHz6xs3buiPP/5Q6dKl0z1sKUmFCxfWxYsXFR0dneY/9wYNGqTpHxoaqvj4eDVu3DjdvYMBAQHpHgbt37+/5s2bp88//1ydOnWSlLJH6auvvpKHh4dat26d+Zv+f0WKFNGcOXM0btw4/fDDD/rll1/0+++/67ffftPnn3+uL774QrNmzVKfPn0kpXy2kuTv76/ChQunGe+JJ57Q/Pnzzf2yK73PTJL5FjKtWrW65xip5+0dOXLE4tzAVCdPnpSUstetdevW8vHxka+vr9atW6dz587pmWeekb+/v/z8/FS0aNH7fSvAA4nQBhhY6p60O/eySZKzs7M6deqkFStWKDg42Oo9QXkho0OpDg4OSk5ONr+OiYmRyWRSdHS0goKCMh0zLi4uTWhzd3dP0y/1wgVXV9d0x3Fzc0t3uaenp1q2bKkffvhBp06dUtWqVfXll1/qxo0bevvtt2Vvn7WDFm5uburVq5d53q5cuaL3339fy5cv14gRI9SmTRu5ubmZ682ortT3mN4ezfuR0XZSx69QocI9x4iOjpYkffHFF5n2u379uqSUef/66681Y8YMbdq0Sf/5z38kScWKFVPnzp01ceLENHtMgYKKw6OAQV25ckUbN26UJA0aNCjNjW1XrFghKW8OkeaG1NuV1KxZUzExMZn+qVy5cpr17ezs0ixL3eMYGRmZ7jYvXbqUYT0vv/yy+R54Usrn6ujoqBdffDGrby2N0qVLa/bs2fLw8FBiYqL27dsn6d/PIKO6IiIiLPpJMgfIpKSkdNfJLOCl95lJ/wbtixcvZvY2LGr58ccfM52zO8/Pc3Fx0ZQpU3T48GEdOnRIH3/8serVq6eVK1eme7gWKKjY0wYY1KpVq5SYmChfX1/Vq1cv3T7btm3T77//rkOHDmXYJ78qXry4atasqdDQUEVFReXI3pZq1arJyclJx44d09WrV9Ps9UsNS+lp3bq1KleurFWrVqlVq1Y6duyYOnTooPLly2e7LiklbDk7O0tKOQFfkurUqSMp5ZDjzZs30xwiTT0v7M65Tb2o4c6LA1KdOnVK165dy3BvZ0YaNmyojRs36ocfflCbNm0y7duoUSNt2rRJISEh9/Wd8/T0lKenp7p166Z69epp165d6c4VUBCxpw0wqNRbegQFBWnu3Lnp/hk4cKAk4+5tGzRokG7duqU33ngj3asIY2Njs/TIrsKFC6tz587m+4Ld6fDhw/ryyy8zXNfe3l79+vVTVFSU+XPt37+/1duWpMDAQJ09ezbdto0bN+qvv/6So6OjGjduLEl66KGH1LJlS124cEFz5syx6H/s2DEtWbJERYoUUbdu3czL69evL3t7e61Zs0ZxcXHm5devX09zAYi1evXqpZIlS2rp0qXp3pblwoUL5r+/8MILcnFx0YwZMyzOUUxlMpkUEhKimzdvSpLOnDmT7j3w4uLidP36dRUqVEiOjuxfACT2tAGGtGfPHv3111+qVq2amjRpkmG/nj17atKkSVq3bp0mT56s4sWL53gtmd3yo1GjRladvJ6R3r176/fff9dnn32mevXqqWXLlqpcubKuXr2qc+fOae/evXryySfT3CoiMxMmTNDOnTs1b948/fLLL3r00UcVERGhr776Sk899ZQ2b96c4TlqL774ogIDA/XPP/+oatWq6V5JmZmPP/5YgYGBqlOnjurXr69y5crp2rVr+v33380BZ+LEiRbnjs2aNUtt2rTRlClTtHPnTjVq1Ejh4eHasGGDEhISzIdVU5UvX149evTQqlWr1KxZM7Vu3VoJCQnatm2bKleubNV5aXcrW7asFi5cqJdeekmdOnVSy5YtVbt2bcXFxenYsWP6888/zcGrdOnSWr58uV544QW1bt1azZs3l4+PjwoVKqQLFy7o559/1vnz53XmzBkVLlxYf/75p1588UXVq1dP1atXV4UKFRQTE6OtW7fqypUrGjx4sHkPJFDQEdoAA0rdc5Z6lWFGypUrp2eeeUYbNmzQunXrrLoBbFZldGWnlHLn/+yENkmaPn26WrdurcWLF2v37t26cuWKSpUqpYoVK2rAgAHq0qVLlsZzc3PTd999p4kTJ+r777/Xb7/9Ji8vL82cOVPOzs7avHlzhlfblitXTm3atNHGjRvVt2/fDM8By8jq1au1bds27dmzR9u2bVNkZKTs7OxUoUIFde/eXS+//LJ5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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Make the plot\n", "plt.figure(figsize=(9,6))\n", "plt.bar(new_x, height, width=width, color=sorted_joined_table['Color'], edgecolor = \"black\")\n", "#plt.xticks(y_pos, bars)\n", "# Add title and axis names\n", "plt.title('All Energy Sources')\n", "plt.xlabel('Capacity_MW')\n", "plt.ylabel('Variable Cost')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can examine the plot above to determine our market price using the capacity demanded that we entered at the top of this notebook." ] }, { "cell_type": "code", "execution_count": 153, "metadata": {}, "outputs": [], "source": [ "def price_calc(demand, sorted_table):\n", " price = 0\n", " sum_cap = 0\n", " for i in range(0,len(sorted_table['Capacity_MW'])):\n", " if sum_cap + sorted_table['Capacity_MW'][i] > demand:\n", " price = sorted_table['PRICE' + str(hour)][i]\n", " break\n", " else:\n", " sum_cap += sorted_table['Capacity_MW'][i]\n", " price = sorted_table['PRICE' + str(hour)][i]\n", " return price" ] }, { "cell_type": "code", "execution_count": 154, "metadata": {}, "outputs": [], "source": [ "def price_line_plot(price):\n", " plt.axhline(y=price, color='r', linewidth = 2)\n", " print(\"Price: \" + str(price))" ] }, { "cell_type": "code", "execution_count": 155, "metadata": {}, "outputs": [], "source": [ "def demand_plot(demand):\n", " plt.axvline(x=demand, color='r', linewidth = 2)\n", " print(\"Capacity: \" + str(demand))" ] }, { "cell_type": "code", "execution_count": 156, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hour: 2\n", "Price: 42.39\n", "Capacity: 16234\n" ] }, { "data": { "image/png": "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Sclhy9XVVVLyBfiSVKdOHUnJpxxv3ryZ6hRpynVht+/blJsabr85IMXJkyd19erVdI92pqdRo0basGGDfvjhB7Vt2zbDvo0bN9bGjRsVEhJyV985Ly8veXl5qXv37qpXr5527tyZ5r4CCiKOtAEGlTKlR1BQkObNm5fmn8GDB0sy7tG2IUOG6N9//9XLL7+c5l2E165dy9IjuwoXLqwuXbpY5gW73aFDh/TFF1+ku66jo6MGDBigqKgoy+c6cOBAm7ctSYGBgTpz5kyabRs2bNBff/0lZ2dnNWnSRJJ03333qVWrVjp//rzmzp1r1f/o0aNasmSJihQpou7du1uW169fX46Ojlq9erViY2Mty69fv57qBhBb9e7dWyVLltTSpUvTnJbl/Pnzlr/37dtXJpNJM2fOtLpGMYXZbFZISIhu3rwpSTp9+nSac+DFxsbq+vXrKlSokJydOb4ASBxpAwxp9+7d+uuvv1StWjU1bdo03X69evXSlClTtHbtWk2dOlXFixfP8VoymvKjcePGNl28np4+ffro999/18cff6x69eqpVatWqly5sq5cuaKzZ89qz549evTRR1NNFZGRSZMmaceOHZo/f75++eUXPfjgg4qIiNCXX36pxx57TJs2bUr3GrVnnnlGgYGB+ueff1S1atU076TMyAcffKDAwEDVqVNH9evXV7ly5XT16lX9/vvvloAzefJkq2vHZs+erbZt2+qdd97Rjh071LhxY4WHh2v9+vWKj4+3nFZNUb58efXs2VMrV65U8+bN1aZNG8XHx2vr1q2qXLmyTdel3als2bL65JNP9Oyzz6pz585q1aqVateurdjYWB09elR//vmnJXiVLl1an332mfr27as2bdqoRYsW8vX1VaFChXT+/Hn9/PPPOnfunE6fPq3ChQvrzz//1DPPPKN69eqpevXqqlChgmJiYrRlyxZdvnxZQ4cOtRyBBAo6QhtgQClHzlLuMkxPuXLl9MQTT2j9+vVau3atTRPAZlV6d3ZKyTP/Zye0SdKMGTPUpk0bLV68WLt27dLly5dVqlQpVaxYUYMGDVLXrl2zNJ67u7u+++47TZ48Wd9//71+++03eXt7a9asWXJ1ddWmTZvSvdu2XLlyatu2rTZs2KD+/funew1YelatWqWtW7dq9+7d2rp1qyIjI+Xg4KAKFSqoR48eeu655yxH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aFhYmF5++WVJ/z3b6+bNm5KkokWLqmfPnvrkk080duzYXCgTyP+mBE1WdKxxLg84fjRcFStVu6t1Y06fkG+VB+5q3UvMgQYAd8Xm0GYymRQfHy8pec62QoUK6fz585Z2FxcXRUVF5XyFgEFEx0YroLdxnil5cPw3Gc5VlpEroZPUq1Gvu1p3zm9772o9ACjobD496uvrq8OHDyev5Oiohg0basmSJYqIiNCFCxe0dOlSeXt751qhAAAABZnNR9qefvppLV68WPHx8SpatKgmTpyop556SjVq1EgeyNlZy5cvz7VCAQAACjKbQ1u/fv3Ur99/p1KaNWumkJAQbdq0SU5OTmrdurWqVbu762MAAACQsQxD26lTp/TAA+lfbPzAAw9o2LBhOV4UAAAArGV4TVvDhg312GOP6ZNPPuEmAwAAADvK8Ejb888/r/Xr12v06NEaP368WrZsqe7du+uJJ56Qi4tLXtUIpOu9yeOVEPXPXa9/Iy5O5y5Gq1qV+7Jdy7noy5KMc/coAMBYMgxtM2bMUGBgoLZt26bVq1fr22+/1XfffafixYurffv26tGjhx555BE5ODjkVb2AlYSofzS+fuFsjFBYL605m80xknXZkpDtMQAASE+mNyI4OjqqdevWat26teLi4rRp0yatWbNGa9eu1erVq+Xu7q6nnnpK3bt3V7169fKiZgAAgALH5nnapOQJdLt27apVq1bp+PHjmjFjhry8vLRw4UK1bNlS/v7+uVUnAABAgZal0Ha7MmXKaNCgQZo+fbratWsns9ms0NDQnKwNAAAA/8/medpud+rUKa1evVpr167VyZMn5eDgoObNm6t79+45XR8AAACUhdAWERGhtWvXKjg4WAcPHpTZbFbNmjU1adIkde3aVRUrVszNOgEAAAq0DEPb1atXtXHjRgUHB2vXrl1KTEzUfffdp2HDhql79+6qVatWXtUJAABQoGUY2qpVq6abN2+qePHi6tmzp7p3767mzZszxUcBN3FKkMKjr2drjHOnT8jTyzvbtTidCZPqV832OAAA5HcZhrZHH31UPXr0ULt27VSkSJG8qgn5XHj0dZUJ6Jd5xwz8dXJytseQpMi/dmR7DAAAjCDD0Pa///0vr+oAAABABu56yg8AAADkHUIbAACAARDaAAAADIDQBgAAYACENgAAAAMgtAEAABgAoQ0AAMAA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qR66HRYWpnPnzqlTp065/4YAZAtH2gDkqKVLl+rcuXOaOnVqqsAmSaVKldKbb75peb1nzx4NGDBAtWvXlru7u6pXr65XXnlFly9ftlpv+vTpMplMOnbsmAYNGqTKlSurSpUqGj58uGJjY636fvPNN+rRo4dq1qwpd3d31a5dW2+88Ybi4+NT1XPixAk999xz8vb2loeHhxo0aKCxY8da2u+8pq19+/basmWLwsLCZDKZLH+SkpJUu3Zt9ezZM9U2bt26JR8fHw0YMCBrH6akrl27auvWrVafx+HDh3XkyBF169YtVf+AgABFR0fr+PHjlmX79u1T4cKF9dJLLykyMlInTpywapOkBx98MMu1AchbHGkDkKO+/fZbFS1aVF26dLGp//r163X16lX1799fbm5u+vPPP/X555/r6NGj+u6776weGC1JAwcOVMWKFfXGG2/o0KFDWj9ojx4AAAeASURBVLp0qc6fP681a9ZY+qxYsUJFihTRiy++qJIlS+rAgQP64IMPdP78eS1ZssTS7+jRo3r88cfl6Oio/v37y8vLS2fPntW6desUGBiYZr0jR47U1atX9c8//2jatGmW5Y6OjurevbvmzZun6OholSlTxtK2bds2RUZGphnoMtO+fXsNHz5cGzZsUP/+/SUlnxr19PRMM2gFBARISj7l6evrK0kKCQlRvXr1VL9+fZUsWVIhISHy9va29JMIbYARENoA5Khjx47J29tbhQsXtqn/pEmTUl1L1aRJEz3//PPau3dvqjBRsWJFrVmzxhLmPDw8NHPmTP3444965P/aubuQJtswgON/vyIQY9NJYWrGgwYahWYqKKZ9YFIR5CwVCs3M6iwIsponKVkdeCJFMCKFrFzp7AMJPBE1trAEyUol+1LswAZ+ERVsew+GD01dWe3tbS/X70if+/Li3o4ur/t67qwsAIxGo1vOkpISFEWhurqas2fPEhkZCbgKMLvdTmdnJzExMWp8ZWWlx/1mZ2cTERHBxMQE+/btc1srKCigtraWlpYWDh06pD43mUzodDq2bNmyqO/kW8HBweTm5mIymSguLsbpdHLnzh30ev28ghZg48aNBAYGYrFY1CLParWSmZmJn58fKSkpWK1W9u/fD7gKutjYWMLCwn56b0KIP0uOR4UQXjU9PU1ISMii42eLK6fTydTUFDabjZSUFMD1QsNcZWVlbsXKkSNHAHj48OG8nA6Hg8nJSWw2G2lpaTidTvr6+gDX262PHj2iqKjIrWADFiyGFiMuLo4NGzbQ1NSkPpuZmaGtrY28vDwCA3/t/2S9Xo/FYmF0dBSr1crIyMiCR6Pg+uzr1q1TO2gzMzP09/eTmpoKoBZt4Jo/fPnypXTZhPARUrQJIbwqJCSE6enpRcePjo5y8OBBoqOjiY6ORlEU1q9fD8DU1NS8eEVR3H4PCwtDo9Hw/v179dnsvNfKlStZtWoViqKwY8cOt5xv374FWHDu7ncUFhbS09PDmzdvALh//z6fPn36paPRWVu3bkWj0dDc3Mzt27eJj48nISHBY3xaWhrv3r3jw4cPPHnyBLvdrhZtqampDA8PMz4+Tk9PDw6HQz1SFUL83aRoE0J41Zo1a3j16hVfv379YazdbmfPnj10dHRw/Phxrl+/jtlsprm5GXB1yn7W5OQku3btYmBgAIPBwM2bN2ltbVXvVfuVnD8jLy+PJUuWqN02k8lEXFwciYmJv5wzKCiI3bt309TUxN27dz122WZ9O9dmsVhQFIXw8HAAkpOTCQgIwGKxyDybED5GZtqEEF6Vm5vL48ePaW1tZe/evd+Nff78OUNDQ1y+fJmioiL1+fDwsMe/GR4eVofoAWw2GxMTE+o9al1dXdhsNhoaGsjIyFDj5l51sXr1asD1MoI3abVacnJy1Bm0zs5OTp8+/dt59Xo99fX1+Pn5kZeX993Y2SLMYrEwODjo1kkLDg5m7dq1WK1W+vr6WLFihfpdCCH+btJpE0J4VXFxMRERERgMBrdrJ2ZNT09TVVUFoN5/5nQ63WLq6uo85jcajW7xV65cASAnJ8djTofDwaVLl9zyhIWFkZ6ezo0bN9Sj0llz9zNXcHAwk5OTHuMKCwt5/fo1p06dwuFw/LB4XYz09HQMBgPnz593u+h3IeHh4SiKQnd3N0+fPlWPRmelpKTQ1dVFb2+vHI0K4UOk0yaE8CqNRkNjYyP5+fls2rQJvV5PUlIS/v7+vHjxgubmZrRaLZWVlcTFxaEoCgaDgbGxMbRaLe3t7YyNjXnMPzY2Rn5+Pjk5OfT399PQ0MDmzZvJzs4GXEeDoaGhHD16lPLycgIDA7l37968u9wALl68SG5uLllZWZSUlBATE8PIyAgtLS309vZ63ENiYiItLS1UVFSQnJyMv7+/W/dr27Zt6HQ6zGYzGRkZREVF/cY36uLn58eJEycWHZ+WlkZjY6P689w1o9G44JoQ4u8lnTYhhNclJiZisVgoLy+np6eHM2fOUFFRQXd3N8XFxbS1tQGuWa1bt26RlJREXV0d1dXVhISEqDNtC7l69SoajYaqqirMZjMHDhygvr5eXddqtZhMJiIjI6mpqaG2tpb4+Hi1I/ethIQE2tvbyczM5Nq1a5w8eRKz2cz27du/+/lKS0spKCjAZDJx+PBhSktL3daDgoLUIm7utSB/ymwxFhoaSmxsrNvat503KdqE8B1+ExMT3z8HEEKIv0BNTQ0XLlxgcHCQ5cuX/9fb+aHKykqMRiNDQ0MsW7bsv96OEOJ/QDptQgjhZV++fKGpqYmdO3dKwSaE8BqZaRNCCC8ZHx+no6ODBw8eMD4+zrFjx+bFfPz4Ebvd7jFHQEAAOp3u39ymEMJHSdEmhBBeMjAwQFlZGTqdjnPnzpGUlDQvJjs7m5GREY85oqKiePbs2b+5TSGEj5KZNiGE+IOsViufP3/2uL506VJ5OUAIsSAp2oQQQgghfIC8iCCEEEII4QOkaBNCCCGE8AFStAkhhBBC+AAp2oQQQgghfIAUbUIIIYQQPuAfK24B29sK1M8AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Make the plot\n", "price = price_calc(demand, sorted_joined_table)\n", "plt.figure(figsize=(9,6))\n", "plt.bar(new_x, height, width=width, color=sorted_joined_table['Color'], edgecolor = \"black\")\n", "plt.title('All Energy Sources')\n", "plt.xlabel('Capacity_MW')\n", "plt.ylabel('Variable Cost')\n", "\n", "print('Hour: ' + str(hour))\n", "price_line_plot(price)\n", "demand_plot(demand)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we have a market price. Let us construct the same plot, but this time only considering the plants that are part of our portfolio." ] }, { "cell_type": "code", "execution_count": 157, "metadata": {}, "outputs": [], "source": [ "your_source = sorted_joined_table.where(\"Group\", YOUR_PORTFOLIO)\n", "width_yours = your_source.column(\"Capacity_MW\")\n", "height_yours = your_source.column('PRICE' + str(hour))\n", "height_yours_marginal_cost = your_source.column(\"Total_Var_Cost_USDperMWH\")\n", "new_x_yours = find_x_pos(width_yours)\n", "label_yours = your_source.column(\"PLANT\")" ] }, { "cell_type": "code", "execution_count": 158, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Price: 42.39\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAm0AAAGpCAYAAADfmgGBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3X18T/X/x/HnbMZyNbF9WJivmYZIyGUUwmbL6Ksov3wp1LpULtZCltSwhYlWIl2try+jXIxJNUWulvI1kYavuWhmZGNsw7bfH9onH9tnM7Z9duxxv93cbs4573PO67x38HQu3scuNTU1VwAAACjXKtm6AAAAABSN0AYAAGAAhDYAAAADILQBAAAYAKENAADAAAhtAAAABkBoA3BLiYyMlLOzsyIjI21dCgCUKAdbFwAA1jg7O+eb5+joKJPJpK5du+rll1/WnXfeaYPKrrhw4YK++OILxcTEaM+ePfrzzz/l4OAgk8mkNm3ayMfHRwMGDJCjo6PNagRw67BjcF0A5VVeaAsMDDTPO3v2rH7++Wdt375d1apV07p169S6dWvz8rS0NCUnJ8tkMqlWrVqlVttPP/2k4cOH69ixY3J1dVW3bt3UoEED5ebm6tixY/rxxx+VnJysFi1aaMuWLaVWB4CKg9AGoNzKC22pqan5lo0fP14ffvihHnvsMUVERJRpXfv371fv3r2Vnp6uiRMn6oUXXsh3NS07O1vR0dF67733FBMTU6b1Abg18UwbAEPq2bOnJOn06dMW8wt7pu3bb79V37595ebmpsaNG+vxxx/X77//roCAADk7OysxMfG69j1hwgSdPXtWL7/8ssaOHVvg7U97e3v1799fa9assZh/8eJFLViwQI888ojuuusuubq6yt3dXf3797ca7vbs2aORI0eqdevWMplMatKkibp06aKxY8cqLS3tumoGYHw80wbAkDZu3ChJatu27XW1X758uUaOHKkqVapowIABql+/vnbs2KHevXvrrrvuuu79Hj58WN9//72cnJz04osvFtnewcHyr9kzZ87o1VdfVceOHdWjRw/VrVtXJ06cUExMjIYMGaLZs2drxIgR5vZ79uzRgw8+KDs7O/Xt21f/+Mc/lJ6eriNHjuiLL77Qc889V6q3gQGUH4Q2AOVeSEiI+ffnzp3TL7/8om3btsnHx0fPP/98keufO3dOr7zyiuzt7RUTE6M2bdqYlwUHB2vOnDnXXcvWrVslSW3atLmhsOTs7Kz4+HjdcccdFvPT0tLk7e2tN954Q0OGDJGTk5Mk6d///rcyMzP1+eefy8/PL99x8ZIDUHEQ2gCUezNmzMg3z8vLSw8//LCqV69e5Ppr165VWlqaBg8ebBHYJGncuHFavHjxdd9mPHnypCSpfv36BS5///33debMGYt5gwcPVpMmTSRJVapUyRfYJKlWrVoaOnSoJk2apJ9//lldu3a1WJ4X4q5Wo0aN66oZwK2B0Aag3Lv6RYTz58/rt99+U3BwsEaNGqXffvtNkydPLnT93bt3S5I6d+6cb1n16tXVqlUrbd68uURq/eCDD/S///3PYt69995rDm2StG/fPs2dO1dbtmxRcnKyMjMzLdonJSWZf//www/r/fff19ChQ9W/f391795dHTp0ULNmzUqkXgDGwYsIAAylWrVqateunT777DNVq1ZN4eHhOnbsWKHrnD17VpLk4uJS4HJXV9fr3n9e26uD1dV++eUXpaamKjU1VY899li+5XFxcerZs6eioqLk6emp4cOHa/z48QoMDFS/fv0kSVlZWeb27dq1U0xMjB544AGtWbNGzz//vDp06KDWrVvro48+uu66ARgfV9oAGJKzs7OaNm2q//73v/rvf/+rBg0aWG2bdxsxJSWlwOV5tzyvR97Vul27duns2bOqWbNmMaqWwsLClJGRodWrV6tbt24Wy2bNmqW1a9fmW+fee+/VkiVLdPHiRe3evVuxsbH68MMP9corr8jJyanAcAjg1sOVNgCGlXfbNCcnp9B2eYPv5r1EcLX09HTFx8df9z4bN26s+++/XxkZGZo7d24xqr3i0KFDql27dr7AJkk//vhjoes6Ojqqffv2Gj9+vN5//31JyjekCIBbF6ENgCGtWbNGiYmJqly5sjp27Fho2379+qlmzZpasWKFdu3aZbEsLCys2GOdzZgxQzVr1tSsWbM0Z84cXbx4MV+bnJwcnTt3Lt/8Ro0a6cyZM9qzZ4/F/E8//VTffvttvvbbt29XRkZGvvnJycmSpNtuu61YtQMwLm6PAij3rh7y48KFC9q/f782bNggSXr99deLfCatZs2aCgsL09NPP23+HmjeOG3x8fHq2rWrfvzxR1WqdH3/j/Xy8tLy5cs1fPhw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Ojpq586dys7OLoUewM3gShsAAGUgOztbSUlJ6tSpkyTJw8NDJpNJR48elSSNHj1aERERFuusXLlSL7zwgnm6devWqlmzZqH7OXfunKpVq2Z1+eHDh+Xu7i4/Pz99/fXX5v0EBATI0dFRktSuXTs5OTkV/yBRqghtAACUgVOnTsnFxcVi3h133KHk5GRJV0LchQsXlJSUZF6elZWlqlWrSpKefvpp3XfffYqLiytw+3PnzpW3t7dmzZqlrl27mveZd3t0xowZkqQ1a9aof//+8vHx0YYNGyRJycnJMplMBW63f//+8vX11VNPPXUTR4+SwO1RAADKQN26dZWSkmIx7/jx4xZhaeTIkfrwww/N01WqVFFmZqaqVq2qDz74QCEhIcrMzCxw+3m3R3/99VfNmDFDnTt3LvD26IYNG/Ttt9+qUqVKOnjwoDIzM2UymXTixAk1b94833ZXrVolBwcHJSYm6q233rqZLsBN4kobAABlwN7eXiaTSdu2bZMkHTx4UElJSWrYsKG5zQMPPKDt27crIyNDkvTQQw9p7ty55uXX85xZrVq1dPbs2QKXJScny83NTV9++aWWL1+uF198UbGxsfL399f777+vS5cuSZJ++eUXcw0oP7jSBgBAKVq6dKn5lubw4cP17rvvaurUqapatarCw8PztR88eLCmT59ubv/222/Lx8dHVapUkaurq1q2bFngfubOnaulS5fq0qVLeuaZZyT9fXtUktzc3NSlSxd17tzZvM59992nOXPm6L333tOgQYPUv39/SVLDhg01f/78kusElAi71NTUXFsXYSQJCQny9PS0dRnlEn1jHX1jHX1TOPrHOvrGuvLWNzMmj1Tw0Folus2npu3QokkdSnSbhQmOTFPgmwvLbH8F4UobAADXYc6MScpKP2HrMnT6zDnFxO40TzvY22uwfzeLNhkZF+TkdFtZl2bVsSP/k9TG1mUYHqENAIDrkJV+osSvFt2YWtLzDYpuU448Ne2irUu4JdxwaDt79qx27typlJQUPfDAA3J1dS3JugAAAHCVG3p79J133lHz5s318MMP65lnntG+ffskSadPn1b9+vX10UcflWiRAAAAFV2xQ9tHH32kadOmadCgQVq8eLFyc/9+j6FOnTrq16+fvvrqqxItEgAAoKIrdmj74IMPNGDAAIWHh6t79+75lrdu3Vq///57iRQHAACAK4od2g4fPqz777/f6nJnZ2edOXPmpooCAACApWKHNmdn53yf4bjavn37rH6/DAAAADem2KGtT58++uSTTwq8mrZnzx59+umn6tevX4kUBwAAgCuKHdomTZokSercubOCg4NlZ2enyMhIPfnkk+rVq5dMJpMmTJhQ4oUCAABUZMUObSaTSRs3blTfvn21evVq5ebmatmyZfrmm2/0yCOPaMOGDbr99ttLo1YAAIAK64YG161bt67Cw8MVHh6uU6dOKScnR3Xr1lWlSjc07BsAAACKcNOfsapbt25J1AEAAIBCFPvSWFBQkNq2bWt1ebt27TR58uSbKgoAAACWih3avv76az388MNWlw8cOFAxMTE3VRQAAAAsFTu0HT9+XI0aNbK6vFGjRjp+/PhNFQUAAABLxQ5tNWrUUGJiotXlhw8fVtWqVW+qKAAAAFgqdmjr3r27Fi9erKNHj+ZblpiYqMWLFxf4TVIAAADcuGK/Pfraa69pw4YN6tKlix5//HE1b95ckrR37179+9//VqVKlTRx4sQSLxQAAKAiK3Zo8/Dw0Pr16zVu3DgtWLDAYlnXrl01c+ZMeXp6lliBAAAAuMFx2po3b67o6GidPn1ahw8fliT94x//4EsIAHCL27RpkwICAuTu7i5Jeu655/Tzzz+bP3FYkHfffVerVq2Svb297r//fgUFBcnX11e5ubmys7NT7dq19fnnnysjI0OTJ0/Wb7/9psuXL+uuu+5SWFiYQkJC1LlzZz3wwAOSJF9fX0VHR2vBggWKj483j1jg7e2tmJgYBQQEKCEhQdWqVVONGjU0depUNWnSRJI0e/Zsff3115KkJ554Qo8//ni+ei9duqR+/fpp79692rRpk3ndPDv2nNT48O2qZGendi3qKmxMp5vuV+B63NTgunXq1FGdOnVKqhYAgAEMGTLEHNI2bdpUaNuzZ88qJiZGGzZskCSlpqaal61atUoODn//MzRz5kzde++9CgsLkyT9+OOPRdZy5swZ/fLLL7rnnnss5i9YsEBNmjTRvn379Nxzz2nt2rX65ptvlJiYqHXr1uny5csaOnSo2rZtKy8vL4t1HRwcFBkZqSlTphS4z0b1q2v9PB9VreKgf72+UXsO/Km7mnLRAqWvyNCW94ema9euFtNFyWsPAKi47O3tdfLkScXHx6tVq1Zydna22nbbtm0WQel6/h0ZPXq0IiIi8j2uk6d58+Zyd3fX0aNH9eWXX2rs2LGSrgSzZ599VitXrswX2uzs7OTq6mp1n/Xq3Gb+fWWHSrK3tyuyTqAkFBna/Pz8ZGdnpxMnTsjR0dE8bU3e5e4///yzRAsFAJQPS5Ys0datWyVJffr0KbRttWrVNH36dL3++us6cuSI3njjDfn5+UmS+vfvLzs7O3l5eemdd96xWG/gwIE6ceKEoqKiCt2+h4eHYmNjlZSUZLVN/fr1dfLkSSUnJ6tevXrm+W5ubkpOTi50+4WJT/hTKakZav6P2je8DaA4igxtq1eQbjtFAAAgAElEQVSvliQ5OjpKunI5u7DQBgC3mrNnz2rkyJE6f/68srKyFBoaKjs7O02aNEm5ublyd3dXWFiYbrvtNvn6+mrlypXm236+vr7y8/PTmjVrdOTIEdWsWVPOzs4KCgrStGnTzM9jRUZGKjs7W8OGDbPY9x9//KF+/fqpWbNmyszM1JtvvqkuXbpIkrZs2aIhQ4bowIEDcnR01MiRI/XCCy/o7rvv1u7duzV79mwtXry4xPvj2tuj33//faHte/XqpV69eunPP//UwIEDzaHt2tujV/vyyy8VEBCgy5cvq2rVqsrKyrK6/ZEjR+rDDz+0uvyPP/6QyWSSyWTSiRMn5OHhYTH/eixZskSRKzaqWnZjjR92t/5My9KYd7Yo8q2e17U+UBKKDG333XefxXS3bt1KrRgAKI+WLFkiPz8/DRs2TJcvX9b58+f1yCOPKDIyUi4uLoqKitLMmTMVHBxc4PoBAQEKCAjI90D99erRo4cWLFigpKQkvfLKK+bQtnr1ag0YMEDff/+9evfurcmTJ2vcuHFatmyZ3nrrLc2YMeMmj/zmZWRk6MyZM3Jzc1ONGjVUuXJlq207dOigJUuWaMiQIZKk7OxsSZKXl5d27Nihvn37KjU1Vfb29hbrPfDAAwoNDVVGRka+be7fv19Hjx5VgwYN5O/vr3fffVdz5szR5cuX9d5771l9bu1aQ4YMUeKv32j80Fq6fDlHw4M3avoLHS1ulQKlrViD6164cEG33367+SFRAKgInJycFBcXp9OnT8vBwUHx8fHq1q2bXFxcJEmDBg3Sjh07Sr2Oc+fOqUaNGubpgwcPasKECYqOjpYkubu7q0WLFho/frw8PT3VuHHjUqljyZIl8vX1la+vr44fP66lS5fK399f/v7++V5MyMrK0jPPPCNvb2/5+voqICDAvKx///7y9fVV//79JUmBgYHavn27+vXrpwEDBqhGjRoymUzq27evTp48KV9fXz322GOaPHlyvpoGDx6slJQU8/SoUaPk7++vqVOnat68ebKzs1Pfvn3VsGFD+fj4yM/PTw899JBatGhR4DEOHz5csbGxCggIMPdvnuXf/U87953Sa/N2qHdAtLbF3/gtVqA4ivX26G233aa6deuqZs2apVUPAJQ7Q4YM0R9//KGHHnpILi4uGjZsmMWzUZJUqVKxPzCjvXv3ytfXV5J08uRJvfDCCwW2i42Nla+vrw4cOKD3339fkrRr1y61adNGDRo00MmTJ5WTk6NKlSpp7Nix6tChg7Zt21bseq5Ht27dtGfPHot5eVfGCuLs7KxVq1blm39tEJKu/Bsze/bsArfz7rvv5ps3evRo87igw4YNM99ajoiIsFrP2LFjzS8jFObjjz+2umxwHw8N7uNR5DaAklbsIT8GDBigL7/8UiNHjryhv6QAwGgqV66swMBABQYGKioqSosXL1bHjh0t2uTk5EiS+fkrBwcHZWZmysnJyep2W7RoYQ4vec+0FSTv9uj58+f16KOPqkePHlqzZo02b96snTt36ujRo9q+fbs6d+6smjVrqnHjxoW+pVka5syYpKz0E9q4JV7HT5w2z7/nLg+1aNawVPaZkXFBTk43f3vyPys36fJVfe/do53q1K6Rr92xI/+T1Oam9wfcqGKHNj8/P23atEne3t4aNmyYGjduXOBfSu3atSuRAgHA1o4cOaL69eurcuXKcnFxUatWrfTDDz8oJSXF/Exb+/btJf39/FWPHj20bds286f+SoKTk5P5ua1ffvnF/BLD77//rk8++USdO3cusX0VV1b6CQUPrSUNva/oxiWmVolsJXio33W1e2raxRLZH3Cjih3a/P39zb+Pi4vL9yYpQ34AuNXEx8drxIgRqlq1qipXrqz58+crOTlZw4cPV25urho1amQesuLFF1/U888/r7CwMFWrVk3z58+/6f3n3R7NysrS8OHDlZCQYDGwebNmzfTTTz/d9H4AlG/FDm0l8RcQUNEV9Cmg0aNHa8+ePXJ2dlZAQIDGjx+vJk2aKCoqSosWLZIkNWzYUPPmzdPAgQO1cuVKhYaG6vvvv8/3GR8p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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Make the plot\n", "plt.figure(figsize=(9,6))\n", "plt.bar(new_x_yours, height_yours, width=width_yours, color = energy_colors_dict[YOUR_PORTFOLIO], edgecolor = \"black\")\n", "plt.title(YOUR_PORTFOLIO)\n", "plt.xlabel('Capacity_MW')\n", "plt.ylabel('Price')\n", "for new_x, height, label in zip(new_x_yours, height_yours, label_yours):\n", " plt.text(new_x, height, label,\n", " ha='center', va='bottom', fontsize=8)\n", "price_line_plot(price)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's reduce our problem further to only include the plants that are actually operational under the new market price. Run the following cell to see the plants that will operate given our market price, and then we can begin the process of calculating our profit." ] }, { "cell_type": "code", "execution_count": 159, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Price: 42.39\n" ] }, { "data": { "image/png": "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slgskqSjR48qKSlJbdu2tY1xdnZWs2bNtG3bNkIbAAC4r+QrtE2ePFnHjh3TM888o5YtW+rw4cOaNm2axowZo61btxZIIWPHjlWdOnXUqFEjSVJSUpIkycPDw26ch4eHTp06ddP9JCYmFkg9AApeZlam0SUAwF25lzkjMDDwlv35Cm0bN25U//79NXnyZFubp6enQkNDdfLkSVWqVOmuinzllVeUkJCgmJgYOTo63tW+8powAOM4lri7f98AYDQjc0a+1mlLSkpS48aN7dqaNGmi7OxsnThx4q4KCA8P1/Lly7Vq1SpVqVLF1m61WiVAbie4AAAgAElEQVRJycnJduOTk5Pl6el5V+8JAABgNvkKbZmZmSpTpoxd2/XXGRkZd/zmY8aMsQW2atWq2fX5+fnJarVqw4YNtraMjAzFx8fnCJAAAADFXb6fHj1y5Ih++OEH2+tz585JunZtt2zZsjnG57W47qhRo/TFF19o0aJFslgstnvYXFxcVLZsWTk4OCgsLEwzZsxQYGCgAgICNH36dLm4uKh37975LRsAAKBYyHdoi4iIUERERI72l19+2e51fhfXnTdvniT7xXqla2ffwsPDJUnPP/+8Ll26pNGjR9sW142OjmaNNgAAcN/JV2grqAV1b5SamprnGAcHB4WHh9tCHAAAwP0qX6FtwIAB97oOAAAA3EK+HkQAAACAsQhtAAAAJkBoAwAAMAFCGwAAgAkQ2gAAAEyA0AYAAGAChDYAAAATILQBAACYAKENAADABAhtAAAAJkBoAwAAMAFCGwAAgAkQ2gAAAEyA0AYAAGAChDYAAAATILQBAACYAKENAADABAhtAAAAJkBoAwAAMAFCGwAAgAkQ2gAAAEyA0AYAAGAChDYAAAATILQBAACYAKENAADABAhtAAAAJkBoAwAAMAFCGwAAgAkYGtri4uLUr18/1axZUxaLRYsXL7brDwsLk8Visftq3769QdUCAAAYp6SRb37hwgUFBQWpf//+Gj58eK5jWrdurTlz5theOzk5FVZ5AAAARYahoa1jx47q2LGjJOmZZ57JdUzp0qVltVoLsywAAIAip8jf0xYfH6+AgAAFBwfrueeeU3JystElAQAAFDpDz7TlpX379nr88cfl5+enY8eOafLkyeratas2btyo0qVL57pNYmJiIVcJIL8yszKNLgEA7sq9zBmB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HjlyRJJyve/ubvTv3187duzQ//73P0nS6tWrdfHixTu6NHpd+/btZbFYtHz5ci1btkxBQUGqVavWTcc3adJER48e1alTp/T9998rMzPTFtoaN26sX3/9VcnJydqxY4eysrJsl1QBFG2ENgAFqnr16jp06JCuXLmS59jMzEz17NlTGzdu1AsvvKBFixZpxYoVWr58uaRrZ8puV1pamh5//HEdOHBA48aN0+eff64vv/zStq7anezzdvTq1UtOTk62s21Lly5VtWrVVL9+/TveZ6lSpdStWzd98cUXWrly5U3Psl13431t8fHx8vf3l4eHhySpYcOGcnR0VHx8PPezASbDPW0AClTnzp21bds2ffnll3riiSduOXbv3r365ZdfNHv2bA0YMMDW/uuvv950m19//dV2E70kpaSkKDU11baOWmxsrFJSUvTxxx/rkUcesY3761IXf/vb3yRdexihILm5ualTp062e9A2b96sV1555a7327t3by1cuFAODg7q1avXLcdeD2Hx8fE6ePCg3Zk0FxcX1a5dWwkJCfrpp59UsWJF27EAULRxpg1AgRo0aJC8vb01btw4u2Unrjt//rzeeOMNSbKtf5adnW035r333rvp/ufOnWs3/oMPPpAkderU6ab7zMrK0qxZs+z24+7urubNm+uzzz6zXSq97q/1/JWLi4vS0tJuOq5///46fPiwwsPDlZWVlWd4zY/mzZtr3LhxmjJlit1Cv7nx8PCQv7+/tmzZoh9++MF2afS6Ro0aKTY2Vjt37uTSKGAinGkDUKAsFosWL16sPn36qFWrVurdu7caNGigEiVKaN++fVq+fLnc3Nw0fvx4VatWTf7+/ho3bpx+++03ubm5af369frtt99uuv/ffvtNffr0UadOnbRnzx59/PHHatu2rdq0aSPp2qXB8uXLKywsTMOGDVPJkiW1atWqHGu5SdJbb72lzp07q3Xr1ho8eLCqVKmi48ePKzo6Wjt37rxpDfXr11d0dLTGjh2rhg0bqkSJEnZnvzp06KAKFSpoxYoVeuSRR1S5cuW7OKLXODg4aNSoUfke36RJEy1evNj2/V/75s6dm2sfgKKLM20AClz9+vUVHx+vYcOGaceOHXr11Vc1duxYbdmyRYMGDdLatWslXbtXa8mSJWrQoIHee+89TZ48Wa6urrZ72nLz0UcfyWKx6I033tCKFSv05JNPauHChbZ+Nzc3LV26VD4+PoqIiNCMGTMUFBRkOyN3o1q1amn9+vVq2bKlFvy/du4WR2EgDOP4syFNUAjSpArZC3ADHIID4JtWcAFULYQzINCtqeEAlfiatrayFUgQTVbtZlkW1hTY2fx/9p1M3nFP5mu303K5VJIkmk6nd9fneZ7m87niOFYQBPI876JuWdZniPv+LcizfISx4XAo13Uval933ghtgDnejsfj/XMAAPgD1uu1NpuNiqKQ4zivbudXYRhqu92qLEsNBoNXtwPgH2CnDQA6dj6fFUWRZrMZgQ1AZ7jTBgAdqetaaZpqv9+rrmstFourMU3TqG3bm3P0ej3Ztv3INgEYitAGAB3J81y+78u2ba1WK43H46sxk8lEVVXdnGM0GinLske2CcBQ3GkDgCc6HA46nU436/1+n8cBAH5EaAMAADAADxEAAFJJM5gAAAAhSURBVAAMQGgDAAAwAKENAADAAIQ2AAAAAxDaAAAADPAO0l66nuiljG4AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nonmarg_capacity = sum(sorted_joined_table.where('PRICE' + str(hour), are.below(price))[\"Capacity_MW\"])\n", "marg_capacity = sum(sorted_joined_table.where('PRICE' + str(hour), are.equal_to(price))[\"Capacity_MW\"])\n", "marg_demand = demand - nonmarg_capacity\n", "marg_proportion = marg_demand / marg_capacity\n", "\n", "marginal_plants = np.where(height_yours == price)[0]\n", "width_yours2 = width_yours.copy()\n", "width_yours2[marginal_plants] = width_yours2[marginal_plants] * marg_proportion\n", "new_x_yours2 = find_x_pos(width_yours2)\n", "\n", "\n", "plt.figure(figsize=(9,6))\n", "num_x = len(your_source.where('PRICE' + str(hour), are.below_or_equal_to(price))[1])\n", "plt.bar(new_x_yours2[:num_x], height_yours[:num_x], width=width_yours2[:num_x], \n", " color = energy_colors_dict[YOUR_PORTFOLIO],\n", " edgecolor = \"black\")\n", "plt.title(YOUR_PORTFOLIO)\n", "plt.xlabel('Capacity_MW')\n", "plt.ylabel('Price')\n", "for new_x, height, label in zip(new_x_yours2[:num_x], height_yours[:num_x], label_yours[:num_x]):\n", " plt.text(new_x, height, label,\n", " ha='center', va='bottom', fontsize=8)\n", "price_line_plot(price)\n", "\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The plot above allows us to see how the prices we have set correspond to the market price. However, in order to look at the profits that we are making, we should look at our marginal cost rather than our bid prices. We do this in the plot below, allowing us to compare the market price of energy in this hour to the marginal costs for running the plants that have a bid price that was below the market price." ] }, { "cell_type": "code", "execution_count": 160, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Price: 42.39\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAm0AAAGpCAYAAADfmgGBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xl4Tefe//FPxJRG2EqyjYmSmCKKqHmeiQZFTT1O/ZpqcwylpTiHGuo0lKNVc2mrplKhlRiCp9QQgra01NA4qaklVIWExJDk94fHfuxGYiPJykrer+vKddnrvtda33uR+GQN93KKi4tLFQAAAHK0fEYXAAAAgIcjtAEAAJgAoQ0AAMAECG0AAAAmQGgDAAAwAUIbAACACRDaAOQqy5cvl8Vi0fLly40uBQAyVX6jCwCA9FgsljTLChYsKKvVqsaNG2v48OGqUqWKAZXddePGDa1YsUIRERE6cuSI/vzzT+XPn19Wq1W1atVSx44d1bVrVxUsWNCwGgHkHk5Mrgsgp7oX2kaNGmVbdu3aNf3www/at2+fXF1dtWnTJtWsWdPWfvXqVcXGxspqtapYsWJZVtt3332nl19+WefOnZOHh4eaNm2qcuXKKTU1VefOnVNkZKRiY2NVvXp17dmzJ8vqAJB3ENoA5Fj3QltcXFyatpEjR2rhwoXq06eP5s2bl611nThxQm3btlVCQoL+9a9/aciQIWnOpiUnJ2vDhg2aO3euIiIisrU+ALkT97QBMKVWrVpJki5fvmy3PKN72r755hu1b99eZcqUUYUKFdS3b1/98ssvCg4OlsVi0enTpx3a99tvv61r165p+PDheuuttx54+dPZ2VmBgYFav3693fJbt27p448/Vs+ePVWjRg15eHjIy8tLgYGB6Ya7I0eOKCgoSDVr1pTValXFihXVqFEjvfXWW7p69apDNQMwP+5pA2BK3377rSSpTp06DvVfs2aNgoKCVKhQIXXt2lWlS5fW/v371bZtW9WoUcPh/Z46dUo7duyQi4uLhg4d+tD++fPb/5i9cuWKRo8erfr166tly5YqWbKkLly4oIiICPXu3VsffPCBBgwYYOt/5MgRtWnTRk5OTmrfvr2eeeYZJSQk6MyZM1qxYoUGDRqUpZeBAeQchDYAOV5ISIjtz/Hx8Tp48KCioqLUsWNHDR48+KHrx8fH680335Szs7MiIiJUq1YtW9uECRP04YcfOlzL3r17JUm1atV6rLBksVh0+PBhlS1b1m751atX1aFDB02cOFG9e/eWi4uLJOmLL75QUlKSli1bps6dO6cZFw85AHkHoQ1Ajjd16tQ0y6pWraoXXnhBRYoUeej6Gzdu1NWrV9WrVy+7wCZJI0aM0GeffebwZcaLFy9KkkqXLv3A9vnz5+vKlSt2y3r16qWKFStKkgoVKpQmsElSsWLF1K9fP40dO1Y//PCDGjdubNd+L8Tdz83NzaGaAeQOhDYAOd79DyJcv35dx48f14QJE/Tqq6/q+PHjGjduXIbr//TTT5Kkhg0bpmkrUqSI/Pz8tHv37kypdcGCBfr111/tlj333HO20CZJx44d00cffaQ9e/YoNjZWSUlJdv3Pnz9v+/MLL7yg+fPnq1+/fgoMDFSzZs1Ur149Va5cOVPqBWAePIgAwFRcXV3l7++vpUuXytXVVTNnztS5c+cyXOfatWuSJHd39we2e3h4OLz/e33vD1b3O3jwoOLi4hQXF6c+ffqkaT9w4IBatWql0NBQ+fj46OWXX9bIkSM1atQoderUSZJ08+ZNW39/f39FRESoRYsWWr9+vQYPHqx69eqpZs2a+vTTTx2uG4D5caYNgClZLBZ5e3vrxx9/1I8//qhy5cql2/feZcRLly49sP3eJU9H3Dtbd+jQIV27dk1FixZ9hKql6dOnKzExUeHh4WratKld24wZM7Rx48Y06zz33HNauXKlbt26pZ9++knbt2/XwoUL9eabb8rFxeWB4RBA7sOZNgCmde+yaUpKSob97k2+e+8hgvslJCTo8OHDDu+zQoUKat68uRITE/XRRx89QrV3xcTEqHjx4mkCmyRFRkZmuG7BggVVt25djRw5UvPnz5ekNFOKAMi9CG0ATGn9+vU6ffq0ChQooPr162fYt1OnTipatKjWrl2rQ4cO2bVNnz79kec6mzp1qooWLaoZM2boww8/1K1bt9L0SUlJUXx8fJrlnp6eunLlio4cOWK3fMmSJfrmm2/S9N+3b58SExPTLI+NjZUkPfXUU49UOwDz4vIogBzv/ik/bty4oRMnTmjr1q2SpHfeeeeh96QVLVpU06dP12uvvWZ7H+i9edoOHz6sxo0bKzIyUvnyOfZ7bNWqVbVmzRq9/PLLmjBhgubOnatmzZqpXLlySk5OVmxsrCIjI/Xbb7+pXLly8vT0tK0bHBysb775xlZH0aJFbVOYdOnSRevWrbPb18yZM7Vz5041bNhQXl5ecnNz08mTJ7V582a5uLgoODjY0cMIwOQIbQByvPun/HB2dlbJkiXVoUMHDRw4UC1btnRoGy+++KKKFy+uadOm6euvv1bBggXVqFEjbd261fb06aNMofHcc8/pwIEDWr58uTZt2qSdO3fqypUrKlCggDw8PFS3bl2NHz9egYGBKly4sG29Nm3aaOXKlZo+fbq++uor5cuXT/7+/goPD9epU6fShLagoCAVL15c33//vfbt26fbt2+rdOnS6t27twYPHsxTpEAewrtHAeRpycnJevbZZ3X79m2dOHHC6HIAIF3c0wYgT7h69apu3Lhhtyw1NVXTpk3TuXPn0rxtAAByGs60AcgTvv32W/Xv318tW7aUp6enrl+/rgMHDujw4cMqV66ctm/fnu48bgCQExDaAOQJZ86c0eTJkxUVFaU//vhDd+7cUZkyZdS+fXu99dZbjzTBLgAYgdAGAABgAtzTBgAAYAKENgAAABMgtAEAAJgAoe0RRUdHG12CoRg/48/LGD/jz+vy+jEwevyENgAAABMgtAEAAJgAoQ0AAMAECG0AAAAmQGgDAAAwAUIbACBH2bVrl2rUqKGAgAAFBARo48aNKleunOLi4iRJwcHBiomJkSSFhoaqY8eO6tixowYOHKhbt24pICBAd+7cUUhIiDp06GDb7v1/3rNnjzw9PXXr1q3sHRzwBAhtAIAcp3fv3tqwYYM2bNggNzc3lS1bVkuXLrXrc+zYMa1evVrr1q3Tpk2b9Nprryk5Odmuz5UrV3Tw4ME02w8PD1fXrl21Y8eOLB0HkJly3btHi1ksRpcAAHgC30r6H0mT7/u8WdIeSdskvSJprKTlkhpLavOX9Vvct771f9dbKqmJpN3/2ydA0vz/7bMgKwYBPIar/3s2OT2caQMA5DhLdTd8tZC0X5KzpOclrb2vz3lJpR+yHR9J1yX9ft+yHyTVlVReUqyklMwoGMgG+Y0uILM9LKU+qejoaPn4+GTpPnKyB41/165dCg4OlpeXlyRp0KBB+uGHHzR27Nh0tzNr1iyFhYXJ2dlZzZs315gxYxQQEKDU1FQ5OTmpePHiWrZsmRITEzVu3DgdP35cd+7cUY0aNTR9+nSFhISoYcOGatGihSQpICBAGzZsUEhIiHbs2KGIiAhJd+9hiYiIUHBwsKKjo+Xq6io3NzdNmjRJFStWlCR98MEH2rJliyTpb3/7m/r27Zum3suXL6tPnz66ffu2rFarPvvsM7m4uKTpN2fOHIWHh9v2n9vw75/xZ8f4E3bt0os7dth+huzatUs7duxQz8GDNWDAAJUqVUrxI0eq+JdfKrp+fZVr2dJu/TsBAbq6bp2Spk3T9YYN9XdJ/9m5U8l79uhqRIS+mDxZu3fvVqSrq86ePastM2eqYcOGD60rr//9SxwDo8ef60IbjNG7d2+7H7AZuXbtmiIiIrR161ZJst1cLElhYWHKn////lm+//77eu655zR9+nRJUmRk5ENruXcPS+3ate2Wf/zxx6pYsaKOHTumQYMGaePGjfqf//kfnT59Wps2bdKdO3fUr18/1alTR1WrVrVb12KxKCIiQv/973+1Zs0abd68WV27drXrc/PmTR0+fPih9QF4PBaLRd7e3tq5c6ckqUuXLpowYYKaNGmiAgUK6ODBg2m+dyWpRYsWmjZtmhITEyVJBw8etP1i9csvv+jzzz93KLQBRuPyKLKds7OzLl68aAs4lgzuQ4yKilKvXr1snxs3bvzQ7Q8cOFDz5s1Lt71atWry8vLS2bNn9dVXX2nIkCGSpPz58+sf//iH1q1b98Ca8+W7++2SnJxsO0t3v6VLl6pPnz4PrQ/Aw61cudL29Ohvv/1mW/7666/rl19+kXT3e7lHjx4KDAxUx44dNW/ePLtf+u7Xq1cvXbp0SdHR0SpRooRteeXKlfXdd99l7WCATMKZNmSKlStXau/evZKkdu3aZdjX1dVVU6ZM0TvvvKMzZ85o4sSJ6ty5syQpMDBQTk5Oqlq1qv7zn//YrdetWzdduHBBoaGhGW6/UqVK2r59u86fP59un9KlS+vixYuKjY1VqVKlbMvLlCmj2NjYB67z/fffa/DgwSpWrJgGDx5s13b79m3t3r1bQUFBCgkJybA+ABlr2rSpjhw58sC2SpUq6cqVK7bPPXv2VM+ePe36bNiwQZI0ZswY27L+/furf//+ku6edb/f5s2bM6VuIKsR2pAp/np59GGP0bdu3VqtW7fWn3/+qW7dutlC218vj97vq6++UnBwsO7cuaPChQvr5s2b6W4/KChICxcuTLf9999/l9VqldVq1YULF1SpUiW75Q/i7++vJUuWKCIiQsuWLVOJEiW0dOlStWnTRiVLllSPHj0yHDMAAE+C0IZsl5iYqCtXrqhMmTJyc3NTgQIF0u1br149rVy5Ur1795Yk2xxMVatW1f79+9W+fXvFxcXJ2dnZbr2/3sNyvxMnTujs2bMqV66cunTpolmzZunDDz/UnTt3NHfuXI0fPz7NOrdu3VLBggUlSUWLFlVycrJ69+5tq2v8+PE6fPiwPvvsMx07dkwLFizQa6+99ngHKBf7cOpY3Uy4YHQZjy0x8YZcXJ4yugzDMP68PX6JY5CU4qLx/55l2P4JbcgU918e/dvf/qYvv/xSBw4ckCSNGDFCTZs2tfW9efOmXn/9dd26dUspKSkKDg62td27POrs7KywsDCNGjVK//rXv7RkyRIVLFhQlSpVktVqVfny5bVx40YFBAQoJSVFkyZNSlNTr169NGXKFNvnV199VUWKFFGRIkU0e/ZsOTk5qX379jpy5Ig6duyo1NRUvfTSS6pevXqabR0+fFjjxo3TzZs3VaZMGS1YYD+z08SJE21/7tChA4EtHTcTLmhCv2JGl/EEzFx7ZmD8yNvHYNSi9G+7yQ65bnLdrGb0475GY/yM/0nGP3VckMlDG4C8bNSi85owfYVh++dM2yNasfgjFc6X9pJbXvE4p8a/3XNYv124bPtcu0YlVa9cPrNLy1Sr1u3Snfteh9Ohpb9KFHfL85cGnnT85878KqlW5hUEAHkIoe0Rpd68rAlBD5uDOzd7jLMk/ZpkfhlZbEK/zum05PWzRE82/lcm83JuAHhczNMGAABgAoQ2AAAAEyC0AQAAmAChDQAAwARyTGibMWOGLBaLRo4caVuWmpqqkJAQVa1aVaVKlVJAQICOHTtmYJUAAADGyBGh7cCBA1q8eLF8fX3tls+cOVNz5szR1KlTtW3bNrm7u6tbt26Kj483qFIAAABjGB7arl69qldffVWzZ8+WxWKxLU9NTdW8efM0bNgwdenSRdWrV9e8efOUkJDw0BeGAwAA5DaGh7Z7oaxZs2Z2y0+fPq3Y2Fi1atXKtszFxUWNGjXSvn37srtMAAAAQxk6ue7nn3+umJgYffzxx2naYmNjJUnu7u52y93d3XX+fPrv/oqOjs7cIgFkmuSU5Id3AoAcLCtzxsNeE2hYaIuOjtakSZMUERGhAgUKZNp28/J7IYGczjmfs9ElAMATMTJnGHZ5dP/+/bp8+bIaNGigEiVKqESJEoqMjNSiRYtUokQJPf3005KkS5cu2a136dIleXh4GFEyAACAYQw70xYQEKDatWvbLRs0aJAqVaqkN998U97e3rJardq+fbvq1KkjSUpKStLevXs1adIkI0oGAAAwjGGhzWKx2D0tKklPPfWUihcvrurVq0uSgoODNWPGDPn4+Mjb21vTp0+Xq6urevToYUTJAAAAhjH0QYSHeeONN5SYmKiRI0cqLi5O/v7+Wrt2rdzc3IwuDQAAIFvlqNC2YcMGu89OTk4aM2aMxowZY1BFAAAAOYPh87QBAADg4QhtAAAAJkBoAwAAMAFCGwAAgAkQ2gAAAEyA0AYAAGAChDYAAAATILQBAACYAKENAADABAhtAAAAJkBoAwAAMAFCGwAAgAkQ2gAAAEyA0AYAAGAChDYAAAATILQBAACYAKENAADABAhtAAAAJkBoAwAAMAFCGwAAgAkQ2gAAAEyA0AYAAGAChDYAAAATILQBAACYAKENAADABAhtAAAAJkBoAwAAMAFCGwAAgAkQ2gAAAEzAsNC2cOFCNWrUSOXLl1f58uXVtm1bbd682dYeHBwsi8Vi99WmTRujygUAADBUfqN2XKZMGU2cOFGVKlVSSkqKvvjiC/Xr10/ffvutatSoIUlq0aKFFixYYFunYMGCRpULAABgKMNCW0BAgN3ncePG6ZNPPtGBAwdsoa1QoUKyWq1GlAcAAJCj5Ih72pKTk7VmzRpdv35d9erVsy3fu3evvL295e/vr6FDh+rSpUsGVgkAAGAcw860SdLPP/+sdu3aKSkpSa6urlq2bJl8fX0lSW3atNHzzz8vLy8vnTlzRpMnT1ZgYKC+/fZbFSpUKN1tRkdHZ1f5AB5Rckqy0SUAwBPJypzh4+OTYbuhoc3Hx0e7du3StWvXtG7dOgUHB2v9+vWqXr26unfvbuvn6+urWrVqyc/PT5s3b1ZgYGCG2wSQMznncza6BAB4IkbmDENDW8GCBVWxYkVJUq1atfTDDz9o7ty5mj17dpq+pUuXVpkyZRQTE5PdZQIAABguR9zTdk9KSopu3br1wLbLly/r/PnzPJgAAADyJMPOtE2YMEHt2rVT2bJllZCQoNDQUO3evVtffvmlEhISNGXKFAUGBspqterMmTOaNGmS3N3d1blzZ6NKBgAAMIxhoS02NlYDBw7UxYsXVbRoUfn6+io0NFStW7dWYmKijh49qpUrV+rq1auyWq1q2rSpPvvsM7m5uRlVMgAAgGEMC23z5s1Lt83FxUVr167NxmoAAABythx1TxsAAAAejNAGAABgAoQ2AAAAEyC0AQAAmAChDQAAwAQIbQAAACZAaAMAADABQhsAAIAJENoAAABMgNAGAABgAoQ2AAAAEyC0AQAAmAChDQAAwAQIbQAAACZAaAMAADABQhsAAIAJENoAAABMgNAGAABgAoQ2AAAAEyC0AQAAmAChDQAAwAQIbQAAACZAaAMAADABQhsAAIAJENoAAABMgNAGAABgAoQ2AAAAEyC0AQAAmAChDQAAwAQMC20LFy5Uo0aNVL58eZUvX15t27bV5s2bbe2pqakKCQlR1apVVapUKQUEBOjYsWNGlQsAAGAow0JbmTJlNHHiRO3YsUPbt29Xs2bN1K9fPx05ckSSNHPmTM2ZM0dTp07Vtm3b5O7urm7duik+Pt6okgEAAAxjWGgLCAhQ27ZtVbFiRXl7e2vcuHEqUqSIDhw4oNTUVM2bN0/Dhg1Tly5dVL16dc2bN08JCQkKDQ01qmQAAADD5Ih72pKTk7VmzRpdv35d9erV0+nTpxUbG6tWrVrZ+ri4uKhRo0bat2+fgZUCAAAYI7+RO//555/Vrl07JSUlydXVVcuWLZOvr68tmLm7u9v1d3d31/nz5zPcZnR0dJbVC+DJJKckG10CADyRrMwZPj4+GbYbGtp8fHy0a9cuXbt2TevWrVNwcLDWr1//xNsEkDM553M2ugQAeCJG5gxDL48WLFhQFStWVK1atTR+/Hj5+flp7ty5slqtkqRLly7Z9b906ZI8PDyMKBUAAMBQOeKetntSUlJ069YteXl5yWq1avv27ba2pKQk7d27V/Xr1zewQgAAAGMYdnl0woQJateuncqWLWt7KnT37t368ssv5eTkpODgYM2YMUM+Pj7y9vbW9OnT5erqqh49ehhVMgAAgGEMC22xsbEaOHCgLl68qKJFi8rX11ehoaFq3bq1JOmNN95QYmKiRo4cqbi4OPn7+2vt2rVyc3MzqmQAAADDGBba5s2bl2G7k5OTxowZozFjxmRTRQAAADlXjrqnDQAAAA9GaAMAADABh0PboEGD9N1336Xb/v3332vQoEGZUhQAAADsORzaVqxYoV9//TXd9tOnT+uLL77IlKIAAABgL9Muj/75558qVKhQZm0OAAAA98nw6dHIyEjt3r3b9jk8PFwxMTFp+sXFxWnt2rWqUaNG5lcIAACAjEPbrl27NHXqVEl3p+AIDw9XeHj4A/tWq1bN1hcAAACZK8PQ9sYbb2jgwIFKTU2Vt7e3PvjgAwUGBtr1cXJykouLiwoXLpylhQIAAORlGYY2FxcXubi4SJJ+/PFHlSxZUk899VS2FAYAAID/4/AbEaxWq27cuGEX2i5fvqzPP/9cV69eVZcuXVSnTp0sKRIAACCvczi0DR06VMePH9eOHTskSTdu3FCbNm106tQpSdLcuXMVHh6uBg0aZEmhAAAAeZnDU37s2bNHHTt2tH0ODQ3VqVOnFBoaqhMnTqhKlSqaPn16lhQJAACQ1zkc2i5duqSyZcvaPm/cuFH16tVT69at5eHhoX79+umnn37KkiIBAADyOodDW5EiRRQXFydJunPnjvbs2aMWLVrY2l1cXBQfH5/pBQIAAOAR7mmrXbu2li5dqmbNmmnTpk1KSEhQhw4dbO2//vqrPDw8sqRIAACAvM7h0DZ27Fh169ZNLVu2VGpqqrp27aratWvb2tevX6/69etnSZEAAAB5ncOh7dlnn9WBAwe0b98+FS1aVE2aNLG1xcXFKSgoSI0bN86SIgEAAPI6h0ObJJUoUUKdOnVKs9xisSg4ODjTigIAAIC9RwptkrRlyxZt2bJFZ86ckSR5enqqQ4cOatOmTaYXBwAAgLscDm1JSUn6+9//rq1btypfvnwqVaqUJGnbtm369NNP1bZtWy1ZskSFChXKsmIBAADyKoen/AgJCdGWLVv09ttvKyYmRkeOHNGRI0f066+/avTo0dq6daumTJmSlbUCAADkWQ6HtjVr1uill17S6NGjVbRoUdtyNzc3vf322+rXr59Wr16dJUUCAADkdY/0RoT7p/j4q1q1aunSpUuZUhQAAADsORzaypYtq507d6bbvnPnTrvXXAEAACDzOBza+vbtq3Xr1mnIkCE6duyYbt++rdu3b+vYsWMaOnSowsPD9dJLL2VlrQAAAHmWw0+Pvvnmmzp9+rSWLVum5cuXy8nJSZKUmpqq1NRU/e1vf9Pw4cOzrFAAAIC8zOHQli9fPs2aNUuvv/66tmzZorNnz0qSypcvr3bt2snX1zfLigQAAMjrHnlyXV9fXwIaAABANsvwnrabN29q+PDhmj9/foYbmT9/vt58803dvn07U4sDAADAXRmGtsWLF2vFihVq3759hhtp3769li9frqVLlzq84xkzZqhly5YqX768KlWqpF69euno0aN2fYKDg2WxWOy+eF0WAADIizIMbV9//bU6d+6sZ555JsONPPPMMwoMDFRoaKjDO969e7deeeUVbd68WWFhYcqfP7+6du2qK1eu2PVr0aKFTpw4YftiAl8AAJAXZXhP288//6wXXnjBoQ3Vq1dPkydPdnjHa9eutfu8YMECeXp6KioqSh07drQtL1SokKxWq8PbBQAAyI0eek9b4cKFHdpQ4cKFdfPmzccuJCEhQSkpKbJYLHbL9+7dK29vb/n7+2vo0KG8dQEAAORJGZ5p8/Dw0MmTJx3a0MmTJ+Xu7v7YhYwePVp+fn6qV6+ebVmbNm30/PPPy8vLS2fOnNHkyZMVGBiob7/9VoUKFXrgdqKjox+7BgBZKzkl2egSAOCJZGXO8PHxybA9w9DWpEkTrVq1SiNHjlSRIkXS7RcfH69Vq1apVatWj1XkP//5T0VFRSkiIkLOzs625d27d7f92dfXV7Vq1ZKfn582b96swMDAB27rYQMGYBznfM4P7wQAOZiROSPDy6NDhw7V5cuX1bNnT507d+6Bfc6dO6devXrp8uXLGjx48CMXMGbMGK1Zs0ZhYWGqUKFChn1Lly6tMmXKKCYm5pH3AwAAYGYZnmmrVq2aPvzwQw0bNky1a9dWo0aN5OvrqyJFiighIUFHjx5VZGSkUlNT9cEHH6h69eqPtPNRo0bpq6++Unh4uCpXrvzQ/pcvX9b58+d5MAEAAOQ5D30jQr9+/VS1alVNmTJFO3bs0M6dO21tBQoUUIsWLfT222/rueeee6QdjxgxQqtWrdKyZctksVgUGxsrSXJ1dbWFwilTpigwMFBWq1VnzpzRpEmT5O7urs6dOz/iMAEAAMzNoddY+fv7a/Xq1UpKStJ///tfxcfHy83NTRUrVpSLi8tj7XjRokWSpC5dutgtHzVqlMaMGSNnZ2cdPXpUK1eu1NWrV2W1WtW0aVN99tlncnNze6x9AgAAmNUjvXu0cOHCmfbe0bi4uAzbXVxc0szlBgAAkFdl+CACAAAAcgZCGwAAgAkQ2gAAAEyA0AYAAGAChDYAAAATILQBAACYQLpTfjz//POPvDEnJyeFhYU9UUEAAABIK93QlpKSIicnp0faWGpq6hMXBAAAgLTSDW0bNmzIzjoAAACQAe5pAwAAMIFHeo3VPfHx8bp27ZpSUlLStJUvX/6JiwIAAIC9Rwptixcv1qxZs/Trr7+m2+fPP/984qIAAABgz+HLo0uWLNHw4cPl5eWlsWPHKjU1VcHBwRo+fLg8PDzk5+enWbNmZWWtAAAAeZbDoW3+/Plq0aKF1q5dq5dfflmS1K5dO40bN05RUVGKi4vTtWvXsqpOAACAPM3h0BYTE6NOnTrdXSkjH3fmAAAgAElEQVTf3dVu374tSbJYLOrfv78WLVqUBSUCAADA4dDm6upqm4etSJEicnZ21vnz523tTz/9tH7//ffMrxAAAACOh7bKlSvrxIkTkqT8+fPLz89Pq1at0u3bt5WUlKRVq1bJy8srywoFAADIyxwObZ06dVJERISSkpIkSSNGjNCePXtUoUIFeXt7a9++fRo+fHiWFQoAAJCXOTzlx5AhQzRkyBDb54CAAG3YsEFhYWFydnZWhw4d1KRJkywpEgAAIK97rMl172nYsKEaNmyYWbUAAAAgHbzGCgAAwAQcPtOWmpqqxYsXa+nSpTp16pTi4uLS9HFyctLly5cztUAAAAA8Qmh75513NGfOHPn5+enFF1+UxWLJyroAAABwH4dD2xdffKHAwEAtXrw4C8sBAADAgzh8T1tSUpJatGiRhaUAAAAgPQ6HtmbNmumHH37IyloAAACQDodD23/+8x999913mj59ui5evJiVNQEAAOAvHL6nrXbt2kpNTdV7772n9957TwUKFLC9OP4eJycn3j8KAACQBRwObd26dZOTk1NW1gIAAIB0OBza5s2bl6k7njFjhsLDw3Xy5EkVLFhQdevW1fjx41W9enVbn9TUVE2ZMkWff/654uLi5O/vr+nTp6tatWqZWgsAAEBOZ9gbEXbv3q1XXnlFmzdvVlhYmPLnz6+uXbvqypUrtj4zZ87UnDlzNHXqVG3btk3u7u7q1q2b4uPjjSobAADAEOmeaYuMjJQkNW7c2O7zw9zr/zBr1661+7xgwQJ5enoqKipKHTt2VGpqqubNm6dhw4apS5cuku6e7fPx8VFoaKgGDBjg0H4AAAByg3RDW+fOneXk5KQLFy6oYMGCts/pSU1NlZOTk/7888/HKiQhIUEpKSm2Ny2cPn1asbGxatWqla2Pi4uLGjVqpH379hHaAABAnpJuaAsPD5ckFSxY0O5zVhk9erT8/PxUr149SVJsbKwkyd3d3a6fu7u7zp8/n+52oqOjs65IAE8kOSXZ6BIA4IlkZc7w8fHJsD3d0NakSZMMP2emf/7zn4qKilJERIScnZ2faFsPGzAA4zjne7LvbwAwmpE5w7AHEe4ZM2aM1qxZo7CwMFWoUMG23Gq1SpIuXbpk1//SpUvy8PDIzhIBAAAM5/CUH4MGDcqw3cnJSYULF1aZMmXUpEkT22XOjIwaNUpfffWVwsPDVblyZbs2Ly8vWa1Wbd++XXXq1JF09/2ne/fu1aRJkxwtGwAAIFdwOLTt2rVLiYmJ+uOPPyTJ9sBAXFycJKlkyZJKSUnRn3/+KScnJ7Vu3Vqff/65nnrqqQdub8SIEVq1apWWLVsmi8Viu4fN1dVVRYoUkZOTk4KDgzVjxgz5+PjI29tb06dPl6urq3r06PFEgwYAADAbhy+PfvnllypYsKBGjx6tX3/91fYVExOjUaNGqVChQtq8ebNOnTqlkSNH6n/+53/073//O93tLVq0SPHx8erSpYuqVKli+5o1a5atzxtvvKHg4GCNHDlSLVu21IULF7R27Vq5ubk92agBAABMxikuLi7VkY6BgYHy9vbWjBkzHtg+fPhwnTp1Sl999ZUkKSgoSFFRUTpy5EjmVZsDTBjRV1ODShtdBmBKr0zer0/GPvzWCQDIiUYtOq8J01cYtn+Hz7R999138vX1Tbe9Ro0a2r9/v+1zw4YN0zxEAAAAgMfjcGgrVqyYvvnmm3Tbt27dqqJFi9o+X79+ncuYAAAAmcTh0Na/f39t2rRJ/fr10zfffGO7p+2bb75R3759tWXLFvXv39/Wf8uWLfLz88uSogEAAPIah58eHT16tJKSkjR37lxt2rTJrs3Z2VmDBg3S6NGjJd2dmqNv374ZXk4FAACA4xwObU5OTpo4caIGDx6sHTt26OzZs5Kk8uXLq3nz5navmypcuLD69u2b+dUCAADkUQ6FtsTERH300Ud67rnn1KpVK+ZJAwAAyGYO3dPm4uKiDz74QOfOncvqegAAAPAADj+IUKNGDcXExGRlLQAAAEiHw6Ft3Lhx+vzzz7V58+asrAcAAAAP4PCDCLNnz1bx4sXVp08flSlTRhUqVJCLi4tdHycnJ3355ZeZXiQAAEBe53BoO378uJycnFSuXDlJ0pkzZ9L0cXJyyrzKAAAAYONwaDt8+HBW1gEAAIAMOHxPGwAAAIzj8Jm2+8XHx+vatWtKSUlJ01a+fPknLgoAAAD2Him0LV68WLNmzdKvv/6abp8///zziYsCAACAPYcvjy5ZskTDhw+Xl5eXxo4dq9TUVAUHB2v48OHy8PCQn5+fZs2alZW1AgAA5FkOh7b58+erRYsWWrt2rV5++WVJUrt27TRu3DhFRUUpLi5O165dy6o6AQAA8jSHQ1tMTIw6dep0d6V8d1e7ffu2JMlisah///5atGhRFpQIAAAAh0Obq6urUlNTJUlFihSRs7Ozzp8/b2t/+umn9fvvv2d+hQAAAHA8tFWuXFknTpyQJOXPn19+fn5atWqVbt++raSkJK1atUpeXl5ZVigAAEBe5nBo69SpkyIiIpSUlCRJGjFihPbs2aMKFSrI29tb+/bt0/Dhw7OsUAAAgLzM4Sk/hgwZoiFDhtg+BwQEaMOGDQoLC5Ozs7M6dOigJk2aZEmRAAAAed1jTa57T8OGDdWwYcPMqgUAAADp4DVWAAAAJpDhmbbnn3/+kTbm5OSksLCwJyoIAAAAaWUY2nbv3i0XFxdVqFAhm8oBAADAg2QY2ipUqKBTp04pJSVFPXr0UI8ePQhwAAAABsjwnraDBw9q69atat68uT7++GPVqVNH7dq106JFi3gxPAAAQDZ66IMIdevW1dSpU3X8+HGtXr1azzzzjCZNmqQqVaqoZ8+eWrVqla5fv54dtQIAAORZDj89mi9fPrVu3VoLFizQL7/8oo8//lgJCQkKDg7W7NmzH2vnkZGR6t27t6pVqyaLxaLly5fbtQcHB8tisdh9tWnT5rH2BQAAYGaPPE9bYmKiNmzYoNWrV+u7777TU089pWeeeeaxdn79+nVVr15dffr00euvv/7APi1atNCCBQtsnwsWLPhY+wIAADAzh0JbcnKyvvnmG4WGhmrjxo26deuWWrVqpfnz56tTp05ycXF5rJ23a9dO7dq1kyT94x//eGCfQoUKyWq1Ptb2AQAAcosMQ1tUVJRCQ0P19ddf68qVK2rQoIEmT56srl27ymKxZEuBe/fulbe3t4oVK6bGjRtr3Lhxcnd3z5Z9AwAA5BQZhraOHTvKxcVFbdu2Vffu3VW2bFlJ0n//+9901/H398+04tq0aaPnn39eXl5eOnPmjCZPnqzAwEB9++23KlSo0APXiY6OzrT9A8hcySnJRpcAAE8kK3OGj49Phu0PvTyamJiosLAwhYeHZ9gvNTVVTk5OmToVSPfu3W1/9vX1Va1ateTn56fNmzcrMDDwges8bMAAjOOcz9noEgDgiRiZMzIMbXPmzMmuOhxSunRplSlTRjExMUaXAgAAkK0yDG19+/bNrjoccvnyZZ0/f54HEwAAQJ7zyFN+ZKaEhATbWbOUlBSdO3dOP/30k4oXL67ixYtrypQpCgwMlNVq1ZkzZzRp0iS5u7urc+fORpYNAACQ7RyeXDcrHDx4UM2aNVOzZs2UmJiokJAQNWvWTO+9956cnZ119OhR9e3bV3Xr1lVwcLC8vb21ZcsWubm5GVk2AABAtjP0TFvTpk0VFxeXbvvatWuzsRoAAICcy9AzbQAAAHAMoQ0AAMAECG0AAAAmQGgDAAAwAUIbAACACRDaAAAATIDQBgAAYAKENgAAABMgtAEAAJgAoQ0AAMAECG0AAAAmQGgDAAAwAUIbAACACRDaAAAATIDQBgAAYAKENgAAABMgtAEAAJgAoQ0AAMAECG0AAAAmQGgDAAAwAUIbAACACRDaAAAATIDQBgAAYAKENgAAABMgtAEAAJgAoQ0AAMAECG0AAAAmQGgDAAAwAUIbAACACRga2iIjI9W7d29Vq1ZNFotFy5cvt2tPTU1VSEiIqlatqlKlSikgIEDHjh0zqFoAAADjGBrarl+/rurVq2vKlClycXFJ0z5z5kzNmTNHU6dO1bZt2+Tu7q5u3bopPj7egGoBAACMY2hoa9eund555x116dJF+fLZl5Kamqp58+Zp2LBh6tKli6pXr6558+YpISFBoaGhBlUMAABgjBx7T9vp06cVGxurVq1a2Za5uLioUaNG2rdvn4GVAQAAZL/8RheQntjYWEmSu7u73XJ3d3edP38+3fWio6OztC4Ajy85JdnoEgDgiWRlzvDx8cmwPceGtsf1sAEDMI5zPmejSwCAJ2Jkzsixl0etVqsk6dKlS3bLL126JA8PDyNKAgAAMEyODW1eXl6yWq3avn27bVlSUpL27t2r+vXrG1gZAABA9jP08mhCQoJiYmIkSSkpKTp37px++uknFS9eXOXLl1dwcLBmzJghHx8feXt7a/r06XJ1dVWPHj2MLBsAACDbGRraDh48qOeff972OSQkRCEhIerTp4/mzZunN954Q4mJiRo5cqTi4uLk7++vtWvXys3NzcCqAQAAsp+hoa1p06aKi4tLt93JyUljxozRmDFjsrEqAACAnCfH3tMGAACA/0NoAwAAMAFCGwAAgAkQ2gAAAEyA0AYAAGAChDYAAAATILQBAACYAKENAADABAhtAAAAJkBoAwAAMAFCGwAAgAkQ2gAAAEyA0AYAAGAChDYAAAATILQBAACYAKENAADABAhtAAAAJkBoAwAAMAFCGwAAgAkQ2gAAAEyA0AYAAGAChDYAAAATILQBAACYAKENAADABAhtAAAAJkBoAwAAMAFCGwAAgAkQ2gAAAEyA0AYAAGACOTq0hYSEyGKx2H1VrlzZ6LIAAACyXX6jC3gYHx8frV+/3vbZ2dnZwGoAAACMkeNDW/78+WW1Wo0uAwAAwFA5+vKoJJ06dUpVq1ZVzZo19f/+3//TqVOnjC4JAAAg2+XoM21169bV3Llz5ePjoz/++EPTpk1Tu3btFBUVpaeffvqB60RHR2dzlQAclZySbHQJAPBEsjJn+Pj4ZNieo0Nb27Zt7T7XrVtXtWrV0ooVKzR48OAHrvOwAQMwjnM+7kkFYG5G5owcf3n0fkWKFFHVqlUVExNjdCkAAADZylShLSkpSdHR0TyYAAAA8pwcfXl07Nix6tChg8qVK2e7p+3GjRvq06eP0aUBAABkqxwd2n7//XcFBQXp8uXLKlmypOrWrautW7fK09PT6NIAAACyVY4ObZ9++qnRJQAAAOQIprqnDQAAIK8itAEAAJgAoQ0AAMAECG0AAAAmQGgDAAAwAUIbAACACRDaAAAATIDQBgAAYAKENgAAABMgtAEAAJgAoQ0AAMAECG0AAAAmQGgDAAAwAUIbAACACRDaAAAATIDQBgAAYAKENgAAABMgtAEAAJgAoQ0AAMAECG0AAAAmQGgDAAAwAUIbAACACRDaAAAATIDQBgAAYAKENgAAABMgtAEAAJgAoQ0AAMAECG0AAAAmQGgDAAAwAVOEtkWLFqlmzZqyWq1q3ry59uzZY3RJAAAA2SrHh7a1a9dq9OjReuutt7Rz507Vq1dPPXv21NmzZ40uDQAAINvk+NA2Z84c9e3bV3//+99VpUoVTZs2TVarVZ9++qnRpQEAAGQbp7i4uFSji0jPrVu3VLp0aX3yySfq2rWrbfmIESN09OhRbdy40cDqAAAAsk+OPtN2+fJlJScny93d3W65u7u7Ll68aFBVAAAA2S9HhzYAAADclaNDW4kSJeTs7KxLly7ZLb906ZI8PDwMqgoAACD75ejQVrBgQdWqVUvbt2+3W759+3bVr1/foKoAAACyX36jC3iYQYMG6bXXXpO/v7/q16+vTz/9VBcuXNCAAQOMLg0AACDb5OgzbZL0wgsvKCQkRNOmTVPTpk0VFRWlL7/8Up6entleS26c5HfGjBlq2bKlypcvr0qVKqlXr146evSoXZ/U1FSFhISoatWqKlWqlAICAnTs2DG7PnFxcRo4cKA8PT3l6empgQMHKi4uLjuHkilmzJghi8WikSNH2pbl9vFfuHBBr7/+uipVqiSr1ar69etr9+7dtvbcPP7k5GRNnjzZ9n1ds2ZNTZ48WXfu3LH1yU3jj4yMVO/evVWtWjVZLBYtX77crj2zxvrzzz+rU6dOKlWqlKpVq6apU6cqNdX4iQoyGv/t27c1fvx4NWrUSGXKlFGVKlUUFBSUZk7QmzdvauTIkapYsaLKlCmj3r1767fffrPrc/bsWfXq1UtlypRRxYoV9fbbb+vWrVvZMsaMPOzv/37Dhg2TxWLRrFmz7JabefySY8fg5MmTeumll+Tp6anSpUurWbNmOnHihK3dyGOQ40ObJAUFBenw4cO6ePGiduzYocaNG2d7Dbl1kt/du3frlVde0ebNmxUWFqb8+fOra9euunLliq3PzJkzNWfOHE2dOlXbtm2Tu7u7unXrpvj4eFufoKAg/fTTTwoNDVVoaKh++uknvfbaa0YM6bEdOHBAixcvlq+vr93y3Dz+uLg4tW/fXqmpqfryyy+1b98+vf/++3ZPbOfm8X/44YdatGiRpk6dqv3792vKlClauHChZsyYYeuTm8Z//fp1Va9eXVOmTJGLi0ua9swY67Vr19StWzd5eHho27ZtmjJlimbNmqXZs2dnyxgzktH4b9y4oR9//FEjRozQjh07tGLFCv3222/q0aOHXYgfM2aMwsPD9cknn2jjxo2Kj49Xr169lJycLOnuLwK9evVSQkKCNm7cqE8++URhYWH617/+la1jfZCH/f3fs27dOn3//fcqXbp0mjYzj196+DE4deqU2rdvLy8vL4WFhWnv3r0aO3asXF1dbX2MPAY5ep62nKR169by9fXVRx99ZFtWp04ddenSRePHjzewssyVkJAgT09PLV++XB07dlRqaqqqVq2qV199VSNGjJAkJSYmysfHR++++64GDBigEydOqH79+oqIiFCDBg0kSXv37lXHjh114MAB+fj4GDkkh1y9elXNmzfXRx99pKlTp6p69eqaNm1arh//pEmTFBkZqc2bNz+wPbePv1evXipevLjmz59vW/b666/rypUrWrVqVa4ef9myZfX++++rX79+kjLv7/qTTz7RhAkT9Msvv9j+U5w2bZo+/fRTHT16VE5OTsYM+C/+Ov4HOX78uBo0aKDIyEj5+vrq6tWr8vb21pw5c/Tiiy9Kks6dOyc/Pz+FhoaqdevW2rp1q1588UUdPnxY5cqVkyStWrVKQ4cOVXR0tIoWLZot43uY9MZ/5swZtW/fXl9//bV69OihgQMHasiQIZKUq8YvPfgYBAUFycnJSQsXLnzgOkYfA1OcaTParVu3dOjQIbVq1cpueatWrbRv3z6DqsoaCQkJSklJkcVikSSdPn1asbGxdmN3cXFRo0aNbGPfv3+/ihQpYvdwSIMGDeTq6mqa4zNs2DB16dJFzZo1s1ue28e/YcMG+fv7a8CAAfL29laTJk308ccf2y5l5fbxN2jQQLt379Yvv/wi6e5/0rt27VLbtm0l5f7x3y+zxrp//341bNjQ7ixG69atdf78eZ0+fTqbRpM57p1hvPfz8NChQ7p9+7bdMSpXrpyqVKliN/4qVarY/rOW7o7/5s2bOnToUDZW/+ju3LmjoKAgjRgxQlWqVEnTntvHn5KSooiICFWpUkXdu3dXpUqV1LJlS61du9bWx+hjQGhzQF6a5Hf06NHy8/NTvXr1JEmxsbGSlOHYL168qBIlStj9Bu3k5KSSJUua4vh8/vnniomJ0dixY9O05fbxnzp1Sp988okqVKigNWvW6PXXX9fEiRNtv2Xm9vEPGzZMvXr1Uv369VWyZEk1aNBAffr0UVBQkKTcP/77ZdZYL168+MBt3Gszi1u3bmns2LHq0KGDypYtK+lu/c7OzipRooRd378eo7+O/970VTl9/CEhIXr66af1yiuvPLA9t4//0qVLSkhIsN3r/dVXX6l79+569dVXbVcjjD4GOf7pUWSff/7zn4qKilJERIScnZ2NLidb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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(9,6))\n", "num_x = len(your_source.where('PRICE' + str(hour), are.below_or_equal_to(price))[1])\n", "plt.bar(new_x_yours2[:num_x], height_yours_marginal_cost[:num_x], width=width_yours2[:num_x], \n", " color = energy_colors_dict[YOUR_PORTFOLIO],\n", " edgecolor = \"black\")\n", "plt.title(YOUR_PORTFOLIO)\n", "plt.xlabel('Capacity_MW')\n", "plt.ylabel('Marginal Cost')\n", "for new_x, height, label in zip(new_x_yours2[:num_x], height_yours_marginal_cost[:num_x], label_yours[:num_x]):\n", " plt.text(new_x, height, label,\n", " ha='center', va='bottom', fontsize=8)\n", "price_line_plot(price)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can finally calculate profit. The graphic above should show the market price line along with the marginal costs for operating our plants. Thus we can calculate profit by calculating the area between the red line and the blue boxes, as that will give us the total revenue - total cost. The function defined below is designed to perform that calculation." ] }, { "cell_type": "code", "execution_count": 161, "metadata": {}, "outputs": [], "source": [ "def profit(sorted_table, price):\n", " capacity_subset = sum(sorted_table.where('PRICE' + str(hour), are.below(price))[\"Capacity_MW\"])\n", " capacity_subset += sum(sorted_table.where('PRICE' + str(hour), are.equal_to(price))[\"Capacity_MW\"] * marg_proportion)\n", " revenue = capacity_subset * price\n", " cost = 0\n", " for i in range(len(sorted_table.where('PRICE' + str(hour), are.below(price))[\"Total_Var_Cost_USDperMWH\"])):\n", " cost += sorted_table.where('PRICE' + str(hour), are.below(price))[\"Total_Var_Cost_USDperMWH\"][i]\\\n", " * sorted_table.where('PRICE' + str(hour), are.below(price))[\"Capacity_MW\"][i]\n", " for i in range(len(sorted_table.where('PRICE' + str(hour), are.equal_to(price))[\"Total_Var_Cost_USDperMWH\"])):\n", " cost += sorted_table.where('PRICE' + str(hour), are.equal_to(price))[\"Total_Var_Cost_USDperMWH\"][i]\\\n", " * (sorted_table.where('PRICE' + str(hour), are.equal_to(price))[\"Capacity_MW\"][i] * marg_proportion)\n", " return revenue - cost\n", "\n", "def profit_pab(sorted_table, price):\n", " revenue = 0\n", " for i in range(len(sorted_table.where('PRICE' + str(hour), are.below(price))['PRICE' + str(hour)])):\n", " revenue += sorted_table.where('PRICE' + str(hour), are.below(price))['PRICE' + str(hour)][i]\\\n", " * sorted_table.where('PRICE' + str(hour), are.below(price))[\"Capacity_MW\"][i]\n", " for i in range(len(sorted_table.where('PRICE' + str(hour), are.equal_to(price))['PRICE' + str(hour)])):\n", " revenue += sorted_table.where('PRICE' + str(hour), are.equal_to(price))['PRICE' + str(hour)][i]\\\n", " * (sorted_table.where('PRICE' + str(hour), are.equal_to(price))[\"Capacity_MW\"][i] * marg_proportion)\n", " cost = 0\n", " for i in range(len(sorted_table.where('PRICE' + str(hour), are.below(price))[\"Total_Var_Cost_USDperMWH\"])):\n", " cost += sorted_table.where('PRICE' + str(hour), are.below(price))[\"Total_Var_Cost_USDperMWH\"][i]\\\n", " * sorted_table.where('PRICE' + str(hour), are.below(price))[\"Capacity_MW\"][i]\n", " for i in range(len(sorted_table.where('PRICE' + str(hour), are.equal_to(price))[\"Total_Var_Cost_USDperMWH\"])):\n", " cost += sorted_table.where('PRICE' + str(hour), are.equal_to(price))[\"Total_Var_Cost_USDperMWH\"][i]\\\n", " * (sorted_table.where('PRICE' + str(hour), are.equal_to(price))[\"Capacity_MW\"][i] * marg_proportion)\n", " return revenue - cost" ] }, { "cell_type": "code", "execution_count": 162, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1444.5" ] }, "execution_count": 162, "metadata": {}, "output_type": "execute_result" } ], "source": [ "profit(your_source, price)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now have the ability to estimate the amount of profit our plants will generate based on a given amount of demand! Again, this does not include considerations of credit or carbon emmissions, but it should give you a general sens of how your plants performed for this hour. Try going back to the start of the notebook and changing the hour you are examining, or add more cells to do a deeper analysis of your performance on your own to make better decisions for your team in the future." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Conclusion and Resources" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Congratulations! You have completed your Jupyter Notebook for the ESG. If you have questions, please do not hesitate to post them on the dedicated Piazza thread (https://piazza.com/class/jr2lknh4q311x1?cid=41)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Module Developers: Alec Kan, Alma Pineda, Aarish Irfan, Elaine Chien, and Octavian Sima.\n", "\n", "Data Science Modules: http://data.berkeley.edu/education/modules" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.7" } }, "nbformat": 4, "nbformat_minor": 2 }