diff --git a/examples/congested_analysis_intermreward.ipynb b/examples/congested_analysis_intermreward.ipynb
deleted file mode 100644
index 8c99204a..00000000
--- a/examples/congested_analysis_intermreward.ipynb
+++ /dev/null
@@ -1,1083 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "/home/ubuntu/sustaingym\n"
- ]
- }
- ],
- "source": [
- "%load_ext autoreload\n",
- "%autoreload 2\n",
- "%matplotlib inline\n",
- "%cd .."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "import os\n",
- "\n",
- "import numpy as np\n",
- "import seaborn as sns\n",
- "# import stable_baselines3 as sb3\n",
- "from tqdm.auto import tqdm\n",
- "\n",
- "from sustaingym.envs import CongestedElectricityMarketEnv\n",
- "from sustaingym.envs.electricitymarket.plot_utils import *\n",
- "from sustaingym.envs.electricitymarket.wrapped import DiscreteActions, CongestedDiscreteActions\n",
- "from examples.electricitymarket.run_electricitymarket import *\n",
- "\n",
- "\n",
- "sns.set_style(\"darkgrid\", {\"grid.color\": \".6\", \"grid.linestyle\": \":\"})"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [],
- "source": [
- "env = CongestedElectricityMarketEnv(use_intermediate_rewards=True)\n",
- "discrete_env = CongestedDiscreteActions(env)\n",
- "reset_seed = 15\n",
- "seeds = np.arange(30)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "application/json": {
- "ascii": false,
- "bar_format": null,
- "colour": null,
- "elapsed": 0.0177152156829834,
- "initial": 0,
- "n": 0,
- "ncols": null,
- "nrows": null,
- "postfix": null,
- "prefix": "",
- "rate": null,
- "total": null,
- "unit": "it",
- "unit_divisor": 1000,
- "unit_scale": false
- },
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "543124c1d71e4fdcb76b2040f16e9d36",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "0it [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "ep: 0\n",
- "ep: 1\n",
- "ep: 2\n",
- "ep: 3\n",
- "ep: 4\n",
- "ep: 5\n",
- "ep: 6\n",
- "ep: 7\n",
- "ep: 8\n",
- "ep: 9\n",
- "ep: 10\n",
- "ep: 11\n",
- "ep: 12\n",
- "ep: 13\n",
- "ep: 14\n",
- "ep: 15\n",
- "ep: 16\n",
- "ep: 17\n",
- "ep: 18\n",
- "ep: 19\n",
- "ep: 20\n",
- "ep: 21\n",
- "ep: 22\n",
- "ep: 23\n",
- "ep: 24\n",
- "ep: 25\n",
- "ep: 26\n",
- "ep: 27\n",
- "ep: 28\n",
- "ep: 29\n"
- ]
- }
- ],
- "source": [
- "env = CongestedElectricityMarketEnv(month=\"2020-07\",use_intermediate_rewards=True)\n",
- "\n",
- "seeds = range(30)\n",
- "\n",
- "results = run_random(seeds, env, False)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [],
- "source": [
- "from collections import defaultdict\n",
- "\n",
- "ep_rewards = np.sum(results['rewards'], axis=1)\n",
- "\n",
- "lst_ep_rewards = list(ep_rewards)\n",
- "\n",
- "rand_data = defaultdict(list)\n",
- "\n",
- "rand_data['seeds'] = seeds\n",
- "rand_data['ep_rewards'] = lst_ep_rewards\n",
- "\n",
- "rand_df = pd.DataFrame(rand_data)\n",
- "rand_df.to_csv('random_results.csv', index=False)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 15,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "application/json": {
- "ascii": false,
- "bar_format": null,
- "colour": null,
- "elapsed": 0.015688419342041016,
- "initial": 0,
- "n": 0,
- "ncols": null,
- "nrows": null,
- "postfix": null,
- "prefix": "",
- "rate": null,
- "total": 30,
- "unit": "it",
- "unit_divisor": 1000,
- "unit_scale": false
- },
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "04c6ff129d5b41d88bc2ff098fc26179",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/30 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "seed number: 0\n"
- ]
- },
- {
- "data": {
- "application/json": {
- "ascii": false,
- "bar_format": null,
- "colour": null,
- "elapsed": 0.015797853469848633,
- "initial": 0,
- "n": 0,
- "ncols": null,
- "nrows": null,
- "postfix": null,
- "prefix": "",
- "rate": null,
- "total": 288,
- "unit": "it",
- "unit_divisor": 1000,
- "unit_scale": false
- },
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "6cdc3f45a9c84417b7e2c51f166e61ae",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/288 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "ename": "ValueError",
- "evalue": "operands could not be broadcast together with shapes (37,) (36,) ",
- "output_type": "error",
- "traceback": [
- "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
- "\u001b[1;32m/home/ubuntu/sustaingym/examples/congested_analysis_intermreward.ipynb Cell 6\u001b[0m in \u001b[0;36m5\n\u001b[1;32m 1\u001b[0m env \u001b[39m=\u001b[39m CongestedElectricityMarketEnv(month\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m2020-07\u001b[39m\u001b[39m\"\u001b[39m,use_intermediate_rewards\u001b[39m=\u001b[39m\u001b[39mTrue\u001b[39;00m)\n\u001b[1;32m 3\u001b[0m seeds \u001b[39m=\u001b[39m \u001b[39mrange\u001b[39m(\u001b[39m30\u001b[39m)\n\u001b[0;32m----> 5\u001b[0m results \u001b[39m=\u001b[39m run_mpc(seeds, env)\n",
- "File \u001b[0;32m~/sustaingym/sustaingym/evaluate/run_electricitymarket.py:194\u001b[0m, in \u001b[0;36mrun_mpc\u001b[0;34m(seeds, env)\u001b[0m\n\u001b[1;32m 191\u001b[0m ep_prices[i] \u001b[39m=\u001b[39m lookahead_prices[\u001b[39m0\u001b[39m]\n\u001b[1;32m 193\u001b[0m \u001b[39m# print(\"calculating MPC optimal...\")\u001b[39;00m\n\u001b[0;32m--> 194\u001b[0m ep_results \u001b[39m=\u001b[39m env\u001b[39m.\u001b[39;49m_calculate_price_taking_optimal(\n\u001b[1;32m 195\u001b[0m prices\u001b[39m=\u001b[39;49mlookahead_prices, init_charge\u001b[39m=\u001b[39;49mcurr_charge, final_charge\u001b[39m=\u001b[39;49m\u001b[39m0\u001b[39;49m, steps\u001b[39m=\u001b[39;49menv\u001b[39m.\u001b[39;49mload_forecast_steps\u001b[39m+\u001b[39;49m\u001b[39m1\u001b[39;49m, count\u001b[39m=\u001b[39;49mcount)\n\u001b[1;32m 197\u001b[0m ep_rewards[count] \u001b[39m=\u001b[39m ep_results[\u001b[39m'\u001b[39m\u001b[39mrewards\u001b[39m\u001b[39m'\u001b[39m][\u001b[39m0\u001b[39m]\n\u001b[1;32m 198\u001b[0m ep_net_prices[count] \u001b[39m=\u001b[39m ep_results[\u001b[39m'\u001b[39m\u001b[39mnet_prices\u001b[39m\u001b[39m'\u001b[39m][\u001b[39m0\u001b[39m]\n",
- "File \u001b[0;32m~/sustaingym/sustaingym/envs/battery/congested_electricity_market.py:1147\u001b[0m, in \u001b[0;36mCongestedElectricityMarketEnv._calculate_price_taking_optimal\u001b[0;34m(self, prices, init_charge, final_charge, steps, count)\u001b[0m\n\u001b[1;32m 1145\u001b[0m net_price \u001b[39m=\u001b[39m prices \u001b[39m+\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mCARBON_PRICE \u001b[39m*\u001b[39m moers\n\u001b[1;32m 1146\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m-> 1147\u001b[0m net_price \u001b[39m=\u001b[39m prices \u001b[39m+\u001b[39;49m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mCARBON_PRICE \u001b[39m*\u001b[39;49m moers[count:count\u001b[39m+\u001b[39;49msteps]\n\u001b[1;32m 1148\u001b[0m obj \u001b[39m=\u001b[39m net_price \u001b[39m@\u001b[39m x \u001b[39m+\u001b[39m prices[\u001b[39m-\u001b[39m\u001b[39m1\u001b[39m] \u001b[39m*\u001b[39m cp\u001b[39m.\u001b[39mminimum(\u001b[39m0\u001b[39m, delta_energy[\u001b[39m-\u001b[39m\u001b[39m1\u001b[39m])\n\u001b[1;32m 1149\u001b[0m prob \u001b[39m=\u001b[39m cp\u001b[39m.\u001b[39mProblem(objective\u001b[39m=\u001b[39mcp\u001b[39m.\u001b[39mMaximize(obj), constraints\u001b[39m=\u001b[39mconstraints)\n",
- "\u001b[0;31mValueError\u001b[0m: operands could not be broadcast together with shapes (37,) (36,) "
- ]
- }
- ],
- "source": [
- "env = CongestedElectricityMarketEnv(month=\"2020-07\",use_intermediate_rewards=True)\n",
- "\n",
- "seeds = range(30)\n",
- "\n",
- "results = run_mpc(seeds, env)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 16,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "> \u001b[0;32m/home/ubuntu/sustaingym/sustaingym/envs/battery/congested_electricity_market.py\u001b[0m(1147)\u001b[0;36m_calculate_price_taking_optimal\u001b[0;34m()\u001b[0m\n",
- "\u001b[0;32m 1145 \u001b[0;31m \u001b[0mnet_price\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprices\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCARBON_PRICE\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mmoers\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0m\u001b[0;32m 1146 \u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0m\u001b[0;32m-> 1147 \u001b[0;31m \u001b[0mnet_price\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprices\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCARBON_PRICE\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mmoers\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mcount\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mcount\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0msteps\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0m\u001b[0;32m 1148 \u001b[0;31m \u001b[0mobj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnet_price\u001b[0m \u001b[0;34m@\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mprices\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mcp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mminimum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdelta_energy\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0m\u001b[0;32m 1149 \u001b[0;31m \u001b[0mprob\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mProblem\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobjective\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mMaximize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconstraints\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mconstraints\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0m\n",
- "*** NameError: name 'steos' is not defined\n",
- "37\n",
- "37\n",
- "(36,)\n",
- "252\n",
- "(2,)\n"
- ]
- }
- ],
- "source": [
- "%debug"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Run offline models"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 16,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "application/json": {
- "ascii": false,
- "bar_format": null,
- "colour": null,
- "elapsed": 0.014995574951171875,
- "initial": 0,
- "n": 0,
- "ncols": null,
- "nrows": null,
- "postfix": null,
- "prefix": "",
- "rate": null,
- "total": 30,
- "unit": "it",
- "unit_divisor": 1000,
- "unit_scale": false
- },
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "441570c354664730b442f13a171bd6ee",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/30 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "seed number: 0\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 1\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 2\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 3\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 4\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 5\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 6\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 7\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 8\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 9\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 10\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 11\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 12\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 13\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 14\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 15\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 16\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 17\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 18\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 19\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 20\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 21\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 22\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 23\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 24\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 25\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 26\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 27\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 28\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n",
- "seed number: 29\n",
- "calculating baseline no agent prices...\n",
- "calculating optimal...\n"
- ]
- }
- ],
- "source": [
- "opt_results = run_offline_optimal(seeds, env)\n",
- "save_results(opt_results, seeds=seeds, path='examples/congested_intermreward/offline_results.npz')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "application/json": {
- "ascii": false,
- "bar_format": null,
- "colour": null,
- "elapsed": 0.01629781723022461,
- "initial": 0,
- "n": 0,
- "ncols": null,
- "nrows": null,
- "postfix": null,
- "prefix": "",
- "rate": null,
- "total": 30,
- "unit": "it",
- "unit_divisor": 1000,
- "unit_scale": false
- },
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "76b9387c6ea64419aeb34ebcd551e5cb",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/30 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "opt_results = np.load('examples/congested_intermreward/offline_results.npz')\n",
- "follow_results = congested_run_follow_offline_optimal(\n",
- " seeds, env,\n",
- " opt_dispatches=opt_results['dispatch'],\n",
- " opt_energies=opt_results['energy'])\n",
- "save_results(follow_results, seeds=seeds, path='examples/congested_intermreward/follow_offline_results.npz')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "here\n"
- ]
- },
- {
- "data": {
- "application/json": {
- "ascii": false,
- "bar_format": null,
- "colour": null,
- "elapsed": 0.014987468719482422,
- "initial": 0,
- "n": 0,
- "ncols": null,
- "nrows": null,
- "postfix": null,
- "prefix": "",
- "rate": null,
- "total": null,
- "unit": "it",
- "unit_divisor": 1000,
- "unit_scale": false
- },
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "fe2ea344a4484237914b6557567960e8",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "0it [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "ep: 0\n",
- "ep: 1\n",
- "ep: 2\n",
- "ep: 3\n",
- "ep: 4\n",
- "ep: 5\n",
- "ep: 6\n",
- "ep: 7\n",
- "ep: 8\n",
- "ep: 9\n"
- ]
- }
- ],
- "source": [
- "results = run_random(seeds, env, discrete=False)\n",
- "save_results(results, seeds=seeds, path='examples/congested_intermreward/random_results.npz')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "here\n"
- ]
- },
- {
- "data": {
- "application/json": {
- "ascii": false,
- "bar_format": null,
- "colour": null,
- "elapsed": 0.01450037956237793,
- "initial": 0,
- "n": 0,
- "ncols": null,
- "nrows": null,
- "postfix": null,
- "prefix": "",
- "rate": null,
- "total": null,
- "unit": "it",
- "unit_divisor": 1000,
- "unit_scale": false
- },
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "048c2aa614884d01bdb832c20b8515b5",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "0it [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "ep: 0\n",
- "ep: 1\n",
- "ep: 2\n",
- "ep: 3\n",
- "ep: 4\n",
- "ep: 5\n",
- "ep: 6\n",
- "ep: 7\n",
- "ep: 8\n",
- "ep: 9\n",
- "ep: 10\n",
- "ep: 11\n",
- "ep: 12\n",
- "ep: 13\n",
- "ep: 14\n",
- "ep: 15\n",
- "ep: 16\n",
- "ep: 17\n",
- "ep: 18\n",
- "ep: 19\n",
- "ep: 20\n",
- "ep: 21\n",
- "ep: 22\n",
- "ep: 23\n",
- "ep: 24\n",
- "ep: 25\n",
- "ep: 26\n",
- "ep: 27\n",
- "ep: 28\n",
- "ep: 29\n"
- ]
- }
- ],
- "source": [
- "results = run_random(seeds, discrete_env, discrete=True)\n",
- "save_results(results, seeds=seeds, path='examples/congested_intermreward/random_discrete_results.npz')"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Train RL Models"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### PPO Models"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2023-06-04 08:08:23,587\tINFO worker.py:1544 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32m127.0.0.1:8267 \u001b[39m\u001b[22m\n",
- "2023-06-04 08:08:24,176\tINFO packaging.py:503 -- Creating a file package for local directory '/home/ubuntu/sustaingym/sustaingym'.\n",
- "2023-06-04 08:08:24,360\tINFO packaging.py:330 -- Pushing file package 'gcs://_ray_pkg_dc26e9820f58d0c9.zip' (56.29MiB) to Ray cluster...\n",
- "2023-06-04 08:08:25,546\tINFO packaging.py:343 -- Successfully pushed file package 'gcs://_ray_pkg_dc26e9820f58d0c9.zip'.\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Env Config: {'month': 7, 'eval month': None, 'discrete': False, 'interm_rewards': True}\n",
- "Model Config: {'algo': 'ppo', 'lr': 0.003, 'gamma': 0.9999, 'eval freq': 20, 'eval episodes': 5, 'log_dir': 'ppo_summer_interm_lr3e-03'}\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2023-06-04 08:08:26,086\tINFO algorithm_config.py:2899 -- Your framework setting is 'tf', meaning you are using static-graph mode. Set framework='tf2' to enable eager execution with tf2.x. You may also then want to set eager_tracing=True in order to reach similar execution speed as with static-graph mode.\n",
- "2023-06-04 08:08:26,132\tINFO algorithm.py:506 -- Current log_level is WARN. For more information, set 'log_level': 'INFO' / 'DEBUG' or use the -v and -vv flags.\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Creating log directory at: ppo_summer_interm_lr3e-03\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "\u001b[2m\u001b[36m(RolloutWorker pid=1778449)\u001b[0m 2023-06-04 08:08:30,149\tWARNING env.py:156 -- Your env doesn't have a .spec.max_episode_steps attribute. Your horizon will default to infinity, and your environment will not be reset.\n",
- "\u001b[2m\u001b[36m(RolloutWorker pid=1778449)\u001b[0m 2023-06-04 08:08:30,149\tWARNING env.py:166 -- Your env reset() method appears to take 'seed' or 'return_info' arguments. Note that these are not yet supported in RLlib. Seeding will take place using 'env.seed()' and the info dict will not be returned from reset.\n",
- "2023-06-04 08:08:37,904\tINFO trainable.py:172 -- Trainable.setup took 11.773 seconds. If your trainable is slow to initialize, consider setting reuse_actors=True to reduce actor creation overheads.\n",
- "2023-06-04 08:08:37,907\tWARNING util.py:67 -- Install gputil for GPU system monitoring.\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Iteration 0\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2023-06-04 08:09:11,845\tWARNING ppo.py:440 -- The mean reward returned from the environment is 20.829078674316406 but the vf_clip_param is set to 10.0. Consider increasing it for policy: default_policy to improve value function convergence.\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "An Algorithm checkpoint has been created inside directory: '/home/ubuntu/ray_results/PPO_congested_market_2023-06-04_08-08-26qhc8_zkk/checkpoint_000001'.\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- " 80%|████████ | 4/5 [05:03<01:15, 75.85s/it]"
- ]
- }
- ],
- "source": [
- "\n",
- "%run examples/train_rllib -m 7 -i -a ppo -l 3e-03 -o ppo_summer_interm_lr3e-03"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Trained on 2020 February data (evaluating on 2020 May data during training phase) with intermediate rewards and learning rate of 0.0003\n",
- "%run examples/train_rllib -m 2 -v 5 -i -a ppo -l 0.0003 -o examples/interm_results"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Trained on 2020 February data (evaluating on 2020 May data during training phase) with intermediate rewards and learning rate of 3e-05\n",
- "%run examples/train_rllib -m 2 -v 5 -i -a ppo -l 3e-05 -o examples/interm_results"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Trained on 2020 February data (evaluating on 2020 May data during training phase) with terminal rewards and learning rate of 0.003\n",
- "%run examples/train_rllib -m 2 -v 5 -a ppo -l 0.003 -o examples/interm_results"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Trained on 2020 February data (evaluating on 2020 May data during training phase) with terminal rewards and learning rate of 0.0003\n",
- "%run examples/train_rllib -m 2 -v 5 -a ppo -l 0.0003 -o examples/interm_results"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Trained on 2020 February data (evaluating on 2020 May data during training phase) with terminal rewards and learning rate of 3e-05\n",
- "%run examples/train_rllib -m 2 -v 5 -a ppo -l 3e-05 -o examples/interm_results"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Read results and make plots"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [],
- "source": [
- "results_paths = {\n",
- " 'oracle': 'examples/congested_intermreward/offline_results.npz',\n",
- " 'follow oracle': 'examples/congested_intermreward/follow_offline_results.npz',\n",
- " 'rand': 'examples/congested_intermreward/random_results.npz',\n",
- " 'rand discrete': 'examples/congested_intermreward/random_discrete_results.npz',\n",
- "\n",
- " # 'PPO (2019)': os.path.join(ppo2019_model_dir, 'eval2021/results.npz'),\n",
- " # 'PPO (2021)': os.path.join(ppo2021_model_dir, 'eval2021/results.npz'),\n",
- " # 'PPO discrete (2019)': os.path.join(ppodiscrete2019_model_dir, 'eval2021/results.npz'),\n",
- " # 'PPO discrete (2021)': os.path.join(ppodiscrete2021_model_dir, 'eval2021/results.npz'),\n",
- " # 'SAC (2019)': os.path.join(sac2019_model_dir, 'eval2021/results.npz'),\n",
- " # 'SAC (2021)': os.path.join(sac2021_model_dir, 'eval2021/results.npz'),\n",
- " # 'DQN (2019)': os.path.join(dqn2019_model_dir, 'eval2021/results.npz'),\n",
- " # 'DQN (2021)': os.path.join(dqn2021_model_dir, 'eval2021/results.npz')\n",
- "}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [],
- "source": [
- "results = {label: np.load(path) for label, path in results_paths.items()}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([[ 0.00000000e+00, 1.86707378e+01, 1.81200258e+01, ...,\n",
- " -1.76040959e+01, -1.75807413e+01, -1.75807413e+01],\n",
- " [ 0.00000000e+00, 2.00565370e+01, 1.89576713e+01, ...,\n",
- " -1.61993663e+01, -1.66796446e+01, -1.68136549e+01],\n",
- " [ 0.00000000e+00, -7.12704570e-13, 2.48396218e-11, ...,\n",
- " -1.76627867e+01, -1.75738986e+01, -1.73243459e+01],\n",
- " ...,\n",
- " [ 0.00000000e+00, -1.60809795e+01, 1.91495387e+01, ...,\n",
- " -1.53225144e+01, -1.54670906e+01, -1.54892087e+01],\n",
- " [ 0.00000000e+00, 1.42439524e+01, 1.45565113e+01, ...,\n",
- " -1.59671450e+01, -1.56231006e+01, -1.50509572e+01],\n",
- " [ 0.00000000e+00, 2.29475859e+01, 2.37575892e+01, ...,\n",
- " -2.07777559e+01, -1.94083257e+01, -1.85184649e+01]])"
- ]
- },
- "execution_count": 10,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "results['oracle']['rewards']"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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6EgOcYmuMVw9TVFR7aenyW638+KLzxoJkyRj73ZJ0xOm5iZJVMedQ1W88UHoiy8+4/3330HTNJMDa7pGjbpUVRVN07DZbO7bPv/8czZu3Ejfvn259dZbTc8gH3jgAcaOHev+2d/f3912Op3cc889hIWFsWDBAo4fP86UKVPQdZ3p06cDUFZWxsSJExkyZAiLFy8mPT2dqVOn4u/v777kmJmZyd13382YMWOYPXs2mzZtYsaMGYSHhzNy5MjWPWFBaGa//fYr27dvQZcUqmIHtcoxq2L6Yc3by+HD6axc+R0jR17ZKsf1RLIsExkZRXZ2FnJVGU6fILND8hpylXFJs730NJWVlfHCCzPZu3c3umyhstulOGvWdfQk1TH90WULvhm/8u23SykvL+e++x7wyokfjeppevTRR5k7d67754ULF/Lcc89RWVnJG2+8wSuvvNLsATZWQEAAUVFR7q+AgBOLi6akpLB//35mz55N7969ueiii5g6dSqLFi1yr5nz9ddfU1VVxQsvvEBycjKXX3459957L++//767t2nhwoXExMQwbdo0kpKSGDNmDKNGjWLevHmmnLMgNJfy8jLeffffAFR37IPuG9w6B7b4UhV3DgCffDKfgoKC1jmuh3Jfoqu53CQ0jGv2nOvxa8uKigp56qnHjIRJsVGRPNIjEyYXR4feVHYZgY7E2rWreeml56mqqjI7rEZrVNK0c+dOhg8/Mbvls88+4/HHH+e1117j1VdfZenSpc0eYGO9++67DBkyhOuuu4633nqr1qW3LVu20L1791plEYYNG0Z1dTU7duxwb3PeeefV6k0bNmwYubm5HDlyxL3N0KFDax13+PDh7NixA4fD0ZKnJwgt6v33/0NRUSGaTzDVsQNb9diO6J44A6KorKzgrbde8+ou/LPVoYNRU0cWSVPDOauRa9bra+ulb44dy2b69ClkZKSjWf2o6HklWpDnn7Ma2Y3K7peiSwqpqb/x3HNPUV7uXRMeGtQ39thjjwGQnZ3NRx99xJIlxqyaPXv2sHbtWjZv3ozT6SQ3N9e97axZs1oo5NO7/fbb6d27N8HBwWzfvp2XX36ZI0eO8NxzzwGQn59/ylTUkJAQrFYr+fn57m3i4mpn665lDfLz80lISKhzPxEREaiqSlFREdHRDf+U43SqyLLFPY5DURScThWQUBQFVVWRpBNt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",
- "text/plain": [
- "