void Exp3P::initialize( vector< double >& vals ) { _p.resize( _numOfArms ); _w.resize( _numOfArms ); _tmpW.resize( _numOfArms ); fill( _p.begin(), _p.end(), 1.0 / _numOfArms ); fill( _w.begin(), _w.end(), 1.0 ); copy( vals.begin(), vals.end(), _X.begin() ); //one pull for all arm fill( _T.begin(), _T.end(), 1 ); for( int i=0; i < _numOfArms; i++ ) { _w[i] = ((_gamma * _eta ) / 3.0 ) * pow( ( _horizon / ((double)_numOfArms) ) , 0.5 ) ; if ( vals.size() == _numOfArms ) { _w[i]+= ( (_gamma / (3 * (double)_numOfArms )) * // _gamma / 3K (vals[i]*((double)_numOfArms )) // x hat + ( ( ( _eta * (double)_numOfArms ) / ( pow( (double)_numOfArms * _horizon,0.5 ))))); } } setInitializedFlagToTrue(); }
void Exp3G2::initialize( vector< AlphaReal >& vals ) { _p.resize( _numOfArms ); _w.resize( _numOfArms ); _tmpW.resize( _numOfArms ); fill( _p.begin(), _p.end(), 1.0 / _numOfArms ); fill( _w.begin(), _w.end(), 1.0 ); //pull all arm copy( vals.begin(), vals.end(), _X.begin() ); fill( _T.begin(), _T.end(), 1 ); for( int i=0; i < _numOfArms; i++ ) { _w[i] = _eta * _X[i]; } setInitializedFlagToTrue(); }
void Exp3::initialize( vector< AlphaReal >& vals ) { _p.resize( _numOfArms ); _pHat.resize( _numOfArms ); fill( _p.begin(), _p.end(), 1.0 / _numOfArms ); fill( _pHat.begin(), _pHat.end(), 1.0 / _numOfArms ); //_alpha = pow( 4*_numOfArms*log((double)_numOfArms) * ( 1.0 / 100000 ), 1.0/3.0); //_gamma = pow( (_numOfArms*log((double)_numOfArms))/( 2.0 * 100000 ) , 0.5); //if ( _gamma > 1.0 ) _gamma = 1.0; //copy the initial values to X copy( vals.begin(), vals.end(), _X.begin() ); for( int i=0; i < _X.size(); i++ ) _X[i] *= ( _gamma /(double) _numOfArms* _numOfArms); //one pull for all arm fill( _T.begin(), _T.end(), 1 ); setInitializedFlagToTrue(); }