Integration of Land Use constraint

54 views
Skip to first unread message

Daniele Mosso

unread,
May 29, 2023, 7:35:23 AM5/29/23
to Temoa Project

Good morning, community!

I wanted to discuss an ongoing integration challenge I'm facing in TEMOA related to land use associated with energy technologies. Specifically, I have been working on incorporating a new constraint into the model, aiming at checking if there is still space to install new power sector capacity.

Firstly, I have introduced a new set of land typologies called "land_types."

M.land_types = Set()

Each land type is characterized by a specific area denoted as "land_area." Land area also vary trough vintages, accounting for land use change phenomena.

M.LandArea = Param(M.RegionalGlobalIndices, M.land_types, M.time_optimize)

Secondly, I have defined the land use intensity of energy technologies, which is expressed as the number of square meters required per megawatt (MW) of installed capacity.

M.LandUseIntensity = Param(M.RegionalGlobalIndices, M.land_types, M.tech_all)

The objective of this constraint is to ensure that the sum of the products of tech_capacity and land_intensity, across all energy technologies, remains below the specified land availability for each region, vintage, and land type combination.

M.LandUseConstraint = Constraint(
M.regions, M.time_optimize, M.land_types,
rule=LandUse_Constraint
)

In simpler terms, we want to validate that the total land area occupied by energy technologies, as determined by multiplying their respective tech_capacity and land_intensity, does not exceed the given land availability.

def LandUse_Constraint(M,r,p,l):

return (0,
sum(
M.V_Capacity[r, S_t, v] * value(M.LandUseIntensity[r, l, S_t]) * 1e10 + 1e10
for S_t in M.LandUseIntensity.sparse_iterkeys()
if (r, p, S_t) in M.processVintages.keys()
for v in M.processVintages[r, p, S_t]
), value(M.LandArea[r, l, p]))

However, I have encountered some errors during the constraint implementation using Pyomo. It appears that the constraint is being overlooked by TEMOA, even though it seems to be correctly defined. I also propose you the "classic" constraint implementation which gives me the same problem:

def LandUse_Constraint(M,r,p,l):

max_land = value(M.LandArea[r, l, p])


land_cons = sum(
M.V_CapacityAvailableByPeriodAndTech[ S_t] * value(M.LandUseIntensity[r, l, S_t])
for S_t in M.LandUseIntensity.sparse_iterkeys()
if (r, p, S_t) in M.processVintages.keys()
for v in M.processVintages[r, p, S_t]

) * 1e10 + 1e10

expr = land_cons <= max_land
return expr

To make a test, I have imposed the occupied land to be multiplied and summed for 1E10, so that the constraint is forced to be not respected. This to check if TEMOA find solution even with a constraint that is not respected. In fact, it solve the problem installing renewable capacity, even if 1e10 is much more than the available land.

Can anyone help? I am also available for a short call to further express the details.

Thank you,

Daniele.

Narges Sefid

unread,
Nov 22, 2023, 9:58:54 PM11/22/23
to Temoa Project
Hi Daniele,

It's been a while since we chatted about our works on land integration into TEMOA.

Same as you, I've also been working on land constraint recently and ran into issues. So I was wondering if you got this issue fixed? Maybe we can have a discussion about this.

Best,
Narges

Reply all
Reply to author
Forward
0 new messages