# 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!