Comment affecter des valeurs à une turtle netlogo ?

Résolu
mynoe Messages postés 23 Statut Membre -  
mynoe Messages postés 23 Statut Membre -
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

2 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    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.
    La confiance n'exclut pas le contrôle
    0
    1. mynoe Messages postés 23 Statut Membre
       
      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
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      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.
      0
    3. mynoe Messages postés 23 Statut Membre
       
      Merci encore de votre aide, je vais essayer d'ajouter cela à mon modèle !

      Bonne fin de journée
      0
  2. mynoe Messages postés 23 Statut Membre
     
    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
    0