Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
PLUM
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Container Registry
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Land Use Lab
PLUM
Commits
a97fcdfd
Commit
a97fcdfd
authored
4 years ago
by
Bart Arendarczyk
Browse files
Options
Downloads
Patches
Plain Diff
Forest conversion (minimumLandCover) restriction loosened.
parent
8d8be0e1
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
GAMS/IntExtOpt.gms
+15
-10
15 additions, 10 deletions
GAMS/IntExtOpt.gms
with
15 additions
and
10 deletions
GAMS/IntExtOpt.gms
+
15
−
10
View file @
a97fcdfd
...
...
@@ -11,6 +11,7 @@
SET land_cover / cropland, pasture, timberForest, carbonForest, unmanagedForest, otherNatural /;
SET forest(land_cover) / timberForest, carbonForest, unmanagedForest /;
SET non_forest(land_cover) / cropland, pasture, otherNatural /;
ALIAS (land_cover, land_cover_before);
ALIAS (land_cover, land_cover_after);
...
...
@@ -81,7 +82,7 @@ $gdxin
carbonPrice = carbonPrice * 0.001;
woodPrice = woodPrice * 0.001;
SCALAR delta use to smooth power function see 7.5 www.gams.com
dd
docs
solversconopt.pdf / 0.00000000001 /;
SCALAR delta
"
use to smooth power function see 7.5 www.gams.com
/
dd
/
docs
/
solversconopt.pdf
"
/ 0.00000000001 /;
demand(cereal_crop) = demand('cereals') * minDemandPerCereal(cereal_crop);
demand(oilpulse_crop) = demand('oilcropspulses') * minDemandPerOilcrop(oilpulse_crop);
...
...
@@ -120,7 +121,7 @@ $gdxin
*PARAMETER lcTransitionCost(lc_type_previous, lc_type, location) cost of land transitions including carbon cost and conversion cost;
*lcTransitionCost(lc_type_previous, lc_type, location) = carbonFluxRate(lc_type_previous, lc_type, location) * carbonPrice + agriExpansionCost(location);
SCALAR forestExpansionMaxRate / 0.0
5
/;
SCALAR forestExpansionMaxRate / 0.0
1
/;
VARIABLES
cropArea(crop, location) total area for crops - Mha
...
...
@@ -141,10 +142,11 @@ $gdxin
pastureDecrease(location)
landCoverArea(land_cover, location) land cover area in Mha
landCoverChange(land_cover_before, land_cover_after, location) land cover change
prematureDeforestationCost(location)
woodHarvest(location) total wood harvested
carbonFlux(location) total carbon flux
totalFeedDM
* A artificial variable
"
https://www.gams.com/blog/2017/07/misbehaving-model-infeasible/"
* A
"
artificial variable https://www.gams.com/blog/2017/07/misbehaving-model-infeasible/"
total_cost total cost of domestic supply including net imports;
...
...
@@ -183,11 +185,12 @@ $gdxin
PASTURE_TOTAL_CHANGE_CONSTRAINT(location)
CROPLAND_LAND_COVER_CALC(location) cropland area equals sum of all crop areas
PASTURE_LAND_COVER_CALC(location) pasture area (land cover) equals pasture area (land use)
MINIMUM_LAND_COVER_CONSTRAINT(land_cover, location) constraint on land cover conversion
*
MINIMUM_LAND_COVER_CONSTRAINT(land_cover, location) constraint on land cover conversion
LAND_COVER_CHANGE_CALC(land_cover, location)
LAND_COVER_CHANGE_CONSTRAINT(land_cover, location) can't convert more land than was previously available
LAND_COVER_SELF_CHANGE_CONSTRAINT(land_cover, location) calculate no change area (e.g. cropland to cropland)
FOREST_EXPANSION_CONSTRAINT(forest, location)
FOREST_EXPANSION_CONSTRAINT
PREMATURE_DEFORESTATION_COST_CALC(location)
WOOD_HARVEST_CALC(location) calc wood harvested
CARBON_FLUX_CALC(location) calc carbon flux
COST_EQ total cost objective function;
...
...
@@ -259,11 +262,12 @@ $gdxin
LAND_COVER_SELF_CHANGE_CONSTRAINT(land_cover, location) .. landCoverChange(land_cover, land_cover, location) =E= previousLandCoverArea(land_cover, location) -
sum(land_cover_after$[not sameAs(land_cover, land_cover_after)], landCoverChange(land_cover, land_cover_after, location));
FOREST_EXPANSION_CONSTRAINT
(
forest, location)
..
landCover
Area(forest, location) - previousLandCoverArea(
forest, location) =L= suitableLandArea(location) * forestExpansionMaxRate;
FOREST_EXPANSION_CONSTRAINT
.. sum((non_forest,
forest, location)
,
landCover
Change(non_forest,
forest, location)
)
=L=
sum(location,
suitableLandArea(location)
)
* forestExpansionMaxRate;
* minimum of minimumLandCoverArea and previousLandCoverArea corrects for floating point errors
* MINIMUM_LAND_COVER_CONSTRAINT(land_cover, location) .. landCoverChange(land_cover, land_cover, location) =G= min(minimumLandCoverArea(land_cover, location), previousLandCoverArea(land_cover, location));
MINIMUM_LAND_COVER_CONSTRAINT(land_cover, location) .. landCoverChange(land_cover, land_cover, location) =G= minimumLandCoverArea(land_cover, location);
* MINIMUM_LAND_COVER_CONSTRAINT(land_cover, location) .. landCoverChange(land_cover, land_cover, location) =G= minimumLandCoverArea(land_cover, location);
PREMATURE_DEFORESTATION_COST_CALC(location) .. prematureDeforestationCost(location) =E= sum(forest, (sum((land_cover_after)$[not sameAs(forest, land_cover_after)], landCoverChange(forest, land_cover_after, location)) -
previousLandCoverArea(forest, location) - minimumLandCoverArea(forest, location))) * 1000;
WOOD_HARVEST_CALC(location) .. woodHarvest(location) =E= sum((land_cover_before, land_cover_after), landCoverChange(land_cover_before, land_cover_after, location) * woodYield(land_cover_before, land_cover_after, location));
...
...
@@ -287,7 +291,8 @@ $gdxin
SUM(location, carbonFlux(location) * carbonPrice) - SUM(location, woodHarvest(location) * woodPrice) +
SUM(import_crop, importAmount(import_crop) * importPrices(import_crop) - exportAmount(import_crop) * exportPrices(import_crop))
SUM(import_crop, importAmount(import_crop) * importPrices(import_crop) - exportAmount(import_crop) * exportPrices(import_crop)) +
SUM(location, prematureDeforestationCost(location))
);
MODEL LAND_USE /ALL/ ;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment