Risk-Averse Model Predictive Control Design for Battery Energy Storage Systems

0
0 ratings - Please login to submit your rating.

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.

Instructions: 

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

LOGIN TO ACCESS DATASET FILES
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

AttachmentSize
File README.pdf151.86 KB