Langsung ke konten
AFM Studio
  • Halaman

    AFM Studio
  • Karya
  • Lab
  • Tentang
  • CV
  • Kontak
  • Proyek

    AksaraPerpustakaan pengetahuan Otorita IKN yang bisa dicari, dengan server memeriksa akses setiap pembaca di tiga tingkat
  • Daily TaqwaSistem presensi salat anti-manipulasi untuk ~2.000 pegawai OIKN di Masjid Negara IKN
  • Lantara v2Mesin perizinan Otorita IKN tempat administrator menambah jenis izin baru dari layar, tanpa developer
  • eKiosk IKNDua ruang kendali untuk Nusantara: konten kios dan pelacakan bus live dengan estimasi kedatangan yang menilai dirinya sendiri
  • E-Monev IKNPlatform pemantauan pembangunan Nusantara selama 23 tahun, melacak progres triwulan setiap unit terhadap 24 KPI
  • JDIH OIKNPortal dokumen hukum publik OIKN, dengan alur penerbitan terkendali dan ringkasan AI yang tidak pernah keluar dari server
  • Jejak PenanamanAplikasi absen acara penanaman pohon IKN yang membuktikan peserta hadir di lokasi lewat selfie ber-geofence
  • Dashboard SAKTIPipeline malam dan dashboard yang menggantikan unduhan anggaran manual di keenam satker OIKN
  • DoseRxKalkulator dosis untuk 127 obat yang membulatkan dosis ke tablet dan sirup yang dijual apotek Indonesia
  • CubiqPelatih speedcubing dengan timer setara kompetisi dan solver buatan sendiri untuk 8 puzzle utama
  • ScimotionPerpustakaan sains interaktif berisi 86 artikel, masing-masing dijelaskan bersama animasi yang bisa dikendalikan pembaca
  • WA Daily Scrum BotBot WhatsApp yang menagih laporan standup tim 14 orang dan menandai tugas yang macet berhari-hari

↑ ↓ untuk berpindah · Enter untuk membuka · Esc untuk menutup

Mixed Traffic Simulator

Simulator lalu lintas yang menunjukkan aturan satu motor setara 0,25 mobil bergantung pada cara mengukurnya

Tangkapan layar
metode estimasi diuji terhadap satu kebenaran
5
faktor sepeda motor terpublikasi, direproduksi dan ditampilkan
−0,11
kecepatan terukur kemacetan hantu
−8,6 km/jam
selisih antar metode, padahal kebenarannya datar
+16 sampai −30
Di halaman ini

Masalahnya

Perencana jalan di Indonesia menghitung kapasitas jalan dengan manual tahun 1997, MKJI. Manual ini mengubah setiap kendaraan menjadi satuan mobil penumpang dengan faktor tetap, dan satu sepeda motor dihitung 0,25 atau 0,5 mobil tergantung jenis jalannya. Dua dekade studi lapangan di Indonesia mengukur faktor yang katanya "tetap" itu di angka 0,198, 0,32, 0,35, 0,4, dan 0,84. Satu studi regresi di Denpasar bahkan mendapat −0,11 pada agregasi satu jam, angka yang secara fisik tidak bermakna.

Dampaknya langsung ke anggaran. Di satu bundaran, jam sibuk yang sama bisa bernilai tingkat pelayanan C dengan satu metode dan F dengan metode lain. Layak atau gagal tergantung metode mana yang dipilih, dan itu menentukan apakah sebuah intervensi didanai. Studi lapangan tidak bisa menjawabnya, karena tidak ada yang bisa memutar ulang jam lalu lintas yang sama tanpa sepeda motor.

Yang saya bangun

Eksperimen terkendali yang tidak mungkin dilakukan di jalan

Simulator menjalankan arus lalu lintas dengan porsi sepeda motor yang diketahui. Lalu skenario yang persis sama diputar ulang dengan setiap sepeda motor diganti mobil, dan kapasitasnya dibandingkan. Perbandingan itulah jawaban sebenarnya. Setelah itu, setiap metode estimasi yang sudah dipublikasikan diterapkan pada arus yang sama, dan layar menunjukkan metode-metode itu saling berselisih sekaligus berselisih dengan jawaban yang sudah ada.

Estimator hanya melihat apa yang dilihat pengamat di pinggir jalan

Argumennya runtuh kalau metode estimasi bisa curang. Saya memisahkannya dari kode simulasi, dan build gagal kalau estimator mencoba mengaksesnya. Estimator hanya menerima apa yang bisa dicatat petugas lapangan: kapan kendaraan melintasi garis, jenisnya menurut pengamatan mata, kecepatan sesaatnya, berapa lama ia menempati detektor, dan posisinya melintang jalan. Metode yang tahu kecepatan dan identitas sebenarnya bukan lagi metode yang dipakai para insinyur. Satu-satunya pengecualian adalah eksperimen penggantian dengan mobil, karena kebenaran lapangan memang hal yang tidak bisa didapat pengamat.

Setiap hasil bisa dibagikan dan diputar ulang persis

Fisikanya berjalan dalam langkah tetap 0,05 detik, terpisah dari proses menggambar, sehingga hasilnya tidak bergantung pada perangkat pengguna. Semua keacakan berasal dari satu sumber ber-seed. Seluruh state, termasuk skenario, parameter, seed, dan jendela agregasi, muat di dalam tautan. Hasil yang mengejutkan menjadi URL yang bisa mereproduksinya, dan sweep batch bisa dibangkitkan ulang dari seed-nya.

Pilihan model disebut di layar

Belum ada model baku untuk lalu lintas yang mengabaikan marka lajur, seperti perilaku sepeda motor di Indonesia. Jadi saya menyediakan tiga aturan gerak menyamping: lajur ketat, mencari celah, dan model gaya sosial. Aturan yang aktif selalu disebut di layar. Model gaya sosial tidak punya rujukan di literatur lalu lintas, dan antarmukanya menyebutkan itu sebagai catatan.

Hasil yang mustahil tetap ada di grafik

Saat estimator menghasilkan faktor sepeda motor yang negatif, saya menggambarnya di bawah sumbu lengkap dengan peringatan. Angka itu tidak disembunyikan atau dipotong ke nol. Justru angka itulah hasil paling meyakinkan yang dimiliki aplikasi ini.

Hasilnya

Simulator ini sudah live dan terbuka untuk umum. Skenario phantom jam menempatkan 22 kendaraan di jalan melingkar 230 meter tanpa penyempitan. Kemacetan tetap terbentuk hanya dari jeda reaksi dan merambat ke belakang, terukur di aplikasi pada −8,6 km/jam, mereproduksi eksperimen yang sudah dipublikasikan. Bangku ekuivalensi memplot lima metode terhadap porsi sepeda motor. Kebenaran lapangan nyaris datar, sementara metode regresi dan kecepatan berayun dari +16 sampai −30 dan mereproduksi −0,11 pada agregasi lebar. Sebuah inspektor menampilkan hitungan mengemudi secara langsung untuk kendaraan mana pun yang dipilih. Saya membangun versi pertamanya sendiri dalam dua hari pada September 2026, lalu terus mengerjakannya sepanjang sisa bulan itu untuk desain ulang, perbaikan aksesibilitas, serta dukungan mobile dan keyboard.

Aplikasi ini menyatakan dengan jelas bahwa ia bukan model terkalibrasi untuk ruas jalan tertentu dan bukan pengganti perangkat lunak lalu lintas profesional. Tugasnya menunjukkan sebuah asumsi yang gagal.

Di balik layarDetail teknis untuk engineer
  • src/estimators/ tidak bisa meng-import src/sim/, ditegakkan oleh aturan ESLint no-restricted-imports di CI sebelum deploy. Estimator hanya menerima satu tipe, DetectorRecord. src/truth/substitution.ts adalah pengecualian yang terdokumentasi.
  • Lima metode: substitusi kebenaran lapangan, time headway, regresi berganda, regresi kecepatan, dan occupancy time. Jendela agregasi 3, 5, 15, dan 60 menit.
  • Car-following memakai Intelligent Driver Model. Aturan lateral: lajur ketat dengan MOBIL, sublane pencari celah, dan potensial gaya sosial; field citation untuk gaya sosial bernilai null.
  • Math.random dilarang di seluruh repo lewat lint; PRNG ber-seed ada di src/sim/rng.ts.
  • Phantom jam mereproduksi Sugiyama dkk. (2008) dan menjadi gerbang build sekaligus tes regresi. Bundaran Tirosa (LOS C dengan ekuivalensi occupancy time, F dengan MKJI) dikutip di spesifikasi.
  • Asersi tanpa tumpang tindih berjalan di setiap langkah, dengan jarak lateral yang diselesaikan secara iteratif saat bersentuhan. Tiga commit khusus memperbaiki tabrakan.
  • Canvas menggambar jalan, diagram ruang–waktu, dan heatmap kecepatan; diagram ruang–waktu melukis satu kolom piksel per interval ke canvas offscreen. SVG menggambar diagram fundamental, bangku ekuivalensi, plot discharge, dan penampang melintang, dengan sumbu yang dihitung sendiri di src/views/render/axis.ts.
  • Simulasi interaktif tetap di main thread pada 400 kendaraan; sweep batch berjalan di Web Worker yang bisa dibatalkan. Lintasan bisa diekspor ke CSV.
  • Enam skenario (phantom jam, koridor, penyempitan, simpang bersinyal, angkot, bench), empat kelas kendaraan (MC, LV, HV, PU), dan toggle Ruang Henti Khusus dengan plot discharge untuk arus jenuh dan headway.
  • Kecepatan ditampilkan lewat kecerahan dan jenis kendaraan lewat bentuk; warna hanya untuk kelima estimator. Peregangan sumbu melintang di tampilan jalan dibatasi dan dicetak di pojok.
  • Empat dependensi runtime: React 18.3, React DOM, dan dua paket font Overpass. Tanpa library fisika, grafik, simulasi, atau state. Sekitar 91 KB JS utama gzip ditambah chunk baked-sweep 7 KB, dan CSS 9,5 KB gzip, dari anggaran 300 KB; chunk sweep-worker dimuat belakangan dan tidak termasuk dalam angka itu.
  • 170 tes di 15 file. Engine di src/sim/ sepanjang 4.915 baris, murni dan headless; modul estimator terpisah sepanjang 759 baris. Sekitar 15.500 baris di src/ dan 67 commit antara 2 dan 28 September 2026.

Tangkapan layar

Phantom Jam
Corridor
Bottleneck
Signalised Approach
Angkot
Equivalence Bench

Sedang merekrut, atau membangun hal serupa?

Saya terbuka untuk posisi full-time dan proyek freelance tertentu.