競賽案例

膠樽之爭:一次性樽裝水禁售的影響模型

由物料流、替代飲品、可得性與政策評估出發,再用 AHP/TOPSIS 整合持份者偏好;說明隨機分數不能證明 Concord、San Francisco 或機場禁售的實際成效。

2024年9月14日 · 約 7 分鐘閱讀

封存文章

本文源自 2019 HiMCM Problem B。舊版以隨機產生的表現分數比較 Concord、 San Francisco 與 SF Airport,因而不能支持任何真實政策排名。 本版本把「量度政策影響」與「按價值觀選擇方案」分開,保留 AHP/TOPSIS 作為決策工具,而不是把它們當作因果證據。

一次性樽裝水禁售的直覺目標是減少塑膠廢物、化石燃料使用與運輸排放; 反對者則關注消費者轉買含糖飲品、替代包裝、飲水可得性與緊急供水。 Concord 的政策、San Francisco 市有物業規則與機場零售限制,涵蓋範圍和使用者群組不同, 不能只用三個地方名稱當作同一組「alternatives」排序。

一個完整模型要回答兩層問題:

  1. 效果層: 每項政策會改變多少瓶裝水銷售、廢物、排放、成本與飲水行為?
  2. 價值層: 不同持份者如何權衡環境、經濟、健康、公平與韌性?

一、先定義政策方案

每個地區應獨立比較可行方案,例如:

  • a0a_0:維持現狀;
  • a1a_1:只禁售 1\le1 L 的 plain water PET bottles;
  • a2a_2:禁售並增加 refill stations;
  • a3a_3:收費/deposit-return 而非全面禁售;
  • a4a_4:公共採購限制加零售資訊措施;
  • a5a_5:有災害、醫療與無安全自來水時的豁免。

機場還需要處理 security checkpoint、旅客停留時間、國際旅客、airside refill 容量與 concession contracts。這些變數令同一政策在城鎮和機場有不同效果。

二、物料流與替代

令政策前每年售出 Q0Q_0 樽,禁售合規率為 cc,消費需求轉移至選項 kk 的比例為 sks_k,且

ksk=1.\sum_ks_k=1.

政策後被避免的目標水樽數量約為

Qavoided=Q0c(1),Q_{\rm avoided}=Q_0c(1-\ell),

\ell 表示跨境購買、非合規或其他 leakage。對替代選項:

Qk=Q0csk.Q_k=Q_0c\,s_k.

替代可能包括:

  • 自攜可重用樽及 refill;
  • 鋁罐、玻璃或紙複合包裝;
  • 較大容量容器;
  • 汽水、果汁或其他飲品;
  • 不再購買飲品。

若忽略 sks_k,就會把每一個少賣的水樽當成淨消失,而高估環境效益。

廢物

物料 mm 的年度廢物流為

Wm=kQk  wkm(1rkm),W_m =\sum_k Q_k \;w_{km} \left(1-r_{km}\right),

其中 wkmw_{km} 是每件包裝中物料 mm 的質量, rkmr_{km} 是實際回收/回收後有效替代 virgin material 的比率。 收集率不等於真正循環率;出口、污染和 downcycling 要分開。

生命週期溫室氣體

在一致 system boundary 下:

G=kQk(ekmaterial+ekmanufacturing+ektransport+ekrefrigeration+ekendoflife)+Ginfrastructure.G = \sum_kQ_k \left( e_k^{\rm material} +e_k^{\rm manufacturing} +e_k^{\rm transport} +e_k^{\rm refrigeration} +e_k^{\rm end-of-life} \right) +G_{\rm infrastructure}.

可重用樽的 per-use impact 取決於實際使用次數 nn

ereusable/use=ebottlen+ewashing/use.e_{\rm reusable/use} =\frac{e_{\rm bottle}}{n} +e_{\rm washing/use}.

因此「可重用」不會自動等於低排放;break-even uses 應由當地能源、水和清洗行為計算。

三、健康、可得性與公平

飲品替代可用 transition matrix:

qafter=P(a)qbefore,\mathbf q_{\rm after} =\mathbf P(a)\mathbf q_{\rm before},

Pkl(a)P_{kl}(a) 表示政策 aa 下由原飲品 ll 轉向 kk 的概率。 若一部分消費者轉向含糖飲品,可估算 added sugar exposure;若轉向 refill, 則要量度水站可靠性、排隊時間與水質。

公平性不能只用平均值。可按群組 gg 報告:

ΔCg,ΔTg,Pr(safe water unavailableg),\Delta C_g,\quad \Delta T_g,\quad \Pr(\text{safe water unavailable}\mid g),

其中 ΔCg\Delta C_g 是額外成本,ΔTg\Delta T_g 是取得飲水的時間負擔。 旅客、無家者、戶外工作者、殘疾人士及災害期間使用者可能承受不同影響。

四、經濟與營運

政策的社會淨成本可寫成

ΔSC=ΔCconsumers+ΔCretailers+Cenforcement+CrefillBlitterBwasteBclimate.\Delta SC = \Delta C_{\rm consumers} +\Delta C_{\rm retailers} +C_{\rm enforcement} +C_{\rm refill} -B_{\rm litter} -B_{\rm waste} -B_{\rm climate}.

這不是要求把所有結果強行貨幣化。無法可靠 monetise 的健康、公平或韌性指標 可以保留為獨立 criteria。

機場模型還要加入:

  • 每小時旅客流與 peak demand;
  • refill station flow rate、故障率及 queue;
  • security 後空樽可否攜帶;
  • concession revenue 與替代飲品存貨;
  • flight disruption 或緊急事件的 bottled-water reserve。

簡單的 station capacity condition 是

λ(t)<sμ,\lambda(t)<s\mu,

其中 λ\lambda 是到達率,ss 是水站數,μ\mu 是單站服務率。 平均可行仍不代表高峰排隊可接受,應以 queue simulation 檢查。

五、因果效果如何估計

政策後銷量或 litter 下降,未必全由禁售造成;季節、疫情、價格與遊客量都會改變。 若有適當比較地區,可用 difference-in-differences:

Yit=αi+γt+β(Treatedi×Postt)+zitTδ+εit.Y_{it} =\alpha_i+\gamma_t+\beta \bigl(\text{Treated}_i\times\text{Post}_t\bigr) +\mathbf z_{it}^{\mathsf T}\delta+\varepsilon_{it}.

β\beta 估計政策的平均處理效果,但需要 parallel-trends 假設。 資料可包括:

  • POS 銷售與飲品類別;
  • 廢物 audit 與 litter transects;
  • refill station flow meter;
  • 消費者 intercept survey;
  • 零售價格與 concession data;
  • 水站 uptime、水質與 queue;
  • 旅客/人口與天氣;
  • enforcement records。

若只有政策前後單一地點,應誠實稱為 interrupted time-series 或 descriptive study, 並報告較弱的因果識別。

六、AHP:由持份者判斷取得權重

效果估計完成後,AHP 可協助取得 criteria weights。 對 reciprocal pairwise matrix AA

aij>0,aji=1aij,aii=1.a_{ij}>0,\qquad a_{ji}=\frac1{a_{ij}},\qquad a_{ii}=1.

權重可取 principal eigenvector:

Aw=λmaxw,jwj=1.A\mathbf w=\lambda_{\max}\mathbf w, \qquad \sum_jw_j=1.

一致性指標為

CI=λmaxnn1,CR=CIRIn.CI=\frac{\lambda_{\max}-n}{n-1}, \qquad CR=\frac{CI}{RI_n}.

CR<0.1CR<0.1 是常用 heuristic,不表示判斷「真實」或政策結論可靠。 舊稿前段以 row average 寫權重公式,只有在先做特定 normalization 時才成立; 實作則用 eigenvector,兩者不應混為一談。

import numpy as np

def ahp_weights(matrix, random_index):
    matrix = np.asarray(matrix, dtype=float)
    if not np.allclose(matrix * matrix.T, 1.0):
        raise ValueError("pairwise matrix 必須 reciprocal")

    eigenvalues, eigenvectors = np.linalg.eig(matrix)
    idx = np.argmax(eigenvalues.real)
    weights = np.abs(eigenvectors[:, idx].real)
    weights /= weights.sum()

    n = len(weights)
    ci = 0 if n == 1 else (eigenvalues[idx].real - n) / (n - 1)
    cr = 0 if n <= 2 else ci / random_index[n]
    return weights, cr

不同持份者不應被一張由研究者自行填寫的 matrix 取代。 可以分別取得居民、零售商、清潔部門、健康部門與倡議團體的權重,再展示共識與衝突。

七、TOPSIS:方向與尺度

給定 alternatives × criteria 的 decision matrix XX,向量正規化:

rij=xijixij2,vij=wjrij.r_{ij} =\frac{x_{ij}} {\sqrt{\sum_i x_{ij}^2}}, \qquad v_{ij}=w_jr_{ij}.

對 benefit criterion,理想值是最大;對 cost criterion,理想值是最小:

vj+={maxivij,jJbenefit,minivij,jJcost.v_j^+ = \begin{cases} \max_i v_{ij},&j\in J_{\rm benefit},\\ \min_i v_{ij},&j\in J_{\rm cost}. \end{cases}

再計算

Di±=j(vijvj±)2,Ci=DiDi++Di.D_i^\pm =\sqrt{\sum_j(v_{ij}-v_j^\pm)^2}, \qquad C_i=\frac{D_i^-}{D_i^++D_i^-}.

舊 Python 把所有 criteria 的 maximum 當理想值;但 carbon、cost、litter、 sugar exposure 等都是越低越好,所以 ranking 可能反轉。

def topsis(matrix, weights, benefit):
    x = np.asarray(matrix, dtype=float)
    denom = np.linalg.norm(x, axis=0)
    if np.any(denom == 0):
        raise ValueError("constant zero criterion 無法作向量正規化")

    v = (x / denom) * np.asarray(weights)
    benefit = np.asarray(benefit, dtype=bool)
    ideal = np.where(benefit, v.max(axis=0), v.min(axis=0))
    anti = np.where(benefit, v.min(axis=0), v.max(axis=0))
    d_plus = np.linalg.norm(v - ideal, axis=1)
    d_minus = np.linalg.norm(v - anti, axis=1)
    return d_minus / (d_plus + d_minus)

AHP score 與 TOPSIS closeness 的數值尺度不同,不能把兩組 bar height 當成同一量比較; 合理比較是 ranking、rank reversal 和 sensitivity。

八、為何舊排名無效

舊例子:

  1. 隨機產生 sub-criteria pairwise comparisons;
  2. 隨機產生 Concord、San Francisco、SF Airport 的表現分數;
  3. 再用 AHP 與 TOPSIS 排名;
  4. 因兩者偶然同序,便稱結果相似、robust。

隨機 seed 只令同一組虛構數字可重現,不令它成為政策資料。 而且三個地點不是互斥政策方案;San Francisco 可能同時包含機場政策。 因此所有舊 ranking 圖只可視為 software demo,不能推論禁售效果相近。

舊 sensitivity 亦只用

wDirichlet(10w)\mathbf w'\sim\operatorname{Dirichlet}(10\mathbf w)

任意擾動 criteria weights。它沒有擾動測量誤差、替代率、LCA factors 或 compliance, 也沒有解釋 concentration 10 的依據。TOPSIS boxplot 沒有「箱」只可能表示模擬中排名不變, 與 TOPSIS 不檢查 AHP consistency 無直接關係。

九、完整不確定性與情景

對每個政策 aa,把 outcome model 寫成

ya=f(a,θ),\mathbf y_a=f(a,\boldsymbol\theta),

θ\boldsymbol\theta 包括 baseline sales、substitution shares、recycling、 emission factors、compliance、station uptime 等。可用 bootstrap/Bayesian posterior 或明確情景傳播,而不是所有參數任意 ±10%。

最終可報告:

  • 各 outcome 的區間;
  • 每個方案成為第一名的概率;
  • 權重改變造成的 rank acceptability;
  • 哪些參數最可能改變決策;
  • regret: R(a,θ)=maxaV(a,θ)V(a,θ).R(a,\theta) =\max_{a'}V(a',\theta)-V(a,\theta).

若一項方案在多數合理情景下低 regret,即使不是每次第一,也可能較穩健。

十、政策設計建議

在沒有本地資料前,模型不應直接推薦全面禁售;但可提出可測試設計:

  1. 禁售與 refill capacity 同步上線;
  2. 保留醫療、災害與供水中斷豁免;
  3. 監測替代飲品,避免包裝與糖分 leakage;
  4. 以分階段 rollout 建立比較組;
  5. 公開銷量、廢物、水站 uptime 與投訴 dashboard;
  6. 設定預先承諾的 review date 與 adjustment rule。

對較大城市,模型架構可沿用,但參數不可直接由 Concord 放大: 人口密度、通勤、旅遊、供水信任、零售市場與回收系統都會改變效果。

結論

瓶裝水禁售不是單純的「膠樽減少」問題。可信分析需要:

  1. 先把每個地區的政策選項定義清楚;
  2. 用物料流與 substitution model 估計實際 outcome;
  3. 以準實驗或時間序列評估政策效果;
  4. 把健康、公平、經濟、環境與韌性分開量度;
  5. 最後才用 AHP/TOPSIS 表達持份者取捨;
  6. 對權重與科學參數同時做敏感度。

AHP 和 TOPSIS 可以整理價值衝突,卻不能把隨機分數轉化為公共政策證據。 修正後的模型不再聲稱哪個城市「排名第一」,而是清楚列出要收集的資料、 可驗證的因果問題,以及不同價值選擇如何改變決策。

參考資料

  • COMAP, Inc. (2019). HiMCM 2019 Problem B: Bottle Battles.
  • Saaty, T. L. (1980). The Analytic Hierarchy Process. McGraw–Hill.
  • Hwang, C.-L., & Yoon, K. (1981). Multiple Attribute Decision Making: Methods and Applications. Springer.
  • ISO. (2006). ISO 14040: Environmental management—Life cycle assessment—Principles and framework.
  • Angrist, J. D., & Pischke, J.-S. (2009). Mostly Harmless Econometrics. Princeton University Press.