octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: fmincon wrapping nonlin_min


From: Olaf Till
Subject: Re: fmincon wrapping nonlin_min
Date: Thu, 16 Jul 2015 17:21:39 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

On Wed, Jul 15, 2015 at 08:12:19PM +0100, Asma Afzal wrote:
> Hi Olaf,
> 
> > You can probably test this in the original fmincon by printing the
> > parameter argument and the returned values in the function for
> > non-linear equalitiy constraints (and maybe you can even set an option
> > to indicate the starts of itereations?). If the returned values for
> > non-linear equality constraints assume the value zero several times
> > before the final function calls, this indicates it's a feasible path
> > algorithm. If they get zero only in the last function calls, it's
> > probably different.
> 
> I ran a simple example with non-linear inequality constraints in Matlab:
> 
> objective_function = @ (p) p(1) ^ 2 + p(2) ^ 2;
> pin = [-2; 5];
> c = @(p) [];
> ceq = @ (p) p(1)^2 + 1 - p(2);
> nonlcon = @(p) deal (c (p), ceq (p));
> opts = optimset('Display', 'iter-detailed', 'Algorithm', 'interior-point')
> [p, objf, cvg, outp] = fmincon (objective_function,
> pin,[],[],[],[],[],[],nonlcon,opts)
> 
> *Interior-point:*
>                                                                First-order
>      Norm of
>  Iter   F-count            f(x)        Feasibility      optimality
> step
>     0       3   2.900000e+001   0.000e+000   1.035e+001
>     1       7   5.294118e-001   1.675e+000   9.135e-001   5.336e+000
>     2      10   1.687652e-001   1.234e+000   6.270e-001   1.116e+000
>     3      13   4.490516e-001   8.854e-001   1.929e+000   1.053e+000
>     4      16   3.751190e-001   4.062e-001   4.206e-001   6.686e-001
>     5      19   9.635641e-001   2.150e-002   2.611e-001   4.041e-001
>     6      22   9.939794e-001   3.202e-003   6.628e-002   5.890e-002
>     7      25   9.997458e-001   1.272e-004   7.593e-004   1.166e-002
>     8      28   1.000000e+000   1.618e-008   1.266e-005   1.798e-004
>     9      31   1.000000e+000   3.791e-013   1.043e-007   6.075e-007
> 
> Optimization completed: The relative first-order optimality measure,
> 5.215406e-008,
> is less than options.TolFun = 1.000000e-006, and the relative maximum
> constraint
> violation, 3.791412e-013, is less than options.TolCon = 1.000000e-006.
> 
> Optimization Metric                                         Options
> relative first-order optimality =  5.22e-008       TolFun =  1e-006
> (default)
> relative max(constraint violation) =  3.79e-013    TolCon =  1e-006
> (default)
> 
> *Active-set:*
>                                       Max       Line search  Directional
>  First-order
>  Iter F-count    f(x)        constraint   steplength   derivative
> optimality
>     0      3           29            0
> 
>     1      7     0.529412        1.675          0.5        -10.7
> 1.91
>     2     10      0.14227        1.171            1        -1.45
>  0.928
>     3     13     0.500415       0.8574            1       -0.696
> 1.78
>     4     17    0.0417358       0.9877          0.5        -1.39
>  0.674
>     5     22    0.0504856       0.8697         0.25       -0.351
> 1.06
>     6     30     0.139937       0.8609       0.0313        0.431
> 5.11
>     7     33     0.648881       0.2892            1      -0.0962
> 8.02
>     8     36      1.07827     0.004895            1         1.36
> 1.03
>     9     39      1.01786     0.005358            1       -0.872
>  0.558
>    10     42     0.979533      0.01031            1       -0.476
> 0.0237
>    11     45     0.999968   1.623e-005            1         1.84
> 0.000963
>    12     48            1       2.442e-009            1        0.624
>  3.36e-006
> 
> Optimization stopped because the norm of the current search direction,
> 5.599703e-007,
> is less than 2*options.TolX = 1.000000e-006, and the maximum constraint
> violation, 2.441955e-009, is less than options.TolCon = 1.000000e-006.
> 
> Optimization Metric                                               Options
> norm(search direction) =  5.60e-007                        TolX =  1e-006
> (default)
> max(constraint violation)  =  2.44e-009                  TolCon =  1e-006
> (default)
> 
> *Sqp:*
> 
> 
>    Norm of       First-order
>  Iter    F-count         f(x)         Feasibility  Steplength        step
>      optimality
>     0       3   2.900000e+001  0.000e+000  1.000e+000  0.000e+000
>  1.100e+001
>     1       7   5.084706e+000  3.282e+000  7.000e-001  7.470e+000
>  3.947e+000
>     2      10   9.892848e-001  8.048e-001  1.000e+000  3.078e+000
>  1.942e+000
>     3      13   1.683993e-001  5.991e-001  1.000e+000  8.274e-001
>  6.326e-001
>     4      16   9.968958e-001  2.108e-003  1.000e+000  5.949e-001
>  5.552e-001
>     5      21   9.965201e-001  1.856e-003  4.900e-001  2.795e-002
>  2.770e-001
>     6      24   9.998171e-001  9.269e-005  1.000e+000  9.774e-003
>  5.397e-003
>     7      27   9.999984e-001  8.099e-007  1.000e+000  9.046e-004
>  1.038e-005
>     8      30   1.000000e+000  1.560e-013  1.000e+000  8.981e-007
>  8.941e-008
> 
> Optimization completed: The relative first-order optimality measure,
> 4.470348e-008,
> is less than options.TolFun = 1.000000e-006, and the relative maximum
> constraint
> violation, 1.559863e-013, is less than options.TolCon = 1.000000e-006.
> 
> Optimization Metric                                         Options
> relative first-order optimality =  4.47e-008       TolFun =  1e-006
> (default)
> relative max(constraint violation) =  1.56e-013    TolCon =  1e-006
> (default)
> 
> For all the algorithms, the feasibility (constraint function) column meets
> the TolCon specification in the final few iterations so does this indicate
> a feasible path algorithm?

No, because the non-linear constraints are not satisfied after each
step. These algorithms rather seem similar to Octaves sqp with respect
to this. 'lm_feasible' does it differently.

Olaf

-- 
public key id EAFE0591, e.g. on x-hkp://pool.sks-keyservers.net

Attachment: signature.asc
Description: Digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]