Replies: 5 comments 13 replies
-
Discussion topic: will markets require another index in variables or are we handling them with a structure that is not directly in the constraints (code around the solves). |
Beta Was this translation helpful? Give feedback.
-
Discussion topic: what temporal and stochastic properties should be included?
|
Beta Was this translation helpful? Give feedback.
-
Drafting abstract core structure - Part I: Overall model structure(Updated 1.10.2021) In my opinion, the main benefit of an abstract structure is the possibility to minimise the number of different entities in the model, and comprehensively handle all possible interactions between them. This should, in principle, make the model extremely flexible, although not necessarily easy to use. However, it should be possible to implement ease-of-use later in the descriptive-to-abstract input layer. I thought I'd throw some rough draft of a potential model variables and the corresponding here to serve as a basis for further discussion. Eventually, we might want to open a new discussion board for this topic, but for now, I've kept things here. To me, the model structure can be separated into two to four distinct parts, depending on how we want to handle things.
System structureHere's what I believe to be the absolute minimum number of entities for describing energy systems as we've modelled them so far:
System variablesDepending on the application, all the variables can be either continuous, integer, or binary.
Challenges with the minimal abstract system structureFor extremely simple use cases, the above structure remains rather easy to use. However, more advanced use-cases like unit online states, investments, reserves, ramps, etc. require quite complicated definitions and constraints between the entities and variables. In principle, the complexity can be dealt with during the descriptive-to-abstract layer, but it might nonetheless make interpreting the core model more challenging. Furthermore, implementing different conversion efficiency approximations for How to make the descriptive-to-abstract layer so that it can also be used in reserve to obtain descriptive results from the abstract results? Temporal structureThe simplest and also possibly the most flexible temporal structure is pretty much what we've used in SpineOpt.
SpineOpt uses another entity called Market structure? (Updated 1.10.2021)Depending on how the Personally, I'd like to try handling them via "multi-model" interactions using the meta structure.
Separating each Meta structure?Essentially, the point of the meta structure would be to enable defining different There are other benefits that I believe a more modular approach to multi-model and rolling simulations via better meta structure could achieve:
|
Beta Was this translation helpful? Give feedback.
-
Drafting abstract core structure - Part II: Temporal and stochastic structures the "generic" wayAs far as I understand the objectives of our part in the HOPE project and the aim of the Predicer, the main focus should be on solving a single stochastic optimization problem corresponding to a desired market, resulting in optimal bidding under multi-market uncertainty. Based on the above discussions, the key features we seem to want are:
Essentially, it seems we want maximum flexibility in our temporal/stochastic structure, which requires quite a bit of definitions. Temporal and stochastic data structureWhile the structure we use in SpineOpt can basically handle all of the above, I believe it could be streamlined and clarified to make it appear less intimidating. I would propose using only a single type of data object to represent both time and stochastic scenarios, and potentially another to act as a "handle" for easier linking with the desired parts of the modelled system: ObjectsBased on my experiences with SpineOpt, supporting temporal structures ranging from continuous rolling-window-types to potentially discontinuous representative-day-types requires at least the following:
In principle, the RelationshipsIn order to define different
Modularity of the temporal/stochastic structureEvery energy system model requires some way to define how time and stochastics work, and it's always a modicum of work to handle that. I wonder if we could isolate handling the temporal/stochastic structure into an isolated module, so that it could potentially be reused with later model-development efforts to save time? All the energy system models really need from a temporal/stochastic structure are the Known challenges based on experiences with SpineOpt
|
Beta Was this translation helpful? Give feedback.
-
Drafting abstract core structure - Part III: System structure, model variables, and constraintsIn Part I I already proposed a minimal example of a possible system structure. However, it's not enough to really start trying things on the implementation side. Here I'm trying to draft things further to the variables and constraint level, so that things hopefully become more concrete from the model development perspective. System data structure
The core system data structure objects probably don't need further additions, do they? System variables
The above is the absolute minimum number of variables I believe to be necessary to represent our types of energy system models. However, representing more complex technical aspects of energy systems using only these not be practical. Known challenges based on Backbone/SpineOpt
For easier writing of the core constraints, it might be helpful to include dedicated variables for some/all of the above. However, each additional type of variable makes the model core less flexible, unless appropriate constraints are also added, which can quickly result in a large number of constraints. System constraintsBased on the core system data structure objects
Furthermore, since Predicer is supposed to handle market bidding, we'll at least need the following market constraint:
Generic system constraintsIn addition to the above core system constraints, if we want the abstract core to be truly generic, we'll need constraints that permit constraining any variables by any other variables. Naturally, the more types of different variables are in the model core, it becomes increasingly more difficult to account for every potential interaction. Naturally, there probably won't ever be a need to actually account for every potential interaction. However, if such a need arises due e.g. new techologies to be modelled or more detailed technology description, it can't be modelled without adding new code to the model core without comprehensive generic constraints. Furthermore, if we want to be able to constraint variables by other variables or themselves across timesteps, we'll need more complicated input data in order to be able to define parameter values at different lags. Technical system constraintsThese are the foreseen constraints dealing with the detailed technical aspects of energy systems, as highlighted in the previous sections. Depending on the level of abstraction of the model core, these constraints could be formulated using the above core system constraints, but whether that's feasible in practise remains to be seen. If ramps, reserves, conversion efficiency approximations, startups, shutdowns, online status, and investment decisions are modelled using dedicated variables, then some/all of the following constraints become necessary as well:
Known challenges based on Backbone/SpineOpt developmentIncluding dedicated variables and constraints for the technical aspects of e.g. power systems is an easy way to build a model, but eventually the amount of variables and constraints handling them seems to become so large that no one person has a handle on the whole. Learning, understanding, and customizing the model becomes increasingly more difficult as the size of the codebase increases. However, while a more abstract approach can (in principle) drastically reduce the amount of model code required, it mostly shifts the complexity to the input data side. Will it be practical having to define complex interactions via complex definitions in the input data? |
Beta Was this translation helpful? Give feedback.
-
We've had couple of telco discussions concerning the level of abstraction in the model design. Here are some guidelines based on those discussions:
Beta Was this translation helpful? Give feedback.
All reactions