... | ... | @@ -2,6 +2,36 @@ Les agents `prestataires logistiques` sont définis dans le fichier `LogisticsSe |
|
|
|
|
|
# Ajout d'un nouveau client
|
|
|
|
|
|
Chaque prestataire gère un réseau d'approvisionnement. Ce réseau est constitué d'un, et un seul, fournisseur, d'un ou plusieurs entrepôt(s) de niveau national, d'un ou plusieurs entrepôt(s) de niveau local, et enfin du (ou des) bâtiment(s) associé(s) à son (ou ses) client(s). Ce réseau d'approvisionnement correspond à la variable `supplyChain`. Au sein de ce réseau, le fournisseur est connecté aux entrepôts nationaux, eux-même connectés aux entrepôts locaux, eux-même connectés aux bâtiments des destinataires.
|
|
|
|
|
|
L'ajout d'un nouveau client s'effectue via la fonction `getNewCustomer`. Cette fonction permet de créer (ou de mettre à jour) la variable `supplyChain`.
|
|
|
|
|
|
Cette variable est du type `SupplyChain`. Il s'agit d'un graphe dont la structure est quasiment arborescente. Les nœuds de ce graphe sont du type `SupplyChainElement`. Une `SupplyChain` possède un élément racine et chaque `SupplyChainElement` possède zéro ou plusieurs "père(s)" (la liste`fathers` dans le fichier `SupplyChain.gaml`), et zéro ou plusieurs "fils" (la liste `sons` dans `SupplyChain.gaml`).
|
|
|
|
|
|
À l'initialisation, on commence par créer un agent `SupplyChainElement` (SCE) qui correspond à l'élément racine et on lui assigne le fournisseur associé au prestataire.
|
|
|
|
|
|
Ensuite on crée 3 autres agents SCE auquel on leur associe, en fonction du SCE, soit :
|
|
|
|
|
|
* l'entrepôt de niveau national que l'on a sélectionné
|
|
|
* l'entrepôt de niveau local que l'on a sélectionné
|
|
|
* le bâtiment associé au destinataire final
|
|
|
|
|
|
Enfin on connecte (via les listes `fathers` et `sons`) le SCE fournisseur avec le SCE national, lui-même connecté avec le SCE local, lui-même connecté avec le SCE destinataire.
|
|
|
|
|
|
La manière de sélectionner les entrepôts dépend de la stratégie définie. Plusieurs cas sont possibles. L'utilisateur peut indiquer que tous les prestataires partagent la même stratégie (via la variable booléenne `isLocalSelectingWarehouseStrategies` du fichier `Parameters.gaml`). Si tel est la cas, les prestataires utiliseront la stratégie définie dans `globalSelectingWarehouseStrategies` de `Parameters.gaml`. Sinon, les prestataires choisiront, lors de leur initialisation, l'une des stratégies proposées dans la variable `possibleSelectingWarehouseStrategies` de `Parameters.gaml`. Une fois qu'un prestataire a choisi une stratégie, il n'en changera pas pendant toute la durée de la simulation.
|
|
|
|
|
|
Ci-dessous, voici une description des quatre stratégies possibles. On notera toutefois auparavant que toutes les stratégies présentées filtrent toutes les entrepôts en disqualifiant systématiquement les entrepôts n'ayant pas la capacité d'entreposage nécessaire.
|
|
|
|
|
|
## Stratégie de sélection aléatoire
|
|
|
|
|
|
## Stratégie de sélection plus proche/plus grand
|
|
|
|
|
|
## Stratégie de sélection aléatoire biaisé
|
|
|
|
|
|
## Stratégie de sélection incluant l'accessibilité
|
|
|
|
|
|
|
|
|
|
|
|
# Réapprovisionnement des stocks
|
|
|
|
|
|
# Perte d'un client
|
... | ... | |