00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "Optima.hh"
00027 #include <limits.h>
00028
00029 static const char* myNameIs = "Abstract Optima";
00030
00031 Optima::Optima(){
00032 residue = new List<double>;
00033 isVerbose = 0;
00034 isSuccess = 0;
00035 fp = NULL;
00036 tol = 0.;
00037 iterMax = 1000;
00038 }
00039
00040 Optima::Optima(int verbose){
00041 residue = new List<double>;
00042 isVerbose = verbose;
00043 isSuccess = 0;
00044 fp = NULL;
00045 tol = 0.;
00046 iterMax = 1000;
00047 }
00048
00049 Optima::~Optima() {
00050 delete residue;
00051 if (fp != NULL) fp = NULL;
00052 }
00053
00054 int Optima::ifSuccess() {return isSuccess;}
00055 double Optima::finalResidue() {return residue->last();}
00056 double Optima::firstResidue() {return residue->first();}
00057 List<double> Optima::allResidue() {return *residue;}
00058 List<double> Optima::normResidue() {return residue->normalize();}
00059 int Optima::numIterations() {return fp->iterations();}
00060 const char* Optima::objName() {return fp->className();}
00061 const char* Optima::optName() {return myNameIs;}
00062
00063 List<double> Optima::appendResidue(double res)
00064 {
00065 (*residue) += res;
00066 return residue[0];
00067 }