Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
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