def generate_agents(df, country, population):
"""
Generate a dataframe of agents for a country where population
is the number of agents to be created.
"""
def max_value(attribute):
return df[attribute].max()
# Turn this on for truly random output from each process.
# pid = mp.current_process()._identity[0]
rand = np.random.mtrand.RandomState(0)
country_data = df[df.index == country].to_dict("records")[0]
gdp = country_data["GDP"]
income_array = gdp / 10 * rand.chisquare(10, population).astype('float32')
unemployment_rate = float(country_data["Unemployment"] / 100.0)
employment_array = rand.choice([True, False], population,
p=[1 - unemployment_rate, unemployment_rate])
attachment_array = (country_data["Fertility"] *
rand.triangular(0.0, 0.5, 1.0, population) /
max_value("Fertility")).astype('float32')
frame = pd.DataFrame({
"Country": pd.Categorical([country] * population, list(df.index)),
"Income": income_array,
"Employed": employment_array.astype('bool'),
"Attachment": attachment_array,
"Location": pd.Categorical([country] * population, list(df.index)),
"Migration": 0,
}, columns=world_columns)
return frame
评论列表
文章目录