IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.
-
Upload
ulrike-schulze -
Category
Documents
-
view
215 -
download
2
Transcript of IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.
IntelliVideoIntelliVideo 1 / 25
IntelliVideoIntelliVideo Der intelligente Der intelligenteVideorekorderVideorekorder
IntelliVideoIntelliVideo 2 / 25
Ausgangssituation (1)Ausgangssituation (1)gegeben:gegeben:
•Sendungen mit Start- und EndzeitSendungen mit Start- und Endzeit•Gewichtung für die einzelnen SendungenGewichtung für die einzelnen Sendungen•Videorekorder mit einer maximalen Videorekorder mit einer maximalen
Kapazität (MAX)Kapazität (MAX)
IntelliVideoIntelliVideo 3 / 25
Ausgangssituation (2)Ausgangssituation (2)gesucht:gesucht:
Optimale Sendungsfolge, so Optimale Sendungsfolge, so dassdass
die höchstmögliche Gewichtungdie höchstmögliche Gewichtung
erzielt wird.erzielt wird.
IntelliVideoIntelliVideo 4 / 25
Eine SendungEine Sendung...ist ein Objekt mit folgenden Variablen:...ist ein Objekt mit folgenden Variablen:• Startzeit (Integer-Wert)Startzeit (Integer-Wert)• Endzeit (Integer-Wert)Endzeit (Integer-Wert)• Gewichtung (Integer-Wert)Gewichtung (Integer-Wert)• record-flag record-flag {0,1} {0,1}• Name (String)Name (String)• Länge (Endzeit – Startzeit) Länge (Endzeit – Startzeit)
IntelliVideoIntelliVideo 5 / 25
Vorgehensweise (1)Vorgehensweise (1)
Herausfinden, welche Sendungen Herausfinden, welche Sendungen gleichzeitig laufen.gleichzeitig laufen.
Ein Videorekorder kann nur eine Sendung Ein Videorekorder kann nur eine Sendung gleichzeitig aufnehmengleichzeitig aufnehmen
Finden aller sog. „Cliquen“.Finden aller sog. „Cliquen“.
IntelliVideoIntelliVideo 6 / 25
Definition einer CliqueDefinition einer CliqueClique Clique alle Sendungen, deren alle Sendungen, deren
Sendezeiten sich überlappenSendezeiten sich überlappen
pp11
pp33
pp44
pp22
tt
Clique 1Clique 1Clique 2Clique 2
IntelliVideoIntelliVideo 7 / 25
Finden aller CliquenFinden aller Cliquen1.1. Die Sendungen werden nach Die Sendungen werden nach
Startzeiten geordnet.Startzeiten geordnet.2.2. Die Sendungen werden durchlaufen, Die Sendungen werden durchlaufen,
wobei zur Laufzeit dynamisch ein wobei zur Laufzeit dynamisch ein Heap verwaltet wird.Heap verwaltet wird.
IntelliVideoIntelliVideo 8 / 25
Der HeapDer Heap
Vorteil: Im Heap ist minimales Element Vorteil: Im Heap ist minimales Element immer Wurzelimmer Wurzel
Zugriff auf minEnd in O(1)Zugriff auf minEnd in O(1)
Der Heap ist nach Endzeiten sortiert.Der Heap ist nach Endzeiten sortiert.
Im Heap werden Zeiger auf die Im Heap werden Zeiger auf die Sendungen gehalten.Sendungen gehalten.
IntelliVideoIntelliVideo 9 / 25
Verwaltung des Heaps (1)Verwaltung des Heaps (1)
1. Fall: Heap ist leer1. Fall: Heap ist leer Sendung wird in jedem Fall auf den Sendung wird in jedem Fall auf den
Heap gelegtHeap gelegt
IntelliVideoIntelliVideo 10 / 25
Verwaltung des Heaps (2)Verwaltung des Heaps (2)2.2. Fall: Heap ist nicht leerFall: Heap ist nicht leer
- die Startzeit der Sendung ist kleiner als - die Startzeit der Sendung ist kleiner als minEndminEnd
Sendung kommt in HeapSendung kommt in Heap
Wieder 2 Möglichkeiten:Wieder 2 Möglichkeiten:1. Möglichkeit:1. Möglichkeit:
IntelliVideoIntelliVideo 11 / 25
Verwaltung des Heaps (3)Verwaltung des Heaps (3)
- die Startzeit der Sendung ist größer oder - die Startzeit der Sendung ist größer oder gleich minEnd:gleich minEnd:
Alle Sendungen, die im Heap sind, Alle Sendungen, die im Heap sind, bilden eine Cliquebilden eine Clique
2. Möglichkeit:2. Möglichkeit:
alle Sendungen mit Endzeit < Startzeit alle Sendungen mit Endzeit < Startzeit der aktuellen Sendung raus aus Heapder aktuellen Sendung raus aus Heap
IntelliVideoIntelliVideo 12 / 25
BeispielBeispielpp11
pp22
pp33 pp55
pp44
minEnd = pminEnd = p11.end.endpp22.start < .start < minEndminEnd
pp11 in Heap in Heap pp2 2 in in HeapHeappp33.start > .start >
minEndminEnd Clique {pClique {p11, , pp22}}
tt
pp11.end < .end < pp33.start.start
pp11 aus Heap aus Heappp44.start > .start > minEndminEnd
uswusw..
pp33.start < .start < minEndminEnd
pp3 3 in in HeapHeap
minEnd = minEnd = pp22.end.end
IntelliVideoIntelliVideo 13 / 25
Vorgehensweise (2)Vorgehensweise (2)Für CPLEX-Aufruf ist bestimmte Form Für CPLEX-Aufruf ist bestimmte Form
notwendig.notwendig.
4 Arrays: matbeg, matval, matind, 4 Arrays: matbeg, matval, matind, matcntmatcnt
IntelliVideoIntelliVideo 14 / 25
NebenbedingungenNebenbedingungenEs muß gelten:Es muß gelten:
CliqueSendung
SendungCliquen 1:
Sendungeni
ii MAXlengthprecordp#
..
IntelliVideoIntelliVideo 15 / 25
SendungenSendungen
Sendungen erhalten nach Sortierung Sendungen erhalten nach Sortierung einen Indexeinen Index
SpaltennummeSpaltennummerr
IntelliVideoIntelliVideo 16 / 25
CliquenCliquen
Cliquen werden in Erstellungsreihenfolge Cliquen werden in Erstellungsreihenfolge indiziertindiziert
ZeilennummerZeilennummer
IntelliVideoIntelliVideo 17 / 25
Parameter für CPLEXParameter für CPLEXmatval: immer Wert „1“.matval: immer Wert „1“.
matind: Indizes der Cliquen, in denen eine matind: Indizes der Cliquen, in denen eine Sendung drin ist.Sendung drin ist.
matcnt: Anzahl der Cliquen, in denen eine matcnt: Anzahl der Cliquen, in denen eine Sendung drin ist (+1).Sendung drin ist (+1).
matbeg: errechnet sich aus matcntmatbeg: errechnet sich aus matcnt
1
0
][][i
j
jmatcntimatbeg
IntelliVideoIntelliVideo 18 / 25
Parameter für CPLEX (2)Parameter für CPLEX (2)
rhs: rhs: MAXMAX1111
obj: Gewichte der einzelnen obj: Gewichte der einzelnen Sendungen Sendungen
IntelliVideoIntelliVideo 19 / 25
Vorgehensweise (3)Vorgehensweise (3)
CPLEX liefert nicht unbedingt CPLEX liefert nicht unbedingt ganzzahlige Lösungganzzahlige Lösung
Problem: Videorekorder benötigt Problem: Videorekorder benötigt Information xInformation xii.record=1 oder .record=1 oder x xi i .record.record =0=0
IntelliVideoIntelliVideo 20 / 25
IdeeIdee
Rekursiver Algorithmus nach Rekursiver Algorithmus nach Branch & Bound-Prinzip.Branch & Bound-Prinzip.
CPLEX-Ergebnis liefert obere Schranke der CPLEX-Ergebnis liefert obere Schranke der möglichen Lösungen.möglichen Lösungen.
IntelliVideoIntelliVideo 21 / 25
Branch & BoundBranch & Bound
PP
PP‘‘
XXii = 0 = 0
P‘‘P‘‘
XXjj = = 11
P‘‘P‘‘
XXjj = 0 = 0
XXii = = 11
PP‘‘
P‘‘P‘‘
XXjj = = 11
P‘‘P‘‘
XXjj = 0 = 0
IntelliVideoIntelliVideo 22 / 25
Wahl von pWahl von pii
2. Wähle das p2. Wähle das pii mit dem größten vom mit dem größten vom CPLEX CPLEX ausgegebenen xausgegebenen xii
möglichst gut an den CPLEX anlehnenmöglichst gut an den CPLEX anlehnen
2 Möglichkeiten:2 Möglichkeiten:1.1. Wähle pWähle pii mit größtem Gewicht mit größtem Gewicht
Greedy-AlgorithmusGreedy-Algorithmus
IntelliVideoIntelliVideo 23 / 25
Abbruchbedingungen Abbruchbedingungen (Teilbaum)(Teilbaum)
1.1. Alle xAlle xii wurden auf 0 oder 1 gesetzt wurden auf 0 oder 1 gesetzt ein Blatt wurde erreichtein Blatt wurde erreicht
2.2. Lösung ist kleiner als bisherige beste LösungLösung ist kleiner als bisherige beste Lösung keine Verbesserung möglichkeine Verbesserung möglich
IntelliVideoIntelliVideo 24 / 25
Beispiel (zu 2.)Beispiel (zu 2.)
PP
PP‘‘
PP‘‘
P‘‘P‘‘ P‘‘P‘‘ccTTx=13x=13
ccTTx=11x=11
ccTTx=15x=15
IntelliVideoIntelliVideo 25 / 25
AbbruchbedingungenAbbruchbedingungen
1. Die erreichten Kosten entsprechen denen, die CPLEX im ersten Schritt berechnet hat
2. Baum wurde vollständig durchlaufen