POMATO SOUP MarketModel module of POMATO

MarketModel

Overview

The Power Market Tool (POMATO) aims to enable research and analyses of modern real-world electricity markets in the context of the physical transmission system and its secure operation. To analyze relevant market and operational processes POMATO provides: Simultaneous zonal market clearing and nodal power flow computation, a scalable and fast SCOPF algorithm, and risk-aware optimal power flow via chance constraints. All optimization features rely on Julia/JuMP, leveraging its accessibility, computational performance, and solver interfaces.

This repository holds these features as a individual julia package for easier maintenance, testing and documentation. However it is eventually embedded in a Python front-end, providing flexible and easily maintainable data processing and user interaction features and is not meant so be used on its own. Please see the corresponding publication and the (POMATO repository) for further information.

Installation

This package is meant to be used in conjunction with the python POMATO model, which embeds its features and installs it automatically.

Stand alone usage is possible, however specificity formatted data.

Installation can be done directly from git via:

] add https://github.com/richard-weinhold/MarketModel

or from a local clone/fork of the repository via:

] add develop --local path-to-repository

The recommended julia version is 1.5, although compatibility is given for version >= 1.3, but not continuously tested.

Exposed function of the MarketModel

MarketModel.run_market_modelFunction
run_market_model(data_dir::String, 
				 result_dir::String, 
				 input_optimizer; 
				 return_result::Bool=false,
             	 redispatch::Bool=false)

Solves an economic dispatch problem for given data in data_dir::String using the supplied solver supplied as input_optimizer. Note, input_optimizer has to be the Julia Package itself. Optionally, the economic dispatch can be redispatched for feasibility in a given network representation using the optional argument redispatch::Bool.

Results are saved as in .csv files into result_dir::String. Per default the function returns nothing, but the Result struct can be returned with optional argument return_result::Bool.

source

MarketModel Description

MarketModel is organized around three main (mutable) structs:

  • Data: All input data is storged in Arrays of structs for Zones, Nodes, Lines, DCLines, Contingencies and (RES) Plants. This organization allows immediate parameter access when defining variables and constraints. Data is defined in data.jl and instantiated in data_processing.jl.
  • Pomato: The model struct, containing the JuMP model itself together with sets and mappings. The struct is defined in pomato.jl, the model definition in pomato_models.jl utilizing functions that change a pomato instance inplace from model_functions.jl
  • Results: The values of variables at optimal solution are stored in a separate struct in a predefined structure. The struct and result processing is defined in results.jl.

The model structure works well with the common application where data is read in and market model is is solved in segments over a predefined model horizon. The results of each segment are concatinated and potentially redispatched to account for network.

For the formal definition of the economic dispatch problem see the documentation of POMATO