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()