Finden aller Lösungen für ein ILP-Problem (Integer Linear Programming)


8

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

02xy801x+3y502+xy2x,yZ

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

y2xy2x8y13x13y13x+43yx+2yx

Graph

Bei der Inspektion gibt es 6 ganzzahlige Lösungen für : .(x,y){(0,0),(1,1),(1,0),(2,0),(2,1),(3,1)}

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 alsxxyy

3x01y1

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.

Antworten:


8

"Lineare Programmierung" ist ein Optimierungsproblem. Das Problem, das Sie lösen möchten, besteht darin, Gitterpunkte innerhalb eines endlichen konvexen rationalen Polytops zu zählen.

Dieses Problem hat einen Polynom-Zeit-Algorithmus, dessen allgemeiner Fall 1994 von Alexander Barvinok entdeckt wurde. Es scheint, dass alle modernen Algorithmen weitgehend auf dieser Methode basieren. Barvinok & Pommersheins Arbeit von 1999, Eine algorithmische Theorie der Gitterpunkte in Polyedern , ist wahrscheinlich die beste Einführung in die Theorie. (Eigentlich scheint es, dass Barvinok später ein Buch oder eine Monographie geschrieben hat; das könnte sogar noch besser sein.)

Es gibt wahrscheinlich neuere Entwicklungen, als mir bekannt ist, aber dies gibt Ihnen einen Ausgangspunkt für die Verfolgung von Zitaten.


Vielen Dank für diese Beobachtung. Ich bin mit den von Ihnen erwähnten Themen nicht vertraut, aber nach kurzer Betrachtung glaube ich, dass sie ein guter Ausgangspunkt sind, um mehr zu lernen. Leider ist mein Ruf zu niedrig, um Sie zu bewerten.
Resyst

4
Huh. Das ist überraschend. Die Überprüfung, ob innerhalb eines konvexen Polytops ein ganzzahliger Punkt vorhanden ist (ob die Anzahl solcher Punkte 0 oder ), entspricht der Überprüfung der Machbarkeit einer ILP-Instanz (Integer Linear Programming). ILP ist NP-hart. Ich hätte also gefolgert, dass es NP-schwer ist, selbst zu überprüfen, ob ein Polytop einen integralen Punkt enthält, geschweige denn die Anzahl von ihnen zu zählen. Wie bringen wir diese beiden Tatsachen in Einklang? Wo bin ich falsch gelaufen? >0
DW

Der Haken ist wahrscheinlich, dass Barvinoks Algorithmus für eine feste Dimension polynomisch ist. Wenn die Anzahl der Variablen festgelegt ist, wird der Algorithmus beim Hinzufügen von Einschränkungen polynomiell skaliert. Die typischen Fälle, in denen Sie Gitterpunkte aufzählen möchten, sind beispielsweise Lösungen für lineare diophantinische Gleichungen, und dort ist die Dimension tendenziell gering.
Pseudonym

2

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.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.