private void 打开ToolStripMenuItem_Click(object sender, EventArgs e) { FolderSelectDialog fd = new FolderSelectDialog(); fd.Title = "请选择输入文件存放路径"; bool is_show = fd.ShowDialog(); while (is_show == false) { MessageBox.Show("请选择输入文件!!!"); is_show = fd.ShowDialog(); } string input_file_str = fd.FileName; train_path = c.read_file(input_file_str + "\\train_path.csv"); if (train_path == null) { MessageBox.Show("文件打开错误!!!"); return; } zone = c.read_file(input_file_str + "\\zone.csv"); dataGridView1.DataSource = train_path; flag = 1; }
public void main(DataTable train_path, DataTable zone) { init(train_path); FolderSelectDialog fs = new FolderSelectDialog(); fs.Title = "请选择输出文件存放路径"; string strpath = null; bool is_select = fs.ShowDialog(); while (is_select == false) { MessageBox.Show("请选择文件夹!!!"); is_select = fs.ShowDialog(); } strpath = fs.FileName; DataTable node = define_node(), road_link = define_road_link(), agent = define_agent(), agent_type = define_agent_type(); DataTable bt_node = define_node(), bt_road_link = define_road_link(), bt_agent = define_agent(); DataTable conf_node = define_node(), conf_road_link = define_road_link(), conf_agent = define_agent(); for (int station = 1; station <= station_num; station++) { for (int t = 0; t < time_len; t++) { int now_time = int2HHMM(t); DataRow now_node = node.NewRow(); int zone_id = get_zone_id(zone, station, now_time); int node_type_id = get_node_type(train_path, station, now_time); g_train_node(now_node, station, now_time, zone_id, node_type_id); node.Rows.Add(now_node); } }//space time node List <conf> all_confs = get_all_conf(train_path); int conf_road_link_id = 1, conf_agent_id = 1; for (int i = 0; i < all_confs.Count; i++) { DataRow conf_node1 = conf_node.NewRow(); DataRow conf_node2 = conf_node.NewRow(); g_conf_node(conf_node1, all_confs[i].station, all_confs[i].start_time, all_confs[i].flag); conf_node.Rows.Add(conf_node1); if (all_confs[i].start_time != all_confs[i].end_time) { g_conf_node(conf_node2, all_confs[i].station, all_confs[i].end_time, all_confs[i].flag); conf_node.Rows.Add(conf_node2); } DataRow conf_link = conf_road_link.NewRow(); g_conf_road_link(conf_link, all_confs[i].station, all_confs[i].start_time, all_confs[i].end_time, all_confs[i].flag, conf_road_link_id++); conf_road_link.Rows.Add(conf_link); DataRow conf_agent_ = conf_agent.NewRow(); g_conf_agent(conf_agent_, all_confs[i].station, all_confs[i].start_time, all_confs[i].end_time, all_confs[i].flag, conf_agent_id++); conf_agent.Rows.Add(conf_agent_); }//train conf int road_link_id = 1, agent_id = 1; for (int i = 0; i < train_path.Rows.Count; i++) { List <int[]> node_seq = trans_node_seq((string)train_path.Rows[i][1]); List <int> time_seq = trans_time_seq((string)train_path.Rows[i][2]); int flag = int.Parse((string)train_path.Rows[i][9]); DataRow agent_row = agent.NewRow(); agent_row[0] = agent_id++; string time_period = null, node_sequence = null, time_sequence = null; int cost = 0; for (int ii = 0; ii < node_seq.Count - 1; ii++) { DataRow road_link_ = road_link.NewRow(); int f_s = node_seq[ii][0]; int t_s = node_seq[ii + 1][0]; int f_t = time_seq[ii]; int t_t = time_seq[ii + 1]; g_train_link(road_link_, f_s, t_s, f_t, t_t, road_link_id++); road_link.Rows.Add(road_link_); if (ii == 0) { int o_zone_id = get_zone_id(zone, f_s, f_t); agent_row[1] = o_zone_id; agent_row[3] = f_s * 100000 + f_t; time_period += time_int2string(f_t) + "_"; node_sequence += (f_s * 100000 + f_t).ToString() + ";" + (t_s * 100000 + t_t).ToString(); time_sequence += time_int2string(f_t) + ";" + time_int2string(t_t); cost = f_t; } else if (ii == node_seq.Count - 2) { int d_zone_id = get_zone_id(zone, t_s, t_t); agent_row[2] = d_zone_id; agent_row[4] = t_s * 100000 + t_t; time_period += time_int2string(t_t); node_sequence += ";" + (t_s * 100000 + t_t).ToString(); time_sequence += ";" + time_int2string(t_t); cost = time_sub(t_t, cost); } else { node_sequence += ";" + (t_s * 100000 + t_t).ToString(); time_sequence += ";" + time_int2string(t_t); } } agent_row[5] = "train_path"; agent_row[6] = time_period; agent_row[7] = 1; for (int ii = 8; ii <= 10; ii++) { agent_row[ii] = cost; } agent_row[11] = node_sequence; agent_row[12] = time_sequence; agent.Rows.Add(agent_row); }//train path int bt_road_link_id = 1, bt_agent_id = 1; for (int i = 0; i < train_path.Rows.Count; i++) { for (int station = 1; station <= station_num; station++) { int[] u_d_t = get_station_time(train_path.Rows[i], station, out int u_tf, out int u_tp, out int d_tf, out int d_tp); int[] u_range = new int[2] { time_sub(u_d_t[0], u_tf), time_add(u_d_t[0], u_tp) }; int[] d_range = new int[2] { time_sub(u_d_t[1], d_tf), time_add(u_d_t[1], d_tp) }; if (u_tf != 0) { DataRow bt_node_u1 = bt_node.NewRow(); DataRow bt_node_u2 = bt_node.NewRow(); g_bt_node(bt_node_u1, station, u_range[0], 1); g_bt_node(bt_node_u2, station, u_range[1], 1); bt_node.Rows.Add(bt_node_u1); bt_node.Rows.Add(bt_node_u2); DataRow bt_link1 = bt_road_link.NewRow(); g_bt_road_link(bt_link1, station, u_range[0], u_range[1], 1, bt_road_link_id++); bt_road_link.Rows.Add(bt_link1); DataRow bt_agent1 = bt_agent.NewRow(); g_bt_agent(bt_agent1, station, u_range[0], u_range[1], 1, bt_agent_id++); bt_agent.Rows.Add(bt_agent1); } if (d_tf != 0) { DataRow bt_node_d1 = bt_node.NewRow(); DataRow bt_node_d2 = bt_node.NewRow(); g_bt_node(bt_node_d1, station, d_range[0], 2); g_bt_node(bt_node_d2, station, d_range[1], 2); bt_node.Rows.Add(bt_node_d1); bt_node.Rows.Add(bt_node_d2); DataRow bt_link2 = bt_road_link.NewRow(); g_bt_road_link(bt_link2, station, d_range[0], d_range[1], 2, bt_road_link_id++); bt_road_link.Rows.Add(bt_link2); DataRow bt_agent2 = bt_agent.NewRow(); g_bt_agent(bt_agent2, station, d_range[0], d_range[1], 2, bt_agent_id++); bt_agent.Rows.Add(bt_agent2); } } }//blocking time if (!Directory.Exists(strpath + "\\train_path")) { Directory.CreateDirectory(strpath + "\\train_path"); } SaveCsv(node, strpath + "\\train_path\\node"); SaveCsv(road_link, strpath + "\\train_path\\road_link"); SaveCsv(agent, strpath + "\\train_path\\agent"); SaveCsv(agent_type, strpath + "\\train_path\\agent_type"); if (!Directory.Exists(strpath + "\\train_conflicts")) { Directory.CreateDirectory(strpath + "\\train_conflicts"); } conf_node = GetDistinctSelf(conf_node, "node_id"); SaveCsv(conf_node, strpath + "\\train_conflicts\\node"); SaveCsv(conf_road_link, strpath + "\\train_conflicts\\road_link"); SaveCsv(conf_agent, strpath + "\\train_conflicts\\agent"); SaveCsv(agent_type, strpath + "\\train_conflicts\\agent_type"); if (!Directory.Exists(strpath + "\\blocking_time")) { Directory.CreateDirectory(strpath + "\\blocking_time"); } bt_node = GetDistinctSelf(bt_node, "node_id"); SaveCsv(bt_node, strpath + "\\blocking_time\\node"); SaveCsv(bt_road_link, strpath + "\\blocking_time\\road_link"); SaveCsv(bt_agent, strpath + "\\blocking_time\\agent"); SaveCsv(agent_type, strpath + "\\blocking_time\\agent_type"); node.Merge(bt_node); for (int i = 0; i < bt_road_link.Rows.Count; i++) { bt_road_link.Rows[i][1] = road_link_id++; } road_link.Merge(bt_road_link); for (int i = 0; i < bt_agent.Rows.Count; i++) { bt_agent.Rows[i][0] = agent_id++; } agent.Merge(bt_agent); if (!Directory.Exists(strpath + "\\train_path and blocking_time")) { Directory.CreateDirectory(strpath + "\\train_path and blocking_time"); } SaveCsv(node, strpath + "\\train_path and blocking_time\\node"); SaveCsv(road_link, strpath + "\\train_path and blocking_time\\road_link"); SaveCsv(agent, strpath + "\\train_path and blocking_time\\agent"); SaveCsv(agent_type, strpath + "\\train_path and blocking_time\\agent_type"); node.Merge(conf_node); for (int i = 0; i < conf_road_link.Rows.Count; i++) { conf_road_link.Rows[i][1] = road_link_id++; } road_link.Merge(conf_road_link); for (int i = 0; i < conf_agent.Rows.Count; i++) { conf_agent.Rows[i][0] = agent_id++; } agent.Merge(conf_agent); if (!Directory.Exists(strpath + "\\train_path and blocking_time and train_conflicts")) { Directory.CreateDirectory(strpath + "\\train_path and blocking_time and train_conflicts"); } SaveCsv(node, strpath + "\\train_path and blocking_time and train_conflicts\\node"); SaveCsv(road_link, strpath + "\\train_path and blocking_time and train_conflicts\\road_link"); SaveCsv(agent, strpath + "\\train_path and blocking_time and train_conflicts\\agent"); SaveCsv(agent_type, strpath + "\\train_path and blocking_time and train_conflicts\\agent_type"); }