IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

25
IntelliVideo IntelliVideo 1 / 25 IntelliVideo IntelliVideo Der Der intelligente intelligente Videorekorder Videorekorder

Transcript of IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

Page 1: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

IntelliVideoIntelliVideo 1 / 25

IntelliVideoIntelliVideo Der intelligente Der intelligenteVideorekorderVideorekorder

Page 2: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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)

Page 3: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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.

Page 4: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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)

Page 5: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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“.

Page 6: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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

Page 7: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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.

Page 8: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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.

Page 9: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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

Page 10: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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:

Page 11: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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

Page 12: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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

Page 13: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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

Page 14: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

IntelliVideoIntelliVideo 14 / 25

NebenbedingungenNebenbedingungenEs muß gelten:Es muß gelten:

CliqueSendung

SendungCliquen 1:

Sendungeni

ii MAXlengthprecordp#

..

Page 15: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

IntelliVideoIntelliVideo 15 / 25

SendungenSendungen

Sendungen erhalten nach Sortierung Sendungen erhalten nach Sortierung einen Indexeinen Index

SpaltennummeSpaltennummerr

Page 16: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

IntelliVideoIntelliVideo 16 / 25

CliquenCliquen

Cliquen werden in Erstellungsreihenfolge Cliquen werden in Erstellungsreihenfolge indiziertindiziert

ZeilennummerZeilennummer

Page 17: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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

Page 18: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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

Page 19: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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

Page 20: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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.

Page 21: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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

Page 22: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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

Page 23: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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

Page 24: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

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

Page 25: IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

IntelliVideoIntelliVideo 25 / 25

AbbruchbedingungenAbbruchbedingungen

1. Die erreichten Kosten entsprechen denen, die CPLEX im ersten Schritt berechnet hat

2. Baum wurde vollständig durchlaufen