AI SYNTHESIS / MAY CONTAIN ERRORS
把電梯寫成「收到樓層就移動」會把安全、流程與最佳化混成一團。較穩健的切法是四層:最底層判斷能不能動;單車狀態機決定現在正在開門、關門或行駛;排程器維護停靠順序;群控器才負責把新請求交給哪一台車。
四層之間只能透過明確介面傳遞命令與狀態。群控器可以要求 Car B 接 12 樓上行乘客,但單車控制器仍要檢查車門、位置、服務模式與故障狀態;條件不成立時,任務必須拒絕或重新派送。
本文的 Python 程式刻意停在模擬層。ASME A17.1/CSA B44 涵蓋運作、檢查、測試與維護等安全範圍,真實控制器需要符合適用法規、認證與設備商設計,不能由一般排程範例直接驅動馬達或門機。
從乘客按鈕到車廂移動的責任鏈
FIGURE 01 / FLOW上層提出需求,下層保留拒絕權;任何派車演算法都不能跳過安全與單車狀態檢查。傳統廳外按鈕通常只提供起始樓層與上、下方向;乘客進車後才按目的樓層。群控器在接客前不知道完整行程,只能估計。目的樓層控制則先收集起點與終點,能在大廳把前往相近樓層的人分到同一台車。
KONE 的目的樓層操作面板會先讓乘客選樓層,接著顯示指定電梯。對程式而言,請求從 HallCall(origin, direction) 變成 TripRequest(origin, destination, party_size),可用資訊更多,但也要處理乘客沒上車、重複輸入、權限限制與群體人數估計。
車內請求、廳外請求與目的樓層請求不應塞進同一個整數集合。不同請求有不同完成條件:廳外請求在正確方向開門才算接到人;車內請求要到達指定樓層;目的樓層請求還需要保留乘客與指定車的關聯。
三種請求帶給派車器的資訊量
FIGURE 02 / MATRIX三種請求帶給派車器的資訊量| 項目 | 建立時已知 | 完成條件 | 主要限制 |
|---|
| 廳外呼叫 | 起點、方向 | 同方向抵達並開門 | 目的地未知 |
|---|
| 車內選樓 | 目的地、所屬車廂 | 車廂抵達目的樓層 | 派車已經完成 |
|---|
| 目的樓層 | 起點、終點、指定車 | 指定車完成接送 | 需處理未搭乘與改派 |
|---|
資訊越完整,越能預估整段行程;系統也必須承擔更多乘客識別、取消與重新分派狀態。單車至少要分出 IDLE、MOVING_UP、MOVING_DOWN、DOOR_OPENING、DOOR_OPEN、DOOR_CLOSING、OUT_OF_SERVICE。每個事件只能觸發允許的轉移;例如車門未關妥時,移動事件應被拒絕,而不是靠某一條稍後執行的 if 補救。
2024 年群控研究也先用有限狀態機表示系統,再比較派車策略。狀態機的價值不是圖畫得漂亮,而是讓「哪些事件可以在什麼狀態發生」變成可測試契約。
排程器只輸出下一個停靠點;狀態機把停靠點轉成一連串動作。這個分離讓你能用同一套車廂模擬器比較 SCAN、成本函數或 RL,而不必把門控與行駛流程重寫三次。
SCAN 的直覺像電梯版磁碟排程:車廂沿目前方向服務所有可達停靠,抵達邊界後反轉。LOOK 不必走到建築端點,只走到該方向最後一個請求。兩者能減少來回抖動,也比每次追最近樓層更容易預測。
更實用的變形是 Final Call:目前方向已沒有待處理請求就可反轉,不必等到最高或最低樓。2024 年研究把方向持續與 Final Call 當成兩條啟發式基準,這正適合工程測試:規則簡單、結果可重現,能當進階演算法的下限。
它們的盲點是只看現有佇列。兩台車可能同時朝同一區移動,低樓層卻沒有車;新請求也可能被加入一台已排滿停靠的近車。群控需要估計每台車接下任務後,整體等待會增加多少。
- 同方向優先:避免每來一個請求就立刻反轉。
- 請求去重:同樓層同方向只保留一筆未完成呼叫。
- 防止飢餓:等待超過門檻的請求提高優先權或強制保留服務窗口。
新廳外請求抵達時,群控器要回答的不是「哪台最近」,而是「把這筆任務插入哪台車後,新增的乘客成本最小」。樓層距離只是 ETA 的一部分;目前方向、既有停靠、門狀態、載重與已等待秒數都會改變答案。
可先使用可解釋的線性成本函數,再用模擬調權重。方向一致且路過起點的車通常成本低;需要反轉、已排很多站或接近滿載的車加罰;等待太久的呼叫則降低其指派成本,避免長期被新請求插隊。
任務指派不是永久契約。車廂故障、乘客取消或交通型態突變時,可以在尚未承諾接客前重新計算;一旦顯示指定車或乘客已進車,改派規則就要更保守,否則介面與實際行為會分離。
平均值可能被大量短等待稀釋。某策略把大廳乘客快速送走,卻讓偏遠樓層少數乘客等很久,平均仍會很好看。2026 年 ACM 研究同時檢查平均等待與長等待分布,這比只報一個 mean 更接近可用的驗收方式。
模擬報表至少要輸出 P50、P95、最大等待、超過 60 或 90 秒的比例、每樓層分布、方向分布、車廂利用率與每小時輸送人數。尖峰流量還要分上行、下行、午間跨樓層與隨機四種情境。
成本函數可加入平方等待或超時罰則,讓演算法對長尾更敏感。代價是部分平均效率可能下降;這不是模型失敗,而是明確選擇公平性與可預測性。
群控驗收不能只看一個平均數
FIGURE 03 / MATRIX群控驗收不能只看一個平均數| 項目 | 回答的問題 | 可能暴露的缺陷 |
|---|
| 平均等待 | 整體效率是否改善 | 容易掩蓋少數極長等待 |
|---|
| P95/超時率 | 最差一群乘客等多久 | 偏遠樓層或逆向請求飢餓 |
|---|
| 輸送量/載重 | 尖峰能搬運多少人 | 車廂過度集中或空跑 |
|---|
| 樓層公平性 | 服務是否偏向特定區域 | 低頻樓層長期被延後 |
|---|
門檻數值應依建築、契約與實測流量制定;表中說明各指標能暴露的失敗型態。群控系統的決策不只發生在呼叫出現後。所有車都停在大廳,看似整齊,卻可能讓中高樓層的下一位乘客承擔完整行程;把閒置車分散到需求較可能出現的位置,可以降低第一段接客時間。
MERL 的研究把這個問題稱為 optimal parking。下行尖峰可依乘客到達分布配置空車;更複雜的上行尖峰則使用 MDP 與動態規劃。論文中的最高改善是特定測試結果,不是任何大樓都能複製的保證。
工程上可先做簡單版本:依最近 15 分鐘各樓層呼叫率,把空車分配到需求分位點;同時限制重定位頻率,避免為了預測而頻繁空跑、耗能或干擾即將發生的請求。
啟發式規則只需目前狀態,速度快且容易除錯;動態規劃建立未來狀態與機率;基因演算法、模擬退火在候選指派中搜尋;強化學習則從大量模擬互動學策略。演算法越複雜,越需要可信的流量模型與回歸基準。
MERL 的決策理論方法直接估計所有可能未來情境下的等待,論文在其測試集報告明顯改善。2024 年研究的基因演算法在模擬中勝過兩條啟發式與模擬退火,但計算較久。這些成果說明最佳化有潛力,也說明結果高度依賴狀態、目標與模擬設定。
電梯群控的 RL 研究至少可追溯到 1998 年。2026 年方法先用接客時間估計做模仿學習,再以 PPO 訓練 SMDP 策略;這種混合方法試圖降低純 RL 起步時的探索成本。它仍需要和規則基準在未見過的交通軌跡上比較。
派車方法的工程取捨
FIGURE 04 / MATRIX派車方法的工程取捨| 項目 | 主要優點 | 主要風險 | 適合用途 |
|---|
| SCAN/LOOK | 可解釋、計算快 | 看不到未來與多車耦合 | 基準線、單車、小型系統 |
|---|
| 成本函數 | 可逐項追蹤派車理由 | 權重需依流量校準 | 多數工程原型與線上規則 |
|---|
| DP/MDP | 能表達未來機率與長期成本 | 狀態建模與計算複雜 | 需求模型穩定的最佳化 |
|---|
| GA/SA | 可搜尋大型組合空間 | 延遲與結果穩定性需控制 | 離線調參或滾動最佳化 |
|---|
| IL+RL | 可學非線性與長期策略 | 模擬偏差、驗證與可解釋性 | 有高擬真模擬器的研究場景 |
|---|
「適合用途」是依公開研究與工程可驗證性整理,不代表特定產品採用情況。電梯不是固定每秒重算一次就足夠的系統。請求抵達、車門關妥、車廂到站、乘客上下車、故障與重新派送都會改變狀態;離散事件模擬器依下一個事件時間跳轉,較容易重現相同流量並比較策略。
測試資料應是可保存的事件軌跡,而不是每次隨機生成後只留平均值。固定亂數種子、乘客起終點、到達時間與上下車耗時,才能把新演算法的差異歸因到派車策略。
每次策略比較都跑相同軌跡,輸出請求生命週期與派車理由。某一筆請求超時時,應能回放它何時建立、曾指派給哪台車、為何改派、何時開門,而不是只看到最終 P95 變差。
最佳化只回答「比較快嗎」,不回答「任何狀態都安全嗎」。安全不變式應先於效能測試,而且不因平均等待改善而放寬。派車器輸出錯誤時,單車與安全層仍要拒絕不可能或不允許的動作。
單元測試驗證狀態轉移與成本項;性質測試生成大量請求序列,檢查樓層邊界、門鎖與最終可服務性;情境測試覆蓋上行、下行、消防、維修、故障與取消;模擬基準才比較平均、長尾、吞吐量與空跑距離。
較複雜策略應先 shadow:接收同樣事件並產生建議,但不控制設備,再和既有策略比較。本文沒有提供實機上線程序;任何設備控制、認證與法規驗證都必須由具資格的專業單位依所在地要求完成。
派車策略的驗證順序
FIGURE 05 / FLOW先證明不會產生非法狀態,再比較同一批流量下的服務品質;shadow 結果仍不等於實機認證。