def fit_func(nest, My_Current_step, CONTROL_RULES, Current_States): sim = Simulation(r"./test.inp") Linkname = ["C1", "C2", "O1", "O2"] Nodename = ["St1", "St2", "J1", "J2"] links = Links(sim) nodes = Nodes(sim) t = 0 for link in Linkname: a2 = links[link] a2.initial_flow = Current_States[t][0] t = t + 1 for node in Nodename: a1 = nodes[node] a1.initial_depth = Current_States[t][0] t = t + 1 flood1 = np.array([]) flood2 = np.array([]) flood3 = np.array([]) flood4 = np.array([]) o1 = Links(sim)["O1"] o2 = Links(sim)["O2"] j1 = Nodes(sim)["J1"] j2 = Nodes(sim)["J2"] j3 = Nodes(sim)["St1"] j4 = Nodes(sim)["St2"] sim.start_time = my_Start_time + datetime.timedelta( minutes=My_timestep * (My_Current_step)) sim.end_time = my_Start_time + datetime.timedelta( minutes=My_timestep * (My_Current_step + HorizonLength + 1)) sim.step_advance(My_timestep * 60) CONTROL_RULES[My_Current_step:My_Current_step + HorizonLength] = nest.reshape([4, -1]) i = 0 for step in sim: o1.target_setting = CONTROL_RULES[i + My_Current_step][0] o2.target_setting = CONTROL_RULES[i + My_Current_step][1] i = i + 1 flood1 = np.append(flood1, [j1.flooding]) flood2 = np.append(flood2, [j2.flooding]) flood3 = np.append(flood3, [j3.flooding]) flood4 = np.append(flood4, [j4.flooding]) sim.close() return mytrape(flood1, 60 * My_timestep) + mytrape( flood2, 60 * My_timestep) + mytrape( flood3, 60 * My_timestep) + mytrape(flood4, 60 * My_timestep)
def State_Update(CONTROL_RULES, Current_States, My_Current_step): sim = Simulation(r"./test.inp") Linkname = ["C1", "C2", "O1", "O2"] Nodename = ["St1", "St2", "J1", "J2"] links = Links(sim) nodes = Nodes(sim) o1 = Links(sim)["O1"] o2 = Links(sim)["O2"] t = 0 sim.start_time = my_Start_time + datetime.timedelta(minutes=My_timestep * (My_Current_step)) sim.end_time = my_Start_time + datetime.timedelta( minutes=My_timestep * (My_Current_step + HorizonLength + 1)) sim.step_advance(My_timestep * 60) for link in Linkname: a2 = links[link] a2.initial_flow = Current_States[t][0] t = t + 1 for node in Nodename: a1 = nodes[node] a1.initial_depth = Current_States[t][0] t = t + 1 i = 0 for step in sim: o1.target_setting = CONTROL_RULES[i + My_Current_step][0] o2.target_setting = CONTROL_RULES[i + My_Current_step][1] i = i + 1 t = 0 for link in Linkname: a2 = links[link] Current_States[t][0] = a2.flow t = t + 1 for node in Nodename: a1 = nodes[node] Current_States[t][0] = a1.depth t = t + 1 return Current_States