Skip to content

Incorrect results for AMIGO2  #58

Description

@jrbanga

Hi, the scripts for AMIGO2 have issues/errors, and as a consequence the reported performance of AMIGO2 is wrong.
See my emails (and attachments) of 8 and 9-March-2023, and the notes below.
Thanks,
Julio


Problem LotkaVolterra.m

Nominal params are [0.02 0.03 0.05], and i.c. [100 100]

Running the script with AMIGO2 gives the following estimates:

Estimated global parameters:

k1 : 1.0000e-04  +-  1.3765e-02 (1.38e+04%); (bound active) 
k2 : 3.0138e-02  +-  1.1397e-04 (   0.378%); 
k3 : 5.0300e-02  +-  9.3082e-04 (    1.85%); 

Estimated global initial conditions:

r : 9.9999e+01  +-  9.3448e-04 (0.000934%); 
w : 9.8910e+01  +-  8.1850e-01 (   0.828%); 

Param k1 is quite off from its nominal value.

However, since noiseless data is used, tighter tolerances are needed for the integration.
By simply setting:

inputs.ivpsol.rtol=1.0e-10; % [] IVP solver integration tolerances
inputs.ivpsol.atol=1.0e-10;

we re-run AMIGO2 and now get:

Estimated global parameters:

k1 : 2.0002e-02  +-  1.0257e-06 ( 0.00513%); 
k2 : 3.0000e-02  +-  8.4087e-09 ( 2.8e-05%); 
k3 : 5.0000e-02  +-  6.8484e-08 (0.000137%); 

Estimated global initial conditions:

r : 1.0000e+02  +-  6.8999e-08 ( 6.9e-08%); 
w : 1.0000e+02  +-  6.1306e-05 (6.13e-05%); 

i.e. almost perfect recovery of the nominal parameters.

Incidentally, checking the convergence curve we see that the computation time needed for the above solution is less than 1 second.
We can also see this in the output of the optimizer:
Iteration: 12 NFunEvals: 885 Bestf: 2.00738e-12 CPUTime: 0.906250


Problem FHN.m

Data is inconsistent with true parameters, so reproted performance of AMIGO2 is wrong.

I generated with AMIGO2 noiseless data using the true parameter values indicated in the Julia file for your method .

I then solved the problem using this data and AMIGO could recover the true parameters in just 3 s of computation:

Estimated global parameters:
a : 2.0001e-01 +- 6.0307e-06 ( 0.00302%);
b : 1.9999e-01 +- 5.6450e-06 ( 0.00282%);
g : 2.0000e+00 +- 1.3371e-07 (6.69e-06%);
Estimated global initial conditions:
x1 : 1.0000e+00 +- 3.8778e-09 (3.88e-07%);
x2 : -1.0000e+00 +- 4.0442e-08 (-4.04e-06%);

Iteration: 32 NFunEvals: 2118 Bestf: 9.07821e-10 CPUTime: 2.843750

I.e., it seems that in your AMIGO2 scripts, data is inconsistent with true params.
I suspect the same happens for the other cases.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions