Çoktan çoğa genelleştirilmiş atama problemi için algoritmalar


20

Çoktan çoğa genelleştirilmiş atama problemini (GAP) çözmek için kullanılabilecek algoritmalarla ilgili herhangi bir literatür bulamıyorum, yani sadece bir ajana daha fazla görev atanabilecek modeller değil, birden fazla ajan da bir göreve atanmış (bire bir ve bire çok AP'ler Pentico tarafından bir makalede tartışılmıştır). Ben ödev problemlerinin yanında biliyorum, ama araştırmam sırasında böyle bir problemle karşılaştım ve bunları nasıl çözeceğimi öğrenmek istiyorum. Böyle bir çoktan çoğa GAP'ın başka bir isim altında bilinmesi mümkün mü, yoksa bu kadar az literatür bulunmasının farklı bir nedeni var mı?

Pentico, D. Atama Sorunları: Altın Yıldönümü Araştırması . Avrupa Yöneylem Araştırması Dergisi (2007); 176 (2): 774-793'te tarif edilmektedir.


1
Merhaba GerritJan. Scicomp'a Hoşgeldiniz! :) Genel ödev problemi için lagrangian buluşsal yöntemine aşina mısınız? sciencedirect.com/science/article/pii/S0898122110002609 veya irma-international.org/viewtitle/58969 veya crcnetbase.com/doi/abs/10.1201/9781420010749.ch48 ?
Paul

1
Bana öyle geliyor ki, bir görevin bölümlerini birden çok aracıya atama durumu, en azından maliyetlerin doğrusal olarak dağıtıldığı durumlarda, bir göreve birden çok alt görevmiş gibi davranılarak modellenebilir. Daha fazla ayrıntı olmadan, sorunlarınızın genel atama sorunlarından daha "genel" olabileceğini bilmek zordur. Wikipeida makale konuyla ilgili referansların bir çift bazı iyi fuar ve bağlantılar bulunmaktadır.
hardmath

Teşekkürler, @ Paul. Eğitimsiz gözüm için oldukça karmaşık görünseler de makalelere bakacağım. Sonra tekrar, sorunun karmaşık olduğundan şüpheleniyorum ve muhtemelen biraz basitleştirmek zorunda kalacağım. benim sorunum temelde bir ağdaki enerjiyi dağıtmaktır: arz ve talep düğümleri, aralarındaki (ağırlıklı) bağlantılar kullanılarak, en uygun şekilde, tüm talebi karşılamak için minimum arz kullanımı ile eşleştirilmelidir. Tabii ki, bağlantılar üzerindeki maksimum kapasite gibi ek kısıtlamalar kullanılabilir.
Gerrit Ocak

1
@GerritJan: Bu np zor bir sorundur, bu yüzden bir yaklaşım şeması gerektirir. İyi bir yaklaşıma ihtiyacınız varsa, algoritmanızın biraz karmaşık olması gerekebilir.
Paul

2
@GerritJan: Kesin 'optimal' çözümün ancak olası tüm yapılandırmalar kontrol edilerek garanti edilebileceği anlamına gelir. Bu olası çözümler (en azından) zaman içinde katlanarak büyür ve nispeten mütevazı boyut problemlerinin bile makul bir sürede tam olarak çözülmesini imkansız hale getirir.
Paul

Yanıtlar:


1

Sorununuz, "ajanların" toplamının her bir talep için tam olarak ayrı bir enerji kısmı veya hiçbir şey sağlaması gerektiği gibi görünmüyor ... ", değil mi? Yoksa beni anlamadın. Bu yüzden sorunumu daha iyi açıklamaya çalışacağım, çünkü bir çözüm buldum.

Benim sorunumda, her birinin belirli kaynakların bir bütçesine sahip olduğu, 1 kez "yürütülmesi" gerekip gerekmediği görevlerin maliyetini paylaşabilecek bir dizi ajanım var (gerek kalmadan çoktan çoğa atama) her görevi "yürüt". Bunun anlamı: Görev x için ajanların kısmi çözümlerinin toplamı, görev x'in maliyetine eşit veya daha az olmalıdır. Amaç, temsilcilerin ödeyebileceği en değerli iş kümesini bulmaktır.

Gams yazılımı ile çalışıyorum, bu yüzden gams tarzında açıklarım: bir ajan, t görev parametre maliyeti (t), değer (t) parametre kaynakları (a)

pozitif değişken y (a, t) (int olmayan), görev a'nın maliyeti için madde a'nın bir amacı:

maxvalue =e= sum((a,t), value(t) * y(a,t) / cost(t) );
agentresource_max_constraint(a).. sum(t, y(a,t)) =l= resources(a);
taskcost_max_constraint.. sum(a, y(a,t)) =l= cost(t);

Yazdığım gibi, bir çözümüm vardı ama kısmi görev çözümlerini nasıl ayıracağımı bilmiyordum. Ama şimdi öğrendim ki bir

ikili değişken z(t)

taskcost_bin_constraint z(t) =e= sum(a, y(a,t)) / cost(t);

sum(a, y(a,t)) / cost(t)denklem formülasyonunda 0 ile 1 arasında bir şeydir ve bu kısıtlama zile 1 için 1 ve 1'den küçük olanlar için 0'dır. Bu taskcost_bin_constraintamaçla:

maxvalue =e= sum(t, value(t) * z(t));

Merak ediyordum ama bu işe yarıyor ve bana tam bir görev inşa etmek ya da etmemek için kısıtlama altında daha iyi çözümler sunuyor.

Belki de böyle bir kısıtlama ekleyebilirsiniz? 0 ile 1 arasında bir değere sahip bir ifadede ifade edilen talepleri tam olarak yerine getirmek için bir kısıtlama.


1

Bire bir atama problemini veya eşdeğer olarak ikili matris bölümleme problemini çözen deterministik bir tavlama algoritması vardır.

Bununla birlikte, tamsayı [0, 1] değerlerini kullanmak yerine, kesirli değerleri kullanabilir (böylece algoritma aynı kalır) veya hatta birden fazla atamayı işlemek için genişletebilir (bir iç döngü ekleyerek ve büyük olasılıkla matris hiper boyutlu bir dizi haline gelir) veya tensör)

Makale burada: http://www.researchgate.net/publication/2382666_Pairwise_Data_Clustering_by_Deterministic_Annealing/file/d912f50c75945d835b.pdf

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.