diff --git a/task1/02_demand.xlsx b/task1/02_demand.xlsx index 5aa4af5..d02c03e 100644 Binary files a/task1/02_demand.xlsx and b/task1/02_demand.xlsx differ diff --git a/task1/02_demand_correction.py b/task1/02_demand_correction.py index b819cea..941a2fa 100644 --- a/task1/02_demand_correction.py +++ b/task1/02_demand_correction.py @@ -59,7 +59,7 @@ def truncation_correction(mu: float, sigma: float, C: float = 350) -> tuple: # E[D | D > C] = μ + σ * φ(z) / (1 - Φ(z)) # 修正后: μ̃ ≈ μ * (1 + α * p_trunc) # 这里使用简化的线性修正 - correction_factor = 1 + 0.4 * p_trunc + correction_factor = 1 + 0.1 * p_trunc mu_tilde = mu * correction_factor return mu_tilde, p_trunc, True diff --git a/task1/03_allocate.xlsx b/task1/03_allocate.xlsx index f67e99b..07e7f5b 100644 Binary files a/task1/03_allocate.xlsx and b/task1/03_allocate.xlsx differ diff --git a/task1/04_metrics.xlsx b/task1/04_metrics.xlsx index 37a693d..dda18c7 100644 Binary files a/task1/04_metrics.xlsx and b/task1/04_metrics.xlsx differ diff --git a/task1/05_schedule.xlsx b/task1/05_schedule.xlsx index 21a7138..447007a 100644 Binary files a/task1/05_schedule.xlsx and b/task1/05_schedule.xlsx differ diff --git a/task1/06_validate.xlsx b/task1/06_validate.xlsx index b576387..1d57b60 100644 Binary files a/task1/06_validate.xlsx and b/task1/06_validate.xlsx differ diff --git a/task1/07_backtest.xlsx b/task1/07_backtest.xlsx index 9e9f887..58c4f0e 100644 Binary files a/task1/07_backtest.xlsx and b/task1/07_backtest.xlsx differ diff --git a/task1/08_sensitivity.xlsx b/task1/08_sensitivity.xlsx index 64e9a19..47edcb9 100644 Binary files a/task1/08_sensitivity.xlsx and b/task1/08_sensitivity.xlsx differ diff --git a/task1/09_visualize.py b/task1/09_visualize.py index 8609301..2095502 100644 --- a/task1/09_visualize.py +++ b/task1/09_visualize.py @@ -170,7 +170,7 @@ def fig1_site_map(): # ... (图例和标签代码保持不变) ... - ax.set_title('Fig.1: Site Map (Demand μ & Visit Frequency k)', fontsize=14, fontweight='bold') + # ax.set_title('Fig.1: Site Map (Demand μ & Visit Frequency k)', fontsize=14, fontweight='bold') ax.set_xlabel('Longitude', fontsize=12) ax.set_ylabel('Latitude', fontsize=12) style_axes(ax) @@ -213,7 +213,7 @@ def fig2_demand_correction(): ax.set_xlabel('Site', fontsize=12) ax.set_ylabel('Demand per Visit', fontsize=12) - ax.set_title('Fig.2: Truncation Correction for High-Demand Sites', fontsize=14, fontweight='bold') + # ax.set_title('Fig.2: Truncation Correction for High-Demand Sites', fontsize=14, fontweight='bold') ax.set_xticks(x) ax.set_xticklabels([name[:20] for name in corrected['site_name']], rotation=30, ha='right', fontsize=9) ax.legend(fontsize=10) @@ -267,7 +267,7 @@ def fig3_k_distribution(): ax2.legend(fontsize=10) style_axes(ax2) - plt.suptitle('Fig.3: Visit Frequency Allocation Analysis', fontsize=14, fontweight='bold', y=1.02) + # plt.suptitle('Fig.3: Visit Frequency Allocation Analysis', fontsize=14, fontweight='bold', y=1.02) plt.tight_layout() plt.savefig(FIGURES_PATH / 'fig3_k_distribution.png', dpi=150, bbox_inches='tight') plt.close() @@ -361,7 +361,7 @@ def fig4_efficiency_fairness(): ax.set_xlabel('E2 (Quality-Weighted Service Volume)', fontsize=12) ax.set_ylabel('F1 (Gini Coefficient, lower = fairer)', fontsize=12) - ax.set_title('Fig.4: Efficiency-Fairness Tradeoff Analysis', fontsize=14, fontweight='bold') + # ax.set_title('Fig.4: Efficiency-Fairness Tradeoff Analysis', fontsize=14, fontweight='bold') ax.legend( handles=legend_handles, loc="upper left", @@ -432,7 +432,7 @@ def fig5_calendar_heatmap(): ax.set_xlabel('Day of Month', fontsize=12) ax.set_ylabel('Month', fontsize=12) - ax.set_title('Fig.5: Annual Schedule Calendar Heatmap (Daily Demand)', fontsize=14, fontweight='bold') + # ax.set_title('Fig.5: Annual Schedule Calendar Heatmap (Daily Demand)', fontsize=14, fontweight='bold') ax.grid(False) plt.tight_layout() @@ -488,7 +488,7 @@ def fig6_gap_boxplot(): ax2.legend(fontsize=10) style_axes(ax2) - plt.suptitle('Fig.6: Visit Interval Analysis', fontsize=14, fontweight='bold', y=1.02) + # plt.suptitle('Fig.6: Visit Interval Analysis', fontsize=14, fontweight='bold', y=1.02) plt.tight_layout() plt.savefig(FIGURES_PATH / 'fig6_gap_boxplot.png', dpi=150, bbox_inches='tight') plt.close() @@ -548,7 +548,7 @@ def fig7_sensitivity(): ax4.legend(fontsize=9) style_axes(ax4) - plt.suptitle('Fig.7: Sensitivity Analysis of Model Parameters', fontsize=14, fontweight='bold', y=1.02) + # plt.suptitle('Fig.7: Sensitivity Analysis of Model Parameters', fontsize=14, fontweight='bold', y=1.02) plt.tight_layout() plt.savefig(FIGURES_PATH / 'fig7_sensitivity.png', dpi=150, bbox_inches='tight') plt.close() diff --git a/task1/README.md b/task1/README.md index 418c843..028a4ae 100644 --- a/task1/README.md +++ b/task1/README.md @@ -674,32 +674,41 @@ python task1/09_visualize.py --- -## 12. 论文展示数据表 (Task 1 Results) +## 12. 论文展示数据表与深度解析 (Task 1 Results & Analysis) -为了在论文中展示模型 1 的核心成果,以下整理了关键的评估数据表。 - -### 表 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 | +| **推荐方案 (μ̃ Proportional)** | **139,469** | **131,462** | 0.314 | 2.00 | +| 基线 1: 均匀分配 (Uniform) | 104,797 | 101,309 | **0.024** | **9.25** | +| 基线 2: 2019 历史缩放 (Scaled) | 104,071 | 100,264 | 0.091 | 5.00 | +| 基线 3: 原始需求比例 (Raw μ) | 139,129 | 131,397 | 0.313 | 2.00 | -### 表 2: 关键高需求站点的截断回归修正结果 +**深度解析**: +* **效能跃升**:推荐方案通过将资源集中于高需求站点,使总服务量 (E1) 相比 2019 年历史方案(缩放后)提升了 **34.0%**。在考虑服务质量折扣后 (E2),依然保持了 **31.1%** 的显著增幅。 +* **公平性权衡**:均匀分配方案虽具有极低的 Gini 系数(0.024),但由于忽视了人口分布差异,导致大量高需求社区处于严重的“服务赤字”状态。推荐方案选择在维持最低服务门槛($k \ge 2$)的前提下最大化总量,其 F1 指标反映了资源与需求精准匹配后的正态分布特征。 + +### 表 2: 关键高需求站点的截断回归修正 (Truncation Correction) | 站点名称 (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% | +| MFP Waverly | 396.6 | 81.57% | 429.0 | +8.2% | +| MFP Avoca | 314.6 | 26.84% | 323.0 | +2.7% | +| MFP Endwell United Methodist | 285.3 | 14.34% | 289.3 | +1.4% | +| MFP College TC3 -College | 261.5 | 16.80% | 265.9 | +1.7% | +| MFP Redeemer Lutheran Church | 230.6 | 10.07% | 232.9 | +1.0% | -### 表 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% | 保持稳定 | +**深度解析 (对应 Fig.2)**: +* **识别隐性需求**:Fig.2 揭示了观测数据中的“幸存者偏差”。以 **MFP Waverly** 为例,其截断概率高达 **81.57%**,意味着该站点在历史运营中几乎处于永久性满载状态,观测均值 396.6 仅是运力上限的体现而非真实需求上限。 +* **修正意义**:通过截断正态模型,我们将该站点的潜在需求上调至 429.0。这一修正确保了资源分配不仅是基于“历史给了多少”,而是基于“社区实际缺多少”,有效弥补了高需求区域因历史供给不足而被低估的问题。 + +### 表 3: 方案稳健性与模型拟合统计 +| 评估维度 | 指标名称 | 计算结果 | 业务含义 | +| :--- | :--- | :---: | :--- | +| **分配逻辑** | 历史相关性 $r(v_{2019}, \mu)$ | 0.035 | 证实 2019 年分配与需求几乎无关 (随机分配) | +| **改进潜力** | 相比历史方案提升幅度 | **+34.61%** | 实现按需分配后的效率净增益 | +| **约束满足** | 每日派车容量合格率 | 100% | 确保 365 天排程无资源冲突 | +| **均匀度** | 访问间隔 CV 均值 | 0.197 | 保证了客户对访问日期的可预测性 | + +**深度解析**: +* **模型稳健性**:敏感性分析显示,即使当运力估计 $C$ 在 [350, 450] 范围内波动时,总服务量 E1 的变化率不足 1.3%,证明了分配逻辑对参数设定具有极强的鲁棒性。 +* **排程科学性 (对应 Fig.5 & Fig.6)**:通过日历热力图可以观察到需求负荷在年度周期内的均匀分布,避免了车辆调度的高峰冲突;箱线图验证了各站点的访问间隔高度集中在理想值附近。 diff --git a/task1/fig1_points.js b/task1/fig1_points.js index 3a9cdcd..8ef473a 100644 --- a/task1/fig1_points.js +++ b/task1/fig1_points.js @@ -1,3 +1,3 @@ // Auto-generated from `task1/03_allocate.xlsx` (site_id, site_name, lat, lon, mu, k, visits_2019) // Usage: include this file before `fig1_carto.html` rendering script. -window.FIG1_POINTS = [{"site_id":1,"site_name":"MFP American Legion - Binghamton","lat":42.108036,"lng":-75.887779,"mu":200.1818181818182,"k":14,"visits_2019":11},{"site_id":2,"site_name":"MFP Avoca","lat":42.4174468,"lng":-77.4358433,"mu":314.5833333333333,"k":24,"visits_2019":12},{"site_id":3,"site_name":"MFP Bath","lat":42.3362172,"lng":-77.3175047,"mu":279.4545454545454,"k":19,"visits_2019":11},{"site_id":4,"site_name":"MFP Beaver Dams","lat":42.2606415,"lng":-76.9559856,"mu":170.7,"k":12,"visits_2019":10},{"site_id":5,"site_name":"MFP Birnie Transportation Services","lat":42.172309,"lng":-77.1101217,"mu":213.375,"k":15,"visits_2019":8},{"site_id":6,"site_name":"MFP Boys and Girls Club","lat":42.1053841,"lng":-75.9213736,"mu":210.8,"k":15,"visits_2019":10},{"site_id":7,"site_name":"MFP Bradford","lat":42.3691309,"lng":-77.1081064,"mu":122.2727272727273,"k":9,"visits_2019":11},{"site_id":8,"site_name":"MFP Campbell","lat":42.2314129,"lng":-77.1948265,"mu":168.5,"k":12,"visits_2019":12},{"site_id":9,"site_name":"MFP Canisteo","lat":42.272779,"lng":-77.606849,"mu":177.0,"k":13,"visits_2019":10},{"site_id":10,"site_name":"MFP Colesville","lat":42.1841905,"lng":-75.6329193,"mu":197.3333333333333,"k":14,"visits_2019":12},{"site_id":11,"site_name":"MFP College Corning Community College","lat":42.1172594,"lng":-77.0735445,"mu":251.0,"k":17,"visits_2019":6},{"site_id":12,"site_name":"MFP College Ithaca College","lat":42.4199351,"lng":-76.4969643,"mu":138.3333333333333,"k":10,"visits_2019":9},{"site_id":13,"site_name":"MFP College TC3 -College","lat":42.502126,"lng":-76.287671,"mu":261.5,"k":19,"visits_2019":6},{"site_id":14,"site_name":"MFP Conklin- Maines Community Center","lat":42.0870901,"lng":-75.8309647,"mu":153.1666666666667,"k":11,"visits_2019":12},{"site_id":15,"site_name":"MFP Danby","lat":42.3522565,"lng":-76.4800051,"mu":160.2222222222222,"k":11,"visits_2019":9},{"site_id":16,"site_name":"MFP Deposit","lat":42.0625771,"lng":-75.422248,"mu":156.5833333333333,"k":11,"visits_2019":12},{"site_id":17,"site_name":"MFP Endwell United Methodist Church","lat":42.111296,"lng":-76.02203,"mu":285.25,"k":21,"visits_2019":12},{"site_id":18,"site_name":"MFP Erin","lat":42.1788978,"lng":-76.6922607,"mu":173.9090909090909,"k":12,"visits_2019":11},{"site_id":19,"site_name":"MFP First Assembly Of God Church","lat":42.1022814,"lng":-75.9129518,"mu":146.0,"k":10,"visits_2019":12},{"site_id":20,"site_name":"MFP Lamphear Court","lat":42.1598551,"lng":-77.0711389,"mu":126.0,"k":9,"visits_2019":10},{"site_id":21,"site_name":"MFP Lansing","lat":42.5183206,"lng":-76.5035538,"mu":181.0,"k":13,"visits_2019":11},{"site_id":22,"site_name":"MFP Lindley","lat":42.028142,"lng":-77.1392597,"mu":232.9,"k":16,"visits_2019":10},{"site_id":23,"site_name":"MFP Millport","lat":42.267172,"lng":-76.837356,"mu":166.0,"k":12,"visits_2019":10},{"site_id":24,"site_name":"MFP Montour Falls-Schuyler County Human Services Complex","lat":42.3409968,"lng":-76.8412703,"mu":149.3636363636364,"k":11,"visits_2019":11},{"site_id":25,"site_name":"MFP Nichols-The Creamery","lat":42.02302,"lng":-76.371793,"mu":122.4,"k":9,"visits_2019":5},{"site_id":26,"site_name":"MFP Owego VFW","lat":42.1043411,"lng":-76.2615965,"mu":176.25,"k":12,"visits_2019":12},{"site_id":27,"site_name":"MFP Prattsburgh","lat":42.5272099,"lng":-77.2866,"mu":144.5,"k":10,"visits_2019":12},{"site_id":28,"site_name":"MFP Rathbone","lat":42.1306252,"lng":-77.3197915,"mu":269.0909090909091,"k":19,"visits_2019":11},{"site_id":29,"site_name":"MFP Reach for Christ Church Freeville","lat":42.4919905,"lng":-76.3443272,"mu":220.0,"k":15,"visits_2019":10},{"site_id":30,"site_name":"MFP Redeemer Lutheran Church","lat":42.1000047,"lng":-75.9224594,"mu":230.6,"k":17,"visits_2019":10},{"site_id":31,"site_name":"MFP Rehoboth Deliverance Ministry","lat":42.318273,"lng":-77.6493618,"mu":235.9,"k":16,"visits_2019":10},{"site_id":32,"site_name":"MFP Richford","lat":42.3551522,"lng":-76.2008963,"mu":265.9090909090909,"k":18,"visits_2019":11},{"site_id":33,"site_name":"MFP Saint Mary Recreation Center","lat":42.0988789,"lng":-75.9041391,"mu":148.3,"k":11,"visits_2019":10},{"site_id":34,"site_name":"MFP Salvation Army Ithaca","lat":42.4398066,"lng":-76.5019869,"mu":181.1818181818182,"k":13,"visits_2019":11},{"site_id":35,"site_name":"MFP Schuyler Outreach","lat":42.3770866,"lng":-76.8698425,"mu":138.8571428571429,"k":10,"visits_2019":7},{"site_id":36,"site_name":"MFP Senior - Addison Place Apartments","lat":42.1001876,"lng":-77.2371924,"mu":30.09090909090909,"k":3,"visits_2019":11},{"site_id":37,"site_name":"MFP Senior - Bragg","lat":42.0896598,"lng":-76.7977954,"mu":66.88888888888889,"k":5,"visits_2019":9},{"site_id":38,"site_name":"MFP Senior - Carpenter Apartments","lat":42.0930065,"lng":-76.7984317,"mu":31.09090909090909,"k":3,"visits_2019":11},{"site_id":39,"site_name":"MFP Senior - Cayuga Meadows","lat":42.464569,"lng":-76.5409393,"mu":25.88888888888889,"k":3,"visits_2019":9},{"site_id":40,"site_name":"MFP Senior - CFS Lakeview","lat":42.3488781,"lng":-77.3110763,"mu":112.0,"k":8,"visits_2019":10},{"site_id":41,"site_name":"MFP Senior - Conifer Village","lat":42.4511294,"lng":-76.5323538,"mu":33.8,"k":3,"visits_2019":10},{"site_id":42,"site_name":"MFP Senior - Corning Senior Center","lat":42.1490255,"lng":-77.0619725,"mu":75.0,"k":6,"visits_2019":9},{"site_id":43,"site_name":"MFP Senior - Dayspring","lat":42.1420715,"lng":-77.0454685,"mu":77.18181818181819,"k":6,"visits_2019":11},{"site_id":44,"site_name":"MFP Senior - East Hill Senior Living","lat":42.1141777,"lng":-75.8720703,"mu":39.83333333333334,"k":4,"visits_2019":12},{"site_id":45,"site_name":"MFP Senior - Elizabeth Square, Waverly","lat":42.001546,"lng":-76.541203,"mu":29.0,"k":3,"visits_2019":12},{"site_id":46,"site_name":"MFP Senior - Ellis Hollow","lat":42.435955,"lng":-76.460374,"mu":24.72727272727273,"k":3,"visits_2019":11},{"site_id":47,"site_name":"MFP Senior - Flannery","lat":42.0819957,"lng":-76.8053269,"mu":61.72727272727273,"k":5,"visits_2019":11},{"site_id":48,"site_name":"MFP Senior - Harry L Apartments","lat":42.1237339,"lng":-75.9567565,"mu":32.83333333333334,"k":3,"visits_2019":6},{"site_id":49,"site_name":"MFP Senior - Jefferson Village","lat":42.3829923,"lng":-76.8713304,"mu":24.81818181818182,"k":3,"visits_2019":11},{"site_id":50,"site_name":"MFP Senior - Lincoln Court","lat":42.090217,"lng":-75.910198,"mu":26.0,"k":3,"visits_2019":10},{"site_id":51,"site_name":"MFP Senior - Long Meadow Senior Housing","lat":42.1135325,"lng":-76.2704045,"mu":34.75,"k":3,"visits_2019":12},{"site_id":52,"site_name":"MFP Senior - Metro Plaza Apartments","lat":42.1016977,"lng":-75.9085338,"mu":56.3,"k":5,"visits_2019":10},{"site_id":53,"site_name":"MFP Senior - North Shore Towers","lat":42.0966132,"lng":-75.9103884,"mu":58.33333333333334,"k":5,"visits_2019":6},{"site_id":54,"site_name":"MFP Senior - Northern Broome Senior Center, Whitney Point","lat":42.3269618,"lng":-75.9677778,"mu":50.90909090909091,"k":4,"visits_2019":11},{"site_id":55,"site_name":"MFP Senior - Park Terrace Congregate Apartments","lat":42.051364,"lng":-76.832954,"mu":24.36363636363636,"k":3,"visits_2019":11},{"site_id":56,"site_name":"MFP Senior - Springview Apartments","lat":42.0100399,"lng":-76.533895,"mu":27.58333333333333,"k":3,"visits_2019":12},{"site_id":57,"site_name":"MFP Senior - Titus Towers","lat":42.4317058,"lng":-76.504801,"mu":72.8,"k":6,"visits_2019":10},{"site_id":58,"site_name":"MFP Senior - Villa Serene","lat":42.1295916,"lng":-76.8158267,"mu":69.72727272727273,"k":6,"visits_2019":11},{"site_id":59,"site_name":"MFP Senior - Village Square/Manor","lat":42.159804,"lng":-77.09139,"mu":34.25,"k":3,"visits_2019":12},{"site_id":60,"site_name":"MFP Senior - Wells Apartments","lat":42.1076045,"lng":-75.9607932,"mu":23.5,"k":3,"visits_2019":10},{"site_id":61,"site_name":"MFP Senior - Woodsedge Apartments","lat":42.535151,"lng":-76.501086,"mu":17.2,"k":2,"visits_2019":10},{"site_id":62,"site_name":"MFP The Love Church","lat":42.1412225,"lng":-76.8137998,"mu":259.3333333333333,"k":18,"visits_2019":12},{"site_id":63,"site_name":"MFP Troupsburg","lat":42.0432505,"lng":-77.5456383,"mu":148.7142857142857,"k":11,"visits_2019":7},{"site_id":64,"site_name":"MFP Tuscarora","lat":42.0522655,"lng":-77.2737134,"mu":192.6363636363636,"k":14,"visits_2019":11},{"site_id":65,"site_name":"MFP Van Etten","lat":42.2080409,"lng":-76.579406,"mu":213.7,"k":15,"visits_2019":10},{"site_id":66,"site_name":"MFP Waverly","lat":42.0194466,"lng":-76.5236008,"mu":396.6363636363636,"k":35,"visits_2019":11},{"site_id":67,"site_name":"MFP Wayland","lat":42.5685797,"lng":-77.5957241,"mu":180.4166666666667,"k":13,"visits_2019":12},{"site_id":68,"site_name":"MFP Whitney Point","lat":42.3405329,"lng":-75.9765268,"mu":202.5454545454545,"k":14,"visits_2019":11},{"site_id":69,"site_name":"MFP Windsor","lat":42.0779615,"lng":-75.6427789,"mu":200.9090909090909,"k":14,"visits_2019":11},{"site_id":70,"site_name":"MFP Woodhull","lat":42.0798397,"lng":-77.4111295,"mu":176.0,"k":12,"visits_2019":12}]; +window.FIG1_POINTS = [{"site_id":1,"site_name":"MFP American Legion - Binghamton","lat":42.108036,"lng":-75.887779,"mu":200.1818181818182,"k":14,"visits_2019":11},{"site_id":2,"site_name":"MFP Avoca","lat":42.4174468,"lng":-77.4358433,"mu":314.5833333333333,"k":22,"visits_2019":12},{"site_id":3,"site_name":"MFP Bath","lat":42.3362172,"lng":-77.3175047,"mu":279.4545454545454,"k":19,"visits_2019":11},{"site_id":4,"site_name":"MFP Beaver Dams","lat":42.2606415,"lng":-76.9559856,"mu":170.7,"k":12,"visits_2019":10},{"site_id":5,"site_name":"MFP Birnie Transportation Services","lat":42.172309,"lng":-77.1101217,"mu":213.375,"k":15,"visits_2019":8},{"site_id":6,"site_name":"MFP Boys and Girls Club","lat":42.1053841,"lng":-75.9213736,"mu":210.8,"k":15,"visits_2019":10},{"site_id":7,"site_name":"MFP Bradford","lat":42.3691309,"lng":-77.1081064,"mu":122.2727272727273,"k":9,"visits_2019":11},{"site_id":8,"site_name":"MFP Campbell","lat":42.2314129,"lng":-77.1948265,"mu":168.5,"k":12,"visits_2019":12},{"site_id":9,"site_name":"MFP Canisteo","lat":42.272779,"lng":-77.606849,"mu":177.0,"k":13,"visits_2019":10},{"site_id":10,"site_name":"MFP Colesville","lat":42.1841905,"lng":-75.6329193,"mu":197.3333333333333,"k":14,"visits_2019":12},{"site_id":11,"site_name":"MFP College Corning Community College","lat":42.1172594,"lng":-77.0735445,"mu":251.0,"k":18,"visits_2019":6},{"site_id":12,"site_name":"MFP College Ithaca College","lat":42.4199351,"lng":-76.4969643,"mu":138.3333333333333,"k":10,"visits_2019":9},{"site_id":13,"site_name":"MFP College TC3 -College","lat":42.502126,"lng":-76.287671,"mu":261.5,"k":19,"visits_2019":6},{"site_id":14,"site_name":"MFP Conklin- Maines Community Center","lat":42.0870901,"lng":-75.8309647,"mu":153.1666666666667,"k":11,"visits_2019":12},{"site_id":15,"site_name":"MFP Danby","lat":42.3522565,"lng":-76.4800051,"mu":160.2222222222222,"k":12,"visits_2019":9},{"site_id":16,"site_name":"MFP Deposit","lat":42.0625771,"lng":-75.422248,"mu":156.5833333333333,"k":11,"visits_2019":12},{"site_id":17,"site_name":"MFP Endwell United Methodist Church","lat":42.111296,"lng":-76.02203,"mu":285.25,"k":20,"visits_2019":12},{"site_id":18,"site_name":"MFP Erin","lat":42.1788978,"lng":-76.6922607,"mu":173.9090909090909,"k":13,"visits_2019":11},{"site_id":19,"site_name":"MFP First Assembly Of God Church","lat":42.1022814,"lng":-75.9129518,"mu":146.0,"k":11,"visits_2019":12},{"site_id":20,"site_name":"MFP Lamphear Court","lat":42.1598551,"lng":-77.0711389,"mu":126.0,"k":9,"visits_2019":10},{"site_id":21,"site_name":"MFP Lansing","lat":42.5183206,"lng":-76.5035538,"mu":181.0,"k":13,"visits_2019":11},{"site_id":22,"site_name":"MFP Lindley","lat":42.028142,"lng":-77.1392597,"mu":232.9,"k":16,"visits_2019":10},{"site_id":23,"site_name":"MFP Millport","lat":42.267172,"lng":-76.837356,"mu":166.0,"k":12,"visits_2019":10},{"site_id":24,"site_name":"MFP Montour Falls-Schuyler County Human Services Complex","lat":42.3409968,"lng":-76.8412703,"mu":149.3636363636364,"k":11,"visits_2019":11},{"site_id":25,"site_name":"MFP Nichols-The Creamery","lat":42.02302,"lng":-76.371793,"mu":122.4,"k":9,"visits_2019":5},{"site_id":26,"site_name":"MFP Owego VFW","lat":42.1043411,"lng":-76.2615965,"mu":176.25,"k":13,"visits_2019":12},{"site_id":27,"site_name":"MFP Prattsburgh","lat":42.5272099,"lng":-77.2866,"mu":144.5,"k":11,"visits_2019":12},{"site_id":28,"site_name":"MFP Rathbone","lat":42.1306252,"lng":-77.3197915,"mu":269.0909090909091,"k":19,"visits_2019":11},{"site_id":29,"site_name":"MFP Reach for Christ Church Freeville","lat":42.4919905,"lng":-76.3443272,"mu":220.0,"k":16,"visits_2019":10},{"site_id":30,"site_name":"MFP Redeemer Lutheran Church","lat":42.1000047,"lng":-75.9224594,"mu":230.6,"k":16,"visits_2019":10},{"site_id":31,"site_name":"MFP Rehoboth Deliverance Ministry","lat":42.318273,"lng":-77.6493618,"mu":235.9,"k":17,"visits_2019":10},{"site_id":32,"site_name":"MFP Richford","lat":42.3551522,"lng":-76.2008963,"mu":265.9090909090909,"k":19,"visits_2019":11},{"site_id":33,"site_name":"MFP Saint Mary Recreation Center","lat":42.0988789,"lng":-75.9041391,"mu":148.3,"k":11,"visits_2019":10},{"site_id":34,"site_name":"MFP Salvation Army Ithaca","lat":42.4398066,"lng":-76.5019869,"mu":181.1818181818182,"k":13,"visits_2019":11},{"site_id":35,"site_name":"MFP Schuyler Outreach","lat":42.3770866,"lng":-76.8698425,"mu":138.8571428571429,"k":10,"visits_2019":7},{"site_id":36,"site_name":"MFP Senior - Addison Place Apartments","lat":42.1001876,"lng":-77.2371924,"mu":30.09090909090909,"k":3,"visits_2019":11},{"site_id":37,"site_name":"MFP Senior - Bragg","lat":42.0896598,"lng":-76.7977954,"mu":66.88888888888889,"k":5,"visits_2019":9},{"site_id":38,"site_name":"MFP Senior - Carpenter Apartments","lat":42.0930065,"lng":-76.7984317,"mu":31.09090909090909,"k":3,"visits_2019":11},{"site_id":39,"site_name":"MFP Senior - Cayuga Meadows","lat":42.464569,"lng":-76.5409393,"mu":25.88888888888889,"k":3,"visits_2019":9},{"site_id":40,"site_name":"MFP Senior - CFS Lakeview","lat":42.3488781,"lng":-77.3110763,"mu":112.0,"k":8,"visits_2019":10},{"site_id":41,"site_name":"MFP Senior - Conifer Village","lat":42.4511294,"lng":-76.5323538,"mu":33.8,"k":3,"visits_2019":10},{"site_id":42,"site_name":"MFP Senior - Corning Senior Center","lat":42.1490255,"lng":-77.0619725,"mu":75.0,"k":6,"visits_2019":9},{"site_id":43,"site_name":"MFP Senior - Dayspring","lat":42.1420715,"lng":-77.0454685,"mu":77.18181818181819,"k":6,"visits_2019":11},{"site_id":44,"site_name":"MFP Senior - East Hill Senior Living","lat":42.1141777,"lng":-75.8720703,"mu":39.83333333333334,"k":4,"visits_2019":12},{"site_id":45,"site_name":"MFP Senior - Elizabeth Square, Waverly","lat":42.001546,"lng":-76.541203,"mu":29.0,"k":3,"visits_2019":12},{"site_id":46,"site_name":"MFP Senior - Ellis Hollow","lat":42.435955,"lng":-76.460374,"mu":24.72727272727273,"k":3,"visits_2019":11},{"site_id":47,"site_name":"MFP Senior - Flannery","lat":42.0819957,"lng":-76.8053269,"mu":61.72727272727273,"k":5,"visits_2019":11},{"site_id":48,"site_name":"MFP Senior - Harry L Apartments","lat":42.1237339,"lng":-75.9567565,"mu":32.83333333333334,"k":3,"visits_2019":6},{"site_id":49,"site_name":"MFP Senior - Jefferson Village","lat":42.3829923,"lng":-76.8713304,"mu":24.81818181818182,"k":3,"visits_2019":11},{"site_id":50,"site_name":"MFP Senior - Lincoln Court","lat":42.090217,"lng":-75.910198,"mu":26.0,"k":3,"visits_2019":10},{"site_id":51,"site_name":"MFP Senior - Long Meadow Senior Housing","lat":42.1135325,"lng":-76.2704045,"mu":34.75,"k":3,"visits_2019":12},{"site_id":52,"site_name":"MFP Senior - Metro Plaza Apartments","lat":42.1016977,"lng":-75.9085338,"mu":56.3,"k":5,"visits_2019":10},{"site_id":53,"site_name":"MFP Senior - North Shore Towers","lat":42.0966132,"lng":-75.9103884,"mu":58.33333333333334,"k":5,"visits_2019":6},{"site_id":54,"site_name":"MFP Senior - Northern Broome Senior Center, Whitney Point","lat":42.3269618,"lng":-75.9677778,"mu":50.90909090909091,"k":4,"visits_2019":11},{"site_id":55,"site_name":"MFP Senior - Park Terrace Congregate Apartments","lat":42.051364,"lng":-76.832954,"mu":24.36363636363636,"k":3,"visits_2019":11},{"site_id":56,"site_name":"MFP Senior - Springview Apartments","lat":42.0100399,"lng":-76.533895,"mu":27.58333333333333,"k":3,"visits_2019":12},{"site_id":57,"site_name":"MFP Senior - Titus Towers","lat":42.4317058,"lng":-76.504801,"mu":72.8,"k":6,"visits_2019":10},{"site_id":58,"site_name":"MFP Senior - Villa Serene","lat":42.1295916,"lng":-76.8158267,"mu":69.72727272727273,"k":6,"visits_2019":11},{"site_id":59,"site_name":"MFP Senior - Village Square/Manor","lat":42.159804,"lng":-77.09139,"mu":34.25,"k":3,"visits_2019":12},{"site_id":60,"site_name":"MFP Senior - Wells Apartments","lat":42.1076045,"lng":-75.9607932,"mu":23.5,"k":3,"visits_2019":10},{"site_id":61,"site_name":"MFP Senior - Woodsedge Apartments","lat":42.535151,"lng":-76.501086,"mu":17.2,"k":2,"visits_2019":10},{"site_id":62,"site_name":"MFP The Love Church","lat":42.1412225,"lng":-76.8137998,"mu":259.3333333333333,"k":18,"visits_2019":12},{"site_id":63,"site_name":"MFP Troupsburg","lat":42.0432505,"lng":-77.5456383,"mu":148.7142857142857,"k":11,"visits_2019":7},{"site_id":64,"site_name":"MFP Tuscarora","lat":42.0522655,"lng":-77.2737134,"mu":192.6363636363636,"k":14,"visits_2019":11},{"site_id":65,"site_name":"MFP Van Etten","lat":42.2080409,"lng":-76.579406,"mu":213.7,"k":15,"visits_2019":10},{"site_id":66,"site_name":"MFP Waverly","lat":42.0194466,"lng":-76.5236008,"mu":396.6363636363636,"k":29,"visits_2019":11},{"site_id":67,"site_name":"MFP Wayland","lat":42.5685797,"lng":-77.5957241,"mu":180.4166666666667,"k":13,"visits_2019":12},{"site_id":68,"site_name":"MFP Whitney Point","lat":42.3405329,"lng":-75.9765268,"mu":202.5454545454545,"k":14,"visits_2019":11},{"site_id":69,"site_name":"MFP Windsor","lat":42.0779615,"lng":-75.6427789,"mu":200.9090909090909,"k":14,"visits_2019":11},{"site_id":70,"site_name":"MFP Woodhull","lat":42.0798397,"lng":-77.4111295,"mu":176.0,"k":13,"visits_2019":12}]; diff --git a/task1/figures/fig1_site_map.png b/task1/figures/fig1_site_map.png index 6c5509b..db8eeb6 100644 Binary files a/task1/figures/fig1_site_map.png and b/task1/figures/fig1_site_map.png differ diff --git a/task1/figures/fig2_demand_correction.png b/task1/figures/fig2_demand_correction.png index c8873ba..080f1d1 100644 Binary files a/task1/figures/fig2_demand_correction.png and b/task1/figures/fig2_demand_correction.png differ diff --git a/task1/figures/fig3_k_distribution.png b/task1/figures/fig3_k_distribution.png index bf3a93b..3a3541d 100644 Binary files a/task1/figures/fig3_k_distribution.png and b/task1/figures/fig3_k_distribution.png differ diff --git a/task1/figures/fig4_efficiency_fairness.png b/task1/figures/fig4_efficiency_fairness.png index 050328f..b1bf0a7 100644 Binary files a/task1/figures/fig4_efficiency_fairness.png and b/task1/figures/fig4_efficiency_fairness.png differ diff --git a/task1/figures/fig5_calendar_heatmap.png b/task1/figures/fig5_calendar_heatmap.png index 76931c3..03af98c 100644 Binary files a/task1/figures/fig5_calendar_heatmap.png and b/task1/figures/fig5_calendar_heatmap.png differ diff --git a/task1/figures/fig6_gap_boxplot.png b/task1/figures/fig6_gap_boxplot.png index 8a86cbd..d372b27 100644 Binary files a/task1/figures/fig6_gap_boxplot.png and b/task1/figures/fig6_gap_boxplot.png differ diff --git a/task1/figures/fig7_sensitivity.png b/task1/figures/fig7_sensitivity.png index 4d5a557..0ede977 100644 Binary files a/task1/figures/fig7_sensitivity.png and b/task1/figures/fig7_sensitivity.png differ