chiark / gitweb /
remove Rowan's original subplex (non-free) from source, document sbplx and neldermead
authorstevenj <stevenj@alum.mit.edu>
Mon, 10 Nov 2008 22:40:44 +0000 (17:40 -0500)
committerstevenj <stevenj@alum.mit.edu>
Mon, 10 Nov 2008 22:40:44 +0000 (17:40 -0500)
darcs-hash:20081110224044-c8de0-9cb8a9dbebf2e7d1da9e5979c72018d9afd932e2.gz

31 files changed:
Makefile.am
api/Makefile.am
api/nlopt.c
api/nlopt.h
api/nlopt_minimize.3
api/nlopt_minimize_constrained.3
neldermead/README
octave/Makefile.am
octave/NLOPT_GD_MLSL.m
octave/NLOPT_GD_MLSL_LDS.m
octave/NLOPT_GD_STOGO.m
octave/NLOPT_GD_STOGO_RAND.m
octave/NLOPT_GN_CRS2_LM.m
octave/NLOPT_GN_MLSL.m
octave/NLOPT_GN_MLSL_LDS.m
octave/NLOPT_LD_LBFGS.m
octave/NLOPT_LD_LBFGS_NOCEDAL.m
octave/NLOPT_LD_MMA.m
octave/NLOPT_LD_TNEWTON.m
octave/NLOPT_LD_TNEWTON_PRECOND.m
octave/NLOPT_LD_TNEWTON_PRECOND_RESTART.m
octave/NLOPT_LD_TNEWTON_RESTART.m
octave/NLOPT_LD_VAR1.m
octave/NLOPT_LD_VAR2.m
octave/NLOPT_LN_COBYLA.m
octave/NLOPT_LN_NELDERMEAD.m [new file with mode: 0644]
octave/NLOPT_LN_NEWUOA.m
octave/NLOPT_LN_NEWUOA_BOUND.m
octave/NLOPT_LN_PRAXIS.m
octave/NLOPT_LN_SBPLX.m [new file with mode: 0644]
octave/NLOPT_LN_SUBPLEX.m [deleted file]

index 52c438aa45b8270365ab086a2691b55ed8d56a7e..17cab5583ca640bd3014f67e3049a86e5bde3c24 100644 (file)
@@ -8,7 +8,7 @@ CXX_DIRS = stogo
 CXX_LIBS = stogo/libstogo.la
 endif
 
-SUBDIRS= util subplex direct cdirect $(CXX_DIRS) praxis luksan crs mlsl mma cobyla newuoa lbfgs neldermead api . octave test
+SUBDIRS= util direct cdirect $(CXX_DIRS) praxis luksan crs mlsl mma cobyla newuoa lbfgs neldermead api . octave test
 EXTRA_DIST=COPYRIGHT autogen.sh nlopt.pc.in m4
 
 if WITH_NOCEDAL
@@ -16,7 +16,7 @@ NOCEDAL_LBFGS=lbfgs/liblbfgs.la
 endif
 
 libnlopt@NLOPT_SUFFIX@_la_SOURCES = 
-libnlopt@NLOPT_SUFFIX@_la_LIBADD = subplex/libsubplex.la               \
+libnlopt@NLOPT_SUFFIX@_la_LIBADD = \
 direct/libdirect.la cdirect/libcdirect.la $(CXX_LIBS)                  \
 praxis/libpraxis.la $(NOCEDAL_LBFGS) luksan/libluksan.la crs/libcrs.la \
 mlsl/libmlsl.la mma/libmma.la cobyla/libcobyla.la newuoa/libnewuoa.la neldermead/libneldermead.la api/libapi.la util/libutil.la
index 87543021139fbbe8e21e6ec5aaf5e0908afc0416..2e1767883123c0a810f24cbba9d8e08b82c28ebb 100644 (file)
@@ -1,4 +1,4 @@
-AM_CPPFLAGS = -I$(top_srcdir)/cdirect -I$(top_srcdir)/direct -I$(top_srcdir)/stogo -I$(top_srcdir)/subplex -I$(top_srcdir)/praxis -I$(top_srcdir)/lbfgs -I$(top_srcdir)/luksan -I$(top_srcdir)/crs -I$(top_srcdir)/mlsl -I$(top_srcdir)/mma -I$(top_srcdir)/cobyla -I$(top_srcdir)/newuoa -I$(top_srcdir)/neldermead -I$(top_srcdir)/util
+AM_CPPFLAGS = -I$(top_srcdir)/cdirect -I$(top_srcdir)/direct -I$(top_srcdir)/stogo -I$(top_srcdir)/praxis -I$(top_srcdir)/lbfgs -I$(top_srcdir)/luksan -I$(top_srcdir)/crs -I$(top_srcdir)/mlsl -I$(top_srcdir)/mma -I$(top_srcdir)/cobyla -I$(top_srcdir)/newuoa -I$(top_srcdir)/neldermead -I$(top_srcdir)/util
 
 include_HEADERS = nlopt.h nlopt.f
 noinst_LTLIBRARIES = libapi.la
index bc191e5f2be545f752f028302427afd637f57143..3fce22410de03546784fe57ff3e6a8c157c61849 100644 (file)
@@ -72,7 +72,6 @@ static const char nlopt_algorithm_names[NLOPT_NUM_ALGORITHMS][256] = {
      "Unscaled Randomized DIRECT-L (global, no-derivative)",
      "Original DIRECT version (global, no-derivative)",
      "Original DIRECT-L version (global, no-derivative)",
-     "Subplex (local, no-derivative)",
 #ifdef WITH_CXX
      "StoGO (global, derivative-based)",
      "StoGO with randomized search (global, derivative-based)",
@@ -171,16 +170,15 @@ typedef struct {
      const double *lb, *ub;
 } nlopt_data;
 
-#include "subplex.h"
 #include "praxis.h"
 
-static double f_subplex(int n, const double *x, void *data_)
+static double f_bound(int n, const double *x, void *data_)
 {
      int i;
      nlopt_data *data = (nlopt_data *) data_;
      double f;
 
-     /* subplex does not support bound constraints, but it supports
+     /* some methods do not support bound constraints, but support
        discontinuous objectives so we can just return Inf for invalid x */
      for (i = 0; i < n; ++i)
          if (x[i] < data->lb[i] || x[i] > data->ub[i])
@@ -379,13 +377,16 @@ static nlopt_result nlopt_minimize_(
              return NLOPT_FAILURE;
 #endif
 
+#if 0
+             /* lacking a free/open-source license, we no longer use
+                Rowan's code, and instead use by "sbplx" re-implementation */
         case NLOPT_LN_SUBPLEX: {
              int iret;
              double *scale = (double *) malloc(sizeof(double) * n);
              if (!scale) return NLOPT_OUT_OF_MEMORY;
              for (i = 0; i < n; ++i)
                   scale[i] = initial_step(1, lb+i, ub+i, x+i);
-             iret = nlopt_subplex(f_subplex, minf, x, n, &d, &stop, scale);
+             iret = nlopt_subplex(f_bound, minf, x, n, &d, &stop, scale);
              free(scale);
              switch (iret) {
                  case -2: return NLOPT_INVALID_ARGS;
@@ -400,10 +401,11 @@ static nlopt_result nlopt_minimize_(
              }
              break;
         }
+#endif
 
         case NLOPT_LN_PRAXIS:
              return praxis_(0.0, DBL_EPSILON, 
-                            initial_step(n, lb, ub, x), n, x, f_subplex, &d,
+                            initial_step(n, lb, ub, x), n, x, f_bound, &d,
                             &stop, minf);
 
 #ifdef WITH_NOCEDAL
index 88d4578f5fb9fbadd4aacf911450afbd0a5f05b8..46670d6af09e3394d7a8c8ca524e3a981d310498 100644 (file)
@@ -57,8 +57,6 @@ typedef enum {
      NLOPT_GN_ORIG_DIRECT,
      NLOPT_GN_ORIG_DIRECT_L,
 
-     NLOPT_LN_SUBPLEX,
-
      NLOPT_GD_STOGO,
      NLOPT_GD_STOGO_RAND,
 
index b257003698ac760148036f59b1a6a048471a326b..6cbefecc76447e01a8935388145c47f132a25cf4 100644 (file)
@@ -241,20 +241,28 @@ algorithms are only available if NLopt is compiled with C++ enabled,
 and should be linked via -lnlopt_cxx (via a C++ compiler, in order
 to link the C++ standard libraries).
 .TP 
-.B NLOPT_LN_SUBPLEX
+.B NLOPT_LN_NELDERMEAD
 Perform a local (L) derivative-free (N) optimization, starting at
 .IR x ,
-using the Subplex algorithm of Rowan et al., which is an improved
-variant of Nelder-Mead simplex algorithm.  (Like Nelder-Mead, Subplex
-often works well in practice, even for discontinuous objectives, but
-there is no rigorous guarantee that it will converge.)  Subplex is
-best for unconstrained optimization, but constrained optimization also
-works (both for simple bound constraints via
-.I lb
-and
-.I ub
-as well as nonlinear constraints via the crude technique of returning
-+Inf when the constraints are violated, as explained above).
+using the Nelder-Mead simplex algorithm, modified to support bound
+constraints.  Nelder-Mead, while popular, is known to occasionally
+fail to converge for some objective functions, so it should be
+used with caution.  Anecdotal evidence, on the other hand, suggests
+that it works fairly well for discontinuous objectives.  See also
+.B NLOPT_LN_SBPLX
+below.
+.TP 
+.B NLOPT_LN_SBPLX
+Perform a local (L) derivative-free (N) optimization, starting at
+.IR x ,
+using an algorithm based on the Subplex algorithm of Rowan et al.,
+which is an improved variant of Nelder-Mead (above).  Our
+implementation does not use Rowan's original code, and has some minor
+modifications such as explicit support for bound constraints.  (Like
+Nelder-Mead, Subplex often works well in practice, even for
+discontinuous objectives, but there is no rigorous guarantee that it
+will converge.)  Nonlinear constraints can be crudely supported
+by returning +Inf when the constraints are violated, as explained above.
 .TP
 .B NLOPT_LN_PRAXIS
 Local (L) derivative-free (N) optimization using the principal-axis
index b025d246570b6bf98291a79c116586ab7a04e69b..ad49ac457bc098095fb5510f794854deb6a5db01 100644 (file)
@@ -343,20 +343,28 @@ algorithms are only available if NLopt is compiled with C++ enabled,
 and should be linked via -lnlopt_cxx (via a C++ compiler, in order
 to link the C++ standard libraries).
 .TP 
-.B NLOPT_LN_SUBPLEX
+.B NLOPT_LN_NELDERMEAD
 Perform a local (L) derivative-free (N) optimization, starting at
 .IR x ,
-using the Subplex algorithm of Rowan et al., which is an improved
-variant of Nelder-Mead simplex algorithm.  (Like Nelder-Mead, Subplex
-often works well in practice, even for discontinuous objectives, but
-there is no rigorous guarantee that it will converge.)  Subplex is
-best for unconstrained optimization, but constrained optimization also
-works (both for simple bound constraints via
-.I lb
-and
-.I ub
-as well as nonlinear constraints via the crude technique of returning
-+Inf when the constraints are violated, as explained above).
+using the Nelder-Mead simplex algorithm, modified to support bound
+constraints.  Nelder-Mead, while popular, is known to occasionally
+fail to converge for some objective functions, so it should be
+used with caution.  Anecdotal evidence, on the other hand, suggests
+that it works fairly well for discontinuous objectives.  See also
+.B NLOPT_LN_SBPLX
+below.
+.TP 
+.B NLOPT_LN_SBPLX
+Perform a local (L) derivative-free (N) optimization, starting at
+.IR x ,
+using an algorithm based on the Subplex algorithm of Rowan et al.,
+which is an improved variant of Nelder-Mead (above).  Our
+implementation does not use Rowan's original code, and has some minor
+modifications such as explicit support for bound constraints.  (Like
+Nelder-Mead, Subplex often works well in practice, even for
+discontinuous objectives, but there is no rigorous guarantee that it
+will converge.)  Nonlinear constraints can be crudely supported
+by returning +Inf when the constraints are violated, as explained above.
 .TP
 .B NLOPT_LN_PRAXIS
 Local (L) derivative-free (N) optimization using the principal-axis
index 6d71e9ac36d83863f41cd07a4f2ba0443c7f5d7b..bcabe3031b49afab3fa677889b7aa942e1cf3e4a 100644 (file)
@@ -1,49 +1,97 @@
-Nelder-Mead and variations thereof.  Possibly the algorithms:
+This directory contains Nelder-Mead and variations thereof.  
 
------------------
+Currently, we implement two algorithms.
 
-First, the original Nelder-Mead algorithm.
+-----------------------------------------------------------------------
 
------------------
+First, (almost) the original Nelder-Mead simplex algorithm
+(NLOPT_LN_NELDERMEAD), as described in:
 
-Second, the provably convergent variant of Nelder-Mead described in:
+       J. A. Nelder and R. Mead, "A simplex method for function
+       minimization," The Computer Journal 7, p. 308-313 (1965).
 
-       C. J. Price, I. D. Coope, and D. Byatt, "A convergent variant
-       of the Nelder-Mead algorithm," J. Optim. Theory Appl. 113 (1),
-       p. 5-19 (2002).
+This method is simple and has demonstrated enduring popularity,
+despite the later discovery that it fails to converge at all for some
+functions.  Anecdotal evidence suggests that it often performs well
+even for noisy and/or discontinuous objective functions.  I would tend
+to recommend the Subplex method (below) instead, however.
 
-And/or possibly the (claimed superior) one in:
-       
-       A. Burmen, J. Puhan, and T. Tuma, "Grid restrained Nelder-Mead
-       algorithm," Computational Optim. Appl. 34(3), 359-375 (2006).
+The main variation is that I implemented explicit support for bound
+constraints, using essentially the method described in:
 
------------------
+       J. A. Richardson and J. L. Kuester, "The complex method for
+       constrained optimization," Commun. ACM 16(8), 487-489 (1973).
 
-My own independent implemention of Tom Rowan's Subplex algorithm (a
-more-efficient variant of Nelder-Mead simplex), which was described at:
+Whenever a new point would lie outside the bound constraints,
+Richardson and Kuester advocate moving it "just inside" the
+constraints.  I couldn't see any advantage to using a fixed distance
+inside the constraints, especially if the optimum is on the
+constraint, so instead I move the point exactly onto the constraint in
+that case.
 
-     http://www.netlib.org/opt/subplex.tgz
+The danger with implementing bound constraints in this way (or by
+Richardson and Kuester's method) is that you may collapse the simplex
+into a lower-dimensional subspace.  I'm not aware of a better way,
+however.  In any case, this collapse of the simplex is ameliorated by
+restarting, such as when Nelder-Mead is used within the Subplex
+algorithm below.
+
+-----------------------------------------------------------------------
+
+Second, I re-implemented Tom Rowan's "Subplex" algorithm.  As Rowan
+expressed a preference that other implementations of his algorithm use
+a different name, I called my implementation "Sbplx" (NLOPT_LN_SBPLX).
+Subplex (a variant of Nelder-Mead that uses Nelder-Mead on a sequence
+of subspaces) is claimed to be much more efficient and robust than the
+original Nelder-Mead, while retaining the latter's facility with
+discontinuous objectives, and in my experience these claims seem to be
+true.  (However, I'm not aware of any proof that Subplex is globally
+convergent, and may fail for some objectives like Nelder-Mead; YMMV.)
+
+I used the description of Rowan's algorithm in his PhD thesis:
 
      T. Rowan, "Functional Stability Analysis of Numerical Algorithms",
      Ph.D. thesis, Department of Computer Sciences, University of Texas
      at Austin, 1990.
 
-I would have liked to use Rowan's original implementation, but its
-legal status is unfortunately unclear.  Rowan didn't include any
-license statement at all with the original code, which makes it
-technically illegal to redistribute.  I contacted Rowan about getting
-a clear open-source/free-software license for it, and he was very
-agreeable, but he said he had to think about the specific license
-choice and would get back to me.  Unfortunately, a year later I still
-haven't heard from him, and his old email address no longer seems to
-work, so I don't know how to contact him for permission.
-
-Although I now have other derivative-free optimization routines in
-NLopt, the subplex algorithm is nice to have because it is somewhat
-tolerant of discontinuous and/or noisy objectives, which may make it a
-good choice for some problems.
-
-Tom Rowan expressed a preference that modified versions of his code
-use a different name from "subplex".  Since this is a complete
-from-scratch re-implementation, I figured that he would want a
-different name too, so I am calling it "sbplx".
+I would have preferred to use Rowan's original implementation, posted
+by him on Netlib:
+
+     http://www.netlib.org/opt/subplex.tgz
+
+Unfortunately, the legality of redistributing or modifying this code
+is unclear.  Rowan didn't include any license statement at all with
+the original code, which makes it technically illegal to redistribute.
+I contacted Rowan about getting a clear open-source/free-software
+license for it, and he was very agreeable, but he said he had to think
+about the specific license choice and would get back to me.
+Unfortunately, a year later I still haven't heard from him, and his
+old email address no longer seems to work, so I don't know how to
+contact him for permission.
+
+Since the algorithm is not too complicated, however, I just rewrote
+it.  There seem to be slight differences between the behavior of my
+implementation and his (probably due to different choices of initial
+subspace and other slight variations, where his paper was ambiguous),
+but the number of iterations to converge on my test problems seems to
+be quite close (within 10% for most problems).
+
+The only major difference between my implementation and Rowan's, as
+far as I can tell, is that I implemented explicit support for bound
+constraints (via the method in the Richardson and Kuester paper cited
+above).  This seems to be a big improvement in the case where the
+optimum lies against one of the constraints.
+
+-----------------------------------------------------------------------
+
+Future possibilities:
+
+       C. J. Price, I. D. Coope, and D. Byatt, "A convergent variant
+       of the Nelder-Mead algorithm," J. Optim. Theory Appl. 113 (1),
+       p. 5-19 (2002).
+
+       A. Burmen, J. Puhan, and T. Tuma, "Grid restrained Nelder-Mead
+       algorithm," Computational Optim. Appl. 34(3), 359-375 (2006).
+
+Both of these are provably convergent variations of Nelder-Mead; the
+latter authors claim that theirs is superior.
index 37a78c60b99c2f0b657b569250ce55546642ffcd..a3b76e63f8a2068b6073d0963e871d9ad1c7c00f 100644 (file)
@@ -1,6 +1,6 @@
 AM_CPPFLAGS = -I$(top_srcdir)/api 
 
-MFILES = NLOPT_GN_DIRECT.m NLOPT_GN_DIRECT_L.m NLOPT_GN_DIRECT_L_RAND.m NLOPT_GN_DIRECT_NOSCAL.m NLOPT_GN_DIRECT_L_NOSCAL.m NLOPT_GN_DIRECT_L_RAND_NOSCAL.m NLOPT_GN_ORIG_DIRECT.m NLOPT_GN_ORIG_DIRECT_L.m NLOPT_LN_SUBPLEX.m NLOPT_GD_STOGO.m NLOPT_GD_STOGO_RAND.m NLOPT_LD_LBFGS_NOCEDAL.m NLOPT_LD_LBFGS.m NLOPT_LN_PRAXIS.m NLOPT_LD_VAR1.m NLOPT_LD_VAR2.m NLOPT_LD_TNEWTON.m NLOPT_LD_TNEWTON_RESTART.m NLOPT_LD_TNEWTON_PRECOND.m NLOPT_LD_TNEWTON_PRECOND_RESTART.m NLOPT_GN_CRS2_LM.m NLOPT_GN_MLSL.m NLOPT_GD_MLSL.m NLOPT_GN_MLSL_LDS.m NLOPT_GD_MLSL_LDS.m NLOPT_LD_MMA.m NLOPT_LN_COBYLA.m NLOPT_LN_NEWUOA.m NLOPT_LN_NEWUOA_BOUND.m 
+MFILES = NLOPT_GN_DIRECT.m NLOPT_GN_DIRECT_L.m NLOPT_GN_DIRECT_L_RAND.m NLOPT_GN_DIRECT_NOSCAL.m NLOPT_GN_DIRECT_L_NOSCAL.m NLOPT_GN_DIRECT_L_RAND_NOSCAL.m NLOPT_GN_ORIG_DIRECT.m NLOPT_GN_ORIG_DIRECT_L.m NLOPT_GD_STOGO.m NLOPT_GD_STOGO_RAND.m NLOPT_LD_LBFGS_NOCEDAL.m NLOPT_LD_LBFGS.m NLOPT_LN_PRAXIS.m NLOPT_LD_VAR1.m NLOPT_LD_VAR2.m NLOPT_LD_TNEWTON.m NLOPT_LD_TNEWTON_RESTART.m NLOPT_LD_TNEWTON_PRECOND.m NLOPT_LD_TNEWTON_PRECOND_RESTART.m NLOPT_GN_CRS2_LM.m NLOPT_GN_MLSL.m NLOPT_GD_MLSL.m NLOPT_GN_MLSL_LDS.m NLOPT_GD_MLSL_LDS.m NLOPT_LD_MMA.m NLOPT_LN_COBYLA.m NLOPT_LN_NEWUOA.m NLOPT_LN_NEWUOA_BOUND.m NLOPT_LN_NELDERMEAD.m NLOPT_LN_SBPLX.m 
 
 #######################################################################
 octdir = $(OCT_INSTALL_DIR)
index 59ec35d2fae2033869b691f6fa9317c754056097..9cc25eadb637a9c877090b214f2edb5d5579339e 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_GD_MLSL
-  val = 22;
+  val = 21;
index ffb623366a8590cfb218994ffb51cac52319ac57..73c1ef194b3afebb78c697eed1b236f1c5eabc60 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_GD_MLSL_LDS
-  val = 24;
+  val = 23;
index 67575c09dc17c7fffca553917506cb86761fdb76..22ce83c9cfef1602b4a559e5d3a45417b55e131e 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_GD_STOGO
-  val = 9;
+  val = 8;
index decd945794d5b07146e38f88fe6e59e8dc18237e..12e8a37937fa5223ae702f63e8fd199b49c7b93c 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_GD_STOGO_RAND
-  val = 10;
+  val = 9;
index 54751510df083f34617725f00d2a235a8917059a..bde02d1429b7dca95cac2d9371fef4b8875606ed 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_GN_CRS2_LM
-  val = 20;
+  val = 19;
index d1fb6b67a552903c104d97a1d91de94e1efb7229..4642de00eae8e4f9419b4555b70ac169f2aba707 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_GN_MLSL
-  val = 21;
+  val = 20;
index 567d2864e50731aa5e6b0b11ab4b1921bc4f8cd5..bdde5ba23dc61a9b136008061d08e8085e75bc90 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_GN_MLSL_LDS
-  val = 23;
+  val = 22;
index a926f7bdf193c5b08633bd3ed9aec8470bec368b..5c52378eac1c98c0319b60198b8503162072940a 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_LD_LBFGS
-  val = 12;
+  val = 11;
index b213556bd8ef401815b29cafa26be2008b95fa60..f20c00a6805d54c683f5c29e9d4c2465a010d290 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_LD_LBFGS_NOCEDAL
-  val = 11;
+  val = 10;
index 66585baecd4323242695eceaa39ef52bd3a9a9fe..a7b3ca656833aa258c8249ff86fa5d68adae2bd5 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_LD_MMA
-  val = 25;
+  val = 24;
index 554b269d788043c3d84175a1c4c0b38847f959fb..60fb2d7873ef5721b869a1227bfd1779d747e9be 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_LD_TNEWTON
-  val = 16;
+  val = 15;
index 1a3ed4d347d73115bf3031fb81a80e67f82f749c..ab424792d9029eddb8a5bf390de83ec31ab22cf7 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_LD_TNEWTON_PRECOND
-  val = 18;
+  val = 17;
index b89ac1be98693a95af0a2500b5c27e25f17ed680..d1e42f75f5dafba849fd972a920f857d88100ef0 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_LD_TNEWTON_PRECOND_RESTART
-  val = 19;
+  val = 18;
index 059b140aa6ec9b3fc37296ba3d170735cd4a7a6f..7ef9d755b243476e079098f34216d365ae40f68d 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_LD_TNEWTON_RESTART
-  val = 17;
+  val = 16;
index 04ffbcbda497b4b823023323aaa940ad1ebd1cfd..0385562c670d3d417ebcd17311f371787a688500 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_LD_VAR1
-  val = 14;
+  val = 13;
index f85ad62cdb21d1f0a22ca4822364e0bb3203a05d..fd9c229196106512f3ba71c1936eeb2e9f5ab92a 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_LD_VAR2
-  val = 15;
+  val = 14;
index 7fcc4f020de9049f5377b6c153744ab3b6088ab4..418f0e6de7687cb91c3b8d71fdc5bd9f4ddfbe87 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_LN_COBYLA
-  val = 26;
+  val = 25;
diff --git a/octave/NLOPT_LN_NELDERMEAD.m b/octave/NLOPT_LN_NELDERMEAD.m
new file mode 100644 (file)
index 0000000..9297a9c
--- /dev/null
@@ -0,0 +1,5 @@
+% NLOPT_LN_NELDERMEAD: Nelder-Mead simplex algorithm (local, no-derivative)
+%
+% See nlopt_minimize for more information.
+function val = NLOPT_LN_NELDERMEAD
+  val = 28;
index 8f5dbcdb4537d763d844f5614f9880ecb72ef78f..a4b2b9ecffd260e5ade595db0f83763daa140672 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_LN_NEWUOA
-  val = 27;
+  val = 26;
index ef0ca34c869918ace3e1b5e46744f1c633c5f41f..44591f1c84309ffa711d178d5876a8da29a6d6e8 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_LN_NEWUOA_BOUND
-  val = 28;
+  val = 27;
index ba3cf6a67b6de8d052c55cfc4a5deae280878640..c768caeddb1b11830e4505ca4e7a1a1549a0198e 100644 (file)
@@ -2,4 +2,4 @@
 %
 % See nlopt_minimize for more information.
 function val = NLOPT_LN_PRAXIS
-  val = 13;
+  val = 12;
diff --git a/octave/NLOPT_LN_SBPLX.m b/octave/NLOPT_LN_SBPLX.m
new file mode 100644 (file)
index 0000000..a1f04df
--- /dev/null
@@ -0,0 +1,5 @@
+% NLOPT_LN_SBPLX: Sbplx variant of Nelder-Mead (re-implementation of Rowan's Subplex) (local, no-derivative)
+%
+% See nlopt_minimize for more information.
+function val = NLOPT_LN_SBPLX
+  val = 29;
diff --git a/octave/NLOPT_LN_SUBPLEX.m b/octave/NLOPT_LN_SUBPLEX.m
deleted file mode 100644 (file)
index 10f0b5b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-% NLOPT_LN_SUBPLEX: Subplex (local, no-derivative)
-%
-% See nlopt_minimize for more information.
-function val = NLOPT_LN_SUBPLEX
-  val = 8;