testmisfit.cpp

Go to the documentation of this file.
00001 #include "CTestMisfit.h"
00002 #include "CVariableMetric.h"
00003 #include "CSimpleLineSearch.h"
00004 #include <iostream>
00005 #include <vector>
00006 #include <fstream>
00007 
00008 using namespace std;
00009 namespace ublas = boost::numeric::ublas;
00010 int main()
00011 {
00012         const int ndata = 1;
00013         const int nmodel = 2;
00014         const int maxit = 100;
00015         
00016         ofstream ModelFile("models.out");
00017         CTestMisfit MyMisfit;
00018         CSimpleLineSearch LineSearch;
00019         CVariableMetric Minimizer(ndata,nmodel);
00020         ublas::vector<double> StartData(ndata);
00021         ublas::vector<double> StartModel(nmodel);
00022         cout << "Start X: ";
00023         cin >> StartModel(0);
00024         cout << "Start Y: ";
00025         cin >> StartModel(1);
00026         ublas::matrix<double> DataCov(ndata,ndata);
00027         ublas::matrix<double> ModelCov(nmodel,nmodel);
00028         DataCov(0,0) = 1;
00029         ModelCov(1,1) = 1;
00030         ModelCov(0,0) = 1;
00031         Minimizer.InputData = StartData;
00032         Minimizer.StartModel = StartModel;
00033         Minimizer.MisfitCalculator = &(MyMisfit);
00034         LineSearch.MisfitCalculator = &(MyMisfit);
00035         Minimizer.LineSearch = &LineSearch;
00036         
00037         Minimizer.DataCovar.assign(DataCov);
00038         Minimizer.ModelCovar.assign(ModelCov);
00039         Minimizer.Prepare();
00040         for (int j = 0; j < Minimizer.CurrentModel.size(); ++j)
00041                         ModelFile << Minimizer.CurrentModel(j) << " ";
00042         ModelFile << endl;
00043         try
00044         {
00045                 for (int i = 0; i < maxit; ++i)
00046                 {
00047                         Minimizer.DoIteration();
00048                         for (int j = 0; j < Minimizer.CurrentModel.size(); ++j)
00049                                 ModelFile << Minimizer.CurrentModel(j) << " ";
00050                         ModelFile << endl;
00051                 }
00052         }
00053         catch (const exception& e)
00054         {
00055                 cerr << "Code has converged !" << endl;
00056                 cerr << e.what() << endl;
00057                 for (int j = 0; j < Minimizer.CurrentModel.size(); ++j)
00058                                 ModelFile << Minimizer.CurrentModel(j) << " ";
00059                 ModelFile << endl;
00060         }
00061         
00062 }

Generated on Fri Jul 4 15:30:21 2008 for GPLIB++ by  doxygen 1.5.5