[]

Kapasite Algoritması / Optimizasyonu / Ataması / Otomasyonu

Arkadaşlar selam,

Başıma iş aldım. Bir problem bulup, onu bilimsel metotlarla çözmek istedim. Bulduğum problem, üretim planlaması. Birçok farklı sektörde kullanılabilir.

Şöyle ki;
Elimizde türlere ayrılmış, son tarihi olan işler var ve bu türlerde üretim yapabilecek kapasiteler var.
hizliresim.com

Bunları tarih ve üretici kısıtlarına göre minimum gecikme ve maksimum doluluk yaparak üretim sırasına almak istiyorum. Ayrıca çok erken de başlamamalı.
hizliresim.com

Deneyip içinden çıkamadığım yollar;
Doğrusal programlama
Tam sayı programlama
Job shop scheduling
Google ortools kütüphanesi. developers.google.com
Greedy Algoritması

Sizlerle bi beyin fırtınası yapmak istedim. Bu problem nasıl çözülür?
Python kullanarak işlem yapmaya çalışıyorum. Aslında çözüm dilinden önce mantığını, fonksiyonlarını anlamaya çalışıyorum. Her türlü görüşünüzü duymak isterim. Üzerine konuşmak isteyen ve beraber yeni şeyler öğrenelim diyenler varsa hiç çekinmesin :)

 
Burada 2 tane kıstasınız olduğu için kolay bir problem gibi görünmüyor. Yani hem gecikmeyi azaltmak isterken hem de kapasiteyi maksimize etmek istiyorsunuz. Bunlardan sadece biri olsaydı, greedy veya linear programmingle çok rahat çözülürdü. Bu şekilde komplike geldi gözüme :)


  • ciagra  (07.03.21 15:31:57) 
@ciagra aslında daha komplike hale gelebilir. Örneğin; iş10 şu tarihte başlamalı ya da c üreticisinde yapılmalı gibi ama bir yerden çözeme başladıktan sonra bunları eklemek vardı aklımda.

Ancak biliyoruz ki bir çözüm kümesi var. Yani tanımsız değil. Yeni bilgiler öğretmeye açık. Bu nedenle problem daha çekici hale geliyor.
  • bagcivan  (07.03.21 16:05:06) 
Isi parcalayip ele almaya calis. Misal burada elindeki her uretici icin ayri bir bir planlama yapmaya calisabilirsin. Once islerini turlerine gore 4 tabloya bol. Her bir tabloyu deadline tarihlerine gore kucukten buyuge sirala. Sonrasi da greedy algorithm ile isleri ureticilere atama olayi.
Asagi yukari su asagidaki adimlari takip edeceksin greedy algorithm icin

1) x turundeki en yakin deadline ne zaman? (Onceligin bu is olacak)
2) x turunde uretim yapan ureticilerin kac tanesini es zamanli bu ise atamam gerek?
3) eger hepsini atadiysan kac gunde bitirirsin
4) is bittigindeki yeni ise hemen baslaman gerekir mi? eger gerekirse, o zaman adim bire don.

Mesela tablona bakildiginda a turu icin onceligin deadlinei bugun olan bir is. Talep ettigi kapasite 2761 ancak senin tum ureticilerinle gunluk saglayabildigin kapasite 2200. Demek ki bu is 2 gunde bitecek. ilk gun 2200 urettikten sonra geriye kalan 561 kapasite icin de doldurma olayi sana kalmis. Istiyorsan ikinci gun o 561 kapasiteyi herhangi bir ureticiye verirsin. Ya da hepsi is yapsin diyorsan da 3 parcaya bolup her ureticiye 187 birim is atarsin.

Eger saat hesabi da onemliyse kalan isi zaten direkt her uretici arasinda bolusturmek sana daha fazla avantaj saglar.
  • j r r tolkien hayrani  (07.03.21 17:05:36) 
@j r r tolkien hayrani önerilerin için teşekkür ederim. yapılacak işi birine anlatmaya çalışmak bile sorunu daha iyi anlamama yardımcı oluyor. parçalayıp ele almanın üzerinde çalışacağım. dediğin gibi işleri böldüğümüzde her tür için algoritma ayrı ayrı çalışabilir. fakat iş bölünmüyor yani bir işi bir üretici yapacak.

Örneğin 12 tane a türünde iş var ve bu işi yapabilecek 3 üretici var. Bu durumda her bir üreticinin günlük kapasitesi farklı olduğu için, toplam üretim süreleri de değişkenlik gösterecek. Birden fazla üreticiye greedy algoritması ile nasıl optimum bir dağılım yapabiliriz? Bunu biraz araştırayım.
  • bagcivan  (07.03.21 17:29:26) 
Peki burda amaç teorik bir çözüm geliştirmek mi? Yoksa pratik bir soruna çözüm üretmek mi? Eğer pratik bir soruna çözüm geliştirmek istiyorsan, gördüğüm kadarıyla input sayın fazla olmadığı için klasik brute-force yöntemi de deneyebilirsin.


  • ciagra  (07.03.21 23:59:26) 
@ciagra pratik bir soruna çözüm üretmek. input sayısı fazla olabilir ama onu da deneyeceğim


  • bagcivan  (20.03.21 16:06:13) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.