92 lines
2.3 KiB
Python
92 lines
2.3 KiB
Python
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
|
|
|
|
|
|
|
|
|