message_ix icon indicating copy to clipboard operation
message_ix copied to clipboard

MESSAGE-MACRO fails to converge with small oscillations

Open OFR-IIASA opened this issue 6 years ago • 3 comments

With stringent scenarios, in terms of the cumulative carbon budget, convergence is still not achieved after 50 iterations and it seems that the current function to pick up on the oscillation also doesnt catch this. A current scenario with which I encounter this is issue is: Model: ENGAGE_SSP2_v4 Scenario: EN_NPi2020_700f The last two iterations log entries are as follows and all previous are the same with the obj function alternating between these two points. 49 // 50 MESSAGEix OBJ 2446600.26636 // 2447568.38622 max adjustment pos 0.2 // 0.2 max adjustment neg 0.16664 // 0.16736 absolute max adjustment max/min 0.2 // 0.2 adjustment bound 0.2 // 0.2

OFR-IIASA avatar Apr 20 '20 08:04 OFR-IIASA

Here is an example of the iteration log if this helps - sorry needed to save it as a txt file 700f_iteration_log.txt

OFR-IIASA avatar Apr 20 '20 08:04 OFR-IIASA

This is known behavior that also occurred in MESSAGE V-MACRO. The automated process to adjust the convergence criterion that was introduced in MESSAGEix-MACRO seems to have difficulties to deal with such behavior in some situations. This can be manually addressed by setting the maximum adjustment step size to below the desired convergence criterion and then run the model for a number of iterations so that oscillation happens in a range smaller than the desired convergence criterion. Ideally this should happen from a starting point that is known to be close to the point of convergence (around which oscillation happens) so that the number of needed iterations will be small.

volker-krey avatar Apr 23 '20 06:04 volker-krey

@OFR-IIASA since you opened this issue, in your view is this now mitigated by #343 (adding the ability to tune these parameters per @volker-krey's comment) and #345 (adding documentation of how to tune, based on your investigations)?

If so, please mark the issue as Closed. This helps our issue list be an accurate reflection of current needs.

(NB. of course, the algorithm could be made more sophisticated—but someone can open a new issue for that if and when they identify a specific need for it.)

khaeru avatar Apr 30 '20 08:04 khaeru