Files Classes Functions Hierarchy
#include <minpatternsearchorder2.h>
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. | |
Definition at line 11 of file minpatternsearchorder2.h.
| 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 }
| 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 }
| 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 }
| 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().
1.5.8