From 8e4f55c5d2c8090349a9963076c6021e135df523 Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Wed, 3 Jun 2026 16:28:47 +0200 Subject: [PATCH 1/2] test comparison point shift --- modules/47_regipol/regiCarbonPrice/postsolve.gms | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/47_regipol/regiCarbonPrice/postsolve.gms b/modules/47_regipol/regiCarbonPrice/postsolve.gms index 3f92dfdf1..154d523bd 100644 --- a/modules/47_regipol/regiCarbonPrice/postsolve.gms +++ b/modules/47_regipol/regiCarbonPrice/postsolve.gms @@ -251,6 +251,8 @@ loop((ext_regi,ttot)$regiANDperiodEmiMktTarget_47(ttot,ext_regi), p47_slopeReferenceIteration_iter(iteration,ttot,ext_regi) = 1; elseif(NOT(p47_currentConvergence_iter(iteration,ttot,ext_regi) eq p47_currentConvergence_iter(iteration-1,ttot,ext_regi))), !! reset the iteration reference for slope calculation if the target that is being analyzed changes p47_slopeReferenceIteration_iter(iteration,ttot,ext_regi) = ord(iteration); + elseif ( iteration.val - p47_slopeReferenceIteration_iter(iteration-1,ttot,ext_regi) > 5 ) !! make sure the reference point is updated regularly, so the comparison point is not stuck in some very different past. + p47_slopeReferenceIteration_iter(iteration,ttot,ext_regi) = iteration.val - 5 ; else p47_slopeReferenceIteration_iter(iteration,ttot,ext_regi) = p47_slopeReferenceIteration_iter(iteration-1,ttot,ext_regi); ); @@ -329,10 +331,10 @@ loop(ext_regi$regiEmiMktTarget(ext_regi), *** if we are still using the slope if(NOT(regiEmiMktRescaleType(iteration,ttot,ttot2,ext_regi,emiMktExt,"squareDev_noNonPositiveSlope")), *** clamp slopes values to avoid extreme changes (or no change) on a single iteration (avoid corner cases where other parts of the model changes causing undesirable fluctuations on the calculated slope) - if((p47_factorRescaleSlope(ttot,ttot2,ext_regi,emiMktExt) gt -0.3) OR (p47_factorRescaleSlope(ttot,ttot2,ext_regi,emiMktExt) lt -5), + if((p47_factorRescaleSlope(ttot,ttot2,ext_regi,emiMktExt) gt -0.05) OR (p47_factorRescaleSlope(ttot,ttot2,ext_regi,emiMktExt) lt -5), p47_clampedRescaleSlope_iter(iteration,ttot,ttot2,ext_regi,emiMktExt) = p47_factorRescaleSlope(ttot,ttot2,ext_regi,emiMktExt); ); - p47_factorRescaleSlope(ttot,ttot2,ext_regi,emiMktExt) = max(-5,min(-0.3, p47_factorRescaleSlope(ttot,ttot2,ext_regi,emiMktExt))); + p47_factorRescaleSlope(ttot,ttot2,ext_regi,emiMktExt) = max(-5,min(-0.05, p47_factorRescaleSlope(ttot,ttot2,ext_regi,emiMktExt))); *** calculate the tax rescale factor using the above calculated slope pm_factorRescaleemiMktCO2Tax(ttot,ttot2,ext_regi,emiMktExt) = ( From 1fd3948366f5bd90f36b1776d8a3feb56a595f35 Mon Sep 17 00:00:00 2001 From: robertpietzcker Date: Wed, 3 Jun 2026 16:57:16 +0200 Subject: [PATCH 2/2] increase delay to 8 --- modules/47_regipol/regiCarbonPrice/postsolve.gms | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/47_regipol/regiCarbonPrice/postsolve.gms b/modules/47_regipol/regiCarbonPrice/postsolve.gms index 154d523bd..b1b0a1a3a 100644 --- a/modules/47_regipol/regiCarbonPrice/postsolve.gms +++ b/modules/47_regipol/regiCarbonPrice/postsolve.gms @@ -251,8 +251,8 @@ loop((ext_regi,ttot)$regiANDperiodEmiMktTarget_47(ttot,ext_regi), p47_slopeReferenceIteration_iter(iteration,ttot,ext_regi) = 1; elseif(NOT(p47_currentConvergence_iter(iteration,ttot,ext_regi) eq p47_currentConvergence_iter(iteration-1,ttot,ext_regi))), !! reset the iteration reference for slope calculation if the target that is being analyzed changes p47_slopeReferenceIteration_iter(iteration,ttot,ext_regi) = ord(iteration); - elseif ( iteration.val - p47_slopeReferenceIteration_iter(iteration-1,ttot,ext_regi) > 5 ) !! make sure the reference point is updated regularly, so the comparison point is not stuck in some very different past. - p47_slopeReferenceIteration_iter(iteration,ttot,ext_regi) = iteration.val - 5 ; + elseif ( iteration.val - p47_slopeReferenceIteration_iter(iteration-1,ttot,ext_regi) > 8 ) !! make sure the reference point is updated regularly, so the comparison point is not stuck in some very different past. + p47_slopeReferenceIteration_iter(iteration,ttot,ext_regi) = iteration.val - 8 ; else p47_slopeReferenceIteration_iter(iteration,ttot,ext_regi) = p47_slopeReferenceIteration_iter(iteration-1,ttot,ext_regi); );