Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi

Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi

Makalede nasıl uygulanacağı açıklanıyor WMS-sistemde standart olmayan bir kümeleme problemini çözme ihtiyacı ve bunu çözmek için hangi algoritmaları kullandığımızla karşı karşıya kaldık. Sorunun çözümünde sistematik, bilimsel bir yaklaşımı nasıl uyguladığımızı, ne gibi zorluklarla karşılaştığımızı, hangi dersleri çıkardığımızı size anlatacağız.

Bu yayın, depo süreçlerinde optimizasyon algoritmalarının uygulanmasındaki başarılı deneyimimizi paylaştığımız bir dizi makalenin başlangıcıdır. Makale serisinin amacı, izleyicileri hemen hemen her orta ve büyük depoda ortaya çıkan depo operasyonlarının optimizasyon sorunları hakkında bilgilendirmek ve bu tür sorunları çözme konusundaki deneyimimizi ve bu süreçte karşılaşılan tuzakları anlatmaktır. . Makaleler depo lojistiği sektöründe çalışanlara faydalı olacak, uygulayacak WMS-sistemlerin yanı sıra matematiğin iş dünyasındaki uygulamaları ve bir kuruluştaki süreçlerin optimizasyonu ile ilgilenen programcılar.

Süreçlerde darboğaz

2018 yılında hayata geçirmek üzere bir proje tamamladık. WMS-Chelyabinsk'teki “Trading House “LD” şirketinin deposundaki sistemler. “1C-Logistics: Depo Yönetimi 3” ürününü 20 işyerinde (operatörler) hayata geçirdik. WMS, mağaza sahipleri, forklift sürücüleri. Ortalama depo alanı yaklaşık 4 bin m2, hücre sayısı 5000 ve SKU sayısı 4500'dür. Depoda 1 kg'dan 400 kg'a kadar farklı boyutlarda kendi imalatımız olan küresel vanalar depolanmaktadır. Malların FIFO'ya göre seçilmesi gerektiğinden depodaki envanter partiler halinde depolanır.

Depo süreç otomasyon şemalarını tasarlarken, mevcut optimal olmayan envanter depolama sorunuyla karşı karşıya kaldık. Depolama ve istifleme vinçlerinin özellikleri, bir birim depolama hücresinin yalnızca bir partiden ürünleri içerebileceği şekildedir. Ürünler depoya günlük olarak gelir ve her varış ayrı bir partidir. Toplamda 1 aylık depo operasyonu sonucunda her birinin ayrı bir hücrede depolanması gerekmesine rağmen 30 ayrı parti oluşturuluyor. Ürünler genellikle tüm paletler halinde değil, parçalar halinde seçilir ve sonuç olarak, birçok hücredeki parça seçim bölgesinde aşağıdaki resim gözlenir: hacmi 1 m3'ten fazla olan bir hücrede, birkaç adet vinç vardır. Hücre hacminin %5-10'undan daha azını kaplar.

Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi Şekil 1. Bir hücredeki birkaç parça ürünün fotoğrafı

Depolama kapasitesinin en iyi şekilde kullanılmadığı açıktır. Felaketin ölçeğini hayal etmek için rakamlar verebilirim: ortalama olarak, deponun farklı operasyon dönemlerinde "küçük" bakiyelerle 1 m3'ten fazla hacme sahip bu tür hücrelerin 100 ila 300 hücresi vardır. Depo nispeten küçük olduğundan, deponun yoğun olduğu sezonlarda bu faktör bir "darboğaz" haline gelir ve depo süreçlerini büyük ölçüde yavaşlatır.

Sorun çözüm fikri

Bir fikir ortaya çıktı: en yakın tarihlere sahip kalan partiler tek bir partiye indirilmeli ve birleşik bir partiye sahip olan bu tür artıklar, bir hücrede veya bir hücrede yeterli alan yoksa birkaç hücrede kompakt bir şekilde birlikte yerleştirilmelidir. kalan miktarın tamamı.

Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi
İncir. 2. Hücrelerdeki kalıntıları sıkıştırmak için şema

Bu, yeni malların yerleştirilmesi için kullanılacak olan depo alanını önemli ölçüde azaltmanıza olanak tanır. Depo kapasitesinin aşırı yüklendiği bir durumda, böyle bir önlem son derece gereklidir, aksi takdirde yeni malları yerleştirmek için yeterli boş alan olmayabilir, bu da depo yerleştirme ve yenileme süreçlerinin durmasına yol açacaktır. Daha önce uygulamadan önce WMS-sistemler bu işlemi manuel olarak gerçekleştirdi ancak hücrelerde uygun kalıntıları arama süreci oldukça uzun olduğundan etkisiz kaldı. Artık WMS sisteminin kullanıma sunulmasıyla süreci otomatikleştirmeye, hızlandırmaya ve akıllı hale getirmeye karar verdik.

Böyle bir sorunu çözme süreci 2 aşamaya ayrılır:

  • ilk aşamada, sıkıştırma tarihi yakın olan parti gruplarını buluyoruz;
  • ikinci aşamada, her parti grubu için kalan malların hücrelere en kompakt şekilde yerleştirilmesini hesaplıyoruz.

Bu yazıda algoritmanın ilk aşamasına odaklanacağız ve ikinci aşamayı bir sonraki makaleye bırakacağız.

Sorunun matematiksel modelini arayın

Kod yazmaya ve tekerleğimizi yeniden icat etmeye başlamadan önce, bu soruna bilimsel olarak yaklaşmaya karar verdik: onu matematiksel olarak formüle edin, onu iyi bilinen bir ayrık optimizasyon problemine indirgeyin ve çözmek için mevcut etkili algoritmaları kullanın veya bu mevcut algoritmaları kullanın. temel olarak alın ve bunları çözülmekte olan pratik problemin özelliklerine göre değiştirin.

Kümelerle uğraştığımız problemin iş formülasyonundan açıkça çıktığı için, böyle bir problemi küme teorisi açısından formüle edeceğiz.

Let Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi – bir depodaki belirli bir ürünün geri kalan kısmının tüm partilerinden oluşan set. İzin vermek Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi – günlerin sabiti verilmiştir. İzin vermek Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi - alt kümedeki tüm parti çiftleri için tarih farkının sabit bir değeri aşmadığı bir parti alt kümesi Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi. Minimum ayrık alt küme sayısını bulmamız gerekiyor Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesiöyle ki tüm alt kümeler Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi birlikte ele alındığında çok şey verirdi Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi.

Başka bir deyişle, benzerlik kriterinin sabit tarafından belirlendiği benzer partilerin gruplarını veya kümelerini bulmamız gerekiyor. Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi. Bu görev bize iyi bilinen kümeleme problemini hatırlatıyor. Söz konusu problemin, kümeleme probleminden farklı olduğunu söylemek önemlidir; çünkü problemimiz, sabit tarafından belirlenen, küme elemanlarının benzerliği kriteri için kesin olarak tanımlanmış bir koşula sahiptir. Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesiancak kümeleme probleminde böyle bir durum yoktur. Kümeleme sorununun açıklaması ve bu soruna ilişkin bilgiler burada bulunabilir. burada.

Böylece problemi formüle etmeyi ve benzer formülasyona sahip klasik bir problem bulmayı başardık. Artık tekerleği yeniden icat etmek için değil, en iyi uygulamaları alıp uygulamak için sorunu çözmek için iyi bilinen algoritmaları dikkate almak gerekiyor. Kümeleme problemini çözmek için en popüler algoritmaları göz önünde bulundurduk: Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi-araç, Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi-bağlı bileşenleri tanımlama algoritması, minimum yayılan ağaç algoritması anlamına gelir. Bu tür algoritmaların bir açıklaması ve analizi bulunabilir. burada.

Sorunumuzu çözmek için kümeleme algoritmaları Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi-anlamına gelir ve Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi-küme sayısı hiçbir zaman önceden bilinmediğinden araçlar hiçbir şekilde uygulanamaz Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi ve bu tür algoritmalar sabit gün kısıtlamasını hesaba katmaz. Bu tür algoritmalar başlangıçta değerlendirme dışı bırakıldı.
Sorunumuzu çözmek için, bağlı bileşenleri belirlemeye yönelik algoritma ve minimum yayılan ağaç algoritması daha uygundur, ancak bunların çözülmekte olan soruna "birdenbire" uygulanamayacağı ve iyi bir çözüm elde edilemeyeceği ortaya çıktı. Bunu açıklamak için bu tür algoritmaların çalışma mantığını problemimize göre ele alalım.

Grafiği göz önünde bulundurun Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesiburada köşeler taraflar kümesidir Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesive köşeler arasındaki kenar Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi и Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi partiler arasındaki gün farkına eşit bir ağırlığa sahiptir Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi и Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi. Bağlı bileşenleri tanımlamaya yönelik algoritmada giriş parametresi belirtilir Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesiNerede Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesive grafikte Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi ağırlığın daha büyük olduğu tüm kenarlar kaldırılır Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi. Yalnızca en yakın nesne çiftleri bağlı kalır. Algoritmanın amacı böyle bir değeri seçmektir Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesigrafiğin birkaç bağlantılı bileşene "ayrıldığı", bu bileşenlere ait tarafların sabit tarafından belirlenen benzerlik kriterimizi karşılayacağı Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi. Ortaya çıkan bileşenler kümelerdir.

Minimum yayılan ağaç algoritması ilk olarak bir grafik üzerine kuruludur Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi minimum yayılan ağaç ve ardından grafik birkaç bağlantılı bileşene "ayrılana" kadar en yüksek ağırlığa sahip kenarları sırayla kaldırır; burada bu bileşenlere ait taraflar da benzerlik kriterimizi karşılayacaktır. Ortaya çıkan bileşenler kümeler olacaktır.

Söz konusu problemi çözmek için bu tür algoritmalar kullanıldığında, Şekil 3'teki gibi bir durum ortaya çıkabilir.

Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi
Şekil 3. Kümeleme algoritmalarının çözülmekte olan probleme uygulanması

Toplu iş günleri arasındaki farka ilişkin sabitimizin 20 gün olduğunu varsayalım. Grafik Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi Görsel algı kolaylığı açısından mekansal formda tasvir edilmiştir. Her iki algoritma da ayrı kümelere yerleştirilen partilerin birbiriyle birleştirilmesiyle kolayca geliştirilebilecek 3 kümeli bir çözüm üretti! Bu tür algoritmaların çözülmekte olan problemin özelliklerine uyacak şekilde değiştirilmesi gerektiği açıktır ve bunların saf haliyle problemimizin çözümüne uygulanması kötü sonuçlar verecektir.

Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi
Dolayısıyla, görevimiz için değiştirilmiş grafik algoritmaları için kod yazmaya ve kendi bisikletimizi (siluetlerinde zaten kare tekerleklerin ana hatlarını görebildiğimiz) yeniden keşfetmeye başlamadan önce, böyle bir soruna yine bilimsel olarak yaklaşmaya karar verdik: Bunu çözmek için mevcut algoritmaların değişiklik yapılmadan uygulanabileceği umuduyla, onu başka bir ayrık problem optimizasyonuna indirgemeye çalışın.

Benzer bir klasik problem için yapılan başka bir araştırma da başarılı oldu! Formülasyonu problemimizin formülasyonuyla 1'e 1 örtüşen ayrı bir optimizasyon problemi bulmayı başardık. Bu görev ortaya çıktı set kaplama problemi. Sorunun formülasyonunu spesifikasyonlarımıza göre sunalım.

Sonlu bir küme var Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi ve aile Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi her bir alt kümenin tüm taraf çiftleri için tarihlerdeki fark olacak şekilde, tüm ayrık taraf alt kümelerinin Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi aileden Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi sabitleri aşmaz Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi. Bir örtüye aile denir Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi unsurları ait olan en az güçten Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesiöyle ki kümelerin birleşimi Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi aileden Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi tüm tarafların setini vermeli Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi.

Bu sorunun ayrıntılı bir analizini burada bulabilirsiniz. burada и burada. Kaplama probleminin pratik uygulaması ve modifikasyonları için diğer seçenekler bulunabilir. burada.

Sorunu çözmek için algoritma

Çözülecek problemin matematiksel modeline karar verdik. Şimdi bunu çözmek için algoritmaya bakalım. Alt kümeler Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi aileden Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi aşağıdaki prosedürle kolayca bulunabilir.

  1. Grupları bir setten düzenleyin Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi tarihlerine göre azalan sırada.
  2. Minimum ve maksimum parti tarihlerini bulun.
  3. Her gün için Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi minimum tarihten maksimuma kadar tarihleri ​​farklı olan tüm partileri bulun Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi den fazla değil Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi (yani değer Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi Çift sayıyı almak daha iyidir).

Bir küme ailesi oluşturma prosedürünün mantığı Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi at Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi gün sayısı Şekil 4'te gösterilmektedir.

Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi
Şekil 4. Partilerin alt kümelerinin oluşumu

Bu prosedür herkes için gerekli değildir Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi diğer tüm partileri gözden geçirin ve tarihlerindeki veya mevcut değerdeki farkı kontrol edin Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi tarihi farklı olan bir parti bulana kadar sola veya sağa hareket edin Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi sabitin değerinin yarısından fazlası. Hem sağa hem de sola hareket ederken sonraki tüm öğeler bizim için ilginç olmayacak, çünkü dizideki öğeler başlangıçta sıralandığı için onlar için gün farkı yalnızca artacaktır. Bu yaklaşım, parti sayısı ve tarihlerinin dağılımı önemli ölçüde fazla olduğunda önemli ölçüde zaman tasarrufu sağlayacaktır.

Küme kaplama problemi Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi-zor, yani çözmek için hızlı (giriş verilerinin polinomuna eşit çalışma süresiyle) ve doğru bir algoritma olmadığı anlamına gelir. Bu nedenle, küme kapsama problemini çözmek için, elbette doğru olmayan ancak aşağıdaki avantajlara sahip olan hızlı açgözlü bir algoritma seçildi:

  • Küçük boyutlu problemler için (ki bizim durumumuz da tam olarak budur) optimuma oldukça yakın çözümler hesaplar. Sorunun boyutu arttıkça çözümün kalitesi bozulur, ancak yine de oldukça yavaş bir şekilde;
  • Uygulaması çok kolay;
  • Hızlı, çünkü çalışma süresi tahmini Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi.

Açgözlü algoritma, kümeleri aşağıdaki kurala göre seçer: her aşamada, henüz kapsanmayan maksimum sayıda öğeyi kapsayan bir küme seçilir. Algoritmanın ve sözde kodunun ayrıntılı bir açıklaması burada bulunabilir. burada.

Böyle bir açgözlü algoritmanın çözülmekte olan problemin test verileri üzerindeki doğruluğunun olasılıksal açgözlü algoritma, karınca kolonisi algoritması vb. gibi bilinen diğer algoritmalarla karşılaştırılması yapılmamıştır. Bu tür algoritmaları oluşturulan rastgele verilerle karşılaştırmanın sonuçları bulunabilir. işte.

Algoritmanın uygulanması ve uygulanması

Bu algoritma dilde uygulandı 1S ve "Kalıntı Sıkıştırma" adı verilen harici bir işleme dahil edildi. WMS-sistem. Algoritmayı dilde uygulamadık C ++ ve kodun hızı daha düşük olduğundan onu harici bir Yerel bileşenden kullanın; bu daha doğru olur C + + kez ve bazı örneklerde benzer kodun hızından onlarca kat daha hızlıdır. 1S. Dil üzerinde 1S Algoritma, geliştirme süresinden tasarruf etmek ve müşterinin üretim üssünde hata ayıklamayı kolaylaştırmak için uygulandı. Algoritmanın sonucu Şekil 5'te sunulmaktadır.

Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi
Şekil 5. Kalıntıları “sıkıştırmak” için işleme

Şekil 5, belirtilen depoda, depolama hücrelerindeki mevcut mal bakiyelerinin, mal partilerinin tarihlerinin birbirinden en fazla 30 gün farklı olmadığı kümelere bölündüğünü göstermektedir. Müşteri, raf ömrü yıllarla hesaplanan metal küresel vanaları depoda üretip sakladığından bu tür bir tarih farkı ihmal edilebilir. Bu tür işlemlerin şu anda üretimde sistematik olarak kullanıldığını ve operatörlerin WMS Parti kümelenmesinin kalitesinin teyit edilmesi.

Sonuçlar ve devam

Böyle pratik bir problemi çözerek edindiğimiz temel deneyim, matematik paradigmasını kullanmanın etkililiğinin doğrulanmasıdır. Sorun bildirimi Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi ünlü mat. modeli Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi ünlü algoritma Bir WMS sistemini uygularken ayrık matematik: mal partilerinin bir depoda kümelenmesi Sorunun özelliklerini dikkate alan algoritma. Ayrık optimizasyon 300 yılı aşkın bir süredir var ve bu süre zarfında insanlar birçok sorunu dikkate almayı ve bunları çözme konusunda çok fazla deneyim biriktirmeyi başardılar. Her şeyden önce, bu deneyime yönelmeniz ve ancak o zaman tekerleğinizi yeniden icat etmeye başlamanız daha tavsiye edilir.

Bir sonraki makalede, optimizasyon algoritmaları hakkındaki hikayeye devam edeceğiz ve en ilginç ve çok daha karmaşık olana bakacağız: toplu kümeleme algoritmasından alınan verileri girdi olarak kullanan, hücrelerdeki artıkları en iyi şekilde "sıkıştırmak" için bir algoritma.

Makaleyi hazırladım
Roman Shangin, proje departmanı programcısı,
İlk BIT şirketi Chelyabinsk

Kaynak: habr.com

Yorum ekle