From 510fda1da3f150f477b26d9cf969c81bcfccdba8 Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Tue, 21 Mar 2023 17:48:52 +0100 Subject: [PATCH 1/6] improve display --- modules/47_regipol/regiCarbonPrice/postsolve.gms | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/47_regipol/regiCarbonPrice/postsolve.gms b/modules/47_regipol/regiCarbonPrice/postsolve.gms index 83810340a..c6e8a6387 100644 --- a/modules/47_regipol/regiCarbonPrice/postsolve.gms +++ b/modules/47_regipol/regiCarbonPrice/postsolve.gms @@ -435,7 +435,7 @@ 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; ); ); - put_utility "msg" / "p47_implicitQttyTargetTaxRescale before dampening:" ttot.tl ext_regi.tl qttyTarget.tl qttyTargetGroup.tl p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) ; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale before dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):5:3 ; 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, @@ -468,7 +468,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt ) ; ); - put_utility "msg" / "p47_implicitQttyTargetTaxRescale after dampening:" ttot.tl ext_regi.tl qttyTarget.tl qttyTargetGroup.tl p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) ; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale after dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):5:3 ; display "p47_implicitQttyTargetTaxRescale after dampening: ", p47_implicitQttyTargetTaxRescale; *** put a bound around the rescale factor with increasing iterations to help convergence @@ -478,7 +478,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt ), 1 / ( 2 * EXP( -0.05 * iteration.val ) + 1.01) ); - put_utility "msg" / "p47_implicitQttyTargetTaxRescale after boundaries:" ttot.tl ext_regi.tl qttyTarget.tl qttyTargetGroup.tl p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) ; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale after boundaries: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):5:3 ; display "p47_implicitQttyTargetTaxRescale after boundaries: ", p47_implicitQttyTargetTaxRescale; *** dampen if rescale oscillates @@ -495,7 +495,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt 1 + ( ( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) - 1 ) / 2 ) ; !! this brings the value closer to one. The formulation works reasonably well within the range of 0.5..2 put_utility "msg" / "reducing p47_implicitQttyTargetTaxRescale due to oscillation in the previous 3 iterations:"; - put_utility "msg" / ttot.tl ext_regi.tl qttyTarget.tl qttyTargetGroup.tl p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) ; + put_utility "msg" / ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):5:3 ; display "reducing p47_implicitQttyTargetTaxRescale due to oscillation in the previous 3 iterations: ", p47_implicitQttyTargetTaxRescale; ); ); From fabb2bc03aca2e0a25a713c303b9e1377d2fd828 Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Wed, 22 Mar 2023 14:14:25 +0100 Subject: [PATCH 2/6] improve output --- modules/47_regipol/regiCarbonPrice/postsolve.gms | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/modules/47_regipol/regiCarbonPrice/postsolve.gms b/modules/47_regipol/regiCarbonPrice/postsolve.gms index c6e8a6387..8495063e1 100644 --- a/modules/47_regipol/regiCarbonPrice/postsolve.gms +++ b/modules/47_regipol/regiCarbonPrice/postsolve.gms @@ -435,8 +435,8 @@ 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; ); ); - put_utility "msg" / "p47_implicitQttyTargetTaxRescale before dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):5:3 ; - display "p47_implicitQttyTargetTaxRescale before dampening: ", p47_implicitQttyTargetTaxRescale; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale before dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:3 ; + *** 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) > 1.7, !! prevent numeric explosion by limiting the maximum value @@ -468,8 +468,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt ) ; ); - put_utility "msg" / "p47_implicitQttyTargetTaxRescale after dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):5:3 ; - display "p47_implicitQttyTargetTaxRescale after dampening: ", p47_implicitQttyTargetTaxRescale; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale after dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:3 ; *** put a bound around the rescale factor with increasing iterations to help convergence p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = @@ -478,8 +477,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt ), 1 / ( 2 * EXP( -0.05 * iteration.val ) + 1.01) ); - put_utility "msg" / "p47_implicitQttyTargetTaxRescale after boundaries: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):5:3 ; - display "p47_implicitQttyTargetTaxRescale after boundaries: ", p47_implicitQttyTargetTaxRescale; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale after boundaries: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:3 ; *** dampen if rescale oscillates if( (iteration.val > 3) , @@ -494,9 +492,8 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = 1 + ( ( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) - 1 ) / 2 ) ; !! this brings the value closer to one. The formulation works reasonably well within the range of 0.5..2 - put_utility "msg" / "reducing p47_implicitQttyTargetTaxRescale due to oscillation in the previous 3 iterations:"; - put_utility "msg" / ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):5:3 ; - display "reducing p47_implicitQttyTargetTaxRescale due to oscillation in the previous 3 iterations: ", p47_implicitQttyTargetTaxRescale; + put_utility "msg" / "Reducing p47_implicitQttyTargetTaxRescale due to oscillation in the previous 3 iterations:"; + put_utility "msg" / ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:3 ; ); ); From ffc887e48855ad6fc7c1d6424caf1f5a46dcafa4 Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Wed, 22 Mar 2023 21:34:32 +0100 Subject: [PATCH 3/6] improve output again --- modules/47_regipol/regiCarbonPrice/postsolve.gms | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/47_regipol/regiCarbonPrice/postsolve.gms b/modules/47_regipol/regiCarbonPrice/postsolve.gms index 8495063e1..04a698f9a 100644 --- a/modules/47_regipol/regiCarbonPrice/postsolve.gms +++ b/modules/47_regipol/regiCarbonPrice/postsolve.gms @@ -435,7 +435,8 @@ 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; ); ); - put_utility "msg" / "p47_implicitQttyTargetTaxRescale before dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:3 ; + put_utility "msg" / "Dampening rescaling for " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale before dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):2:10 ; *** dampen rescale factor when closer than 1.5 / 0.75 to reduce oscillations if( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) > 1, @@ -468,7 +469,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt ) ; ); - put_utility "msg" / "p47_implicitQttyTargetTaxRescale after dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:3 ; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale after dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):2:10 ; *** put a bound around the rescale factor with increasing iterations to help convergence p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = @@ -477,7 +478,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt ), 1 / ( 2 * EXP( -0.05 * iteration.val ) + 1.01) ); - put_utility "msg" / "p47_implicitQttyTargetTaxRescale after boundaries: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:3 ; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale after boundaries: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):2:10 ; *** dampen if rescale oscillates if( (iteration.val > 3) , @@ -493,7 +494,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt 1 + ( ( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) - 1 ) / 2 ) ; !! this brings the value closer to one. The formulation works reasonably well within the range of 0.5..2 put_utility "msg" / "Reducing p47_implicitQttyTargetTaxRescale due to oscillation in the previous 3 iterations:"; - put_utility "msg" / ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:3 ; + put_utility "msg" / ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):2:10 ; ); ); From 059c90ab95c693d2d93a5d2a88e04b4821bdda00 Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Wed, 22 Mar 2023 23:00:45 +0100 Subject: [PATCH 4/6] next try --- modules/47_regipol/regiCarbonPrice/postsolve.gms | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/47_regipol/regiCarbonPrice/postsolve.gms b/modules/47_regipol/regiCarbonPrice/postsolve.gms index 04a698f9a..25630b290 100644 --- a/modules/47_regipol/regiCarbonPrice/postsolve.gms +++ b/modules/47_regipol/regiCarbonPrice/postsolve.gms @@ -436,7 +436,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt ); ); put_utility "msg" / "Dampening rescaling for " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl; - put_utility "msg" / "p47_implicitQttyTargetTaxRescale before dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):2:10 ; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale before dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:2; *** dampen rescale factor when closer than 1.5 / 0.75 to reduce oscillations if( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) > 1, @@ -469,7 +469,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt ) ; ); - put_utility "msg" / "p47_implicitQttyTargetTaxRescale after dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):2:10 ; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale after dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:2; *** put a bound around the rescale factor with increasing iterations to help convergence p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = @@ -478,7 +478,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt ), 1 / ( 2 * EXP( -0.05 * iteration.val ) + 1.01) ); - put_utility "msg" / "p47_implicitQttyTargetTaxRescale after boundaries: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):2:10 ; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale after boundaries: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:2; *** dampen if rescale oscillates if( (iteration.val > 3) , @@ -494,7 +494,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt 1 + ( ( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) - 1 ) / 2 ) ; !! this brings the value closer to one. The formulation works reasonably well within the range of 0.5..2 put_utility "msg" / "Reducing p47_implicitQttyTargetTaxRescale due to oscillation in the previous 3 iterations:"; - put_utility "msg" / ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):2:10 ; + put_utility "msg" / ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:2; ); ); From a0dfe764a1d1b290cb1c065250b942a1acc34266 Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Wed, 22 Mar 2023 23:02:12 +0100 Subject: [PATCH 5/6] again --- modules/47_regipol/regiCarbonPrice/postsolve.gms | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/47_regipol/regiCarbonPrice/postsolve.gms b/modules/47_regipol/regiCarbonPrice/postsolve.gms index 25630b290..46934abb5 100644 --- a/modules/47_regipol/regiCarbonPrice/postsolve.gms +++ b/modules/47_regipol/regiCarbonPrice/postsolve.gms @@ -436,7 +436,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt ); ); put_utility "msg" / "Dampening rescaling for " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl; - put_utility "msg" / "p47_implicitQttyTargetTaxRescale before dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:2; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale before dampening: noformat" ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup); *** dampen rescale factor when closer than 1.5 / 0.75 to reduce oscillations if( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) > 1, @@ -469,7 +469,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt ) ; ); - put_utility "msg" / "p47_implicitQttyTargetTaxRescale after dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:2; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale after dampening: 10:2" ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:2; *** put a bound around the rescale factor with increasing iterations to help convergence p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = @@ -478,7 +478,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt ), 1 / ( 2 * EXP( -0.05 * iteration.val ) + 1.01) ); - put_utility "msg" / "p47_implicitQttyTargetTaxRescale after boundaries: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:2; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale after boundaries: 10:3 " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:3; *** dampen if rescale oscillates if( (iteration.val > 3) , @@ -493,8 +493,8 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = 1 + ( ( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) - 1 ) / 2 ) ; !! this brings the value closer to one. The formulation works reasonably well within the range of 0.5..2 - put_utility "msg" / "Reducing p47_implicitQttyTargetTaxRescale due to oscillation in the previous 3 iterations:"; - put_utility "msg" / ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:2; + put_utility "msg" / "Reducing p47_implicitQttyTargetTaxRescale due to oscillation in the previous 3 iterations: :10:3"; + put_utility "msg" / ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:3; ); ); From d7f1892b50260e01a30e0caee9873d84c1b37d39 Mon Sep 17 00:00:00 2001 From: robertpietzcker <61154412+robertpietzcker@users.noreply.github.com> Date: Fri, 6 Oct 2023 14:37:40 +0200 Subject: [PATCH 6/6] Update display in postsolve.gms --- modules/47_regipol/regiCarbonPrice/postsolve.gms | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/47_regipol/regiCarbonPrice/postsolve.gms b/modules/47_regipol/regiCarbonPrice/postsolve.gms index b9e356f06..5ffd2c816 100644 --- a/modules/47_regipol/regiCarbonPrice/postsolve.gms +++ b/modules/47_regipol/regiCarbonPrice/postsolve.gms @@ -498,7 +498,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt ); ); put_utility "msg" / "Dampening rescaling for " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl; - put_utility "msg" / "p47_implicitQttyTargetTaxRescale before dampening: noformat" ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup); + put_utility "msg" / "p47_implicitQttyTargetTaxRescale before dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:3; *** dampen rescale factor when closer than 1.5 / 0.75 to reduce oscillations if( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) > 1, @@ -531,16 +531,16 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt ) ; ); - put_utility "msg" / "p47_implicitQttyTargetTaxRescale after dampening: 10:2" ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:2; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale after dampening: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:3; -*** put a bound around the rescale factor with increasing iterations to help convergence +*** with increasing iterations, tighten the bound around the rescale factor to prevent large jumps in late iterations p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = max( min( 2 * EXP( -0.05 * iteration.val ) + 1.01 , p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) ), 1 / ( 2 * EXP( -0.05 * iteration.val ) + 1.01) ); - put_utility "msg" / "p47_implicitQttyTargetTaxRescale after boundaries: 10:3 " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:3; + put_utility "msg" / "p47_implicitQttyTargetTaxRescale after boundaries: " ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:3; *** dampen if rescale oscillates if( (iteration.val > 3) , @@ -555,7 +555,7 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) = 1 + ( ( p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup) - 1 ) / 2 ) ; !! this brings the value closer to one. The formulation works reasonably well within the range of 0.5..2 - put_utility "msg" / "Reducing p47_implicitQttyTargetTaxRescale due to oscillation in the previous 3 iterations: :10:3"; + put_utility "msg" / "Reducing p47_implicitQttyTargetTaxRescale due to oscillation in the previous 3 iterations: "; put_utility "msg" / ttot.tl " " ext_regi.tl " " qttyTarget.tl " " qttyTargetGroup.tl " " p47_implicitQttyTargetTaxRescale(ttot,ext_regi,qttyTarget,qttyTargetGroup):10:3; ); );