aboutsummaryrefslogtreecommitdiffstats
path: root/dynamical_fit
diff options
context:
space:
mode:
authorastrojhgu <astrojhgu@ed2142bd-67ad-457f-ba7c-d818d4011675>2010-04-04 09:36:15 +0000
committerastrojhgu <astrojhgu@ed2142bd-67ad-457f-ba7c-d818d4011675>2010-04-04 09:36:15 +0000
commitf017bfbcbd6a6af80e7d2ce7303572e80a42196f (patch)
treeb5bb6bcfd38674eb5e328dd2de5c18e4ebb0ff13 /dynamical_fit
parentb964925cbc2b24a3cd8c1d92e32d94b8520fd3b1 (diff)
downloadopt-utilities-f017bfbcbd6a6af80e7d2ce7303572e80a42196f.tar.bz2
git-svn-id: file:///home/svn/opt_utilities@112 ed2142bd-67ad-457f-ba7c-d818d4011675
Diffstat (limited to 'dynamical_fit')
-rw-r--r--dynamical_fit/dynamical_fit.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/dynamical_fit/dynamical_fit.cpp b/dynamical_fit/dynamical_fit.cpp
new file mode 100644
index 0000000..2ab33ce
--- /dev/null
+++ b/dynamical_fit/dynamical_fit.cpp
@@ -0,0 +1,63 @@
+#include <core/fitter.hpp>
+#include <interface/optdl.hpp>
+#include <misc/data_loaders.hpp>
+#include <sstream>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <methods/powell/powell_method.hpp>
+#include <statistics/chisq.hpp>
+#include <cstdlib>
+
+using namespace std;
+using namespace opt_utilities;
+
+
+int main(int argc,char* argv[])
+{
+ if(argc!=2)
+ {
+ cerr<<"Usage: "<<argv[0]<<" <config file>"<<endl;
+ exit(-1);
+ }
+ ifstream cfg_file(argv[1]);
+ fitter<double,double,std::vector<double>,double,std::string> fit;
+ fit.set_opt_method(powell_method<double,vector<double> >());
+ fit.set_statistic(chisq<double,double,vector<double>,double,string>());
+ std::string model_so_name;
+ cfg_file>>model_so_name;
+ cerr<<"loading model shared object "<<model_so_name<<endl;
+ fit.set_model(*load_model<double,double,vector<double>,string>(model_so_name.c_str()));
+
+ string data_file_name;
+ cfg_file>>data_file_name;
+ cerr<<"setting initializational values:"<<endl;
+ for(;;)
+ {
+ string p,v;
+ cfg_file>>p>>v;
+ if(!cfg_file.good())
+ {
+ break;
+ }
+ istringstream oss(v);
+
+ double dvp=0;
+ oss>>dvp;
+ cerr<<p<<"="<<dvp<<endl;
+ fit.set_param_value(p,dvp);
+ }
+ cfg_file.close();
+
+ ifstream data_file(data_file_name.c_str());
+
+ dl_x_xu_xl_y_yu_yl<double,double> dl;
+ dl.load_from(data_file);
+ data_file.close();
+
+ fit.load_data(dl.get_data_set());
+
+ vector<double> p=fit.fit();
+ cout<<p[0]<<"\t"<<p[1]<<endl;
+
+}