CSYS5010 Stage 3 Viva Preparation

停车场智能信息系统 | Smart Parking ABM | ParkingLots_G1.6

0. 项目总览 / Project Overview

研究问题:如果给司机一个停车App,告诉他们哪里有空位,能不能让他们更快找到车位?如果App信息不太准或者有延迟呢?
Research question: If drivers have a parking app showing vacancies, do they find spots faster? What if the app info is delayed or inaccurate?
假设:有App的司机找车位更快、成功率更高。但如果App信息有延迟或不准,效果会变差。
Hypothesis: Drivers with the app find spots faster and succeed more often. But delayed/inaccurate info weakens this.
方法:用NetLogo做了一个停车场模拟。车辆进来找车位,我们设计了两种找车位方式:①SmartApp模式=用手机App查整个停车场哪里有空位(但App可能不准或有延迟)②Vision模式=司机用眼睛看前方有没有空位。两种方式本质都是"司机能看到多少信息"。
Method: NetLogo parking lot simulation. Cars enter and search for spots. Two search modes: ①SmartApp = check entire lot via phone app (but app may be inaccurate/delayed) ②Vision = driver looks ahead with their eyes. Both are about "how much info can a driver see."
核心发现:App确实有用(找车位快了29%)。但如果所有人都用App,大家会同时涌向同一排("扎堆"),反而更堵。最佳状态是大约一半人用App。而且App信息不太准反而是好事——因为每个人看到的信息不一样,就不会都去同一个地方。
Core finding: The app works (29% faster). But if everyone uses it, they all rush to the same row ("herding"), causing more congestion. Best: about half using the app. And imperfect info is actually good — different info for each driver prevents everyone going to the same spot.

1. [HaiChuan] SmartApp "扩展视觉"系统 / My SmartApp "Extended Vision" System

简单理解:SmartApp就像给司机装了一双"千里眼"——能看到整个停车场,但这双眼睛可能有点模糊(准确率不是100%)、有点延迟(信息不是实时的)。和Vision模式(只能用肉眼看前方)相比,SmartApp看得更远但不一定更准。
Simple analogy: SmartApp gives drivers "telescopic vision" — sees the whole lot, but slightly blurry (accuracy<100%) and slightly delayed. Compared to Vision mode (only see ahead with eyes), SmartApp sees farther but not necessarily more accurately.

1.1 广播机制 / Broadcast Mechanism

1.2 智能搜索逻辑 / Smart Search Logic

1.3 驾驶员异质性 / Driver Heterogeneity

2. [HaiChuan] S1-S4 实验设计与结果 / My Experiments & Results

2.1 实验设计 / Experimental Design

"森林火灾"渐进法——每个场景只增加一个因素:
"Forest fire" progressive approach — each scenario adds one factor:
场景 ScenarioPenetrationDelayAccuracyHetero
S1 基线 Baseline0%----Off
S2 完美信息 Perfect100%0100%Off
S3 降质信息 Degraded100%0-3050-100%Off
S4 混合采用 Mixed0-100%0100%On
所有实验固定 patience=200(约2圈),代表免费停车时长。
All experiments use patience=200 (~2 loops), representing free parking grace period.

2.2 G1.5 结果 / Results (patience=200)

指标 MetricS1 无信息S2 完美信息变化 Change
搜索时间 Search time11984↓29%
占有率 Occupancy57%91%↑34%
成功率 Success rate67.7%79.1%↑11.4pp
完成数 Completed9891492↑51%
S3:搜索时间81-85,不管App多不准多延迟都差不多。为什么?App不准反而是好事——每个人看到的信息不一样,就不会所有人都往同一排跑。信息不准=每人走不同路=自动分散=不扎堆。
S3: Search time 81-85 regardless of how bad the app is. Why? Inaccurate info is actually good — each driver sees different info, so they don't all rush to the same row. Bad info = different routes = natural spreading = no crowding.
S4:50%的人用App时成功率最高(83.7%)。100%都用反而降到78.3%。为什么?不是所有人都用App=有人走这排有人走那排=自然分散。全都用App=全看到同一个空位=全往那跑=扎堆。跟Vision模式发现的一样——信息有个"最佳量",太多反而坏事。
S4: 50% using app has highest success (83.7%). 100% drops to 78.3%. Why? Not everyone using app = some go here, some go there = natural spreading. Everyone using app = everyone sees same vacancy = everyone rushes there = crowding. Same as Vision mode — info has a "sweet spot," too much is harmful.

3. [HaiChuan] 开发调试过程 / My Debugging (4 Iterations)

  1. 第1版:让有App的司机直接导航去某个车位→所有人排队去同一排,把路堵死了。只完成171辆(正常1137辆)
    V1: Navigate to specific bay → everyone queued at same row, blocked the lane. Only 171 completed (vs 1137)
  2. 第2版:加了"路堵了就继续开"→好了一点(397辆)但还是比没App差很多
    V2: Added "if blocked, keep driving" → better (397) but still much worse than no app
  3. 第3版:看到有空位的排就一定拐进去→扎堆太严重,183辆车找不到位放弃了
    V3: Always turn into rows with vacancies → too much crowding, 183 cars gave up
  4. 最终版:有空位的排80%概率拐,没空位的排30%概率拐→终于平衡了,又用了信息又不扎堆
    Final: 80% turn-in for vacancy rows, 30% for others → finally balanced: uses info without crowding
教训:在模拟里改一个小数字(比如80%→100%),整个系统的表现就完全不同。这种"小改动大影响"就是ABM的特点,也是我们在报告里讨论的。
Lesson: Changing one small number (like 80%→100%) completely changes system performance. This "small change, big impact" is the nature of ABM, and we discuss it in the report.

4. [HaiChuan] Patience与U-Turn整合 / My Patience & U-Turn Integration

5. [Geoffrey] Vision搜索模式 / Vision Search Mode

5.1 怎么找车位 / Mechanism

5.2 V1: 视野范围测试 / Vision Radius Sweep

5.3 V2: 耐心值测试 / Patience Sweep

6. [Geoffrey] 分岔分析 / Bifurcation Analysis

6.1 用什么方法分析 / Framework

Geoffrey用了一个数学模型(logistic map的改良版)来预测"在找车位的车有多少辆"。简单说就是:正在找位的车太多→互相竞争→有些人找不到就走了→找位的车变少→又好找了→又来更多车……这个循环可能稳定、也可能失控。
Modified logistic map: ns_{n+1} = (u*ns_n)*(1-(ns_n+ne_n)/K_eff), K_eff adjusted by friction factor (phi~0.6)

6.2 三种状态 / Bifurcation Diagram

把耐心值当作开关,慢慢调大,看系统会怎样。发现了三种状态:
Using patience (P) as control parameter, three regimes emerge:
意思是:耐心越高不一定越好——高耐心让更多车一直转圈不走,最后反而把系统搞乱了,搜索时间变得不可预测
Implication: high patience eventually pushes system into volatile, unpredictable search-time regime

7. [Geoffrey] Henon Map 图形分析 / Phase Space Analysis

不稳定程度热力图 / Instability Heatmap

8. [Geoffrey] 不同类型的司机 / Heterogeneous Drivers

总结:司机多样性是把双刃剑——好处是不会所有人同时扎堆,坏处是系统更容易不稳定,而且永远有一部分人找不到车位
Summary: Heterogeneity = double-edged sword. Prevents catastrophic herding but pushes into semi-chaos at lower thresholds

9. 整合与分工 / Integration & Division of Work

9.1 统一框架:"扩展视觉" / Unified Framework: "Extended Vision"

两种模式其实是一回事——都是在说"司机能看到多少信息":
Both modes are fundamentally the same thing — how much information a driver can "see":
Vision(用眼睛看)SmartApp(用手机看)
能看多远 Range只能看前方一小段能看整个停车场
看得准不准 Accuracy看到的都是真的可能不准(50-100%)
信息新不新 Freshness实时的,没有延迟可能有延迟(0-30 ticks)
什么时候会扎堆 Herding视野大于12就扎堆超过50%人用就扎堆
分析角度 Analysis系统稳不稳定信息质量和使用率

9.2 G1.6实证验证:S2.1实验 / G1.6 Empirical Proof: S2.1 Experiment

最新进展(G1.6):Geoffrey加了一个新实验 S2.1_perfect_info,用SmartApp模式把采用率从5%到100%每隔5%测一次。实验条件和Vision实验对齐(600辆车,80%车位密度,耐心600,跑100000步)。目的是直接对比:SmartApp的"采用率 vs 搜索时间"和Vision的"视野 vs 搜索时间"是不是一样的形状。
Latest (G1.6): Geoffrey added S2.1_perfect_info experiment — fine-grained info-penetration sweep (5%→100%, step 5) in SmartApp mode, with parameters aligned to Vision experiments (num-cars=600, bay-density=80, patience=600, 100000 ticks).
结果(见Geoffrey的对比图):两张图并排放——左边SmartApp采用率,右边Vision视野。两条曲线长得几乎一样:①一开始搜索时间快速下降(信息有用)②到了最佳点之后就平了或者稍微往上走③信息太多的区域失败车辆暴增(扎堆了)。这就证明了两种模式本质是一回事。
Results (see Geoffrey's comparison plots): Both curves show: ①search time drops sharply (info helps) ②plateau or slight rise after optimal point ③failed cars spike in high-info region (herding). This is empirical evidence for the unified framework.
注意:G1.6的代码和G1.5一模一样,只是加了这个新实验和改了一些界面默认值。模型文件现在叫 ParkingLots_G1.6.nlogo
Note: G1.6 code logic is identical to G1.5 — only added S2.1 experiment definition and adjusted UI defaults. Model file is now ParkingLots_G1.6.nlogo.

9.3 六个统一发现 / Six Unified Findings

9.4 模式对比 / Mode Comparison

SmartApp(HaiChuan)

  • 用手机看整个停车场,但可能不准、有延迟
    "Extended vision": global but noisy/delayed
  • 研究App信息质量和多少人用
    Studies info quality and adoption rate
  • 耐心固定=200(免费停车时间)
    patience fixed at 200 (boundary condition)

Vision(Geoffrey)

  • 用眼睛看前方,只能看近处但看到的都是真的
    Physical sight: local but perfectly accurate
  • 研究能看多远、系统稳不稳定
    Studies vision range and system dynamics
  • 耐心从100测到2000(当调节开关用)
    patience swept 100-2000 (control parameter)

分工表 / Work Division

HaiChuanGeoffrey
SmartApp广播系统Vision视觉搜索
Smart搜索逻辑(4次迭代)U-turn处理
S1-S4实验设计死锁检测(2x2)
BehaviorSpace配置调试退出安全逻辑
Patience/U-turn整合V1-V4 Vision实验
G1.3→G1.4修复分岔/Henon Map
Stage 3报告撰写异质性研究

10. Viva 模拟问答 / Q&A Preparation

老师说了:不会问代码细节和公式。会问:研究问题、项目规划、组织决策、你的角色。目的是确认每个人都参与了项目。
Teacher confirmed: NO code details or formulas. Will ask: research question, planning, organisation decisions, your role. Goal: verify everyone was involved.

A. 研究问题 / Research Question

Q1: 你们的研究问题是什么?/ What is your research question?

如果给司机一个手机App告诉他们哪里有空车位,他们找车位会不会更快?停车场会不会更高效?
How does real-time parking-availability information affect drivers' search behaviour, cruising time, and congestion?

展开:我们用ABM(基于代理的模型)来做,因为每个司机都是独立决策的——有没有App、耐心多少都不一样。整个停车场的表现(多快找到位、堵不堵)是所有司机各自行动之后"冒出来的"结果,用传统数学公式算不了。
Elaborate: We use ABM because drivers act independently on partial info — they differ in app ownership and patience. System outcomes emerge from local decisions.

Q2: 你们的假设是什么?验证了吗?/ Hypothesis? Was it confirmed?

假设:有App的司机找车位更快、成功率更高。如果App信息不准或有延迟,效果会变差。
Hypothesis: Informed drivers search faster with higher success; effects weaken with degradation.

结果:前半部分验证了——有App确实快了29%。但后半部分出乎意料——App不准或有延迟时,效果居然没变差。更意外的是:所有人都用App反而不如只有一半人用,因为大家会扎堆。这种"想不到的结果"就是ABM的价值——不跑模拟你不会知道。
Result: Partially confirmed. Info does cut search time 29%. But "degradation weakens effects" — not really, system is surprisingly robust. Unexpected: 100% adoption underperforms 50% due to herding.

B. 项目规划与时间管理 / Planning & Timeline

Q3: 你们是怎么规划项目的?怎么确保按时完成?/ How did you plan the project? How did you stay on schedule?

分三步走:Stage 1定研究方向,Stage 2搭基础模型,Stage 3加新功能和跑实验。Stage 3里我们各做各的搜索模式(HaiChuan做SmartApp,Geoffrey做Vision),然后合到一个文件里。通过版本号推进(G1.0→G1.3→G1.4→G1.5→G1.6),每次改完传给对方接着改。
Three phases: Stage 1 proposal, Stage 2 baseline model, Stage 3 extensions and experiments. We each developed our search mode independently, then integrated into one NetLogo file, iterating through versions.

Q4: 开发过程中遇到了什么困难?怎么解决的?/ What difficulties did you face? How did you solve them?

最大的困难是合并两个人的代码。Geoffrey加了掉头功能之后,车可以一直转圈不走。之前耐心=1500让车转15圈以上,转那么多圈什么位都能找到,有没有App都一样——App没用了。我试了好几次(1500→400→200),最后定200(约转2圈就走),理由是"免费停车时间只有这么长"。另外我发现实验设置里漏了一个参数,导致我的SmartApp实验其实全跑成了Vision模式,我也修好了。
Biggest difficulty: integration. After Geoffrey added u-turn, patience=1500 let cars loop 15+ times, washing out info advantage. Took several rounds (1500→400→200) to find right patience. Also fixed missing h-mode in experiment config.

Q5: 你的SmartApp搜索逻辑经历了什么变化?/ How did your SmartApp search logic evolve?

改了4版。第1版让司机直奔某个车位——全堵在一排了,只停了171辆。第2版加了"堵了就继续开"——好一点(397辆)但还是很差。第3版看到有空位的排就100%拐进去——扎堆太严重。最终版:有空位的排80%概率拐、没空位的排30%概率拐——终于好了。核心教训:改一个小数字(比如80%→100%),整个系统表现就完全不同。
4 iterations. V1: navigate to specific bay — all blocked (171). V2: bypass if blocked (397). V3: 100% turn-in — severe herding. Final: 80/30 split — balanced. Key lesson: small changes → big emergent differences.

C. 项目组织决策 / Organisation Decisions

Q6: 你们怎么分工的?为什么这样分?/ How did you divide the work? Why?

我们按搜索方式分的。HaiChuan做SmartApp(用手机App找车位),Geoffrey做Vision(用眼睛看前方找车位)。这样分是因为两种方式代表现实中不同的找车位方法,可以各做各的再合到一起。HaiChuan还负责设计实验(S1-S4)和写报告,Geoffrey负责数学分析(系统稳定性、混沌)和研究司机多样性的影响。最后我们用同一个模型文件,通过一个开关切换两种模式。
We divided by search mode. I did SmartApp (global broadcast), Geoffrey did Vision (local visual search). I also handled experiment design and report writing. Geoffrey handled bifurcation analysis and heterogeneity study. We share one .nlogo file, switching modes via h-mode.

Q7: 你们做了哪些关键的设计决策?/ What key design decisions did you make?

①实验一步一步加东西——先测没App的情况,再加完美App,再让App变差,最后混合使用。每次只变一个东西,这样能看出每个因素的效果。②耐心定为200——代表免费停车时间(大约转2圈),这是Geoffrey加了掉头功能之后必须调的。③拐进去的概率是80/30不是100/0——100%的话所有人都往同一排跑,试了4版才调出来。④两种搜索方式用同一个模型文件——保证对比公平,起点完全一样。
①Progressive experiment design — each scenario adds one factor. ②patience=200 — critical adjustment after u-turn. ③80/30 probability — avoids herding, from 4 iterations. ④Both modes in one model file — fair comparison.

Q8: 两种模式(SmartApp和Vision)有什么区别和联系?/ How do SmartApp and Vision relate?

我们把SmartApp叫做"扩展的眼睛"——和Vision本质是一回事。Vision是用肉眼看(只能看近处但很准),SmartApp是用手机看(能看整个停车场但可能不准、有延迟)。两种方式都发现了一个规律:信息有个最佳量,Vision在视野=12、SmartApp在50%采用率,超过这个点大家就开始扎堆。G1.6里Geoffrey加的S2.1实验直接证明了这一点——两张图放一起看,曲线形状几乎一样。另外,App信息不准反而是好事——不准的信息让每个人走不同的路,就不会扎堆了。
We define SmartApp as "Extended Vision" — same framework as Vision. Both discover an optimal info threshold: Vision at radius=12, SmartApp at 50% adoption. G1.6's S2.1 experiment confirms — side-by-side plots show nearly identical curves. Info noise actively suppresses herding.

D. 你的角色 / Your Role (具体追问)

Q9: 你具体负责了什么?/ What exactly did you do?

三大块:①写SmartApp的代码——让车位广播信息、让司机根据App决定拐不拐进去,改了4版才调好。②设计4个实验(S1-S4),每次只加一个新东西。③合并代码——Geoffrey加了掉头功能之后,我调了耐心值(从1500降到200)、修了一个实验设置的bug、还修了超时检查的问题。另外Stage 3的报告也是我写的。
Three main parts: ①SmartApp broadcast system (4 iterations). ②S1-S4 experiment design. ③Integration — tuned patience, fixed experiment config bug, fixed timeout check. Also wrote Stage 3 report.

Q10: 你能说说你的主要发现吗?/ What are your main findings?

四个发现:①App有用——找车位快了29%,停车场利用率从57%升到91%。②信息不是越多越好——50%的人用App效果最好,全都用反而扎堆。Vision那边也一样,视野=12最好,再大也扎堆。③App不准反而是好事——每个人看到不一样的信息,就不会都往同一排跑。④给所有人完美信息时失败率涨了10倍,不只是"大家都来了"的问题,是整个系统变得不稳定了。
Four findings: ①Info works — 29% faster, occupancy 57%→91%. ②50% adoption beats 100% (same as Vision radius=12). ③Inaccurate info actively helps by preventing herding. ④Perfect info causes 10x failure increase — system becomes unstable.

Q11: 你对组员的工作了解多少?/ How familiar are you with your partner's work?

Geoffrey做了Vision模式——司机往前看,看到空位比竞争的车多就拐进去。他发现视野=12最好,再大就扎堆(和我的SmartApp发现一样)。他还做了数学分析,发现调耐心值时系统会经历三种状态:耐心太低大家都走了、中间很稳定、耐心太高系统就乱了。另外他加了掉头功能和防堵死的检测。我在合并代码时调了耐心值让两种模式可以公平对比。
Geoffrey built Vision search — optimal at radius=12, herding beyond. Bifurcation analysis: three regimes (extinction → stable → chaos). Added u-turn and deadlock detection. I adjusted patience during integration.

Q12: 如果从头再做,你会改什么?/ What would you change if starting over?

①更早定好耐心值——加掉头功能之后花了很多时间调这个,如果一开始就商量好"车最多转几圈"会省事很多。②加几个停车场——现在只有一个,没法模拟"这个满了去那个"的情况。③用真实数据对比——我们只在模拟内部自己对比,如果有真实停车场的数据会更有说服力。④让App只显示附近的信息——现在App能看整个停车场,但现实中可能只显示你周围的车位。
①Agree on patience earlier. ②Add multiple car parks. ③Validate with real data. ④Add local-info version of SmartApp.

E. 可能的追问 / Possible Follow-ups

Q13: 什么是"羊群效应"?为什么50%比100%好?/ What is herding? Why does 50% beat 100%?

大家看到同样的信息→同时做一样的决定→全往同一排跑→那一排挤爆了。两种模式都有这个问题:Vision视野超过12就扎堆,SmartApp超过50%人用就扎堆。50%最好是因为——不是所有人都有App,有人往东有人往西,自然分散了。和Geoffrey那边发现的一样:司机耐心不同也能防扎堆。另外App信息不准也有帮助——每个人看到的信息不一样,就不会同时做一样的事。
Everyone sees same info → same decisions → all rush to same row. Both modes have this threshold: Vision at radius=12, SmartApp at 50%. 50% works because not everyone has the app = natural diversity. Info noise also helps — different info for each driver prevents synchronisation.

Q14: 你的ABM开发过程是怎样的?/ How was your ABM development process?

一步一步来的。先跑一个没有App的基础版本确认能正常工作。然后一个一个加新功能(先加广播、再加搜索逻辑、再加司机多样性),每加一个就跑实验看对不对。两个检查标准:没人用App时结果应该和基础版一样;App完全准确时应该明显更好。大部分bug出在"信息过期"的情况——司机决定去某个车位,但开到的时候已经被别人停了。
Iterative. First ran baseline to confirm stability. Added extensions one-by-one, testing after each. Two consistency checks: penetration=0 should match baseline; accuracy=100 should clearly beat it. Most bugs in "stale info" edge cases.

Q15: 这个研究有什么实际意义?/ What's the practical significance?

对城市停车政策有用:①停车App确实有效,传感器不完美也没关系。②不用追求人人都装App——25-50%的人用就够了,收益已经很大。③传感器不准反而有好处——信息不一样大家就不扎堆。④给太多人太准的信息,反而会让整个系统变乱——以前的研究只看个人效率,没注意到这种"大家一起行动"之后的问题。两种模式(Vision和SmartApp)都发现了同样的规律,说明这不是某种App的问题,是信息系统的通用规律。
Policy implications: ①Parking apps work, even with imperfect sensors. ②25-50% adoption captures most benefit. ③Imperfect sensors are actually beneficial. ④Too much info causes system instability. Both modes discover the same principle — this is a general law of information systems.