Annual energy constraints
Is someone using p_groupPolicy(group, 'energyMax')
, p_groupPolicy(group, 'energyMaxVgenSign')
, p_groupPolicy(group, 'energyShareMax')
, and p_groupPolicy(group, 'energyShareMin')
? Is there a way to make them easier to use and maintain in the code?
I'm thinking of converting the constraints from q_energyMax(group)
to q_energyLimit(group, min_max)
and from q_energyShareMax(group)
to q_energyShareLimit(group, min_max)
. The user would define p_groupPolicy(group, x)
, where x is 'energyMax', 'energyMin', 'energyShareMax', and/or 'energyShareMin'. Or, the user would define p_groupDirectionPolicy(group, min_max, x)
(which would be a new parameter in the input GDX!) where x is 'energyLimit' or 'energyShareLimit'. In min_max, the options are 'min' and 'max'.
This way, the parameter names would hopefully be a little bit clearer and there would be no need to maintain the other "share" equation in the model code. At least now I'm thinking that by multiplying the whole sum(msft) with -1, the equation can be changed from a max limit constraint to a min limit constraint. (Though I'm still a bit doubtful because this did not seem possible before...)
First, I was thinking the following method, but it does not seem too logical anymore:
I would rename p_groupPolicy(group, 'energyMax')
to p_groupPolicy(group, 'energyLimit')
and p_groupPolicy(group, 'energyMaxVgenSign')
to p_groupPolicy(group, 'energyMaxMinSign')
. For a maximum energy constraint, the user would give a positive MWh value for p_groupPolicy(group, 'energyLimit')
and p_groupPolicy(group, 'energyMaxMinSign') = 1
. For a minimum energy constraint, the user would also give a positive MWh value for p_groupPolicy(group, 'energyLimit')
but p_groupPolicy(group, 'energyMaxMinSign') = -1
.
In addition, I would change p_groupPolicy(group, 'energyShareMax')
and p_groupPolicy(group, 'energyShareMin')
to p_groupPolicy(group, 'energyShareLimit')
and add a parameter p_groupPolicy(group, 'energyShareMaxMinSign')
. For a maximum energy share constraint, the user would give a positive p.u. value for p_groupPolicy(group, 'energyShareLimit')
and p_groupPolicy(group, 'energyShareMaxMinSign') = 1
. For a minimum energy constraint, the user would also give a positive p.u. value for p_groupPolicy(group, 'energyShareLimit')
but p_groupPolicy(group, 'energyShareMaxMinSign') = -1
. If you have used both maximum and minimum energy share constraints for one group, that would not work anymore with this change.
Other suggestions for parameter names and methods to create the constraints are welcome!