Shopping Mall Dynamics
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This is a model which seeks to explain factors of retail structure in a mall. In particular the number of specialist retailers. Important factors in the model are "stickness", which is the efforts of mall managers to have customers stay longer in the mall. Degree of noise in customer decsion making, and social network factors such as probability of forming links and weight given to WOM information.
HOW IT WORKS
The customers are represented by an agent, denoted i. Customers are randomly connected to other customers and exchange information about their retailing experiences through these social networks. The more links within the networks of customers the more effectively information about retailing alternatives can pass through the customers. The probability of agent i linking to another agent is given by the parameter η, which is randomly calculated for each agent.
Each time step t, there is a chance that the agent will perceive a need to make a purchase. The agent then chooses whether to purchase the product from the bricks and mortar retailer at a mall (BMR) or the online retailer (OR). The retailing choice of customer i at time step t denoted ci(t) depends on its experience xij(t) with the j being one of the categories of retailer (BMR or OR).
We assume the probability of choosing between the option of shopping from a retailer at a mall or an online retailer is a logistic function of the customer’s levels of past experience with the retailers. The probability of customer i choosing BMR at time step t is then:
P{i chooses BMR} = e^(β(x(i,BMR) (t) - x(i,OR) (t)))/(1+ e^(β(x(i,BMR) (t) - x(i,OR) (t))) ) (1)
After the calculation of all the customers’ experiences, the customers then share the experiences across their social networks. To calculate the sharing of information about retailers, each agent calculates a weighted average of their own experience with each type of retailer this time step with the experience of each of their network neighbors. The weight given to the neighbors’ experience is α ϵ [0-1].
HOW TO USE IT
The interface shows a number of sliders (variables) such as stickness, probablity of links, weight given to WOM (gossip weight), and number of specailist retailers.
THINGS TO NOTICE
When running the model, having the customers stay longer is most effective strategy, even given high levels of noise in decision making. There seems to be a curviliner relatiohsip between number of original specialists and the number of final retail specialsts.
THINGS TO TRY
Manipulate the sliders on stickness, number of specialist retailers and and customer noise (Beta) and see if the curviliner relationship with the orignal versus final number of specialist retailers holds.
EXTENDING THE MODEL
As yet we have not run the model under different social network factors of the probability of forming links and WOM effects (Gossip weight in the interface panel).
NETLOGO FEATURES
There is some clever coding here which covers retailer survival and consumer expenditure.
RELATED MODELS
This model is related to a published model in Duncan, Roderick, Bossomaier, Terry and D’Alessandro, Steven (2014) The defence of bricks and mortar retailing. 13th International Conference on Modelling and Applied Simulation, Bordeaux, France: 111-116, available online at http://www.msc-les.org/conf/mas2014/
CREDITS AND REFERENCES
Duncan, Roderick, Bossomaier, Terry, D’Alessandro, Steven and Murphy, Danny (2015) Clothes maketh the man and the regional mall, The 12th International Multidisciplinary Modelling and Simulation Multi-Conference, Bergeggi, Italy.
Comments and Questions
globals [ retailing-patches residential-patches house-patches specialist-patches mall-entrance-patches average-exp-bricks average-exp-online number-customers-bricks number-customers-online candidate ] breed [customers customer] customers-own [ cash house-xcor house-ycor pref-distance gossip-weight exp-online exp-bricks new-exp-online new-exp-bricks shopping prob-choice-bricks purchase-need purchase-target ] breed [houses house] breed [departments department] departments-own [ honeypot stickiness cash ] breed [specialists specialist] specialists-own [ honeypot stickiness cash ] patches-own [ ] to setup clear-all setup-patches setup-agents setup-networks reset-ticks end to setup-patches ;; create the 'house patches' set residential-patches patches with [(pycor >= 0) and (pycor <= 31)] ask residential-patches [ set pcolor green ] ;; create the 'retailing patches' set retailing-patches patches with [(pycor >= 32) and (pycor <= 67)] ask retailing-patches [ set pcolor brown ] set house-patches patches with [(pxcor mod 6 = 3) and (pycor mod 6 = 3) and (pycor < 31)] set specialist-patches patches with [((pxcor mod 3 = 1) and (pycor = 62) and (pxcor > 5) and (pxcor < 43)) or ((pycor mod 3 = 1) and (pycor <= 60) and (pycor > 31) and (pxcor = 1)) or ((pycor mod 3 = 1) and (pycor <= 60) and (pycor > 31) and (pxcor = 46))] set mall-entrance-patches patches with [(pxcor > 3) and (pxcor < 43) and (pycor = 32)] ask mall-entrance-patches [ set pcolor grey] end to setup-agents set-default-shape customers "person" create-customers (initial-number-customers) [ set exp-online random-float 1 set exp-bricks random-float 1 set color 4 + ((exp-bricks - exp-online) * 10) set gossip-weight initial-gossip-weight move-to one-of residential-patches set house-xcor xcor set house-ycor ycor set purchase-need 0 set purchase-target 0 set cash 100 ] set-default-shape houses "house" create-houses (40) [ set color brown move-to one-of house-patches with [count houses-here = 0] ] set-default-shape departments "house" create-departments (1) [ set color red set size 6 setxy 2 63 set honeypot 1 set stickiness 0.7 set cash 1000 ] create-departments (1) [ set color blue set size 6 setxy 45 63 set honeypot 1 set stickiness 0.7 set cash 1000 ] set-default-shape specialists "house" create-specialists (30) [ set color yellow set size 3 setxy 6 62 if count (specialists with [honeypot = 1]) < need-purchase-specialists [ set honeypot 1 ] set stickiness (random-float 20) / 100 + average-stickiness - 0.1 move-to one-of specialist-patches with [count specialists-here = 0] set cash 100 ] end to setup-networks ask customers [ if ((random-float 1) < prob-links) [ create-link-with one-of customers with [distance myself > 0] ] ] ask links [set color grey] end to layout wait 0.05 layout-spring customers links 0.2 5 1 ask customers with [[pcolor] of patch-here != green] [ move-to one-of patches with [(distance myself < 3) and (pcolor = green)] set house-xcor xcor set house-ycor ycor ] end to choose-purchase-need ask customers [ if random-float 1 < 0.429 [ set prob-choice-bricks (exp (beta * (exp-bricks - exp-online))) / (1 + (exp (beta * (exp-bricks - exp-online)))) ifelse (random-float 1 < prob-choice-bricks) [ set purchase-need 1 ifelse random-float 1 < 0.5 [ ifelse (need-purchase-specialists > 0) [ set purchase-target one-of specialists with [honeypot = 1] ] [ set purchase-target one-of departments ] ] [ set purchase-target one-of departments ] ] [set purchase-need 2] ] ] end to shopping-trip ask customers with [purchase-need = 1] [ move-to one-of mall-entrance-patches ask my-links [set hidden? true] set exp-bricks 0.40 set label cash while [distance purchase-target > 4] [ face purchase-target fd 1 ;;wait 0.01 if specialists with [distance myself < 5] != nobody [ ;; ask specialists with [distance myself < 5] [ set color green ] set candidate one-of specialists with [distance myself < 5] if candidate != nobody [ if random-float 1 < [stickiness] of candidate [ ask candidate [ set cash cash + 5 set color grey ] set exp-bricks exp-bricks + 0.05 ] ] ] ] set exp-bricks exp-bricks + 0.05 set cash cash - 10 set purchase-need 0 ask purchase-target [ set cash cash + 10 ] if exp-bricks > 1 [ set exp-bricks 1 ] set label cash ask my-links [set hidden? false] ] end to mouse-move ;When enable by actived the button allows individual agents to be moved. if mouse-down? [ set candidate min-one-of customers [distancexy mouse-xcor mouse-ycor] if [distancexy mouse-xcor mouse-ycor] of candidate < 1 [ while [mouse-down?] [ ask candidate [ setxy mouse-xcor mouse-ycor ] ] ] ] end to return-customers-to-houses ask customers [ set xcor house-xcor set ycor house-ycor ] end ;;main routine to go if ticks > 199 [stop] if specialists = 0 [stop] choose-purchase-need shopping-trip set average-exp-online mean [exp-online] of customers * 100 set average-exp-bricks mean [exp-bricks] of customers * 100 return-customers-to-houses ask customers [ set purchase-need 0 ] ask departments [ set cash cash - 25 set label cash ] ask specialists [ set cash cash - 5 set label cash set color yellow if cash < 0 [ die ] ] tick end
There is only one version of this model, created 2 days ago by Steven D'Alessandro.
Attached files
| File | Type | Description | Last updated | |
|---|---|---|---|---|
| Shopping Mall Dynamics.png | preview | Preview for 'Shopping Mall Dynamics' | 2 days ago, by Steven D'Alessandro | Download |
This model does not have any ancestors.
This model does not have any descendants.
Download this model