diff --git a/examples/Simple_Realistic_Railway_Generator.py b/examples/Simple_Realistic_Railway_Generator.py index 859c34a42c3da6c3bf8de03345d3659cda4ecff4..0882595b93f9953cf2e07cfd3576b925c6f0c301 100644 --- a/examples/Simple_Realistic_Railway_Generator.py +++ b/examples/Simple_Realistic_Railway_Generator.py @@ -198,7 +198,7 @@ def realistic_rail_generator(num_cities=5, allowed_rotation_angles=[0, 90], max_number_of_station_tracks=4, nbr_of_switches_per_station_track=2, - max_number_of_connecting_tracks=4, + connect_max_nbr_of_shortes_city=4, do_random_connect_stations=False, seed=0, print_out_info=True) -> RailGenerator: @@ -210,7 +210,7 @@ def realistic_rail_generator(num_cities=5, :param allowed_rotation_angles: Rotate the city (around center) :param max_number_of_station_tracks: max number of tracks per station :param nbr_of_switches_per_station_track: number of switches per track (max) - :param max_number_of_connecting_tracks: max number of connecting track between stations + :param connect_max_nbr_of_shortes_city: max number of connecting track between stations :param do_random_connect_stations : if false connect the stations along the grid (top,left -> down,right), else rand :param seed: Random Seed :print_out_info : print debug info @@ -316,14 +316,14 @@ def realistic_rail_generator(num_cities=5, return nodes_added def connect_stations(rail_trans, rail_array, org_s_nodes, org_e_nodes, nodes_added, - inter_max_number_of_connecting_tracks): + inter_connect_max_nbr_of_shortes_city): s_nodes = org_s_nodes.copy() e_nodes = org_e_nodes.copy() for city_loop in range(len(s_nodes)): - old_cl = -1 - for k in range(inter_max_number_of_connecting_tracks): + old_cl = [] + for k in range(inter_connect_max_nbr_of_shortes_city): sns = s_nodes[city_loop] min_distance = np.inf end_node = None @@ -335,14 +335,14 @@ def realistic_rail_generator(num_cities=5, for en in ens: for sn in sns: d = Vec2dOperations.get_norm_pos(Vec2dOperations.subtract_pos(en, sn)) - if d < min_distance and old_cl != city_loop_find_shortest: + if d < min_distance and not (city_loop_find_shortest in old_cl): min_distance = d end_node = en start_node = sn cl = city_loop_find_shortest if end_node is not None: - old_cl = cl + old_cl.append(cl) tmp_trans_sn = rail_array[start_node] tmp_trans_en = rail_array[end_node] rail_array[start_node] = 0 @@ -358,7 +358,7 @@ def realistic_rail_generator(num_cities=5, rail_array[end_node] = tmp_trans_en def connect_random_stations(rail_trans, rail_array, start_nodes_added, end_nodes_added, nodes_added, - inter_max_number_of_connecting_tracks): + inter_connect_max_nbr_of_shortes_city): x = np.arange(len(start_nodes_added)) random_city_idx = np.random.choice(x, len(x), False) @@ -372,7 +372,7 @@ def realistic_rail_generator(num_cities=5, e_nodes = end_nodes_added[idx_b] max_input_output = max(len(s_nodes), len(e_nodes)) - max_input_output = min(inter_max_number_of_connecting_tracks, max_input_output) + max_input_output = min(inter_connect_max_nbr_of_shortes_city, max_input_output) if do_random_connect_stations: idx_s_nodes = np.random.choice(np.arange(len(s_nodes)), len(s_nodes), False) @@ -389,10 +389,10 @@ def realistic_rail_generator(num_cities=5, np.random.choice(np.arange(len(idx_e_nodes)), max_input_output - len( idx_e_nodes))) - if len(idx_s_nodes) > inter_max_number_of_connecting_tracks: - idx_s_nodes = np.random.choice(idx_s_nodes, inter_max_number_of_connecting_tracks, False) - if len(idx_e_nodes) > inter_max_number_of_connecting_tracks: - idx_e_nodes = np.random.choice(idx_e_nodes, inter_max_number_of_connecting_tracks, False) + if len(idx_s_nodes) > inter_connect_max_nbr_of_shortes_city: + idx_s_nodes = np.random.choice(idx_s_nodes, inter_connect_max_nbr_of_shortes_city, False) + if len(idx_e_nodes) > inter_connect_max_nbr_of_shortes_city: + idx_e_nodes = np.random.choice(idx_e_nodes, inter_connect_max_nbr_of_shortes_city, False) for i in range(max_input_output): start_node = s_nodes[idx_s_nodes[i]] @@ -432,12 +432,12 @@ def realistic_rail_generator(num_cities=5, if print_out_info: print("intern_nbr_of_switches_per_station_track:", intern_nbr_of_switches_per_station_track) - inter_max_number_of_connecting_tracks = max_number_of_connecting_tracks - if max_number_of_connecting_tracks < 1: - warnings.warn("min inter_max_number_of_connecting_tracks requried to be > 1!") - inter_max_number_of_connecting_tracks = 1 + inter_connect_max_nbr_of_shortes_city = connect_max_nbr_of_shortes_city + if connect_max_nbr_of_shortes_city < 1: + warnings.warn("min inter_connect_max_nbr_of_shortes_city requried to be > 1!") + inter_connect_max_nbr_of_shortes_city = 1 if print_out_info: - print("inter_max_number_of_connecting_tracks:", inter_max_number_of_connecting_tracks) + print("inter_connect_max_nbr_of_shortes_city:", inter_connect_max_nbr_of_shortes_city) agent_start_targets_nodes = [] @@ -465,10 +465,10 @@ def realistic_rail_generator(num_cities=5, if True: if do_random_connect_stations: connect_random_stations(rail_trans, rail_array, s_nodes, e_nodes, nodes_added, - inter_max_number_of_connecting_tracks) + inter_connect_max_nbr_of_shortes_city) else: connect_stations(rail_trans, rail_array, s_nodes, e_nodes, nodes_added, - inter_max_number_of_connecting_tracks) + inter_connect_max_nbr_of_shortes_city) # ---------------------------------------------------------------------------------- # fix all transition at starting / ending points (mostly add a dead end, if missing) @@ -530,7 +530,7 @@ for itrials in range(100): allowed_rotation_angles=np.arange(0, 360, 45), max_number_of_station_tracks=4, nbr_of_switches_per_station_track=2, - max_number_of_connecting_tracks=4, + connect_max_nbr_of_shortes_city=4, do_random_connect_stations=False, # Number of cities in map seed=int(time.time()) # Random seed