示例#1
0
def test_split_network():
    scen, control = test_ctm.small_scenario()
    set_cells_left = [1]
    set_ramps_left = [1]
    adjoint_left = ctm_admm.AdmmCTMAdjoint(scen, set_cells_left, set_ramps_left)

    set_cells_right = [0]
    set_ramps_right = [0]
    adjoint_right = ctm_admm.AdmmCTMAdjoint(scen, set_cells_right, set_ramps_right)
    T = scen.T
    xy_map_left = range(T) + range(2 * T, 3 * T)
    xy_map_right = range(T, 2 * T) + range(3 * T, 4 * T)
    uy_map_left = range(4 * T)
    uy_map_right = range(4 * T)
    yz_map_left = range(2 * T, 4 * T) + range(2 * T) + range(4 * T, 6 * T)
    yz_map_right = range(4 * T, 6 * T) + range(2 * T) + range(2 * T, 4 * T)
    sub_problems = [
                       AdjointAdmmSubProblem(AdjointAdmmData(adjoint_left, xy_map_left, uy_map_left, yz_map_left,
                                                             ctm_admm.AdmmCTMAdjoint.no_control(scen, set_cells_left,
                                                                                                set_ramps_left),
                                                             rho=20.),
                                             solver=AcceleratedGradient(15, 2000, 0.0, 1.0))] + [
                       AdjointAdmmSubProblem(AdjointAdmmData(adjoint_right, xy_map_right, uy_map_right, yz_map_right,
                                                             ctm_admm.AdmmCTMAdjoint.no_control(scen, set_cells_right,
                                                                                                set_ramps_right),
                                                             rho=20.), solver=AcceleratedGradient(15, 2000, 0.0, 1.0))
                   ]
    sln = Admm(sub_problems, n_iters=100)
    sln.solve()
    control = sln.z[:2 * T].reshape(T, 2).transpose()
    state = CTMSimulator().simulate(scen, control)
    state.plot()
    ttt = scen.ttt(state)
    print control
    print ttt
    sln.plot()