Masalah penugasan selama beberapa hari

10

Saya memiliki masalah yang dapat direduksi menjadi masalah penugasan. (Dalam pertanyaan sebelumnya saya menemukan cara melakukannya.)

Yang berarti kita memiliki seperangkat agen dan serangkaian tugas T serta fungsi biaya c ( i , j ) . Kita perlu menemukan tugas sehingga total biaya minimal.ATc(i,j)

The algoritma hungarian dapat menemukan solusi yang optimal dalam setidaknya . Bagi saya itu terdengar bagus.HAI(n4)

Masalah baru saya adalah: Ada beberapa hari tertentu. Saya harus menyelesaikan masalah penugasan untuk setiap hari sehingga setiap tugas dilakukan setiap hari dan tidak ada agen yang melakukan tugas yang sama dua kali .

Apa yang saya coba: Kita dapat menjalankan algoritma hungaria secara terpisah untuk setiap hari dan membatasi jumlah kombinasi yang mungkin berdasarkan hasil dari hari sebelumnya. Tetapi ini akan membawa kita ke masalah di beberapa hari kemudian, di mana kemungkinan besar tidak mungkin untuk menemukan solusi yang layak.

Gagasan lain adalah bagaimana mengintegrasikan pencarian lokal untuk mengubah keputusan yang dibuat pada hari sebelumnya. Tapi saya pikir kita tidak bisa mengandalkan ini.

Contoh masalah yang harus saya hadapi adalah sekitar . Matriks biaya C ( i , j ) akan memiliki banyak nilai yang sama (Misalnya kebanyakan 1 atau tak terbatas, hanya sekitar 2 atau 3). Jadi selama algoritma hungaria ada banyak ruang untuk membuat solusi optimal yang berbeda untuk satu hari.|SEBUAH|=|T|=500C(saya,j)

Saya akan senang mendengar beberapa ide atau menyarankan cara menemukan solusi yang baik untuk masalah ini. Terima kasih sebelumnya.

Patrick Schmidt
sumber
1
Ini pertanyaan yang bagus! Saya sarankan menggunakan aliran biaya minimum, teorema pernikahan Hall, dan pencocokan bipartit maksimum.
Peter Shor

Jawaban:

6

Ada cara untuk ini dalam waktu polinomial. Saya akan membuat sketsa algoritma (dalam urutan terbalik ... lakukan langkah 2 pertama dan langkah 1 detik).

  1. jika kita dapat menemukan satu set pasangan agen-tugas ( i , j ) sedemikian rupa sehingga setiap tugas tepat dalam pasangan k , masing-masing agen tepat dalam pasangan k , dan tidak ada pasangan yang muncul lebih dari sekali, maka kita dapat menemukan tugas k yang bersama-sama menutupi ini n k pasang agen-tugas. Kami melakukan ini dengan berulang kali menggunakan algoritma pencocokan bipartit maksimum untuk menemukan pencocokan sempurna dalam grafik bipartit yang sesuai, dan menghapus tugas itu dari grafik. Teorema pernikahan Hall menjamin kita bisa melakukan ini.nk(saya,j)kkknk

  2. nkstk0k0sayaj1c(saya,j)01(saya,j)1

Ada banyak algoritma yang dapat menyelesaikan aliran biaya minimum ; ini adalah kasus khusus pemrograman linier. Untuk masalah ukuran Anda, algoritme yang saya buat sketsa seharusnya tidak hanya berupa waktu polinomial, tetapi juga praktis.

Peter Shor
sumber
Satu pertanyaan terakhir: Algoritma aliran min-biaya pada langkah 2 (saya memilih pembatalan siklus sebagai permulaan) memberikan solusi optimal. Algoritma pencocokan maksimum pada langkah 1 melakukan itu. Apakah ini berarti seluruh solusi optimal? Karena, saya duga masalahnya adalah NP-Complete.
Patrick Schmidt
1
Seluruh solusi optimal. Ini akan menjadi pertanyaan yang bagus untuk diberikan dalam kursus optimisasi kombinatorial, karena agak mengejutkan Anda bisa melakukannya.
Peter Shor