Esempio n. 1
0
def start_simulation(initial_data, verbose=True):
    enable_contact_tracing = bool(initial_data['contact_tracing'])  # Enable contact tracing
    total_agents = int(initial_data['total_agents'])  # Number of Agents
    initially_infected_agents = int(initial_data['infected_agents'])  # Number of initially infected agents
    initially_healthy_agents = int(total_agents - initially_infected_agents)  # Number of initially healthy agents
    office_capacity = int(initial_data['office_capacity'])  # Capacity of agents per office
    house_capacity = int(initial_data['home_capacity'])  # Capacity of agents per house
    mortality_rate = float(initial_data['mortality_rate'])  # Mortality rate
    total_days_sick = int(initial_data['sick_days'])  # Number of days sick
    days_until_symptoms = int(initial_data['free_symptoms_days'])  # Number of days until symptoms
    total_days_simulated = int(initial_data['total_days'])  # Number of days of simulation
    risk_infection_home = float(initial_data['risk_home'])  # Risk of infection at home
    risk_infection_work = float(initial_data['risk_work'])  # Risk of infection at work
    verbose = bool(verbose)  # If we want printing during simulator run

    simulation_id = initial_data['simulation_id'].replace("-", "_")

    locations, agent_array = initialize(total_agents, initially_infected_agents, initially_healthy_agents,
                                        office_capacity, house_capacity, mortality_rate, total_days_sick,
                                        days_until_symptoms, total_days_simulated, risk_infection_home,
                                        risk_infection_work)

    saver = Saver(verbose, simulation_id)
    simulator = Simulator(enable_contact_tracing, locations, agent_array, saver, simulation_id)

    saver.initialize_db(locations, agent_array)

    while simulator.current_day <= total_days_simulated:
        simulator.step()

    return 200, saver.overview