Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove discounting from the multi-period model #1109

Closed
Tracked by #1107
p-snft opened this issue Aug 20, 2024 · 3 comments · Fixed by #1110 or #1111
Closed
Tracked by #1107

Remove discounting from the multi-period model #1109

p-snft opened this issue Aug 20, 2024 · 3 comments · Fixed by #1110 or #1111

Comments

@p-snft
Copy link
Member

p-snft commented Aug 20, 2024

Discounting functionality is not actually needed, as we allow time series anyway. So, we can remove code without reducing functionality. (Users should be able to calculate discounting externally. On the long run, we could also provide something in oemof.tools.)

At the user/dev meeting in Oldenburg, we agreed to go one step further. Investments should accept a time series of periodical costs for the investments. Changing capacities can be constrained using constraints linking the years, e.g. “capacity of this investment needs to be constant for fifteen years”.

@p-snft p-snft changed the title Remove discounting from the multi-period model. (Discounting functionality is not actually needed, as we allow time series anyway.) Remove discounting from the multi-period model Aug 20, 2024
@p-snft p-snft linked a pull request Aug 20, 2024 that will close this issue
@p-snft
Copy link
Member Author

p-snft commented Aug 20, 2024

The merged branch was not finalised. Continues in #1111.

@p-snft p-snft reopened this Aug 20, 2024
@p-snft p-snft linked a pull request Sep 3, 2024 that will close this issue
@p-snft p-snft mentioned this issue Nov 25, 2024
6 tasks
@p-snft
Copy link
Member Author

p-snft commented Nov 25, 2024

For the discussion how we implement this in a new way, we came from the problem formulation (how would that be maintainable) and still need to define the API details.

The current API only allows scalars, I'd change this:

Investment(
    maximum=inf,  # maximum_addition=list()
    minimum=0,  # minimum_addition=list()
    ep_costs=0,  # we directly take the numbers from this sequence
    existing=0,  #  superseded by minimum_capacity[0]
    nonconvex=False,
    offset=0,
    overall_maximum=None,  # replace by maximum_capacity=list()
    overall_minimum=None,   # replace by minimum_capacity=list()
    lifetime=None,  # list (in periods)
    age=0,  # not needed anymore
    interest_rate=0,  # not needed anymore
    fixed_costs=None,  # not needed anymore
    custom_attributes=None,
)

For the lifetime, lifetime[0] gives lifetime of minimum_capacity[0] (which is the existing), lifetime[1] of minimum_addition[0] and so forth. The number of indexes will be the same as minimum_addition[-1] does not need a lifetime any more.

What do you think? (Also asking @mco-sch, who has used the feature in the current shape.)

@jokochems
Copy link
Member

I like the suggestions. Thank you very much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants