Depo verimliliğini artırmak için yeniden sıralama düzenleri

6 Cevap php

Ben emir benim iş nasıl doldurulur optimize etmek için çalışıyorum. Şu anda, bir çalışanın sadece son 16 emir (bazen 14 veya 18) çekiyor ve onları doldurur.

Ben yerine sadece onlara emreder ki, siparişlerin son liste giderek yüzden her parti benzeri yerlerde düzen var ki bunu değiştirmek için çalışıyorum. Ama liste sıralama hakkında gitmek nasıl anlamaya olamaz. Aşağıda Ben ne yapmak istediğinizi basitleştirilmiş bir örnektir.

Örnek Sipariş listesi:

  • sipariş 1: yer Q konumu E 2 ürünleri, 5 ürün
  • konum B konumu Z, 20 1: 2 sipariş
  • konumu N konumu Y, 1 1: 3 sipariş
  • yer B 3: sipariş 4
  • sipariş 5: konum E konumu A, 10, 1
  • Yer Q yer B, 5 konumu A, 1 1: 6, sipariş

Listeyi sıralama sonra, ben, birbirlerinin yanında bu gibi 1 ve 6 yanyana, vb bir şey sipariş 2 ve 4 istiyorum:

  • sipariş 1: yer Q konumu E 2 ürünleri, 5 ürün
  • Yer Q yer B, 5 konumu A, 1 1: 6, sipariş
  • konum B konumu Z, 20 1: 2 sipariş
  • yer B 3: sipariş 4
  • konumu N konumu Y, 1 1: 3 sipariş
  • sipariş 5: konum E konumu A, 10, 1

Ben PHP kullanıyorum, ancak herhangi bir dilde herhangi bir örnek veya ipuçları çok yardımsever olacaktır.

Edit:

Beni daha ayrıntılı olarak açıklamaya çalışalım. Çalışanlar siparişlerin toplu kapmak ve onlar bir barkod tarayıcı ile bir PDA kullanarak siparişlerini gidin. Bizim depo böylece konumu A ilk kurmak, B böylece gelecek ve olduğunu. Hiç de dahil hiçbir yararlar vardır. Genellikle, çünkü ortalama siparişlerin toplu doldurmak için tüm depo yürümek zorunda, 16 sipariş yerlerde tüm ürünleri olacak.

Ben emir düzenin ürünlerin yere sipariş tarihinden itibaren bir sonraki dolu edilmektedir hangi sıralamayı değiştirirseniz, daha sonra siparişlerin toplu sadece yerleri AG olabilir ve alışkanlık bütün depo yürümek gerekiyor.

Başka Edit
(ben gerçekten iyi ayrıntılarını yayınlamaktan daha iyi almak gerekir)

Burada mevcut bir süreçtir:

  1. Seçici üzerinde 16 kova ile bir sepeti kapmak
  2. Seçici (tarayıcı ve wifi ile) bir PDA ile bir web sayfasının üzerine kova gelen 16 benzersiz barkodları tarar ve bir 'toplama bilet' oluşturulur
  3. Ürünleri (seçici sadece bir kez herhangi bir ürün tarafından yürür) Konuma göre sıralanır
  4. Özel web sayfası sonra çalışan ürün ve kaç kapmak söyler ve onlar ürüne barkodunu tarayın
  5. Sonra ürünü yerleştirmek için hangi kepçe diyor ve onlar ürünü koyarak kovanın barkodunu tarayın
  6. Tüm ürünler toplandıktan sonra, Picker (evet, eww ben dönüştürülen alacak. Someday biliyorum) bir VB programı kovalar birinde nakliye istasyonu ve taramaları gider
  7. Makbuzlar bu 'toplama bilet' tüm siparişler için yazdırılır ve doğru kovaya yerleştirilir
  8. Her kova boşalttı ve yukarı paketlenir
  9. Seçici şimdi nakliyeci yerlerde bir ölçekte düzen paketlenmiş ve bir program içine alınması üzerine barkodu tarar.
  10. Doğru pul otomatik olarak yazdırılır ve izleme bilgileri içeren bir e-posta gönderilir ve müşteri gönderildiği gibi sipariş işaretlenmiş
  11. Gönderici, sayfada pul etiket koyar o kadar mühürler ve bitmiş paket yığını koyar
  12. Günün sonunda, USPS ve UPS sevkiyat pick up.

Ben de bizim çok sayıda ürün / en küçük ve 16 sipariş 'bilet toplama' 500-800 bireysel parçaları olabilir olduğuna dikkat etmelidir. Şu anda, biz stok yaklaşık 28.000 farklı ürün var.

6 Cevap

Ben sorusu üzerine yorumlarda yazdığı gibi, ben sadece sorunun da yanlış şekilde arıyoruz düşünüyorum.

Sizin açıklamayı onlar siparişleri bitirmek / "inşa" zorunda önce hepsi yerlere gidebilirsiniz anlamına gelir. Sorun şu anda, işler emir açısından gruplandırılmış olmasıdır, böylece onlar daha sonra, vb Sipariş # 2 bakmaya başlar, bu gerekli tüm yerlere giderek Sipariş # 1 doldurmaya çalışın

Bunun yerine, sen yerlerde açısından onlara toplu bilgi vermek gerekir, ve her birinde almak için ne gerekir. Sonra onlar sadece herhangi bir sırayla, yerlerin hepsini gidin ve her birinden ihtiyacınız olan her şeyi almak. Hepsi yerlere oldum, onlar listede geçmesi ve şeyler onların büyük kazık siparişlerini.

Ben burada bazı yanlış varsayımlar yaptık ve ben farklı bir yaklaşım ile gelip çalışacağım varsa bana bildirin.


Sadece deneyin ve farkı temizlemek için, burada her yöntemde çalışanın hareket (farklı siparişleri yerlere gitti çünkü ilk iki, kesin değil, ben sadece muhtemelen olur bir çalışan olarak, size listelenen tam sırasını takip .)

Original sort by date (12 moves):

E > Q > Z > B > Y > N > B > A > E > A > B > Q

Your re-sorted version (10 moves):

E > Q > A > B > Z > B > Y > N > A > E

By aggregating by location (7 moves):

A > B > E > N > Q > Y > Z

Ayrıca ben bütün yerleri (yani 1 bir maliyet A noktasından B noktasına gelmiştir hareketli) önceki, eşit uzaklıkta olduğunu varsayalım, farkı stres ve her harf için bir tane var buna. Ayrıca hem başlangıç ​​ve konumu 0 sona istediğiniz varsayılarak, sahip:

Original sort by date: amount of movement = 138
Your re-sorted version: amount of movement = 138 (that's kind of surprising)
By aggregating by location: amount of movement = 52

Ben burada en iyi çözüm toplama ve paketleme aşamasını ayırmak olacağını düşünüyorum.

İşte yerimden nasıl çalışır

  1. Batch of orders is allocated (generally based on delivery method and/or website order is from)
  2. Picker gets assigned, pick slip prints, containing list of products and quantities (not specific to order)
  3. Picker goes and picks, brings back to station.
  4. Items are scanned on PC, going through "checkout" process. This makes sure that the picker has picked everything correctly.
  5. Faturalar yazdırılır
  6. Batch goes to packing, each invoice is scanned, followed by the items for the order, packed, dropped in shipping bin
  7. Emir yoluyla Döngüsü
  8. Complete batch, emails/SMS are sent to customers saying their order is being dispatched
  9. Royal Mail/Other shipping company come and take away the orders

Biz bu her aşamada onay espescially, oldukça iyi çalışıyor bulabilirsiniz.

Şu anda PHP şeyi yeniden uygulanması konum, ve bu bizim için oldukça lanetlemek iyi çalışıyor.

Benim tavsiyem, iş akışı yeniden düşünmek olurdu

Soru kendisini çelişiyor gibi görünüyor - ordering siparişlerin ile düzenleme fırsatlar önce ilk bölümünü, oysa doğru batch siparişlerin bir kullanıcıya vermek için alma konusunda düzenleme konuşuyor. Ben düzenlemek daha doğru olduğunu varsayalım, ve sipariş daha harmanlanmasından görüşmek için gidiyorum.

Bu böyle, en kötü ihtimalle, çalışan (AZ, varsayarak kulüpler) tüm yerleri yürümek gerekiyor sesler, daha sonra siparişlerin bir sonraki toplu başlamak için A'ya geri dönmek. [A, Y, B, G, Y, Z]: Bu varsayım göz önüne alındığında, sadece maksimum yer Z. başka deyişle, bu gibi iki grup halinde gruplandırma edildi altı emir, olsaydı azdır toplu oluşturmak için çalışıyoruz görünüyor , sen [ABG] bunları bölmek ve [YYZ] olur. Gibi, ben algoritma oldukça basit olacağını düşünüyorum:

  1. Her sipariş üzerinden çalıştırmak ve maksimum mesafe hesaplamak.
  2. Maksimum konuma göre sırala emir.
  3. Bu sıralamaya dayalı toplu dönün.

(A, B), (A, Y), (F, G), (E, P): Örneğin, biz iki toplu yapmak istiyorum dört emir olduğunu varsayalım. Daha sonra [B, Y, G, P] olarak maksimum mesafe öğeleri hesaplamak olacaktır. Sıralama sonra, [B, G, P, Y] ile sonuna kadar. Ve böylece ilk parti # 1 ve # 3 ihtiva eder, ve ikinci # 2 içerir ve # 4 olacaktır. Bir Y içeren sipariş zaten Y A dan tüm yol gitmek zorunda olacak, bu yüzden o da bir bir öğe gerektirir hiç fark etmez; ancak birlikte 1. ve 3. tutarak, çalışanların biri çok daha az yürür.

usort kullanarak, özel sizin sıralama yöntemini tanımlayabilirsiniz. Dizi (liste) dayalı, sen elemanları karşılaştırabilirsiniz ve sadece anahtar veya değerleri ile sınırlı olmaksızın, istediğiniz en iyi sırayla bu diziyi koymak, böyle. Dizinin kendisi nesneleri kullanmak ve sipariş ne olması gerektiğini belirleyebilirsiniz.

Bu karmaşık bir sorundur, seyyar satıcı gibi geliyor.

What you can do is:
Create the list in all possible orders.
Calculate a score for each list based on how many connections there are between each row.

For example: if order2 is followed by order6 the score would be 1, because 1 location(B) is overlapping. if the next order is order3 the score would be increased with 0, because neither Y or N is in order6.

En yüksek skor ile liste optimum sırada bulunuyor.

For 18 elements in the list there are 18! = 6402373710000000 possible ways to order the list. So I would create 10 a 20 lists in random order and pick the one with the best score.

Burada odak eksik olabilir: vs kullanmak ne programlama dili, PDA / tarayıcı son kullanıcıların ne tür kullanmak gibi pek çok ayrıntı

Tüm ihtiyacınız bir şey var: a transitive comparison (<) operator iki unsurun (geçişli anlamı ise A

Bu bir şey odaklanmak ve gerekirse ihtiyaçlarını tartışmak için geri müşteriye gidin. Eğer operatörü tanımlayan < çok karmaşık, büyük ihtimalle müşteri zaten çözüm memnun olmayacaktır vardır.