User documentation topic: interface between satellite model and market
New section: Market/satellite interface
The interface between the market and satellite models has been reasonably defined by now (mostly in src/demoses-coupling/coupling.py
), but is not explicitly documented anywhere.
Part of #56
Summary of the required documentation
The interface consists of two kinds of messages:
- Bids
- Market information
Bids
Bids are sent by each satellite model to the central market model to be used for the market clearing process. Bids are expected as a pandas Dataframe with a fixed layout:
- two data columns: "price" and "quantity"
- two index 'columns': "timestamps" and "demand" (where "demand" is an integer value to distinguish between different non-overlapping bids at the same timestamp)
This layout is probably most concisely encoded in the compact/extract
functions in src/demoses-coupling/coupling-components.py
.
Market information
The market information is sent from the central market model to each satellite model. This consists of three pieces of information for each satellite model:
- market price at each timestamp
- supplied demand for the specific satellite model per timestamp
- configuration file location for that satellite model
The market price and supplied demand are vectors of rolling_horizon_step
elements.
The configuration file location for that satellite model is included to give the satellite its configuration information so it can be initiallized at the first message.
- NOTE: Because of the current implementation, the messages have to remain consistent throughout the runtime to prevent code duplication. Ideally, we'd like to use something like MUSCLE3's
receive_with_settings
to send this configuration, but I haven't been able to get that to work yet. -Sander
Checklist
-
I have checked the list of existing issues and couldn't find an issue about this.