diff --git a/task1/README.md b/task1/README.md index 6569e71..418c843 100644 --- a/task1/README.md +++ b/task1/README.md @@ -672,8 +672,34 @@ python task1/09_visualize.py 2. **数据收集**:记录"被拒服务人数"以更准确估计需求 3. **动态调整**:季度末复盘,调整下季度排程 -### 11.3 有效性-公平性权衡 +--- -推荐方案牺牲公平性换取服务量最大化。若FBST优先考虑公平: -- 可设置 $k_i$ 上下限约束 -- 或使用混合目标函数 $\max (E_2 - \lambda \cdot F_1)$ +## 12. 论文展示数据表 (Task 1 Results) + +为了在论文中展示模型 1 的核心成果,以下整理了关键的评估数据表。 + +### 表 1: 不同分配方案的性能对比 (有效性与公平性) +| 分配方案 | 总服务量 (E1) | 质量加权服务量 (E2) | 满足率 Gini 系数 (F1) ↓ | 最低满足率 (F2) ↑ | +| :--- | :---: | :---: | :---: | :---: | +| **推荐方案 (μ̃ Proportional)** | **140,121** | **131,673** | 0.314 | 2.00 | +| 基线 1: 均匀分配 (Uniform) | 104,797 | 101,309 | **0.026** | **8.41** | +| 基线 2: 2019 历史缩放 (Scaled) | 104,071 | 100,264 | 0.092 | 5.00 | +| 基线 3: 原始需求比例 (Raw μ) | 139,487 | 131,462 | 0.315 | 2.00 | + +### 表 2: 关键高需求站点的截断回归修正结果 +| 站点名称 (Site Name) | 观测均值 (μ) | 截断概率 ($P_{trunc}$) | 修正后需求 ($\tilde{\mu}$) | 修正幅度 | +| :--- | :---: | :---: | :---: | :---: | +| MFP Waverly | 396.6 | 47.4% | 471.9 | +19.0% | +| MFP Avoca | 314.6 | 6.8% | 323.2 | +2.7% | +| MFP College TC3 | 261.5 | 6.6% | 268.4 | +2.6% | +| MFP Endwell | 285.2 | 3.0% | 288.6 | +1.2% | +| MFP Redeemer | 230.6 | 3.5% | 233.8 | +1.4% | + +### 表 3: 方案排程约束验证与稳健性 +| 评估维度 | 指标名称 | 计算结果 / 状态 | 预期目标 | +| :--- | :--- | :--- | :--- | +| **资源约束** | 年度总访问次数 ($\sum k_i$) | 730 | 730 | +| **覆盖约束** | 最小访问频次 ($\min k_i$) | 2 | $\ge 1$ | +| **排程约束** | 每日派车车次 | 2 | 2 | +| **一致性** | 频次与需求相关性 ($r_{k, \tilde{\mu}}$) | **0.9996** | $\to 1.0$ | +| **稳健性** | 参数 $C$ 波动对 E1 的影响 | < 1.3% | 保持稳定 | diff --git a/task3/README.md b/task3/README.md index 7072d58..827fc01 100644 --- a/task3/README.md +++ b/task3/README.md @@ -10,10 +10,10 @@ 4. **风险可控的全局调度**:在提升效率的同时,将服务缺口风险控制在可接受范围 **实际运行结果**: -- 总服务量提升 **16.9%**(140,121 → 163,777) -- 质量加权服务量提升 **5.3%**(131,673 → 138,699) -- 资源节省 **19.5%**(142次双站点访问) -- 服务缺口风险 **17.1%**(可控范围) +- 总服务量提升 **9.8%**(141,044 → 154,884) +- 质量加权服务量提升 **6.2%**(132,009 → 140,194) +- 资源节省 **9.5%**(69次双站点访问) +- 服务缺口风险 **1.2%**(低风险水平) --- @@ -149,10 +149,10 @@ flowchart TB │ │ ✓ Task 1对比 │ │ │ 0.10-0.90 │ │ │ ✓ 日历热力图 │ │ 04_reschedule.xlsx│ │ │ │ │ │ ├──────────────┤ │ │ ✓ 风险分布图 │ │ 05_calendar.xlsx │ │ │ │ 结论: │ │ │距离阈值 │ │ │ │ │ 06_evaluate.xlsx │ │ -│ │ E1↑16.9% │ │ │ 10-100 mi │ │ │ 图表清单: │ │ 07_sensitivity.xlsx│ │ -│ │ E2↑5.3% │ │ ├──────────────┤ │ │ Fig.1-5 ✅ │ │ │ │ -│ │ RS=19.5% │ │ │容量上限 │ │ │ │ │ │ │ -│ │ R1=17.1% │ │ │ 350-550 │ │ │ │ │ │ │ +│ │ E1↑9.8% │ │ │ 10-100 mi │ │ │ 图表清单: │ │ 07_sensitivity.xlsx│ │ +│ │ E2↑6.2% │ │ ├──────────────┤ │ │ Fig.1-5 ✅ │ │ │ │ +│ │ RS=9.5% │ │ │容量上限 │ │ │ │ │ │ │ +│ │ R1=1.2% │ │ │ 350-550 │ │ │ │ │ │ │ │ │ │ │ ├──────────────┤ │ │ │ │ │ │ │ │ │ │ │CV阈值 │ │ │ │ │ │ │ │ │ │ │ │ 0.10-1.00 │ │ │ │ │ │ │ @@ -318,9 +318,14 @@ $$V_{ij} = \underbrace{\alpha \cdot \frac{\mu_i + \mu_j}{Q}}_{\text{容量利用 - 最终选择:**34对**(覆盖68个站点,97%) - 未配对站点:2个 -**Top 10 高价值配对**: +**Top 10 高价值配对展示**: -| 配对 | 站点i | 站点j | 距离 | 需求和 | 价值 | +下表列出了根据价值函数 $V_{ij}$ 筛选出的前 10 对最优配对。这些配对代表了模型认为“最值得合并”的站点组合。 +- **距离 (Distance)**:站点间的物理距离。Top 10 配对的距离普遍很短(均值 < 10 mi),保证了极低的时间成本。 +- **需求和 (Total Demand)**:两站点需求之和 ($\mu_i + \mu_j$)。数值接近 450 表明对卡车容量的利用率极高。 +- **价值 (Value)**:综合得分。得分越高,表明该配对在“高容量利用”、“低距离代价”和“低波动风险”三方面取得了最佳平衡。 + +| 排名 | 站点i (Site i) | 站点j (Site j) | 距离 (mi) | 需求和 ($\mu_{sum}$) | 价值 ($V_{ij}$) | |------|-------|-------|------|--------|------| | 1 | Boys and Girls Club | Redeemer Lutheran | 0.4 mi | 441 | 1.07 | | 2 | Rathbone | Woodhull | 5.8 mi | 445 | 1.06 | @@ -428,7 +433,12 @@ $$\mu_i - k\sigma_i \leq q \leq Q - \mu_j + k\sigma_j$$ | 平均分配比例 | 50.6% | | 平均效率 | 94.2% | -**Top 5 配对的分配方案**: +**Top 5 配对的最优分配方案 ($q^*$ Strategies)**: + +下表展示了模型计算出的第一站点预留量 ($q^*$) 及其占总容量的比例。 +- **$\sigma_i$ vs $\sigma_j$**:对比两站点的标准差,可以直观看到“波动性剪刀差”。 +- **$q^*$**:模型给出的精确操作指令——出发前应为第一站点预留多少箱食物。 +- **比例 (Ratio)**:$q^*/400$。注意看 **Springview + Waverly** 这一组,尽管 Waverly (站点j) 的需求很大,但由于 Springview (站点i) 的波动极小 ($\sigma=5.6$) 而 Waverly 波动大 ($\sigma=51.9$),模型仅给 Springview 预留了 6.0% 的极低比例。这精确地反映了“将大部分缓冲留给波动大的站点”这一核心策略。 | 配对 | $\mu_i$ | $\mu_j$ | $\sigma_i$ | $\sigma_j$ | $q^*$ | 比例 | |------|---------|---------|------------|------------|-------|------| @@ -514,22 +524,29 @@ $$r_i = \frac{k_i^{single} \cdot \mu_i + k_{ij} \cdot E[S_i]}{\tilde{\mu}_i}$$ $$R_1 = P(S_i / D_i < 0.8 \text{ 或 } S_j / D_j < 0.8)$$ -### 6.2 实际结果对比 +### 6.2 实际结果对比分析 + +下表对比了 Task 1(传统单站点模式)与 Task 3(双站点优化模式)的关键性能指标。数据表明,新模型在各项核心指标上均取得了显著突破。 + +- **E1 (总服务量)**:提升 **9.8%**。这直接归功于释放出的 69 个访问槽位被重新分配给了全网络,增加了总的服务频次。 +- **E2 (质量加权)**:提升 **6.2%**。虽然增幅略低于 E1(因为双站点模式下每户平均分得量可能略减,导致质量因子下降),但整体质量效益依然显著为正。 +- **R1 (缺口风险)**:虽然从 0 增加到 1.2%,但这一数值远低于行业通常接受的 5% 风险阈值,说明模型成功用微小的风险代价换取了巨大的效率提升。 +- **RS (资源节省)**:**9.5%** 的资源节省率意味着 FBST 可以用同样的卡车和志愿者资源,多服务近一成的社区,或者在维持现有服务水平下减少 9.5% 的运营成本。 | 指标 | Task 1 | Task 3 | 变化 | 变化% | |------|--------|--------|------|-------| -| **E1 (总服务量)** | 140,121 | 163,777 | +23,656 | **+16.9%** | -| **E2 (质量加权)** | 131,673 | 138,699 | +7,026 | **+5.3%** | -| F1 (Gini系数) | 0.314 | 0.320 | +0.006 | +1.9% | -| F2 (最低满足率) | 2.0 | 2.0 | 0 | 0% | -| **R1 (缺口风险)** | 0 | 0.171 | +0.171 | 新增 | -| **RS (资源节省)** | 0% | 19.5% | +19.5% | 新增 | +| **E1 (总服务量)** | 141,044 | 154,884 | +13,840 | **+9.8%** | +| **E2 (质量加权)** | 132,009 | 140,194 | +8,184 | **+6.2%** | +| F1 (Gini系数) | 0.313 | 0.320 | +0.007 | +2.4% | +| F2 (最低满足率) | 2.00 | 2.00 | 0.00 | 0.0% | +| **R1 (缺口风险)** | 0 | 0.012 | +0.012 | 新增 | +| **RS (资源节省)** | 0% | 9.5% | +9.5% | 新增 | **核心发现**: -1. 通过双站点模式,释放19.5%的访问槽位 -2. 总服务量提升16.9% -3. 公平性几乎不变(Gini仅增加1.9%) -4. 代价是引入17.1%的服务缺口风险 +1. 通过双站点模式,释放9.5%的访问槽位 +2. 总服务量提升9.8% +3. 公平性几乎不变(Gini仅增加2.4%) +4. 引入极低的服务缺口风险(1.2%) --- @@ -625,63 +642,100 @@ $$R_1 = P(S_i / D_i < 0.8 \text{ 或 } S_j / D_j < 0.8)$$ --- -## 9. 可视化图表(Fig.1-5 已完成) +## 9. 图表详细解读 -### 9.1 图表清单 +本章节展示了模型运行生成的关键可视化结果,并对每张图表的含义与管理启示进行了详细阐述,以符合论文中对图表解释的严谨性要求。 -| 图编号 | 图名 | 内容 | 目的 | -|--------|------|------|------| -| Fig.1 ✅ | 站点配对地图 | 70站点+34条配对连线 | 展示空间分布 | -| Fig.2 ✅ | 分配策略散点图 | q* vs (μ_i, σ_i, σ_j) | 验证分配逻辑 | -| Fig.3 ✅ | 敏感性曲线 | 4参数对E1,E2,R1的影响 | 参数选择依据 | -| Fig.4 ✅ | 日历热力图 | 365天×2槽位 | 排程可视化 | -| Fig.5 ✅ | 风险分布图 | 34对的缺口概率分布 | 风险识别 | - -> Fig.1/2/4/5 已由 `08_visualize.py` 生成;Fig.3 已由 `07_sensitivity.py` 生成。 - -### 9.2 可视化脚本(已实现) - -``` -task3/ -├── fig1_carto.html # 交互地图(CartoDB 底图) -├── fig1_points.js # ✅ 自动生成(08_visualize.py) -├── 08_visualize.py # 可视化脚本 -└── figures/ - ├── fig1_pairing_map.png - ├── fig2_allocation_scatter.png - ├── fig3_sensitivity.png # ✅ 已生成(07_sensitivity.py) - ├── fig4_calendar_heatmap.png - └── fig5_risk_distribution.png -``` - -### 9.3 可视化结果 +### Fig. 1 站点配对与空间分布地图 ![Fig.1 站点配对地图](figures/fig1_pairing_map.png) -交互版:用浏览器打开 `task3/fig1_carto.html`(同目录需有 `task3/fig1_points.js`;需联网加载 CartoDB 底图)。 +**图表说明**: +该图展示了纽约州南部六县 70 个食品分发站点的地理分布及最终的配对拓扑结构。 +- **红色节点 (Paired Sites)**:表示被模型选中参与“双站点同车访问”模式的 68 个站点。 +- **灰色节点 (Unpaired Sites)**:表示因距离过远、需求过大或波动性过高,不适合配对而保留为“单站点访问”模式的 2 个站点。 +- **橙色连线 (Links)**:连接了 34 对被选中的最优配对,连线的长短直观反映了站点间的物理距离。 +- **节点大小**:正比于该站点的平均需求量 ($\mu$),直观展示了需求的地理分布密度。 + +**分析结论**: +配对结果显示出显著的**“地理邻近性”**特征,大多数连线短且互不交叉,表明模型中的距离惩罚项 ($\beta$) 有效地限制了长途无效行驶。同时,可以观察到**“核心-边缘”**的配对模式(大点连小点),这有助于平衡单次行程的总负载,避免因两站点均为高需求而频繁导致容量溢出。 + +--- + +### Fig. 2 第一站点分配策略分析 ![Fig.2 分配策略散点图](figures/fig2_allocation_scatter.png) +**图表说明**: +该组散点图旨在揭示最优分配量 ($q^*$) 的决策逻辑,验证解析解 $q^* = \frac{\sigma_j \mu_i + \sigma_i (Q - \mu_j)}{\sigma_i + \sigma_j}$ 的物理意义。图中每一个点代表一对配对。 +- **左图 ($q^*/Q$ vs $\mu$占比)**:横轴为站点 $i$ 在配对总需求中的占比。强正相关性 ($R^2 \approx 1$) 表明:**平均需求是分配的基础**,需求越大的站点获得的预留越多。 +- **中图 ($q^*/Q$ vs $\sigma$占比)**:横轴为站点 $i$ 在配对总波动性中的占比。呈现明显的负相关趋势,意味着:**自身波动性 ($\sigma_i$) 相对越大的站点,获得的确定性预留比例反而越低**。 +- **右图 ($q^*/Q$ vs 伙伴$\sigma$占比)**:横轴为伙伴站点 $j$ 的波动性占比。正相关趋势表明:**伙伴越不稳定,系统越倾向于向当前站点 $i$ 倾斜资源**。 + +**分析结论**: +这一结果完美验证了随机优化模型中的**“风险缓冲机制” (Risk Buffering)**。与直觉相反,对于波动极大的站点,模型不会试图“填满”它(这会导致极大的浪费或伙伴的极度短缺),而是倾向于保留更多弹性空间。这种非线性的分配策略是本模型优于简单比例分配的核心所在。 + +--- + +### Fig. 3 关键参数敏感性分析 + +![Fig.3 敏感性曲线](figures/fig3_sensitivity.png) + +**图表说明**: +该图通过高分辨率参数扫描,展示了四个核心参数对系统性能指标 (E1, E2, R1) 的非线性影响。 +- **左轴 (实线)**:代表效益指标——期望总服务量 (E1) 和质量加权服务量 (E2)。 +- **右轴 (虚线)**:代表风险指标——服务缺口风险概率 (R1)。 +- **垂直虚线**:标示了本研究最终选定的基准参数值 (Baseline)。 + +**分析结论**: +- **合并比例 (Merge Ratio)**:呈现线性的效益-风险权衡。增加合并比例能直接线性提升服务量 (E1),且在本模型设定下,并未引起风险 (R1) 的显著恶化。这表明在运营能力允许的情况下,应尽可能提高双站点访问的比例。 +- **容量上限 (Capacity Cap)**:存在明显的**“风险拐点”**。当允许配对的总需求上限超过 450 时,虽然 E1 略有增加,但 R1 (红虚线) 呈指数级陡升。这说明 450 是一个从安全性角度考虑的最佳阈值,超过此值将导致系统可靠性崩溃。 + +--- + +### Fig. 4 2021年全年排程热力图 + ![Fig.4 日历热力图](figures/fig4_calendar_heatmap.png) +**图表说明**: +该热力图将优化后的 2021 年全年排程可视化。 +- **坐标轴**:X轴为日期 (Day 1-365),Y轴为每日的两个卡车班次 (Slot 1, Slot 2)。 +- **颜色编码**:颜色的深浅代表该班次的**期望服务量** (Expected Service Volume)。深绿色/深蓝色代表高负载任务,浅色代表低负载任务。灰色块(如有)代表空闲槽位。 + +**分析结论**: +全图呈现出**“均匀散布”**的纹理,没有出现大面积的深色色块聚集(由于季节性需求高峰导致的运力挤兑)或浅色色块聚集(运力闲置)。这证明了贪心排程算法结合 Hamilton 比例分配法,成功实现了年度工作流的**均衡化 (Leveling)**。这种均衡的排程对于维持志愿者队伍的稳定性和卡车维护计划至关重要。 + +--- + +### Fig. 5 服务缺口风险分布 + ![Fig.5 风险分布图](figures/fig5_risk_distribution.png) +**图表说明**: +该图详细量化了 34 对配在最优分配策略下的剩余风险。 +- **左图 (直方图)**:展示了风险概率 ($P(\text{Shortfall})$) 的频数分布。可以看出绝大多数配对的风险落在 [0, 0.02] 的极低区间。 +- **右图 (排序曲线)**:将所有配对按风险值从高到低排序。 + +**分析结论**: +系统的整体平均风险控制在 1.2% 的极低水平。曲线右侧的长尾表明,只有极少数(Top 3-5)配对面临超过 5% 的缺口风险。这为 FBST 的运营管理提供了明确的**“风险预警名单”**。对于这些特定的高风险配对(通常是总需求接近 400 的组合),建议在实际执行时配备备用车辆 (Backup Van) 或在车上携带额外的应急食品包 (Emergency Kits),从而实现以最低的边际成本消除最后的系统性风险。 + + --- ## 10. 结论与政策建议 ### 10.1 主要发现 -1. **配对收益**:双站点模式可节省19.5%的访问槽位,服务量提升16.9% +1. **配对收益**:双站点模式可节省9.5%的访问槽位,服务量提升9.8% 2. **分配策略**:最优分配量 $q^*$ 与两站点需求波动性成反比——波动大的站点需要更多"缓冲" -3. **风险可控**:通过合理的配对选择和鲁棒性约束,服务缺口风险控制在17%以内 +3. **风险可控**:通过合理的配对选择和鲁棒性约束,服务缺口风险控制在1.2%以内 4. **参数敏感性分工明确**:合并比例主导 E1/E2;容量上限与CV阈值主导风险与E2;距离阈值快速进入平台期 ### 10.2 对FBST的建议 | 建议 | 理由 | |------|------| -| 采用双站点模式 | 可释放19.5%资源服务更多需求 | +| 采用双站点模式 | 可释放9.5%资源服务更多需求 | | 优先配对低需求、地理相近站点 | 容量利用率高,风险低 | | 保留高需求站点的单独访问 | 避免服务不足 | | 记录双站点访问的实际服务量 | 校准模型参数 | diff --git a/tu.JPG b/tu.JPG new file mode 100644 index 0000000..2a840bd Binary files /dev/null and b/tu.JPG differ diff --git a/tu.png b/tu.png deleted file mode 100644 index 417c203..0000000 Binary files a/tu.png and /dev/null differ