2015-12-19 9 views
0

J'ai été chargé d'une question de "sélection aléatoire d'un patch voisin qui a une altitude plus élevée." Mon code est trouvé ci-dessous.netlogo - Sélectionne aléatoirement un patch de voisin qui a une élévation plus élevée, any? commande

Je crois que je suis obligé d'utiliser le "tout?" commande pour éviter d'obtenir le problème «personne».

to move-up 
let myelevPatch [elevation] of patch-here 
let higherpatches neighbors with [elevation > myelevPatch] 
move-to one-of higherpatches 
end 

Je ne peux pas sembler contourner ce problème, si vous pouviez me aider à obtenir autour de lui, il est très apprécié

+1

Vous pouvez remplacer '[altitude] de patch-here' avec simplement' elevation'. Une tortue a un accès direct aux variables de patch du patch sur lequel elle se trouve. –

+0

Recevez-vous un message d'erreur, ou un comportement incorrect, ou quoi? Vous nous avez fourni du code et dites que vous avez "ce problème" avec. Qu'est-ce que "ce problème"? Quelle est votre preuve que votre code est incorrect? –

Répondre

1

Votre code semble être bien autre que le cas de personne. Tout? consomme un jeu d'agents. voisins avec retourne un jeu d'agents.

to move-up 
    let myelev [elevation] of patch-here 
    let higherpatches neighbors with [elevation > myelev] 
    if any? higherpatches 
    [move-to one-of higherpatches] 
end 

Noter ce qui suit est équivalent:

if count higherpatches > 0 
+0

Notez que j'ai changé votre nom de variable de myelevPatch en myelev car le type n'est pas un patch. – mattsap