Vous êtes sur la page 1sur 38

Modèle Job Shop

Ce tutoriel vous montrera comment créer des modèles à événements discrets en utilisant les bibliothèques
AnyLogic Process Modeling Library et Material Handling Library. Notre objectif est de créer un modèle à
événements discrets qui simulera les processus de fabrication et d'expédition d'un petit atelier. Les matières
premières livrées au quai de réception sont stockées jusqu'à ce que le traitement ait lieu sur la machine CNC.

Phase 1. Création d’un modèle simple


Nous commencerons par créer un modèle simple qui simulera l'arrivée des palettes à l'atelier, leur stockage sur
le quai d'expédition et leur arrivée dans la zone des chariots élévateurs.

Nous utiliserons le schéma suivant :

Cliquez avec le bouton droit de la souris sur l'image ci-dessus, cliquez sur Save image as et sélectionnez
l'emplacement du fichier image.

1. Créez un nouveau modèle.


Dans l'assistant New Model, définissez le nom du modèle comme Job Shop et les unités de temps du
modèle sur minutes.
2. Ouvrez la palette Presentation. La palette comporte plusieurs formes que vous pouvez utiliser pour
dessiner l'animation du modèle, notamment un rectangle, une ligne, un ovale, une polyligne et une
courbe.
3. Dans la palette Presentation, sélectionnez la forme Image, puis faites-la glisser sur le diagramme Main.
Vous pouvez utiliser la forme Image pour ajouter des images dans plusieurs formats graphiques -
notamment PNG, JPEG, GIF et BMP - à votre présentation.

4. La boîte de dialogue qui s'affiche vous invite à choisir le fichier image que la forme doit afficher.
5. Naviguez jusqu'à l'emplacement du fichier image que vous avez enregistré précédemment (vous pouvez
utiliser le lien de téléchargement direct).
Après avoir sélectionné l'image layout.png, notre diagramme du type d'agent Main devrait ressembler
à l'image suivante :

AnyLogic ajoute l'image dans sa taille originale sur le diagramme Main, mais vous pouvez également modifier la
largeur ou la longueur de l'image. Si vous déformez les proportions de l'image comme dans la figure ci-dessous,
vous pouvez revenir à la taille d'origine de l'image en ouvrant la vue Properties et en cliquant sur Reset to
original size.

6. Sélectionnez l'image dans l'éditeur graphique. Dans la vue Properties, cochez la case Lock pour
verrouiller l'image.
Verrouillage des formes

Vous pouvez verrouiller une forme afin qu'elle ne réagisse pas au clic de votre souris et que vous ne puissiez pas
la sélectionner dans l'éditeur graphique. Cette fonction s'avère très utile lorsque vous dessinez des formes au-
dessus de schémas représentant des installations telles que des usines ou des hôpitaux.

Si vous devez déverrouiller une forme, cliquez avec le bouton droit de la souris dans l'éditeur graphique et
sélectionnez Unlock All Shapes dans le menu.

Éléments de marquage de l'espace

L'étape suivante consiste à utiliser la palette de Space Markup pour placer des formes de marquage spatial au-
dessus de la disposition de l'atelier. Nous utiliserons des chemins et des nœuds pour créer un réseau.

Création d'un réseau

Les chemins et les nœuds sont des éléments de marquage de l'espace qui définissent les emplacements des
agents :

• Un nœud est un endroit où les agents peuvent résider ou effectuer une opération.
• Un chemin est une route que les agents peuvent emprunter pour se déplacer entre les nœuds.

Ensemble, les nœuds et les chemins constituent un réseau que les agents peuvent utiliser pour se déplacer le
long des chemins les plus courts entre leurs nœuds d'origine et de destination. Vous créez généralement un
réseau lorsque les processus de votre modèle se déroulent dans un espace physique défini et que les agents et
les ressources se déplacent. On suppose que les segments du réseau ont une capacité illimitée et que les agents
n'interfèrent pas les uns avec les autres.

Maintenant que vous en savez un peu plus sur les réseaux et leurs composants, nous sommes prêts à créer un
réseau qui définira les chemins de déplacement des palettes de notre modèle. La première étape consiste à
utiliser des nœuds rectangulaires pour définir des zones spécifiques sur le plan de l'atelier.

Dessinez le nœud rectangulaire au-dessus de l'entrée de l'atelier, comme indiqué dans la figure ci-dessous, pour
représenter le quai de réception des palettes de notre modèle.

7. Ouvrez la palette Space Markup et faites glisser l'élément Rectangular Node sur le diagramme Main.
Redimensionnez le noeud. Le nœud doit ressembler à la figure ci-dessous.

8. Nommez le nœud créé receivingDock.


9. Dessinez un nœud pour définir l'emplacement où les chariots élévateurs seront garés lorsqu'ils sont à
l'arrêt et que les agents n'en ont plus besoin pour accomplir une tâche. Utilisez un autre Rectangular
Node pour dessiner l'aire de stationnement comme indiqué dans la figure ci-dessous et nommez ce
nœud forkliftParking.

10. Définissez l'entrepôt de stockage de votre modèle en faisant glisser l'élément Storage de la section
Material Handling de la palette Space Markup sur la mise en page et en le plaçant comme indiqué ci-
dessous.

Stockage

L'élément Storage définit graphiquement un espace de stockage composé de rayonnages à palettes. Chaque
rack est composé de cellules. Une seule cellule peut accueillir un seul agent (article).

Un élément de stockage peut contenir plusieurs rayonnages à palettes. Il prend en charge les modes alternatifs
suivants de placement des rayonnages :

Back-to-back - les rayonnages sont organisés par paires dos à dos. De cette manière, chaque allée donne accès
à deux rayonnages.

Stand-alone - toutes les baies sont orientées dans la même direction et chaque allée peut donner accès à une
seule baie.
Nous utiliserons évidemment la configuration de stockage dos à dos (celle par défaut).

11. Dans la zone de visualisation Properties de l'entrepôt, indiquez les éléments suivants :
• Définissez la propriété Number of bays is comme étant calculated based on dimensions.
• Dans la section Rack, définissez Number of shelves : 2.

12. Redimensionnez l'espace de stockage comme indiqué dans la figure ci-dessous. Avec les paramètres que
vous avez définis précédemment, l'entrepôt doit comporter 13 baies.

13. Positionnez le rack gauche comme indiqué ci-dessous en faisant glisser la poignée marquée vers la
gauche.

14. De même, en tirant la poignée sur le côté droit de l'étagère de droite, on la place entre deux allées de
notre plan.
15. Réduisez la zone d'accès en faisant glisser la poignée la plus à droite, comme indiqué ci-dessous.

16. Une fois la configuration du stockage terminée, il est temps de créer le réseau qui définira les chemins
permettant aux chariots élévateurs d'atteindre chaque cellule de stockage. Cliquez sur le bouton Create
storage network dans les propriétés du stockage. Confirmez l'action dans la boîte de dialogue et vous
verrez le réseau de nœuds et de chemins créé. Ce réseau sera utilisé par les chariots élévateurs pour
livrer et récupérer des articles dans le magasin.

Continuons maintenant à dessiner un réseau en ajoutant des chemins qui relieront les deux nœuds et le
stockage. Tout d'abord, dessinez le chemin reliant le stockage au nœud situé à l'entrée, receivingDock.

17. Procédez comme suit pour dessiner un chemin de déplacement qui guidera nos chariots élévateurs :
• Dans la palette Space Markup, double-cliquez sur l'élément Path pour activer son mode de
dessin.
• Dessinez le chemin comme indiqué dans la figure ci-dessous en cliquant sur la bordure
receivingDock, puis en cliquant au centre du nœud ponctuel inférieur gauche du réseau que
vous avez créé pour le stockage
18. Dessinez une autre trajectoire de mouvement comme indiqué dans la figure ci-dessous en cliquant au
centre du nœud de point en bas à droite, puis en cliquant dans le diagramme pour ajouter le point
d'inflexion de la trajectoire, et enfin en cliquant sur la bordure du nœud forkliftParking.

19. De même, dessinez une autre trajectoire de mouvement comme indiqué dans la figure ci-dessous.

Assurez-vous que les éléments du réseau sont correctement connectés. Si vous avez réussi à connecter les
nœuds avec des chemins, les points de connexion du chemin afficheront des surbrillances cyan à chaque fois
que vous sélectionnerez le chemin.

Par défaut, les chemins dans AnyLogic sont Bidirectional. Cependant, vous pouvez limiter le mouvement le long
d'un chemin sélectionné à une seule direction en supprimant la propriété Bidirectionnelle et en définissant
ensuite la direction du mouvement. Vous pouvez visualiser la direction d'un chemin donné en sélectionnant le
chemin et en visualisant la flèche de direction qui s'affiche dans l'éditeur graphique.

Nous avons délimité l'espace de notre modèle en dessinant les emplacements et les chemins importants sur
notre plan, et nous allons maintenant utiliser la Bibliothèque de Modélisation de Processus AnyLogic pour
modéliser les processus.
Process Modeling Library

Les blocs de la Process Modeling Library vous permettent d'utiliser des combinaisons d'agents, de ressources et
de processus pour créer des modèles de systèmes réels centrés sur les processus. Vous avez appris à connaître
les agents et les ressources plus tôt dans cette section, et nous nous appuierons sur cette base en définissant les
processus comme des séquences d'opérations qui incluent des files d'attente, des retards et l'utilisation des
ressources.

Les processus de votre modèle sont définis par des organigrammes, les représentations graphiques des
processus que vous construisez à partir des blocs de la bibliothèque de modélisation des processus. Dans les
étapes suivantes, vous allez créer l'organigramme du processus.

20. Faites glisser l'élément Source de la palette Process Modeling Library sur le diagramme graphique et
nommez le bloc sourcePalettes.
Alors que le bloc Source sert généralement de point de départ au processus, notre modèle l'utilisera
pour générer des palettes.
21. Dans la vue Properties du bloc sourcePalettes, procédez comme suit pour que les palettes du modèle
arrivent toutes les cinq minutes et apparaissent dans le nœud receivingDock.
• Dans la zone Arrivals defined by, cliquez sur Interarrival time.
• Dans la zone Interarrival time, tapez 5 et sélectionnez minutes dans la liste de droite pour que
les palettes arrivent toutes les cinq minutes.
• Dans la zone Location of arrival, cliquez sur Network/GIS node dans la liste.
• Dans la zone Node, cliquez sur receivingDock dans la liste.
Comment faire référence à des éléments de modèle à partir des paramètres du bloc ?

Les paramètres du bloc offrent deux façons de sélectionner un élément graphique :

• Vous pouvez sélectionner un élément graphique dans la liste des éléments disponibles et valides qui
s'affiche à côté du paramètre.

• Vous pouvez sélectionner un élément graphique en cliquant sur le bouton de sélection qui s'affiche à
côté de la liste. Si vous cliquez sur le bouton de sélection, vos choix seront limités aux éléments
disponibles et valides que vous pouvez sélectionner en cliquant dans l'éditeur graphique :

Poursuivre la construction de l'organigramme. Nous devons maintenant ajouter la logique de gestion du


stockage, il est donc temps d'utiliser les blocs de la bibliothèque de manutention.
22. Passez à la palette Material Handling Library et faites glisser le bloc Store sur le diagramme, puis placez-
le près du bloc sourcePallets afin qu'ils soient automatiquement connectés, comme le montre l'image
ci-dessous.
Le bloc Store place les palettes dans les cellules d'un entrepôt donné.

23. Dans la vue Properties du bloc Store, procédez comme suit :


• Dans la zone Name, tapez storeRawMaterial.
• Définissez Agents move : independently. Nous procédons ainsi pour exécuter la première phase
de notre modèle sans erreur et voir les résultats intermédiaires. Dans la phase suivante, nous
ajouterons des ressources (chariots élévateurs) pour rendre le modèle plus réaliste.
• Dans la liste Storage, cliquez sur storage.
24. Ajoutez un bloc Delay de la Process Modeling Library pour simuler l'attente des palettes dans le rack,
puis nommez le bloc rawMaterialInStorage.

Vous avez probablement remarqué qu'AnyLogic connecte automatiquement le port droit du bloc au
port gauche du bloc suivant. Chaque bloc de la bibliothèque possède un input port gauche et un output
port droit, mais vous ne devez connecter que les ports d'entrée aux ports de sortie.
25. Dans la vue Properties du bloc rawMaterialInStorage, procédez comme suit :
• Dans la case Delay time, tapez triangular(15, 20, 30) et sélectionnez minutes dans la liste.
• Cochez la case Maximum capacity pour permettre à plusieurs agents d'attendre dans le
stockage. La valeur de capacité par défaut est de 1. Si vous ne la modifiez pas, les agents
resteront bloqués pendant qu'ils attendent d'être prélevés dans l'entrepôt.
26. Ajoutez un bloc Retrieve de la bibliothèque Material Handling Library, connectez-le à l'organigramme
et nommez-le retrieveRawMaterial.
Dans notre modèle, le bloc Retrieve retire une palette d'une cellule de stockage, puis la déplace vers la
destination spécifiée.

27. Dans la vue Propriétés du bloc retrieveRawMaterial, procédez comme suit :


• Définissez que Agents move : independently
• Dans la liste des nœuds, cliquez sur forkliftParking pour indiquer où les chariots élévateurs
doivent livrer les palettes.
28. Ajoutez un bloc Sink. Le bloc Sink dispose des agents et constitue généralement le point final de
l'organigramme.

29. Nous avons terminé la construction de ce modèle simple et vous pouvez maintenant l'exécuter et
observer son comportement. Exécutez le modèle (Job Shop/Simulation experiment). Vous verrez
comment les palettes apparaissent dans l'atelier et sont ensuite stockées dans le magasin.
Phase 2. Ajouter des ressources
Ressources
Poursuivons le développement de notre modèle en ajoutant des ressources - des chariots élévateurs - pour
stocker les palettes dans l'entrepôt et les déplacer ensuite vers la zone de production.

Les ressources
Les ressources sont des objets que les agents utilisent pour effectuer une action donnée. Un agent doit obtenir
la ressource, effectuer l'action, puis libérer la ressource.

Voici quelques exemples de ressources

• les médecins, les infirmières, les équipements et les fauteuils roulants d'un modèle d'hôpital
• les véhicules et les conteneurs d'un modèle de chaîne d'approvisionnement
• Les chariots élévateurs et les travailleurs d'un modèle d'entrepôt.

Il existe trois types de ressources : statiques, mobiles et portables.

• Les ressources statiques sont liées à un emplacement spécifique et ne peuvent ni se déplacer ni être
déplacées.
• Les ressources mobiles peuvent se déplacer indépendamment.
• Les ressources portables peuvent être déplacées par des agents ou par des ressources mobiles.

Dans AnyLogic, le bloc ResourcePool de la Process Modeling Library définit chaque ensemble ou pool de
ressources. Les unités de ressources peuvent avoir des attributs individuels, et chaque ressource a un diagramme
graphique où vous pouvez ajouter des éléments tels que des diagrammes d'état, des paramètres et des
fonctions.

Les ressources de notre modèle sont les chariots élévateurs qui déplacent les palettes de la zone de
déchargement vers un rack à palettes, puis livrent les palettes du rack à la zone de production.

1. Dans la palette Process Modeling Library, faites glisser le bloc ResourcePool sur le diagramme Main. Il
n'est pas nécessaire de connecter le bloc à l'organigramme.
2. Nommez les forklifts.

3. Dans la vue Properties du bloc forklifts cliquez sur create a custom type. Nous créons ainsi un nouveau
type de ressource.
4. Dans l'assistant Nouvel agent :
• Dans la zone Agent type name, tapez ForkliftTruck.
• Cliquez sur Next.
• Sur la page suivante, dans la liste de la partie gauche de l'assistant, développez la zone
Warehouses and Container Terminals, puis cliquez sur l'animation 3D du Fork Lift Truck.

• Cliquez sur Finish.


Le diagramme de type agent ForkliftTruck s'ouvre et affiche la forme d'animation que vous avez
sélectionnée dans l'assistant.
5. Cliquez sur l'onglet Main pour ouvrir le diagramme Main.

Vous verrez que le type de ressource ForkliftTruck a été sélectionné dans le paramètre New
resource unit du bloc ResourcePool.
6. Modifiez les autres paramètres du bloc forklifts:
• Dans la case Capacity, tapez 5 pour définir le nombre de chariots élévateurs dans notre modèle.
• Dans la case Speed, tapez 1 et choisissez mètres par seconde dans la liste de droite.
• Dans la zone Home location (nodes), sélectionnez le nœud forkliftParking.
Cliquez sur le bouton plus, puis sur forkliftParking dans la liste des nœuds du modèle.
Nous avons défini nos ressources, mais nous devons encore nous assurer que les blocs de
l'organigramme de notre modèle les utiliseront au cours des processus simulés.
7. Dans la vue Properties du bloc storeRawMaterial, procédez comme suit :
• Dans la liste Agents move, sélectionnez by resources.
• Dans la liste Resource pool, sélectionnez forklifts pour vous assurer que le bloc d'organigramme
utilise les ressources sélectionnées - dans notre cas, les chariots élévateurs - pour déplacer les
agents.
8. Dans la vue Properties du bloc retrieveRawMaterial, procédez comme suit :
• Dans la liste Agents move, sélectionnez by resources.
• Dans la liste Resource pool, sélectionnez forklifts.
• Dans la section Transporters and ressources, dans la zone Return home, sélectionnez if no other
tasks n'est effectuée pour garantir que les chariots élévateurs retournent à leur emplacement
d'origine une fois leurs tâches terminées.

Si les ressources de notre modèle déplacent un agent, le bloc Store (ou Retrieve) les saisit, les amène à
l'emplacement de l'agent, les attache à l'agent, déplace l'agent vers la cellule, puis libère les ressources.

9. Exécuter le modèle.
Vous verrez les chariots élévateurs prendre les palettes et les stocker dans l'entrepôt. Après un bref
délai, ils déplacent les palettes vers l'aire de stationnement des chariots élévateurs, où elles
disparaissent.
Phase 3. Créer une animation 3D
Présentation des objets Caméra
Vous avez maintenant vu la plupart des fonctionnalités qui font d'AnyLogic un outil de modélisation si puissant.
Mais il en existe d'autres que vous n'avez pas encore abordées, et l'une des plus intéressantes est l'animation
3D.

Présentation des objets caméra


Les objets Camera d'AnyLogic vous permettent de définir la vue qui s'affiche dans la 3D Window. En fait, l'objet
caméra "tire" l'image que vous voyez.

Vous pouvez également créer plusieurs objets caméra pour montrer différentes zones de la même scène 3D ou
pour montrer un seul objet à partir de différents points de vue. Si vous utilisez plusieurs objets caméra, vous
pouvez facilement passer d'une vue à l'autre au moment de l'exécution.

1. Dans la palette Presentation, faites glisser l'objet Camera sur le diagramme Main de manière à ce qu'il
"filme" la présentation de l'atelier.

2. Faites glisser l'élément 3D Window sur le diagramme Main, puis placez-le sous l'organigramme du
processus et la ligne de cadre bleue.
Fenêtre 3D

Outre la possibilité d'ajouter plusieurs caméras à votre modèle, vous pouvez également ajouter
plusieurs fenêtres 3D qui afficheront chacune la même scène 3D d'un point de vue différent.

3. Laissez la caméra "prendre" l'image pour la 3D Window. Dans la vue Properties de la 3D Window,
cliquez sur la caméra dans la liste Caméra.
4. Empêchez l'appareil photo de prendre l'image depuis le sol en sélectionnant l'option Limite to Z above
0 dans la liste Navigation type.
5. Exécuter le modèle.
Lorsque vous créez une fenêtre 3D, AnyLogic ajoute une zone de vue (View Area) qui vous permet de
naviguer facilement vers la vue 3D au moment de l'exécution. Pour basculer vers cette vue 3D lorsque
le modèle est en cours d'exécution, cliquez sur le contrôle le plus à droite du panneau Toggle Developer
panel et sélectionnez [window3d] dans la liste select view area to navigate.

La zone de visualisation étend la scène d'animation 3D à la taille totale de la fenêtre du modèle.

6. Effectuez une ou plusieurs des opérations suivantes pour naviguer en 3D au cours de l'exécution:
• Pour déplacer la caméra vers la gauche, la droite, l'avant ou l'arrière, faites glisser la souris dans
la direction sélectionnée.
• Pour rapprocher ou éloigner la caméra du centre de la scène, faites tourner la molette de la
souris.
• Pour faire pivoter la scène par rapport à la caméra, faites glisser la souris tout en maintenant la
touche Alt (Mac OS X : touche Option) et le bouton gauche de la souris enfoncés.
7. Choisissez la vue que vous souhaitez afficher au moment de l'exécution, faites un clic droit (Mac OS X :
Ctrl + clic) à l'intérieur de la scène 3D, puis cliquez sur Copier l'emplacement de la caméra.

8. Fermez la fenêtre du modèle.


9. Dans la vue Properties de la caméra, appliquez l'emplacement de la caméra que vous avez sélectionné
à l'étape précédente en cliquant sur Paste coordinates from clipboard.

10. Exécutez le modèle pour visualiser la vue 3D à partir de la nouvelle position de la caméra, puis fermez la
fenêtre du modèle.
11. Développez la zone Pedestrian dans la palette Space Markup, puis double-cliquez sur l'icône de
l'élément Mur pour activer le mode de dessin de mur.
12. Procédez comme suit pour dessiner des murs autour de la zone de travail de la présentation de l'atelier
:
• Cliquez à l'endroit de l'éditeur graphique où vous souhaitez commencer à dessiner le mur.
• Déplacez le pointeur dans n'importe quelle direction pour dessiner une ligne droite, puis cliquez
à l'endroit où vous souhaitez changer de direction.
• Double-cliquez à l'endroit où vous souhaitez arrêter de dessiner le mur.

13. Procédez comme suit pour modifier la couleur de remplissage et la texture du mur :
• Dans la vue Properties du mur, développez la section Appearance.
• Dans le menu des couleurs, cliquez sur Other Colors.
• Dans la boîte de dialogue Colors, sélectionnez la couleur que vous souhaitez appliquer au mur
dans la palette ou le spectre.
Vous pouvez également définir un niveau de transparence (utilisez le curseur Transparency dans
la boîte de dialogue Colors) ou personnaliser le mur avec n'importe quelle texture fournie
(cliquez sur l'élément Textures... dans le menu Couleurs).
Dans cette section, nous utilisons les murs pour décorer notre modèle. Dans le tutoriel
"Aéroport" pour piétons, vous verrez comment les murs peuvent aussi être des obstacles.
14. Changez la largeur de ligne (Line width) du mur à 1 pt.
15. Allez dans la section Position and size du mur et changez la Z-Height à 40.
AnyLogic définit automatiquement la hauteur de la forme à 20 pixels pour s'assurer qu'elle a du volume
dans une vue 3D, mais nous avons maintenant augmenté sa hauteur à 40 pixels.
16. Dessinez un autre mur entre les sorties et modifiez les paramètres dans la vue Properties du second mur
pour qu'il corresponde au premier mur.
17. Exécutez le modèle et visualisez l'animation 3D.
Vous constaterez que l'animation de notre modèle utilise des formes de couleur aléatoire pour
représenter les palettes, mais nous allons corriger le problème en créant un type d'agent qui définit une
animation personnalisée pour les palettes.
18. Dans la vue Properties du bloc sourcePalettes, sous la liste New agent, cliquez sur create a custom type.

19. Dans l'assistant New agent, procédez comme suit :


• Dans le champ Agent type name, tapez Pallet.
• Cliquez sur Next.

• Sur la page suivante de l'assistant, développez la section Warehouses and Container Terminals
dans la liste de gauche, puis cliquez sur la figure d'animation 3D Pallet.
• Cliquez sur Finish.

AnyLogic crée le type d'agent Pallet et ouvre le diagramme Palette qui affichera l'animation que nous avons
sélectionnée dans l'assistant.
20. Dans les propriétés du type d'agent Pallet, développez la section Agent in flowcharts, et sélectionnez
Material item dans la liste déroulante Use in flowcharts as. Les agents de type Pallet disposent
désormais d'une fonctionnalité supplémentaire, qui peut s'avérer utile lorsque ces agents sont traités
par les blocs de la bibliothèque de manutention. En particulier, les agents palettes ont désormais des
dimensions explicitement définies (si vous développez la section Dimensions and movement des
propriétés de l'agent de type Pallet, vous verrez les champs Length, Width, et Height).

Notre prochaine étape consistera à ajouter une animation de produit à l'animation de la palette, mais nous
allons d'abord agrandir la vue afin d'examiner la palette de plus près.

21. À l'aide de la barre d'outils Zoom, agrandissez le diagramme Pallet à 300 %, puis déplacez le canevas
vers la droite et vers le bas pour visualiser le point d'origine de l'axe et la forme de l'animation de la
palette.
Enlarging or reducing the view
La barre d'outils Zoom d'AnyLogic vous permet d'agrandir ou de réduire la vue d'un diagramme
graphique :

22. Comme la forme de la palette semble trop grande et ne rentre pas dans l'espace réservé correspondant
aux dimensions de cet article, sélectionnez-la en cliquant et modifiez son Additional scale à 75 %.

23. Ajoutez l'animation du produit au-dessus de l'animation de la palette. Dans la palette 3D Objets,
développez la zone Boxes et faites glisser l'objet Box 1 Closed sur la palette.
24. Modifiez le Additional scale de la boîte pour qu'elle soit de 125 %.
25. Dans la vue Properties de la boîte, développez la section Position, puis modifiez la coordonnée Z de la
boîte pour qu'elle soit égale à 2.
Cette modification reflète le fait que nous voulons placer des boîtes sur les palettes et que la hauteur
de chaque palette est d'environ 2 pixels.
26. Ramenez le niveau de zoom à 100 % en cliquant sur le bouton Zoom to 100 % de la barre d'outils.
27. Retournez au diagramme Main.
Si vous ouvrez la vue Properties du bloc sourcePalettes, vous verrez que Pallet est sélectionné comme
New agent. Ce bloc génère des agents de type Pallet.
28. Exécutez le modèle.
Vous verrez que les formes de palettes ont remplacé les formes multicolores. Cependant, si vous zoomez
sur la scène 3D, vous remarquerez que les chariots élévateurs ne transportent pas de palettes. Nous
allons corriger ce problème en déplaçant l'animation des palettes de notre modèle de manière à
permettre aux chariots élévateurs de prendre les palettes.

29. Dans la vue Projects, double-cliquez sur le type d'agent ForkliftTruck pour ouvrir son diagramme, puis
déplacez la figure forkliftWithWorker d'une cellule vers la droite.
La forme d'animation se trouve maintenant au bon endroit et les palettes de notre modèle sont alignées
avec les fourches des chariots élévateurs.

Cependant, lorsque les palettes contenant les produits sont stockées dans les cellules de stockage, elles
sont visualisées non pas avec des modèles 3D, mais avec des cubes de couleur aléatoire. Cela est dû au
fait que le système de stockage est configuré par défaut pour optimiser ses performances en utilisant
des formes primitives pour animer les articles stockés.

30. Pour modifier cela, sélectionnez le magasin dans l'éditeur graphique, puis développez la section
Appearance de ses propriétés et définissez le paramètre Occupied cells animation sur agent animation.
31. Exécutez le modèle et vous verrez que les éléments stockés dans le magasin sont visualisés à l'aide des
modèles 3D choisis.

Phase 4. Modélisation de la livraison de palettes par camion


Dans cette partie de notre tutoriel, nous allons ajouter les camions qui livrent les palettes à l'atelier.
Commençons par créer un type d'agent pour les représenter.

1. Dans la palette Process Modeling Library, faites glisser l'élément Agent Type sur le diagramme Main.
2. Dans l'assistant New agent, procédez comme suit :
• Dans la zone nom du Agent type, tapez Truck.
• Cliquez sur Next.
• Sur la page suivante de l'assistant, développez la section Road transport dans la liste de gauche,
puis cliquez sur la figure d'animation 3D Truck.
• Cliquez sur Finish.

Ajoutons deux éléments supplémentaires à notre réseau : un nœud où les camions apparaîtront et
le chemin qu'ils suivront jusqu'au quai de réception.

3. Ouvrez le diagramme Main.


4. Sous la palette Space Markup, cliquez sur l'élément Point Node et faites-le glisser sur l'entrée de l'allée.

5. Nommez le nœud exitNode.


6. Dessinez un Path pour relier le nœud exitNode au receivingDock.

7. Créez un autre organigramme de processus pour définir la logique de déplacement des camions en
connectant les blocs de la Process Modeling Library dans l'ordre suivant : Source - MoveTo - Delay -
MoveTo - Sink.

• Le bloc Source génère un camion.


• Le premier bloc MoveTo conduit le camion jusqu'à l'entrée de l'atelier.
• Les blocs de l'organigramme MoveTo déplacent les agents vers de nouveaux emplacements
dans le réseau. Si des ressources sont attachées à l'agent, elles se déplacent avec lui.
• Le bloc Delay simule le déchargement des palettes.
• Le deuxième bloc MoveTo éloigne le camion.
• Le bloc Sink supprime le camion du modèle.
8. Nommez le bloc source sourceDeliveryTrucks.
9. Dans la vue Properties du bloc sourceDeliveryTrucks, procédez comme suit pour qu'un nouvel agent du
type personnalisé Truck arrive à l'entrée de l'allée une fois par heure à une vitesse spécifique :
• Dans la liste Arrival defined by, cliquez sur Interarrival time.
• Dans la zone Interarrival time, tapez 1 et sélectionnez des heures dans la liste de droite.
• Dans la liste First arrival occurs, cliquez sur At model start. Le premier camion apparaîtra dès le
début du modèle et nous n'aurons pas à l'attendre pendant une heure du modèle.
• Dans la liste Location of arrival, cliquez sur Network/GIS node.
• Dans la liste Node, cliquez sur exitNode.
• Dans la case Speed, tapez 40 et sélectionnez kilometers per hour dans la liste de droite.
• Dans la liste New agent de la section Agent, cliquez sur Truck.

10. Nommez le premier bloc MoveTo « drivingToDock ».


11. Dans la vue Properties du bloc drivingToDock, dans la liste des nœuds, cliquez sur receivingDock pour
définir la destination de l'agent.
12. Renommez le bloc Delay en unloading.
13. Dans la vue Properties du bloc de unloading, procédez comme suit :
• Dans la zone Type, cliquez sur Until stopDelay() is called.
• Dans la liste Agent location, cliquez sur receivingDock.

La durée de l'opération dépend de la rapidité avec laquelle les palettes sont déchargées et retirées par les
chariots élévateurs. Nous considérerons que cette opération est terminée lorsque le bloc Store aura fini de
stocker les palettes, et nous modéliserons cette opération en modifiant le mode de fonctionnement du bloc
Delay.

Contrôle programmatique de la temporisation


En règle générale, vous spécifiez un Delay time pour le fonctionnement du bloc Delay. Il peut s'agir d'une durée
fixe, telle que cinq minutes, ou d'une expression stochastique produisant un délai, telle que triangular(1, 2, 6).

Vous pouvez également contrôler la durée de l'opération par programmation et arrêter le délai si nécessaire en
appelant la fonction correspondante du bloc. Si vous devez arrêter l'attente pour tous les agents qui se trouvent
dans le bloc Delay, appelez la fonction du bloc stopDelayForAll(). Une autre fonction - stopDelay(agent) - met
fin à l'opération et libère l'agent spécifié.

14. Nommez le deuxième bloc MoveTo « drivingToExit ».


15. Dans la vue Properties du bloc drivingToExit, dans la liste Node, cliquez sur exitNode pour définir le
nœud de destination.

Les deux blocs Source de notre modèle génèrent des agents de deux types : les camions qui apparaissent toutes
les heures et les palettes qui sont générées toutes les cinq minutes. Comme nous voulons que les palettes
apparaissent lorsque le camion se décharge, nous allons changer le mode d'arrivée du bloc Source qui les génère.

Contrôle de la génération d'agents


Vous pouvez faire en sorte que le bloc Source génère des agents à des intervalles déterminés en définissant le
paramètre Arrivals defined by du bloc sur Calls of inject() function. Vous pourrez contrôler la création d'agents
au moment de l'exécution en appelant la fonction inject(int n) du bloc.

Cette fonction génère le nombre donné d'agents au moment de l'appel. Vous définissez le nombre d'agents que
le bloc va générer en utilisant un argument de fonction tel que sourcePallets.inject(12) ;.

16. Dans la vue Properties du bloc sourcePallets, dans la liste Arrival defined by, cliquez sur la fonction Calls
of inject().

17. Procédez comme suit pour que le bloc sourcePalettes génère des palettes lorsqu'un camion entre dans
le bloc unloading:
o Dans la vue Propriétés du bloc unloading, développez la section Actions.
o Dans la case On enter, tapez ce qui suit : sourcePallets.inject(40) ;
Cette fonction Java garantit que notre modèle génère 40 palettes chaque fois qu'un camion commence
à décharger.
(40);

18. Dans la vue Propriétés du bloc storeRawMaterial, développez la section Actions et, dans la case On exit,
tapez ce qui suit :
if( self.nWaitingForResource() == 0 )
unloading.stopDelayForAll();

Dans cet exemple, self est un raccourci que nous utilisons pour faire référence au bloc storeRawMaterial
à partir de sa propre action.

S'il n'y a pas de palettes en attente de ressources pour effectuer la livraison au stockage, le délai du bloc
unloading se termine (en d'autres termes, stopDelayForAll() est appelé), et le camion quitte le bloc de
déchargement et entre dans le bloc suivant de l'organigramme, drivingToExit (conduite vers la sortie).
19. Exécutez le modèle.
20. Si le camion est mal aligné, comme dans la figure ci-dessous, procédez comme suit pour y remédier.

o Dans la vue Projects, double-cliquez sur le type d'agent Truck pour ouvrir son diagramme et
afficher la figure d'animation du camion.
o Dans l'éditeur graphique, sélectionnez la forme du camion, puis utilisez la poignée ronde ou la
propriété Rotation Z dans la section des propriétés Position de la forme pour faire pivoter le
camion à -180 degrés.

Nous avons modifié la position du camion, mais nous devons également modifier les paramètres par défaut
d'AnyLogic pour nous assurer que le programme ne le fera pas pivoter une seconde fois.

21. Procédez comme suit pour modifier les paramètres par défaut d'AnyLogic :
o Dans la vue Projects, cliquez sur Truck.
o Dans la vue Properties du type d'agent Truck, cliquez sur la flèche pour développer la section
Dimensions et mouvement.
o Désactivez la case à cocher Rotate animation towards movement.

22. Ouvrez le diagramme Main.


23. Pour s'assurer que les palettes sont correctement positionnées dans le noeud de réseau receivingDock,
ouvrez la palette Space Markup et faites glisser un Attractor dans receivingDock. Placez-le face à
l'entrée.
Attracteurs dans les nœuds
• Les attracteurs nous permettent de contrôler l'emplacement des agents à l'intérieur d'un nœud.
• Si le nœud définit la destination vers laquelle nos agents se déplacent, les attracteurs définissent les
points cibles exacts à l'intérieur du nœud.

Si le nœud définit l'emplacement d'attente, les attracteurs définissent les points exacts où les agents attendront
à l'intérieur du nœud.

Les attracteurs définissent également l'orientation de l'animation de l'agent pendant qu'il attend à l'intérieur du
nœud. Ici, nous utilisons l'attracteur dans ce but précis. Vous pouvez ajouter des attracteurs en les faisant glisser
individuellement sur le diagramme Main, mais si les attracteurs forment une structure régulière, vous devez
utiliser l'assistant spécial pour ajouter plusieurs attracteurs en même temps. L'assistant offre plusieurs modes
de création différents ainsi que l'option d'effacer tous les attracteurs, et vous pouvez l'afficher en cliquant sur le
bouton Attracteurs dans la vue Properties d'un nœud.

24. Exécutez le modèle pour vérifier le comportement du camion.


L'animation devrait fonctionner comme prévu.
Phase 5. Modélisation des machines CNC

Dans cette partie de notre didacticiel, nous allons simuler les machines CNC qui traitent les matières premières.
Nous commencerons par délimiter l'espace et par utiliser des nœuds de points pour définir l'emplacement des
machines CNC.

1. Dans la palette Space Markup, faites glisser l'élément Point Node sur la mise en page de l'atelier et
nommez-le nœudCNC1.
2. Copiez ce nœud pour délimiter l'espace de la deuxième machine CNC.
AnyLogic nommera le second noeud noeudCNC2.

Nous devrons créer des chemins pour connecter ces deux nœuds à notre réseau. Les chariots élévateurs
de notre modèle en auront besoin pour atteindre les machines CNC.
3. Dans la palette Space Markup, cliquez sur l'élément Path et dessinez des chemins comme indiqué dans
la figure ci-dessous. Pour connecter une trajectoire à un nœud ponctuel, cliquez sur le centre du nœud.

Une machine CNC est une unité de ressource et nous l'ajouterons à notre modèle en créant un type de
ressource et en utilisant le bloc ResourcePool pour définir le pool de ressources.
4. Dans la palette Process Modeling Library, cliquez sur le bloc ResourcePool et faites-le glisser sur le
diagramme Main.
5. Dans la vue Properties du bloc ResourcePool, procédez comme suit :
• Dans la zone Name, tapez cnc.
• Dans la liste Ressource Type, cliquez sur Static pour indiquer qu'il s'agit d'une ressource
statique.
Notre pool de ressources étant complet, nous sommes prêts à créer un nouveau type de ressource.

6. Dans la liste New ressource unit, cliquez sur le lien create a custom type.
7. Dans l'assistant New agent, procédez comme suit :
• Dans la zone Agent type name, tapez CNC.
• Cliquez sur Next.
• Sur la page suivante de l'assistant, développez la section CNC Machines et sélectionnez CNC
Vertical Machining Center 2 State 1.
• Cliquez sur Finish.
8. Fermez le diagramme du nouveau type CNC et revenez au diagramme Main.
9. Dans la vue Propriétés du bloc ResourcePool « cnc », procédez comme suit pour placer les deux
machines CNC de notre modèle aux endroits définis par nos nœuds ponctuels, nodeCNC1 et nodeCNC2.
• Dans la liste Capacity defined, cliquez sur By home location.
L'option By home location définit un nombre de ressources égal au nombre de nœuds de site
d'origine que vous avez défini pour ce pool de ressources.
• Cliquez sur le bouton plus, puis ajoutez nodeCNC1 et nodeCNC2 dans la liste Home location
(nodes)
Une fois les nœuds ajoutés, la liste doit ressembler à la figure ci-dessous.
Nous sommes prêts à modifier l'organigramme que notre modèle utilise pour définir le comportement des
palettes en ajoutant un bloc Seize qui saisira une machine CNC. Ensuite, un bloc Delay simulera le traitement
des matières premières par une machine CNC et un bloc Release libérera une machine CNC afin qu'elle puisse
traiter les matières premières de la palette suivante.

10. Dans l'organigramme qui définit le comportement des palettes, faites glisser les blocs
retrieveRawMaterial et sink vers la droite pour faire de la place à un nouveau bloc.
11. Dans la palette Process Modeling Library, faites glisser le bloc Seize et insérez-le dans l'organigramme
des palettes après le bloc rawMaterialinStorage.

12. Dans la vue Properties du bloc Seize, procédez comme suit :


• Dans la zone Name, tapez seizeCNC.
• Sous l'option Ressource set, cliquez sur le bouton plus , puis sur cnc.
Cette étape permet de s'assurer que le bloc Seize saisira une ressource du pool de ressources cnc.
13. Dans la vue Properties du bloc d'organigramme retrieveRawMaterial, procédez comme suit :
• Dans la liste Destination is, cliquez sur : Seized resource unit.
• Dans la liste Ressource, cliquez sur cnc.
Ce bloc simulera la manière dont les palettes sont transportées vers la machine CNC saisie plutôt
que vers la zone de stationnement des chariots élévateurs.
14. Procédez comme suit pour simuler le traitement des matières premières par la machine CNC :
• Ajoutez un bloc Delay, placez-le immédiatement après retrieveRawMaterial et nommez-le
processing.

15. Dans la vue Propriétés du bloc Delay, procédez comme suit :


• Dans la case Delay, tapez 1 et sélectionnez minutes dans la liste de droite.
• Cochez la case Maximum capacity pour permettre aux machines de traiter plusieurs palettes.
Chaque agent qui arrive au bloc Delay doit disposer d'une des deux machines CNC de notre
modèle.
16. Dans la palette Process Modeling Library, faites glisser le bloc Release sur l'organigramme des palettes
et placez-le après le bloc de traitement.
17. Nommez ce bloc Release « releaseCNC ».à
Si vous exécutez le modèle, vous verrez que, bien que les processus soient simulés correctement, l'animation 3D
dessine une palette au milieu de la forme de la machine CNC. Cela se produit lorsque la machine CNC et la palette
qu'elle traite utilisent le même nœud de point comme emplacement de l'animation. Pour résoudre ce problème,
nous devons déplacer la machine CNC vers la droite et la faire pivoter pour qu'elle soit face à la palette.

18. Dans la vue Projects, double-cliquez sur le type d'agent CNC pour ouvrir son diagramme.
19. Déplacez l'animation vers la droite et faites pivoter la forme de la machine CNC à l'aide de la poignée
ronde ou en définissant la propriété Rotation de la figure sur 90 degrés.

Nous sommes prêts à utiliser deux formes d'animation 3D similaires pour animer la machine CNC : une forme
représentera la machine au repos et l'autre représentera la machine en train de traiter les matières
premières. Nous allons définir des valeurs dynamiques pour la propriété Visible de chaque forme, ce qui
permettra à notre modèle d'utiliser l'état de la machine CNC pour déterminer quelle forme le modèle
affichera au moment de l'exécution.

20. Procédez comme suit pour modifier le paramètre de visibilité de la forme d'animation CNC :
• Sélectionnez la forme d'animation CNC.
• Passez votre souris sur l'icône des paramètres statiques qui s'affiche à côté de l'étiquette Visible et
cliquez sur Dynamic Value.

L'icône se transforme en icône de propriétés dynamiques et une boîte dans laquelle vous pouvez définir
l'expression dynamique de la valeur s'affiche. Vous pouvez utiliser la boîte pour saisir une expression
Java qui renvoie une valeur true ou false.

• Dans la boîte, tapez isBusy().


Cette fonction standard pour une ressource AnyLogic renvoie une valeur vraie lorsque la ressource est
occupée. Dans notre cas, la fonction fera en sorte que la forme de l'animation 3D s'affiche lorsque la
machine CNC traite des matières premières.

Propriétés dynamiques
Lorsque vous définissez une expression pour la valeur dynamique d'une propriété, notre modèle va
réévaluer l'expression à chaque image d'animation pendant le temps d'exécution, puis utiliser la valeur
résultante comme valeur courante de la propriété. Fournir des valeurs dynamiques pour la position, la
hauteur, la largeur ou la couleur d'une forme permet aux utilisateurs d'AnyLogic d'animer leurs modèles.

Si vous n'entrez pas de valeur dynamique, la propriété conserve la valeur statique par défaut tout au
long de la simulation.

• Les blocs d'organigramme peuvent avoir :


o Static parameters qui conservent la même valeur tout au long de la simulation, à moins
qu'une fonction set_parameterName(new value) ne la modifie.
o Dynamic properties dont la valeur est réévaluée chaque fois qu'un nouvel agent entre dans
le bloc.
o Code parameters qui vous permettent de définir les actions qui seront exécutées à un
moment clé du bloc de l'organigramme, comme l'action d'entrée ou l'action de sortie. Dans
la plupart des cas, vous trouverez les paramètres de code dans la vue Propriétés d'un bloc
d'organigramme, dans la section Actions.
• Le petit triangle sur l'icône du paramètre indique que vous pouvez cliquer sur l'icône et basculer
entre l'éditeur de valeurs statiques et le champ dans lequel vous pouvez saisir l'expression réévaluée
dynamiquement de la valeur.
21. Procédez comme suit pour ajouter une forme d'animation supplémentaire qui ne sera visible que
lorsque la machine CNC n'est pas en train d'usiner des matières premières.
• Ouvrez la palette 3D Objects qui contient des objets 3D prêts à l'emploi d'AnyLogic.
• Développez la zone CNC Machines et faites glisser la forme CNC Vertical Machining Center 2 State
2 sur le diagramme CNC.
• Dans la boîte de dialogue Auto scale 3D object, cliquez sur le bouton Yes.
• Faites pivoter la forme et placez-la directement au-dessus de la première figure d'animation.
• Dans la boîte Visible, passez à l'éditeur de valeurs dynamiques et tapez isIdle() comme expression
dynamique pour la propriété Visible de la forme.
22. Développez la section People de la palette 3D Objets et faites glisser la forme Worker sur le diagramme
CNC.

23. Enfin, rendez le réseau invisible à l'exécution. Ouvrez le diagramme Main. Sélectionnez le réseau et
définissez sa propriété Visible sur no.
Rappelez-vous que votre premier clic sélectionnera l'élément réseau et que votre second clic
sélectionnera le réseau.
24. Exécutez le modèle et observez le processus.
Vous verrez comment les chariots élévateurs transportent les palettes vers les machines CNC pour les
traiter. Vous devriez également voir des machines CNC animées, changeant de forme 3D en fonction de
leur état.

Nous avons terminé notre modèle simple qui simule le processus de fabrication et d'expédition dans un
petit atelier. Vous avez maintenant une connaissance de base des ressources AnyLogic et de la manière
de les utiliser. Vous savez également comment utiliser un organigramme construit à partir des blocs de
la bibliothèque de modélisation de processus pour définir la logique du processus. Votre prochaine
étape pourrait être de modéliser la façon dont les palettes contenant les pièces finies sont déplacées
vers une autre zone de stockage au quai d'expédition où elles resteront jusqu'à ce qu'elles soient
expédiées. Vous avez déjà utilisé les blocs dont vous aurez besoin pour modéliser cette partie du
processus, vous pouvez donc essayer d'ajouter cette logique par vous-même.

Vous aimerez peut-être aussi