Advertisement
rodolpheg

Untitled

Nov 18th, 2020
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. // Nom du modèle
  2. model trafic
  3.  
  4. // Méthode globale définissant l'environnement.
  5. global {
  6. file shp_bati <- file("../includes/bati.shp");
  7. file shp_rue <- file("../includes/rues_vm.shp");
  8. geometry shape <- envelope(shp_rue);
  9. graph reseau;
  10.  
  11. int min_deb_trav <- 6;
  12. int max_deb_trav <- 8;
  13.  
  14. float step <- 1 #mn;
  15.  
  16. init {
  17. create bati from: shp_bati;
  18. create rue from: shp_rue;
  19. reseau <- as_edge_graph(shp_rue);
  20.  
  21. create resident number: 100 {
  22. debut_trav <- rnd (min_deb_trav, max_deb_trav);
  23. fin_trav <- debut_trav + rnd(7, 9);
  24. residence <- one_of (list<bati>(bati));
  25. travail <- one_of (list<bati>(bati));
  26. objectif <- "repos";
  27. location <- point(residence);
  28. }
  29. }
  30. }
  31.  
  32. // Agent "bati"
  33. species bati {
  34. aspect base {
  35. draw shape color: #red ;
  36. }
  37. }
  38.  
  39. // Agent "rue"
  40. species rue {
  41. rgb color <- #black ;
  42. aspect base {
  43. draw shape color: color;
  44. }
  45. }
  46.  
  47. // Agents "résidents"
  48. species resident skills: [moving] {
  49. rgb color <- #blue;
  50. bati residence <- nil;
  51. bati travail <- nil;
  52. int debut_trav;
  53. int fin_trav;
  54. string objectif;
  55. point destination <- nil;
  56.  
  57. // À chaque itération, regarder l'heure et vérifier s'il est temps de partir au travail
  58. reflex au_boulot when: current_date.hour = debut_trav and objectif = "repos" {
  59. // si c'est le cas, donner l'objectif "travailler" à l'agent
  60. objectif <- "travailler";
  61. // et lui donner pour destination "travail" (la destination avant ça était "nil")
  62. destination <- point(travail);
  63. }
  64.  
  65. //
  66. // Ajoutez ici un 'reflex" pour faire rentrer les résidents chez eux après le travail
  67. //
  68.  
  69. // À chaque itération, regarder si la variable destination est différente "nil"
  70. reflex move when: destination != nil {
  71. // si c'est le cas, c'est qu'une destination est "programmée". Le prgramme enverra donc l'agent en question
  72. // vers sa destination, en passant à travers le réseau
  73. do goto target: destination on: reseau;
  74. if destination = location {
  75. // une fois arrivé, sa destination devient nil
  76. destination <- nil;
  77. }
  78. }
  79.  
  80. aspect base {
  81. draw circle(10) color: color;
  82. }
  83. }
  84.  
  85. // Définition de la simulaiton et de ses affichages
  86. experiment trafic type: gui {
  87. output {
  88. display ville_marie type:opengl {
  89. species bati aspect: base ;
  90. species rue aspect: base ;
  91. species resident aspect: base ;
  92. }
  93. }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement