Soru
Bir markette tek ortak kuyruk mu daha az bekletir, yoksa her kasaya ayrı bir kuyruk mu? Ders kitabının cevabı net: ortak kuyruk. Bu cevabın gerçek bir mağazada da geçerli olup olmadığını merak ettim.
Veri
- Antczak ve Weron’un (2019) yayımladığı gerçek kasa kayıtları: üç dönemde yaklaşık 163 bin işlem ve kasiyer giriş-çıkış kayıtları.
- Kayıtlardan müşterilerin geliş profilini, sepet büyüklüğünü, ödeme türünü ve tarama süresini öğrendim.
- Veride doğrudan bekleme süresi yok. Onun yerine kasiyerin bir müşteriyi bitirip sonrakine başlaması arasındaki boşluğu kullandım.
Yöntem
- Ayrık olay simülasyonu. Motoru TypeScript ile yazdım; böylece aynı motor tarayıcıda da çalışıyor.
- Teoriyle doğrulama. Motoru Erlang-C, Pollaczek–Khinchine ve Little yasasıyla karşılaştırdım; sapma %1,3 içinde.
- Görmediği veriyle doğrulama. Parametreleri yalnızca eğitim dönemlerinden öğrendim ve modeli hiç görmediği bir dönemle sınadım. Test dönemi eğitime karışırsa kod hata verip duruyor.
- Vekil model. 15 bin senaryoluk taramadan bir gradyan artırma modeli eğittim; sitede saat saat kaç kasa açılması gerektiğini anında hesaplıyor.
- 3B mağaza. Sahne ayrı bir animasyon değil, motorun ürettiği olay kaydını gerçek yürüme hızıyla yeniden oynatıyor.
Bulgular
- Ders kitabı modelinde ortak kuyruk her yükte kazanıyor.
- Veri iki şey ekliyor: her müşteride kasiyerin yaklaşık 16 saniyelik bir geçiş süresi var ve mağaza kasaları yaklaşık %93 dolulukla çalıştırıyor.
- Ortak kuyruğun iki maliyetini ekleyince tablo değişiyor: boşalan kasaya yürüme süresi (3B sahnenin geometrisinden) ve kasiyerin %6,86 yavaşlaması (Wang ve Zhou, 2018). Doluluk yaklaşık %65’i geçince ayrı kuyruklar daha az bekletiyor; %80’in üstünde yürüme süresi tek başına yetiyor.
- Doğrulama iki model hatası yakaladı: sepet büyüklüğü gün ve saate göre değişiyordu, açık kasa sayısı da şişkin hesaplanıyordu. İkisini düzeltince doluluk hatası %9,5’ten %6,5’e indi.
Neyi bilmiyorum
- Yavaşlama oranı başka bir mağazadan ödünç. Bu yüzden sitede her yükte, ayrı kuyrukların öne geçmesi için gereken yavaşlamayı da gösteriyorum.
- Model bir saatin ortalama mağaza gibi davranacağını iyi, hangi saatin sıra dışı olacağını zayıf tahmin ediyor (saatlik korelasyon 0,53).
- Veri tek bir mağazadan; sonuç başka mağaza düzenlerine doğrudan taşınmamalı.
Ne öğrendim
En öğretici kısım doğrulamaydı. Modelin hatalarını, ancak görmediği veriyle karşılaştırdığımda bulabildim.