From 6658cb23bcecbf3608718f69d5e0646578dd1bed Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Mon, 13 Mar 2023 14:28:23 +0100 Subject: [PATCH 01/10] improve convergence of p47_implicitQttyTarget --- .../47_regipol/regiCarbonPrice/datainput.gms | 14 +++++++ .../47_regipol/regiCarbonPrice/postsolve.gms | 39 ++++++++++++++++--- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/modules/47_regipol/regiCarbonPrice/datainput.gms b/modules/47_regipol/regiCarbonPrice/datainput.gms index 7e8694ae40..39862d4f25 100644 --- a/modules/47_regipol/regiCarbonPrice/datainput.gms +++ b/modules/47_regipol/regiCarbonPrice/datainput.gms @@ -6,6 +6,20 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/47_regipol/regiCarbonPrice/datainput.gms +*' RP: improve formatting of output: always have the iteration separate to allow easy comparison over iterations. +*' For non-iteration values show time and regi down, and the other two sets to the right +option p47_implicitQttyTarget_dev_iter:3:1:4; +option p47_implicitQttyTargetTaxRescale_iter:3:1:4; +option p47_implicitQttyTargetTax_iter:3:1:4; +option p47_implicitQttyTargetCurrent_iter:3:1:4; +option p47_implicitQttyTargetCurrent:3:2:2; +option pm_implicitQttyTarget:3:2:2; +option p47_implicitQttyTargetTax_prevIter:3:2:2; +option pm_implicitQttyTarget_dev:3:2:2; +option p47_implicitQttyTargetTax:3:2:2; +option p47_implicitQttyTargetTaxRescale:3:2:2; +option p47_implicitQttyTargetTax0:3:2:2; + *** initialize regipol target deviation parameter pm_emiMktTarget_dev(ttot,ttot2,ext_regi,emiMktExt) = 0; diff --git a/modules/47_regipol/regiCarbonPrice/postsolve.gms b/modules/47_regipol/regiCarbonPrice/postsolve.gms index 1ca780fc01..8e8d30985a 100644 --- a/modules/47_regipol/regiCarbonPrice/postsolve.gms +++ b/modules/47_regipol/regiCarbonPrice/postsolve.gms @@ -435,11 +435,38 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = (1 - pm_implicitQttyTarget_dev(ttot,ext_regi,qttyTarget,qttyTargetGroup) ) ** 2; ); ); -*** dampen rescale factor with increasing iterations to help convergence if the last two iteration deviations where not in the same direction - if((iteration.val gt 3) and (p47_implicitQttyTarget_dev_iter(iteration, ttot,ext_regi,qttyTarget,qttyTargetGroup)*p47_implicitQttyTarget_dev_iter(iteration-1, ttot,ext_regi,qttyTarget,qttyTargetGroup) < 0), - p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = - max(min( 2 * EXP( -0.15 * iteration.val ) + 1.01 ,p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup)),1/ ( 2 * EXP( -0.15 * iteration.val ) + 1.01)); + option p47_implicitQttyTargetTaxRescale:3:0:4; display "p47_implicitQttyTargetTaxRescale before dampening: ", p47_implicitQttyTargetTaxRescale; +*** dampen rescale factor when closer than 1.5 / 0.75 to reduce oscillations + if( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) > 1, + if( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) > 2.5, !! prevent numeric explosion + p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = 2.5; + ); + p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = + ( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) - 1 ) + * exp( (p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) - 1.5 ) * 2 ) + + 1 + else !! if rescale is <1, do the same procedure on (1/rescale) + if( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) < 0.4, !! prevent numeric explosion + p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = 0.4; + ); + p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = + 1 + / ( + ( (1 / p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) ) - 1 ) + * exp( ( ( 1 / p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) ) - 1.5 ) * 2 ) + + 1 + ) ); + option p47_implicitQttyTargetTaxRescale:3:0:4; display "p47_implicitQttyTargetTaxRescale after dampening: ", p47_implicitQttyTargetTaxRescale; + +*** put a bound around the rescale factor with increasing iterations to help convergence if the last two iteration deviations where not in the same direction + p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = + max( min( 2 * EXP( -0.08 * iteration.val ) + 1.01 , + p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) + ), + 1 / ( 2 * EXP( -0.08 * iteration.val ) + 1.01) + ); + option p47_implicitQttyTargetTaxRescale:3:0:4; display "p47_implicitQttyTargetTaxRescale after boundaries: ", p47_implicitQttyTargetTaxRescale; ); p47_implicitQttyTargetTaxRescale_iter(iteration,ttot,ext_regi,qttyTarget,qttyTargetGroup) = p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup); @@ -495,7 +522,9 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt p47_implicitQttyTargetTax_iter(iteration,ttot,all_regi,qttyTarget,qttyTargetGroup) = p47_implicitQttyTargetTax(ttot,all_regi,qttyTarget,qttyTargetGroup); -display p47_implicitQttyTargetCurrent, pm_implicitQttyTarget, p47_implicitQttyTargetTax_prevIter, pm_implicitQttyTarget_dev, p47_implicitQttyTarget_dev_iter, p47_implicitQttyTargetTax, p47_implicitQttyTargetTaxRescale, p47_implicitQttyTargetTaxRescale_iter, p47_implicitQttyTargetTax_iter, p47_implicitQttyTargetCurrent_iter, p47_implicitQttyTargetTax0; +option p47_implicitQttyTargetTaxRescale:3:2:2; !! update formatting for general overview +display p47_implicitQttyTargetCurrent, pm_implicitQttyTarget, p47_implicitQttyTargetTax_prevIter, pm_implicitQttyTarget_dev, p47_implicitQttyTarget_dev_iter, p47_implicitQttyTargetTax, + p47_implicitQttyTargetTaxRescale, p47_implicitQttyTargetTaxRescale_iter, p47_implicitQttyTargetTax_iter, p47_implicitQttyTargetCurrent_iter, p47_implicitQttyTargetTax0; $endIf.cm_implicitQttyTarget From 0e3339d5b3ca8665093e1f5292c518df3def0ffe Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Mon, 13 Mar 2023 14:45:06 +0100 Subject: [PATCH 02/10] correct --- modules/47_regipol/regiCarbonPrice/datainput.gms | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/47_regipol/regiCarbonPrice/datainput.gms b/modules/47_regipol/regiCarbonPrice/datainput.gms index 39862d4f25..e5e89ad4e0 100644 --- a/modules/47_regipol/regiCarbonPrice/datainput.gms +++ b/modules/47_regipol/regiCarbonPrice/datainput.gms @@ -18,7 +18,6 @@ option p47_implicitQttyTargetTax_prevIter:3:2:2; option pm_implicitQttyTarget_dev:3:2:2; option p47_implicitQttyTargetTax:3:2:2; option p47_implicitQttyTargetTaxRescale:3:2:2; -option p47_implicitQttyTargetTax0:3:2:2; *** initialize regipol target deviation parameter pm_emiMktTarget_dev(ttot,ttot2,ext_regi,emiMktExt) = 0; From 6c557758876f0b15706bb1e947825345631c33e4 Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Mon, 13 Mar 2023 15:41:28 +0100 Subject: [PATCH 03/10] improve list file --- core/datainput.gms | 1 + 1 file changed, 1 insertion(+) diff --git a/core/datainput.gms b/core/datainput.gms index 33f8eb5045..0b9798c089 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -371,6 +371,7 @@ loop(emi2te(enty,enty2,te,enty3)$teCCS(te), ); *** Allocate emission factors to pm_emifac +option pm_emifac:3:3:1; pm_emifac(ttot,regi,enty,enty2,te,"co2")$emi2te(enty,enty2,te,"co2") = fm_dataemiglob(enty,enty2,te,"co2"); pm_emifac(ttot,regi,enty,enty2,te,"cco2")$emi2te(enty,enty2,te,"cco2") = fm_dataemiglob(enty,enty2,te,"cco2"); *JeS scale N2O energy emissions to EDGAR From b2bb5cc1f2ba1e9ffb7077e6659836cc0e399d9d Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Mon, 13 Mar 2023 15:49:03 +0100 Subject: [PATCH 04/10] improve display formatting --- core/datainput.gms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/datainput.gms b/core/datainput.gms index 0b9798c089..9debb4feab 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -371,7 +371,7 @@ loop(emi2te(enty,enty2,te,enty3)$teCCS(te), ); *** Allocate emission factors to pm_emifac -option pm_emifac:3:3:1; +option pm_emifac:3:3:1; !! improve display formatting pm_emifac(ttot,regi,enty,enty2,te,"co2")$emi2te(enty,enty2,te,"co2") = fm_dataemiglob(enty,enty2,te,"co2"); pm_emifac(ttot,regi,enty,enty2,te,"cco2")$emi2te(enty,enty2,te,"cco2") = fm_dataemiglob(enty,enty2,te,"cco2"); *JeS scale N2O energy emissions to EDGAR From b7839350db2265a8c22fc46e0ac4f8f465bf725a Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Mon, 13 Mar 2023 16:43:00 +0100 Subject: [PATCH 05/10] offlisting of f36_uedemand_build read-in --- modules/36_buildings/simple/datainput.gms | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/36_buildings/simple/datainput.gms b/modules/36_buildings/simple/datainput.gms index 343ff9e83d..93df64d977 100644 --- a/modules/36_buildings/simple/datainput.gms +++ b/modules/36_buildings/simple/datainput.gms @@ -47,6 +47,8 @@ p36_floorspace(ttot,regi) = p36_floorspace_scen(ttot,regi,"%cm_demScen%") * 1e-3 *** UE demand for reporting +*** read-in of f36_uedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "useful energy demand in buildings" from f36_uedemand_build.cs4r +$Offlisting Parameter f36_uedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "useful energy demand in buildings" / @@ -55,6 +57,7 @@ $include "./modules/36_buildings/simple/input/f36_uedemand_build.cs4r" $offdelim / ; +$Onlisting p36_uedemand_build(ttot,regi,in) = f36_uedemand_build(ttot,regi,"%cm_demScen%","%cm_rcp_scen_build%",in); From 174597446a2ae4908954c2c509637a98c2944fdf Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Mon, 13 Mar 2023 16:49:17 +0100 Subject: [PATCH 06/10] test --- modules/36_buildings/simple/datainput.gms | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/modules/36_buildings/simple/datainput.gms b/modules/36_buildings/simple/datainput.gms index 93df64d977..3d6766a9c9 100644 --- a/modules/36_buildings/simple/datainput.gms +++ b/modules/36_buildings/simple/datainput.gms @@ -49,8 +49,7 @@ p36_floorspace(ttot,regi) = p36_floorspace_scen(ttot,regi,"%cm_demScen%") * 1e-3 *** UE demand for reporting *** read-in of f36_uedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "useful energy demand in buildings" from f36_uedemand_build.cs4r $Offlisting -Parameter -f36_uedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "useful energy demand in buildings" +Parameter f36_uedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "useful energy demand in buildings" / $ondelim $include "./modules/36_buildings/simple/input/f36_uedemand_build.cs4r" @@ -58,6 +57,16 @@ $offdelim / ; $Onlisting + +*$Offlisting +*table f_cf(tall,all_regi,all_te) "installed capacity availability" +*$ondelim +*$include "./core/input/f_cf.cs3r" +*$offdelim +*; +*$Onlisting + + p36_uedemand_build(ttot,regi,in) = f36_uedemand_build(ttot,regi,"%cm_demScen%","%cm_rcp_scen_build%",in); From 3722a68ce224b3441c5b137133c6ef77e6d978fe Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Mon, 13 Mar 2023 16:54:32 +0100 Subject: [PATCH 07/10] test --- modules/36_buildings/simple/datainput.gms | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/36_buildings/simple/datainput.gms b/modules/36_buildings/simple/datainput.gms index 3d6766a9c9..ab13b6de7c 100644 --- a/modules/36_buildings/simple/datainput.gms +++ b/modules/36_buildings/simple/datainput.gms @@ -48,15 +48,16 @@ p36_floorspace(ttot,regi) = p36_floorspace_scen(ttot,regi,"%cm_demScen%") * 1e-3 *** UE demand for reporting *** read-in of f36_uedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "useful energy demand in buildings" from f36_uedemand_build.cs4r -$Offlisting Parameter f36_uedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "useful energy demand in buildings" / +$Offlisting $ondelim $include "./modules/36_buildings/simple/input/f36_uedemand_build.cs4r" $offdelim +$Onlisting / ; -$Onlisting + *$Offlisting *table f_cf(tall,all_regi,all_te) "installed capacity availability" From 32caf5df4f5ae3b76cc7f85e1dd114f99dfe0297 Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Mon, 13 Mar 2023 17:15:13 +0100 Subject: [PATCH 08/10] test2 --- modules/36_buildings/simple/datainput.gms | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/36_buildings/simple/datainput.gms b/modules/36_buildings/simple/datainput.gms index ab13b6de7c..70f893f24e 100644 --- a/modules/36_buildings/simple/datainput.gms +++ b/modules/36_buildings/simple/datainput.gms @@ -48,6 +48,7 @@ p36_floorspace(ttot,regi) = p36_floorspace_scen(ttot,regi,"%cm_demScen%") * 1e-3 *** UE demand for reporting *** read-in of f36_uedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "useful energy demand in buildings" from f36_uedemand_build.cs4r +$Offinclude Parameter f36_uedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "useful energy demand in buildings" / $Offlisting @@ -57,7 +58,7 @@ $offdelim $Onlisting / ; - +$Oninclude *$Offlisting *table f_cf(tall,all_regi,all_te) "installed capacity availability" From ca880c070de42b6291521fbb6dc0ab744f9c864a Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Tue, 14 Mar 2023 11:05:26 +0100 Subject: [PATCH 09/10] test onverbatim --- modules/36_buildings/simple/datainput.gms | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/36_buildings/simple/datainput.gms b/modules/36_buildings/simple/datainput.gms index 70f893f24e..9808222218 100644 --- a/modules/36_buildings/simple/datainput.gms +++ b/modules/36_buildings/simple/datainput.gms @@ -48,17 +48,19 @@ p36_floorspace(ttot,regi) = p36_floorspace_scen(ttot,regi,"%cm_demScen%") * 1e-3 *** UE demand for reporting *** read-in of f36_uedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "useful energy demand in buildings" from f36_uedemand_build.cs4r -$Offinclude + Parameter f36_uedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "useful energy demand in buildings" / +$onverbatim $Offlisting $ondelim $include "./modules/36_buildings/simple/input/f36_uedemand_build.cs4r" $offdelim $Onlisting +$offverbatim / ; -$Oninclude + *$Offlisting *table f_cf(tall,all_regi,all_te) "installed capacity availability" From 85ea8925cf667795574ceb6d84ce4959572bb7c0 Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Tue, 14 Mar 2023 12:38:12 +0100 Subject: [PATCH 10/10] shift path upward --- modules/36_buildings/simple/datainput.gms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/36_buildings/simple/datainput.gms b/modules/36_buildings/simple/datainput.gms index 9808222218..3d2164dd35 100644 --- a/modules/36_buildings/simple/datainput.gms +++ b/modules/36_buildings/simple/datainput.gms @@ -54,7 +54,7 @@ Parameter f36_uedemand_build(tall,all_regi,all_demScen,all_rcp_scen,all_in) "u $onverbatim $Offlisting $ondelim -$include "./modules/36_buildings/simple/input/f36_uedemand_build.cs4r" +$include "../../modules/36_buildings/simple/input/f36_uedemand_build.cs4r" $offdelim $Onlisting $offverbatim