Dalam situasi bencana alam/fenomena, pemadaman dapat terjadi. Untuk memerangi ini, pengemudi EV (kendaraan listrik) dapat menggunakan kendaraan mereka sebagai baterai untuk pelanggan/ klien. Untuk mensimulasikan kesulitan dari tantangan ini untuk mencapai sebanyak mungkin pelanggan sampai periode pemadaman berakhir, lingkungan RL diciptakan. Lingkungan ini menampilkan skenario acak berdasarkan ukuran jaringan simpul, jumlah rumah (tidak bisa lebih besar dari ukuran simpul), data pemadaman, dan model perumahan untuk mensimulasikan respons pemadaman pada materi tingkat tinggi.

Contoh agen acak beraksi.
Beban mewakili daya yang dibutuhkan saat ini dari simpul.
Muatan saat ini mewakili daya yang dimiliki agen (atau mobil).
Nilai -nilai di tepi mewakili mil dari biaya tepi untuk dilalui.
Node biru mewakili buffer. Node hijau mewakili rumah. Node abu -abu mewakili node pemadaman keluar.
Rincian lebih lanjut dapat ditemukan di bagian Action & State Space.
Klon proyek
git clone https://github.com/Natemen96/ECEMasterProject.gitPergi ke Direktori Proyek
cd ECEMasterProject/RL python main.py Peringatan: Ini adalah instalasi besar (~ 2GB) dan akan memakan waktu sekitar 30 menit tergantung pada kecepatan internet. Bergantung pada pengaturan Anda, Anda mungkin merasa lebih mudah untuk menginstal paket sendiri. Daftar ini dapat ditemukan di folder conda_env . Lihat 'conda_env/rl_window.yml' untuk daftar paket terbaru. Bekerja paling baik di windows.
Untuk pemasangan yang mudah, menggunakan conda terlebih dahulu pastikan Anda telah menginstal Conda.
Setelah Conda diinstal, lakukan berikut ini untuk mengatur lingkungan
conda env create -f conda_env/rl_window.yml --name rl_env # or any name you prefer
conda activate rl_env # verify it work Pastikan untuk menjalankan program di dalam conda env.
Data perumahan dapat diunduh dari Pecan Street/Dataport
Mulailah di "Home" (A Node) bepergian ke setiap lokasi dengan imbalan kekuasaan (sumber daya utama untuk EV), bongkar daya dengan imbalan hadiah, perjalanan kembali ke rumah dengan imbalan kekuasaan. Agen dapat memulihkan daya di "rumah" dan mendapatkan lebih banyak hadiah tergantung pada seberapa banyak kekuatannya kembali. Semakin banyak kekuatan yang dikembalikan untuk dirinya sendiri, semakin dihargai.
Setelah daya dipulihkan dalam sebuah node dengan stasiun pengisian daya, agen dapat mengembalikan energi di sana juga. Beberapa node akan kosong tergantung pada parameter.
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)]Hadiah yang diberikan untuk pembongkaran, pengisian ulang. Keragaman restorasi kekuasaan akan menghasilkan lebih banyak hadiah. Hadiah hilang karena kehabisan energi. Episode berakhir ketika EV kehabisan energi atau jaringan sepenuhnya bertenaga.
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 Setiap node dirancang untuk didasarkan pada dataset rumah. Beberapa rumah yang bertenaga surya akan membutuhkan lebih sedikit daya dari EV dibandingkan dengan rumah bertenaga non-solar. Biaya simpul rumah dapat berasal dari data perumahan.
Persentase pemadaman berdasarkan data pemadaman Texas, serta perubahan per hari.
Minimal, learning Q digunakan untuk menemukan solusi terbaik.
Dapat diskalakan ke beberapa EV (marl akan dibutuhkan), & jaringan yang lebih besar. Marl belum sepenuhnya diuji dan kemungkinan sangat buggy.
Selama uji coba EPS 50K, agen pintar yang mendukung Qtables memiliki peningkatan 263,13% dibandingkan dengan agen acak (yang melakukan tindakan acak).
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 DataBeberapa tepi dapat diblokir dan dipulihkan nanti sebagai hari berlalu (simulasikan untuk bencana alam)
Tambahkan pengujian
DRL dan teknik optimasi klasik
Debug untuk Marl
Konversi ke lingkungan openai
Belajar lebih banyak tentang membuat model DL/ML.
Belajar lebih banyak tentang analisis data dari mengeksplorasi data dan hasil dari pelatihan DL/ML.
Belajar tentang NetworkX dan kemampuannya untuk teori grafik yang terkait untuk proyek.
Belajar lebih banyak tentang membuat lingkungan belajar penguatan dan agen.
Belajar lebih banyak tentang pengikisan data karena saya perlu membatalkan data pemadaman selama krisis daya 2021 Texas
Belajar cara membuat gif menggunakan gambar dalam python.
Terima kasih kepada Profesor Qin dari almamater saya, Universitas Purdue atas dukungannya yang luar biasa dan berbagi keahliannya untuk proyek ini.
Terima kasih kepada Dataport dan Pecan Street karena menyediakan data perumahan untuk membangun model dengan.
Terima kasih kepada Matt Leacock, pencipta permainan papan, Pandemi telah menginspirasi lingkungan belajar penguatan ini.