Skip to content

Process availability constraints are always applied to individual time slices #957

@alexdewar

Description

@alexdewar

We currently treat the availability constraints defined in process_availabilities.csv as if they apply to each individual time slice, but this is not correct.

There is a time_slice column in the file, which, despite the name, defines the TimeSliceSelection to which the entry should apply: this can be the whole year (annual), a specific season (e.g. winter) or a specific time slice (e.g. winter.day). The intent, according to @ahawkes, was that the constraint be applied at the same time slice level as this column (see TimeSliceSelection::level()), but what actually happens is individual constraints are added for each time slice in the TimeSliceSelection.

For example:

process_id,regions,years,time_slice,limit_type,value
GASDRV,all,all,annual,up,0.9

What the code currently does is add an upper limit for every individual time slice in the year, but it should be for the whole year (i.e. you can have more than 90% availability for a given time slice, as long as the constraint holds over the whole year).

Fixing this will unfortunately have ramifications all over the place, because we tacitly assume that the time slice level of activity limits is daynight in various places. You'll have to check everywhere that we use Process::activity_limits and Asset::activity_limits.

See discussion on #363.

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

Status

✅ Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions