194 lines
4.5 KiB
Markdown
194 lines
4.5 KiB
Markdown
|
|
# TP : Simulation Wa-Tor - Proies et Prédateurs
|
|||
|
|
|
|||
|
|
## Introduction
|
|||
|
|
|
|||
|
|
Wa-Tor est une simulation de type proie-prédateur. Dans une mer torique, évoluent des thons (*les proies*) et des requins (*les prédateurs*). Ces deux espèces se déplacent, se reproduisent, et interagissent selon des règles spécifiques.
|
|||
|
|
|
|||
|
|
- Les requins doivent manger des thons pour survivre.
|
|||
|
|
- Les thons vivent éternellement tant qu'ils ne sont pas dévorés.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## La Mer
|
|||
|
|
|
|||
|
|
La mer est modélisée par une **grille torique à deux dimensions**.
|
|||
|
|
Chaque case de cette grille peut contenir :
|
|||
|
|
|
|||
|
|
- Rien (*case vide*),
|
|||
|
|
- Un thon,
|
|||
|
|
- Un requin.
|
|||
|
|
|
|||
|
|
Chaque case possède **quatre voisines** :
|
|||
|
|
|
|||
|
|
- Nord (N),
|
|||
|
|
- Sud (S),
|
|||
|
|
- Est (E),
|
|||
|
|
- Ouest (O).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Les Poissons
|
|||
|
|
|
|||
|
|
### Thons
|
|||
|
|
|
|||
|
|
- **Caractéristique** : *Temps de gestation*.
|
|||
|
|
- **Initialisation** : à une valeur commune, appelée *durée de gestation des thons*.
|
|||
|
|
|
|||
|
|
### Requins
|
|||
|
|
|
|||
|
|
- **Caractéristiques** :
|
|||
|
|
1. *Temps de gestation*.
|
|||
|
|
2. *Énergie*.
|
|||
|
|
- **Initialisation** :
|
|||
|
|
- *Durée de gestation des requins*.
|
|||
|
|
- *Énergie des requins*.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Simulation et Comportements
|
|||
|
|
|
|||
|
|
### Étapes d'une Simulation
|
|||
|
|
|
|||
|
|
À chaque pas de simulation, une case est sélectionnée aléatoirement.
|
|||
|
|
Deux scénarios possibles :
|
|||
|
|
|
|||
|
|
1. La case est vide : **Rien ne se passe**.
|
|||
|
|
2. La case est occupée : **Le poisson applique son comportement**.
|
|||
|
|
|
|||
|
|
### Comportement des Thons
|
|||
|
|
|
|||
|
|
1. **Déplacement**
|
|||
|
|
- Le thon choisit une case voisine libre au hasard.
|
|||
|
|
- Si aucune case libre, il reste sur place.
|
|||
|
|
|
|||
|
|
2. **Reproduction**
|
|||
|
|
- Son *temps de gestation* diminue de 1.
|
|||
|
|
- Si ce temps atteint 0 :
|
|||
|
|
- Le thon se reproduit sur la case qu'il quitte (s'il s'est déplacé).
|
|||
|
|
- Son *temps de gestation* est réinitialisé.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Comportement des Requins
|
|||
|
|
|
|||
|
|
1. **Énergie**
|
|||
|
|
- Le requin perd 1 point d'énergie.
|
|||
|
|
|
|||
|
|
2. **Déplacement**
|
|||
|
|
- Il cherche une case voisine contenant un thon pour le manger.
|
|||
|
|
Si une telle case existe :
|
|||
|
|
- Il s'y déplace et mange le thon.
|
|||
|
|
- Son *énergie* est réinitialisée.
|
|||
|
|
- Sinon, il choisit une case voisine vide.
|
|||
|
|
- S'il n'y en a pas, il reste sur place.
|
|||
|
|
|
|||
|
|
3. **Mort**
|
|||
|
|
- Si l'énergie du requin atteint 0, il meurt.
|
|||
|
|
|
|||
|
|
4. **Reproduction**
|
|||
|
|
- Son *temps de gestation* diminue de 1.
|
|||
|
|
- Si ce temps atteint 0 :
|
|||
|
|
- Il se reproduit sur la case qu'il quitte (s'il s'est déplacé).
|
|||
|
|
- Son *temps de gestation* est réinitialisé.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Phénomènes Émergents
|
|||
|
|
|
|||
|
|
La simulation peut générer des **cycles proies-prédateurs** si les paramètres sont bien choisis.
|
|||
|
|
|
|||
|
|
### Paramètres Clés
|
|||
|
|
|
|||
|
|
- *Temps de gestation des thons*.
|
|||
|
|
- *Énergie des requins*.
|
|||
|
|
- *Durée de gestation des requins*.
|
|||
|
|
|
|||
|
|
Pour observer un cycle périodique, il faut respecter :
|
|||
|
|
**temps gestation des thons < énergie des requins < durée gestation des requins**.
|
|||
|
|
|
|||
|
|
### Configuration Initiale
|
|||
|
|
|
|||
|
|
- **30%** des cases occupées par des thons.
|
|||
|
|
- **10%** des cases occupées par des requins.
|
|||
|
|
|
|||
|
|
Valeurs suggérées :
|
|||
|
|
|
|||
|
|
- Temps gestation des thons : **2**.
|
|||
|
|
- Énergie des requins : **3**.
|
|||
|
|
- Durée gestation des requins : **5**.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Travail à Réaliser
|
|||
|
|
|
|||
|
|
L’objectif est de programmer une simulation Wa-Tor sur un nombre donné de pas.
|
|||
|
|
|
|||
|
|
### Étapes
|
|||
|
|
|
|||
|
|
1. **Concevoir les structures de données**.
|
|||
|
|
2. **Décomposer le programme** en fonctions ou classes.
|
|||
|
|
3. **Programmer et tester** progressivement.
|
|||
|
|
|
|||
|
|
### Questions Clés
|
|||
|
|
|
|||
|
|
- Quels défis vos élèves pourraient-ils rencontrer ?
|
|||
|
|
- Quelles notions ce TP permet-il d’évaluer ?
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Rendu Attendu
|
|||
|
|
|
|||
|
|
- **L’activité complète en markdown**.
|
|||
|
|
- **Corrigé** détaillé.
|
|||
|
|
- **Notions abordées** dans l'activité.
|
|||
|
|
|
|||
|
|
Déposez votre travail sur **GitLab** avec votre enseignant ajouté comme **développeur**.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Compléments
|
|||
|
|
|
|||
|
|
### Affichage des Résultats
|
|||
|
|
|
|||
|
|
Pour visualiser l'évolution de la mer, on peut afficher l'état de la grille tous les 100 pas, avec une petite pause entre chaque affichage :
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
import time
|
|||
|
|
time.sleep(0.1) # pause de 1/10e de seconde
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Analyse des Populations**
|
|||
|
|
|
|||
|
|
Ajoutez des variables globales pour suivre :
|
|||
|
|
|
|||
|
|
• Nombre de thons.
|
|||
|
|
|
|||
|
|
• Nombre de requins.
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Enregistrez ces données à chaque pas sous forme de triplets :
|
|||
|
|
|
|||
|
|
(numéro du pas, nombre de thons, nombre de requins).
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
**Tracé des Courbes**
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Utilisez pylab pour visualiser l’évolution des populations :
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
`import pylab`
|
|||
|
|
|
|||
|
|
`data_x = [pas1, pas2, ..., pasN]`
|
|||
|
|
`data_y1 = [nb_thons1, nb_thons2, ..., nb_thonsN]`
|
|||
|
|
`data_y2 = [nb_requins1, nb_requins2, ..., nb_requinsN]`
|
|||
|
|
|
|||
|
|
`pylab.plot(data_x, data_y1, label="Thons")`
|
|||
|
|
`pylab.plot(data_x, data_y2, label="Requins")`
|
|||
|
|
`pylab.title("Évolution des populations")`
|
|||
|
|
`pylab.legend()`
|
|||
|
|
`pylab.show()`
|
|||
|
|
```
|