Spaces:
Sleeping
Sleeping
| % AgriFlow — Detailed Architecture & Methodology | |
| % Compile: xelatex AgriFlow_Architecture.tex (or pdflatex) | |
| \documentclass[11pt,a4paper]{article} | |
| \usepackage[utf8]{inputenc} | |
| \usepackage[T1]{fontenc} | |
| \usepackage[a4paper,margin=2.4cm]{geometry} | |
| \usepackage{amsmath,amssymb} | |
| \usepackage{booktabs} | |
| \usepackage{longtable} | |
| \usepackage{enumitem} | |
| \usepackage{xcolor} | |
| \usepackage[hidelinks]{hyperref} | |
| \usepackage{titlesec} | |
| \titleformat{\section}{\Large\bfseries\color{black!85}}{\thesection}{0.6em}{} | |
| \setlist{nosep,leftmargin=1.3em} | |
| \newcommand{\code}[1]{\texttt{#1}} | |
| \title{\textbf{AgriFlow --- Detailed Architecture \& Methodology}\\[2pt] | |
| \large Food Security Intelligence Platform for Sub-National Indonesia} | |
| \author{AgriFlow Team --- PIDI DIGDAYA $\times$ Hackathon 2026, Bank Indonesia} | |
| \date{Revisi: Mei 2026} | |
| \begin{document} | |
| \maketitle | |
| \begin{abstract} | |
| \noindent | |
| AgriFlow adalah platform intelijen ketahanan pangan sub-nasional dengan tiga fungsi inti: | |
| \textbf{Deteksi} (anomali harga), \textbf{Prediksi} (peramalan harga), dan \textbf{Distribusi} | |
| (pencocokan surplus--defisit antar-kabupaten). Dokumen ini menjelaskan, untuk setiap fungsi: | |
| metodologi yang dipakai, alasan pemilihan metode, cara kerja, efektivitas, serta evaluasi dan | |
| validasi terhadap data nyata BPS/PIHPS Jawa Timur. Setiap pilihan metode didukung literatur | |
| terkini (2021--2026). Prinsip rancangan kami: \emph{honest engineering} --- memilih metode yang | |
| tepat untuk skala saat ini (38 kabupaten Jawa Timur), bukan yang paling rumit, dan menyatakan | |
| keterbatasan secara eksplisit. | |
| \end{abstract} | |
| \section{Ikhtisar Sistem} | |
| AgriFlow memproses tiga lapis nilai di atas satu sumber data bersama (harga PIHPS harian, | |
| produksi/konsumsi/populasi BPS per-kabupaten): | |
| \begin{enumerate} | |
| \item \textbf{Deteksi} --- mengidentifikasi anomali harga (lonjakan/anjlok) dari deret harga harian. | |
| \item \textbf{Prediksi} --- meramalkan harga 30 hari ke depan dengan foundation model time-series. | |
| \item \textbf{Distribusi} --- mencocokkan kabupaten surplus dengan kabupaten defisit melalui | |
| \emph{matching engine} 4-lapis yang sadar masa-simpan, jarak jalan nyata, dan keadilan. | |
| \end{enumerate} | |
| Ketiganya terhubung: prediksi dan deteksi memberi sinyal dini, distribusi menindaklanjuti dengan | |
| alokasi yang efisien sekaligus adil. | |
| \paragraph{Positioning.} AgriFlow adalah \emph{alat bantu keputusan untuk pemerintah} | |
| (Bapanas/Pemda), \textbf{bukan} marketplace komersial. Ini membedakannya dari platform seperti | |
| eNAM~\cite{enam} (lelang harga India) atau MealConnect~\cite{mealconnect} (penyelamatan pangan AS), | |
| dan dari B2B agritech Indonesia yang gagal karena margin tipis (mis. TaniHub~\cite{tanihub}). Karena | |
| insentif kami adalah KPI ketahanan pangan + stabilitas harga + keadilan --- bukan margin per-transaksi | |
| --- dimensi \emph{equity} antar-kabupaten menjadi tujuan utama, bukan afterthought. | |
| % ===================================================================== | |
| \section{Distribusi --- Matching Engine} | |
| \subsection{Formulasi masalah} | |
| Diberikan himpunan node \emph{surplus} $S$ dan \emph{defisit} $D$ per komoditas, kami mencari | |
| alokasi yang memaksimalkan kesejahteraan agregat dengan bobot keadilan. Karena \emph{kedua sisi | |
| menilai pasangan melalui satu fungsi skor bersama} (bukan preferensi ordinal independen seperti | |
| pasar dua-sisi), setting yang tepat adalah \textbf{centralized bipartite assignment dengan equity | |
| weighting} --- seorang perencana terpusat (Bapanas/Pemda), bukan pasar terdesentralisasi. | |
| Pandangan ini sejalan dengan kerangka \emph{optimal transport}/assignment di mana preferensi | |
| berasal dari surplus bersama~\cite{galichon2021}. Kami secara sadar \emph{tidak} mengklaim | |
| "stable matching Gale--Shapley pemenang Nobel": teorema stabilitas Roth--Sotomayor~\cite{roth1990} | |
| mensyaratkan preferensi ordinal independen, yang tidak berlaku di sini. | |
| \subsection{Cara kerja: arsitektur 4-lapis} | |
| \begin{itemize} | |
| \item \textbf{Layer 0 --- Tier classification.} Tiap kabupaten ditandai Tier~1 (8 kota IHK, | |
| harga harian PIHPS, confidence \emph{HIGH}) atau Tier~2 (kab non-IHK, mingguan, \emph{MEDIUM}). | |
| \item \textbf{Layer 1 --- Hard constraints.} Filter cepat: kecocokan komoditas, jarak $\leq$ | |
| maksimum (jarak jalan nyata OSRM, fallback haversine), umur panen $\leq$ masa-simpan, | |
| volume minimum, no self-match, mode darurat, override Pemda, prioritas Bulog. | |
| \item \textbf{Layer 2 --- Multi-objective scoring.} Skor 0--100 dari 5 dimensi berbobot: | |
| Distance 22\%, Volume 22\%, Price 22\%, Perishability 18\%, Climate 16\% | |
| (\emph{weighted-sum scalarization}). | |
| \item \textbf{Layer 3 --- Equity-weighted allocation.} $\text{Final} = \text{Base} \times | |
| m(\text{IPM})$, dengan $m$ \emph{equity multiplier} untuk kabupaten ber-IPM rendah; alokasi | |
| via modified Gale--Shapley (Tier~1$\leftrightarrow$Tier~1) atau greedy berprioritas-equity. | |
| \end{itemize} | |
| \subsection{Alasan pemilihan metode} | |
| \textbf{Weighted-sum scalarization} dipilih karena interpretable dan murah secara komputasi; kami | |
| menyadari ia hanya menjangkau solusi Pareto \emph{supported}~\cite{bazgan2021}, dan menyediakan | |
| 3 skema bobot (default/Ramadan/import) sebagai mitigasi parsial. \textbf{Equity multiplier} | |
| post-score dipilih demi transparansi bagi audiens kebijakan; literatur menunjukkan formulasi | |
| in-objective (penalty factor~\cite{firouz2021}) atau Gini-derived~\cite{alem2021} dan leximin | |
| maximin~\cite{hakimifar2022} lebih \emph{principled} secara teori --- ini kami tetapkan sebagai | |
| arah v2. | |
| \subsection{Efektivitas, evaluasi, dan validasi} | |
| Kami memvalidasi nilai keadilan secara \textbf{empiris} dengan membandingkan AgriFlow terhadap | |
| empat baseline (\emph{pure-greedy} = efisiensi, \emph{uniform} \& \emph{proportional-to-deficit} | |
| = acuan pemerataan, dan varian \emph{smoothed}) pada \textbf{dua skenario terkontrol} yang sengaja | |
| dirancang untuk mengisolasi efek keadilan: satu \emph{pasokan melimpah} dan satu \emph{pasokan | |
| langka} (\emph{shock} La Ni\~na yang menghapus surplus tiga sentra beras). Metrik: cakupan | |
| (volume-weighted), Gini (dari kurva Lorenz, weighted), Atkinson ($\varepsilon{=}1$), dan | |
| \emph{leximin} (fulfillment kabupaten terburuk). | |
| \begin{center} | |
| \begin{tabular}{lccccc} | |
| \toprule | |
| \textbf{Skenario / Strategi} & Coverage & Gini & Atkinson($\varepsilon{=}1$) & Sampang & Bangkalan \\ | |
| \midrule | |
| \multicolumn{6}{l}{\emph{Pasokan melimpah (surplus $>$ defisit)}}\\ | |
| \quad pure\_greedy & 0.890 & 0.093 & 0.113 & 1.00 & 1.00 \\ | |
| \quad uniform & 0.993 & 0.008 & 0.094 & 1.00 & 1.00 \\ | |
| \quad proportional & 0.993 & 0.007 & 0.094 & 1.00 & 1.00 \\ | |
| \quad \textbf{AgriFlow} & 0.880 & 0.099 & 0.114 & 1.00 & 1.00 \\ | |
| \midrule | |
| \multicolumn{6}{l}{\emph{Pasokan langka (shock La Ni\~na; defisit $>$ surplus)}}\\ | |
| \quad pure\_greedy & 0.665 & 0.302 & 0.984 & \textbf{0.00} & \textbf{0.20} \\ | |
| \quad uniform & 0.627 & 0.252 & 0.186 & 1.00 & 1.00 \\ | |
| \quad proportional & 0.702 & 0.159 & 0.137 & 0.78 & 0.78 \\ | |
| \quad \textbf{AgriFlow} & 0.665 & 0.290 & 0.938 & \textbf{1.00} & \textbf{1.00} \\ | |
| \bottomrule | |
| \end{tabular} | |
| \end{center} | |
| \noindent\textbf{Temuan kunci (jujur).} Saat pasokan melimpah, equity nyaris tak berdampak (kab | |
| termiskin sudah terlayani; Gini AgriFlow $\approx$ greedy). \emph{Nilai sebenarnya muncul saat | |
| langka}: greedy menelantarkan Sampang (0\%) dan Bangkalan (20\%), sedangkan \textbf{AgriFlow | |
| menjamin keduanya 100\% dengan biaya cakupan agregat nol} (0.665 = 0.665), Gini turun | |
| $0.302\!\rightarrow\!0.290$. Klaim presisi kami: \emph{"AgriFlow memprioritaskan kabupaten | |
| terlemah saat pasokan langka,"} bukan \emph{"menurunkan ketimpangan secara umum."} | |
| \paragraph{Dua jenis validasi (tidak dicampur).} (i) \emph{Perbandingan baseline} di atas | |
| dijalankan pada skenario terkontrol untuk mengisolasi efek keadilan secara apples-to-apples. | |
| (ii) Secara \emph{terpisah}, engine dijalankan \emph{end-to-end} pada \textbf{data BPS/PIHPS Jawa | |
| Timur asli per-kabupaten (tahun acuan 2022)} untuk 5 komoditas (beras, cabai merah \& rawit, bawang | |
| merah \& putih) --- membuktikan pipeline bekerja pada angka nyata, bukan sintetis. Seluruh hasil | |
| reproducible dan teruji otomatis (404 tes; 403 lulus, 1 di-skip --- lihat \S\ref{sec:pengujian}). | |
| \subsection{Mengapa metode ini tepat} | |
| Untuk konteks perencana terpusat dengan satu fungsi kesejahteraan, assignment terbobot lebih tepat | |
| dan dapat diaudit daripada mekanisme pasar dua-sisi. Pendekatan Food~Drop berbasis | |
| \emph{power-of-two-choices} dengan jaminan aproksimasi~\cite{diaby2024} adalah arah pelengkap v2 | |
| (menambah \emph{provable bound} yang saat ini belum ada). | |
| % ===================================================================== | |
| \section{Prediksi --- Peramalan Harga (TimesFM)} | |
| \subsection{Metode dan cara kerja} | |
| Peramalan harga 30 hari memakai \textbf{TimesFM 2.0}~\cite{timesfm2023}, \emph{decoder-only | |
| foundation model} time-series Google yang dilatih pada $\sim$100 miliar titik data dan mampu | |
| \emph{zero-shot} (tanpa pelatihan per-komoditas). Input: deret harga harian PIHPS per kota/komoditas; | |
| output: titik ramalan + interval prediksi (P10/P90). Prophet dan XGBoost dipakai sebagai | |
| \emph{baseline} pembanding. | |
| \subsection{Alasan pemilihan \& efektivitas} | |
| Bukti agri-spesifik terkini menunjukkan foundation model time-series \textbf{secara konsisten | |
| mengungguli} metode klasik (ARIMA/Prophet) maupun ML (XGBoost) untuk harga komoditas | |
| pertanian~\cite{wangzhang2026}, membalik anggapan lama bahwa "metode sederhana menang untuk | |
| komoditas." Pada leaderboard zero-shot independen (GIFT-Eval), keluarga TimesFM berada di tier | |
| teratas baik untuk akurasi titik (MASE) maupun probabilistik (CRPS)~\cite{timesfm2023}. Kami | |
| \emph{tidak} mengklaim TimesFM mutlak terbaik --- Chronos-2/Moirai-2.0 bersaing ketat. | |
| \subsection{Evaluasi dan validasi} | |
| Evaluasi memakai \emph{rolling-origin backtest} dengan MAPE \& MASE serta kalibrasi cakupan | |
| interval P10/P90. Keterbatasan jujur: konfigurasi \emph{univariate} melewatkan variabel eksogen. | |
| Untuk beras/cabai Indonesia, literatur menunjukkan indikator ENSO/iklim~\cite{alanshari2025} dan | |
| musim hari raya~\cite{eidpihps2026} \emph{material} terhadap akurasi --- karenanya v2 akan | |
| menambahkan kovariat (kalender Ramadan, indeks ENSO) yang secara teknis dapat di-\emph{retrofit} | |
| ke foundation model~\cite{chronosx2025}. | |
| % ===================================================================== | |
| \section{Deteksi --- Anomali Harga} | |
| \subsection{Metode dan cara kerja} | |
| Deteksi anomali memakai pendekatan \textbf{Seasonal-Hybrid ESD (S-H-ESD)}~\cite{shesd2017}: | |
| (1) \emph{deseasonalize} deret (buang trend + komponen musiman), lalu (2) terapkan statistik | |
| \emph{robust} median + MAD pada \emph{residual}, dengan flag | |
| $|r - \tilde{r}| > k \cdot 1.4826 \cdot \mathrm{MAD}$. Ditambahkan \emph{persistence threshold} | |
| (flag hanya jika bertahan $\geq 2$ observasi) dan \emph{floor} skala untuk komoditas | |
| bervolatilitas-rendah (beras). | |
| \subsection{Alasan pemilihan: mengapa BUKAN deep learning} | |
| Benchmark TSAD yang andal (NeurIPS~2024) menunjukkan bahwa di bawah evaluasi yang adil, detektor | |
| transformer (mis. AnomalyTransformer/TranAD) \emph{tidak} secara reliabel mengungguli metode | |
| statistik sederhana --- keunggulan mereka sebagian artefak metrik \emph{point-adjustment} yang | |
| bias~\cite{liu2024}. Untuk konteks kebijakan di mana \emph{interpretability} menentukan, memilih | |
| S-H-ESD adalah keputusan yang \emph{defensible}, bukan malas. | |
| \subsection{Efektivitas dan validasi} | |
| Pada harga PIHPS Jawa Timur 2021--2025, upgrade ke S-H-ESD memangkas jumlah flag | |
| $\sim$\textbf{60\%} (14.261 $\rightarrow$ 5.686) dengan menyaring \emph{noise} musiman rutin | |
| sambil \textbf{mempertahankan kejadian nyata}: lonjakan bawang merah Probolinggo $+$73--81\% | |
| pada April 2024 (pasca-Idul Fitri) tetap terdeteksi sebagai event \emph{sustained}. Validasi | |
| kontekstual: anomali teratas konsisten dengan kalender hari raya dan pola pasar nyata. | |
| Keterbatasan: \emph{binning} musiman bulanan mengaburkan pergeseran kalender Hijriah ($\sim$11 | |
| hari/tahun); trend rolling-median tertinggal $\sim$15 observasi saat \emph{regime shift}. | |
| % ===================================================================== | |
| \section{Data \& Validasi Empiris} | |
| Engine berjalan pada \textbf{data nyata BPS/PIHPS Jawa Timur per-kabupaten}: produksi | |
| (BPS Jatim), konsumsi per-kapita (Susenas BPS --- untuk beras bahkan \emph{per-kabupaten}, bukan | |
| asumsi nasional), populasi (BPS), dan harga harian PIHPS 2021--2025. Surplus/defisit diturunkan | |
| sebagai \emph{food balance}: $\text{surplus\_deficit} = \text{produksi} - \text{konsumsi}$, dengan | |
| satuan/konversi terdokumentasi (kuintal $\div 10$ = ton; padi GKG $\times 0.6286$ = beras giling). | |
| Lima komoditas inti tervalidasi nyata (beras, cabai merah \& rawit, bawang merah \& putih) pada | |
| tahun acuan konsisten 2022. Seluruh pipeline reproducible dan diuji otomatis (404 tes; 403 lulus, 1 di-skip). | |
| \section{Keterbatasan \& Roadmap (Phase 3)} | |
| \begin{itemize} | |
| \item Data nyata 5 komoditas, tahun 2022; daging \& telur menunggu data produksi per-kab lengkap. | |
| \item Konsumsi cabai/bawang memakai rata-rata nasional $\times$ populasi (proxy); beras sudah per-kab. | |
| \item Equity multiplier post-score (heuristik) $\rightarrow$ migrasi ke penalty/leximin | |
| in-objective~\cite{firouz2021,hakimifar2022}. | |
| \item Tanpa \emph{provable bound} $\rightarrow$ adopsi power-of-two-choices~\cite{diaby2024}. | |
| \item Prediksi univariate $\rightarrow$ tambah kovariat eksogen (ENSO/Ramadan)~\cite{alanshari2025,chronosx2025}. | |
| \item Skala provinsi (Jatim) siap; nasional 514 kab perlu spatial partitioning + precompute. | |
| \end{itemize} | |
| % ===================================================================== | |
| \section{Pengujian \& Validasi} | |
| \label{sec:pengujian} | |
| \subsection{Kenapa: keputusan kebijakan butuh bukti yang dapat direproduksi} | |
| AgriFlow bukan rekomendasi belanja biasa; outputnya menggerakkan alokasi pangan | |
| antar-kabupaten yang menyentuh kabupaten IPM-rendah. Untuk sistem keputusan | |
| seperti ini, klaim ``adil'' dan ``robust'' tidak boleh berhenti di narasi. Tiga | |
| alasan teknis menuntut suite uji otomatis yang tebal. \emph{Pertama, | |
| reproducibility}: seluruh pipeline food-balance (produksi $-$ konsumsi, konversi | |
| satuan BPS, surplus/defisit per-kabupaten) harus menghasilkan angka yang sama di | |
| mesin yang berbeda, sehingga uji data-nyata mengunci angka acuan 2022 sebagai | |
| \emph{golden numbers}. \emph{Kedua, regression-safety}: equity multiplier, | |
| bobot skor Layer~2, dan ambang anomali adalah parameter kebijakan yang sensitif; | |
| perubahan kecil tanpa sengaja dapat membalik pemenang alokasi, sehingga setiap | |
| seam (mis. \code{equity\_fn}) diuji \emph{default-preserving} agar refactor tidak | |
| diam-diam menggeser hasil. \emph{Ketiga, robustness terhadap kondisi nyata | |
| Indonesia}: literatur evaluasi deteksi anomali menunjukkan bahwa metrik yang | |
| tampak baik pada benchmark sintetis sering runtuh pada data lapangan dan | |
| flagging musiman~\cite{liu2024}; karena itu deteksi anomali AgriFlow diuji | |
| secara adversarial, bukan hanya pada lonjakan buatan. Filosofi ini sejalan dengan | |
| \emph{honest-engineering}: kami menguji justru pada kasus yang paling mungkin | |
| mempermalukan sistem, mengikuti pelajaran dari kegagalan agritech yang | |
| mengabaikan kondisi tepi pasar~\cite{tanihub}. | |
| \subsection{Apa: enam kategori uji} | |
| Suite memuat \textbf{404 tes terkumpul} dalam tujuh kelompok fungsional, dijalankan | |
| lintas-OS pada CI (matriks pytest). Tabel~\ref{tab:kategori-uji} merangkum cakupan. | |
| \begin{center} | |
| \begin{longtable}{p{5.4cm}rp{6.2cm}} | |
| \caption{Kategori uji AgriFlow dan apa yang dijaga.}\label{tab:kategori-uji}\\ | |
| \toprule | |
| \textbf{Kategori} & \textbf{\#} & \textbf{Yang divalidasi} \\ | |
| \midrule | |
| \endfirsthead | |
| \toprule | |
| \textbf{Kategori} & \textbf{\#} & \textbf{Yang divalidasi} \\ | |
| \midrule | |
| \endhead | |
| Unit per-layer (L0--L3) & 73 & Tier IPM (16), constraint jarak/perishability (19), skor weighted-sum (24)~\cite{bazgan2021}, alokasi equity-weighted (14)~\cite{firouz2021} \\ | |
| 24 skenario edge-case (A--F) & 27+ & Volume, spasial, temporal, disrupsi, politis, kualitas; memetakan kejadian nyata Jatim (lihat Tabel~\ref{tab:skenario}) \\ | |
| Validasi data nyata BPS/PIHPS & 57 & Food-balance beras (16) \& hortikultura 2022 (18), pipeline reproducible (23) \\ | |
| Deteksi anomali harga & 49 & S-H-ESD pada residual deseasonalized~\cite{shesd2017}; adversarial musiman~\cite{liu2024} \\ | |
| Forecast \& API & 40 & Endpoint forecast/anomali; fallback bila TimesFM/FastAPI absen~\cite{timesfm2023} \\ | |
| Baseline \& equity & 39 & Perbandingan greedy/uniform/proporsional vs AgriFlow (24) + skenario supply-constrained (15)~\cite{alem2021,hakimifar2022} \\ | |
| Ingest \& integrasi & 73 & Loader DB (11), ingest harga PIHPS (33), jarak jalan OSRM (9), bot WhatsApp (20) \\ | |
| \bottomrule | |
| \end{longtable} | |
| \end{center} | |
| \noindent | |
| Inti dari lapisan kedua adalah \textbf{24 skenario edge-case} (kelas | |
| \code{TestA1}\,$\ldots$\,\code{TestF2}), masing-masing memetakan satu kondisi | |
| operasional nyata Jawa Timur, bukan kasus buatan: lonjakan Ramadan, erupsi | |
| Semeru di Lumajang, banjir Madura, kenaikan BBM, dan kontrak Bulog. Tabel | |
| \ref{tab:skenario} memuat seluruhnya satu baris per skenario. | |
| \begin{center} | |
| \begin{longtable}{p{0.9cm}p{4.4cm}p{8.0cm}} | |
| \caption{24 skenario edge-case dan kondisi nyata yang dimodelkan.}\label{tab:skenario}\\ | |
| \toprule | |
| \textbf{Kode} & \textbf{Nama} & \textbf{Yang divalidasi} \\ | |
| \midrule | |
| \endfirsthead | |
| \toprule | |
| \textbf{Kode} & \textbf{Nama} & \textbf{Yang divalidasi} \\ | |
| \midrule | |
| \endhead | |
| A1 & One-to-many & Satu surplus memasok banyak defisit; split volume konsisten \\ | |
| A2 & Many-to-one & Surabaya 200t cabai dipasok dari banyak sentra \\ | |
| A3 & Volume mismatch drastis & Surplus 5t vs defisit 100t (ratio 5\%) $\rightarrow$ flag warning \\ | |
| A4 & Zero demand & Surplus tanpa defisit komoditas $\rightarrow$ peluang ekspor eksternal \\ | |
| B1 & Cross-tier & Tier~1 (Kota Kediri) surplus $\rightarrow$ Tier~2 (Sampang) defisit \\ | |
| B2 & Long distance & Pacitan$\rightarrow$Banyuwangi $\sim$400km melampaui batas 200km $\rightarrow$ ditolak \\ | |
| B3 & Cluster Madura & Empat kab Madura ditangani sebagai klaster spasial \\ | |
| C1 & Ramadan spike & Pra-Idul~Fitri H$-$14, bobot temporal disesuaikan \\ | |
| C2 & Post-harvest & Pasca-panen: margin perishability menyempit \\ | |
| C3 & Stale data & Data $>$24 jam $\rightarrow$ flag \code{STALE\_DATA\_24H}, confidence turun \\ | |
| C4 & Holiday calendar & Event spike non-Ramadan ter-deteksi engine (multi-holiday) \\ | |
| D1 & Banjir rute & Hujan 75mm rute Kediri--Surabaya $\rightarrow$ climate score 0.3 \\ | |
| D2 & Komoditas rusak & Cabai harvest\_age=4 (max 5) $\rightarrow$ perish score 0 \\ | |
| D3 & Harga anomali & Outlier $>3\sigma$ dari ambang statis per komoditas $\rightarrow$ exclude (pra-filter $z$-score, bukan S-H-ESD) \\ | |
| D4 & Erupsi gunung & Lumajang erupsi Semeru $\rightarrow$ unreachable, semua match ditolak \\ | |
| D5 & Banjir multi-kab & Bojonegoro+Lamongan+Tuban (sentra padi) banjir bersamaan \\ | |
| D6 & Route blackout & Rute ditutup (mudik/demo/maintenance) $\rightarrow$ re-route/reject \\ | |
| E1 & Equity tie-break & Skor seri $\rightarrow$ IPM lebih rendah menang~\cite{firouz2021} \\ | |
| E2 & Pemda override & \code{do\_not\_export\_cabai\_merah=True} dihormati \\ | |
| E3 & Bulog priority & Surplus beras di kab procurement Bulog $\rightarrow$ 60\% reserve \\ | |
| E4 & Import policy & Kebijakan impor bawang aktif $\rightarrow$ bobot price diturunkan \\ | |
| E5 & BBM naik & BBM +20\% $\rightarrow$ biaya logistik naik, max\_distance menyusut \\ | |
| E6 & Contract reserve & Kontrak swasta (MoU Carrefour, gula Indofood) dipotong dulu \\ | |
| F1 & Grade substitution & Surplus premium boleh memenuhi demand medium (opt-in) \\ | |
| F2 & Demand segmentation & HORECA \& RETAIL untuk komoditas+kab sama hidup berdampingan; \code{segment\_multiplier} mengubah ranking \\ | |
| \bottomrule | |
| \end{longtable} | |
| \end{center} | |
| \subsection{Hasil} | |
| Pada commit terakhir suite menjalankan \textbf{403 tes lulus, 1 di-skip} | |
| (404 terkumpul), konsisten lintas-OS di CI. Satu skip itu jujur kami catat: | |
| \code{test\_timesfm\_importorskip} memakai \code{pytest.importorskip} sehingga | |
| uji spesifik-TimesFM dilewati bila pustaka berat tersebut tidak terpasang di | |
| runner CI; jalur forecasting tetap diuji lewat fallback statistik dan kontrak | |
| API~\cite{timesfm2023}. Dua hasil validasi paling load-bearing: | |
| \paragraph{Equity hanya terbukti saat pasokan langka, dan diperoleh tanpa | |
| biaya efisiensi.} Pada skenario \emph{abundant} (surplus $>$ defisit), greedy | |
| maupun AgriFlow sama-sama menutup Sampang dan Bangkalan 100\%; tidak ada | |
| trade-off untuk diukur. Perbedaan baru muncul pada skenario \emph{supply-constrained} | |
| (La~Ni\~na: banjir simultan Ngawi+Madiun+Bojonegoro, surplus turun ke 3962t vs | |
| defisit 5249t, ratio 0.754). Di sana strategi greedy murni \textbf{menelantarkan | |
| Madura}: Sampang terlayani 0\% dan Bangkalan 20\%. AgriFlow mengangkat keduanya ke | |
| \textbf{100\%} sambil mempertahankan \emph{coverage agregat yang identik} | |
| (0.6649 untuk kedua strategi) dan menurunkan ketimpangan (Gini $0.3017 | |
| \rightarrow 0.2905$). Artinya equity multiplier membeli keadilan pada | |
| \textbf{biaya efisiensi nol} dalam skenario ini, sebuah klaim yang diuji, | |
| bukan diasumsikan~\cite{firouz2021,alem2021,hakimifar2022}. Kami sengaja tidak | |
| mengklaim keunggulan equity pada kondisi pasokan melimpah, karena di sana | |
| tidak ada yang harus dikorbankan. | |
| \paragraph{Deteksi anomali sadar-musiman, bukan sekadar ambang $3\sigma$.} | |
| Detektor S-H-ESD menandai penurunan harga tajam (uji DROP, mis. anjlok | |
| $\sim$60\% terhadap rolling median) dan lonjakan ekstrem, namun yang lebih | |
| penting: \emph{pola musiman murni tidak ikut ter-flag}. Pada uji seasonal, | |
| sinus musiman beramplitudo $\sim$30\% (mis. siklus harga jelang Lebaran) | |
| menghasilkan residual mendekati nol setelah deseasonalisasi sehingga tidak | |
| memicu false positive, sementara anomali genuine yang ditumpangkan di atas | |
| pola musiman tetap terdeteksi~\cite{shesd2017}. Inilah sifat yang ditekankan | |
| literatur benchmark anomali sebagai pembeda detektor yang andal di lapangan | |
| dari yang hanya bagus di kertas~\cite{liu2024}. | |
| \noindent | |
| Singkatnya, suite ini mengubah klaim arsitektur menjadi properti yang dapat | |
| diaudit ulang: setiap angka equity dan setiap perilaku anomali di dokumen ini | |
| memiliki tes yang menjaganya tetap benar pada commit berikutnya. | |
| % ===================================================================== | |
| \section*{Lampiran A --- Ringkasan Matematis} | |
| \addcontentsline{toc}{section}{Lampiran A --- Ringkasan Matematis} | |
| Seluruh formula yang \emph{load-bearing} di sistem, untuk acuan cepat (turunan lengkap di luar | |
| cakupan dokumen ini): | |
| \begin{center} | |
| \begin{longtable}{p{3.2cm}p{6.4cm}p{4.6cm}} | |
| \toprule | |
| \textbf{Komponen} & \textbf{Formula} & \textbf{Peran} \\ | |
| \midrule | |
| \endhead | |
| Skor Layer 2 & $\text{Base} = 100\sum_i w_i\,s_i$, \; $w=(0.22,0.22,0.22,0.18,0.16)$ & weighted-sum: Distance, Volume, Price, Perishability, Climate \\ | |
| Alokasi Layer 3 & $\text{Final} = \text{Base}\times m(\text{IPM})$ & equity-weighted assignment \\ | |
| Equity multiplier $m$ & $\text{IPM}{<}68\!\rightarrow\!1.30$; $68\text{--}72\!\rightarrow\!1.15$; $72\text{--}78\!\rightarrow\!1.05$; $\geq 78\!\rightarrow\!1.00$ & tier keadilan (kuartil IPM Jatim 2024) \\ | |
| Flag anomali & $|r-\tilde{r}| > k\cdot 1.4826\cdot \mathrm{MAD}(r)$, \; $k{=}3$, residual $r$ & S-H-ESD pada residual deseasonalized \\ | |
| Food balance & $\text{surplus/defisit} = \text{produksi} - \text{konsumsi}$ & turunan node surplus \& defisit \\ | |
| Konversi satuan & kuintal $\div 10 =$ ton; \; padi GKG $\times 0.6286 =$ beras giling & normalisasi data BPS \\ | |
| \bottomrule | |
| \end{longtable} | |
| \end{center} | |
| \noindent\emph{Catatan:} metrik evaluasi (Gini dari kurva Lorenz, Atkinson dengan parameter | |
| inequality-aversion $\varepsilon$, leximin, serta MAPE/MASE untuk forecasting) memakai definisi | |
| standar; pemilihannya dibahas di seksi terkait. Equity multiplier saat ini \emph{step-function} | |
| (interpretable bagi audiens kebijakan); migrasi ke bentuk \emph{smooth}/in-objective adalah arah v2 | |
| (\S Keterbatasan). | |
| % ===================================================================== | |
| \begin{thebibliography}{99} | |
| \bibitem{galichon2021} A.~Galichon. \emph{The unreasonable effectiveness of optimal transport in economics.} arXiv:2102.03875, 2021. | |
| \bibitem{roth1990} A.~E.~Roth, M.~Sotomayor. \emph{Two-Sided Matching: A Study in Game-Theoretic Modeling and Analysis.} Cambridge University Press, 1990. | |
| \bibitem{bazgan2021} C.~Bazgan et al. \emph{The power of the weighted sum scalarization for approximating multiobjective optimization problems.} arXiv:1908.01181, 2021. | |
| \bibitem{firouz2021} M.~Firouz et al. \emph{On the equity-efficiency trade-off in food-bank network operations.} arXiv:2111.05839, 2021. | |
| \bibitem{alem2021} D.~Alem, A.~Caunhye, A.~Moreno. \emph{Revisiting Gini for equitable humanitarian logistics.} 2021. | |
| \bibitem{hakimifar2022} M.~Hakimifar, V.~Hemmelmayr, F.~Tricoire. \emph{A lexicographic maximin approach to the selective assessment routing problem.} arXiv:2201.09599, 2022. | |
| \bibitem{diaby2024} M.~Diaby et al. \emph{Automating Food Drop: The Power of Two Choices for Dynamic and Fair Food Allocation.} ACM EC, arXiv:2406.06363, 2024. | |
| \bibitem{wangzhang2026} Wang, Zhang. \emph{The Promise of Time-Series Foundation Models for Agricultural Forecasting: Evidence from Commodity Prices.} arXiv:2601.06371, 2026. | |
| \bibitem{timesfm2023} A.~Das et al. \emph{A decoder-only foundation model for time-series forecasting (TimesFM).} arXiv:2310.10688, 2023 (TimesFM-2.5, GIFT-Eval 2026). | |
| \bibitem{chronosx2025} \emph{ChronosX / TFMAdapter: extending time-series foundation models with exogenous covariates.} arXiv:2509.13906, 2025. | |
| \bibitem{alanshari2025} Al~Anshari. \emph{Forecasting Rice Price Volatility in Indonesia: Integrating ENSO Indicators with Machine Learning.} IJSDP, 2025. | |
| \bibitem{eidpihps2026} \emph{Multi-Commodity Food Price Forecasting Ahead of Eid Al-Fitr in Indonesia.} MALCOM Indonesian J. of ML \& CS, 2026. | |
| \bibitem{liu2024} Q.~Liu, J.~Paparrizos. \emph{The Elephant in the Room: Towards A Reliable Time-Series Anomaly Detection Benchmark.} NeurIPS 2024 (Datasets \& Benchmarks). | |
| \bibitem{shesd2017} J.~Hochenbaum, O.~Vallis, A.~Kejariwal. \emph{Automatic Anomaly Detection in the Cloud Via Statistical Learning (Seasonal-Hybrid ESD).} arXiv:1704.07706, 2017. | |
| \bibitem{enam} \emph{e-NAM (Electronic National Agriculture Market), India} --- pasar lelang terpadu; tinjauan dampak \& tantangan (systematic literature review). | |
| \bibitem{mealconnect} \emph{MealConnect (Feeding America)} --- platform pencocokan penyelamatan pangan donor--bank, AS. | |
| \bibitem{tanihub} \emph{TaniHub Group collapse} --- pelajaran dari kegagalan agritech B2B terbesar Indonesia (margin tipis, ekspansi berlebih). | |
| \end{thebibliography} | |
| \end{document} | |