diff options
Diffstat (limited to 'mgizapp/src/mkcls/Problem.h')
-rw-r--r-- | mgizapp/src/mkcls/Problem.h | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/mgizapp/src/mkcls/Problem.h b/mgizapp/src/mkcls/Problem.h new file mode 100644 index 0000000..337390e --- /dev/null +++ b/mgizapp/src/mkcls/Problem.h @@ -0,0 +1,159 @@ +/* + +Copyright (C) 1997,1998,1999,2000,2001 Franz Josef Och + +mkcls - a program for making word classes . + +This program 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 +of the License, or (at your option) any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +USA. + +*/ + + + + + + + +#ifndef PROBLEMCHANGE +#define PROBLEMCHANGE +#include <iostream> +#include "general.h" +#include "StatVar.h" + +class Optimization; + +class ProblemChange + +{ + public: + virtual ~ProblemChange(); + ProblemChange(); +}; + +class Problem { + + private: + short initialized; + int curCompVal; + short curCompChange; + int maxCompVal; + int maxComp; + + + protected: + int curComp; + + void setValuesFrom(Problem *p); + + virtual int maxDimensionVal(void) ; + + + virtual int maxDimension(void) ; + + + inline int curDimension(void) { assert(maxComp!=-1);return curComp;} + + + inline int curDimensionVal(void) { assert(maxComp!=-1);return curCompVal;} + + + + virtual void _doChange(ProblemChange &c)=0; + + + virtual int _change(ProblemChange **p)=0; + + + virtual void _undoChange(ProblemChange &c)=0; + + + virtual void _initialize(int initialisierung)=0; + + + virtual double _value()=0; + + + public: + Problem(int maxCompVal=-1,int maxComp=-1,int _initialisierung=0, + int _auswertung=0,int _nachbarschaft=0); + + virtual ~Problem(); + + + void doChange(ProblemChange &c); + + + ProblemChange& change(); + + + virtual double value(); + + + virtual double valueChange(ProblemChange &c); + + + virtual void initialize(int a= -23); + + + inline virtual short endCriterion(); + + + virtual int maxNonBetterIterations()=0; + + + virtual int expectedNumberOfIterations()=0; + + + virtual void dumpOn(ostream &strm); + + + virtual void dumpInfos(ostream &strm); + + + virtual Problem *makeEqualProblem()=0; + + + virtual double nicevalue(double vorher=1e100); + + + virtual StatVar& deviationStatVar(Optimization &s,int anz); + + + virtual void incrementDirection(); + + + + + + int initialisierung; + int auswertung; + int nachbarschaft; + + int numberOfFullEvaluations; + int numberOfPartEvaluations; + int numberOfDoChange; + + + +}; + +inline short Problem::endCriterion() +{ + return 0; +}; + +#endif + |