Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- globals
- [
- fruit-and-veg
- mean-items
- stock1
- stockO
- stock0
- stockIOO
- stock100
- ]
- breed [ shoppers shopper ]
- breed [ traders trader ]
- shoppers-own
- [
- shopping-list
- ]
- traders-own
- [
- stock
- ]
- to setup
- clear-all
- ;list of all fruits and vegetable
- set fruit-and-veg
- [
- "apples" "bananas" "oranges" "plums" "mangos" "grapes"
- "cabbage" "potatoes" "carrots" "lettuce" "tomatoes" "beans"
- ]
- set stockO []
- ;positions of a row of stalles / shops
- let xs [-12 -9 -6 -3 0 3 6 9 12]
- foreach xs
- [ [i] ->
- create-traders 1
- [
- set shape "house"
- setxy i 0
- set color red
- ;;give each trader some kinds of products to sell
- set stock n-of n-items-stocked fruit-and-veg
- ; Nr 2
- set stockO sentence stockO stock
- ]
- ]
- create-shoppers n-shoppers
- [
- set shape "person"
- setxy random-pxcor random-pycor
- set color yellow
- ;;give each shoppers a radnom list of prducts to buy
- set shopping-list n-of (1 + random 8) fruit-and-veg
- ]
- set mean-items mean[ length shopping-list ] of shoppers
- converge-stocks0
- reset-ticks
- end
- to go
- ;; for each shopper in turn thas stil has something to buy
- ask shoppers with [not empty? shopping-list]
- [
- ;choose a stall/shop
- let stall one-of traders
- ;go to that stall
- face stall
- while [ patch-here != [patch-here] of stall ]
- [
- forward 0.005 * walking-speed
- ]
- ;buy everything on my shopping list that is for sale in this stall
- let purchases filter [ [i] -> member? i [stock] of stall ] shopping-list
- foreach purchases
- [ [i] ->
- ;delete the items that have been bought from the stock
- ask stall [ set stock remove i stock ]
- ;delete the items thas have been bought from the shopping-list
- set shopping-list remove i shopping-list
- ]
- ;;when shopping is done go home
- ;;move to the edge of the grid
- if empty? shopping-list [set ycor -16]
- ]
- ;calculate the average number of items on the shoppinglist
- set mean-items mean [length shopping-list] of shoppers
- ;if no one has anything left to buy, stop the simulation
- if mean-items = 0
- [
- stop
- ]
- ; Nr 2
- if ticks = 100
- [
- set stockIOO []
- let nr [0 1 2 3 4 5 6 7 8]
- foreach nr
- [ [i] ->
- set stockIOO sentence stockIOO [stock] of trader i
- ]
- converge-stocks100
- ]
- ;Nr 3
- set stock1 []
- let nr [0 1 2 3 4 5 6 7 8]
- foreach nr
- [ [i] ->
- set stock1 sentence stock1[stock] of trader i
- ]
- ;Nr4
- ask traders with [empty? stock][die]
- if (count traders) != 9 [replace-trader]
- if ticks = 200 [stop]
- tick
- end
- ;Nr 2
- to converge-stocks0
- set stock0 []
- foreach stockO
- [ [i] ->
- if (i = "apples")[set stock0 lput 0 stock0]
- if (i = "bananas")[set stock0 lput 1 stock0]
- if (i = "oranges")[set stock0 lput 2 stock0]
- if (i = "plums")[set stock0 lput 3 stock0]
- if (i = "mangos")[set stock0 lput 4 stock0]
- if (i = "grapes")[set stock0 lput 5 stock0]
- if (i = "cabbage")[set stock0 lput 6 stock0]
- if (i = "potatoes")[set stock0 lput 7 stock0]
- if (i = "carrots")[set stock0 lput 8 stock0]
- if (i = "lettuce")[set stock0 lput 9 stock0]
- if (i = "tomatoes")[set stock0 lput 10 stock0]
- if (i = "beans")[set stock0 lput 11 stock0]
- ]
- end
- to converge-stocks100
- set stock100 []
- foreach stockIOO
- [ [i] ->
- if (i = "apples")[set stock100 lput 0 stock100]
- if (i = "bananas")[set stock100 lput 1 stock100]
- if (i = "oranges")[set stock100 lput 2 stock100]
- if (i = "plums")[set stock100 lput 3 stock100]
- if (i = "mangos")[set stock100 lput 4 stock100]
- if (i = "grapes")[set stock100 lput 5 stock100]
- if (i = "cabbage")[set stock100 lput 6 stock100]
- if (i = "potatoes")[set stock100 lput 7 stock100]
- if (i = "carrots")[set stock100 lput 8 stock100]
- if (i = "lettuce")[set stock100 lput 9 stock100]
- if (i = "tomatoes")[set stock100 lput 10 stock100]
- if (i = "beans")[set stock100 lput 11 stock100]
- ]
- end
- to replace-trader
- create-traders 1
- [
- set shape "house"
- setxy random-pxcor random-pycor
- ;if any? traders-on patch-here [die]
- set color red
- ;;give each trader some kinds of products to sell
- set stock n-of n-items-stocked fruit-and-veg
- ]
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement