Regional v CIty Malls
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This agent-based model simulates shopping mall dynamics under varying economic pressures, exploring how regional and city malls differ in their resilience to economic shocks. The model demonstrates critical thresholds, cascade failures, and the multi-dimensional nature of retail shopping experience in physical retail environments.
The model is grounded in retail agglomeration theory (Christaller, 1933; Huff, 1964) and extends prior work on spatial retail competition by incorporating dynamic customer experience formation, social network effects, and viability-based shop closure mechanisms.
HOW IT WORKS
Agents and Environment
Customers (1000 for Regional, 6000 for City malls): - Make probabilistic decisions to visit the mall based on accumulated experience - Shop across six retail categories: Food Retailing, Household Goods, Clothing & Footwear, Department Stores, Cafes & Food, and Other Services - Update experience through a multi-dimensional mechanism incorporating purchase success, value obtained, and mall vitality - Share experiences through social networks, creating network effects
Shops (48 for Regional, 321 for City malls): - Distributed across six categories matching Australian Bureau of Statistics retail trade data - Accumulate revenue from customer purchases - Face quarterly viability checks against revenue targets - Close permanently if revenue falls below target (occupied? = false)
Key Mechanisms
1. Multi-Dimensional Experience Formation
Customer experience (Xj) is calculated as the average of three components:
Purchase Success Rate = purchases made / shops visited
Measures shopping effectivenessValue Obtained = spending / $300 (normalized, capped at 1.0)
Measures economic satisfactionMall Vitality = open shops / total shops encountered
Measures environmental quality
Current experience = (purchaserate + valuescore + vitality_score) / 3
Experience updates with hysteresis:
Xj(v) = ζXj(v-1) + (1-ζ) × current_experience
Where ζ (zeta) controls the weight of historical experience.
Dead shop penalty:
If dead shops encountered: Xj = Xj × β
Where β (beta, default 0.95) penalizes encounters with closed shops.
2. Social Network Effects
Network experience incorporates social influence:
X̄j = λXj + (1-λ) × mean(Xj of network neighbors)
Where λ (lambda) balances personal vs. social experience.
3. Visit Decision
Probability of visiting mall:
pj = 1 / (1 + exp(-α × combined_factor))
Where combined_factor incorporates: - Time since last visit (tj) - Network experience (X̄j) - Bricks preference (Ψj) - Mall vitality (ς, proportion of open shops)
4. Shop Viability
Shops must meet revenue targets calculated from:
R = α × P̄c × (Ts/Tv) × Nc / Ns × 1.2
Where: - α = economic pressure parameter - P̄c = average item cost for category - Ts = shop check period (default 90 days) - Tv = typical visit interval (default 30 days) - Nc = number of customers - Ns = number of shops
Shops failing to meet targets close permanently, triggering: - Experience penalties for all customers (β effect) - Reduced mall vitality for future visits - Potential cascade failures
5. Coffee Break Constraint
Customers must visit a cafe every break-interval ticks (default 4 = 1 hour). Failure to find a cafe forces mall exit, making cafes "keystone" retailers critical to mall function.
Mall Types
Regional Mall: - 48 shops, 1000 customers - Higher economic pressure (default α = 1.4) - More vulnerable to cascade failures - Critical threshold α ≈ 1.6 triggers rapid collapse
City Mall:
- 321 shops, 6000 customers
- Lower economic pressure (default α = 0.7)
- More resilient to economic shocks
- Exhibits graceful degradation rather than collapse
HOW TO USE IT
Setup
- Select Mall Type: Choose "Regional" or "City" from chooser
- Set Parameters: Adjust sliders for desired economic conditions
- alpha (0.5-2.5): Economic pressure - higher = more stress
- zeta (0.1-1.0): Experience memory - higher = slower updating
- lambda (0.0-1.0): Social influence - higher = more network effects
- beta (0.85-0.99): Dead shop penalty - lower = stronger penalty
- Click Setup: Creates shops and customers according to mall type
- Click Go: Runs simulation (Forever mode for continuous running)
Monitoring
Plots: - Occupancy Rate: Shows percentage of shops still operating (0-100%) - Average Experience: Multi-dimensional customer experience (0-1.0) - Shop Count by Category: Tracks which retail categories fail first - Customer Count: Number of shoppers currently in mall
Key Indicators: - Day Counter: Simulation time in days - Dead Shops: Cumulative shop closures - Occupancy %: Current mall occupancy
Typical Run
Day 0-89: Initial period, no closures Day 90: First viability check - some shops may close Day 180: Second check - cascade effects may begin Day 270+: Pattern stabilizes or accelerates depending on mall type and α
THINGS TO NOTICE
Critical Thresholds
Regional Malls exhibit a critical threshold around α = 1.6: - Below threshold: Stable or slow decline - At threshold: Rapid cascade failure - Above threshold: Catastrophic collapse (occupancy → 20-30%)
City Malls show graceful degradation: - More resilient across α values - Slower decline rate - Higher equilibrium occupancy
Cascade Failure Sequence
When regional malls collapse, observe: 1. Food retailers fail first (low margins, high revenue needs) 2. Cafes close (lose customer base from food closures) 3. Coffee constraint triggers exodus (customers can't complete visits) 4. Remaining categories collapse (insufficient traffic)
Experience Dynamics
Watch Average Experience plot for: - Initial stability (0.8-0.9 range) - Stepwise drops at viability check days (90, 180, 270) - β penalty effects accumulating over time - Social amplification when lambda is high
Keystone Species Effect
Cafes function as "keystone retailers": - Small representation (18% regional, 21% city) - Disproportionate impact on system stability - Cafe failure → customer exodus → mall collapse - Removing break-interval constraint improves survival dramatically
THINGS TO TRY
Experiment 1: Economic Shock Response
Question: How do regional vs. city malls respond to economic shocks?
Method: 1. Setup Regional mall, α = 1.6 2. Run and observe collapse pattern 3. Setup City mall, α = 1.6 4. Compare resilience
Expected: Regional collapses (occupancy → 30%), City degrades gracefully (occupancy → 70-80%)
Experiment 2: Critical Threshold Identification
Question: What is the exact critical α for regional mall collapse?
Method: 1. Run Regional mall at α = 1.0, 1.2, 1.4, 1.6, 1.8, 2.0 2. Record final occupancy rates at Day 360 3. Plot occupancy vs. α to identify threshold
Expected: Sharp transition around α = 1.6
Experiment 3: Social Network Amplification
Question: Does social influence amplify or dampen mall decline?
Method: 1. Regional mall, α = 1.5 2. Run with lambda = 0.2 (low social influence) 3. Run with lambda = 0.8 (high social influence) 4. Compare experience trajectories
Expected: High lambda amplifies negative experiences, accelerating decline
Experiment 4: Keystone Cafe Effect
Question: How critical are cafes to mall survival?
Method: 1. Modify break-interval from 2 to 8 2. Observe how cafe necessity affects mall stability 3. Compare occupancy outcomes
Expected: Longer break-interval (less cafe dependency) → higher survival rates
Experiment 5: Viability Check Frequency
Question: Do more frequent checks accelerate or prevent collapse?
Method: 1. Regional mall, α = 1.5 2. Run with shop-check-days = 30 (monthly checks) 3. Run with shop-check-days = 180 (semi-annual checks) 4. Compare collapse patterns
Expected: More frequent checks → faster initial closure → stronger cascade
Experiment 6: Experience Memory Effects
Question: Does experience hysteresis affect mall resilience?
Method: 1. Regional mall, α = 1.5 2. Run with zeta = 0.3 (low memory, rapid updating) 3. Run with zeta = 0.9 (high memory, slow updating) 4. Compare experience volatility and mall stability
Expected: Low zeta → more volatile experience → faster response to decline
EXTENDING THE MODEL
Possible Enhancements
Anchor Store Effects
Add large anchor stores with different revenue models and externality effects on specialist retailersOnline Competition
Incorporate online shopping channel with risk/convenience trade-offs affecting mall visit probabilityRent Dynamics
Model landlord rent-setting behavior responding to occupancy ratesSpatial Heterogeneity
Add explicit 2D geography with distance-based shop attractiveness and corridor effectsMarketing Interventions
Test promotional campaigns, loyalty programs, or experience enhancementsRenovation Investment
Allow mall operators to invest in improvements affecting overall attractivenessHeterogeneous Customer Segments
Differentiate customers by income, preferences, or shopping frequencySeasonal Effects
Add quarterly variation in shopping intensity and category preferences
NETLOGO FEATURES
Technical Implementation
Error-Tolerant Plotting:
Uses carefully command to handle missing plots gracefully, allowing model to run with partial interface
Multi-Dimensional Measurement:
Experience calculation combines three normalized components (0-1 scale) reflecting different aspects of retail satisfaction
Dynamic Network Formation:
Social networks created at setup with random connections (3-8 neighbors per customer)
Logistic Decision Functions:
Visit probability uses logistic transformation to bound probabilities (0-1) while maintaining smooth response to experience
State-Based Agent Behavior:
Customers track multiple states (in-mall?, purchases-this-visit, spending-this-visit) reset per visit cycle
RELATED MODELS
NetLogo Library Models
- Segregation (Schelling): Analogous threshold dynamics and tipping points
- Virus on Network: Network effects and contagion spreading
- Traffic Grid: Spatial congestion and flow dynamics
Published Agent-Based Retail Models
- Heppenstall et al. (2006): Agent-based retail location modeling
- Ge et al. (2018): Spatial retail competition with bounded rationality
- D'Alessandro et al. (2015): Online vs. brick-and-mortar channel choice with social networks
THEORETICAL FOUNDATIONS
Retail Agglomeration Theory
Christaller (1933) - Central Place Theory:
Hierarchical organization of retail centers based on threshold populations and range of goods
Huff (1964) - Gravity Model:
Probabilistic customer allocation based on store attractiveness and distance
Hotelling (1929) - Spatial Competition:
Strategic clustering and location decisions in competitive retail markets
Experience Formation
Ben-Akiva & Lerman (1985) - Discrete Choice:
Utility-based shopping decisions with stochastic components
Hysteresis in Consumer Behavior:
Path-dependent experience formation (zeta parameter) reflects psychological persistence
Network Effects
Social Influence Theory:
Lambda parameter captures social vs. individual decision-making balance (lambda = 0 → fully individual, lambda = 1 → fully social)
KEY FINDINGS FROM MODEL
1. Critical Thresholds in Retail Ecosystems
Regional shopping centers exhibit non-linear collapse at critical economic pressure (α ≈ 1.6), while city centers show graceful degradation. This suggests fundamental differences in retail ecosystem resilience based on scale and diversity.
Implication: Small format retail centers face existential risk from economic shocks, while large diverse centers absorb shocks through redundancy.
2. Cascade Failure Mechanisms
Shop closures create negative feedback loops: 1. Reduced revenue → shop closure 2. Closure → experience penalty (β) → reduced visits 3. Reduced visits → further revenue decline → more closures 4. Accelerating collapse
Implication: Early intervention critical - once cascade begins, collapse accelerates
3. Keystone Retailer Effect
Cafes represent 18-21% of shops but have disproportionate impact on system stability through the break-interval constraint. Cafe closure forces customer exodus regardless of other shop availability.
Implication: Mall management should prioritize retaining amenity/service retailers (cafes, food courts) over merchandise retailers during economic stress
4. Multi-Dimensional Experience
Shopping experience determined by:
- Purchase success (functional outcome)
- Value obtained (economic satisfaction)
- Mall vitality (environmental quality)
All three dimensions necessary to predict visit behavior.
Implication: Mall performance metrics should extend beyond sales to include success rates, perceived value, and occupancy levels
5. Social Amplification
Higher social influence (lambda) amplifies both positive and negative experiences, creating tipping point dynamics. Malls can tip into "success spiral" or "failure spiral" depending on network sentiment.
Implication: Social media and word-of-mouth effects can accelerate both mall growth and decline
CREDITS AND REFERENCES
Model Development
Author: Steven D'Alessandro
Institution: Edith Cowan University
Contact: s.dalessandro@ecu.edu.au
Date: April 2026
Version: 1.0
Key References
Retail Agglomeration Theory:
Christaller, W. (1933). Die zentralen Orte in Süddeutschland. Jena: Gustav Fischer.
Huff, D. L. (1964). Defining and estimating a trading area. Journal of Marketing, 28(3), 34-38.
Hotelling, H. (1929). Stability in competition. Economic Journal, 39(153), 41-57.
Discrete Choice & Consumer Behavior:
Ben-Akiva, M., & Lerman, S. R. (1985). Discrete choice analysis: Theory and application to travel demand. Cambridge, MA: MIT Press.
Agent-Based Modeling in Retail:
Heppenstall, A. J., Evans, A. J., & Birkin, M. H. (2006). Using hybrid agent-based systems to model spatially-influenced retail markets. Journal of Artificial Societies and Social Simulation, 9(3).
Ge, Y., Curland, C. R., Brint, A., & Macredie, R. (2018). Modelling consumer spatial behaviour in retail distribution. Journal of Modelling in Management, 13(1), 146-166.
Related Modeling Work:
D'Alessandro, Steven, et al. "Browsing or buying: Adding shop dynamics and additional mall visit constraints in regional versus city mall simulations." 15th International Conference on Modeling and Applied Simulation: MAS 2016. CAL-TEK Srl, 2016.
Retail Data Sources:
Australian Bureau of Statistics (ABS). Retail Trade Australia (Cat. 8501.0). Category distributions for Regional and City shopping centers.
Acknowledgments
This model builds on retail agglomeration theory, agent-based modeling techniques from the NetLogo community, and empirical retail data from the Australian Bureau of Statistics.
COPYRIGHT AND LICENSE
Copyright 2026 Steven D'Alessandro
This model may be used and modified for academic research purposes. Please cite appropriately if used in publications.
Suggested citation:
D'Alessandro, Steven (2026). Shopping Mall Ecosystem Dynamics: An Agent-Based Model of Retail Agglomeration Under Economic Stress. NetLogo model. Edith Cowan University.
MODEL SUMMARY
Purpose: Explore critical thresholds and cascade failures in shopping mall ecosystems
Agents: Customers (experience-based shopping decisions) and Shops (viability-based survival)
Key Innovation: Multi-dimensional experience (purchase success + value + vitality)
Main Finding: Regional malls exhibit critical threshold collapse (α ≈ 1.6), while city malls show resilience through scale and diversity
Applications: Retail strategy, mall management, economic policy, urban planning
Platform: NetLogo 6.2+
Computational Requirements: Low (runs quickly on standard hardware)
Comments and Questions
breed [customers customer] breed [shops shop] customers-own [ my-experience ; Xj - customer experience with mall my-network ; social network connections days-since-visit ; tj - time since last mall visit in-mall? ; currently visiting mall path-length ; current path length in mall ticks-in-mall ; time spent in current visit last-coffee-tick ; when last visited cafe disposable-income ; available money days-since-payday ; counter for income bricks-preference ; Ψj - preference for physical vs online category-preferences ; ϕj(q) - preferences for each category network-experience ; X̄j - mean experience including network ; Visit tracking for multi-dimensional experience purchases-this-visit ; number of purchases made spending-this-visit ; total money spent shops-visited-count ; shops encountered this visit ] shops-own [ shop-category ; which retail category (1-6) revenue ; accumulated revenue revenue-target ; R - breakeven revenue needed customers-served ; count of customers this period item-cost ; average item cost occupied? ; is shop still operating ] globals [ ; Retail categories FOOD-RETAILING HOUSEHOLD-GOODS CLOTHING-FOOTWEAR DEPARTMENT-STORES CAFES-FOOD OTHER-SERVICES ; Category costs category-costs category-names ; Mall parameters (note: mall-type created by chooser widget) total-shops occupancy-rate day-counter ; Model parameters (note: alpha, zeta, lambda, beta, shop-check-days, visit-interval, break-interval created by slider widgets) max-path-length ; P - maximum possible path (40 ticks) ; Statistics total-customers-ever shops-by-category dead-shops-count ] to setup clear-all ; Initialize constants set FOOD-RETAILING 1 set HOUSEHOLD-GOODS 2 set CLOTHING-FOOTWEAR 3 set DEPARTMENT-STORES 4 set CAFES-FOOD 5 set OTHER-SERVICES 6 ; Set category costs (from ABS data in paper) set category-costs [150 250 100 200 10 50] set category-names ["Food" "Household" "Clothing" "Dept Store" "Cafe" "Other"] ; Interface variables (mall-type, alpha, zeta, lambda, beta, shop-check-days, visit-interval, break-interval) ; are set by chooser/sliders - no need to initialize here set max-path-length 40 ; 10 hours in 15-min intervals set day-counter 0 set total-customers-ever 0 set dead-shops-count 0 ; Create mall based on type setup-mall setup-customers setup-social-networks reset-ticks end to setup-mall ; Set total-shops based on mall type to avoid division by zero ifelse mall-type = "Regional" [ set total-shops 48 ; Expected total for regional mall ; Regional mall distribution (from paper Table 1) create-shops 1 [ setup-shop FOOD-RETAILING ] ; 2% -> 1 shop create-shops 4 [ setup-shop HOUSEHOLD-GOODS ] ; 7% -> 4 shops create-shops 12 [ setup-shop CLOTHING-FOOTWEAR ] ; 24% -> 12 shops create-shops 1 [ setup-shop DEPARTMENT-STORES ] ; 3% -> 1 shop create-shops 9 [ setup-shop CAFES-FOOD ] ; 18% -> 9 shops create-shops 21 [ setup-shop OTHER-SERVICES ] ; 42% -> 21 shops ] [ set total-shops 321 ; Expected total for city mall ; City mall distribution (from paper Table 1) create-shops 6 [ setup-shop FOOD-RETAILING ] ; 2% -> 6 shops create-shops 13 [ setup-shop HOUSEHOLD-GOODS ] ; 4% -> 13 shops create-shops 109 [ setup-shop CLOTHING-FOOTWEAR ] ; 34% -> 109 shops create-shops 3 [ setup-shop DEPARTMENT-STORES ] ; 1% -> 3 shops create-shops 68 [ setup-shop CAFES-FOOD ] ; 21% -> 68 shops create-shops 122 [ setup-shop OTHER-SERVICES ] ; 38% -> 122 shops ] set total-shops count shops ; Update to actual count update-occupancy-rate ; Position shops in a grid pattern let shop-list sort shops let cols ceiling sqrt total-shops let row 0 let col 0 foreach shop-list [ s -> ask s [ setxy (col * 3 - max-pxcor + 5) (row * 3 - max-pycor + 5) set col col + 1 if col >= cols [ set col 0 set row row + 1 ] ] ] end to setup-shop [category] set shop-category category set shape "house" set occupied? true ; Set color based on category if category = FOOD-RETAILING [ set color yellow ] if category = HOUSEHOLD-GOODS [ set color orange ] if category = CLOTHING-FOOTWEAR [ set color pink ] if category = DEPARTMENT-STORES [ set color violet ] if category = CAFES-FOOD [ set color blue ] if category = OTHER-SERVICES [ set color green ] set size 1.5 set item-cost item (category - 1) category-costs ; Expected customer count based on mall type let expected-customers ifelse-value (mall-type = "Regional") [1000] [6000] ; Revenue target varies by category - lower cost items need more transactions ; R = α * P̄c * (Ts/Tv) * Nc / Ns (from equation 4 in paper) set revenue-target (alpha * item-cost * (shop-check-days / visit-interval) * expected-customers / total-shops * 1.2) ; 20% markup set revenue 0 set customers-served 0 end to setup-customers let num-customers ifelse-value (mall-type = "Regional") [1000] [6000] create-customers num-customers [ set shape "person" set color white set size 1 ; Initialize experience to random value between 0.8 and 1.0 (equation 3) set my-experience 0.8 + random-float 0.2 set network-experience my-experience ; Random starting position setxy random-xcor random-ycor ; Initialize customer properties set days-since-visit random visit-interval set in-mall? false set path-length 0 set ticks-in-mall 0 set last-coffee-tick 0 ; Income management set disposable-income 500 + random 1000 set days-since-payday random 14 ; Preferences (higher means stronger preference for physical shopping) set bricks-preference 0.5 + random-float 0.5 ; Category preferences (how much they like each category) set category-preferences [] repeat 6 [ set category-preferences lput (0.3 + random-float 0.7) category-preferences ] ; Initialize visit tracking variables set purchases-this-visit 0 set spending-this-visit 0 set shops-visited-count 0 set my-network [] ] set total-customers-ever num-customers end to setup-social-networks ; Create random social networks - each customer connected to ~5 others ask customers [ let connections-needed 3 + random 5 let potential-friends other customers repeat connections-needed [ if any? potential-friends [ let friend one-of potential-friends set my-network lput friend my-network ask friend [ set my-network lput myself my-network ] set potential-friends potential-friends with [self != friend] ] ] ] end to go if not any? customers [ stop ] if not any? shops with [occupied?] [ stop ] ; Increment day counter set day-counter day-counter + 1 ; Update customer income every 14 days (bi-weekly pay) ask customers [ set days-since-payday days-since-payday + 1 if days-since-payday >= 14 [ set disposable-income disposable-income + (300 + random 700) set days-since-payday 0 ] ] ; Customers decide whether to visit mall ask customers with [not in-mall?] [ if decide-to-visit-mall? [ start-mall-visit ] set days-since-visit days-since-visit + 1 ] ; Customers currently in mall continue shopping ask customers with [in-mall?] [ continue-mall-visit ] ; Update social network experiences ask customers [ update-network-experience ] ; Check shop viability every 90 days if day-counter mod shop-check-days = 0 [ check-shop-viability ] update-occupancy-rate refresh-displays tick end to-report decide-to-visit-mall? ; Probability of visiting mall based on equation 4: ; pj = arctan(tj * X̄j * βj * ς * Ψj) let time-factor days-since-visit / visit-interval let occupancy-factor occupancy-rate let experience-factor network-experience let preference-factor bricks-preference ; Apply penalty for dead shops let dead-penalty beta ^ dead-shops-count ; Logistic probability function: 1 / (1 + exp(-α * factors)) let combined-factor (time-factor * experience-factor * dead-penalty * occupancy-factor * preference-factor) let visit-probability 1 / (1 + exp (- alpha * combined-factor)) report random-float 1 < visit-probability end to start-mall-visit set in-mall? true set days-since-visit 0 set ticks-in-mall 0 set last-coffee-tick 0 set path-length 0 set purchases-this-visit 0 set spending-this-visit 0 set shops-visited-count 0 set color red ; Move to mall entrance move-to one-of shops with [occupied?] end to continue-mall-visit set ticks-in-mall ticks-in-mall + 1 set path-length path-length + 1 ; Check if need coffee break (every 4 ticks = 1 hour) if ticks-in-mall - last-coffee-tick >= break-interval [ ; Try to find a cafe let nearby-cafes shops with [occupied? and shop-category = CAFES-FOOD] in-radius 5 ifelse any? nearby-cafes [ ; Visit cafe and reset coffee timer move-to one-of nearby-cafes set last-coffee-tick ticks-in-mall ; Make purchase at cafe attempt-purchase [shop-category] of one-of nearby-cafes ] [ ; No cafe available - must leave mall end -mall-visit stop ] ] ; Shop at a random store if not at coffee break if random-float 1 < 0.3 [ ; 30% chance to enter a shop each tick let nearby-shops shops with [occupied?] in-radius 5 if any? nearby-shops [ let target-shop one-of nearby-shops move-to target-shop attempt-purchase [shop-category] of target-shop ] ] ; Decide whether to leave mall if path-length >= max-path-length or random-float 1 < 0.05 [ end -mall-visit ] end to attempt-purchase [category] let cost item (category - 1) category-costs let pref item (category - 1) category-preferences ; Count this as a shop visit set shops-visited-count shops-visited-count + 1 ; Purchase probability based on preference and disposable income if disposable-income >= cost and random-float 1 < pref [ set disposable-income disposable-income - cost ; Track purchase for experience calculation set purchases-this-visit purchases-this-visit + 1 set spending-this-visit spending-this-visit + cost ; Record sale for shop let target-shop one-of shops-here with [shop-category = category] if target-shop != nobody [ ask target-shop [ set revenue revenue + cost set customers-served customers-served + 1 ] ] ] end to end-mall-visit ; Calculate multi-dimensional experience (average of 3 components): ; 1. Purchase success rate (purchases / shops visited) let purchase-rate 0 if shops-visited-count > 0 [ set purchase-rate purchases-this-visit / shops-visited-count ] ; 2. Value obtained (normalized spending, capped at 1.0) ; Expected spending per visit ~$300, so normalize to 0-1 range let value-score min list 1.0 (spending-this-visit / 300) ; 3. Mall vitality (proportion of open shops encountered) let nearby-shops shops in-radius 10 let vitality-score 1.0 ; default if no shops nearby if any? nearby-shops [ set vitality-score count nearby-shops with [occupied?] / count nearby-shops ] ; Average the three dimensions let current-experience (purchase-rate + value-score + vitality-score) / 3 ; Apply hysteresis: Xj(v) = ζXj(v-1) + (1-ζ) * current experience set my-experience zeta * my-experience + (1 - zeta) * current-experience ; Penalty for encountering dead shops (beta penalty) let encountered-dead? any? shops in-radius 10 with [not occupied?] if encountered-dead? [ set my-experience my-experience * beta ] set in-mall? false set color white ; Return home setxy random-xcor random-ycor end to update-network-experience ; Calculate mean experience including social network (equation 5): ; X̄j = λXj + (1-λ) * Σ(Xj of neighbors) / n ifelse length my-network > 0 [ let network-avg mean [my-experience] of turtle-set my-network set network-experience lambda * my-experience + (1 - lambda) * network-avg ] [ set network-experience my-experience ] end to check-shop-viability ask shops with [occupied?] [ ; Shop must meet revenue target or it closes ifelse revenue >= revenue-target [ ; Shop survives - reset revenue counter set revenue 0 set customers-served 0 ] [ ; Shop fails set occupied? false set color gray set dead-shops-count dead-shops-count + 1 ; Penalize all customers who have this shop in their experience ask customers [ set my-experience my-experience * beta ] ] ] update-occupancy-rate end to update-occupancy-rate ifelse total-shops > 0 [ set occupancy-rate count shops with [occupied?] / total-shops ] [ set occupancy-rate 0 ] end to refresh-displays ; Use carefully to avoid errors if plots don't exist carefully [ set-current-plot "Customer Count" plot count customers with [in-mall?] ; Changed: shows customers currently in mall ] [] carefully [ set-current-plot "Shop Count by Category" set-current-plot-pen "Food" plot count shops with [occupied? and shop-category = FOOD-RETAILING] set-current-plot-pen "Household" plot count shops with [occupied? and shop-category = HOUSEHOLD-GOODS] set-current-plot-pen "Clothing" plot count shops with [occupied? and shop-category = CLOTHING-FOOTWEAR] set-current-plot-pen "Dept Store" plot count shops with [occupied? and shop-category = DEPARTMENT-STORES] set-current-plot-pen "Cafes" plot count shops with [occupied? and shop-category = CAFES-FOOD] set-current-plot-pen "Other" plot count shops with [occupied? and shop-category = OTHER-SERVICES] ] [] carefully [ set-current-plot "Occupancy Rate" plot occupancy-rate * 100 ] [] carefully [ set-current-plot "Average Experience" if any? customers [ plot mean [my-experience] of customers ] ] [] end
There is only one version of this model, created 2 days ago by Steven D'Alessandro.
Attached files
| File | Type | Description | Last updated | |
|---|---|---|---|---|
| Regional v CIty Malls.png | preview | Preview for 'Regional v CIty Malls' | 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