In Situationen von Naturkatastrophen/Phänomenen können Stromausfälle auftreten. Um dies zu bekämpfen, können EV -Fahrer (Elektrofahrzeuge) ihre Fahrzeuge als Batterien für Kunden/ Kunden verwenden. Um die Schwierigkeit dieser Herausforderung zu simulieren, so viele Kunden wie möglich zu erreichen, bis die Stromausfallperiode vorbei ist, wurde eine RL -Umgebung geschaffen. Diese Umgebung verfügt über zufällige Szenarien, die auf der Größe der Knotennetzwerksgröße, der Menge der Häuser (nicht größer als Knotengröße sein können), Blackout -Daten und Wohnmodellen, um eine Blackout -Reaktion in hoher Ebene zu simulieren.

Beispiel eines zufälligen Agenten in Aktion.
Last repräsentiert die im Moment benötigte Leistung vom Knoten.
Die Stromladung repräsentiert den Strom, den der Agent (oder das Auto) hat.
Die Werte an den Kanten repräsentieren die Meilen der Kantenkosten.
Blauer Knoten repräsentiert Puffer. Grünerknoten repräsentiert Häuser. Grauer Knoten repräsentieren einen Blackout -Out -Knoten.
Weitere Details finden Sie in Abschnitt Aktion und Zustand.
Klonen Sie das Projekt
git clone https://github.com/Natemen96/ECEMasterProject.gitGehen Sie zum Projektverzeichnis
cd ECEMasterProject/RL python main.py Warnung: Dies ist eine große Installation (~ 2 GB) und dauert je nach Internetgeschwindigkeit ungefähr 30 Minuten. Abhängig von Ihrer Einrichtung ist es möglicherweise einfacher, das Paket selbst zu installieren. Die Liste finden Sie im Ordner conda_env . Siehe 'conda_env/rl_window.yml' für die aktuellste Paketliste. Funktioniert am besten unter Windows.
Für die einfache Installation stellen Sie zuerst mit einem Conda sicher, dass Sie Conda installiert haben.
Nachdem Conda installiert wurde, machen Sie Folgendes, um die Umgebung einzurichten
conda env create -f conda_env/rl_window.yml --name rl_env # or any name you prefer
conda activate rl_env # verify it work Stellen Sie sicher, dass Sie das Programm innerhalb der Conda Env durchführen.
Wohnungsdaten können von Pecan Street/Dataport heruntergeladen werden
Beginnen Sie bei "Home" (einem Knoten), um zu jedem Ort zu fahren, um Strom für Strom (Hauptressource für EV) zu erhalten. Entladen Sie Strom im Austausch für Belohnungen und reisen Sie zurück nach Hause, um für Strom zu versehen. Der Agent kann die Stromversorgung in "Home" wiederherstellen und mehr Belohnung verdienen, je nachdem, wie viel Strom zurückgekommen ist. Je mehr Kraft es für sich selbst wiederherstellt, desto mehr wird es belohnt.
Sobald die Stromversorgung in einem Knoten mit einer Stromladestation wiederhergestellt ist, kann der Agent auch dort die Energie wiederherstellen. Einige Knoten sind je nach Parametern leer.
graph_env: Randomly generated a fully connected graph n nodes
Args:
n (int, optional): [number of nodes]. Defaults to 5.
numofhome (int, optional): [number of homes for agent starting
point]. Defaults to 1.
numofblackout (int, optional): [number of houses with blackout].
Defaults to 1.
numofblackoutws (int, optional): [number of blackout houses with
solarpower]. Defaults to 0.
numofchargingstation (int, optional): [number of charging
station]. Defaults to 0.
max_actions (int, optional): [max number of action can be done
times 7. By default 3 (7) = 21]. Defaults to 3.
blackout_str (str, optional): [Reads Blackout data from npy
file. Blackout data from the 2021 Texas Power Crisis, a file for
each country]. Defaults to 'Brazoria'.
agents (list, optional): [Agent objects]. Defaults to [None].
nonsolarhouse_data_paths (list, optional): [Path for npy file
with nonsolar data info. Added to a node per path.]. Defaults to
[None].
solarhouse_data_paths (list, optional): [Path for npy file with
solarhouse data info. Added to a node per path.]. Defaults to
[None].
data_sample (int, optional): [how many data sample it take from
data in paths, samples taken evenly throughout data. By default
(0/6. 1/6 ... 6/6 0/6 ...) sample]. Defaults to 6.BasicAgent: Basic Agent that act as skeleton for other agent. Won't work by itself.
Args:
car ([dict]): [car information in the form of a python
dictionary. Required dict information: model, make, year,
avg_energy_consumption(kWh/mile), battery_capacity(kWh)]SmartQLAgent: Smart Agent that uses Qtable to make decisions
Args:
car ([dict]): [car information in the form of a python
dictionary. Required dict information: model, make, year,
avg_energy_consumption(kWh/mile), battery_capacity(kWh)]
sample_rate (int, optional): [decides how often a sample of the
qtable is taken. If left to default it's every 1/100 of total ep]
. Defaults to 100.
qtabletraining (bool, optional): [Flag for turning qtable
training on]. Defaults to True.
quiet (bool, optional): [Flag for turning data collection on].
Defaults to True.RandomDataAgent: Used for data collection of random agent. Doesn't
use Observation.
Args:
car ([dict]): [car information in the form of a python
dictionary. Required dict information: model, make, year,
avg_energy_consumption(kWh/mile), battery_capacity(kWh)]Belohnung zum Entladen, Aufladen. Die Vielfalt der Machtwiederherstellung führt zu mehr Belohnungen. Belohnung verloren, weil er keine Energie mehr hat. Die Episode ist vorbei, wenn EV aus Energie oder Netzwerk vollständig betrieben wird.
Each Agent will have 24 actions per ep by default.
e+2 Actions:
e - Move (at cost) to Node if possible
1 - Unload (at cost)
1 - Recharge (no cost, expect an action)
2 * n + 6 * n + 300 * n + c States:
n - Statuses of Each Node
Key - Assignment
0 - Buffer (Blue)
1 - Blackout (Darkgrey)
2 - Blackout with Solar (Lightgrey)
3 - Powered (Blue)
4 - Charging Station (Yellow)
5 - Home (Green)
n - Cost of each edge
n - Is the path reachable or not?
0 - No
1 - Yes
c - Charge State (400 possible values by default)
where n is the number of nodes states, e is the number of edges, and c number of is Charge states Jeder Knoten wurde so konzipiert, dass er auf einem Hausdatensatz basiert. Einige Häuser mit Solarantrieb benötigen im Vergleich zu nicht-Solar angetriebenen Häusern weniger Leistung von EVs. Die Kosten für den Hausknoten können aus den Wohnungsdaten abgeleitet werden.
Prozentsatz der Stromausfälle basierend auf den Blackout -Daten in Texas sowie Änderungen pro Tag.
Zumindest wurde ein Q-Learning verwendet, um die besten Lösungen zu finden.
Kann auf mehrere EV skaliert werden (Marl würde benötigt) und ein größeres Netzwerk. Marl wurde nicht vollständig getestet und ist wahrscheinlich sehr fehlerhaft.
Während eines Testlaufs von 50.000 EPS hatte der Smart -Agent, der mit QTables unterstützt wurde, eine Verbesserung von 263,13% im Vergleich zu einem zufälligen Agenten (der zufällige Aktionen ausführt).
scripts/Data/TexasBlackout.csv
-csv file of data collected from https://poweroutage.us/area/state/texas during the 2021 Texas Power Crisis with the following
- Metrics: ID,County,Customers Tracked,Customers Out,Outage %,DateTime
ECEMasterProject/RL/Data/
Avg_House_0/
- npy files of average daily power per every 15 mins of various houses provide by Dataport
Avg_House_1/
- npy files of next day regression of Avg_House_0 per house
Avg_House_n/
- npy files of concatenation of Avg_House_0 adn Avg_House_1 per houses
County/
- npy files of Texas County that were effect the most during the 2021 Texas Power Crisis
RL/agent/Sim_Data
- csv file result from various RL training, only stored reward.
RL/agent/agent_jsons/
-various json file of EV information
-Metrics: model, make, year, avg_energy_consumption(kWh/mile), battery_capacity(kWh), source
models/
KM/
-Classifier models trained using Time Series K Means stored in h5
LSTM/
-Old LSTM regression model trained on one house stored in h5
LSTM_nonsolar/
-LSTM regression model trained on non solar data stored in h5
LSTM_solar/
-LSTM regression model trained on solar data stored in h5
Qtables/
-Qtables from RL training stored in h5
notebooks/
analysis_c0.ipynb
-Analysis of classifier and regression model on solar houses data
analysis_c1.ipynb
-Analysis of classifier and regression model on nonsolar houses data
cluster.ipynb
-Creation and Analysis of classifier that can distinguish between solar and nonsolar data
compare_qtable_analyis.ipynb
-Comparing Qtable Smart Agent with Random Agent Baseline
D_LSTM_HousingData.ipynb
-Creation and analysis of regression on avg housing data where the original data sample occurs every 15 mins -> 98 sample per day
Dp1_analysis.ipynb
-Creation and analysis of regression on one house
EveryNyHouseAvg.ipynb
-Creation and analysis of regression on all house samples with model trained on one house (house 1)
LSTM_cluster0.ipynb
-Creation and analysis of regression on one house using most of the solar housing data
LSTM_cluster1.ipynb
-Creation and analysis of regression on one house using most of the nonsolar housing data
qtable_analyis_4_19.ipynb
-Analysis of Smart Agents performance
qtable_analyis_4_22.ipynb
-Analysis of Smart Agents performance
qtable_analyis.ipynb
-Analysis of Smart Agents performance
random_agent_analyis.ipynb
-Analysis of Random Agents performance
Texas_Blackout.ipynb
-Analysis of recorded Blackout DataEinige Kanten können abgeschaltet und später im Laufe der Tage wiederhergestellt werden (simulieren für Naturkatastrophen)
Tests hinzufügen
DRL- und klassische Optimierungstechniken
Debugug für Marl
In die OpenAI -Umgebung konvertieren
Erfahren Sie mehr über die Herstellung von DL/ML -Modellen.
Erfahren Sie mehr über die Datenanalyse aus der Erforschung von Daten und Ergebnissen aus dem DL/ML -Training.
Ich habe über Networkx und seine Funktionen für die für Projekte verbundene Graphentheorie gelernt.
Erfahren Sie mehr über die Verstärkungslernumgebungen und Agenten.
Erfahren Sie mehr über Datenkratzen, da ich während der Texas Power -Krise 2021 Blackout -Daten verschrotten musste
Lernte, wie man ein GIF mit Bildern in Python macht.
Vielen Dank an Professor Qin von meiner Alma Mater, Purdue University, für seine erstaunliche Unterstützung und seine Expertise für dieses Projekt.
Vielen Dank an Dataport und Pecan Street für die Bereitstellung von Wohnungsdaten zum Erstellen von Modellen mit.
Vielen Dank an Matt Leacock, den Schöpfer des Brettspiels, Pandemic für die Inspiration dieser Verstärkungslernumgebung.