This repository contains data and codes for the paper Stochastic Control and Pricing for Natural Gas Networks by Vladimir Dvorkin, Anubhav Ratha, Pierre Pinson, and Jalal Kazempour. The paper is available on arXiv. If you use this code or parts of it, please cite the paper.
The optimization models were implemented in Julia (v.1.4) using JuMP modeling language for mathematical optimization embedded in Julia.
The non-convex models are solved using the Ipopt solver, while the Mosek solver is used for the convex second-order cone programming models. The Mosek solver needs to be licensed (free of charge for academic use). Please refer to JuMP documentation on how to set up these solvers.
The packages used and their versions are provided in the Project.toml
file. To activate the packages in Project.toml
, open a terminal, clone the project using git clone
, cd
to the project directory and call
$ julia
julia> ]
pkg> activate .
pkg> instantiate
where julia
is an alias to Julia installation. To run the code, type
julia> include("main.jl")
By default, the program outputs:
To reproduce the results, specify the experiment settings in exp_settings
dictionary contained in main.jl
. The experiment settings are detailed in Section V of the paper. To run the projection analisys, set :proj => true
in the dictionary, but expect more running time.