Datasets
Open Access
Risk-Averse Model Predictive Control Design for Battery Energy Storage Systems
- Citation Author(s):
- Submitted by:
- David Rosewater
- Last updated:
- Tue, 05/17/2022 - 22:21
- DOI:
- 10.21227/722e-jp30
- Data Format:
- Link to Paper:
- License:
- Categories:
- Keywords:
Abstract
When batteries supply behind-the-meter services such as arbitrage or peak load management, an optimal controller can be designed to minimize the total electric bill. The limitations of the batteries, such as on voltage or state-of-charge, are represented in the model used to forecast the system's state dynamics. Control model inaccuracy can lead to an optimistic shortfall, where the achievable schedule will be costlier than the schedule derived using the model. To improve control performance and avoid optimistic shortfall, we develop a novel methodology for high performance, risk-averse battery energy storage controller design. Our method is based on two contributions. First, the application of a more accurate, but non-convex, battery system model is enabled by calculating upper and lower bounds on the globally optimal control solution. Second, the battery model is then modified to consistently underestimate capacity by a statistically selected margin, thereby hedging its control decisions against normal variations in battery system performance. The proposed model predictive controller, developed using this methodology, performs better and is more robust than the state-of-the-art approach, achieving lower bills for energy customers and being less susceptible to optimistic shortfall.
Normal
0
false
false
false
EN-US
X-NONE
X-NONE
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:8.0pt;
mso-para-margin-left:0in;
line-height:107%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
Run instructions: Steps
1. Open config.ini (saved in scripts as a .txt file) and select the extended [CRM] parameters associated with the desired simulation case.
a. Mean parameters:
i. ChargeCapacity= 135.2366
ii. CoulombicEfficiency=0.9462
iii. R0=0.015344
b. Extreme case:
i. ChargeCapacity -3 sigma = 127.4366
ii. CoulombicEfficiency -3 sigma = 0.9240
iii. R0 +3 sigma = 0.016364
2. Open the file under “Case specific optimization/simulation code files” associated with the desired simulation case in a python editor / compiler (e.g. Visual Studio Code).
3. Compile and run the python program
Output description: Each program has four outputs: pyomo optimization output, relevant plots, the relevant customer bills, and an exported MATLAB data file.
1. Pyomo allows for the display of optimization conditions and variables. When the program is run it will iterate through approximately 50 steps in the command line before displaying EXIT: Optimal Solution Found. Note that this process is repeated for every recalculation step in closed-loop control but this output is not displayed.
2. The open loop programs display plots for electrical Load, Calculated Net Load, and Achieved Net Load, along with Power and State-of-Charge. The closed loop programs do not display Calculated Net Load as this line changes every time the control schedule is recalculated.
3. The command line output will print the bills calculated and achieved through the simulation. For open-loop simulations, both calculated bill and achieved bill are printed. For closed-loop simulations, only the achieved bill is printed.
4. The results of each simulation are exported into a MATLAB data file. The data files are named according to the simulation case but they all contain the same MATLAB variable (model_data) containing column vectors for each variable of interest.
Dataset Files
- Data file for electrical load and energy price. DATA.csv (22.85 kB)
- Data file for electrical frequency and voltage (required for battery-inverter fleet model but not used otherwise in this study) Grid_Info_DATA_2.csv (2.96 MB)
- Main file for the battery inverter fleet model. Described fully in the following reference: David Rosewater and Sigifredo Gonz battery_inverter_fleet.py (43.19 kB)
- reads in electrical frequency and voltage data csv file to initialize a grid information object that is used by the fleet grid_info.py (1.71 kB)
- FleetRequest object passes active and reactive power requests to the fleet model fleet_request.py (596 bytes)
- FleetResponse object passes the achieved fleet response back from the fleet model fleet_response.py (764 bytes)
- implements autonomous frequency response (not used in this research) frequency_droop.py (2.13 kB)
- Open loop simulation of the energy reservoir model erm_open_loop.py (6.80 kB)
- Closed loop simulation of the energy reservoir model erm_closed_loop.py (7.59 kB)
- Open loop simulation of the charge reservoir model crm_open_loop.py (8.22 kB)
- Lower bound on the charge reservoir model open loop control crm_open_loop_lb.py (14.08 kB)
- Upper bound on the charge reservoir model open loop control crm_open_loop_ub_gurobi.py (13.67 kB)
- Closed loop simulation of the charge reservoir model crm_closed_loop.py (9.26 kB)
- Open loop simulation of the risk averse charge reservoir model ra_crm_open_loop.py (8.24 kB)
- Lower bound on the risk averse charge reservoir model open loop control ra_crm_open_loop_lb.py (14.08 kB)
- Upper bound on the risk averse charge reservoir model open loop control ra_crm_open_loop_ub_gurobi.py (13.69 kB)
- Closed loop simulation of the charge reservoir model ra_crm_closed_loop.py (9.30 kB)
- Configuration file (Change extention ".txt" to ".ini" before running simulation) config.txt (3.63 kB)
- All files in .zip format python_source_for_simulations_all.zip (769.46 kB)
Open Access dataset files are accessible to all logged in users. Don't have a login? Create a free IEEE account. IEEE Membership is not required.
Documentation
Attachment | Size |
---|---|
README.pdf | 151.86 KB |