proj home

Files   Classes   Functions   Hierarchy  

main.cpp File Reference

#include <cassert>
#include <iostream>
#include <point.h>
#include <commandline.h>
#include <print.h>
#include <random.h>
#include <exploreh.h>
#include <probparab.h>
#include <probsysequ01.h>
#include <patternsearch.h>
#include <patternsearchD2.h>
#include <explorequad.h>
#include <explorerand.h>
#include <partialderivativetest.h>
#include <lineoptimizergoldtest.h>
#include <explorelinetest.h>
#include <explorepdtest.h>
#include <minimizecomparetest.h>
#include <exploretest.h>
#include <minexpdimtest.h>
#include <typedefs.h>

Include dependency graph for main.cpp:

Go to the source code of this file.

Typedefs

typedef point2< double > pt2

Functions

void test08 (int argc, char **argv)
void test09 (int argc, char **argv)
void test11 (int argc, char **argv)
int main (int argc, char **argv)


Typedef Documentation

typedef point2<double> pt2

Definition at line 32 of file main.cpp.


Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 234 of file main.cpp.

References explorelinetest01(), explorelinetest02(), explorelinetest03(), explorepdtest01(), explorepdtest02(), exploretest01(), exploretest02(), exploretest03(), exploretest04(), exploretest05(), exploretest06(), exploretest07(), exploretest08(), lineoptimizergoldtest01(), commandline::mapvar(), minimizecomparetest01(), minimizecomparetest02(), minimizecomparetest03(), partialderivativetest01(), minexpdimtest::test01(), minexpdimtest::test02(), minexpdimtest::test03(), minexpdimtest::test04(), minexpdimtest::test05(), test08(), and test09().

00235 {
00236   commandline cmd(argc,argv);
00237   uint prog(0);
00238   cmd.mapvar(prog,"prog");
00239 
00240   switch (prog)
00241   {
00242     case 0:
00243       cout << "Testing programs for pattern search optimization.";
00244       cout << endl << endl;
00245       cout << "$./main prog=1   - minimize a 3D parabola" << endl;
00246       cout << "$./main prog=2   - least squares fit of line segments" << endl;
00247       cout << "$./main prog=3   - solving a system of non linear equations" << endl;
00248       cout << "$./main prog=10  - pattern move with explorh" << endl;
00249       cout << "  options: counter=400 hstep=0.68" << endl;
00250       cout << "$./main prog=9   - pattern move with explorequad in dim dimensions" << endl;
00251       cout << "  options: counter=400 hstep=0.68 dim=30 average=2" << endl;
00252       cout << "$./main prog=13-15 - 1D line minimization test" << endl;
00253       cout << "$./main prog=20-22 - explore line test" << endl;
00254       cout << "$./man prog=16-17  - compare algorithms" << endl;
00255       cout << "$./main prog=50-54 - minexpdim" << endl;
00256       break;
00257 
00258     case 1: exploretest01(); break; 
00259     case 2: exploretest02(); break; 
00260     case 3: exploretest03(); break; 
00261     case 4: exploretest04(); break; 
00262     case 5: exploretest05(); break; 
00263     case 6: exploretest06(); break; 
00264     case 7: exploretest07(); break; 
00265     case 8: exploretest08(); break; 
00266     case 9: test09(argc,argv); break; 
00267     case 10: test08(argc,argv); break; 
00268     case 16: minimizecomparetest01(argc,argv); break; 
00269     case 17: minimizecomparetest02(argc,argv); break; 
00270     case 18: minimizecomparetest03(argc,argv); break; 
00271 
00272 
00273     case 12: partialderivativetest01(); break;
00274     case 35: lineoptimizergoldtest01(); break; 
00275 //    case 36: lineoptimizergoldtest02(); break; 
00276 //    case 37: lineoptimizergoldtest03(); break; 
00277 //    case 38: lineoptimizergoldtest04(); break;
00278     case 20: explorelinetest01(argc,argv); break;
00279     case 21: explorelinetest02(argc,argv); break;
00280     case 22: explorelinetest03(argc,argv); break;
00281   
00282 //    case 23: powelltest01(argc,argv); break; 
00283 //    case 24: powelltest02(argc,argv); break; 
00284 
00285     case 30: explorepdtest01(argc,argv); break;
00286     case 31: explorepdtest02(argc,argv); break;
00287 
00288     case 50: minexpdimtest::test01(); break;
00289     case 51: minexpdimtest::test02(); break;
00290     case 52: minexpdimtest::test03(argc,argv); break;
00291     case 53: minexpdimtest::test04(argc,argv); break;
00292     case 54: minexpdimtest::test05(argc,argv); break;
00293 
00294     default: cout << "error:  No case handled." << endl; return 1;
00295   }
00296 
00297   return 0;
00298 }

void test08 ( int  argc,
char **  argv 
)

Definition at line 35 of file main.cpp.

References probparab2::counter, patternsearch< EXP >::exp, exploreh< FN, XI, T >::fn, commandline::mapvar(), printvecfunc(), patternsearch< EXP >::reset(), SHOW, and exploreh< FN, XI, T >::xi.

00036 {
00037   commandline cmd(argc,argv);
00038   double hstep(1.0);
00039   cmd.mapvar(hstep,"hstep");
00040   uint counter(200);
00041   cmd.mapvar(counter,"counter");
00042 
00043 
00044   uintc n(3);
00045   probparab2 fn;
00046   exploreh<probparab2 &,double*,double> g(fn,n,2.0,5000);
00047 
00048   //explorequad< exploreh<probparab2 &,double*,double> > g2(fn,n,2.0,5000);
00049 
00050 
00051   patternsearch< exploreh<probparab2 &,double*,double> & > pat(g,hstep);
00052 
00053   double x0[n] = { 0.0, 0.0, 0.0 };
00054 
00055   cout << "Pattern search algorithm" << endl;
00056 
00057   for ( pat.reset(x0); g.fn.counter<counter; )
00058   {
00059     //cout << "++pat" << endl;
00060     ++pat;
00061     cout << printvecfunc(pat.exp.xi,pat.exp.N) << endl;
00062     //cout << pat.xi0 << endl;
00063   }
00064   cout << printvecfunc(g.xi,n) << endl;
00065   cout << SHOW(g.fn.counter) << endl;
00066   cout << SHOW(hstep) << endl;
00067   cout << SHOW(pat.exp.fmin) << endl;
00068 
00069 
00070 /*
00071   g.indexmax = 50;
00072   for (pat.reset(x0); !pat; ++pat)
00073     cout << g.xi[0] << " " << g.xi[1] << " " << g.xi[2]  << endl;
00074   cout << SHOW(fn.counter) << endl;
00075 
00076   cout << "The exact solution is (1,2,5)" << endl;
00077 */
00078 
00079 }

void test09 ( int  argc,
char **  argv 
)

Definition at line 81 of file main.cpp.

References patternsearchD2< EXP >::exp, commandline::mapvar(), printvecfunc(), patternsearchD2< EXP >::reset(), SHOW, and patternsearchD2< EXP >::xi0.

Referenced by main().

00082 {
00083   commandline cmd(argc,argv);
00084   double hstep(1.0);
00085   cmd.mapvar(hstep,"hstep");
00086   uint counter(200);
00087   cmd.mapvar(counter,"counter");
00088   uint average(0);
00089   cmd.mapvar(average,"average");
00090   
00091   uint dim=1; 
00092   cmd.mapvar(dim,"dim" );
00093 
00094   uintc n(3);
00095   probparab2 fn;
00096 
00097   typedef explorequad< exploreh<probparab2 &,double*,double> > eh2;
00098 
00099   eh2 g(fn,n,2.0,5000);
00100   patternsearchD2< eh2 & > pat(g,dim,hstep);
00101 
00102   double x0[n] = { 0.0, 0.0, 0.0 };
00103 
00104   cout << "Pattern search algorithm" << endl;
00105 
00106   uint k=0;
00107   for ( pat.reset(x0); g.fn.counter<counter; )
00108   {
00109     //cout << "++pat" << endl;
00110     ++pat;
00111     //cout << SHOW(k) << endl;
00112     cout << printvecfunc(pat.exp.xi,pat.exp.N) << endl;
00113     //cout << pat.xi0 << endl;
00114 
00115     ++k;
00116     if( (average!=0) && (k%average==0) )
00117     {
00118       cout << "average" << endl;
00119       for (uint j=0; j<pat.exp.N; ++j)
00120         pat.exp.xi[j] = (pat.xi0[0][j]+pat.xi0[1][j])*0.5;
00121       pat.reset();
00122       cout << printvecfunc(pat.exp.xi,pat.exp.N) << endl;
00123     }
00124 
00125   }
00126   cout << printvecfunc(g.xi,n) << endl;
00127   cout << SHOW(g.fn.counter) << endl;
00128   cout << SHOW(hstep) << endl;
00129   cout << SHOW(average) << endl;
00130   cout << SHOW(pat.exp.fmin) << endl;
00131 }

void test11 ( int  argc,
char **  argv 
)

Definition at line 161 of file main.cpp.

References probsysequ01::counter, patternsearchD2< EXP >::exp, patternsearch< EXP >::exp, exploreh< FN, XI, T >::fmin, exploreh< FN, XI, T >::fn, commandline::mapvar(), printvecfunc(), patternsearchD2< EXP >::reset(), patternsearch< EXP >::reset(), exploreh< FN, XI, T >::reset(), SHOW, and exploreh< FN, XI, T >::xi.

00162 {
00163   cout << "Testing optimizers for a 2 variable non-linear system" << endl << endl;
00164 
00165   commandline cmd(argc,argv);
00166 
00167   uint counter(200);
00168   cmd.mapvar(counter,"counter");
00169 
00170   uint dim=1; 
00171   cmd.mapvar(dim,"dim" );
00172 
00173   uintc n(2);
00174   double x0[n] = { 0.5, 0.5 };
00175 
00176 
00177   cout << "exploreh" << endl;
00178   exploreh<probsysequ01,double*,double> g1(n,0.2,50000);
00179   for ( g1.reset(x0); g1.fn.counter<counter; )
00180     ++g1;
00181   cout << printvecfunc(g1.xi,n) << endl;
00182   cout << SHOW(g1.fn.counter) << endl;
00183   cout << SHOW(g1.fmin) << endl;
00184 
00185   cout << "patternsearch" << endl;
00186   typedef exploreh<probsysequ01,double*,double> e1;
00187   e1 f2(n,0.2,5000);
00188   patternsearch< e1 & > g2(f2,0.2);
00189 
00190   for ( g2.reset(x0); g2.exp.fn.counter<counter; )
00191     ++g2;
00192   cout << printvecfunc(g2.exp.xi,n) << endl;
00193   cout << SHOW(f2.fn.counter) << endl;
00194   cout << SHOW(f2.fmin) << endl;
00195 
00196   cout << "pattern with explorequad  " <<  SHOW(dim) << endl;
00197   typedef explorequad< exploreh<probsysequ01,double*,double> > eh2;
00198   eh2 f3(n,0.2,5000);
00199   patternsearchD2< eh2 & > g3(f3,dim,0.2);
00200   for ( g3.reset(x0); f3.fn.counter<counter; )
00201     ++g3;
00202   cout << printvecfunc(g3.exp.xi,n) << endl;
00203   cout << SHOW(f3.fn.counter) << endl;
00204   cout << SHOW(f3.fmin) << endl;
00205 
00206   cout << "pattern  " << SHOW(dim) << endl;
00207   f2.fn.counter=0;
00208   patternsearchD2< e1 & > g4(f2,dim,0.2);
00209   for ( g4.reset(x0); f2.fn.counter<counter; )
00210     ++g4;
00211   cout << printvecfunc(g4.exp.xi,n) << endl;
00212   cout << SHOW(f2.fn.counter) << endl;
00213   cout << SHOW(f2.fmin) << endl;
00214 
00215   cout << "explorerand" << endl;
00216   explorerand< exploreh<probsysequ01,double*,double>, random00<> > g5(n,0.2,50000);
00217   for ( g5.reset(x0); g5.fn.counter<counter; )
00218     ++g5;
00219   cout << printvecfunc(g5.xi,n) << endl;
00220   cout << SHOW(g5.fn.counter) << endl;
00221   cout << SHOW(g5.fmin) << endl;
00222 
00223 }


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