Open Venura00 opened 5 months ago
Hi @Venura00, thank you for reaching out.
Eliminating offline training may or may not be required depending on the problem setup. If in your setup, there is a default control policy for PV inverters and it already generated some operational data, you can use them for offline training. If not, then yes we should remove offline training.
There are 2 other places we need to change:
If your PV inverter nodes are PV (P and voltage magnitude specified, Q and voltage angle to be found), we need to change the above code accordingly. Otherwise if the PV inverter are still PQ, then no code changes needed. We will just have to subtract the PQ generation from the load in the data file.
step()
function to define how the PV inverter output affect the load flow.Hi @yg-smile , thank you for your prompt and detailed answer. I have three more questions.
Number of columns in the first_2897_ami_aggto_580.csv file is much higher than the number of load nodes in 123 feeder. Is it correct to say that only the required number of columns are extracted when setting the load?
Can you very briefly explain about the data in the csv files of data->processed->123 ? I am confused about two things.
As per your response, I am assuming the operational data of added PV inverters means the generated P,Q profiles from inverters. If i need to add operational data of PV inverters, do i need to make any changes in the data of data->processed->123
I apologize for replying late to your quick response. Thank you.
Hi @Venura00 ,
Thank you for your questions.
(1) We don't append reinforcement learning results to these files. The data in data/processed/123 are power flow results solved by OpenDSS. The control devices' status are obtained by the default control logic of OpenDSS. These can be computed offline therefore we can store them in files and refer to them later.
(2) loss.csv -> network total real loss. This is a single value for each time step so the file only has 1 column. status.csv -> capacitor status (0: off, 1: on). One column for each capacitor. tap.csv -> load tap changer status. One column for each LTC. volt.csv -> voltage magnitude in 120 base (1 p.u. = 120). One column for each load node. substation_pq.csv -> first 3 columns: real power at substation bus, phase ABC; last 3 columns: reactive power at substation. load.csv -> first N columns: real power at load nodes; last N columns: reactive power at load nodes. The column ID and bus are the same as the OpenDSS load definition file: https://github.com/yg-smile/RL_VVC_dataset/blob/9546fa468d00ed5f0b4b2a7872d24eff464e4b6f/envs/dss_123/IEEE123Loads.DSS
load_kw
and subtract PV's Q from load_kvar
:
https://github.com/yg-smile/RL_VVC_dataset/blob/9546fa468d00ed5f0b4b2a7872d24eff464e4b6f/envs/env.py#L170
Second, subtract PV's P from first N elements of self.load
; and subtract PV's Q from last N elements of self.load
.
https://github.com/yg-smile/RL_VVC_dataset/blob/9546fa468d00ed5f0b4b2a7872d24eff464e4b6f/envs/env.py#L108
(subtract BEFORE dividing by self.load_avg
).
The column ID and bus are the same as the OpenDSS load definition file mentioned above.Thank you
Dear author,
First of all, thank you for the incredible effort in creating this valuable work. I am trying to adapt your environment into my project but my environment consists of PV inverters in several nodes in the IEEE123 feeder. So, my guess is that the offline training dataset would not be applicable in my case (I am using a custom dataset as load profiles as well).
My initial guess was to eliminate the idea of offline training. If I am correct, what are the changes I have to make in the code? And if I am wrong, do you mind explaining a better approach? Looking forward to your reply.
Thank you.