|
Demo_Aggregates
Générer des agrégats spatiaux dans Cormas
Demo_Aggregates est un modèle didactique qui permet de
tester deux façons différentes de créer des agrégats
spatiaux avec Cormas. Ce modèle introduit les principes de
fonctionnement des entités spatiales agrégats de Cormas.
Dans l'arbre d'héritage des entités spatiales génériques
de Cormas, l'entité spatiale composée générique s'appelle
"SpatialEntity_Set". Elle est spécialisée en:
- SpatialEntityAggregate dont les composants
doivent être contigus (les Groves du modèle),
et
- SpatialEntityNotConnex dont les composants
peuvent ne pas être contigus (les FragmentedForests
du modèle).

Les opérations d'agrégation-désagrégation reposent sur
l'association "est composée de" entre SpatialEntitySet et
SpatialEntity, qui se traduit en deux attributs: les
«components» (une collection d'entités spatiales de niveau
inférieur) et «theCSE» (l'appartenance éventuelle à des
entités spatiales de niveau supérieur).
Dans le modèle Demo_Aggregates, 3 entités sont définies: Plot
(sous classe de SpatialEntityElement), Grove (sous
classe de SpatialEntityAggregate) et FragmentedForest
(sous classe de SpatialEntityNotConnex):

Diagramme de class UML du modèle. L'association
d'agrégation est redéfinie entre Grove et Plot (le symbole
// représente cette redéfinition).
Premier scénario (initForests - StepForests)
les composants des Groves sont définis comme des ensembles
de plots contiguës partageant une même condition (tree).
L'initialisation charge une grille spatiale constituée de
50 * 50 cellules (instances de la classe Plot) à partir
d'un fichier (3forests.env). Chaque plot a un attribut
#tree (condition d'agrégation) ayant la valeur boolean
true ou false. L'instanciation effective de Groves
(SpatialEntityAggregate) se fait en sélectionnant les
Plots connectés étant #tree, plus une contrainte
supplémentaire sur un nombre minimum (fixé à 25) de plots
contigus vérifiant la condition d'agrégation.
Faire coexister dans le même modèle plusieurs entités
spatiales définies à différents niveaux offre une grande
flexibilité pour écrire la dynamique du modèle. Certains
processus sont plus faciles à décrire au niveau cellulaire
(newState), et pour d'autres, le niveau agrégé est plus
approprié (expand ou swell).
StepForest: propose 2 dynamiques simultannées. Dans
cet exemple didactique et simple, chaque Plot a une
probabilité fixe (très faible) de changer son état. De
plus, au niveau des bosquets, un processus d'étalement à
partir des bords s'écrit comme suit: des cellules du bord
extérieur sont agrégées à la forêt (seul un nombre donné
de cellules sont sélectionnées, correspondant au centième
du nombre total de composantes de l'entité forestière).
Afin de garder une compacité aux entités forestières, la
priorité est donnée aux cellules qui sont entourées par le
plus grand nombre de cellules déjà agrégées.

Second scénario (setAggregatesFromRandomSeeds -
swellForests)
10 cellules germinales sont choisies aléatoirement dans la
grille spatiale de 50 * 50. 10 agrégats sont créés à
partir de ces graines (donc avec un seul composant
unique). Le processus de construction itératif des
agrégats repose sur l'intégration, parmi les cellules
appartenant au bord extérieur de chaque agrégat, de toutes
celles qui n'appartiennent pas encore à un autre agrégat
(swell).

Troisième scénario (init2AggregateLevels -
step2AggregateLevels)
A partir du même état initial (chargement du fichier
3forests.env), des aggrégats de bosquet (Grove) sont
créés à partir des cellules en forêt. Puis des agrégats
FragmentedForest sont créés à partir des bosquets sur le
critère de la taille, cad qu'une instance de
FragmentedForest contient des bosquets de même taille.
Dans cette configuration, on obtient 7 FragmentedForests
(1 of 128 groves of 1 plot, 1 of 49
groves of 2 plots, 1 of 21 groves of
3 plots, 1 of 1 grove of 240 plots,
1 of 1 grove of 80 plots,
1 of 2 groves of 4
plots, 1 of 1 grove of 143 plots).

Pour la dynamique (step2AggregateLevels: t), seuls
l'agrégat FragmentedForest composés des plus petits
bosquets est activé. Ses composants s'étirent alors depuis
leur bord extérieur (swell).
- Vous pouvez télécharger le modèle (zip, 32 ko,
Cormas 2017).
- Pour en savoir plus, contactez l'auteur.
|
|