Mercurial > hg > octave-lyh
changeset 1527:13d27938e778
[project @ 1995-10-05 01:44:18 by jwe]
Initial revision
author | jwe |
---|---|
date | Thu, 05 Oct 1995 01:44:18 +0000 |
parents | a250972027c4 |
children | dc527156c38c |
files | liboctave/base-min.h |
diffstat | 1 files changed, 128 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/liboctave/base-min.h @@ -0,0 +1,128 @@ +// base-min.h -*- C++ -*- +/* + +Copyright (C) 1995 John W. Eaton + +This file is part of Octave. + +Octave is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +Octave is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#if !defined (octave_base_min_h) +#define octave_base_min_h 1 + +#include "dColVector.h" + +class base_minimizer +{ + public: + + base_minimizer (void) : x () { } + + base_minimizer (const ColumnVector& xx) : x (xx) { } + + base_minimizer (const base_minimizer& a) { x = a.x; } + + virtual ~base_minimizer (void) { } + + base_minimizer& operator = (const base_minimizer& a) + { + x = a.x; + + return *this; + } + + // Derived classes must provide a function to actually do the + // minimization. + + virtual ColumnVector do_minimize (double& objf, int& inform, + ColumnVector& lambda) = 0; + + // Lots of ways to call the single function and optionally set and + // get additional information. + + virtual ColumnVector minimize (void) + { + double objf; + int inform; + Vector lambda; + return do_minimize (objf, inform, lambda); + } + + virtual ColumnVector minimize (double& objf) + { + int inform; + Vector lambda; + return do_minimize (objf, inform, lambda); + } + + virtual ColumnVector minimize (double& objf, int& inform) + { + Vector lambda; + return do_minimize (objf, inform, lambda); + } + + virtual ColumnVector minimize (double& objf, int& inform, + ColumnVector& lambda) + { + return do_minimize (objf, inform, lambda); + } + + virtual ColumnVector minimize (const ColumnVector& x0) + { + x = x0; + double objf; + int inform; + Vector lambda; + return do_minimize (objf, inform, lambda); + } + + virtual ColumnVector minimize (const ColumnVector& x0, double& objf) + { + x = x0; + int inform; + Vector lambda; + return do_minimize (objf, inform, lambda); + } + + virtual ColumnVector minimize (const ColumnVector& x0, double& objf, + int& inform) + { + x = x0; + Vector lambda; + return do_minimize (objf, inform, lambda); + } + + virtual ColumnVector minimize (const ColumnVector& x0, double& objf, + int& inform, ColumnVector& lambda) + { + x = x0; + return do_minimize (objf, inform, lambda); + } + +protected: + + ColumnVector x; +}; + +#endif + +/* +;;; Local Variables: *** +;;; mode: C++ *** +;;; page-delimiter: "^/\\*" *** +;;; End: *** +*/