Lineare Programmierung
4.2 Ganzzahlige lineare Programmierung
Wird ein lineares Programm um die Forderung der Ganzzahligkeit der L¨osungen erg¨anzt, ergibt sich einGanzzahliges lineares Programm bzw. Integer Linear Program (ILP):
zILP = min{c0x|Ax≥b,x∈Zn} (4.3)
Wird Ganzzahligkeit nur f¨ur bestimmte Entscheidungsvariablen gefordert, spricht man von einemGemischt-ganzzahligen linearen Programm bzw. einemMixed-Integer Program (MIP). Die folgenden Ausf¨uhrungen beschr¨anken sich auf rein ganzzahlige Probleme.
Die exakte L¨osung eines ILPs stellt im Normalfall einN P-schweres Problem dar. Die zu diesem Zweck eingesetzten Methoden sind unter anderemSchnittebenenverfahren, Branch-and-Bound sowie ihre Kombination, Branch-and-Cut. F¨ur eine detaillierte Beschreibung dieser und weiterer Verfahren siehe [37].
Sowohl Schnittebenenverfahren als auch Branch-and-Bound beruhen auf der sogenannten LP-Relaxation eines ILP:
Definition 4.2.1 (LP-Relaxation). Gegeben sei ein ILP zILP = min{c0x| Ax ≥b,x∈ Zn}. Das zugeh¨orige LP zLP = min{c0x|Ax≥b,x ∈Rn} wird LP-Relaxation des ILP genannt.
F¨ur die optimalen L¨osungen der LP-Relaxation und des originalen Problems gilt, dass zLP≤zILP, da der zul¨assige Bereich des originalen Problems in jenem der LP-Relaxation enthalten ist.
4.2.1 Schnittebenenverfahren
Schnittebenenverfahren zur L¨osung von ILPs beruhen auf der L¨osung einer Folge von LP-Relaxationen. Algorithmus 4.1 zeigt das allgemeine Vorgehen im Rahmen eines Schnit-tebenenverfahrens. Der Algorithmus l¨ost die LP-Relaxation des ILP und ermittelt so eine L¨osungx∗. Istx∗ ganzzahlig, so ist die optimale L¨osung des ILP gefunden, und das Ver-fahren wird abgebrochen. Andernfalls wird das ILP um eine Nebenbedingung erweitert, die von allen ganzzahligen L¨osungen, aber nicht vonx∗erf¨ullt wird. Dieses Verfahren wird fortgesetzt, bis eine ganzzahlige L¨osung gefunden wurde.
Algorithmus 4.1 : Schnittebenenverfahren repeat
1
x∗← ermittle die optimale L¨osung der LP-Relaxation
2
if x∗ ist nicht ganzzahlig then
3
Erg¨anze das ILP um eine Nebenbedingung, die von allen ganzzahligen
4
L¨osungen, aber nicht vonx∗ erf¨ullt wird until x∗ ist ganzzahlig
5
Die Ermittlung einer durch x∗ verletzten Nebenbedingung wird als Separation Problem [41] bezeichnet. Die Qualit¨at eines Schnittebenenverfahrens hinsichtlich der Anzahl der notwendigen Schritte und damit der Anzahl der zu l¨osenden LP-Relaxationen h¨angt von der Methode zur L¨osung des Separation Problems ab. Einerseits k¨onnen hierf¨ur generische
Verfahren wie der Gomory Cutting-Plane Algorithmus [9] herangezogen werden, welche die L¨osung jedes beliebigen ILPs garantieren. Anderseits k¨onnen auch problemangepasste Verfahren verwendet werden, die problemspezifisches Wissen ausnutzen, um Schnittebenen zu generieren, die in jedem Schritt einen gr¨oßeren Teil des Suchraums eliminieren k¨onnen und damit schneller zu einer L¨osung des ILPs f¨uhren.
4.2.2 Branch-and-Bound
Algorithmus 4.2: Generisches Branch-and-Bound U ← ∞
Fi ←W¨ahle aktives Unterproblem aus L
4
if Fi ist unzul¨assig then
5
else if Fi optimal l¨osbar then
11
L¨oseFi optimal und aktualisiere gegebenenfallsU
12
else
13
Teile UnterproblemFi in weitere Unterprobleme und f¨uge diese zuL
14
hinzu until L=∅
15
Der Branch-and-Bound-Ansatz zur L¨osung ganzzahliger linearer Programme beruht auf der geschickten Enumeration des Suchraums aller zul¨assigen ganzzahligen L¨osungen. Dies geschieht durch Zerteilung des Problems in unabh¨angige Unterprobleme, die in Form eines Baums dargestellt werden k¨onnen. Kann ein Unterproblem nicht optimal gel¨ost werden, wird es wiederum in Unterprobleme zerteilt, bis schließlich eine ganzzahlige L¨osung ermit-telt werden kann. Um Teile des Berechnungs-Baums und damit auch Teile des Suchraums nicht untersuchen zu m¨ussen, st¨utzt sich der Algorithmus auf zwei Schranken:
• Die globale obere Schranke des ZielfunktionswertsU. Diese entspricht dem Zielfunk-tionswert der besten bisher gefundenen ganzzahligen L¨osung.
• Eine untere Schranke des Zielfunktionswerts eines Teilproblems Fi, bezeichnet mit b(Fi).
Falls f¨ur ein Unterproblemb(Fi)≥U gilt, d.h. falls die untere Schranke des Unterproblems Fi die globale obere Schranke nicht unterschreitet, muss es nicht weiter behandelt werden, da die optimale L¨osung von Fi nicht besser ist als die bisher beste ganzzahlige L¨osung.
Algorithmus 4.2 zeigt das allgemeine Vorgehen des Branch-and-Bound-Verfahrens. In die-sem Algorithmus sind Variationsm¨oglichkeiten hinsichtlich des Verfahrens zur Auswahl des aktuellen aktiven Unterproblems, der Methode zur Berechnung von b(Fi) sowie des Verfahrens zur Ermittlung neuer Unterprobleme vorhanden.
Die naheliegendste M¨oglichkeit zur Berechnung vonb(Fi) ist die L¨osung der LP-Relaxation von Fi, da f¨ur die Zielfunktionswerte der optimalen L¨osungen ziLP und ziILP der LP-Relaxation bzw. des originalen Problems ziLP≤ziILP gilt.
Algorithmus 4.3 zeigt eine in dieser Weise angepasste Version des generischen Branch-and-Bound-Algorithmus. Immer wenn die durch L¨osung der LP-Relaxation gewonnene untere Schrankeb(Fi) kleiner als die globale obere SchrankeU ist und die L¨osung der LP-Relaxation nur ganzzahlige Werte enth¨alt, wurde eine verbesserte zul¨assige L¨osung des ILP gefunden und es erfolgt eine Aktualisierung vonU. Ist die L¨osung der LP-Relaxation nicht ganzzahlig, muss das aktuelle Unterproblem in weitere Unterprobleme zerlegt wer-den.
Algorithmus 4.3 : Branch-and-Bound mit LP-Relaxation U ← ∞
Fi ← W¨ahle aktives Unterproblem ausL
4
x∗i ← L¨ose die LP-Relaxation von Fi
5
if Fi ist unzul¨assig then
6
else if x∗i ist ganzzahlig then
12
/* Verbesserte ganzzahlige L¨osung gefunden */
13
Teile UnterproblemFi in weiteres Unterprobleme und f¨uge diese zuL
18
hinzu untilL=∅
19
Die Zerlegung von Fi in Unterprobleme geschieht durch Hinzuf¨ugen neuer Nebenbedin-gungen. Dazu wird eine Variablexj der L¨osung der LP-Relaxation mit nicht-ganzzahligem Wertx∗j ausgew¨ahlt und jeweils eine der beiden Nebenbedingungen
xj ≤ bx∗jc bzw.
xj ≥ dx∗je
zu Fi hinzugef¨ugt, wodurch zwei neue Unterprobleme entstehen, die in L aufgenommen werden.
Die Kombination von Branch-and-Bound und Schnittebenenverfahren wird als Branch-and-Cut bezeichnet. Ein solches Verfahren wendet ein Schnittebenenverfahren auf neu erzeugte Unterprobleme an, um den Suchraum weiter einzuschr¨anken.