Skip to content

anubhavratha/conic_electricity_markets

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Moving from linear to conic markets for electricity: Code and data

About

This repository contains the code and simulation data for the paper, Moving from linear to conic markets for electricity by Anubhav Ratha, Pierre Pinson, Hélène Le Cadre, Ana Virag, and Jalal Kazempour, published in European Journal of Operational Research (EJOR). A paywall-free final version of the manuscript is available on ArXiv.

If you use this code or parts of it, please cite the paper as follows:

@article{Ratha_et_al_2023, title = {Moving from linear to conic markets for electricity}, author = {Anubhav Ratha and Pierre Pinson and Hélène {Le Cadre} and Ana Virag and Jalal Kazempour}, journal = {European Journal of Operational Research}, volume = {309}, number = {2}, pages = {762-783}, year = {2023}, issn = {0377-2217}, doi = {https://doi.org/10.1016/j.ejor.2022.12.025}}

In the case study, a chance-constrained conic electricity market clearing problem is solved as a central planner problem. It is then benchmarked with prevalent linear market clearing problems. Further details on the model parameters and the reformulation of the chance constraints can be found in Section IV of the paper. The figure below shows the energy prices at various nodes of the 24-bus electricity system considered in the case study. Prices

Getting started

The optimization models are implemented in Julia (v.1.6) using JuMP modeling language for mathematical optimization. The conic electricity market clearing problem is solved using the Mosek solver, which requires a license (free of charge for academic use). Please refer to JuMP documentation on how to set up the solver.

The packages used are listed as dependencies in the Project.toml file. The other toml file, Manifest.toml contains information about the environment and the exact versions of packages used. For a quick start, open a terminal, clone the project using git clone, cd to the project directory and run the following code block:

$ julia 
julia> ]
pkg> activate .
pkg> instantiate

To reproduce the results, run the following in the julia terminal:

julia> include("main.jl")

For questions or comments, drop me a message here: anubhav.rath@gmail.com.