V-NOS: Vivense Nakliye Optimizasyon Sistemi


Güler M. G., Erol K.

TÜBİTAK Projesi, 2015 - 2016

  • Proje Türü: TÜBİTAK Projesi
  • Başlama Tarihi: Ağustos 2015
  • Bitiş Tarihi: Haziran 2016

Proje Özeti

Vivense, Bursa İnegöl'de anlaşmalı olduğu 200'den fazla üreticinin ürünlerini tüm Türkiye'ye internet üzerinden satan bir e-ticaret firmasıdır. Ürünlerin müşterilere ulaştırılması iki türlü olmaktadır. Küçük ürünler maliyetinin düşük olması sebebiyle anlaşmalı kargo firmaları ile gönderilmektedir. Daha büyük ve kurulum gerektirilen ürünlerin ise nakliye firmaları ile başlayan, sonrasında "ara nakliye"ler ile devam eden, en sonunda ise anlaşmalı montaj elemanları ile son bulan bir teslimat süreci vardır. Bu ürünlerin teslimatında Vivense, bazı durumlarda, çok yüksek maliyetlere katlanmak durumunda kalabilmektedir. Örneğin, Bursa İnegöl'den çıkan bir tır, bir L koltuğu Kastamonu merkeze 100 TL'ye götürürken, Kastamonu merkezdeki bir ara nakliyeci bu koltuğu İnebolu'ya götürmek için 400 TL isteyebilmektedir. Vivense'nin teslimat sorumlusu bu gibi durumlarda, kendisi bir kamyon/tır kiralayarak ilgili teslimatın bizzat Vivense tarafından gerçekleştirilmesini sağlamakta ve bu şekilde maliyet düşürmektedir. Ancak satışların artması ve Vivense'nin İstanbul içinde kendi filosunu kurması ile artık bu problemi otomatik olarak çözecek bir sistemin geliştirilmesine karar verildi. 


Geliştirilen sistemin bu tip yüksek maliyetli durumlarda bir araç kiralanıp kiralanmayacağına, eğer kiralanırsa da nerelere uğraması gerektiğine cevap verecek şekilde oluşturulması gerekiyordu. Bunlar dışında planlama yapılırken, çoğu araç rotalama probleminin aksine, tek günün değil, birden fazla günün siparişlerinin kontrol edilmesi isteniyordu. Böylece herhangi bir gün için bakıldığında araç çıkması maliyeti düşürmez iken, birden fazla günün siparişleri göz önüne alındığında daha düşük maliyetli bir rota oluşturulmasına imkan sağlanabilir.


Projenin başında tanımlanan bu problemin tahmin edilenden çok daha zor olduğu yapılan literatür araştırması sonucu gözlemlendi. Örneğin tek ürün dağıtan firmaların kaç tane ürünü aynı araca koyup ne zaman çıkması gerektiği ile ilgili dahi optimal politikanın henüz bulunmadığı gözlemlendi. Dolayısıyla Vivense gibi farklı ürünlerin olduğu ve işin içine araç rotalamanın da girdiği bir problemin çözümünün daha zor olduğunu görülmüş oldu. 


Problemin matematiksel modeller kullanarak modellenmesi öncelikle ölçeklenebilme ile ilgili problemler doğmasına sebep olacaktı. Yani sipariş sayısı arttıkça modelin çözüm sunabilme kapasitesi giderek azalacaktı. Bunun dışında CPLEX ya da GUROBİ gibi ücretli çözücülere gereksinim duyulması da projenin maliyetini artırmaktaydı. Üstelik CPLEX ve GUROBİ'nin belirli büyüklükten sonrasını çözmekte zorlanacağı da literatürde verilen problemlerden aşikardı. Bu nedenle sezgisel bir model geliştirmeye odaklandık. Sezgisel modeli hem ölçeklenebilme, hem bir başka yazılıma bağlı kalmama (çözücüler gibi) hem de Vivense'deki hali hazırda olan bilgi birikimini kaldıraç olarak daha rahat kullanabileceği bir yöntemdi. 


Bunun üzerine yapılan araştırmalarda, tasarruf algoritmasının ve onun türevlerinin oldukça eski ve işe yarar çözümler sağladığını farkettik. Ancak bu algoritma var olan problemimize direk bir çözüm üretemiyordu. Bunun üzerine danışman hocamız Doç. Dr. Mehmet Güray Güler'in de önerisi ile, bu problemi, belli varsayımlar altında dinamik lot boyutlama problemi (dynamic lot sizing) problemine benzetebildik. Böylece problemimiz Wagner Whitin benzeri bir algoritma ile çözülebilir hale geldi. Wagner Whitin algoritması temelde en kısa yol problemini çözen bir algoritma ancak bunun için yol şebekesinin kendi içindeki yolların mesafesini belirlemek gerekmekte. Bunun içinse hem nakliye ücretlerini, hem Vivense'nin kendi kiralayacağı aracın ücretini, hem de ürünlerin gecikme maliyetlerini içine alan bir maliyet oluşturduk. Bu maliyetleri içeren şebekeyi kurarak en kısa yolu bulduk. Bu şebekenin içindeki en kısa yol ise bize hangi gün kaç tane aracın hareket etmesi gerektiğini ve nerelere uğraması gerektiğini gösteriyordu. 


Algoritmanın geliştirilmesi sürecine benzer bir süreç ise algoritmanın var olan sisteme entegrasyonu sırasında yaşandı. Burada temelde iki sürecimiz yoğun geçti. Bunlardan ilki veritabanına bağlanarak oradan gerekli verileri çekip bunları algoritmanın istediği formata getirmek oldu. Sonrasındaki süreçte ise siparişlerin birbirlerine olan uzaklığını bulmakta problem yaşadık. Burada, müşterilerin verdiği adres herhangi bir web sitesinde doğru olarak görüntülenmekte problem yaşanabiliyor. Bunun sebebi ise siparişlerin adreslerindeki il ve ilçelerin kutucuklar içinde standard halinde alınırken, geri kalan bilgilerin tamamen kullanıcı tarafından girilmesi. Bu nedenle ilçeye detayına kadar doğru ve net bilgi alınırken sonrasında problem olabiliyordu. Biz de siparişleri ilçe detayında tutmaya karar verdik. Yine de ilçelerin birbirlerine olan uzaklarını veren bir cetvelin olmaması nedeniyle bu mesafenin sistem tarafından hesaplanması gerekiyordu. Bunun için Google'ın API desteğini kullanarak distance matrix hizmetini kullandık. Bu hizmet ile verilen tüm iki nokta arasındaki mesafeler Google Maps tarafından sağlanıyordu. 


Bu şekilde kurulan sistem, projenin başında hedeflendiği gibi farklı günlerdeki siparişleri Vivense'nin kiralayacağı bir kamyon ile götürebilme opsiyonunu değerlendirerek var olan nakliye ile teslimata alternatif bir çözüm sunabilme yetisine sahip. Dolayısıyla en başında hedeflediğimiz problemin çözümü için doğru bir algoritma tasarlayıp bunu çalıştırabilen bir sistem geliştirdiğimizi söylemek mümkün. Daha sonraki aşamalarda, bu rotalamayı İstanbul'daki depomuz için de uygulamayı hedefliyoruz.