J'ai du mal à écrire un modèle d'irrigation. Je veux que les tortues prennent des valeurs du fichier CSV avec les tiques. Il y a 100 valeurs dans la liste. Je veux 10 tortues à choisir en premier (disons 20) Valeur Tournez à tour d'objet., Turtle 0, 1,2 3. Les tortues prendront la 2e valeur (comme 22) ainsi de suite et ainsi de suite. Le concept est lié à la demande de l'eau qui est fixe et changera après 10 jours pour chaque tortue. 100 valeurs seront consommées dans 1000 tiques Toute aide à cet égard sera très appréciée. P>
merci p>
3 Réponses :
Voici un code qui pourrait vous aider à démarrer. Je suis abstrait du fichier CSV en créant simplement une liste, La procédure la liste de demande code>, de numéros de demande aléatoire - vous les liriez dans le fichier CSV au début de votre simulation. À partir de ce point, dix tortues sont créées avec une variable code> de la variable code>, Demande CODE> et dans une liste triée par Qui code> Number. go code> utilise la coche actuelle et l'opérateur code> code> pour déterminer quel élément de la liste de demande est le bon pour cet ensemble de dix tiques et le MOD CODE> L'opérateur détermine quelle tortue (consommateur) dans la liste des consommateurs devrait, à cette coche, prendre cette valeur pour sa demande code>. Le Afficher code> montre simplement la demande de chaque tortue à la fin de chaque tick. P>
Merci beaucoup Charles. J'ai traduit dans mon modèle et le programme fonctionne bien. Je veux poser une autre chose. J'ajoute ci-dessous en réponse. s'il vous plaît donnez votre avis.
IWR-PERDAD est un fichier CSV. Je veux demander si je ne trie pas et n'écrivez pas la liste des fermiers! Comment cela sera affiché dans la carte de voir pour voir si les codes fonctionnent bien.
Breed [farmers farmer]
globals [demand-list IWR-perday farmers-list]
farmers-own [current-demand irrigation-turn ]
to setup
clear-all
create-farmers 10 [ set irrigation-turn [0]
ask farmer 0 [ setxy min-pxcor + 1 0]
ask farmer 1 [ setxy min-pxcor + 3 0]
ask farmer 2 [ setxy min-pxcor + 5 0]
ask farmer 3 [ setxy min-pxcor + 7 0]
ask farmer 4 [ setxy min-pxcor + 9 0]
ask farmer 5 [ setxy min-pxcor + 11 0]
ask farmer 6 [ setxy min-pxcor + 13 0]
ask farmer 7 [ setxy min-pxcor + 15 0]
ask farmer 8 [ setxy min-pxcor + 17 0]
ask farmer 9 [ setxy min-pxcor + 19 0]]
set farmers-list sort turtles
import-data
reset-ticks
end
to go
foreach [0 1 2 3 4 5 6 7 8 9 ] [ ?1 ->
ask farmers with [who = ?1] [let list-element floor ticks / 10
set current-demand item list-element IWR-perday]]
show map [c -> [current-demand] of c] farmers-list
tick
tick
end
to import-data
;; Import water demand
ifelse ( file-exists? "IWR-perday.txt" )
[
set IWR-perday []
file-open "IWR-perday.txt"
while [ not file-at-end? ]
[
*set IWR-perday sentence IWR-perday (list file-read)
]
file-close
]
[ user-message "There is no IWR-perday.txt file in current directory!" ]
end*
Si vous posez une nouvelle question, elle devrait vraiment être posée comme une nouvelle question, pas comme un complément à un ancien. Mais laissez-moi y répondre ici. J'ai pris votre code ci-dessus et j'ai apporté des changements. Tout d'abord, j'ai pris le Je pense que si vous exécutez ceci avec votre fichier de données, Ce que j'ai fait pour vérifier cela, vous verrez que dans chaque ensemble de dix tiques, la demande des dix tortues est fixée une à une. Avec plus de 1000 valeurs dans Setxy code> demande hors du bloc Créer-Farmers. Tout ce qui est dans ce bloc est exécuté par chacun des agriculteurs créés afin, dans ce cas, il est exécuté 10 fois. Ensuite, essayez si vous pouvez tout ce que vous pouvez éviter qui code>. Vous n'avez presque jamais besoin d'eux. En particulier, Farmers-List Code> contient la liste triée des agriculteurs et vous pouvez simplement l'utiliser pour demander directement à l'agriculteur approprié de définir sa demande. En outre, vous n'avez pas besoin de chaque agriculteur pour définir list-élément code> car il est identique pour tous les agriculteurs de n'importe quelle tick. Vous avez deux Cochez CODE> COMMANDES - Vous en voulez seulement un. Et enfin, vous voyez que j'ai simplifié votre commande lecture code>. Dans votre cas, Lecture de fichier code> renvoie une seule valeur, que vous pouvez simplement ajouter à la liste. iwr-Perday code>, cela ira plus de 10 000 ticks! P> p>
Ceci est censé finir par une application de 10000 ticks car cela contient des besoins en eau de la récolte dans tous les 10 jours pendant le nombre d'années. Merci pour l'aide. Cela signifie beaucoup.