# Convergence of a very large non-linear least squares optimization

(note: I also posted this question on stackoverflow before finding this community here, which seems a better place for it)

I'm trying to solve the following problem: I have a lot (~80000) surface patches of an organ that's growing. I measure each of its areas over time (18 time-points) and want to fit a growth curve to it (bi-logistic model, eg. just the sum of two logistic functions bcs. there are two 'growth spurts' happening in the observed period).

I have box constraints to ensure that the exponential terms don't explode and a linear constraint that one growth spurt has to happen after the other. Also, in order to enforce some sort of spatial continuity in the fitted parameters, I add a penalty term to the objective function (least squares) given as the squared sum of differences between (some of the) parameters of neighbouring patches, so the individual model fits are not independent anymore.

I have gradients and the hessian of the whole thing, and I solve it at increasingly finer scales, starting with the overall surface area, subdividing, mapping the parameters of the global model fit to each patch, running the solver again, subdividing ... until I get my desired resolution.

So, optimization using IPOPT works, but it is terribly slow, and since I'm a bit of a noob in all things concerning optimization theory I was wondering if I'm doing something terribly stupid in the settings. I'm using ma86 as linear solver compiled against openBLAS running on a machine with 256G RAM and 56 cores as well as metis reordering. The other settings I use are:

% nlp scaling
solv_options.ipopt.nlp_scaling_min_value = 1e-16;

solv_options.ipopt.bound_mult_init_method='constant';

% Barrier Parameter
solv_options.ipopt.mu_oracle = 'quality-function';
solv_options.ipopt.fixed_mu_oracle = 'average_compl';
solv_options.ipopt.corrector_type = 'affine';

% linear solver
solv_options.ipopt.max_soc=0;
solv_options.ipopt.accept_every_trial_step='yes';
solv_options.ipopt.linear_system_scaling = 'none';
solv_options.ipopt.neg_curv_test_tol = 0;
solv_options.ipopt.neg_curv_test_reg = 'yes';
solv_options.ipopt.max_refinement_steps=0;
solv_options.ipopt.min_refinement_steps=0;

% ma86 settings
solv_options.ipopt.linear_solver='ma86';
solv_options.ipopt.ma86_order='auto';
solv_options.ipopt.ma86_scaling='mc64';
solv_options.ipopt.ma86_small=1e-10;
solv_options.ipopt.ma86_static=1;
solv_options.ipopt.recalc_y='yes';


and this gives me something like this:

This is Ipopt version 3.12, running with linear solver ma86.

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:     2560
Number of nonzeros in Lagrangian Hessian.............:   112280

Total number of variables............................:     8960
variables with only lower bounds:     2560
variables with lower and upper bounds:     3840
variables with only upper bounds:     2560
Total number of equality constraints.................:        0
Total number of inequality constraints...............:     1280
inequality constraints with only lower bounds:        0
inequality constraints with lower and upper bounds:        0
inequality constraints with only upper bounds:     1280

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
0  9.8260736e-01 0.00e+00 1.19e-02   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
1  9.6288666e-01 0.00e+00 1.24e-02  -4.5 1.14e-02   0.0 9.91e-01 1.00e+00f  1
2  9.1582880e-01 0.00e+00 1.16e-02  -4.4 2.72e-02  -0.5 1.00e+00 1.00e+00f  1
3  8.2635857e-01 0.00e+00 1.01e-02  -4.6 1.39e-01  -1.0 9.99e-01 1.00e+00f  1
4  7.8943781e-01 0.00e+00 9.40e-03  -4.9 2.70e-02  -0.5 1.00e+00 1.00e+00f  1
5  7.2123624e-01 0.00e+00 8.12e-03  -5.3 8.70e-02  -1.0 1.00e+00 1.00e+00f  1
6  6.9535003e-01 0.00e+00 7.56e-03  -6.1 2.20e-02  -0.6 1.00e+00 9.06e-01f  1
7  6.6635914e-01 0.00e+00 7.00e-03  -6.6 6.21e-02  -1.1 1.00e+00 5.40e-01f  1
8  6.5683787e-01 0.00e+00 6.78e-03  -7.6 2.14e-02  -0.6 1.00e+00 3.81e-01f  1
9  6.4238130e-01 0.00e+00 6.53e-03  -7.7 1.53e-01  -1.1 1.00e+00 2.90e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
10  6.3440625e-01 0.00e+00 6.33e-03  -8.7 2.20e-02  -0.7 1.00e+00 3.30e-01f  1
11  6.2431009e-01 0.00e+00 6.16e-03  -8.3 3.08e-01  -1.2 1.00e+00 2.04e-01f  1
12  6.1872460e-01 0.00e+00 6.05e-03  -8.8 2.29e-02  -0.7 1.00e+00 2.32e-01f  1
13  6.0753815e-01 0.00e+00 5.86e-03  -8.9 2.73e-01  -1.2 1.00e+00 2.31e-01f  1
14  6.0575477e-01 0.00e+00 5.82e-03  -9.9 2.60e-02  -0.8 1.00e+00 7.44e-02f  1
15  6.0089103e-01 0.00e+00 5.71e-03 -11.0 1.11e-02  -0.4 1.00e+00 4.48e-01f  1
16  5.9426852e-01 0.00e+00 5.58e-03 -11.0 3.14e-02  -0.8 1.00e+00 2.68e-01f  1
17  5.9175418e-01 0.00e+00 5.52e-03 -11.0 1.17e-02  -0.4 1.00e+00 2.26e-01f  1
18  5.8756155e-01 0.00e+00 5.44e-03 -11.0 3.97e-02  -0.9 1.00e+00 1.65e-01f  1
19  5.8651702e-01 0.00e+00 5.42e-03  -9.5 1.26e-02  -0.5 1.00e+00 8.89e-02f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
20  5.8278151e-01 0.00e+00 5.34e-03 -10.3 5.18e-02  -0.9 1.00e+00 1.40e-01f  1
21  5.8100614e-01 0.00e+00 5.30e-03 -11.0 1.37e-02  -0.5 1.00e+00 1.42e-01f  1
22  5.7827149e-01 0.00e+00 5.25e-03 -11.0 7.12e-02  -1.0 1.00e+00 9.77e-02f  1
23  5.7564914e-01 0.00e+00 5.19e-03  -9.4 1.52e-02  -0.6 1.00e+00 1.97e-01f  1
24  5.7340095e-01 0.00e+00 5.15e-03 -10.0 1.06e-01  -1.0 1.00e+00 7.66e-02f  1
25  5.7134734e-01 0.00e+00 5.10e-03 -11.0 1.78e-02  -0.6 1.00e+00 1.45e-01f  1
26  5.6897098e-01 0.00e+00 5.06e-03 -11.0 1.82e-01  -1.1 1.00e+00 7.65e-02f  1
27  5.6722484e-01 0.00e+00 5.02e-03 -11.0 2.11e-02  -0.7 1.00e+00 1.16e-01f  1
28  5.6402838e-01 0.00e+00 5.25e-03 -11.0 3.29e-01  -1.1 1.00e+00 9.57e-02f  1
29  5.6299118e-01 0.00e+00 5.26e-03 -10.5 2.38e-02  -0.7 1.00e+00 6.53e-02f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
30  5.5753178e-01 0.00e+00 5.63e-03 -11.0 1.38e-01  -1.2 1.00e+00 1.62e-01f  1
31  5.5730217e-01 0.00e+00 5.63e-03 -11.0 2.37e-02  -0.8 1.00e+00 1.38e-02f  1
32  5.5363398e-01 0.00e+00 5.71e-03 -11.0 8.55e-02  -1.2 1.00e+00 1.06e-01f  1
33  5.5223091e-01 0.00e+00 5.70e-03 -11.0 2.43e-02  -0.8 1.00e+00 7.99e-02f  1
34  5.5163441e-01 0.00e+00 5.70e-03  -9.9 1.30e-01  -1.3 1.00e+00 1.65e-02f  1
35  5.4699694e-01 0.00e+00 5.67e-03 -10.9 2.56e-02  -0.9 1.00e+00 2.48e-01f  1
36  5.4559780e-01 0.00e+00 5.67e-03 -11.0 2.30e-01  -1.3 1.00e+00 3.71e-02f  1
37  5.4248376e-01 0.00e+00 5.63e-03 -11.0 2.58e-02  -0.9 1.00e+00 1.60e-01f  1
38  5.3955718e-01 0.00e+00 5.63e-03 -10.7 6.78e-01  -1.4 1.00e+00 6.97e-02f  1
39  5.3606672e-01 0.00e+00 5.57e-03 -10.9 2.79e-02  -1.0 1.00e+00 1.73e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
40  5.3481638e-01 0.00e+00 5.55e-03 -11.0 1.32e-02  -0.5 1.00e+00 1.33e-01f  1
41  5.3248177e-01 0.00e+00 5.50e-03 -11.0 3.23e-02  -1.0 1.00e+00 1.10e-01f  1
42  5.3143109e-01 0.00e+00 5.48e-03 -10.4 1.37e-02  -0.6 1.00e+00 1.05e-01f  1
43  5.2975978e-01 0.00e+00 5.45e-03 -11.0 3.92e-02  -1.1 1.00e+00 7.50e-02f  1
44  5.2855042e-01 0.00e+00 5.42e-03 -11.0 1.50e-02  -0.6 1.00e+00 1.13e-01f  1
45  5.2670676e-01 0.00e+00 5.38e-03 -11.0 4.80e-02  -1.1 1.00e+00 7.85e-02f  1
46  5.2428812e-01 0.00e+00 5.31e-03 -11.0 1.64e-02  -0.7 1.00e+00 2.12e-01f  1
47  5.2221881e-01 0.00e+00 5.27e-03 -11.0 5.84e-02  -1.2 1.00e+00 8.45e-02f  1
48  5.2084516e-01 0.00e+00 5.23e-03 -10.8 1.79e-02  -0.8 1.00e+00 1.14e-01f  1
49  5.1928549e-01 0.00e+00 5.19e-03 -11.0 7.06e-02  -1.2 1.00e+00 6.06e-02f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
50  5.1787195e-01 0.00e+00 5.15e-03 -11.0 1.95e-02  -0.8 1.00e+00 1.10e-01f  1
51  5.1639782e-01 0.00e+00 5.12e-03 -10.9 8.49e-02  -1.3 1.00e+00 5.45e-02f  1
52  5.1606363e-01 0.00e+00 5.11e-03 -11.0 2.13e-02  -0.9 1.00e+00 2.45e-02f  1
53  5.1178863e-01 0.00e+00 5.01e-03 -11.0 1.04e-01  -1.3 1.00e+00 1.50e-01f  1
54  5.1173718e-01 0.00e+00 5.01e-03 -11.0 2.33e-02  -0.9 1.00e+00 3.61e-03f  1
55  5.0944130e-01 0.00e+00 4.96e-03 -11.0 1.40e-01  -1.4 1.00e+00 7.70e-02f  1
56  5.0727659e-01 0.00e+00 4.89e-03 -11.0 2.55e-02  -1.0 1.00e+00 1.43e-01f  1
57  5.0638483e-01 0.00e+00 4.85e-03 -11.0 1.11e-02  -0.5 1.00e+00 1.29e-01f  1
58  5.0426908e-01 0.00e+00 4.78e-03 -11.0 2.79e-02  -1.0 1.00e+00 1.32e-01f  1
59  5.0333858e-01 0.00e+00 4.74e-03 -11.0 1.22e-02  -0.6 1.00e+00 1.26e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
60  5.0161958e-01 0.00e+00 4.69e-03 -11.0 3.05e-02  -1.1 1.00e+00 1.02e-01f  1
61  5.0037437e-01 0.00e+00 4.64e-03 -11.0 1.34e-02  -0.6 1.00e+00 1.58e-01f  1
62  4.9971029e-01 0.00e+00 4.62e-03 -11.0 3.34e-02  -1.1 1.00e+00 3.72e-02f  1
63  4.9914235e-01 0.00e+00 4.59e-03 -11.0 1.48e-02  -0.7 1.00e+00 6.69e-02f  1
64  4.9664256e-01 0.00e+00 4.51e-03 -11.0 3.70e-02  -1.2 1.00e+00 1.32e-01f  1
65  4.9621567e-01 0.00e+00 4.50e-03 -11.0 1.62e-02  -0.7 1.00e+00 4.72e-02f  1
66  4.9453149e-01 0.00e+00 4.44e-03 -11.0 4.19e-02  -1.2 1.00e+00 8.39e-02f  1
67  4.9304626e-01 0.00e+00 4.38e-03 -11.0 1.79e-02  -0.8 1.00e+00 1.53e-01f  1
68  4.9163087e-01 0.00e+00 4.34e-03 -11.0 6.89e-02  -1.3 1.00e+00 6.69e-02f  1
69  4.9031174e-01 0.00e+00 4.28e-03 -11.0 1.97e-02  -0.8 1.00e+00 1.28e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
70  4.8795240e-01 0.00e+00 4.22e-03  -8.8 2.01e-01  -1.3 9.38e-01 1.04e-01f  1
71  4.8721723e-01 0.00e+00 4.18e-03  -9.8 2.16e-02  -0.9 1.00e+00 6.73e-02f  1
72  4.8560412e-01 0.00e+00 4.10e-03 -11.0 9.08e-03  -0.5 1.00e+00 3.33e-01f  1
73  4.8395604e-01 0.00e+00 4.03e-03 -11.0 2.38e-02  -0.9 1.00e+00 1.42e-01f  1
74  4.8308417e-01 0.00e+00 3.99e-03 -11.0 9.99e-03  -0.5 1.00e+00 1.69e-01f  1
75  4.8236398e-01 0.00e+00 3.96e-03 -10.8 2.63e-02  -1.0 1.00e+00 5.83e-02f  1
76  4.7919513e-01 0.00e+00 3.79e-03 -10.9 1.11e-02  -0.6 1.00e+00 5.72e-01f  1
77  4.7844811e-01 0.00e+00 3.76e-03 -11.0 3.12e-02  -1.0 1.00e+00 5.79e-02f  1
78  4.7801338e-01 0.00e+00 3.74e-03 -11.0 1.22e-02  -0.6 1.00e+00 7.40e-02f  1
79  4.7631089e-01 0.00e+00 3.67e-03 -11.0 4.30e-02  -1.1 1.00e+00 1.23e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
80  4.7516941e-01 0.00e+00 3.61e-03 -11.0 1.35e-02  -0.7 1.00e+00 1.81e-01f  1
81  4.7405503e-01 0.00e+00 3.57e-03 -11.0 7.24e-02  -1.1 1.00e+00 7.54e-02f  1
82  4.7394863e-01 0.00e+00 3.57e-03 -11.0 1.49e-02  -0.7 1.00e+00 1.57e-02f  1
83  4.7209146e-01 0.00e+00 3.51e-03  -8.9 1.76e-01  -1.2 9.65e-01 1.15e-01f  1
84  4.7199185e-01 0.00e+00 3.50e-03 -10.1 1.66e-02  -0.8 1.00e+00 1.36e-02f  1
85  4.7051045e-01 0.00e+00 3.41e-03 -11.0 6.70e-03  -0.3 1.00e+00 4.74e-01f  1
86  4.7028360e-01 0.00e+00 3.40e-03 -11.0 1.92e-02  -0.8 1.00e+00 2.87e-02f  1
87  4.6892068e-01 0.00e+00 3.31e-03 -11.0 7.44e-03  -0.4 1.00e+00 4.02e-01f  1
88  4.6754658e-01 0.00e+00 3.25e-03 -11.0 2.37e-02  -0.9 1.00e+00 1.62e-01f  1
89  4.6723856e-01 0.00e+00 3.23e-03 -11.0 8.24e-03  -0.4 1.00e+00 8.47e-02f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
90  4.6625331e-01 0.00e+00 3.18e-03 -11.0 3.07e-02  -0.9 1.00e+00 1.08e-01f  1
91  4.6621348e-01 0.00e+00 3.18e-03 -11.0 9.16e-03  -0.5 1.00e+00 1.01e-02f  1
92  4.6511327e-01 0.00e+00 3.17e-03 -11.0 4.12e-02  -1.0 1.00e+00 1.11e-01f  1
93  4.6363418e-01 0.00e+00 3.14e-03 -11.0 1.02e-02  -0.5 1.00e+00 3.45e-01f  1
94  4.6314545e-01 0.00e+00 3.14e-03 -11.0 6.17e-02  -1.0 1.00e+00 4.60e-02f  1
95  4.6235630e-01 0.00e+00 3.12e-03 -11.0 1.13e-02  -0.6 1.00e+00 1.70e-01f  1
96  4.6143809e-01 0.00e+00 3.11e-03  -9.7 1.03e-01  -1.1 1.00e+00 7.93e-02f  1
97  4.6069624e-01 0.00e+00 3.10e-03 -10.6 1.38e-02  -0.6 1.00e+00 1.47e-01f  1
98  4.5824023e-01 0.00e+00 3.68e-03  -8.6 3.14e-01  -1.1 8.52e-01 1.81e-01f  1
99  4.5822224e-01 0.00e+00 3.68e-03  -9.9 2.27e-02  -0.7 1.00e+00 3.30e-03f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
100  4.5747364e-01 0.00e+00 3.71e-03 -11.0 7.25e-03  -0.3 1.00e+00 3.33e-01f  1
101  4.5651156e-01 0.00e+00 3.77e-03 -11.0 2.65e-02  -0.8 1.00e+00 1.62e-01f  1
102  4.5624508e-01 0.00e+00 3.79e-03 -11.0 8.36e-03  -0.3 1.00e+00 1.09e-01f  1
103  4.5460694e-01 0.00e+00 3.91e-03 -10.5 3.10e-02  -0.8 1.00e+00 2.54e-01f  1
104  4.5415701e-01 0.00e+00 3.92e-03 -11.0 9.64e-03  -0.4 1.00e+00 1.69e-01f  1
105  4.5379967e-01 0.00e+00 3.95e-03 -11.0 3.54e-02  -0.9 1.00e+00 5.13e-02f  1
106  4.5282822e-01 0.00e+00 3.99e-03 -11.0 1.10e-02  -0.4 1.00e+00 3.33e-01f  1
107  4.5236345e-01 0.00e+00 4.03e-03 -11.0 4.03e-02  -0.9 1.00e+00 6.16e-02f  1
108  4.5158337e-01 0.00e+00 4.06e-03 -11.0 1.24e-02  -0.5 1.00e+00 2.45e-01f  1
109  4.4983066e-01 0.00e+00 4.19e-03  -8.9 4.54e-02  -1.0 1.00e+00 2.15e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
110  4.4976166e-01 0.00e+00 4.20e-03 -10.3 1.39e-02  -0.5 1.00e+00 2.01e-02f  1
111  4.4733643e-01 0.00e+00 4.34e-03  -8.3 4.72e-02  -1.0 9.30e-01 2.78e-01f  1
112  4.4674741e-01 0.00e+00 4.36e-03  -9.7 1.51e-02  -0.6 1.00e+00 1.60e-01f  1
113  4.4600496e-01 0.00e+00 4.39e-03  -8.6 4.25e-02  -1.1 1.00e+00 8.06e-02f  1
114  4.4596146e-01 0.00e+00 4.39e-03 -10.0 1.64e-02  -0.6 1.00e+00 1.09e-02f  1
115  4.4157951e-01 0.00e+00 4.49e-03  -8.4 4.50e-02  -1.1 1.00e+00 4.49e-01f  1
116  4.4137682e-01 0.00e+00 4.48e-03  -9.6 1.60e-02  -0.7 1.00e+00 4.90e-02f  1
117  4.3873388e-01 0.00e+00 4.47e-03  -7.5 3.70e-02  -1.2 9.19e-01 2.63e-01f  1
118  4.3815153e-01 0.00e+00 4.45e-03  -8.7 1.61e-02  -0.7 1.00e+00 1.33e-01f  1
119  4.3569743e-01 0.00e+00 4.41e-03  -7.5 3.98e-02  -1.2 1.00e+00 2.34e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
120  4.3444019e-01 0.00e+00 4.36e-03  -8.6 1.67e-02  -0.8 1.00e+00 2.71e-01f  1
121  4.3145745e-01 0.00e+00 4.27e-03  -7.3 4.24e-02  -1.3 1.00e+00 2.74e-01f  1
122  4.2975412e-01 0.00e+00 4.19e-03  -8.0 1.81e-02  -0.8 1.00e+00 3.55e-01f  1
123  4.2433966e-01 0.00e+00 3.98e-03  -6.9 4.56e-02  -1.3 1.00e+00 4.92e-01f  1
124  4.2414838e-01 0.00e+00 3.96e-03  -7.5 1.92e-02  -0.9 1.00e+00 4.01e-02f  1
125  4.2194620e-01 0.00e+00 3.87e-03  -6.9 4.80e-02  -1.4 1.00e+00 1.96e-01f  1
126  4.1778190e-01 0.00e+00 3.63e-03  -7.7 2.08e-02  -0.9 1.00e+00 8.34e-01f  1
127  4.1737428e-01 0.00e+00 2.94e-03  -7.1 4.72e-02  -1.4 1.00e+00 3.66e-02f  1
128  4.1315312e-01 0.00e+00 2.54e-03  -7.8 2.22e-02  -1.0 1.00e+00 8.46e-01f  1
129  4.1173197e-01 0.00e+00 2.51e-03  -7.1 6.31e-02  -1.5 1.00e+00 1.27e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
130  4.0915489e-01 0.00e+00 2.46e-03  -7.7 2.32e-02  -1.0 1.00e+00 5.13e-01f  1
131  4.0515277e-01 0.00e+00 2.38e-03  -6.9 9.97e-02  -1.5 1.00e+00 3.50e-01f  1
132  4.0343660e-01 0.00e+00 2.34e-03  -7.3 2.38e-02  -1.1 1.00e+00 3.43e-01f  1
133  3.9516682e-01 0.00e+00 2.17e-03  -6.8 1.68e-01  -1.6 1.00e+00 7.24e-01f  1
134  3.9098427e-01 0.00e+00 2.06e-03  -7.2 2.34e-02  -1.1 1.00e+00 9.07e-01f  1
135  3.9058959e-01 0.00e+00 2.05e-03  -7.0 5.50e-02  -1.6 1.00e+00 3.97e-02f  1
136  3.8628795e-01 0.00e+00 1.93e-03  -7.7 2.39e-02  -1.2 1.00e+00 9.42e-01f  1
137  3.8288703e-01 0.00e+00 1.84e-03  -7.2 6.76e-02  -1.7 1.00e+00 3.49e-01f  1
138  3.8113960e-01 0.00e+00 1.79e-03  -7.8 2.37e-02  -1.2 1.00e+00 4.02e-01f  1
139  3.7895865e-01 0.00e+00 1.74e-03  -7.3 8.98e-02  -1.7 1.00e+00 2.23e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
140  3.7630588e-01 0.00e+00 1.65e-03  -7.9 2.56e-02  -1.3 1.00e+00 6.04e-01f  1
141  3.7040736e-01 0.00e+00 2.44e-03  -7.4 4.40e-01  -1.8 1.00e+00 5.52e-01f  1
142  3.6744301e-01 0.00e+00 2.20e-03  -8.1 5.47e-02  -1.3 1.00e+00 6.87e-01f  1
143  3.6668338e-01 0.00e+00 2.11e-03  -9.7 1.27e-02  -0.9 1.00e+00 4.33e-01f  1
144  3.6563026e-01 0.00e+00 2.04e-03 -10.0 1.45e-01  -1.4 1.00e+00 2.33e-01f  1
145  3.6473497e-01 0.00e+00 1.94e-03 -11.0 1.73e-02  -1.0 1.00e+00 4.85e-01f  1
146  3.6423323e-01 0.00e+00 2.14e-03 -11.0 2.77e-01  -1.5 1.00e+00 1.00e-01f  1
147  3.6397151e-01 0.00e+00 2.15e-03 -10.1 2.02e-02  -1.0 1.00e+00 1.32e-01f  1
148  3.6196968e-01 0.00e+00 2.50e-03  -8.5 1.56e-01  -1.5 1.00e+00 3.92e-01f  1
149  3.6176499e-01 0.00e+00 2.49e-03  -9.6 1.65e-02  -1.1 1.00e+00 1.00e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
150  3.6069639e-01 0.00e+00 2.45e-03  -8.4 3.49e-02  -1.6 1.00e+00 2.18e-01f  1
151  3.6041434e-01 0.00e+00 2.43e-03  -9.4 1.63e-02  -1.1 1.00e+00 1.30e-01f  1
152  3.5921303e-01 0.00e+00 2.37e-03  -8.5 3.78e-02  -1.6 1.00e+00 2.34e-01f  1
153  3.5869485e-01 0.00e+00 2.33e-03  -9.4 1.64e-02  -1.2 1.00e+00 2.27e-01f  1
154  3.5699552e-01 0.00e+00 2.25e-03  -7.9 4.06e-02  -1.7 1.00e+00 3.20e-01f  1
155  3.5674149e-01 0.00e+00 2.23e-03  -8.7 1.77e-02  -1.2 1.00e+00 1.07e-01f  1
156  3.5471902e-01 0.00e+00 2.11e-03  -7.5 4.33e-02  -1.7 1.00e+00 3.71e-01f  1
157  3.5335745e-01 0.00e+00 1.99e-03  -8.3 1.91e-02  -1.3 1.00e+00 5.64e-01f  1
158  3.5245420e-01 0.00e+00 1.94e-03  -7.5 4.53e-02  -1.8 1.00e+00 1.67e-01f  1
159  3.5021073e-01 0.00e+00 1.73e-03  -8.3 2.05e-02  -1.3 1.00e+00 9.16e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
160  3.4610138e-01 0.00e+00 1.04e-03  -7.3 4.72e-02  -1.8 1.00e+00 7.94e-01f  1
161  3.4469412e-01 0.00e+00 9.99e-04  -8.0 2.07e-02  -1.4 1.00e+00 6.40e-01f  1
162  3.4399767e-01 0.00e+00 1.02e-03  -7.7 4.72e-02  -1.9 1.00e+00 1.42e-01f  1
163  3.4260897e-01 0.00e+00 9.60e-04  -8.1 2.22e-02  -1.4 1.00e+00 6.21e-01f  1
164  3.4129508e-01 0.00e+00 9.37e-04  -7.4 4.92e-02  -1.9 1.00e+00 2.68e-01f  1
165  3.4016827e-01 0.00e+00 9.15e-04  -8.0 2.34e-02  -1.5 1.00e+00 5.07e-01f  1
166  3.3825082e-01 0.00e+00 8.81e-04  -7.2 5.10e-02  -2.0 1.00e+00 3.98e-01f  1
167  3.3610567e-01 0.00e+00 8.39e-04  -7.7 2.44e-02  -1.5 1.00e+00 1.00e+00f  1
168  3.3460677e-01 0.00e+00 8.12e-04  -7.1 5.92e-02  -2.0 1.00e+00 3.31e-01f  1
169  3.3266040e-01 0.00e+00 7.74e-04  -7.7 2.51e-02  -1.6 1.00e+00 9.50e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
170  3.3037125e-01 0.00e+00 7.34e-04  -7.1 8.30e-02  -2.1 1.00e+00 5.31e-01f  1
171  3.2873890e-01 0.00e+00 7.02e-04  -7.7 2.53e-02  -1.6 1.00e+00 8.56e-01f  1
172  3.2622239e-01 0.00e+00 6.57e-04  -7.2 5.31e-02  -2.1 1.00e+00 6.32e-01f  1
173  3.2470308e-01 0.00e+00 6.28e-04  -7.8 2.53e-02  -1.7 1.00e+00 8.69e-01f  1
174  3.2372187e-01 0.00e+00 6.27e-04  -7.5 5.26e-02  -2.2 1.00e+00 2.63e-01f  1
175  3.2283458e-01 0.00e+00 5.92e-04  -8.2 2.60e-02  -1.7 1.00e+00 5.20e-01f  1
176  3.2183252e-01 0.00e+00 6.17e-04  -7.5 5.47e-02  -2.2 1.00e+00 2.71e-01f  1
177  3.2046827e-01 0.00e+00 5.47e-04  -8.1 2.70e-02  -1.8 1.00e+00 8.08e-01f  1
178  3.1975003e-01 0.00e+00 6.03e-04  -7.1 5.85e-02  -2.3 1.00e+00 2.04e-01f  1
179  3.1900035e-01 0.00e+00 5.19e-04  -7.6 2.77e-02  -1.8 1.00e+00 4.53e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
180  3.1615561e-01 0.00e+00 4.90e-04  -6.8 6.32e-02  -2.3 1.00e+00 8.53e-01f  1
181  3.1524761e-01 0.00e+00 4.49e-04  -7.3 2.68e-02  -1.9 1.00e+00 5.85e-01f  1
182  3.1326122e-01 0.00e+00 4.87e-04  -7.0 6.24e-02  -2.4 9.98e-01 6.26e-01f  1
183  3.1296679e-01 0.00e+00 4.09e-04  -7.7 2.63e-02  -1.9 1.00e+00 2.01e-01f  1
184  3.1055716e-01 0.00e+00 4.34e-04  -6.8 6.57e-02  -2.4 1.00e+00 8.22e-01f  1
185  3.1020674e-01 0.00e+00 3.60e-04  -7.5 2.70e-02  -2.0 1.00e+00 2.54e-01f  1
186  3.0929569e-01 0.00e+00 4.68e-04  -7.0 6.86e-02  -2.5 1.00e+00 3.18e-01f  1
187  3.0819030e-01 0.00e+00 3.23e-04  -7.8 2.94e-02  -2.0 1.00e+00 8.02e-01f  1
188  3.0763044e-01 0.00e+00 4.47e-04  -7.2 8.21e-02  -2.5 1.00e+00 2.02e-01f  1
189  3.0725472e-01 0.00e+00 3.07e-04  -8.0 3.11e-02  -2.1 1.00e+00 2.85e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
190  3.0578606e-01 0.00e+00 4.05e-04  -7.5 2.33e-01  -2.6 1.00e+00 5.11e-01f  1
191  3.0495222e-01 0.00e+00 3.43e-04  -8.1 2.91e-02  -2.2 1.00e+00 6.59e-01f  1
192  3.0413633e-01 0.00e+00 1.17e-03  -7.6 4.93e-01  -2.6 1.00e+00 2.84e-01f  1
193  3.0331078e-01 0.00e+00 9.60e-04  -7.7 3.14e-02  -2.2 1.00e+00 6.81e-01f  1
194  3.0239991e-01 0.00e+00 8.65e-04  -6.7 7.67e-02  -2.7 9.99e-01 4.00e-01f  1
195  3.0137954e-01 0.00e+00 6.77e-04  -7.5 3.36e-02  -2.3 1.00e+00 8.52e-01f  1
196  3.0056119e-01 0.00e+00 6.24e-04  -7.5 8.05e-02  -2.7 1.00e+00 3.28e-01f  1
197  3.0014178e-01 0.00e+00 5.65e-04  -8.3 3.58e-02  -2.3 1.00e+00 3.62e-01f  1
198  2.9923633e-01 0.00e+00 5.17e-04  -8.2 8.53e-02  -2.8 1.00e+00 3.59e-01f  1
199  2.9888005e-01 0.00e+00 4.75e-04  -8.9 3.83e-02  -2.4 1.00e+00 3.15e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
200  2.9848396e-01 0.00e+00 4.57e-04  -8.1 8.98e-02  -2.8 1.00e+00 1.58e-01f  1
201  2.9821853e-01 0.00e+00 4.30e-04  -8.8 4.15e-02  -2.4 1.00e+00 2.29e-01f  1
202  2.9738245e-01 0.00e+00 3.96e-04  -7.2 9.62e-02  -2.9 9.99e-01 3.39e-01f  1
203  2.9665614e-01 0.00e+00 3.36e-04  -7.8 4.41e-02  -2.5 1.00e+00 6.30e-01f  1
204  2.9578199e-01 0.00e+00 3.07e-04  -6.8 1.02e-01  -2.9 1.00e+00 3.87e-01f  1
205  2.9465429e-01 0.00e+00 2.39e-04  -7.4 4.54e-02  -2.5 1.00e+00 1.00e+00f  1
206  2.9301415e-01 0.00e+00 1.99e-04  -6.7 1.07e-01  -3.0 1.00e+00 8.01e-01f  1
207  2.9292261e-01 0.00e+00 1.94e-04  -7.3 4.47e-02  -2.6 1.00e+00 8.17e-02f  1
208  2.9132376e-01 0.00e+00 2.05e-04  -6.8 1.11e-01  -3.0 1.00e+00 7.08e-01f  1
209  2.9068030e-01 0.00e+00 1.46e-04  -7.4 4.72e-02  -2.6 1.00e+00 5.83e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
210  2.8989341e-01 0.00e+00 2.15e-04  -6.8 1.19e-01  -3.1 1.00e+00 3.71e-01f  1
211  2.8905846e-01 0.00e+00 1.25e-04  -7.4 5.00e-02  -2.7 1.00e+00 7.99e-01f  1
212  2.8817010e-01 0.00e+00 2.35e-04  -6.9 1.32e-01  -3.1 1.00e+00 4.36e-01f  1
213  2.8741077e-01 0.00e+00 1.25e-04  -7.5 5.21e-02  -2.7 1.00e+00 7.41e-01f  1
214  2.8705020e-01 0.00e+00 2.96e-04  -7.2 1.57e-01  -3.2 1.00e+00 1.65e-01f  1
215  2.8639044e-01 0.00e+00 1.29e-04  -8.0 5.54e-02  -2.8 1.00e+00 6.44e-01f  1
216  2.8567025e-01 0.00e+00 2.13e-04  -7.4 4.30e-01  -3.2 1.00e+00 3.16e-01f  1
217  2.8519078e-01 0.00e+00 1.22e-04  -8.1 6.05e-02  -2.8 1.00e+00 4.79e-01f  1
218  2.8508336e-01 0.00e+00 1.93e-04  -7.5 3.80e-01  -3.3 1.00e+00 4.58e-02f  1
219  2.8459190e-01 0.00e+00 1.16e-04  -8.3 6.70e-02  -2.9 1.00e+00 4.75e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
220  2.8382163e-01 0.00e+00 1.63e-04  -7.2 3.30e-01  -3.3 1.00e+00 3.29e-01f  1
221  2.8341130e-01 0.00e+00 1.28e-04  -7.8 7.27e-02  -2.9 1.00e+00 3.93e-01f  1
222  2.8284739e-01 0.00e+00 1.56e-04  -7.0 2.21e-01  -3.4 1.00e+00 2.45e-01f  1
223  2.8183563e-01 0.00e+00 1.19e-04  -7.7 7.96e-02  -3.0 1.00e+00 9.45e-01f  1
224  2.8117611e-01 0.00e+00 1.40e-04  -6.9 4.77e-01  -3.4 1.00e+00 2.96e-01f  1
225  2.8033847e-01 0.00e+00 1.04e-04  -7.6 8.59e-02  -3.0 1.00e+00 7.96e-01f  1
226  2.8005033e-01 0.00e+00 9.73e-05  -9.1 3.26e-02  -2.6 1.00e+00 6.19e-01f  1

Number of Iterations....: 226

(scaled)                 (unscaled)
Objective...............:   2.8005032523583379e-01    2.8005032523583379e-01
Dual infeasibility......:   9.7272674831558608e-05    9.7272674831558608e-05
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   3.2315149852880829e-07    3.2315149852880829e-07
Overall NLP error.......:   9.7272674831558608e-05    9.7272674831558608e-05

Number of objective function evaluations             = 227
Number of objective gradient evaluations             = 227
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 228
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 1
Number of Lagrangian Hessian evaluations             = 226
Total CPU secs in IPOPT (w/o function evaluations)   =   3403.326
Total CPU secs in NLP function evaluations           =    214.977

EXIT: Optimal Solution Found.


.... the timing is ok at this resolution, but at higher ones, the linear solves become quite large and extremely slow. So I guess my question is: can I expect something like this (at a higher resolution, with ~500 000 parameters) to take a couple of days to solve or are there any settings I could tweak to increase convergence / reduce the number if iterations needed. The initial guesses are quite good actually btw, and a local optimum is actually all I'm looking for.

• Not ipopt, but "solve it at increasingly finer scales" sounds like the multigrid method. Would smoothing high frequencies make sense for your problem ? See PyAMG. – denis Feb 22 at 15:18