Saya sepertinya tidak dapat menemukan literatur tentang algoritma yang dapat digunakan untuk memecahkan masalah penugasan umum (GAP) banyak-ke-banyak, yaitu model di mana tidak hanya dapat lebih banyak tugas yang ditugaskan ke satu agen, tetapi beberapa agen juga dapat ditugaskan untuk satu tugas (AP satu-ke-satu dan satu-ke-banyak dibahas dalam makalah oleh Pentico). Saya tahu hampir tidak ada masalah penugasan, tetapi saya menemukan masalah seperti ini selama penelitian saya dan ingin tahu lebih banyak tentang bagaimana menyelesaikannya. Mungkinkah GAP banyak-ke-banyak dikenal dengan nama lain, atau adakah alasan berbeda mengapa begitu sedikit literatur tentang itu dapat ditemukan?
Pentico, D. Masalah Penugasan: Survei Ulang Tahun Emas . European Journal Of Operational Research (2007); 176 (2): 774-793.
sumber
Jawaban:
Masalah Anda tampaknya bukan, "bahwa jumlah" agen "harus menyediakan persis energi terpisah atau tidak sama sekali untuk setiap permintaan tunggal ...", kan? Atau Anda tidak mengerti saya. Jadi saya akan mencoba menggambarkan masalah saya dengan lebih baik, juga karena saya menemukan solusi.
Dalam masalah saya, saya memiliki satu set agen di mana masing-masing memiliki anggaran sumber daya tertentu, yang dapat berbagi biaya tugas, yang harus "dieksekusi" 1 kali atau tidak (banyak-ke-banyak-penugasan tanpa perlu "jalankan" setiap tugas). Ini berarti: jumlah solusi parsial agen untuk tugas x harus kurang atau sama dengan biaya tugas x. Tujuannya adalah untuk menemukan serangkaian tugas dengan nilai paling tinggi yang dapat dibayar agen.
Saya bekerja dengan perangkat lunak gams jadi saya jelaskan dengan gaya gams: atur agen, t tugas parameter biaya (t), nilai (t) sumber daya parameter (a)
variabel positif y (a, t) (non-int), bagian dari agen a untuk biaya tugas t tujuan:
Ketika saya menulis, saya punya solusi tetapi tidak tahu bagaimana memisahkan solusi tugas parsial. Tetapi sekarang saya mengetahui bahwa saya dapat membangun batasan dengan a
variabel biner
z(t)
taskcost_bin_constraint z(t) =e= sum(a, y(a,t)) / cost(t);
sum(a, y(a,t)) / cost(t)
dalam rumusan persamaan adalah sesuatu antara 0 dan 1 dan dengan batasan ini,z
adalah 0 untuk semua kurang dari 1 dan 1 untuk 1. dengantaskcost_bin_constraint
tujuan ini adalah:Saya bertanya-tanya tetapi ini berhasil dan memberi saya solusi yang lebih baik di bawah kendala, untuk membangun tugas penuh atau tidak.
Mungkin Anda juga bisa menambahkan batasan seperti itu? Kendala untuk memenuhi permintaan dengan tepat, dinyatakan dalam ekspresi dengan nilai antara 0 dan 1.
sumber
Ada algoritma annealing deterministik yang memecahkan masalah penugasan satu-ke-satu atau setara dengan masalah partisi matriks diad.
Namun alih-alih menggunakan nilai integer [0, 1] seseorang dapat menggunakan nilai fraksional (sehingga algoritme tetap sama) atau bahkan memperluasnya untuk menangani lebih dari satu penugasan (dengan menambahkan loop dalam dan pada dasarnya matriks menjadi array hiper-dimensional. atau tensor)
Makalahnya ada di sini: http://www.researchgate.net/publication/2382666_Pairwise_Data_Clustering_by_Deterministic_Annealing/file/d912f50c75945d835b.pdf
sumber