void UnderwaterVehicle::step(const FiniteAction& action, DenseState& nextState, Reward& reward) { double u = config->actionList[action.getActionN()]; //ODEINT (BOOST 1.53+) uwvode.action = u; double t0 = 0; double t1 = config->dt; integrate_adaptive( controlled_stepper , uwvode , currentState, t0 , t1 , t1/1000.0); nextState = currentState; reward[0] = abs(config->setPoint - nextState[0]) < config->mu ? 0.0 : -config->C; }
size_t integrate( System system , State &start_state , Time start_time , Time end_time , Time dt , Observer observer ) { return integrate_adaptive( controlled_runge_kutta< runge_kutta_dopri5< State > >() , system , start_state , start_time , end_time , dt , observer ); }
size_t integrate_adaptive( Stepper stepper , System system , const State &start_state , Time start_time , Time end_time , Time dt ) { return integrate_adaptive( stepper , system , start_state , start_time , end_time , dt , null_observer() ); }
typename boost::enable_if< typename has_value_type<State>::type , size_t >::type integrate( System system , State &start_state , Time start_time , Time end_time , Time dt , Observer observer ) { typedef controlled_runge_kutta< runge_kutta_dopri5< State , typename State::value_type , State , Time > > stepper_type; return integrate_adaptive( stepper_type() , system , start_state , start_time , end_time , dt , observer ); }