import numpy as np from dataclasses import dataclass from typing import List, Dict, Optional from collections import defaultdict ##https://censusatschool.ca/data-results/2017-2018/average-height-by-age/ @dataclass class AgentConfig: id:int grade:str door:int speed:float radius:float def agent_params(): gr_data = { # [0]: number of students # [1]: door number # [2]: speed mean # [3]: speed standard deviation # [4]: radius mean "Kindergarden":np.array( [34,0,1.21,0.24,0.407] ), "Grade 1":np.array( [26,0,1.35,0.26,0.407] ), "Grade 2":np.array( [42,0,1.42,0.28,0.407] ), "Grade 3":np.array( [39,0,1.48,0.23,0.407] ), "Grade 4":np.array( [30,1,1.58,0.26,0.417] ), "Grade 5":np.array( [43,1,1.59,0.24,0.434] ), "Grade 6":np.array( [29,1,1.65,0.24,0.454] ), "Grade 7":np.array( [45,2,1.61,0.25,0.471] ), "Grade 8":np.array( [36,2,1.66,0.24,0.488] ), "Grade 9":np.array( [44,2,1.60,0.24,0.500] ), "Grade 10":np.array( [36,2,1.57,0.23,0.507] ), "Grade 11":np.array( [54,2,1.51,0.22,0.515] ), "Grade 12":np.array( [46,2,1.54,0.23,0.520] )} agent_id = 1 rng = np.random.default_rng(seed=42) all_agents = [] gr_agents = [] for grade in gr_data: for num in range(int(gr_data[grade][0])): door = gr_data[grade][1] speed = rng.normal( loc=gr_data[grade][2], scale=gr_data[grade][3], size=1) radius = gr_data[grade][4] gr_agents.append( AgentConfig( id=agent_id, grade=grade, door=door, speed=speed, radius = radius )) agent_id += 1 all_agents.append(gr_agents) gr_agents = [] #for grade in all_agents: # for agent in grade: # print(agent) return all_agents