proj home

Files   Classes   Functions   Hierarchy  

explorelinetest.cpp File Reference

#include <iostream>
#include <cmath>
#include <iomanip>
#include <commandline.h>
#include <exploreh.h>
#include <exploreline.h>
#include <explorelinetest.h>
#include <explorequad.h>
#include <lineoptimizergold.h>
#include <print.h>
#include <probparab.h>
#include <probsysequ01.h>

Include dependency graph for explorelinetest.cpp:

Go to the source code of this file.

Functions

void explorelinetest01 (int argc, char **argv)
void explorelinetest02 (int argc, char **argv)
void explorelinetest03 (int argc, char **argv)


Function Documentation

void explorelinetest01 ( int  argc,
char **  argv 
)

Definition at line 18 of file explorelinetest.cpp.

References exploreline< EXP, LNM >::linet0, exploreline< EXP, LNM >::linet1, commandline::mapvar(), and exploreline< EXP, LNM >::reset().

Referenced by main().

00019 {
00020   cout << "explore and golden ratio line search" << endl;
00021   cout << "  k=3 lineiter=10 are defaults." << endl;
00022 
00023 
00024   typedef exploreh<probparab2,double*,double> exp2;
00025   typedef lineoptimizergold<probparab2&,double*,double*,double> lnmin;
00026 
00027   commandline cmd(argc,argv);
00028   uint lineiter(10);
00029   cmd.mapvar(lineiter,"lineiter");
00030   uint k(3);
00031   cmd.mapvar(k,"k");
00032 
00033   exploreline< exp2, lnmin > w(3,lineiter);
00034 
00035   cmd.mapvar(w.linet0,"t0");
00036   cmd.mapvar(w.linet1,"t1");
00037 
00038   double x0[3] = { 0.0, 0.0, 0.0 };
00039   w.reset(x0);
00040   //cout << printvecfunc(w.xi,3) << endl;
00041 
00042   for (uint i=0; i<k; ++i)
00043   {
00044     ++w;
00045   }
00046 
00047   double dist=0.0;
00048   dist = abs(w.xi[0]-1.0) + abs(w.xi[1]-2.0) + abs(w.xi[2]-5.0);
00049 
00050   cout << "Compare with true solution" << endl;
00051   cout << "fn-count, k, lineiter, distance" << endl;
00052   cout << w.fn.counter << "  ";
00053   cout << k << "  ";
00054   cout << lineiter << "  ";
00055   cout << scientific << dist << endl;
00056 
00057 
00058   //uintc imax=5;
00059   //for (uint i=0; i<imax; ++i)
00060   //  ++w;
00061   //cout << printvecfunc(w.xi,3) << endl;
00062 
00063 }

void explorelinetest02 ( int  argc,
char **  argv 
)

Definition at line 66 of file explorelinetest.cpp.

References exploreline< EXP, LNM >::linet0, exploreline< EXP, LNM >::linet1, commandline::mapvar(), and exploreline< EXP, LNM >::reset().

Referenced by main().

00067 {
00068   cout << "exploreh with quad and golden ratio line search" << endl;
00069   cout << "  k=3 lineiter=10 are defaults." << endl;
00070 
00071 
00072   typedef explorequad< exploreh<probparab2,double*,double> > eh2;
00073 //  typedef exploreh<probparab2,double*,double> exp2;
00074   typedef lineoptimizergold<probparab2&,double*,double*,double> lnmin;
00075 
00076   commandline cmd(argc,argv);
00077   uint lineiter(10);
00078   cmd.mapvar(lineiter,"lineiter");
00079   uint k(3);
00080   cmd.mapvar(k,"k");
00081 
00082   exploreline< eh2, lnmin > w(3,lineiter);
00083 
00084   cmd.mapvar(w.linet0,"t0");
00085   cmd.mapvar(w.linet1,"t1");
00086 
00087   double x0[3] = { 0.0, 0.0, 0.0 };
00088   w.reset(x0);
00089   //cout << printvecfunc(w.xi,3) << endl;
00090 
00091   
00092   //w.move();
00093 
00094 
00095   for (uint i=0; i<k; ++i)
00096     ++w;
00097 
00098 
00099   double dist=0.0;
00100   dist = abs(w.xi[0]-1.0) + abs(w.xi[1]-2.0) + abs(w.xi[2]-5.0);
00101 
00102   cout << "Compare with true solution" << endl;
00103   cout << "fn-count, k, lineiter, distance" << endl;
00104   cout << w.fn.counter << "  ";
00105   cout << k << "  ";
00106   cout << lineiter << "  ";
00107   cout << scientific << dist << endl;
00108 }

void explorelinetest03 ( int  argc,
char **  argv 
)

Definition at line 113 of file explorelinetest.cpp.

References exploreline< EXP, LNM >::linet0, exploreline< EXP, LNM >::linet1, commandline::mapvar(), and exploreline< EXP, LNM >::reset().

Referenced by main().

00114 {
00115   cout << "explore and golden ratio line search" << endl;
00116   cout << "  k=3 lineiter=10 are defaults." << endl;
00117 
00118   typedef exploreh<probsysequ01,double*,double> exp2;
00119   typedef lineoptimizergold<probsysequ01&,double*,double*,double> lnmin;
00120 
00121   commandline cmd(argc,argv);
00122   uint lineiter(10);
00123   cmd.mapvar(lineiter,"lineiter");
00124   uint k(3);
00125   cmd.mapvar(k,"k");
00126 
00127   exploreline< exp2, lnmin > w(2,lineiter);
00128 
00129   cmd.mapvar(w.linet0,"t0");
00130   cmd.mapvar(w.linet1,"t1");
00131 
00132   double x0[2] = { 0.5, 0.5 };
00133   w.reset(x0);
00134 
00135   for (uint i=0; i<k; ++i)
00136   {
00137 //cout << printvecfunc(w.xi,2) << endl;
00138     ++w;
00139 //    cout << SHOW(w.fn.counter) << endl;
00140   }
00141 
00142   long double y0((long double)0.2);
00143   long double y1((long double)2.0/(long double)3.0);
00144   long double dist = (y0-w.xi[0])*(y0-w.xi[0]) + (y1-w.xi[1])*(y1-w.xi[1]);
00145 
00146   cout << "Compare with true solution" << endl;
00147   cout << "fn-count, k, lineiter, distance" << endl;
00148   cout << w.fn.counter << "  ";
00149   cout << k << "  ";
00150   cout << lineiter << "  ";
00151   cout << scientific << dist << endl;
00152 
00153 }


Generated on Fri Mar 4 00:49:44 2011 for Chelton Evans Source by  doxygen 1.5.8