def cost_model(E_sto, Speed, Accel, P_sto, innov): '''penalty on the power injected to the grid P_grid = P_prod - P_sto penal = (P_grid/power_max)**2 ''' P_prod = searev_power(Speed) P_grid = P_prod - P_sto penal = (P_grid / power_max)**2 return penal
def cost_model(E_sto, Speed, Accel, P_sto, innov): """penalty on the power injected to the grid P_grid = P_prod - P_sto penal = (P_grid/power_max)**2 """ P_prod = searev_power(Speed) P_grid = P_prod - P_sto penal = (P_grid / power_max) ** 2 return penal
def P_sto_law_lin(E_sto, Speed, Accel): """linear storage control law""" P_prod = searev_power(Speed) P_grid = P_rated * E_sto / E_rated return P_prod - P_grid
def P_sto_law_lin(E_sto, Speed, Accel): '''linear storage control law''' P_prod = searev_power(Speed) P_grid = P_rated * E_sto / E_rated return P_prod - P_grid
P_prod = np.zeros(N_sim) P_grid = np.zeros(N_sim) # draw a disturbance sequence: np.random.seed(seed) w = innov_law.rvs(N_sim) # Time vector k_range = np.arange(N_sim) t = k_range * dt t_x = np.arange(N_sim + 1) * dt # Simulation loop: for k in k_range: # Searev Power : P_prod[k] = searev_power(Speed[k]) # Control computation: P_sto[k] = P_sto_law(E_sto[k], Speed[k], Accel[k]) P_grid[k] = P_prod[k] - P_sto[k] # State evolution: E_sto[k + 1], Speed[k + 1], Accel[k + 1] = searev_sys.dyn( E_sto[k], Speed[k], Accel[k], P_sto[k], w[k]) # Compute state variables derivatives: E_full = np.ma.array(E_sto, mask=(E_sto < E_rated * 0.9999)) E_empty = np.ma.array(E_sto, mask=(E_sto > E_rated * 0.0001)) # Power delivered to the grid P_grid = P_prod - P_sto
P_prod = np.zeros(N_sim) P_grid = np.zeros(N_sim) # draw a disturbance sequence: np.random.seed(seed) w = innov_law.rvs(N_sim) # Time vector k_range = np.arange(N_sim) t = k_range * dt t_x = np.arange(N_sim + 1) * dt # Simulation loop: for k in k_range: # Searev Power : P_prod[k] = searev_power(Speed[k]) # Control computation: P_sto[k] = P_sto_law(E_sto[k], Speed[k], Accel[k]) P_grid[k] = P_prod[k] - P_sto[k] # State evolution: E_sto[k + 1], Speed[k + 1], Accel[k + 1] = searev_sys.dyn(E_sto[k], Speed[k], Accel[k], P_sto[k], w[k]) # Compute state variables derivatives: E_full = np.ma.array(E_sto, mask=(E_sto < E_rated * 0.9999)) E_empty = np.ma.array(E_sto, mask=(E_sto > E_rated * 0.0001)) # Power delivered to the grid P_grid = P_prod - P_sto cost = cost_model(E_sto[:-1], Speed[:-1], Accel[:-1], P_sto, w)