EIQAI, an expansion module of the TCalc series, is a system that fundamentally transforms EIQ analysis (E = Entry/Destinations, I = Items, Q = Quantity)—the traditional methodology
used in distribution centers.
Developed as a Windows Forms application, this software embeds advanced trained models from Microsoft.ML (ML.NET) to execute high-precision AI predictions for future volume fluctuations, extending beyond static historical data
aggregation.
The primary objective of this system is to perform comprehensive logistics simulations from minimal input data and generate detailed EIQ matrices.
By specifying just two input parameters—"number of delivery destinations" and "number of items"—the system automatically computes AI predictions for 162 variable parameters required for EIQ analysis.
Specifically, it instantly calculates everything from basic indicators
like loose quantities and line counts to destination ranks (E1–E5), item
ranks (I1–I5), and 25 rank-based metrics covering line counts, loose items,
cases, pallets, volume, and weight.
To make these extensive forecast results intuitive, the system visualizes them on-screen as EIQ matrix tables and traditional calculation views, powerfully supporting distribution
center engineering and capacity planning.
This system adopts the following technical stack to deliver high performance and secure local execution:
| Framework | .NET Framework 4.8 / Windows Forms (VB.NET) |
| AI/ML Library | Microsoft.ML (ML.NET 6.0 Preview) |
| Database | Microsoft Access (.accdb) ─ Auto-compacted on startup (JRO.JetEngine) |
| Model Format | Pre-trained ITransformer (.zip) ─ Batch loads 162 AI prediction models |
| Data Storage Path | TeraCalculationData\EIQAnalysisAI folder (Auto-detects drives A to F) |
| Excel Export | EPPlusFree Library supported |
PredictionResults_yyyyMMdd_HHmmss.csv) for secondary analysis.| Developer | Logistics Technology Research Institute |
| Copyright | Toshiyuki Teramoto |
Below is the overall operational flow in TCalc EIQAI from application launch to EIQ matrix rendering and error verification:
The initialization process executed when launching the application:
FileCheck() to scan storage drives for target data.MLContext(seed:=0), setting up the foundation for Microsoft.ML AI predictions.InitOutputFieldNameList() to define target fields:
LoadTrainedModels().InitAIPredictionEIQMatrixDgv() to establish the 7-column × 5-row header structure for the EIQ matrix.The core process running actual AI predictions triggered by user input:
InputData source object (Destinations, Items).Predict methods simultaneously across all 162 loaded models (Microsoft.ML) via CreatePredictionEngine.Dictionary(Of String, Single) data structure.DisplayPredictionResults() to convert data into DataTables bound to the DataGridView (Dgv) for UI
rendering.Reconstructs calculated prediction metrics into a visual EIQ matrix:
| GPLE Rank | GPLI_A1 | GPLI_A2 | GPLI_B | GPLI_C | GPLI_D | Row Sum |
|---|---|---|---|---|---|---|
| GPLE_A1 | XX01 | XX02 | XX03 | XX04 | XX05 | ΣRow |
| GPLE_A2 | XX06 | XX07 | XX08 | XX09 | XX10 | ΣRow |
| GPLE_B | XX11 | XX12 | XX13 | XX14 | XX15 | ΣRow |
| GPLE_C | XX16 | XX17 | XX18 | XX19 | XX20 | ΣRow |
| GPLE_D | XX21 | XX22 | XX23 | XX24 | XX25 | ΣRow |
| Col Sum | ΣCol | ΣCol | ΣCol | ΣCol | ΣCol | Grand Total |
Re-aggregates AI prediction data across destination ranks (E) from traditional perspectives:
AIPredictionTraditionalCalcDestinationDgv.| Ship Date | Rank | Destinations | Frequency | Loose Qty | Case Equiv. | PL Equiv. | Volume Equiv. | Weight Equiv. |
|---|---|---|---|---|---|---|---|---|
| All-Data Avg | GPLE_A1 | E1 | ΣLines 01–05 | ΣLoose 01–05 | ΣCase 01–05 | ΣPL 01–05 | ΣVolume 01–05 | ΣWeight 01–05 |
| All-Data Avg | GPLE_A2 | E2 | ΣLines 06–10 | ΣLoose 06–10 | ΣCase 06–10 | ΣPL 06–10 | ΣVolume 06–10 | ΣWeight 06–10 |
| All-Data Avg | GPLE_B | E3 | ΣLines 11–15 | ΣLoose 11–15 | ΣCase 11–15 | ΣPL 11–15 | ΣVolume 11–15 | ΣWeight 11–15 |
| All-Data Avg | GPLE_C | E4 | ΣLines 16–20 | ΣLoose 16–20 | ΣCase 16–20 | ΣPL 16–20 | ΣVolume 16–20 | ΣWeight 16–20 |
| All-Data Avg | GPLE_D | E5 | ΣLines 21–25 | ΣLoose 21–25 | ΣCase 21–25 | ΣPL 21–25 | ΣVolume 21–25 | ΣWeight 21–25 |
| Total | ΣE | ΣAll | ΣAll | ΣAll | ΣAll | ΣAll | ΣAll |
Re-aggregates AI prediction data across item ranks (I) from traditional perspectives:
AIPredictionTraditionalCalcItemDgv.| Ship Date | Rank | Items | Frequency | Loose Qty | Case Equiv. | PL Equiv. | Volume Equiv. | Weight Equiv. |
|---|---|---|---|---|---|---|---|---|
| All-Data Avg | GPLI_A1 | I1 | ΣLines col1 | ΣLoose col1 | ΣCase col1 | ΣPL col1 | ΣVolume col1 | ΣWeight col1 |
| All-Data Avg | GPLI_A2 | I2 | ΣLines col2 | ΣLoose col2 | ΣCase col2 | ΣPL col2 | ΣVolume col2 | ΣWeight col2 |
| All-Data Avg | GPLI_B | I3 | ΣLines col3 | ΣLoose col3 | ΣCase col3 | ΣPL col3 | ΣVolume col3 | ΣWeight col3 |
| All-Data Avg | GPLI_C | I4 | ΣLines col4 | ΣLoose col4 | ΣCase col4 | ΣPL col4 | ΣVolume col4 | ΣWeight col4 |
| All-Data Avg | GPLI_D | I5 | ΣLines col5 | ΣLoose col5 | ΣCase col5 | ΣPL col5 | ΣVolume col5 | ΣWeight col5 |
| Col Sum | ΣI | ΣAll | ΣAll | ΣAll | ΣAll | ΣAll | ΣAll |
UI handler dynamically updating EIQ matrix content:
matrixActive = True is satisfied.AIPredictionEIQMatrixTable() to refresh display data.Export handler for external data integration:
PredictionResults_yyyyMMdd_HHmmss.csv.StartComparison() followed by DisplayErrors() to evaluate variance between forecasts and ground-truth values.Data structure reference managed within TCalc EIQAI:
| Class Name | Purpose | Primary Fields |
|---|---|---|
| ModelData | Training Data Structure | Model Serial, Destinations, Items, Loose Qty, Line Count, E1–E5, I1–I5, Lines 01–25, etc. |
| InputData | Prediction Input | Destinations, Items |
| SinglePrediction | Prediction Output | Score |
Reference list of primary UI controls deployed on screen:
| Control | Description |
|---|---|
| DestinationCountTb | Destination Count Input Textbox |
| ItemCountTb | Item Count Input Textbox |
| Control | Description |
|---|---|
| LoadTrainedModelsBtn | Reload Models |
| ExecutePredictionBtn | Execute AI Prediction |
| ExecuteEIQMatrixBtn | Generate Matrix & Traditional Tables |
| ExportResultsBtn | Export to CSV |
| StartComparisonBtn | Compare Predictions vs. Actuals |
| CloseBtn | Close Form |
| Control | Prefix |
|---|---|
| Filter_FrequencyRb | Line Count |
| Filter_LooseRb | Loose Qty |
| Filter_CaseRb | Case |
| Filter_PLRb | PL |
| Filter_VolumeRb | Volume |
| Filter_WeightRb | Weight |
| Control | Description |
|---|---|
| PredictionResultsDgv | Complete Predictions List (Item Name / Predicted Value) |
| AIPredictionEIQMatrixDgv | 5×5 EIQ Matrix Table + Row/Col Sums |
| AIPredictionTraditionalCalcDestinationDgv | Traditional Calc E (Aggregated by Destination Rank) |
| AIPredictionTraditionalCalcItemDgv | Traditional Calc I (Aggregated by Item Rank) |
| AIPredictionEIQMatrixCopyDgv | Copy View for Actuals Comparison |
| ActualCalcDgv | Display Actual Calculated Values |
| ErrorDgv | Display Variance between AI Prediction and Actuals in % |
| Control | Mapped Metric |
|---|---|
| ExtractedE_A1Tb to ExtractedE_DTb | E1 to E5 |
| ExtractedE_TotalTb | Sum of E1 to E5 |
| ExtractedI_A1Tb to ExtractedI_DTb | I1 to I5 |
| ExtractedI_TotalTb | Sum of I1 to I5 |
Internal utility functions:
| Function | Description |
|---|---|
ToRoundedString(s) | Converts string to numeric, rounds to nearest integer, and returns as string |
ToLongOrZero(s) | Converts string to Long (returns 0 on failure) |