Integer linear optimization: Branch & Bound 2: Unterschied zwischen den Versionen

Aus Operations-Research-Wiki
Wechseln zu: Navigation, Suche
[unmarkierte Version][unmarkierte Version]
 
(11 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 14: Zeile 14:
 
2. '''Branching''' branch according to the structure variable xi in the basis with the largest part of the fraction -> substitute column:
 
2. '''Branching''' branch according to the structure variable xi in the basis with the largest part of the fraction -> substitute column:
  
• next higher integer number becomes lower bound: xi -> xi´= xi – li
+
• next higher integer number becomes lower bound: xi -> xi´= xi – li ;         
 
bineu= bi - li
 
bineu= bi - li
• next lower integer number becomes upper bound: xi -> Xi ̅  = ui – xi
+
 
 +
• next lower integer number becomes upper bound: xi -> xi ̅  = ui – xi ;     
 
bineu = ui - bi
 
bineu = ui - bi
 +
 
+ all aij of that row change signs
 
+ all aij of that row change signs
  
Zeile 71: Zeile 73:
 
Initial Tableau:
 
Initial Tableau:
  
[[Datei:1.png]]  
+
[[Datei:BuB1.png]]  
  
 
Fig. 1 Initial Tableau
 
Fig. 1 Initial Tableau
Zeile 78: Zeile 80:
 
After the first iteration you get this tableau:
 
After the first iteration you get this tableau:
  
[[Datei:2.png]]
+
[[Datei:BuB2.png]]
  
 
Fig. 2: First iteration
 
Fig. 2: First iteration
Zeile 85: Zeile 87:
 
After the second and last iteration you get the following continuous optimum:
 
After the second and last iteration you get the following continuous optimum:
  
[[Datei:3.png]]
+
[[Datei:BuB3.png]]
  
 
Fig. 3: Continous optimum
 
Fig. 3: Continous optimum
Zeile 103: Zeile 105:
  
 
b) Additionaly to the previous restrictions: next lower integer number becomes upper  bound, so the upper bound (ui) is x2<=2.
 
b) Additionaly to the previous restrictions: next lower integer number becomes upper  bound, so the upper bound (ui) is x2<=2.
-> x2 has to be replaced by   and all signs of ais must be reversed.
+
-> x2 has to be replaced by x2 ̅  and all signs of ais must be reversed.
  
  = u2 – x2= 2 - 2 2/3 = - 2/3
+
x2 ̅ = u2 – x2= 2 - 2 2/3 = - 2/3
 
   
 
   
  
[[Datei:4.png]]
+
[[Datei:BuB4.jpg]]
  
 
Fig. 4: Tableau 1a
 
Fig. 4: Tableau 1a
Zeile 118: Zeile 120:
  
  
[[Datei:5.png]]
+
[[Datei:BuB5.jpg]]
  
 
Fig. 5: Tableau 1b
 
Fig. 5: Tableau 1b
 +
  
 
b) New row for x2:  +y1*1/3+y2*-2/3= -2/3
 
b) New row for x2:  +y1*1/3+y2*-2/3= -2/3
Zeile 126: Zeile 129:
 
Resulting tableau:
 
Resulting tableau:
  
[[Datei:6.png]]  
+
[[Datei:BuB6.jpg]]  
  
 
Fig. 6 Tableau 1c
 
Fig. 6 Tableau 1c
 +
  
 
Both tableaus (Fig. 5 and 6) have negative elements on the right side. So we have to determine the optimal solutions with the simplex method again.
 
Both tableaus (Fig. 5 and 6) have negative elements on the right side. So we have to determine the optimal solutions with the simplex method again.
Zeile 137: Zeile 141:
  
  
[[Datei:7.png]]  
+
[[Datei:BuB7.jpg]]  
  
 
Fig. 7: Optimal solution to 1b
 
Fig. 7: Optimal solution to 1b
  
[[Datei:8.png]]  
+
 
 +
[[Datei:BuB8.jpg]]  
  
 
Fig. 8 Optimal solution to 1c
 
Fig. 8 Optimal solution to 1c
 +
  
 
Both tableaus have integer values on the right side.
 
Both tableaus have integer values on the right side.
Zeile 155: Zeile 161:
 
x1 = 3
 
x1 = 3
  
X2 ̅  = 0 -> x2 = ui - X2 ̅  = 2 – 0 = 2
+
x2 ̅  = 0
 +
 
 +
x2 = ui - x2 ̅  = 2 – 0 = 2
 +
 
 +
 
 +
'''Sources'''
 +
 
 +
Operations Research Script
 +
 
 +
Operations Research Wiki

Aktuelle Version vom 1. Juli 2013, 21:29 Uhr

Branch and Bound


Idea: Splitting the set of all possible solutions into disjoint (i.e. not overlapping) subsets and evaluating these subsets; to reach the optimal solution fast and efficiently.


Approach:

1. Set up simplex tableau and calculate the continuous optimum


2. Branching branch according to the structure variable xi in the basis with the largest part of the fraction -> substitute column:

• next higher integer number becomes lower bound: xi -> xi´= xi – li ; bineu= bi - li

• next lower integer number becomes upper bound: xi -> xi ̅ = ui – xi ; bineu = ui - bi

+ all aij of that row change signs


3. Bounding calculate new sub-optimum. Continue with the largest objective function value, where the node hasn´t been processed yet.


4. End if

• solution is integer number

• when there is no node which hasn´t been processed has no higher objective function value

• all nodes are processed -> choose node with the highest objective function value


Notice: The right side is always negative and determines the new pivot-row. If all row-coefficients ais > 0, then the approach is inadmissible. If there is a second row, then this one is also to analyze.


Otherwise:

• If there is only one row-coefficient which is negative, then this coefficient determines the pivot-element (PVE)

• If several row-coefficients are negative, you have to determine a quotient out of the objective function value and the row-coefficient (Dual Simplex Method) -> the quotient with the absolute minimal value constitutes the new PVE. -> Perform simplex-transformation while the extra-row substitutes the old restriction.


Example:

Maximize the profit

G = 4x1+3x2


With the restrictions:

2x1+x2 <= 8 x1+2x2 <= 8


Non-negativity restriction

x1,x2 >= 0, integer


Steps:

Set up simplex tableau and calculate the continuous optimum


Initial Tableau:

Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

Fig. 1 Initial Tableau


After the first iteration you get this tableau:

Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

Fig. 2: First iteration


After the second and last iteration you get the following continuous optimum:

Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

Fig. 3: Continous optimum


The solution is not integer, so we have to determine a source row. We have to choose the row with the largest fraction on the right side. In this case we have identical values on the right side, so we can choose one of these two rows. We opt for x2.


Source Row: x2+y1*-1/3+y2*2/3=2 2/3

a) Additionaly to the previous restictions: next higher integer number becomes lower bound, so the lower bound (li) is x2>=3 -> x2 has to be replaced by x2´

x2´= x2 – l2 = 2 2/3 – 3 = - 1/3


b) Additionaly to the previous restrictions: next lower integer number becomes upper bound, so the upper bound (ui) is x2<=2. -> x2 has to be replaced by x2 ̅ and all signs of ais must be reversed.

x2 ̅ = u2 – x2= 2 - 2 2/3 = - 2/3


Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

Fig. 4: Tableau 1a


a) New row for x2: x2´+y1*-1/3+y2*2/3= -1/3

Resulting tableau:


Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

Fig. 5: Tableau 1b


b) New row for x2: +y1*1/3+y2*-2/3= -2/3

Resulting tableau:

Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

Fig. 6 Tableau 1c


Both tableaus (Fig. 5 and 6) have negative elements on the right side. So we have to determine the optimal solutions with the simplex method again.

The Column which we have chosen before becomes our new pivot column and choose the negative ais as the pivotelement.

Therefore our optimal solutions are:


Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

Fig. 7: Optimal solution to 1b


Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

Fig. 8 Optimal solution to 1c


Both tableaus have integer values on the right side.

The objective function value of b) is larger than a)

-> Tableau b) represents the optimal solution:

z = 18

x1 = 3

x2 ̅ = 0

x2 = ui - x2 ̅ = 2 – 0 = 2


Sources

Operations Research Script

Operations Research Wiki