## 2 Materials and Methods
### Nonlinear Model Predictive Control  
The objective is to minimize fuel consumption as well as travel time. A rollout algorithm that is based on the concept of MPC is chosen due to the feedback inherently present in the controller architecture. Utilizing MPC allows the optimal policy to be updated at each time step. The feedback control structure and frequent updates add robustness to uncertainties in the predictions. DP is chosen as the optimization algorithm due to its ability to handle nonlinear constraints and its guaranteed optimal solution, given information about the road segment in the look-ahead horizon. The length of the look-ahead horizon is a design choice and a trade-off between computation time and optimality. A smaller look-ahead horizon has fewer steps, and hence is computationally more efficient, whereas a longer horizon uses more future information but requires more time to compute. Assume that at time instance \(t\) the vehicle is at distance \(n\) from the origin. At this instance, using the future speed limits, DP provides the optimal feedback law \(U^{*}\) for the segment of horizon length \(N_{h}\). The optimal feedback controller is re-computed using DP at the update rate of 10 s.  
Most of the look-ahead data (speed limits, SPaT, stop signs, etc.) are static, i.e., the location of these data sources is fixed with respect to the distance along the route, and they do not vary with time. For this reason, the optimal control problem is expressed in terms of distance as opposed to time. The objective function for MPC is a convex combination of fuel consumption and travel time. At any distance step \(n\) along the route, the objective function can be written as:  
\[J=\min_{u_{i}\in U_{i}}G(x_{n+N_{h}})+\sum_{i=n}^{n+N_{h}}\left(\beta\cdot \frac{\dot{n}_{f,j}(x_{i},u_{i})}{\dot{n}_{f,norm}}+(1-\beta)\right)\cdot \frac{\Delta s_{i}}{V_{veh,i}} \tag{10}\]  
where \(n\) is the first step (distance) for the current horizon at time \(j\), \(N_{h}\) is the horizon length, \(\beta\in[0,1]\) represents the trade-off between fuel consumption and travel time, \(\Delta s_{i}\) is the distance traveled over one step, \(\dot{m}_{f,j}\) is the fuel flow rate, \(\dot{m}_{f,norm}\) is a normalizing  
Figure 3: Comparing experimental and simulated data. factor, \(x_{i}=\left[V_{veh,i}\quad SOC_{i}\right]^{T}\) is the state vector, \(u_{i}=\left[T_{veh,i}\quad\tau_{i}\right]^{T}\) is the control input vector, \(V_{veh,i}\) is the vehicle speed, \(G\) is the terminal cost at distance \(n+N_{h}\), and \(\tau_{i}\) is the torque split ratio between REM torque and IC engine torque. Since the aim of this research is energy management, metrics such as driver comfort and tail pipe emissions are not explicitly considered in the objective function. The objective function is subject to the following constraints:  
\[SOC_{min} \leq SOC_{i}\leq SOC_{max} \tag{11}\] \[(V_{veh,min,i})|_{n} \leq V_{veh,i}\leq(V_{veh,max,i})|_{n}\] \[T_{ice,min} \leq T_{ice,i}\leq T_{ice,max}\] \[T_{rem,min} \leq T_{rem,i}\leq T_{rem,max}\] \[x_{i+1} =f(x_{i},u_{i},\Delta s_{i})\]  
where \(SOC_{min}\), \(SOC_{max}\) and \(SOC_{i}\) are the minimum, maximum, and current state of charge, respectively, \((V_{veh,min,i})|_{n}\) and \((V_{veh,max,i})|_{n}\) are the minimum and maximum allowable speeds determined from look-ahead data obtained when the vehicle is at distance \(n\), \(V_{veh,i}\) is current vehicle speed, \(T_{ice,min}\),\(T_{ice,max}\), \(T_{ice,i}\), \(T_{rem,min}\), \(T_{rem,max}\), and \(T_{rem,i}\) are the minimum, maximum, and current engine torque and REM torque, respectively, and \(f\) is the discrete powertrain model. The powertrain model is equivalently expressed such that the independent variable of the difference equation is distance and not time. For the rollout algorithm, the terminal cost \(G(x_{n+N_{h}})\) in Equation (10) can be determined using a base policy. The method chosen for this work is based on the principles of approximate DP where a base policy is used to approximate the terminal cost in Equation (10).