Mein Problem ist es, alle ganzzahligen Lösungen für einen ILP zu finden. Als Beispiel verwende ich ein ILP mit zwei Variablen, aber möglicherweise habe ich mehr als zwei Variablen. Ich beschreibe die Methode, die ich derzeit verwende, um dieses Problem gegen Ende zu lösen, aber ich bin daran interessiert zu wissen, ob es einen geeigneten und effizienten Algorithmus oder eine Methode zur Lösung dieser Art von Problem gibt.
Es gibt keine objektive Funktion, aber die Einschränkungen für dieses ILP sind
Da dieses ILP zwei Variablen hat, kann ich den Lösungsbereich visuell untersuchen, indem ich die Linien grafisch darstelle, die durch die Einschränkungen gebildet werden
Bei der Inspektion gibt es 6 ganzzahlige Lösungen für : .
Meine derzeitige Methode besteht jedoch darin, eine lineare Programmierung mit entspannter Nicht-Negativität und ganzen Zahlen aus Branch-and-Cut zu verwenden. Ich habe versucht , einen Satz von vier Zielfunktionen mit: minimieren , maximize , minimiert und maximiert . Diese geben einen kleineren Suchbereich als
Ich iteriere dann über alle gültigen ganzzahligen Tupel in diesem kleineren Bereich und filtere sie nach Tupeln, die die ursprünglichen Einschränkungen erfüllen. Die verbleibenden Tupel sind alle gültige ganzzahlige Lösungen.
quelle
Land und Doig (1960) schlugen eine Methode zur Lösung diskreter Programmierprobleme vor. Möglicherweise können Sie seinen Algorithmus so ändern, dass Sie anstelle eines Optimierungsproblems jede mögliche mögliche Ganzzahllösung auflisten.
Referenz
AH Land und AG Doig (1960). "Eine automatische Methode zur Lösung diskreter Programmierprobleme". Econometrica. 28 (3). S. 497–520. doi: 10.2307 / 1910129.
quelle
Lesen Sie dieses Papier: Berechnen Sie konvexe Hüllen und zählen Sie ganzzahlige Punkte mit Polymake. Ich denke, Polymake kann es für Sie tun.
quelle