IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.

Post on 06-Apr-2016

215 views 2 download

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