예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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)
예제 #8
0
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)
예제 #9
0
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
예제 #10
0
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
예제 #11
0
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)
예제 #12
0
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)