Building support for monthly charges/costs into Calliope #727
Labels
enhancement
has-workaround
The issue describes a valid workaround until the primary issue is solved
v0.7
(upcoming) version 0.7
What can be improved?
Idea/Goal:
Define custom lookup arrays on specific indices to enable more advanced constraint/expression
where
filtering.Background:
We have been running into models/scenarios where we want to have technologies in Calliope that have monthly bills including monthly peak energy usage charges. Examples could include certain third-party power purchase agreements or even utility tariffs and the monthly power bills that a customer sees. We have modeled this in Calliope using multiple capacity expansion transmission/conversion techs/nodes, having one enabled (via efficiency) each month which is a pretty clunky workaround.
We have been looking into the custom math options in 0.7 to see if we can simplify building this behavior/make it more efficient and have been considering adding new expressions or decision variables to track the peak demand each month so we can apply costs to it. We're struggling to work out a way to tie values on the
timesteps
index to months in the expressionwhere
clauses.select_from_lookup_arrays
looks like it would be the right helper function if we could get a lookup array with the month for each timestep, but we don't see a way to add a lookup array to the problem formulation.If there is a way to add a lookup array to the problem formulation, we could potentially selectively enable constraints based on month, weekday/weekend, or any other categorization of timesteps/index values. A work around could be to define a timeseries parameter at the tech (or a master template) level with the month of each timestep that we can then access in a
where
clause.Adding more decision variables might not even improve the performance of the model compared to multiple techs, but wanted to flag a potential use for the ability to add custom lookup arrays or find another way to categorize index values to enable more flexible constraint definition.
Version
v0.7.0dev4
The text was updated successfully, but these errors were encountered: