概要
Tera計算EIQAI 是一款 Windows Form 應用程式,針對物流中心的 EIQ分析(E=出貨地、I=品項、Q=數量),利用 ML.NET 的已訓練模型進行 AI 預測。
開發目的
僅需輸入「出貨地數」與「品項數」兩個參數,即可一括預測 EIQ 分析所需的 162 個項目(包含拆零數量、訂單行數、出貨地等級 E1-E5、品項等級 I1-I5,以及訂單行數、拆零數、箱數、棧板數、容積、重量之各 25 個等級別數值),並以矩陣表與傳統計算表進行視覺化呈現。
作業環境與技術架構
| 項目 |
內容 |
| 框架 |
.NET Framework 4.8 / Windows Forms (VB.NET) |
| AI/ML 函式庫 |
Microsoft.ML (ML.NET 6.0 Preview) |
| 資料庫 |
Microsoft Access (.accdb) ─ 啟動時自動優化 (JRO.JetEngine) |
| 模型格式 |
已訓練 ITransformer (.zip) ─ 一括讀取 162 個模型 |
| 資料儲存路徑 |
Tera計算Data\EIQ分析AI化 フォルダ(自動偵測磁碟機 A〜F) |
| Excel 輸出 |
支援 EPPlusFree 函式庫 |
主要功能
- AI 預測執行: 輸入出貨地數與品項數,使用 162 個已訓練模型進行個別項目預測
- EIQ 矩陣表: 自動產生 GPLE 等級 (E1-E5) × GPLI 等級 (I1-I5) 的 5×5 矩陣。顯示單位可切換為:出貨次數、拆零、箱數、棧板、容積、重量等 6 種單位
- 傳統計算表 E: 依出貨地等級 (GPLE_A1〜D) 彙整出貨次數、拆零數、箱數換算、棧板換算、容積換算、重量換算
- 傳統計算表 I: 依品項等級 (GPLI_A1〜D) 於列方向彙整相同指標
- 結果匯出: 將預測結果輸出為 CSV 檔案 (預測結果_yyyyMMdd_HHmmss.csv)
- 模型重新載入: 重新掃描模型資料夾內的 .zip 檔案並更新為最新模型
- Access DB 優化: 啟動時若 DB 檔案大小超過閾值 (100MB),自動執行壓縮優化處理
開發資訊
各處理細節說明
【1】表單載入 (Tera計算EIQAI_Load)
- 調用
檔案確認()
- 初始化
MLContext(seed:=0)
- 確認模型儲存路徑之資料夾是否存在
- 輸出欄位名稱列表初始化():
- 拆零數量, 訂單行數, E1-E5, I1-I5
- 訂單行數 01-25, 拆零數 01-25, 箱數 01-25, 棧板數 01-25, 容積 01-25, 重量 01-25
- 總計 162 個欄位
已訓練模型載入():將資料夾內所有 .zip 檔案載入為 ITransformer
AI預測EIQ矩陣表Dgv初始化():設定 7 欄 × 5 列的矩陣表標頭
【2】執行預測 (預測執行Bt_Click → 預測執行())
- 驗證「出貨地數 Tb」與「品項數 Tb」之輸入數值
- 建立
InputData (出貨地數, 品項數)
- 對所有已訓練模型執行
CreatePredictionEngine → Predict
- 將預測結果儲存於
Dictionary(Of String, Single)
顯示預測結果():轉換為 DataTable 並綁定至預測結果 Dgv
【3】EIQ 矩陣表建立 (AI 預測 EIQ 矩陣表())
- 將預測結果 Dgv 內容快取至字典 (pred)(Key: 項目名, Value: 四捨五入後之整數)
- 根據選取的顯示單位單選按鈕決定前綴 (Prefix)
- 在抽出文字框設定 I1-I5, E1-E5 與各合計值
- 將 25 個單元格 (5×5) 填入數值,並計算水平合計(列合計)、垂直合計(欄合計)及總計
| GPLE 等級 |
GPLI_A1 |
GPLI_A2 |
GPLI_B |
GPLI_C |
GPLI_D |
橫計 |
| GPLE_A1 |
XX01 |
XX02 |
XX03 |
XX04 |
XX05 |
Σ 列 |
| GPLE_A2 |
XX06 |
XX07 |
XX08 |
XX09 |
XX10 |
Σ 列 |
| GPLE_B |
XX11 |
XX12 |
XX13 |
XX14 |
XX15 |
Σ 列 |
| GPLE_C |
XX16 |
XX17 |
XX18 |
XX19 |
XX20 |
Σ 列 |
| GPLE_D |
XX21 |
XX22 |
XX23 |
XX24 |
XX25 |
Σ 列 |
| 縱計 |
Σ 欄 |
Σ 欄 |
Σ 欄 |
Σ 欄 |
Σ 欄 |
總計 |
※ XX = 目前選取的顯示單位前綴(訂單行數 / 拆零數量 / 箱數 / 棧板 / 容積 / 重量)
【4】傳統計算表 E (AI 預測傳統計算 E())
- 在
AI 預測傳統計算出貨地 Dgv 設定 9 欄指標
- 依出貨地等級 (GPLE E1-E5) 彙整數據
- 最下方加入合計列
| 出貨日 |
等級 |
出貨地數 |
出貨次數 |
拆零數 |
箱數換算 |
棧板換算 |
容積換算 |
重量換算 |
| 全資料平均 |
GPLE_A1 |
E1 |
Σ 01-05 |
Σ 01-05 |
Σ 01-05 |
Σ 01-05 |
Σ 01-05 |
Σ 01-05 |
| 合計 |
Σ E |
Σ 全 |
Σ 全 |
Σ 全 |
Σ 全 |
Σ 全 |
Σ 全 |
【5】傳統計算表 I (AI 預測傳統計算 I())
- 在
AI 預測傳統計算品項 Dgv 設定 9 欄指標
- 依品項等級 (GPLI I1-I5) 進行垂直方向合計
| 出貨日 |
等級 |
品項數 |
出貨次數 |
拆零數 |
箱數換算 |
棧板換算 |
容積換算 |
重量換算 |
| 全資料平均 |
GPLI_A1 |
I1 |
Σ col1 |
Σ col1 |
Σ col1 |
Σ col1 |
Σ col1 |
Σ col1 |
| 縱計 |
Σ I |
Σ 全 |
Σ 全 |
Σ 全 |
Σ 全 |
Σ 全 |
Σ 全 |
列方向合計邏輯:GPLI_A1 = XX01+XX06+XX11+XX16+XX21, GPLI_A2 = XX02+XX07+XX12+XX17+XX22, …
【6】顯示單位切換 (抽出_顯示單位_CheckedChanged)
- 僅在
matrixActive = True 時動作
- 重新執行
AI 預測 EIQ 矩陣表() 以更新矩陣表
- 選擇單位:出貨次數 / 拆零 / 箱數 / 棧板 / 容積 / 重量
【7】結果匯出 (結果匯出Bt_Click)
- 將預測結果 Dgv 內容匯出為 CSV 檔案
- 檔名格式:
預測結果_yyyyMMdd_HHmmss.csv
- 首行加入輸入條件(出貨地數, 品項數)作為註釋
【8】已訓練模型重新載入 (已訓練模型載入Bt_Click)