def main():
    size = query_size_grid()  # Query user for size of city grid

    num_simuls = query_number_simulations()  # Query user for number of simulations to run

    (min_num_peds, max_num_peds) = query_number_pedestrians(size)  # Query user for number of pedestrians

    out_pref = query_output_preference()  # Query user as to whether to print view of city or output png/Gephi files

    print("--------------------")
    print("Generating a random city")
    city = City.generate_random_city(size, size)  # Build the city network

    if out_pref[0]:
        print("\nHere is the randomly generated city grid that will be used for simulation (saved as city.png):\n")
    city.print(out_pref[0], out_pref[1])  # Display city network if user requests

    simulation_summary = {}  # Container for all results summary
    simulation = 1
    while simulation <= num_simuls:  # Run simulations and record results

        print("Running simulation {}".format(simulation))

        pedestrian_summary = {}
        for num_peds in range(min_num_peds, max_num_peds + 1):

            intersection_list = run_simulation(city, num_peds)

            if intersection_list:
                pedestrian_summary[num_peds] = {
                    "Pedestrians": num_peds,
                    "City": city,
                    "Top_Location": intersection_list[0][0],
                    "Number_Collisions": intersection_list[0][1]
                }
            else:
                break
        simulation_summary[simulation] = pedestrian_summary
        simulation += 1

    print_aggregate_statistics(simulation_summary, size, city)

    simulation_reports = []
    simulation_reports.extend([report for report in simulation_summary.values()])
Ejemplo n.º 2
0
from city import City
from pedestrian import Pedestrian

city = City.generate_random_city(10, 10)
#city.print(True, True)
pedestrians = Pedestrian.generate_random_pedestrians(50, city)