proj home

Files   Classes   Functions   Hierarchy  

minpatternsearchorder2< X > Class Template Reference

Pattern search with order 2 approximator. More...

#include <minpatternsearchorder2.h>

Inheritance diagram for minpatternsearchorder2< X >:
Collaboration diagram for minpatternsearchorder2< X >:

List of all members.

Public Member Functions

 minpatternsearchorder2 (funcstate< X > &fn_, X const h0step=20.0, uintc indexmax_=500, boolc mem_=true)
 Allocate the fn with new.
virtual void reset ()
 Set the current position as the new minimum.
virtual void operator++ ()
 1st order approximator to minimum.

Public Attributes

funchistory< X > fh
 Consecutive X values are stored.


Detailed Description

template<typename X>
class minpatternsearchorder2< X >

Pattern search with order 2 approximator.

Definition at line 11 of file minpatternsearchorder2.h.


Constructor & Destructor Documentation

template<typename X >
minpatternsearchorder2< X >::minpatternsearchorder2 ( funcstate< X > &  fn_,
X const   h0step = 20.0,
uintc  indexmax_ = 500,
boolc  mem_ = true 
) [inline]

Allocate the fn with new.

Definition at line 41 of file minpatternsearchorder2.h.

00047   : minexpdim<X>(fn_,h0step,indexmax_,mem_),
00048   fh(fn_)
00049 {
00050 }


Member Function Documentation

template<typename X >
void minpatternsearchorder2< X >::operator++ (  )  [inline, virtual]

1st order approximator to minimum.

Reimplemented from minexpdim< X >.

Definition at line 53 of file minpatternsearchorder2.h.

References minpatternsearchorder2< X >::fh, and minexpdim< X >::moveOrder1().

00054 {
00055 //cout << "minpatternsearchorder2<X>::operator ++" << endl;
00056   if (!minexpdim<X>::valid)
00057     return;
00058 
00059   if (minexpdim<X>::index > minexpdim<X>::indexmax)
00060   {
00061     minexpdim<X>::valid=false;
00062     return;
00063   }
00064 
00065   assert( fh.xik.size() >= 3 );
00066 
00067   uintc dim = minexpdim<X>::fn->dim;
00068 
00069   // Algorithm on vectors
00070   // X* = 5/2*X[k] -2*X[k-1] + 1/2*X[k-2]
00071   X* XK0 = fh[0];
00072   X* XK1 = fh[1];
00073   X* XK2 = fh[2];
00074 
00075 //cout << "before pattern move" << endl;
00076 //cout << "fmin=" << minexpdim<X>::fmin << " xi[dim]=" << minexpdim<X>::xi[dim] << endl;
00077 
00078 //cout << "fmin=" << minexpdim<X>::fmin << " xi[dim]=" << minexpdim<X>::xi[dim] << endl;
00079   assert(minexpdim<X>::fmin==minexpdim<X>::xi[dim]);
00080 
00081   for (uint i=0; i<dim; ++i)
00082   {
00083     minexpdim<X>::xi[i] = XK0[i]*2.5 + XK1[i]*(-2.0) + XK2[i]*0.5; 
00084   }
00085   // Was the pattern + exploratory move successful
00086   if (minexpdim<X>::moveOrder1())
00087   {
00088     minexpdim<X>::xi[dim] = minexpdim<X>::fmin;
00089     assert(minexpdim<X>::xi[dim]<XK0[dim]);
00090     fh.del_back();
00091     fh.push();
00092   }
00093   else
00094   {
00095     fh.restore();
00096 //cout << "fmin=" << minexpdim<X>::fmin << " xi[dim]=" << minexpdim<X>::xi[dim] << endl;
00097     assert(minexpdim<X>::fmin==minexpdim<X>::xi[dim]);
00098 
00099     bool res=minexpdim<X>::moveOrder1(5); 
00100     assert(res); 
00101     if (res)
00102     {
00103       minexpdim<X>::xi[dim] = minexpdim<X>::fmin;
00104       fh.del_back();
00105       fh.push();
00106     }
00107   }
00108 }

template<typename X >
void minpatternsearchorder2< X >::reset (  )  [inline, virtual]

Set the current position as the new minimum.

Reimplemented from minexpdim< X >.

Definition at line 111 of file minpatternsearchorder2.h.

References minpatternsearchorder2< X >::fh, and minexpdim< X >::moveOrder1().

Referenced by minexpdimtest::test05().

00112 {
00113   minexpdim<X>::reset();
00114 
00115   static uint maxloop=20;
00116   for (uint j=0; j<3; ++j)
00117   {
00118     minexpdim<X>::moveOrder1(maxloop);
00119     assert(minexpdim<X>::hasminimized==true);
00120     fh.push();
00121     minexpdim<X>::hasminimized=false;
00122   }
00123 }


Member Data Documentation

template<typename X>
funchistory<X> minpatternsearchorder2< X >::fh

Consecutive X values are stored.

Definition at line 16 of file minpatternsearchorder2.h.

Referenced by minpatternsearchorder2< X >::operator++(), minpatternsearchorder2< X >::reset(), and minexpdimtest::test05().


The documentation for this class was generated from the following file:

Generated on Fri Mar 4 00:50:07 2011 for Chelton Evans Source by  doxygen 1.5.8