La procédure de reproduction est
de demander aux tortues de
créer des copies d'elles-mêmes.
Nous utilisons la procédure de 'hatch' pour qu'elles se reproduisent.
Donc on demande à chaque tortue de 'hatch' (éclore) en une tortue.
Par défaut, ces tortues auront tous les attributs de leurs parents.
J'ai mentionné plus tôt que nous aurons à suivre les générations.
Cela implique de donner aux tortues une variable unique.
Nous les appelerons les variables 'turtles-own'
et je vais en nommer une 'generation' (génération).
Maintenant, lorsque nous créons une tortue, avec plusieurs procédures,
elle aura automatiquement une variable unique appelée 'generation' et
lorsque
les
éclosions surviennent
ils auront cette variable aussi
et elle sera automatiquement de la même valeur que celle des parents.
Mais nous ne voulons pas cela, car ces éclosions sont la prochaine génération,
alors nous voulons que leur génération aille leur propre variable :
'generation of myself + 1' (ma génération + 1)
et je crois que generation doit être inclus dans des [ ].
Ce qui est inscrit après l'éclosion sont les commandes pour les nouvelles éclosions.
La seule chose différente que je vais faire avec ceux-ci
est que ... peut importe quelle est la génération 'myself' (moi-même),
celle qui est à l'extérieur des [ ],
plus un, donc je ne fais qu'incrémenter cette génération.
Si cela sonne comme si je suis incertain de cela,
je ne suis pas certain, je ne sais pas si ces [ ] doivent être là.
Je peux faire deux choses: d'abord, je peux regarder l'aide rapide pour 'myself'
et regarder si ... pour sûr, il faut qu'il soit inscris entre les [ ] ,
car ils l'utilisent ici.
Ici on explique la différence entre 'self' et 'myself' ,
si vous avez un peu de temps un jour, allez lire cela.
Je crois que cela devrait fonctionner.
Nous avons 'hatch 2' et,
juste pour bien les voir, nous les colorons en rouge,
et les faisons avancer de 3.
Ainsi, nous pouvons vérifier si cette procédure de reproduction fonctionne.
Essayons. On revient ici.
Ajoutons ; ici pour l'instant, pour tester le code que nous avons jusqu'ici.
'Setup', 'Step' :
on dirait que les tortues.... chaque tortue a...
Essayons avec une plus petite population pour vérifier.
'Setup' avec seulement 5 tortues, 'Step' ... hum...
oh je vois....
on dirait que la génération-fille a aussi hérité de du déplacement des parents.
Parfois, il est déroutant de faire ce type de modèle car
on ne sait pas exactement combien de tortues nous avons.
Nous pouvons faire ce rapide ajustement dans les commandes :
'show count of turtles' (montrer le décompte des tortues).
Pour moi, on dirait qu'il n'y a que 10 tortues environ,
mais il est écrit ici qu'il y en a 15,
alors nous avons bel et bien un recoupement de tortues.
Une autre façon est de cliquer ici et voir que les tortues 11 et 12 coïncident.
Alors, ceci fonctionne... mais les petits héritent aussi du déplacement de leur parent,
c'est pourquoi il y a du chevauchement.
Nous allons les disperser plus tard de toute façon,
donc nous n'avons pas à nous en soucier pour l'instant.
La reproduction fonctionne.
Maintenant, on peut vérifier si la procédure de génération fonctionne.
Allons voir dans l'interface.
Ceci, si nous inspections cette tortue,
nous pouvons voir qu'elle possède une variable de génération,
et...
je ne la vois pas!
Regardons si celle-ci la possède.
La variable n'est pas là!
Donc nous devons regarder si quelque chose n'a pas fonctionné ici.
Je vais mettre ; encore...
'Setup', inspecter cette tortue...
Peut-être que je n'ai pas 'Setup', mais
nous avons la génération ici. La tortue 3 est de la génération 0.
Quand on 'Step', il devrait être possible de voir pour une de celles-ci, et
avec un peu de chance, elle sera de la génération 1.
Alors nous incrémentons la génération.
Je ne sais pas si vous pouvez le voir, mais la génération est de 1,
elle est de 0 pour les tortues originales vertes et maintenant elle est de 1,
donc la fonction de génération fonctionne.
Maintenant, nous allons demander aux parents de mourir.
Je crois que nous devrons garder le décompte de quelles générations sont présentes aussi.
Pour cela, il faudra une variable globale car c'est une fonction globale.
Alors nous créons une variable globale appelée 'current generation' (génération actuelle).
Chaque fois que nous ferons un 'Step' (pas), nous allons incrémenter la génération actuelle.
Cela nous permettra de suivre ceux qui devront mourir.
À chaque fois que nous ferons un 'Step' (pas de temps), nous allons prendre ce nombre, qui commence à 0,
et lui ajouter 1.
Alors nous disons : pour que les parents meurent,
nous allons demander aux tortues
demander aux tortues qui sont de génération
inférieure à
ou égale à la génération actuelle de...
et c'est chouette à faire avec Net Logo: on peut parler à un groupe partiel d'agents
car je ne veux pas parler à toutes les tortues, je veux parler aux tortues
qui ont une variable personnelle de génération qui est inférieure ou égale à la génération actuelle
pour qu'elles meurent.
Je ne suis pas certain, peut-être que je devrais laisser seulement 'inférieure à'.
Nous verrons si cela fonctionne avec ce que je veux ou pas.
Alors nous leur demandons de mourir.
Alors revenons ici.
Setup, Step,
et on dirait que...
à la place de les mettre en rouge, mettons-les en...
aléatoire.. nombre aléatoire de couleurs, jusqu'à 100 couleurs différentes.
Et nous allons aussi poser un nombre aléatoire aux déplacements.
Nous devrions aller voir, ceci n'est que temporaire.
Nous voyons les générations différentes et...
les populations croissent.
Nous pouvons voir que les couleurs changent.
Ce que cela me dit, c'est que les générations différentes arrivent par...
on peut inspecter une des tortues, il y a beaucoup de tortues maintenant,
on inspecte la tortue 20 000 et nous sommes seulement à la génération 12 et
nous avons déjà 20 000 tortues qui ont éclos, donc
donc c'est une population à croissance exponentielle n'est-ce pas?.
Maintenant, les parents meurent.
Le but de ceci est que nous avons besoin d'une certaine contrainte,
qui fera en sorte qu'il sera plus difficile,
et ainsi il ne pourra pas y avoir de reproduction illimitée ou de croissance illimitée.
Une façon de le faire, et la plus facile, est de
créer une situation dans laquelle la population ou les individus meurent,
dépendamment de la densité des conditions.
Alors les parents meurent, et maintenant, appelons cela
'compete-with-nature' (rivaliser avec la nature).
Ceci est une idée de la biologie évolutive qui veut que les individus rivalisent entre eux
mais aussi avec leur environnement, en quelque sorte.
C'est un cas pour lequel, en quelque sorte, ils rivalisent entre eux pour l'espace,
mais ils sont l'environnement ici, donc...
en fait, je vais changer ça, je n'aime pas, j'aime mieux 'compete-for-space' (rivaliser pour l'espace).
Alors...