├── Asychronous_ADMM_maybeTerminal ├── ADMM_DR_asy.m ├── ADMM_DR_asy_ARock.m ├── ADMM_DR_sy.m ├── ADMM_DR_sy_general.m ├── ADMM_MPC.m ├── ADMM_coupleCheck.m ├── ADMM_transfer.m ├── ADMM_transfer2.m ├── Compare_n324s127.mat ├── Other_boundFun.m ├── Reslut_plt.m ├── Stat_fAg.m ├── SynorAsyn.m ├── log.txt └── ob_map.m ├── Consensus_of_ADMM ├── ADMM_DR_sy.m ├── Centralized.m ├── GenerateTopology.m ├── Other_boundFun.m ├── Topology.m └── log.txt ├── Intersection ├── ADMM.m ├── ADMM_CCCP.m ├── ADMM_MPC.m ├── ADMM_biple.m ├── ADMM_coupleCheck.m ├── ADMM_stateUpdate.m ├── ADMM_transfer.m ├── ADMM_transfer2.m ├── Astar_dist.m ├── Astar_generate.m ├── Astar_h.m ├── Astar_new.m ├── Astar_reconstruct_path.m ├── Env_con.m ├── Env_con_CCA_show.m ├── Env_con_obscheck.m ├── Env_con_reshow.m ├── Geo_angleCompare.m ├── Intersection.m ├── Math_bound.m ├── Other_boundFun.m ├── Other_draw_circle.m ├── Other_draw_reactangle.m ├── Other_refPathDist.m ├── Overtake_3lane.m ├── Path_generate.m ├── Path_randgen.m ├── Path_ref.m ├── Result_show.m ├── Result_video.m ├── Start_judge_CCA.m ├── Termi_judge_CCA.m ├── log.txt ├── ob_map.m ├── plotheatmap.m ├── testR.m ├── veh_con.m ├── veh_con_inver_model.m ├── veh_con_model.m ├── veh_posChange.m └── veh_struct_model.m ├── LargeScale ├── ADMM.m ├── ADMM_CCCP.m ├── ADMM_MPC.m ├── ADMM_biple.m ├── ADMM_coupleCheck.m ├── ADMM_stateUpdate.m ├── ADMM_stateUpdateBackup.m ├── ADMM_transfer.m ├── ADMM_transfer2.m ├── Astar_dist.m ├── Astar_generate.m ├── Astar_h.m ├── Astar_new.m ├── Astar_reconstruct_path.m ├── Aug.m ├── Catch.m ├── DATA.mat ├── Env_con.m ├── Env_con_CCA_show.m ├── Env_con_obscheck.m ├── Env_con_reshow.m ├── Geo_angleCompare.m ├── Math_bound.m ├── Other_boundFun.m ├── Other_draw_circle.m ├── Other_draw_reactangle.m ├── Other_refPathDist.m ├── Path_generate.m ├── Path_randgen.m ├── Path_ref.m ├── Rename.m ├── Result_show.m ├── Result_video.m ├── Start_judge_CCA.m ├── Termi_judge_CCA.m ├── Vg1.mat ├── Vg2.mat ├── Vg3.mat ├── Vg4.mat ├── Vg5.mat ├── Vg6.mat ├── Vg7.mat ├── log.txt ├── ob_map.m ├── roadmap.fig ├── snapshot.m ├── testR.m ├── untitled.fig ├── veh_con.m ├── veh_con_inver_model.m ├── veh_con_model.m ├── veh_posChange.m └── veh_struct_model.m ├── Overtake ├── ADMM.m ├── ADMM_CCCP.m ├── ADMM_MPC.m ├── ADMM_biple.m ├── ADMM_coupleCheck.m ├── ADMM_stateUpdate.m ├── ADMM_transfer.m ├── ADMM_transfer2.m ├── Astar_dist.m ├── Astar_h.m ├── Astar_new.m ├── Astar_reconstruct_path.m ├── Env_con.m ├── Env_con_CCA_show.m ├── Env_con_obscheck.m ├── Env_con_reshow.m ├── Geo_angleCompare.m ├── Math_bound.m ├── Other_boundFun.m ├── Other_draw_circle.m ├── Other_draw_reactangle.m ├── Other_refPathDist.m ├── Overtake.m ├── Overtake_3lane.m ├── Path_randgen.m ├── Path_ref.m ├── Result_show.m ├── Result_video.m ├── Start_judge_CCA.m ├── Termi_judge_CCA.m ├── log.txt ├── ob_map.m ├── plotheatmap.m ├── veh_con.m ├── veh_con_inver_model.m ├── veh_con_model.m ├── veh_posChange.m └── veh_struct_model.m ├── README.md └── figure ├── intersection.gif ├── multiple.gif └── overtake.gif /Asychronous_ADMM_maybeTerminal/ADMM_DR_asy.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Asychronous_ADMM_maybeTerminal/ADMM_DR_asy.m -------------------------------------------------------------------------------- /Asychronous_ADMM_maybeTerminal/ADMM_DR_asy_ARock.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Asychronous_ADMM_maybeTerminal/ADMM_DR_asy_ARock.m -------------------------------------------------------------------------------- /Asychronous_ADMM_maybeTerminal/ADMM_DR_sy.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Asychronous_ADMM_maybeTerminal/ADMM_DR_sy.m -------------------------------------------------------------------------------- /Asychronous_ADMM_maybeTerminal/ADMM_DR_sy_general.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Asychronous_ADMM_maybeTerminal/ADMM_DR_sy_general.m -------------------------------------------------------------------------------- /Asychronous_ADMM_maybeTerminal/ADMM_MPC.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Asychronous_ADMM_maybeTerminal/ADMM_MPC.m -------------------------------------------------------------------------------- /Asychronous_ADMM_maybeTerminal/ADMM_coupleCheck.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Asychronous_ADMM_maybeTerminal/ADMM_coupleCheck.m -------------------------------------------------------------------------------- /Asychronous_ADMM_maybeTerminal/ADMM_transfer.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Asychronous_ADMM_maybeTerminal/ADMM_transfer.m -------------------------------------------------------------------------------- /Asychronous_ADMM_maybeTerminal/ADMM_transfer2.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Asychronous_ADMM_maybeTerminal/ADMM_transfer2.m -------------------------------------------------------------------------------- /Asychronous_ADMM_maybeTerminal/Compare_n324s127.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Asychronous_ADMM_maybeTerminal/Compare_n324s127.mat -------------------------------------------------------------------------------- /Asychronous_ADMM_maybeTerminal/Other_boundFun.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Asychronous_ADMM_maybeTerminal/Other_boundFun.m -------------------------------------------------------------------------------- /Asychronous_ADMM_maybeTerminal/Reslut_plt.m: -------------------------------------------------------------------------------- 1 | figure(1) 2 | hold on 3 | for i = 1:veh_n 4 | plot(time_mat(:,i), '-o'); 5 | % pause(1) 6 | % drawnow 7 | end 8 | sum_n = size(time_mat,2); 9 | for i = veh_n+1:sum_n 10 | plot(time_mat(:,i), '-s'); 11 | % pause(1) 12 | % drawnow 13 | end -------------------------------------------------------------------------------- /Asychronous_ADMM_maybeTerminal/Stat_fAg.m: -------------------------------------------------------------------------------- 1 | clear 2 | clc 3 | load('Compare_n324s127.mat') 4 | Neigh_dist = 25; 5 | 6 | index_vect = [10, 3, 6,7, 22, 2, 18, 8, 34, 1, 30, 9, 11, 15, 5, 19, 23, ... 7 | 14, 17, 20, 35, 13, 29, 21, 12, 27, 4, 31, 24, 26, 16, 32, 36, 25, 28, 33]; 8 | index_vect = [index_vect, index_vect+36, index_vect+72,... 9 | index_vect+108, index_vect+144, index_vect+180,... 10 | index_vect+216, index_vect+252, index_vect+288]; 11 | cen_time = []; 12 | den_time = []; 13 | step_save = []; 14 | net_save = []; 15 | end_num = 324; 16 | epsi_rel = 0.01; 17 | epsi_abs = 0.01; 18 | rho = 1000; 19 | max_step = 10000; 20 | 21 | sy_save = []; 22 | asy_save = []; 23 | for veh_n = 20 24 | veh_cell = cell(1,veh_n); 25 | for i = 1:veh_n 26 | veh_cell{1,i} = Veh_cell{1,index_vect(i)}; 27 | end 28 | 29 | veh_couple_mat = ADMM_coupleCheck(veh_cell, Neigh_dist); 30 | [f1,g1,rel_mat1] = ADMM_transfer(veh_cell, veh_couple_mat, obstacle); 31 | [delta_temp1, empty_tag, MPC_time] = ADMM_MPC(f1, g1, rel_mat1); 32 | 33 | [f,g,rel_mat] = ADMM_transfer2(veh_cell, veh_couple_mat, obstacle); 34 | [delta_temp_sy, ADMM_step_sy,test_save, rho_mat, f_time, g_time] = ADMM_biple_stat(f, g, rel_mat, rho, max_step, epsi_rel, epsi_abs, delta_temp1, empty_tag); 35 | disp(['============= vehicle number:', num2str(veh_n),' =============']) 36 | 37 | 38 | end 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Asychronous_ADMM_maybeTerminal/SynorAsyn.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Asychronous_ADMM_maybeTerminal/SynorAsyn.m -------------------------------------------------------------------------------- /Asychronous_ADMM_maybeTerminal/log.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Asychronous_ADMM_maybeTerminal/log.txt -------------------------------------------------------------------------------- /Asychronous_ADMM_maybeTerminal/ob_map.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Asychronous_ADMM_maybeTerminal/ob_map.m -------------------------------------------------------------------------------- /Consensus_of_ADMM/ADMM_DR_sy.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Consensus_of_ADMM/ADMM_DR_sy.m -------------------------------------------------------------------------------- /Consensus_of_ADMM/Centralized.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Consensus_of_ADMM/Centralized.m -------------------------------------------------------------------------------- /Consensus_of_ADMM/GenerateTopology.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Consensus_of_ADMM/GenerateTopology.m -------------------------------------------------------------------------------- /Consensus_of_ADMM/Other_boundFun.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Consensus_of_ADMM/Other_boundFun.m -------------------------------------------------------------------------------- /Consensus_of_ADMM/Topology.m: -------------------------------------------------------------------------------- 1 | clear 2 | clc 3 | n = 100; 4 | Np = 3; 5 | rho = 10; 6 | max_step = 3000; 7 | epsi_rel = 10^-3; 8 | epsi_abs = 10^-3; 9 | rel_mat = eye(n,n-1)+rot90(eye(n,n-1),2); 10 | [f, g] = GenerateTopology(rel_mat,Np); 11 | [accuracy, empty_tag] = Centralized(f, g, rel_mat); 12 | [z_out,tag,test_save, rho_mat, time_mat, A_set_save] = ADMM_DR_sy( f, g, rel_mat, rho, max_step, epsi_rel, epsi_abs, accuracy, empty_tag ); 13 | disp(['============= node number:', num2str(n),' =============']) 14 | close all 15 | figure(1) 16 | plot(log10(test_save(:,1))) 17 | hold on 18 | plot(log10(test_save(:,2))) 19 | plot(log10(test_save(:,3))) 20 | plot(log10(test_save(:,4))) 21 | legend('primal radius','dual radius','primal criterion','dual criterion') 22 | figure(2) 23 | accuracy = accuracy';z_out = z_out'; 24 | plot(abs(accuracy(:)), '-og'); 25 | hold on 26 | plot(abs(z_out(:)),'*b'); 27 | ERR = abs(accuracy(:)-z_out(:)); 28 | plot(ERR,'r'); 29 | legend('real value','ADMM','error') -------------------------------------------------------------------------------- /Consensus_of_ADMM/log.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Consensus_of_ADMM/log.txt -------------------------------------------------------------------------------- /Intersection/ADMM.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/ADMM.m -------------------------------------------------------------------------------- /Intersection/ADMM_CCCP.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/ADMM_CCCP.m -------------------------------------------------------------------------------- /Intersection/ADMM_MPC.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/ADMM_MPC.m -------------------------------------------------------------------------------- /Intersection/ADMM_biple.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/ADMM_biple.m -------------------------------------------------------------------------------- /Intersection/ADMM_coupleCheck.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/ADMM_coupleCheck.m -------------------------------------------------------------------------------- /Intersection/ADMM_stateUpdate.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/ADMM_stateUpdate.m -------------------------------------------------------------------------------- /Intersection/ADMM_transfer.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/ADMM_transfer.m -------------------------------------------------------------------------------- /Intersection/ADMM_transfer2.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/ADMM_transfer2.m -------------------------------------------------------------------------------- /Intersection/Astar_dist.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Astar_dist.m -------------------------------------------------------------------------------- /Intersection/Astar_generate.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Astar_generate.m -------------------------------------------------------------------------------- /Intersection/Astar_h.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Astar_h.m -------------------------------------------------------------------------------- /Intersection/Astar_new.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Astar_new.m -------------------------------------------------------------------------------- /Intersection/Astar_reconstruct_path.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Astar_reconstruct_path.m -------------------------------------------------------------------------------- /Intersection/Env_con.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Env_con.m -------------------------------------------------------------------------------- /Intersection/Env_con_CCA_show.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Env_con_CCA_show.m -------------------------------------------------------------------------------- /Intersection/Env_con_obscheck.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Env_con_obscheck.m -------------------------------------------------------------------------------- /Intersection/Env_con_reshow.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Env_con_reshow.m -------------------------------------------------------------------------------- /Intersection/Geo_angleCompare.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Geo_angleCompare.m -------------------------------------------------------------------------------- /Intersection/Intersection.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Intersection.m -------------------------------------------------------------------------------- /Intersection/Math_bound.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Math_bound.m -------------------------------------------------------------------------------- /Intersection/Other_boundFun.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Other_boundFun.m -------------------------------------------------------------------------------- /Intersection/Other_draw_circle.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Other_draw_circle.m -------------------------------------------------------------------------------- /Intersection/Other_draw_reactangle.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Other_draw_reactangle.m -------------------------------------------------------------------------------- /Intersection/Other_refPathDist.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Other_refPathDist.m -------------------------------------------------------------------------------- /Intersection/Overtake_3lane.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Overtake_3lane.m -------------------------------------------------------------------------------- /Intersection/Path_generate.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Path_generate.m -------------------------------------------------------------------------------- /Intersection/Path_randgen.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Path_randgen.m -------------------------------------------------------------------------------- /Intersection/Path_ref.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Path_ref.m -------------------------------------------------------------------------------- /Intersection/Result_show.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Result_show.m -------------------------------------------------------------------------------- /Intersection/Result_video.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Result_video.m -------------------------------------------------------------------------------- /Intersection/Start_judge_CCA.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Start_judge_CCA.m -------------------------------------------------------------------------------- /Intersection/Termi_judge_CCA.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/Termi_judge_CCA.m -------------------------------------------------------------------------------- /Intersection/log.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/log.txt -------------------------------------------------------------------------------- /Intersection/ob_map.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/ob_map.m -------------------------------------------------------------------------------- /Intersection/plotheatmap.m: -------------------------------------------------------------------------------- 1 | clear 2 | clc 3 | close all 4 | tail = 92; 5 | color_end = [hex2dec('ff')/255, hex2dec('00')/255, hex2dec('ff')/255]; 6 | color_start = [hex2dec('00')/255, hex2dec('00')/255, hex2dec('ff')/255]; 7 | tail_color(:,1) = linspace(color_start(1), color_end(1), tail); 8 | tail_color(:,2) = linspace(color_start(2), color_end(2), tail); 9 | tail_color(:,3) = linspace(color_start(3), color_end(3), tail); 10 | marker = ['o', 's']; 11 | x = linspace(0,0.5,100); 12 | y = linspace(0,4.6,tail); 13 | y = repmat(y', 1, 100); 14 | figure(1) 15 | hold on 16 | 17 | for i = 1:tail 18 | plot(x,y(i,:),'marker', 's','markeredgecolor', tail_color(i,:),'markerfacecolor', tail_color(i,:),'markersize',10); 19 | end 20 | axis equal 21 | axis([0 0.5 0 4.6]); 22 | set(gca, 'xtick', []); 23 | % set(gca, 'ytick', []); 24 | % ylabel('time [s]','Fontname', 'Times New Roman','FontSize',12); -------------------------------------------------------------------------------- /Intersection/testR.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/testR.m -------------------------------------------------------------------------------- /Intersection/veh_con.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/veh_con.m -------------------------------------------------------------------------------- /Intersection/veh_con_inver_model.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/veh_con_inver_model.m -------------------------------------------------------------------------------- /Intersection/veh_con_model.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/veh_con_model.m -------------------------------------------------------------------------------- /Intersection/veh_posChange.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/veh_posChange.m -------------------------------------------------------------------------------- /Intersection/veh_struct_model.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Intersection/veh_struct_model.m -------------------------------------------------------------------------------- /LargeScale/ADMM.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/ADMM.m -------------------------------------------------------------------------------- /LargeScale/ADMM_CCCP.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/ADMM_CCCP.m -------------------------------------------------------------------------------- /LargeScale/ADMM_MPC.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/ADMM_MPC.m -------------------------------------------------------------------------------- /LargeScale/ADMM_biple.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/ADMM_biple.m -------------------------------------------------------------------------------- /LargeScale/ADMM_coupleCheck.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/ADMM_coupleCheck.m -------------------------------------------------------------------------------- /LargeScale/ADMM_stateUpdate.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/ADMM_stateUpdate.m -------------------------------------------------------------------------------- /LargeScale/ADMM_stateUpdateBackup.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/ADMM_stateUpdateBackup.m -------------------------------------------------------------------------------- /LargeScale/ADMM_transfer.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/ADMM_transfer.m -------------------------------------------------------------------------------- /LargeScale/ADMM_transfer2.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/ADMM_transfer2.m -------------------------------------------------------------------------------- /LargeScale/Astar_dist.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Astar_dist.m -------------------------------------------------------------------------------- /LargeScale/Astar_generate.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Astar_generate.m -------------------------------------------------------------------------------- /LargeScale/Astar_h.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Astar_h.m -------------------------------------------------------------------------------- /LargeScale/Astar_new.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Astar_new.m -------------------------------------------------------------------------------- /LargeScale/Astar_reconstruct_path.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Astar_reconstruct_path.m -------------------------------------------------------------------------------- /LargeScale/Aug.m: -------------------------------------------------------------------------------- 1 | 2 | num = size(Veh_group,2); 3 | for i = 1:num 4 | Veh_group{1,i}.real_path = [repmat(Veh_group{1,i}.real_path(1,:),10,1);Veh_group{1,i}.real_path]; 5 | end -------------------------------------------------------------------------------- /LargeScale/Catch.m: -------------------------------------------------------------------------------- 1 | clear 2 | clc 3 | num = 7; 4 | Contain = cell(1,num); 5 | cut_len = 10; 6 | for i = 1:num 7 | a = load(['Vg',num2str(i),'.mat']); 8 | Contain{1,i} = a; 9 | if i <= 3 10 | veh_n = size(Contain{1,i}.Veh_group, 2); 11 | for j = 1:veh_n 12 | Contain{1,i}.Veh_group{1,j}.real_path(1:(i-1)*cut_len, :) = []; 13 | end 14 | end 15 | 16 | 17 | end 18 | 19 | 20 | 21 | k = 0; 22 | temp = Contain{1,num}.Veh_group{1,1}; 23 | time_len = size(temp.real_path,1); 24 | for i = 1:num 25 | veh_n = size(Contain{1,i}.Veh_group, 2); 26 | for j = 1:veh_n 27 | k = k+1; 28 | Veh_group{1,k} = Contain{1,i}.Veh_group{1,j}; 29 | if size(Veh_group{1,k}.real_path,1) < time_len 30 | Veh_group{1,k}.real_path(end+1:time_len,:) = repmat(Veh_group{1,k}.real_path(end,:),time_len-size(Veh_group{1,k}.real_path,1), 1); 31 | end 32 | end 33 | end -------------------------------------------------------------------------------- /LargeScale/DATA.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/DATA.mat -------------------------------------------------------------------------------- /LargeScale/Env_con.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Env_con.m -------------------------------------------------------------------------------- /LargeScale/Env_con_CCA_show.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Env_con_CCA_show.m -------------------------------------------------------------------------------- /LargeScale/Env_con_obscheck.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Env_con_obscheck.m -------------------------------------------------------------------------------- /LargeScale/Env_con_reshow.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Env_con_reshow.m -------------------------------------------------------------------------------- /LargeScale/Geo_angleCompare.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Geo_angleCompare.m -------------------------------------------------------------------------------- /LargeScale/Math_bound.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Math_bound.m -------------------------------------------------------------------------------- /LargeScale/Other_boundFun.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Other_boundFun.m -------------------------------------------------------------------------------- /LargeScale/Other_draw_circle.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Other_draw_circle.m -------------------------------------------------------------------------------- /LargeScale/Other_draw_reactangle.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Other_draw_reactangle.m -------------------------------------------------------------------------------- /LargeScale/Other_refPathDist.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Other_refPathDist.m -------------------------------------------------------------------------------- /LargeScale/Path_generate.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Path_generate.m -------------------------------------------------------------------------------- /LargeScale/Path_randgen.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Path_randgen.m -------------------------------------------------------------------------------- /LargeScale/Path_ref.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Path_ref.m -------------------------------------------------------------------------------- /LargeScale/Rename.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Rename.m -------------------------------------------------------------------------------- /LargeScale/Result_show.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Result_show.m -------------------------------------------------------------------------------- /LargeScale/Result_video.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Result_video.m -------------------------------------------------------------------------------- /LargeScale/Start_judge_CCA.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Start_judge_CCA.m -------------------------------------------------------------------------------- /LargeScale/Termi_judge_CCA.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Termi_judge_CCA.m -------------------------------------------------------------------------------- /LargeScale/Vg1.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Vg1.mat -------------------------------------------------------------------------------- /LargeScale/Vg2.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Vg2.mat -------------------------------------------------------------------------------- /LargeScale/Vg3.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Vg3.mat -------------------------------------------------------------------------------- /LargeScale/Vg4.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Vg4.mat -------------------------------------------------------------------------------- /LargeScale/Vg5.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Vg5.mat -------------------------------------------------------------------------------- /LargeScale/Vg6.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Vg6.mat -------------------------------------------------------------------------------- /LargeScale/Vg7.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/Vg7.mat -------------------------------------------------------------------------------- /LargeScale/log.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/log.txt -------------------------------------------------------------------------------- /LargeScale/ob_map.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/ob_map.m -------------------------------------------------------------------------------- /LargeScale/roadmap.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/roadmap.fig -------------------------------------------------------------------------------- /LargeScale/snapshot.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/snapshot.m -------------------------------------------------------------------------------- /LargeScale/testR.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/testR.m -------------------------------------------------------------------------------- /LargeScale/untitled.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/untitled.fig -------------------------------------------------------------------------------- /LargeScale/veh_con.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/veh_con.m -------------------------------------------------------------------------------- /LargeScale/veh_con_inver_model.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/veh_con_inver_model.m -------------------------------------------------------------------------------- /LargeScale/veh_con_model.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/veh_con_model.m -------------------------------------------------------------------------------- /LargeScale/veh_posChange.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/veh_posChange.m -------------------------------------------------------------------------------- /LargeScale/veh_struct_model.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/LargeScale/veh_struct_model.m -------------------------------------------------------------------------------- /Overtake/ADMM.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/ADMM.m -------------------------------------------------------------------------------- /Overtake/ADMM_CCCP.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/ADMM_CCCP.m -------------------------------------------------------------------------------- /Overtake/ADMM_MPC.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/ADMM_MPC.m -------------------------------------------------------------------------------- /Overtake/ADMM_biple.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/ADMM_biple.m -------------------------------------------------------------------------------- /Overtake/ADMM_coupleCheck.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/ADMM_coupleCheck.m -------------------------------------------------------------------------------- /Overtake/ADMM_stateUpdate.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/ADMM_stateUpdate.m -------------------------------------------------------------------------------- /Overtake/ADMM_transfer.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/ADMM_transfer.m -------------------------------------------------------------------------------- /Overtake/ADMM_transfer2.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/ADMM_transfer2.m -------------------------------------------------------------------------------- /Overtake/Astar_dist.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Astar_dist.m -------------------------------------------------------------------------------- /Overtake/Astar_h.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Astar_h.m -------------------------------------------------------------------------------- /Overtake/Astar_new.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Astar_new.m -------------------------------------------------------------------------------- /Overtake/Astar_reconstruct_path.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Astar_reconstruct_path.m -------------------------------------------------------------------------------- /Overtake/Env_con.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Env_con.m -------------------------------------------------------------------------------- /Overtake/Env_con_CCA_show.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Env_con_CCA_show.m -------------------------------------------------------------------------------- /Overtake/Env_con_obscheck.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Env_con_obscheck.m -------------------------------------------------------------------------------- /Overtake/Env_con_reshow.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Env_con_reshow.m -------------------------------------------------------------------------------- /Overtake/Geo_angleCompare.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Geo_angleCompare.m -------------------------------------------------------------------------------- /Overtake/Math_bound.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Math_bound.m -------------------------------------------------------------------------------- /Overtake/Other_boundFun.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Other_boundFun.m -------------------------------------------------------------------------------- /Overtake/Other_draw_circle.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Other_draw_circle.m -------------------------------------------------------------------------------- /Overtake/Other_draw_reactangle.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Other_draw_reactangle.m -------------------------------------------------------------------------------- /Overtake/Other_refPathDist.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Other_refPathDist.m -------------------------------------------------------------------------------- /Overtake/Overtake.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Overtake.m -------------------------------------------------------------------------------- /Overtake/Overtake_3lane.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Overtake_3lane.m -------------------------------------------------------------------------------- /Overtake/Path_randgen.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Path_randgen.m -------------------------------------------------------------------------------- /Overtake/Path_ref.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Path_ref.m -------------------------------------------------------------------------------- /Overtake/Result_show.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Result_show.m -------------------------------------------------------------------------------- /Overtake/Result_video.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Result_video.m -------------------------------------------------------------------------------- /Overtake/Start_judge_CCA.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Start_judge_CCA.m -------------------------------------------------------------------------------- /Overtake/Termi_judge_CCA.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/Termi_judge_CCA.m -------------------------------------------------------------------------------- /Overtake/log.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/log.txt -------------------------------------------------------------------------------- /Overtake/ob_map.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/ob_map.m -------------------------------------------------------------------------------- /Overtake/plotheatmap.m: -------------------------------------------------------------------------------- 1 | clear 2 | clc 3 | close all 4 | tail = 70; 5 | color_end = [hex2dec('ff')/255, hex2dec('00')/255, hex2dec('ff')/255]; 6 | color_start = [hex2dec('00')/255, hex2dec('00')/255, hex2dec('ff')/255]; 7 | tail_color(:,1) = linspace(color_start(1), color_end(1), tail); 8 | tail_color(:,2) = linspace(color_start(2), color_end(2), tail); 9 | tail_color(:,3) = linspace(color_start(3), color_end(3), tail); 10 | marker = ['o', 's']; 11 | x = linspace(0,0.5,100); 12 | y = linspace(0,3.5,tail); 13 | y = repmat(y', 1, 100); 14 | figure(1) 15 | hold on 16 | 17 | for i = 1:70 18 | plot(x,y(i,:),'marker', 's','markeredgecolor', tail_color(i,:),'markerfacecolor', tail_color(i,:),'markersize',10); 19 | end 20 | axis equal 21 | axis([0 0.5 0 3.5]); 22 | set(gca, 'xtick', []); 23 | % set(gca, 'ytick', []); 24 | ylabel('time [s]','Fontname', 'Times New Roman','FontSize',12); -------------------------------------------------------------------------------- /Overtake/veh_con.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/veh_con.m -------------------------------------------------------------------------------- /Overtake/veh_con_inver_model.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/veh_con_inver_model.m -------------------------------------------------------------------------------- /Overtake/veh_con_model.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/veh_con_model.m -------------------------------------------------------------------------------- /Overtake/veh_posChange.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/veh_posChange.m -------------------------------------------------------------------------------- /Overtake/veh_struct_model.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/Overtake/veh_struct_model.m -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Parallel Optimal Control via ADMM 2 | ## Abstract 3 | This work proposes a parallel optimization algorithm for cooperative automation of large-scale connected vehicles. The task of cooperative automation is formulated as a centralized optimization problem taking the whole decision space of all vehicles into account. Considering the uncertainty of the environment, the problem is solved in a receding horizon fashion. Then, we employ the alternating direction method of multipliers (ADMM) to solve the centralized optimization in a parallel way, which scales more favorably to large-scale instances. Also, Taylor series is used to linearize nonconvex constraints caused by coupling collision avoidance constraints among interactive vehicles. Simulations with two typical traffic scenes for multiple vehicles demonstrate the effectiveness and efficiency of our method. 4 | The details of this work could be referenced to my paper [Parallel Optimal Control for Cooperative Automation of Large-scale Connected Vehicles via ADMM](https://arxiv.org/pdf/1807.11874.pdf, "my article") 5 | For more information of ADMM, you can read this paper [Distributed optimization and statistical learning via the alternating direction method of multipliers](https://www.nowpublishers.com/article/Details/MAL-016, "admm") 6 | ## Demo 7 | Three scenarios are simulated 8 | ### cooperative overtaking 9 | ![overtake](https://github.com/arkria/Parallel-Optimal-Control-via-ADMM/blob/master/figure/overtake.gif) 10 | ### cooperative driving at intersection 11 | ![intersection](https://github.com/arkria/Parallel-Optimal-Control-via-ADMM/blob/master/figure/intersection.gif) 12 | ### multiple vehicles 13 | ![multiple vehicles](https://github.com/arkria/Parallel-Optimal-Control-via-ADMM/blob/master/figure/multiple.gif) 14 | -------------------------------------------------------------------------------- /figure/intersection.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/figure/intersection.gif -------------------------------------------------------------------------------- /figure/multiple.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/figure/multiple.gif -------------------------------------------------------------------------------- /figure/overtake.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkria/Parallel-Optimal-Control-via-ADMM/dc8480fb4c38614b71019f6adc987f736e86a4eb/figure/overtake.gif --------------------------------------------------------------------------------