Skip to content

Framework to model two stage stochastic unit commitment optimization problems.

Notifications You must be signed in to change notification settings

rockstaedt/ses_opt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Application of Variance Reduction Techniques for Sequential Sampling to Stochastic Unit Commitment in Microgrids

Stochastic approaches have been widely used to address unit commitment problems with uncertain variables. In these approaches, accuracy of the random estimator as well as good performance of the stochastic program remains a challenge. This study presents a model for a two-staged unit commitment problem with uncertainty. It utilizes Monte Carlo sampling to account for uncertainty and implements the L-shaped Method to decompose the two stages. Variance reduction techniques are introduced. The effect of sequential sampling as a measure of keeping samples sizes moderate through quality assessment is analysed. The results indicate that variance reduction techniques improve the estimation quality significantly, if certain conditions are not breached. A large energy storage may increase variance. The use of sequential sampling drastically reduces computa- tion time while maintaining reasonably good results. Especially Anithetic Variates sampling in combination with averaged two- replication procedure produced good results, whereas Latin Hypercube Sampling did not yield conclusive results.

Information about the repository

In order to provide a framework which can be used for several use cases, a package called seqsuc was created. This package contains all relevant files for creating and solving a L-shape method or run a sequential sampling method. In the parameter.py file, the Parameter object is defined which includes all relevant parameter for the model set-up, like the costs or characteristics of the TGR. Once created, this object is passed to any other object in the framework to access the parameters. In future, this object could be expanded by read in functions of parameters to even increase the dynamic behaviour of the framework. Secondly, the uc_model.py file contains three functions to create a master, sub and test problem. These functions mainly utilize the pyomo framework to create the corresponding optimization problems. Thus, the LShapeMethod object uses these functions to set up a L-shape method. This object is defined in the file l_shape.py and provides further methods like solving the optimization problem or running a test. While creating a LShapeMethod, one can define the sample size, the sampling method and IO options. Lastly, the file seq_sampling.py inhabits the Sequential- Sampling object which is used to run a sequential method as explained above. The object uses the LShapeMethod object to run the optimization problems. It also provides options to set the sampling and estimator methods while initializing the object. Both objects contain several private functions which are explained in detail in the source code. All files within the package use the helpers package which is located inside of seqsuc. This helper package contains a lot of functions which are used by the defined objects, for example printing IO messages to the terminal. It also contains the functions to create the samples according to Crude Monte Carlo, AV and LHS. The main.py file illustrates an example on how to use the framework. The repository also includes a conda environment specifying the used python packages. We used python in the version 3.9.