Advertisement
Guest User

Untitled

a guest
Dec 12th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.46 KB | None | 0 0
  1. globals
  2. [
  3. fruit-and-veg
  4. mean-items
  5. stock1
  6. stockO
  7. stock0
  8. stockIOO
  9. stock100
  10. ]
  11.  
  12. breed [ shoppers shopper ]
  13. breed [ traders trader ]
  14.  
  15. shoppers-own
  16. [
  17. shopping-list
  18. ]
  19.  
  20. traders-own
  21. [
  22. stock
  23. ]
  24.  
  25. to setup
  26. clear-all
  27.  
  28. ;list of all fruits and vegetable
  29. set fruit-and-veg
  30. [
  31. "apples" "bananas" "oranges" "plums" "mangos" "grapes"
  32. "cabbage" "potatoes" "carrots" "lettuce" "tomatoes" "beans"
  33. ]
  34. set stockO []
  35. ;positions of a row of stalles / shops
  36. let xs [-12 -9 -6 -3 0 3 6 9 12]
  37. foreach xs
  38. [ [i] ->
  39. create-traders 1
  40. [
  41. set shape "house"
  42. setxy i 0
  43. set color red
  44. ;;give each trader some kinds of products to sell
  45. set stock n-of n-items-stocked fruit-and-veg
  46. ; Nr 2
  47. set stockO sentence stockO stock
  48. ]
  49. ]
  50.  
  51. create-shoppers n-shoppers
  52. [
  53. set shape "person"
  54. setxy random-pxcor random-pycor
  55. set color yellow
  56. ;;give each shoppers a radnom list of prducts to buy
  57. set shopping-list n-of (1 + random 8) fruit-and-veg
  58. ]
  59.  
  60. set mean-items mean[ length shopping-list ] of shoppers
  61.  
  62. converge-stocks0
  63. reset-ticks
  64. end
  65.  
  66. to go
  67. ;; for each shopper in turn thas stil has something to buy
  68. ask shoppers with [not empty? shopping-list]
  69. [
  70. ;choose a stall/shop
  71. let stall one-of traders
  72.  
  73. ;go to that stall
  74. face stall
  75. while [ patch-here != [patch-here] of stall ]
  76. [
  77. forward 0.005 * walking-speed
  78. ]
  79.  
  80. ;buy everything on my shopping list that is for sale in this stall
  81. let purchases filter [ [i] -> member? i [stock] of stall ] shopping-list
  82. foreach purchases
  83. [ [i] ->
  84. ;delete the items that have been bought from the stock
  85. ask stall [ set stock remove i stock ]
  86. ;delete the items thas have been bought from the shopping-list
  87. set shopping-list remove i shopping-list
  88. ]
  89. ;;when shopping is done go home
  90. ;;move to the edge of the grid
  91. if empty? shopping-list [set ycor -16]
  92. ]
  93.  
  94.  
  95.  
  96. ;calculate the average number of items on the shoppinglist
  97. set mean-items mean [length shopping-list] of shoppers
  98.  
  99.  
  100.  
  101. ;if no one has anything left to buy, stop the simulation
  102. if mean-items = 0
  103. [
  104. stop
  105. ]
  106.  
  107.  
  108.  
  109. ; Nr 2
  110. if ticks = 100
  111. [
  112. set stockIOO []
  113. let nr [0 1 2 3 4 5 6 7 8]
  114. foreach nr
  115. [ [i] ->
  116. set stockIOO sentence stockIOO [stock] of trader i
  117. ]
  118. converge-stocks100
  119. ]
  120.  
  121.  
  122.  
  123. ;Nr 3
  124. set stock1 []
  125. let nr [0 1 2 3 4 5 6 7 8]
  126. foreach nr
  127. [ [i] ->
  128. set stock1 sentence stock1[stock] of trader i
  129. ]
  130.  
  131.  
  132. ;Nr4
  133. ask traders with [empty? stock][die]
  134.  
  135.  
  136.  
  137. if (count traders) != 9 [replace-trader]
  138.  
  139.  
  140.  
  141. if ticks = 200 [stop]
  142. tick
  143. end
  144.  
  145. ;Nr 2
  146. to converge-stocks0
  147. set stock0 []
  148. foreach stockO
  149. [ [i] ->
  150. if (i = "apples")[set stock0 lput 0 stock0]
  151. if (i = "bananas")[set stock0 lput 1 stock0]
  152. if (i = "oranges")[set stock0 lput 2 stock0]
  153. if (i = "plums")[set stock0 lput 3 stock0]
  154. if (i = "mangos")[set stock0 lput 4 stock0]
  155. if (i = "grapes")[set stock0 lput 5 stock0]
  156. if (i = "cabbage")[set stock0 lput 6 stock0]
  157. if (i = "potatoes")[set stock0 lput 7 stock0]
  158. if (i = "carrots")[set stock0 lput 8 stock0]
  159. if (i = "lettuce")[set stock0 lput 9 stock0]
  160. if (i = "tomatoes")[set stock0 lput 10 stock0]
  161. if (i = "beans")[set stock0 lput 11 stock0]
  162. ]
  163. end
  164.  
  165. to converge-stocks100
  166. set stock100 []
  167. foreach stockIOO
  168. [ [i] ->
  169. if (i = "apples")[set stock100 lput 0 stock100]
  170. if (i = "bananas")[set stock100 lput 1 stock100]
  171. if (i = "oranges")[set stock100 lput 2 stock100]
  172. if (i = "plums")[set stock100 lput 3 stock100]
  173. if (i = "mangos")[set stock100 lput 4 stock100]
  174. if (i = "grapes")[set stock100 lput 5 stock100]
  175. if (i = "cabbage")[set stock100 lput 6 stock100]
  176. if (i = "potatoes")[set stock100 lput 7 stock100]
  177. if (i = "carrots")[set stock100 lput 8 stock100]
  178. if (i = "lettuce")[set stock100 lput 9 stock100]
  179. if (i = "tomatoes")[set stock100 lput 10 stock100]
  180. if (i = "beans")[set stock100 lput 11 stock100]
  181. ]
  182. end
  183.  
  184. to replace-trader
  185. create-traders 1
  186. [
  187. set shape "house"
  188. setxy random-pxcor random-pycor
  189. ;if any? traders-on patch-here [die]
  190. set color red
  191. ;;give each trader some kinds of products to sell
  192. set stock n-of n-items-stocked fruit-and-veg
  193. ]
  194. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement