J'ai ce problème: J'ai une tortue qui traite avec un ensemble d'agents qui ont tous un lien avec la tortue spécifique. À la fin, je veux que la tortue supprime tous ses liens avec les agents de l'ensemble d'agents mais je ne trouve pas de moyen. Est-ce que quelqu'un peut m'aider? Je signale ici le code qui ne fonctionne pas. En particulier, la ligne problématique est "demandez à mes-liens [other-end = traitors] [die]"
to cooperate-with-friend set traitors friends with [cheater? = True] set loyals friends with [cheater? = False] ask traitors [set wealth wealth + 3] ask loyals [set wealth wealth + 2] set wealth wealth + count traitors * -3 + count loyals * 2 ask my-links [other-end = traitors] [die] end
NB: friends est un ensemble d'agents regroupant toutes les tortues ayant un lien vers la tortue exécutant le commander.
3 Réponses :
Étant donné que vous demandez aux traîtres de faire quelque chose, je suppose que les traîtres sont un ensemble d'angents. other-end , cependant, est un agent, donc other-end = traitors compare un agent avec un ensemble d'agents. Les deux ne peuvent jamais être égaux. Ce que vous voulez savoir, c'est si l'agent à l'autre bout est un membre du groupe angentset des traîtres. Pour cela, vous pouvez utiliser member?.
ask my-links with [member? other-end traitors] [die]
Merci d'avoir attrapé ce JenB.
Si traîtres est une race, alors membre? les traîtres de l'autre bout peuvent être remplacés par is-traitor? autre extrémité
Mmm .. Netlogo n'accepte pas cette ligne. Ça dit ça après le membre? attend une commande.
En attendant, j'ai résolu comme ça. Un peu tordu mais cela semble fonctionner:
let anger random-float 1
repeat count traitors [
let traitor one-of traitors
if link-with traitor != nobody and tolerance < anger [
ask link-with traitor [die]
]
]
il manquait un avec dans le code. Voir une nouvelle réponse pour amener la tolérance / la colère
La façon de modifier l'approche de Charles pour tenir compte de votre variable de tolérance est:
ask my-links with [member? other-end traitors] [ if tolerance < random-float 1 [die] ]