This is to allow capacity growth to initiate properly. Currently, if there's no initial capacity for a technology (i.e. the first year it invests in that technology), the MaxCapacityGrowth parameter doesn't apply, so growth is only bounded by MaxCapacityAddition and TotalCapacityLimit.
For starters, this is probably unrealistic and can lead to unreasonably high growth in the first year. Secondly, if initial capacity is not zero but a very small number close to zero, then the MaxCapacityGrowth parameter does apply, and can be overly restrictive on growth (as you're capping percentage growth from a very small number).
The solution to both of these issues is to have a "seed" parameter. This parameter is only applied when capacity is small (i.e. below the seed value), and applies a lower bound on addition year-on-year. For example, if the growth seed for a technology is 1, then the MaxCapacityGrowth constraint is capped to a lower bound of 1 unit addition per year (this will need to be adjusted for time periods greater than one year).
This should only apply to the MaxCapacityGrowth constraint. If MaxCapacityAddition is lower (e.g. if someone has set this to zero to prevent investment in a certain year), this should override the seed.
If the seed is set to zero, then growth will be unable to start. In this case, the user has probably made a mistake, so I think we should raise a warning.
Also, we'll probably have to set a default value to allow existing models to work without users being forced to specify seed values. I think probably 1 unit is a reasonable default value (not zero, due to the reason above).
This is to allow capacity growth to initiate properly. Currently, if there's no initial capacity for a technology (i.e. the first year it invests in that technology), the
MaxCapacityGrowthparameter doesn't apply, so growth is only bounded byMaxCapacityAdditionandTotalCapacityLimit.For starters, this is probably unrealistic and can lead to unreasonably high growth in the first year. Secondly, if initial capacity is not zero but a very small number close to zero, then the
MaxCapacityGrowthparameter does apply, and can be overly restrictive on growth (as you're capping percentage growth from a very small number).The solution to both of these issues is to have a "seed" parameter. This parameter is only applied when capacity is small (i.e. below the seed value), and applies a lower bound on addition year-on-year. For example, if the growth seed for a technology is 1, then the
MaxCapacityGrowthconstraint is capped to a lower bound of 1 unit addition per year (this will need to be adjusted for time periods greater than one year).This should only apply to the
MaxCapacityGrowthconstraint. IfMaxCapacityAdditionis lower (e.g. if someone has set this to zero to prevent investment in a certain year), this should override the seed.If the seed is set to zero, then growth will be unable to start. In this case, the user has probably made a mistake, so I think we should raise a warning.
Also, we'll probably have to set a default value to allow existing models to work without users being forced to specify seed values. I think probably 1 unit is a reasonable default value (not zero, due to the reason above).