Karmaşık bir çalışma programının modellenmesi


9

Göstermeye ve otomatikleştirmeye çalıştığım gerçek bir dünya sorunum var. Basitleştirdim ve aşağıdakilere kadar soyutladım:

  • N iş yeri var (P1, P2, ..., Pn).
  • Her yerde, Pn'in bir anahtarı var, Kn.
  • M İşçi var (W1, W2, ..., Wm).
  • Pn'de çalışmak için bir işçinin Kn'a sahip olması gerekir.
  • Her anahtar bir işçi tarafından tutulabilir veya Exchange, E'de bırakılabilir.
  • Bir işçi, talep edilmemiş bazı anahtarları almak veya başkalarının kullanması için bazı anahtarları bırakmak için istediği zaman Exchange'e seyahat edebilir.

  • Şimdi, katı bir sırayla tamamlanması gereken ekzojen bir çalışma programı var. Örneğin:

    • 2016-04-21 W1, P6'da çalışmalı
    • 2016-04-21 W2, P3'te çalışmalıdır
    • ** anahtar değişimi gerekli **
    • 2016-04-22 W3, P3'te çalışmalıdır
    • 2016-04-22 W2 P6'da çalışmalı
  • Herhangi bir sayıda işçi, aynı gün hiçbir zaman olmamasına rağmen, programlarının bir noktasında Pn'de çalışmak zorunda kalabilir

Biliyoruz:

  • İşçilerin veya E'nin tüm tuşlarının başlangıç ​​konumu
  • Her işçinin yerine getirmesi gereken gelecekteki iş emirleri

Bu yüzden, tüm bu durumu modellemek için mücadele ediyorum. Veri yapısı ve algoritmaları inceleyebilir ve her bir çalışan için değişim gezilerini optimize etmeye başlayabilir miyim?

En aza indirmek istediğim şey, E'ye yapılan toplam seyahat sayısıdır. İkincil bir hedef, hiçbir işçinin orantısız sayıda gezi yapmamasını sağlamak olacaktır.

Şimdiden teşekkürler!!


2
İşçi başına E'ye yapılan ortalama yolculuk sayısı = "toplam yolculuk sayısı" / m. Eğer m sabitse, iki hedefiniz de aynı hedeftir. Daha ilginç: Sanırım her işçi aynı anda birden fazla anahtar taşıyabilir mi?
Doc Brown

Evet, işçiler herhangi bir sayıda anahtar taşıyabilir. "Ortalama" konusunda kendimi kötü ifade ettiğimi düşünüyorum. Adalet hakkında daha fazla düşünüyordum, hiçbir çalışanın orantısız sayıda geziyi tamamlaması gerekmiyordu, bu yüzden düşük bir varyans. (değiştirilecek soru)
Gareth Lloyd

İşçiler açıkça anahtarlara güvendiklerinden ve anahtarları gece boyunca ve gerektiğinde - bir değişim gerekmediği sürece - tutabilecekleri için, neden her işçi için kalıcı olarak tuttukları bir anahtar seti yapmıyorsunuz? Alternatif olarak, belirli bir süre boyunca, örneğin bir hafta boyunca gittikleri tüm yerler için her işçi için bir dizi anahtar oluşturun. Anahtarlar, her çalışan için bir hafta ayarlaması yapmak üzere gerektiği gibi çoğaltılır. Tüm çalışanlar haftada bir kez anahtar değişimi yapıyor.
radarbob

Borsaya gitmenin bir maliyeti (para veya zaman) var mı?
Dan Pichelman

Evet, borsaya daha fazla yolculuk yapmak daha kötü bir sonuçtur.
Gareth Lloyd

Yanıtlar:


1

Soru bir kilit noktada biraz belirsiz: hangi unsurları çözmeye çalışıyoruz. Kaynakların temsil edildiği sırayı optimize etmeye mi bakıyoruz? Değişim gezilerini en aza indirmek? İş emri verimini en üst düzeye çıkarmak mı?

Bunu göz önünde bulundurarak, bunların herhangi bir karışımını yapabileceğimizi ve cevabı oldukça yüksek tutabileceğimizi varsayacağım.

Aklıma gelen ilk şey, bunun çözmeye çalıştığı birbiriyle ilişkili sorunların çoğunlukla bağımlılık yönetimi etrafında toplanmasıdır. İşçiler, anahtarlar ve yerler, iş işlerini tamamlamak için çözülmesi gereken bağımlılıklar olarak düşünülebilir.

Bunu bir sonraki seviyeye taşıyarak, topolojik sınıflandırmanın bir uyarlamasına bakacağım ( https://en.wikipedia.org/wiki/Topological_sorting ). Problem alanını büyük bir grafik olarak modelleyin (modern grafik veritabanları bu analizlerin bazıları için de iyi bir ortam olabilir) ve daha sonra problem alanının farklı yönlerini çözmek için çeşitli topolojik türler kullanın.

Hafif bir teğet üzerinde, bu gerçekten eğlenceli bir proje gibi geliyor. Bugün, kıskanıyorum, efendim.


Benim github içinde grafikler bir göz atın github.com/MatheusArleson/Graphs
linuxunil

Renklendirme algoritması bu durumda yardımcı olur mu? en.m.wikipedia.org/wiki/Graph_coloring
linuxunil
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.