Signaler

Comment affecter des valeurs à une turtle netlogo ? [Résolu]

Posez votre question mynoe 18Messages postés dimanche 27 novembre 2016Date d'inscription 8 avril 2017 Dernière intervention - Dernière réponse le 10 déc. 2016 à 19:25 par mynoe
Bonjour,

J'ai comme projet la modélisation d'une forêt sur netlogo. Je dois donc affecter des valeurs à mes "turtles" arbres :
- age
- taille
- circonférence
- envergure

Comment puis-je affecter différentes valeurs à mes turtles arbres ?

Merci de votre aide
Afficher la suite 
Utile
+0
plus moins
Bonjour,

Les variables d'un agent doivent être déclarées au début du programme, puis tu peux les modifier en appelant l'agent.

Exemple :

;;;;; DECLARATIONS

breed [ arbres arbre ]
arbres-own [ age taille ]

;;;;; INITIALISATION

to setup
  
  clear-all
  reset-ticks

  create-arbres 1
  [
    set shape "tree"
    set age 0
    set taille 0
  ]

end

;;;;; EVOLUTION

to go

  ask arbres
  [
    set age (age + 1)
    set taille (taille + 1)
  ]

  tick

end

Tu peux tester ensuite avec le Command Center :
setup
inspect arbre 0
go

Tu vas voir s'afficher une fenêtre "arbre 0" après la commande inspect, avec en bas les valeur age=0, taille=0 puis après le go, age=1 et taille=1.

Tu peux aussi créer des boutons associer aux commandes
setup
et
go
pour faire ça via l'interface graphique plutôt que la ligne de commandes.
mynoe 18Messages postés dimanche 27 novembre 2016Date d'inscription 8 avril 2017 Dernière intervention - 27 nov. 2016 à 12:18
Un grand merci pour votre aide qui m'a permis d'y voir plus clair !

Pouvez vous svp me donner encore un petit coup de main :

Comment peut-on définir un "plot" traçant plusieurs courbes pour les différentes variables
- la moyenne de la taille de tous les arbres
- la moyenne de la circonférence de tous les arbres ...

En fonction de l'évolution du modèle, en donc de l'âge des arbres

Par avance merci
Répondre
KX 14150Messages postés samedi 31 mai 2008Date d'inscription ModérateurStatut 23 avril 2017 Dernière intervention - 27 nov. 2016 à 12:37
Par exemple pour l'age moyen, tu rajoutes
globals [ age-moyen ]
dans les déclarations, puis dans le coeur du programme tu calculer sa valeur à chaque itération :

set age-moyen 0
ask arbres [ set age-moyen (age-moyen + age) ]
set age-moyen (age-moyen / (count arbres))
tick

Et enfin, tu te crées dans l'interface un élément de type plot dont tu configures un des "plot pens" avec la "pen update commands" qui vaut
plot age-moyen

Lorsque le programme arrive sur
tick
il rajoute un point dans le graphe.
Répondre
mynoe 18Messages postés dimanche 27 novembre 2016Date d'inscription 8 avril 2017 Dernière intervention - 27 nov. 2016 à 17:23
Merci encore de votre aide, je vais essayer d'ajouter cela à mon modèle !

Bonne fin de journée
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonsoir,

Je reviens vers vous pour pour une nouvelle question.

Je dois calculer pour chaque arbre un coefficient en fonction des arbres voisins (dans les 5m autour de lui). Cela correspond a la couverture angulaire entre chaque arbre
n
= ∑ arctan [ (hB - hA ) / distance arbreA arbreB ]
b =1
≠1

A : arbre étudié de hauteur hA
B : (un des) voisin de hauteur hB
n : nombre de voisins

(je ne sais pas comment joindre une photo pour illustrer désolée)

Voici mon code

breed [arbres arbre]
arbres-own [age circonference hauteur envergure]
globals [ deltaC deltaH deltaR age-moyen circonference-moy hauteur-moy envergure-moy xarbre1 yarbre1 trouve dist diff ]

to setup
clear-all
reset-ticks
set-default-shape arbres "tree"
ask patches [set pcolor brown - 3 ]

create-arbres Nb_arbres
[
set color green setxy random-xcor random-ycor
set age 10
set circonference 0.4
set hauteur 4
set envergure 2
set age-moyen 0
set hauteur-moy 0

]
end


to go
if ticks >= 50 [ stop ]
ask arbres [grow]
ask arbres [competition]
tick
do-plot
end

to competition
set xarbre1 pxcor
set yarbre1 pycor
if distancexy xarbre1 yarbre1 < 5
[
formule-a-saisir-ici??

]
end

to grow
set age ( age + 1 )
set deltaC ( 0.21787 * exp (age * 0.0849) * ( 1 - exp( -(age) * 0.0849)) ^ 1.127 )
set circonference ( circonference + deltaC )
set deltaH ( 0.0929 * deltaC )
set hauteur ( hauteur + deltaH )
set deltaR ( (0.09179 / 2 ) * deltaC )
set envergure ( envergure + deltaR )

end

to do-plot
set-current-plot "plot 2"
plot count turtles
end


Merci beaucoup pour l'aide que vous pouvez m'apporter
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !