Comments (5)
Possible pre-processing step: add up all e_cap.max and compare against peak demand -- warn if there is an obvious issue with capacity
from calliope.
An intermediate step is to put this as a switch in model.yaml (True/False) such that all carriers are either assigned an unmet_demand or not. This saves the user adding this into their technology and location files, adding the unmet_demand technologies instead during pre-processing.
Ideally this would go one step further by checking maximum possible production vs. demand at each time step during pre-processing, adding unmet_demand only if there is obviously going to be an issue with meeting demand.
from calliope.
It's clear that for a least cost optimisation unmet_demand should have a high cost (which may or may not be related to VoLL)- but the behaviour for non-monetary cost classes is not so clear. If auto-generating unmet_demand, should this auto-apply a default (e.g.) om_var: 1.0e6 cost for all cost classes?
(For example, if doing a least emissions optimisation, optimal case is to build nothing and meet no demand as there are no emissions if there is no energy generated. But putting in a high emissions cost for unmet_demand seems unreflective of reality. The correct way would be to have a user objective function that minimises emissions alongside a security constraint, or to use a weighted objective function)
from calliope.
Agreed that it should cover all cost classes, or perhaps more importantly apply an arbitrarily high abstract cost to the objective function without the user ever seeing it. My preference would be to have a decision variable called 'unmet_demand' which is indexed over locations, carriers, and timesteps (as is required for system balance). It is applied directly in the system balance constraint and the user never defines it. Then, in the objective function this unmet_demand value is multiplied by our big M to provide the barrier to its use. It is thus independent of cost types and we avoid the confusion of unmet_demand being a 'technology'
from calliope.
Addressed as of 8bdce5b
from calliope.
Related Issues (20)
- Store example notebooks as plain text
- Document AttrDict `_REPLACE_ ` HOT 1
- Requesting v0.7 documentation improvements/fixes HOT 3
- Cannot use IDE schema validator with Calliope model YAML files HOT 1
- `purchased` binary variable isn't linked to `energy_cap` if `energy_cap_max`/`_min`/`_equals` isn't defined
- Cannot define numeric index items when loading tabular data
- Multiple rows and columns introduce false index items HOT 7
- AttrDict sorts keys on union
- Default installation does not have optional dependencies HOT 2
- Allow setting saving of shadow prices for constraints in YAML HOT 2
- Add `title` or `long-name` parameter to math syntax
- Store start and stop time stamps in model results
- Better document and test `operate` mode
- Custom constraints sum() slicing seems to fail inconsistently HOT 1
- adding scenarios and overrides
- Run Calliope multiple times with historic data before generating results HOT 1
- Pyomo v6.7.2 regression: Gurobi Python interface not found HOT 2
- Improve package/version management by moving to pixi
- Change the name of 'tech_groups' to 'tech_class' HOT 3
- Difficult to navigate through the menu HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from calliope.