def set_sugar_level(agent,sugar_level): if sugar_level < 0: raise ValueError("Attention niveau sucre toujours positif") #vérification que le niveau de sucre ne dépasse pas la limite elif sugar_level > p.get_pop_property(get_population(agent),"MAX_SUGAR_LEVEL"): raise ValueError("attention niveau de sucre supérieur à celui de la population") __set_property(agent,AGENT_SUGAR_LEVEL_IDX,sugar_level)
def grow_up(agent): """ règle de l'evolution de l'âge de l'agent par cycle """ age = get_age(agent) pop = get_population(agent) max_age = p.get_pop_property(pop, "MAX_AGENT_AGE") if age <= max_age: set_age(agent, age + 1)
def has_max_sugar_level(agent): """ vérifie que l'agent a déjà un niveau de sucre saturé """ sugar_level = get_sugar_level(agent) pop = get_population(agent) max_sugar_level = p.get_pop_property(pop, "MAX_SUGAR_LEVEL") return (sugar_level >= max_sugar_level)
def grow_up(agent): """ règle de l'evolution de l'âge de l'agent par cycle """ age = get_age(agent) pop = get_population(agent) max_age = p.get_pop_property(pop,"MAX_AGENT_AGE") if age <= max_age: set_age(agent,age+1)
def has_max_sugar_level(agent): """ vérifie que l'agent a déjà un niveau de sucre saturé """ sugar_level = get_sugar_level(agent) pop = get_population(agent) max_sugar_level = p.get_pop_property(pop,"MAX_SUGAR_LEVEL") return (sugar_level >= max_sugar_level)
def set_sugar_level(agent, sugar_level): if sugar_level < 0: raise ValueError("Attention niveau sucre toujours positif") #vérification que le niveau de sucre ne dépasse pas la limite elif sugar_level > p.get_pop_property(get_population(agent), "MAX_SUGAR_LEVEL"): raise ValueError( "attention niveau de sucre supérieur à celui de la population") __set_property(agent, AGENT_SUGAR_LEVEL_IDX, sugar_level)
def make_a_child(agent): """ règle permettant la reproduction asexuée selon une certaine probablité les agents doivent être dans un intervalle d'âge précis """ pop = get_population(agent) env = get_env(agent) min_age = p.get_pop_property(pop, "MIN_AGE_TO_MAKE_CHILDS") max_age = p.get_pop_property(pop, "MAX_AGE_TO_MAKE_CHILDS") max_pop = p.get_pop_property(pop, "MAX_POP") min_prob, max_prob = p.get_pop_property(pop, "PROB_TO_HAVE_SEX") if (min_age <= get_age(agent) <= max_age and theres_is_an_other_sex_around(agent) \ and randint(min_prob,max_prob) == 1 and p.size(pop) < max_pop ): new_child = new_instance(pop) set_age(new_child, 0) set_sugar_level(agent, 0) #le nouveau-née hérite du métabolisme et de la vision de capacité de son géniteur set_metabolism(new_child, get_metabolism(agent)) set_vision_capacity(new_child, get_vision_capacity(agent)) agents_list = p.get_agents(pop) agents_list.append(new_child)
def make_a_child(agent): """ règle permettant la reproduction asexuée selon une certaine probablité les agents doivent être dans un intervalle d'âge précis """ pop = get_population(agent) env = get_env(agent) min_age = p.get_pop_property(pop,"MIN_AGE_TO_MAKE_CHILDS") max_age = p.get_pop_property(pop,"MAX_AGE_TO_MAKE_CHILDS") max_pop = p.get_pop_property(pop,"MAX_POP") min_prob,max_prob = p.get_pop_property(pop,"PROB_TO_HAVE_SEX") if (min_age <= get_age(agent) <= max_age and theres_is_an_other_sex_around(agent) \ and randint(min_prob,max_prob) == 1 and p.size(pop) < max_pop ): new_child = new_instance(pop) set_age(new_child,0) set_sugar_level(agent,0) #le nouveau-née hérite du métabolisme et de la vision de capacité de son géniteur set_metabolism(new_child,get_metabolism(agent)) set_vision_capacity(new_child,get_vision_capacity(agent)) agents_list = p.get_agents(pop) agents_list.append(new_child)
def get_is_living(agent): """ vérifie si un agent est vivant : s'il a assez à manger, s'il peut se déplacer et si son age ne dépasse pas la limite """ cell = get_cell(agent) cell_sugar_level = c.get_sugar_level(cell) metabolism = get_metabolism(agent) agent_sugar_level = get_sugar_level(agent) age = get_age(agent) pop = get_population(agent) max_age = p.get_pop_property(pop,"MAX_AGENT_AGE") is_alive = (cell_sugar_level+agent_sugar_level >= metabolism) and age <= max_age if not is_alive: kill(agent) return is_alive
def get_is_living(agent): """ vérifie si un agent est vivant : s'il a assez à manger, s'il peut se déplacer et si son age ne dépasse pas la limite """ cell = get_cell(agent) cell_sugar_level = c.get_sugar_level(cell) metabolism = get_metabolism(agent) agent_sugar_level = get_sugar_level(agent) age = get_age(agent) pop = get_population(agent) max_age = p.get_pop_property(pop, "MAX_AGENT_AGE") is_alive = (cell_sugar_level + agent_sugar_level >= metabolism) and age <= max_age if not is_alive: kill(agent) return is_alive
def consumption_sugar(agent, amount): """ consomation de sucre par l'agent amount : quantité de sucre qui va être consomé (s'il le peut) """ cell = get_cell(agent) pop = get_population(agent) c_sugar_level = c.get_sugar_level(cell) a_sugar_level = get_sugar_level(agent) metabolism = get_metabolism(agent) max_sugar_level = p.get_pop_property(pop, "MAX_SUGAR_LEVEL") if (amount >= metabolism): if not has_max_sugar_level(agent): a_sugar_level += amount - metabolism if a_sugar_level > max_sugar_level: a_sugar_level = max_sugar_level c_sugar_level -= amount else: a_sugar_level -= metabolism elif (amount + a_sugar_level) >= metabolism: a_sugar_level -= metabolism - amount c_sugar_level -= amount set_sugar_level(agent, a_sugar_level) c.set_sugar_level(cell, c_sugar_level)
def consumption_sugar(agent,amount): """ consomation de sucre par l'agent amount : quantité de sucre qui va être consomé (s'il le peut) """ cell = get_cell(agent) pop = get_population(agent) c_sugar_level = c.get_sugar_level(cell) a_sugar_level = get_sugar_level(agent) metabolism = get_metabolism(agent) max_sugar_level = p.get_pop_property(pop,"MAX_SUGAR_LEVEL") if (amount >= metabolism): if not has_max_sugar_level(agent): a_sugar_level += amount - metabolism if a_sugar_level > max_sugar_level: a_sugar_level = max_sugar_level c_sugar_level -= amount else: a_sugar_level -= metabolism elif (amount + a_sugar_level) >= metabolism: a_sugar_level -= metabolism - amount c_sugar_level -= amount set_sugar_level(agent,a_sugar_level) c.set_sugar_level(cell,c_sugar_level)