The accepted answer on my question regarding NaN in objective function helped a lot. I now somehow run into the problem where the convergence value reported does not go below a certain value as depicted below:
Iter Objective Convergence
20 -1.55305E+04 1.78101E+00
21 -1.54846E+04 1.78101E+00
22 -1.55665E+04 1.42371E+00
23 -1.55675E+04 1.42371E+00
24 -1.55209E+04 1.78101E+00
25 -1.54972E+04 2.00348E+00
26 -1.54750E+04 1.78101E+00
27 -1.54835E+04 1.78101E+00
28 -1.55488E+04 1.78101E+00
29 -1.55047E+04 1.78101E+00
Iter Objective Convergence
30 -1.55043E+04 1.78101E+00
31 -1.55043E+04 1.78101E+00
32 -1.55054E+04 1.78101E+00
33 -1.55058E+04 1.78101E+00
34 -1.55517E+04 1.78101E+00
The context of the problem might be appropriate. I am optimising a complex make-store-use system. The inventory limits of the store subsystem are represented as CV
's that have obvious integrator models to the inventory balance around the storage system. At times it might be useful to the evaluate the decoupling of the make and use sub--systems , i.e. prevent limitations on the use subsystem to turn down the make sub-system. This can be done by 'dropping' the inventory CV
's by setting cv.STATUS=0
. When I do that the convergence gets stuck at 1.78 and after maximum iteration an unsuccessful solution is reported. When the inventory are controlled within bounds, the solution converge within a few iterations with convergence reported as 0.00004. (OTOL
=0.1, RTOL
=0.01).
The inventories is part of the objective function via cv.COST
=-0.01 to incentivise building inventory when possible.
I am suspecting that because of the integrating model of the inventories and the fact that it is not controlled but still form part of the objective function, non-convergence might be inferred. If so, how should I treat such problems?