Ich habe eine Reihe von Agenten und eine Reihe von n Aufgaben, und ich muss jeden Agenten genau einer Aufgabe zuordnen, damit die Kosten minimiert werden. Einige Agenten sind mit einigen Aufgaben nicht kompatibel.
Ich habe eine Implementierung des ungarischen Algorithmus, deren Lösung für meine Matrix ungefähr eine Minute dauert . Für verbotene Aufgaben setze ich die Kosten auf ∞ . ( In meinem Problem gibt es immer eine praktikable Lösung).
Ich habe es auch als Binärprogramm in CPLEX eingerichtet, was ungefähr 9 Sekunden dauert, um das gleiche Problem zu lösen. Das BIP-Modell schließt verbotene Zuweisungen vollständig aus, indem diese Variablen weggelassen werden.
Ich habe noch nicht untersucht, wie ich es als Netzwerkmodell in CPLEX einrichten kann, aber das wird wahrscheinlich mein nächster Schritt sein. Die Kommunikation mit CPLEX verursacht jedoch Leistungskosten. Ich bin daher sicher, dass ein dedizierter Algorithmus eine bessere Leistung erzielen sollte.
Dieses zweigliedrige Übereinstimmungsproblem ist ein Kernel innerhalb eines anderen iterativen Suchalgorithmus, daher muss es so schnell wie möglich ausgeführt werden .
Gibt es Algorithmen, die ich implementieren kann und die in diesem Fall den ungarischen Algorithmus übertreffen? Oder haben Sie weitere Vorschläge, wie ich die Leistung dieses Kernels verbessern kann?