T E C H N I S C H E U N I V E R S I TÄT D R E S D E N FA K U L TÄT E L E K T R O T E C H N I K U N D I N F O R M AT I O N S T E C H N I K Institut für Nachrichtentechnik DIPLOMARBEIT „Erreichbare Ratenregion in Mehrantennennetzwerken mit Netzwerkcodierung“ von Johannes Richter geboren am 24.02.1986 in Dresden zur Erlangung des akademischen Grades DIPLOMINGENIEUR (Dipl.-Ing.) Tag der Einreichung: 16.02.2011 Betreuer der Diplomarbeit: Dipl.-Ing. Anne Wolf Verantwortlicher Hochschullehrer: Prof. Dr.-Ing. Eduard A. Jorswieck Technische Universität Dresden Fakultät Elektrotechnik und Informationstechnik Aufgabenstellung für die Diplomarbeit von Johannes Richter zum Thema „Erreichbare Ratenregion in Mehrantennennetzwerken mit Netzwerkcodierung“ Zielsetzung: Vor 10 Jahren wurde die Netzwerkcodierung als neues Konzept eingeführt, und es konnte gezeigt werden, dass eine gemeinsame Codierung mehrerer Pakete an Netzwerkknoten zu einer substantiellen Durchsatzsteigerung führen kann. Für statische Netzwerktopologien kann ein deterministischer Netzwerkcode entworfen werden, der mit minimaler Alphabetgröße den Min-Cut-Max-Flow-Wert des Netzwerkes erreicht. Moderne Mobilkommunikationssysteme setzen Mehrantennenverfahren ein, um die spektrale Effizienz und Zuverlässigkeit bei der Datenübertragung zu erhöhen. Auch in einem Interferenznetzwerk können durch Beamforming die Nutzsignale und die Interferenz gezielt beeinflusst werden. In der Diplomarbeit sollen Mehrantennennetzwerke, in denen Informationen von allen Sendern zu allen Empfängern übertragen werden sollen, betrachtet werden. Ausgangspunkt ist ein Szenario mit Multiple-Input-Single-Output-(MISO-)Kanälen sowie Netzwerkcodierung und individuellen Sendeleistungsbeschränkungen an den Sendeknoten. Für ein solches Netzwerk sollen geeignete Beamforming-Strategien abgeleitet, die erreichbare Ratenregion bestimmt und mit der durch Routing erreichbaren verglichen werden. Als Basisszenario für diese Untersuchungen soll das Butterfly-Netzwerk verwendet werden, es ist jedoch auch eine Erweiterung auf allgemeinere Netzwerktopologien vorzusehen. Weiterhin sind im Rahmen der Diplomarbeit Netzwerke mit einer Summenleistungsbeschränkung über allen Knoten des Netzwerks, die Erweiterung auf Multiple-InputMultiple-Output-(MIMO-)Szenarien sowie der Einfluss zusätzlicher Interferenz im Netzwerk zu analysieren. Betreuer: Ausgehändigt am: Einzureichen bis: Dipl.-Ing. Anne Wolf 16.08.2010 16.02.2011 Prof. Dr. phil. nat. habil. Ronald Tetzlaff Vorsitzender des Prüfungsausschusses Prof. Dr.-Ing. Eduard A. Jorswieck Verantwortlicher Hochschullehrer Selbständigkeitserklärung Hiermit erkläre ich, Johannes Richter, dass die heute beim Prüfungsausschuss der Fakultät Elektrotechnik und Informationstechnik eingereichte Diplomarbeit „Erreichbare Ratenregion in Mehrantennennetzwerken mit Netzwerkcodierung“ vollkommen selbständig von mir verfasst, keine anderen als die angegebenen Quellen und Hilfsmittel verwendet und Zitate kenntlich gemacht wurden. Dresden, den 16.02.2011 Johannes Richter Inhaltsverzeichnis Akronyme xi Einführung xiii Kapitel 1 Grundlagen 1.1 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Graphentheorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Netzwerkcodierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kapitel 2 Erreichbare Ratenregion 2.1 Systemmodell . . . . . . . . . . . 2.2 Kanalmodell . . . . . . . . . . . . 2.3 Multiple Access Channel (MAC) 2.4 Beamforming . . . . . . . . . . . 2.5 Erreichbare Ratenregion . . . . . 2.6 Algorithmus . . . . . . . . . . . . 2.7 Leistungsoptimierung . . . . . . 2.8 Erweiterungen des Algorithmus . 1 1 1 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 10 12 13 15 19 20 24 Kapitel 3 Implementation 3.1 Wahl der Programmierumgebung . . . . 3.2 Grundstruktur des Programms . . . . . 3.3 Installation . . . . . . . . . . . . . . . . 3.4 Verwendung des Programms . . . . . . 3.5 Implementation der Beamformer-Suche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 27 28 32 32 35 . . . . . . . . . . . . . . . . . . . . . . . . Kapitel 4 Simulationsergebnisse 41 4.1 Simulationen ohne Interferenz . . . . . . . . . . . . . . . . . . . . . . . . 41 4.2 Simulationen mit Interferenz . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3 Netzwerk mit drei Quellen und drei Senken . . . . . . . . . . . . . . . . . 50 Kapitel 5 Zusammenfassung und Ausblick 55 5.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Anhang A Beweis zur Konvexität der Leistungsoptimierung 59 A.1 Konvexität der Menge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 A.2 Konvexität der Zielfunktion und der Nebenbedingungen . . . . . . . . . . 60 viii Inhaltsverzeichnis Anhang B Netzwerkdateien B.1 Beispiel-Netzwerkdatei für das Butterfly-Netzerk . . . . . . . B.2 Butterfly-Netzwerk mit Netzwerkcodierungsgewinn . . . . . B.3 Butterfly-Netzwerk mit limitierenden Kanten an den Quellen B.4 Butterfly-Netzwerk mit Iteration über Mittelkante . . . . . . B.5 Butterfly-Netzwerk mit Interferenz Beispiel 1 . . . . . . . . . B.6 Butterfly-Netzwerk mit Interferenz Beispiel 2 . . . . . . . . . B.7 Netzwerk mit drei Quellen und drei Senken . . . . . . . . . . Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 63 64 65 66 67 68 69 71 Inhaltsverzeichnis ix Akronyme ATLAS Automatically Tuned Linear Algebra Software. 28, 29 BLAS Basic Linear Algebra Subprograms. 28, 29 CDMA CSI Code Division Multiple Access. 12 Kanalzustandsinformationen (engl.: Channel State Information). 13 FEC Vorwärtsfehlerkorrektur (engl.: Forward Error Correction). 10 GLPK GTK GUI GNU Linear Programming Kit. 28, 29 GIMP Toolkit. 28, 29 Graphische Benutzeroberfläche (engl.: Graphical User Interface). 27–29, 31 KKT-Bedingungen Karush-Kuhn-Tucker-Bedingungen. 22 LAPACK Linear Algebra Package. 28, 29 MAC MIMO MISO MRT Multiple Access Channel. 9, 12, 16–18, 20, 23, 24, 42–44, 52 Multiple Input Multiple Output. 10, 11 Multiple Input Single Output. 9, 11, 12, 25 Maximum-Ratio-Transmission. 14 NC Netzwerkcodierung (engl.: Network coding). 10 ODE Gewöhnliche Differentialgleichung (engl.: Ordinary Differential Equation). 29 QoS Quality of Service. 22, 46 SNR Signal-Rausch-Verhältnis (engl.: Signal-to-Noise Ratio). 41 Einführung In dieser Arbeit soll die Kombination von Netzwerkcodierung und Single-Stream-Beamforming für Mehrantennennetzwerke studiert werden. Diese können mit Hilfe der Graphentheorie repräsentiert und untersucht werden. Daher wird in Kapitel 1 eine kurze Einführung in die Graphentheorie (Abschnitt 1.2) und die Netzwerkcodierung (Abschnitt 1.3) gegeben. Die erreichbare Ratenregion in Mehrantennennetzwerken mit Netzwerkcodierung wird in Kapitel 2 untersucht. Dazu wird ein Multicast-Szenario betrachtet, das heißt alle Quellen senden Informationen an alle Senken. Die Knoten im Netzwerk benutzen die Decode-and-Forward-Strategie, um die Informationen von allen Quellen zu allen Senken weiterzuleiten. Da es sich bei den in dieser Arbeit betrachteten Netzwerken um Mehrantennennetzwerke handelt, muss eine optimale BeamformingStrategie für jeden Knoten im Netzwerk gefunden werden. In Abschnitt 2.4 wird eine solche Strategie für Single-Stream-Beamforming vorgeschlagen. Ein Algorithmus zur Ermittlung einer erreichbaren Ratenregion im Netzwerk wird in Abschnitt 2.6 vorgestellt. Der Algorithmus überführt die Bedingungen an die maximalen Raten der Knoten und Kanten im Netzwerk auf Bedingungen an die Raten der Quellen. In Abschnitt 2.7 wird analysiert, wie viel Sendeleistung tatsächlich benötigt wird, um die MulticastInformationen durch das Netzwerk zu übertragen. Dies entspricht einer Sendeleistungsminimierung und es wird gezeigt, dass es sich dabei um ein konvexes Optimierungsproblem handelt. Danach werden mögliche Erweiterungen des Algorithmus für allgemeinere Interferenznetzwerke diskutiert. Der Algorithmus zur Ermittlung der erreichbaren Ratenregion sowie die Sendeleistungsoptimierung wurden als Python-Programm implementiert. Eine kurze Einführung in die Struktur dieses Programms sowie dessen Nutzung ist in Kapitel 3 dieser Arbeit enthalten. In Kapitel 4 werden für ausgewählte Beispiel-Netzwerke die Ratenregion und die Summenleistungsminimierung präsentiert und diskutiert. Dabei wird besonderes Augenmerk auf den Vergleich zwischen der erreichbaren Ratenregion mit Netzwerkcodierung und der erreichbaren Ratenregion mit klassischem Routing gelegt. Abschließend werden Erweiterungsmöglichkeiten des Algorithmus diskutiert und auf dieser Arbeit aufbauende Themen für weitere Untersuchungen aufgezeigt. Kapitel 1 1 Grundlagen 1.1 Notation Im Folgenden werden Vektoren fett mit Kleinbuchstaben (x) und Matrizen fett mit Großbuchstaben (A) dargestellt. Wenn nicht anders eingeführt, sind alle Vektoren Spaltenvektoren. xT kennzeichnet den transponierten Vektor zu x. Kalligraphische Buchstaben (X), stellen Mengen dar. Die Kardinalität der Menge X wird durch |X| angegeben. Mit |x| wird der Betrag des Skalars x bezeichnet. kxk bezeichnet die euklidische Norm des Vektors x, die für Vektoren der Länge n durch v u n uX kxk = t |xi |2 . (1.1) i=1 gegeben ist. 1.2 Graphentheorie Telekommunikationsnetze werden oft als Graphen modelliert. Dies ermöglicht die Untersuchung der Netze mit graphentheoretischen Mitteln wie Pfadsuchalgorithmen, Optimierungsverfahren, etc. In diesem Kapitel sollen deshalb die Grundlagen der Graphentheorie erläutert werden und die wichtigsten Begriffe, wie sie im weiteren Verlauf der Arbeit verstanden werden, eingeführt werden. Dieser Abschnitt folgt den Darstellungen in [20] und [29]. 1.2.1 Definitionen 1.1 Definition (Graph). Ein Graph G ist ein Tupel (X, U), wobei X die Menge der im Graphen enthaltenen Knoten und U die Menge der im Graphen enthaltenen Kanten bezeichnet. Im weiteren Verlauf der Arbeit wird ein Graph mit der Menge X als Knotenmenge und der Menge U als Kantenmenge als G(X, U) geschrieben. Graphen können nach ihren Eigenschaften klassifiziert werden. Im Folgenden sind die Definitionen für die in dieser Arbeit benötigten Begriffe gegeben. 1.2 Definition (ungerichteter Graph). Ein ungerichteter Graph ist ein Graph G(X, U) mit U ⊂ X2 , wobei X2 die Menge aller zweielementigen Teilmengen von X beschreibt. Aus 1.2 folgt, dass in einem ungerichteten Graphen jede Kante bidirektional durchlaufen werden kann. 2 Kapitel 1 Grundlagen 1.3 Definition (gerichteter Graph). Ein gerichteter Graph ist ein Graph G(X, U) mit U ⊆ X × X. Den Knoten v einer Kante u ∈ U mit u = (v, w) bezeichnet man als den Startknoten und den Knoten w als den Endknoten dieser Kante. Aus 1.3 folgt, dass in einem gerichteten Graphen jede Kante in nur eine Richtung durchlaufen werden kann. Die folgenden Definitionen gelten für einen gerichteten Graphen G(X, U): 1.4 Definition (gerichteter Weg). Ist W = (v1 , . . . , vn ) eine Folge von Knoten aus X mit (vi , vi+1 ) ∈ U für alle i ∈ {1, . . . , n − 1}, dann nennt man W einen gerichteten Weg. 1.5 Definition (Pfad). Wenn alle Knoten vi in dem gerichteten Weg W = (v1 , . . . , vn ) voneinander verschieden sind, das heißt für alle i, j ∈ {1, . . . , n} gilt vi 6= vj , falls i 6= j, dann nennt man W einen Pfad. 1.6 Definition (Zyklus). Sind Start- und Endknoten des Pfads W = (v1 , . . . , vn ) identisch, das heißt v1 = vn , nennt man W einen Zyklus. 1.7 Definition (zyklischer Graph). Ein Graph, der mindestens einen Zyklus besitzt, heißt zyklischer Graph. 1.8 Definition (azyklischer Graph). Besitzt ein Graph keine Zyklen, so nennt man ihn azyklisch. 1.9 Definition (gewichteter Graph). Ein Graph G(X, U) ist gewichtet oder bewertet, wenn eine Abbildung Φ : U → R, (vi , vj ) 7→ gij existiert, die jeder Kante (vi , vj ) ∈ U einen Wert gij zuweist. Die Abbildung Φ in 1.9 heißt Gewichtsfunktion und kann zum Beispiel durch eine quadratische Bewertungsmatrix G ∈ RN ×N mit N = |X| und G = (gij ) beschrieben werden. 1.10 Definition (topologische Sortierung). Eine topologische Sortierung zu einem gerichteten azyklischen Graphen G(X, U) mit N = |X| ist eine bijektive Abbildung ψ : X → {1, . . . , N }, v 7→ ψ(v), das heißt eine Abbildung aller Knoten auf eine Teilmenge der natürlichen Zahlen. Dabei soll für jede Kante u = (v, w) ∈ U gelten: ψ(v) < ψ(w). 1.11 Definition (Adjazenz). In einem gerichteten Graphen G(X, U) heißen zwei Knoten v ∈ X und w ∈ X adjazent zueinander, wenn sie durch eine gerichtete Kante u = (v, w) ∈ U verbunden sind. Man schreibt v ↓ w. 1.12 Definition (Inzidenz). In einem gerichteten Graphen G(X, U) unterscheidet man positiv inzident und negativ inzident. Eine gerichtete Kante (v, w) ∈ U ist positiv inzident zu ihrem Startknoten v ∈ X und negativ inzident zu ihrem Endknoten w ∈ X. 1.2 Graphentheorie 3 1.2.2 Graphenrepräsentation Ein Graph kann durch Matrizen oder Listen repräsentiert werden. Es existieren zwei relevante Matrix-Darstellungsformen, die im Folgenden für gerichtete Graphen kurz erläutert werden sollen. 1.13 Definition (Adjazenz-Matrix). Eine Adjazenz-Matrix A eines Graphen G(X, U) mit N = |X| ist eine quadratische Matrix der Dimension N × N mit A(G) = (aij ). Für nicht gewichtete Graphen ergibt sich eine unbewertete Adjazenzmatrix mit ( 1 falls (vi , vj ) ∈ U aij = . 0 sonst Für gewichtete Graphen mit einer Gewichtsmatrix G = (gij ) ergibt sich eine bewertete Adjazenzmatrix mit ( gij falls (vi , vj ) ∈ U aij = . 0 sonst Die Darstellung eines Graphen durch eine Adjazenz-Matrix eignet sich besonders gut für stark vermaschte Netzwerke. 1.14 Definition (Inzidenz-Matrix). Eine Inzidenz-Matrix M eines Graphen G(X, U) mit N = |X| und A = |U| ist eine Matrix der Dimension N × A mit M (G) = (mik ). Es sei vi ∈ X und uk ∈ U. Für nicht gewichtete Graphen gilt wenn vi Startknoten von uk ist 1 mik = −1 wenn vi Endknoten von uk ist . 0 sonst Ist ein gewichteter Graph mit der Bewertungsmatrix G = (gij ) gewichtet, gilt wenn vi Startknoten von uk ist gij mik = −gij wenn vi Endknoten von uk ist . 0 sonst Die Darstellung eines Graphen durch eine Inzidenz-Matrix eignet sich besonders gut für schwach vermaschte Netzwerke. 1.2.3 Notation und Annahmen Im weiteren Verlauf der Arbeit sollen nur gerichtete azyklische Graphen G(X, U) betrachtet werden. Desweiteren sei Uin (i) = {(j, i) : j ↓ i} die Menge der eingehenden Kanten von Knoten i ∈ X und Uout (i) = {(i, j) : i ↓ j} die Menge der ausgehenden Kanten von Knoten i ∈ X. Die Knotenmenge X wird in drei disjunkte Teilmengen unterteilt: a) die Menge der Quellknoten XT ⊂ X mit ∀i ∈ XT : Uin (i) = ∅, b) die Menge der Empfangsknoten XR ⊂ X mit ∀i ∈ XR : Uout (i) = ∅ und c) die Menge der Netzwerkknoten XN = X \ (XT ∪ XR ). 4 Kapitel 1 Grundlagen 1.2.4 Flüsse und Ströme Im Folgenden sei G(X, U) ein gerichteter azyklischer Graph und c eine Gewichtsfunktion des Graphen G(X, U), die jeder Kante u = (v, w) ∈ U einen nichtnegativen Wert c(u) zuordnet, der Kapazität genannt wird. Falls (v, w) 6∈ U, so sei c(v, w) ≡ 0. 1.15 Definition (Fluss). Ein Fluss ist eine Abbildung f : U → R+ , (v, w) 7→ f (v, w), die jeder Kante (v, w) ∈ U einen nichtnegativen Flusswert f (v, w) ∈ R+ zuordnet. Der Fluss f (v, w) unterliegt dabei der Kapazitätskonformität, das heißt ∀(v, w) ∈ U : f (v, w) ≤ c(v, w), sowie der Flusserhaltung: X X ∀i ∈ XN : f (k, i) = f (i, j). (1.2) k:k↓i j:i↓j Einen Fluss von einer Quelle s ∈ XT zu einer Senke t ∈ XR nennt man einen s-t-Fluss. 1.16 Definition (Schnitt). Sei G(X, U) ein gerichteter Graph mit S ⊂ X und T = X \ S. Ein Schnitt (S, T) ist die Menge der Kanten, die zwischen den Knotenmengen S und T liegen: (S, T) = {(v, w) ∈ U : v ∈ S, w ∈ T}. (1.3) Die Kapazität c(S, T) eines Schnittes (S, T) ist die Summe aller Kantenkapazitäten dieses Schnittes: X c(S, T) = c(v, w). (1.4) (v,w)∈(S,T) Als minimaler Schnitt eines gerichteten Graphen G(X, U) wird der Schnitt mit der kleinsten Kapazität bezeichnet. 1.17 Satz (Min-cut max-flow). Der maximale s-t-Fluss in einem gerichteten Graphen hat genau den Wert der Kapazität c(S, T) des minimalen Schnitts (S, T) dieses Graphen mit s ∈ S ∩ XT und t ∈ T ∩ XR . 1.18 Definition (Residualnetzwerk). Ein Residualnetzwerk zum Fluss f des Originalnetzwerks mit dem Graphen G(X, U) ist ein Netzwerk mit dem Graphen Gf (X, Uf ), der die gleiche Knotenmenge wie der Graph G(X, U) des Originalnetzwerkes besitzt und aus den von f nicht ausgelasteten Kanten, ergänzt um Rückkanten, besteht. Die Menge Uf kann wie folgt beschrieben werden: − = (w, v) : (v, w) ∈ U ∧ f (v, w) > 0} U = {← u f ∪ {u = (v, w) : (v, w) ∈ U ∧ f (v, w) < c(v, w)} (1.5) − = (w, v) ∈ U eine Rückkante für u = (v, w) ∈ U und c(u) die Dabei bezeichnet ← u f Kapazität einer Kante u im Originalnetzwerk. Die Kapazität einer Kante u im Residualnetzwerk wird durch cf (u) ausgedrückt. Es gilt: ∀u ∈ U : cf (u) = c(u) − f (u), falls f (u) < c(u), ← − −) = f (u). ∀ u ∈ Uf \ U : cf (← u (1.6) (1.7) 1.19 Definition (Informationsstrom). Als Informationsstrom wird ein Tupel (v, R) bezeichnet, wobei v ∈ XT einen Quellknoten und R ∈ R die Senderate dieses Quellknotens repräsentiert. 1.2 Graphentheorie 5 1.2.5 Algorithmen Um Netzwerke zu optimieren und zu analysieren, wird sich vieler graphentheoretischer Algorithmen bedient. Ein Algorithmus, der für die Netzwerkcodierung (Abschnitt 1.3) wichtig ist, ist der Algorithmus von Ford und Fulkerson [12, 13, 14]. Dieser ermittelt den maximalen Fluss durch ein Netzwerk von einem Startknoten s ∈ XT zu einem Endknoten t ∈ XR . Sei G(X, U) ein gerichteter Graph und für jede Kante (v, w) seien c(v, w) die Kapazität der Kante sowie f (v, w) der Fluss über die Kante. Weiterhin sei Gf (X, Uf ) der Graph des Residualnetzwerkes. Gesucht ist der maximale Fluss vom Startknoten s ∈ XT zum Zielknoten t ∈ XR . Der Algorithmus verändert in jedem Durchlauf einen s-t-Fluss, der der Kapazitätskonformität und der Flusserhaltungsbedingung genügen muss (siehe Definition 1.15). Der Ablauf des Ford-Fulkerson-Algorithmus ist in Algorithmus 1 Algorithmus 1: Ford-Fulkerson-Algorithmus / Edmonds-Karp-Algorithmus Eingabe : Graph G mit der Kapazität c, dem Startknoten s und dem Zielknoten t Ausgabe : Der maximale Fluss f von s nach t 1 2 3 4 5 6 7 8 f (u, v) ← 0 für alle Kanten (v, w); solange ein Pfad p von s nach t in Gf existiert, so dass cf (v, w) > 0 für alle Kanten (v, w) ∈ p tue Finde cf (p) = min{cf (v, w)|(v, w) ∈ p}; für alle Kanten (u, v) ∈ p tue f (v, w) ← f (v, w) + cf (p); f (w, v) ← f (w, v) − cf (p); Ende Ende dargestellt. Dieser sucht augmentierende Wege [34], solange bis keine augmentierenden Wege mehr existieren. Sind alle Kantenkapazitäten nichtnegative ganze Zahlen, erhöht jedes Augmentieren entlang eines s-t-Weges den s-t-Fluss um einen ganzzahligen Schritt, also um mindestens 1. Die Terminierung ist somit nach endlich vielen Schritten gesichert. Die obere Schranke der Laufzeit des Algorithmus hängt dann unter anderem von den Kapazitäten c der Kanten ab. Die Laufzeit beträgt O (|X| · |U| · cmax ) mit cmax = max c(u), u∈U wenn c(u) ∈ Z. Sind die Kantenkapazitäten nichtnegative rationale Zahlen terminiert der Algorithmus ebenfalls, da man den Algorithmus für ein äquivalentes Netzwerk anwenden kann, bei dem die Kantenkapazitäten mit deren Hauptnenner multipliziert sind. Bei reellen, irrationalen Kantenkapazitäten muss der Algorithmus jedoch weder terminieren noch gegen einen s-t-Fluss konvergieren. Der Edmonds-Karp-Algorithmus [11] löst die Probleme des Ford-Fulkerson-Algorithmus. Er funktioniert analog, sucht aber augmentierende Wege, die bezüglich ihrer Kan- 6 Kapitel 1 Grundlagen 2 2 3 1 4 3 1 4 5 5 6 6 (a) Unicast (b) Multicast Abb. 1.1: Kommunikationsformen in einem Netzwerk tenanzahl minimal sind. Dies ist mit einer Breitensuche (engl.: Breadth-First-Search) in linearer Laufzeit möglich. Darüber hinaus terminiert der Edmonds-Karp-Algorithmus auch bei beliebigen reellen Kantenkapazitäten. Die Laufzeit beträgt O(|X| · |U|2 ) und ist damit größenordnungsmäßig im Allgemeinen deutlich besser als die des Ford-FulkersonAlgorithmus. 1.3 Netzwerkcodierung Dieser Abschnitt folgt den Darstellungen in [19, 16, 49]. Gegeben sei ein Netzwerk mit mehreren Quellen und mehreren Senken. Jede Quelle möchte ihre Informationen an jeden Senke senden (Multicast, siehe Abb. 1.1(b)). Im traditionellen Routing-Ansatz werden die Informationen von verschiedenen Quellen getrennt voneinander als Pakete durch das Netzwerk transportiert. An jedem Knoten werden die Pakete gespeichert und weitergeleitet. Seit dem Jahr 2000 gibt es einen weiteren Ansatz [6], der den Durchsatz durch das Netzwerk erhöht und für eine bessere Ressourcenausnutzung sorgt: Netzwerkcodierung [21]. Mit diesem Prinzip werden an den sogenannten Netzwerkcodierungsknoten eingehende Pakete linear kombiniert und weitergeleitet. Die Senken können diese Linearkombination wieder decodieren, wenn sie genügend linear unabhängige Kombinationen erhalten. In Abb. 1.2 ist am Beispiel des Butterfly-Netzwerkes der Unterschied zwischen traditionellem Routing-Ansatz und Netzwerkcodierung gezeigt. In Abb. 1.2(a) und (b) sind zwei mögliche Routingvarianten im klassischen Sinne dargestellt. In beiden Fällen erhält nur eine der beiden Senken Informationen von beiden Quellen. Kombiniert man beide Varianten, sind zwei Zeittakte nötig, damit die Informationen von beiden Quellen an beiden Senken vorliegen. Durch Anwendung der Netzwerkcodierung (Abb. 1.2(c)) wird nur ein Zeittakt benötigt, um alle Informationen von allen Quellen an alle Senken zu übertragen. Der Knoten 3 ist ein Netzwerkcodierungsknoten, der eine Linearkombination der Eingangssymbole erzeugt und weiterleitet. Die Empfangsknoten können die einzelnen Informationen der Quellen decodieren, weil sie über eine Kante die Information der einen Quelle erhalten und über die andere Kante eine Linearkombination. Durch einfache Subtraktion kann die Information der anderen Quelle erhalten werden. 1.3 Netzwerkcodierung 7 S1 S2 S1 S2 S1 S2 1 2 1 2 1 2 3 2 3 x 2 4 2 + + x1 x2 x 1 x x1 4 x2 x1 + x2 x1 x2 x2 x1 x2 x1 x1 4 x x 2 x1 x1 3 5 6 5 6 5 6 E1 E2 E1 E2 E1 E2 (a) (b) (c) Abb. 1.2: Das Butterfly-Netzwerk: Die Quellen S1 und S2 senden eine gemeinsame Nachricht an die Senken E1 und E2 . (a) und (b): Routing zu E1 und E2 , (c) mit Netzwerkcodierung 1.20 Satz (Hauptsatz der Netzwerkcodierung). Es wird ein gerichteter azyklischer Graph G(X, U) mit normierten Kanten, das heißt ∀u ∈ U : c(u) = 1, betrachtet. Im Netzwerk existieren |XR | Senken und h = |XT | Quellen mit den Informationströmen (v1 , R1 ), . . . , (vh , Rh ) mit vi ∈ XT und normierten Raten Ri = 1. Angenommen der minimale Schnitt zu allen Senken sei h, dann existiert ein Multicast-Übertragungsverfahren über ein hinreichend großes Alphabet Fq , in dem die Netzwerkknoten die Eingangsdaten linear über Fq kombinieren, so dass zu jeder Senke gleichzeitig eine Rate von h realisiert wird. Nicht alle Annahmen in Satz 1.20 sind restriktiv. Statt normierten Kantenkapazitäten können beliebige rationale Zahlen und parallele Kanten verwendet werden. Ebenso kann durch einen Zusammenhang zu Faltungscodes eine Übertragung mit Verzögerung betrachtet werden [19]. Abb. 1.3 zeigt die lokale Linearkombination zweier Symbole σ1 und σ2 an einem Netzwerkcodierungsknoten mit dem lokalen Codierungsvektor [α1 α2 ]. In einem allgemeinen Netzwerk werden solche Linearkombinationen an verschiedenen Knoten durchgeführt. Die h Symbole σ1 , . . . , σh werden also beim Durchfließen des Graphen mit einem globalen Codierungsvektor a(u) = [a1 (u), . . . , ah (u)] multipliziert, d.h. σ .1 T a(u) · σ = a1 (u) · · · ah (u) · .. . (1.8) σh Der globale Codierungsvektor einer Kante u ist also ein Vektor der Dimension 1 × h, der die Linearkombinationen der Quellsymbole repräsentiert, die über u übertragen werden. Um die Symbole an der Senke wieder zu decodieren, muss die Senke Ej das 8 Kapitel 1 Grundlagen σ1 σ2 α1 × σ1 × α2 σ2 a` = + α1 σ1 + α2 σ2 α1 σ1 + α2 σ2 Abb. 1.3: Lineare Netzwerkcodierung an einem Knoten ` folgende lineare Gleichungssystem lösen: ρj1 · · · ρjh T T = Aj σ1 · · · σh , (1.9) um die Originalsymbole σ1 , . . . , σh zu empfangen. Dabei sei ρji das Symbol, welches auf der Kante (vi , Ej ) übertragen wird und Aj die Matrix der globalen Codierungsvektoren aller ankommenden Kanten (vi , Ej ) ∈ Uin (Ej ). Um das lineare Gleichungssystem in (1.9) eindeutig lösen zu können, müssen alle Aj für alle 1 ≤ j ≤ |XR | vollen Rang besitzen. Außerdem muss jeder lokale bzw. globale Codierungsvektor des Ausgangs eines Knotens in der linearen Hülle der lokalen bzw. globalen Codierungsvektoren des Eingangs des Knotens liegen. 1.21 Satz (Algebraische Formulierung). In der linearen Netzwerkcodierung existieren Koeffizienten αk in einem genügend großen Körper Fq der lokalen Codierungsvektoren, so dass alle Matrizen A1 , . . . , A|XR | , die die Information an den Senken beschreiben, vollen Rang besitzen. Kapitel 2 2 Erreichbare Ratenregion In dieser Arbeit soll ein drahtloses Telekommunikationsnetzwerk untersucht werden, das durch einen Graphen G(X, U) repräsentiert wird. Alle Knoten i ∈ XT werden als Quellen und alle Knoten j ∈ XR werden als Senken bezeichnet. Es soll eine erreichbare Ratenregion für die Quellen ermittelt werden, wenn jede Quelle Daten zu jeder Senke sendet (Mulicast). Im Folgenden werden die zu Grunde liegenden Modelle und Annahmen dargestellt und ein Algorithmus zur Ermittlung einer erreichbaren Ratenregion vorgestellt. Weiterhin wird der Umgang mit Interferenzkanten im Netzwerk diskutiert und das Optimierungsproblem der Sendeleistungsminimierung im Netzwerk charakterisiert. 2.1 Systemmodell Es wird ein Telekommunikationsnetz mit |XT | Quellen und |XR | Senken betrachtet, das durch einen gerichteten azyklischen Graphen G(X, U) repräsentiert wird. Es wird vorausgesetzt, dass für jede Senke t ∈ XR genau |XT | knotendisjunkte Pfade Wi = (si , . . . , t) mit si ∈ XT existieren. Alle Kanten im Netzwerk werden als drahtlose Übertragungsstrecken angenommen und als Multiple Input Single Output (MISO)-Gaußkanäle mit reellen Dämpfungskoeffizienten modelliert (siehe Abschnitt 2.2). Jeder Knoten i ∈ XT ∪ XN besitzt nT (i) Sendeantennen und nR (i) Empfangsantennen. Im weiteren Verlauf der Arbeit soll gelten: ∀i ∈ XT ∪ XN : nT (i) = nT , ∀i ∈ XR ∪ XN : nR (i) = nR = 1. Die Annahme nT (i) = nT ist dabei nicht restriktiv, sondern dient lediglich der Übersichtlichkeit der Arbeit. Jeder Knoten i ∈ XT ∪ XN besitzt eine individuelle Sendeleistungsbeschränkung Pi über alle nT Sendeantennen und wendet Single-StreamSendeknoten Netzwerkcodierung Kanalcodierung Kanal Empfangsknoten Netzwerkdecodierung Kanaldecodierung Abb. 2.1: Übertragungsmodell 10 Kapitel 2 Erreichbare Ratenregion Beamforming mit dem Beamforming-Vektor wi an (siehe Abschnitt 2.4). Es wird zunächst angenommen, dass im Netzwerk keine Interferenzkanten existieren, sondern alle Kanten für die Informationsübertragung genutzt werden. Dies ist zum Beispiel in einem Szenario der Fall, in dem alle Knoten weit genug voneinander entfernt sind, um sich gegenseitig nicht mehr zu stören. Interferenz tritt dann nur an Knoten auf, die mehrere eingehende Kanten besitzen, wo sich diese gegenseitig beeinflussen. Diese Interferenz wird im Modell des Multiple Access Channel (MAC) (siehe Abschnitt 2.3) berücksichtigt. In Abb. 2.1 ist eine Übertragungsstrecke zwischen zwei Knoten dargestellt. Jeder Knoten ist sendeseitig in der Lage sowohl eine geeignete Kanalcodierung für eine Vorwärtsfehlerkorrektur (engl.: Forward Error Correction) (FEC) als auch Netzwerkcodierung (engl.: Network coding) (NC) durchzuführen. Der Netzwerkcode soll nicht Gegenstand der Betrachtung sein. Es wird davon ausgegangen, dass die Bedingungen des Hauptsatzes der Netzwerkcodierung (Satz 1.20) erfüllt sind und somit ein beliebiger Netzwerkcode existiert. Ist dies der Fall, wird für jeden Knoten im Netzwerk mit mehr als einem Eingang angenommen, dass dieser Netzwerkcodierung durchführt. Da die Netzwerkcodierung eine Überlagerung der Eingangssymbole bewirkt, muss am Knotenausgang nur die größte der Eingangsraten unterstützt werden und nicht wie im klassischem Routingfall die Summe der Eingangsraten. Da die Raten der durch das Netzwerk übertragenen Quellinformationen möglichst groß sein sollen, ist die Annahme, dass an jedem Knoten mit mehr als zwei Eingängen Netzwerkcodierung durchgeführt wird, sinnvoll. Die Decodierung der Netzwerkcodierung erfolgt an den Senken i ∈ XR . Die Informationsübertragung im Netzwerk erfolgt nach dem Decode-and-ForwardPrinzip, das heißt jeder Knoten versucht, die eingehenden Informationen bezüglich der Kanalcodierung zu decodieren und sendet diese mit einer für den Folgekanal geeigneten neuen Kanalcodierung weiter. Die Kanalcodierung soll dabei nicht Bestandteil dieser Arbeit sein. Die Rauschleistung wird für jeden Knoten i ∈ XN ∪ XR als konstant angenommen und mit σ 2 bezeichnet. 2.2 Kanalmodell Es wird ein lineares Kanalmodell für alle Knoten i ∈ XT ∪ XN und alle Knoten j ∈ XN ∪ XR mit i ↓ j angenommen, das durch folgende Gleichung beschrieben werden kann: y j = H ij · xi + z j . (2.1) Dabei ist H ij die Kanalmatrix mit den Kanalkoeffizienten von Knoten i zu Knoten j, xi der Ausgangsvektor am Knoten i, y j der Eingangsvektor am Knoten j und z j weißes Gaußsches Rauschen mit der Varianz σ 2 . Im Folgenden soll die erreichbare Rate zwischen zwei beliebigen adjazenten Knoten beschrieben werden. Die Indizes der Vektoren und Matrizen sind der Übersichtlichkeit halber weggelassen worden. Im allgemeinsten Fall haben alle Knoten mehrere Empfangs- und Sendeantennen. Die Kanäle sind somit Multiple Input Multiple Output (MIMO)-Kanäle. Die maximal erreichbare Übertragungsrate unter Sendeleistungsbeschränkung P über alle Sendeantennen mit ρ = σP2 2.2 Kanalmodell 11 Quellen S1 ... S|XT | Netzwerk... knoten ... E1 Senken E|XR | Abb. 2.2: Systemmodell eines Telekommunikationsnetzwerkes ist für MIMO-Gaußkanäle mit reeller Dämpfungsmatrix H durch R< 1 · log2 det I nR + ρHQH T 2 (2.2) beschrieben. Dabei ist H eine Kanalmatrix der Dimension nR × nT . Für die Matrix Q gilt: tr E xxT tr(Q) = ≤ 1. P Die Einheit der Kapazität in (2.2) hängt von der Basis des verwendeten Logarithmus ab. Ist die Basis wie in diesem Fall zwei, so ist die Einheit bit pro Kanalbenutzung. Im weiteren Verlauf wird ausschließlich mit Basis-2-Logarithmen gearbeitet und die Einheit weggelassen. Um die Rechnung und Implementierung zu vereinfachen, soll im weiteren Verlauf der Arbeit mit nur einer Empfangsantenne gearbeitet werden. Die Kanäle werden zu MISO-Kanälen und die Ableitung vom MIMO-Fall zum MISO-Fall soll im Folgenden kurz dargestellt werden. Wird die Anzahl der Empfangsantennen auf 1 reduziert, das heißt nR = 1, wird aus der Einheitsmatrix der Dimension nR × nR , eine Matrix der Dimension 1 × 1 und es bleibt somit nur eine Zahl, nämlich 1, übrig. Aus der Kanalmatrix H der Dimension nR × nT wird ein Vektor h der Dimension 1 × nT . Die Determinate kann entfallen, da die Determinante einer Zahl eben diese Zahl ist. Gleichung (2.2) ergibt sich nun zu: R< 1 · log2 1 + ρhQhT . 2 (2.3) Die Matrix Q ist eine quadratische symmetrische Matrix mit der Leistungsverteilung über den Sendeantennen auf der Diagonalen. Bei Anwendung von Single-Stream-Beamforming 12 Kapitel 2 Erreichbare Ratenregion j hji i k hki Abb. 2.3: MAC für zwei eingehende Kanten mit dem Beamforming-Vektor w kann diese Matrix auch als Q = ωω T geschrieben werden und (2.3) ergibt sich zu: R< 1 · log2 1 + ρhωω T hT . 2 (2.4) Mit (ω T hT ) = (hω)T = hω ergibt sich für die maximal erreichbare Übertragungsrate für MISO-Kanäle mit Single-Stream-Beamforming: R< 1 · log2 1 + ρ · (hω)2 . 2 (2.5) Es ist zu beachten, dass bei dieser Herleitung der Kanalvektor h ein Zeilenvektor ist. Im Allgemeinen werden alle Vektoren als Spaltenvektoren verstanden und (2.5) wird zu R< 1 · log2 1 + ρ · (hT ω)2 . 2 (2.6) In dieser Form soll (2.6) auch im weiteren Verlauf der Arbeit verwendet werden. 2.3 Multiple Access Channel (MAC) Besitzt ein Knoten i ∈ XN ∪ XR mehr als eine eingehende Kante, so ergibt sich ein MAC. Der einfachste Fall ist der mit zwei eingehenden Kanten (Abb. 2.3). Die größte erreichbare Ratenregion ergibt sich unter Verwendung von Code Division Multiple Access (CDMA) und kann für das Kanalmodell aus Abschnitt 2.2 mit i ∈ XN ∪ XR sowie j, k ∈ XT ∪ XN und j, k ↓ i durch ! 2 · w ) · P (hT 1 j j ji (2.7a) Rji < · log2 1 + 2 σ2 2 1 (hT ki · w k ) · Pk Rki < · log2 1 + (2.7b) 2 σ2 ! T 2 2 (hT 1 ji · w j ) · Pj + (hki · w k ) · Pk (2.7c) Rji + Rki < · log2 1 + 2 σ2 beschrieben werden [10, Kap. 15]. Es sei P(Uin (i)) die Potenzmenge von Uin (i). Im allgemeinen Fall wird die Ratenregion für jeden Knoten i ∈ XN ∪ XR mit n = |Uin (i)| 2.4 Beamforming 13 eingehenden Kanten durch |P(Uin (i)) \ ∅| = n X n `=1 ` = 2n − 1 (2.8) Gleichungen beschrieben: ∀J ∈ P(Uin (i)) \ ∅ : X Rji (j,i)∈J | {z } Polynom 1. Grades < 1 · log2 1 + 2 | P 2 (hT ji · w j ) · Pj (j,i)∈J σ2 {z a∈R . (2.9) } Es ist ersichtlich, dass jede Ratenbedingung ein Polynom 1. Grades mit den Variablen Rji darstellt. Die Beschränkung a ist für bekannte Kanalvektoren hji , bekannte Beamforming-Vektoren wj , bekannte Leistungsbeschränkungen Pj und bekannte Rauschleistung σ 2 durch einen konstanten Term gegeben. Eine Ratenbedingung wird deshalb wie folgt definiert: 2.1 Definition (Ratenbedingung). Es sei a ∈ R und P (x1 , . . . , xn ) ein homogenes Polynom 1. Grades mit n Variablen. Eine Ratenbedingung ist ein Tupel (P, a) welches mit der Ungleichung P < a assoziiert ist. 2.4 Beamforming Es wird angenommen, dass alle im Netzwerk vorhandenen Kanten für den Informationstransport benötigt werden. Im Folgenden wird angenommen, dass jeder Knoten Single-Stream-Beamforming anwendet. Dies bedeutet, dass auf jeder ausgehenden Kante eines Knotens die gleiche Information übertragen wird. Daraus folgt, dass im MulticastSzenario mit |XT | Quellen und |XR | Senken unter Anwendung von Netzwerkcodierung für jede Senke t ∈ XR genau |XT | knotendisjunkte Pfade Wi = (si , . . . , t) mit si ∈ XT existieren müssen. Unter diesen Voraussetzungen ist die optimale BeamformingStrategie eines Knoten i ∈ XT ∪ XN eine Strategie, die es ermöglicht, mit gleicher Rate zu allen adjazenten Knoten zu senden. In [17] wurde eine solche Strategie vorgestellt. Für jeden Knoten i ∈ XT ∪ XN kann der optimale Beamforming-Vektor durch die democratic max-min-fair solution gefunden werden: (opt) T 2 wi = arg max min(hij · wi ) . (2.10) wi : kwi k≤1 j: i↓j Für dieses Optimierungsproblem sind lediglich lokale Kanalzustandsinformationen (engl.: Channel State Information) (CSI) erforderlich. Aus diesem Grund kann die Bestimmung des Beamforming-Vektors dezentral erfolgen. Für den Fall von weniger als drei ausgehenden Kanten kann dieses Problem noch analytisch durch Fallunterscheidungen gelöst werden. 14 Kapitel 2 Erreichbare Ratenregion |Uout (i)| = 1: Für jeden Knoten i ∈ XT ∪ XN mit |Uout (i)| = 1 und i ↓ j, wobei j ∈ XN ∪ XR (opt) gilt, ist der optimale Beamforming-Vektor wi durch (opt) wi = hij khij k (2.11) gegeben. Diese Strategie entspricht Maximum-Ratio-Transmission (MRT) [22, 23], die die maximale Rate für Punkt-zu-Punkt-Übertragungen erreicht. |Uout (i)| = 2: Für jeden Knoten i ∈ XT ∪ XN mit |Uout (i)| = 2 sowie i ↓ j, k und j 6= k, wobei (opt) j, k ∈ XN ∪ XR gilt, ist der optimale Beamforming-Vektor wi durch folgende Ausdrücke gegeben: 1. wenn khij k2 < hT ij · hik : (opt) = hij , khih k (2.12) (opt) = hik , khik k (2.13) wi 2. wenn khik k2 < hT ij · hik : wi T 2 3. wenn khij k2 ≥ hT ij · hik und khik k ≥ hij · hik : (opt) wi = λi · hij + (1 − λi ) · hik kλi · hij + (1 − λi ) · hik k mit λi = − (hij − hik )T · hik . k(hij − hik )k2 (2.14) (2.15) |Uout (i)| ≥ 3: Für mehr als zwei ausgehende Kanten an einem Knoten i ∈ XT ∪ XN kann mit (opt) dem Ansatz aus [25] der optimale Beamforming-Vektor wi für nT ≥ |Uout (i)| gefunden werden. Sei zi eine Abbildung von Uout (i) auf eine Teilmenge der natürlichen Zahlen mit K = |Uout (i)|: zi : Uout (i) → {1, . . . , K} , (i, j) 7→ zi (i, j), (2.16) wobei gilt: ∀i ∈ XT ∪ XN : j 6= k ⇔ zi (i, j) = 6 zi (i, k) mit i ↓ j, k. Der optimale (opt) Beamforming Vektor wi ergibt sich aus: (opt) T wi = arg max min hij · wi (λ) (2.17) wi (λ) j:i↓j 2.5 Erreichbare Ratenregion 15 mit ! wi (λ) = v max X λzi (i,j) hij hT ij (2.18) j:i↓j und ( λ ∈ Λ := λ ∈ [0, 1]K : K X ) λ` = 1 . (2.19) `=1 Dabei ist v max der Eigenvektor zum größten Eigenwert der Matrix hij hT ij . Ein Ansatz für nT < |Uout (i)| ist ebenfalls in [25] zu finden. Für jeden Knoten i ∈ XT ∪ XN wird der Term (opt) 2 bi = min(hT ij · w i j: i↓j ) (2.20) definiert. Damit ergibt sich für die Rate Rij , welche am Knoten i ∈ XT ∪ XN auf allen ausgehenden Kanten (i, j) ∈ Uout (i) unterstützt wird, der Ausdruck bi · P i 1 Rij < R̃ij = log2 1 + . (2.21) 2 σ2 2.5 Erreichbare Ratenregion Um die Ratenregion der Quellen zu bestimmen, werden alle Bedingungen an den Knoten und Kanten im Netzwerk analysiert und auf Bedingungen an die Raten der Quellen zurückgeführt. Dabei liefert jeder Knoten Bedingungen durch seine Eingänge und durch seine Ausgänge. Es ergibt sich ein System von Ungleichungen, das die maximal erreichbaren Raten der Quellen beschreibt. Alle Bedingungen werden als Ratenbedingungen gemäß Definition 2.1 dargestellt und in einer Menge B gesammelt. Dabei kann es vorkommen, dass Ratenbedingungen (Pk , ak ) und (P` , a` ) existieren, für die gilt: Pk = P` und ak 6= a` . Da diese Ratenbedingungen Ungleichungen darstellen, reicht es, die striktere von beiden der Menge B hinzuzufügen bzw. bereits enthaltene Ratenbedingungen auszutauschen. Sei (Pk , ak ) eine Ratenbedingung, die zur Menge B hinzugefügt werden soll. Dann gilt: ∃(P` , a` ) ∈ B mit P` = Pk und a` > ak ⇒ a` := ak , 6 ∃(P` , a` ) ∈ B mit P` = Pk ⇒ B = B ∪ {(Pk , ak )}. (2.22) (2.23) Trifft weder (2.22) noch (2.23) zu, bleibt die Menge B unverändert. Für die Anzahl ν = |B| der in B enthaltenen Ratenbedingungen kann eine obere Schranke angegeben werden: n X n m+k−1 ν≤ · (2.24) k k k=1 mit n = max |Uin (i)| und m = |XT | . i∈X (2.25) 16 Kapitel 2 Erreichbare Ratenregion Diese Schranke geht von dem Fall aus, dass für jede Kante (i, j) ∈ U gilt: Die Menge der Informationsströme ist gegeben durch A(i, j) = {(s, Rs ) : s ∈ XT }, das heißt über jede Kante (i, j) ∈ U fließen Informationsströme aller Quellen s ∈ XT . 2.5.1 Bedingungen am Knoteneingang Im Folgenden werden die Bedingungen am Knoteneingang untersucht und auf Ratenbedingungen der Quellen zurückgeführt. Ist |Uin (i)| = 1, das heißt hat der Knoten i ∈ XN ∪ XR nur einen Eingang, wird der Knoteneingang nur durch die Kapazität der Eingangskante beschränkt: ! T 2 · w ) · P (h 1 j j ji . (2.26) Rji < · log2 1 + 2 2 σ Ist |Uin (i)| > 1, das heißt hat der Knoten i ∈ XN ∪ XR mehr als einen Eingang, wird die erreichbare Rate durch die Bedingungen des MAC beschränkt (Abschnitt 2.3). Da diese Bedingungen die Kanalkapazitäten der Eingangskanäle beinhaltet, kann der Fall |Uin (i)| = 1 als Spezialfall betrachtet werden. Somit reicht für die Implementierung der Fall des MAC aus, um alle Fälle zu berücksichtigen. Jede Kante u ∈ Uin (i) transportiert eine Menge an Informationsströmen A(u). Für jede Kante sowie alle Kombinationen von Kanten stellt der MAC Bedingungen an die maximal übertragbare Rate, damit die einzelnen Informationen decodiert werden können (siehe Abschnitt 2.3). Für die Informationsströme bedeutet dies, dass die Rate des Informationsstroms, welcher über eine Kante u fließt, maximal so groß sein darf wie die maximale Rate, die der Kanal übertragen darf, damit der MAC noch decodieren kann. Um die Ratenbedingungen des MAC auf Ratenbedingungen der Quellen zu übertragen, gehe man wie folgt vor: Es sei (P, a) eine Ratenbedingung, die sich aus den MAC-Bedingungen am Knoten i ∈ XN ∪ XR ergibt. Sei J ⊆ Uin (i), dann ist P ein Polynom folgender Form: X P = Rji . (2.27) (j,i)∈J A(j, i) sei die Menge der Informationsströme, die über die Kante (j, i) übertragen werden. Die Ratenbedingungen der Quellen ergeben sich dann durch Ersetzen der Rate Rji im Polynom P durch die Raten Rs , wenn (s, Rs ) ∈ A(j, i). Dies wird für alle Kombinationen von Informationsströmen über verschiedene Kanten durchgeführt. Die Menge dieser Kombinationen kann zum Beispiel durch einen iterativen Funktionsaufruf (siehe Funktion streamcombo) realisiert werden. In Beispiel 2.2 sind die Vorgehensweise und die Ergebnisse für einen Knoten mit zwei Eingängen dargestellt. Es ist zu beachten, dass die in Abschnitt 2.3 beschriebene Ratenregion unter der Annahme gültig ist, dass es sich um unkorrelierte Eingänge handelt. Durch die Anwendung der Netzwerkcodierung ist dies aber nicht immer der Fall, da über die Kanten Überlagerungen mehrerer Informationsströme übertragen werden und somit auf zwei Eingangskanten dieselben Quellinformationen in verschiedenen Linearkombinationen mit anderen Quellinformationen vorliegen können. Durch geschickte Codierung, wie 2.5 Erreichbare Ratenregion 17 Funktion streamcombo Eingabe : Zu betrachtender Knoten i Eingabe : Menge Uin (i) aller eingehenden Kanten des Knoten i Eingabe : Menge K aller bereits gefundene Kombinationen Eingabe : Index x der aktuellen Kante in der Menge Uin (i) Eingabe : Stapel von Informationsströmen T Ausgabe : Gefundene Kombinationen K 1 2 3 4 5 6 7 8 9 10 11 (j, i) = Uin (i)[x]; für alle (s, Rs ) ∈ A(j, i) tue füge (s, Rs ) zu T hinzu; wenn x = |Uin (i)| dann K ← K ∪ {T}; Ende sonst K ← streamcombo(i, Uin (i), K, x + 1, T); Ende entferne oberstes Element vom Stapel T; Ende zum Beispiel in [9, 31] vorgestellt, kann die Ratenregion vergrößert werden. Für den weiteren Verlauf der Arbeit wird angenommen, dass alle Eingänge an allen Knoten im Netzwerk unkorreliert sind. Dies bedeutet, dass die ermittelte Ratenregion nicht zwingend das Optimum repräsentiert, aber eine erreichbare Region darstellt. 1 2 (1, R1 ) (2, R2 ) j k (1, R1 ) (2, R2 ) (1, R1 ) i Abb. 2.4: Beispiel: Bedingungen am Knoteneingang 2.2 Beispiel. Das Beispiel zeigt die Ratenbedingungen der Quellen, die sich aus den 18 Kapitel 2 Erreichbare Ratenregion MAC-Bedingungen am Knoten i ∈ XN ∪XR ergeben, wenn folgende Mengen existieren: XT = {1, 2} , Uin (i) = {(k, i), (j, i)} , A(k, i) = {(1, R1 ), (2, R2 )} , A(j, i) = {(1, R1 )} . Dieses Beispiel wird in Abb. 2.4 illustriert. Durch Anwendung der MAC-Bedingungen ergibt sich folgendes Gleichungssystem für die Quellraten R1 und R2 : 2 1 (hT ki · w k ) · Pk R1 < · log2 1 + (2.28a) 2 σ2 2 1 (hT ki · w k ) · Pk R2 < · log2 1 + (2.28b) 2 σ2 ! 2 (hT 1 ji · w j ) · Pj R1 < · log2 1 + (2.28c) 2 σ2 ! T 2 2 (hT 1 ki · w k ) · Pk + (hji · w j ) · Pj (2.28d) R1 + R1 < · log2 1 + 2 σ2 ! T 2 2 (hT 1 ki · w k ) · Pk + (hji · w j ) · Pj R2 + R1 < · log2 1 + (2.28e) 2 σ2 Die Gleichungen a) - c) ergeben sich aus den Einzelbedingungen des MAC und entsprechen den Kantenkapazitäten über die jeweilige Kante. Die Gleichungen d) und e) ergeben sich aus der Summenbedingung des MAC für jede Kombination ((x, Rx ), (y, Ry )) ∈ A(k, i) × A(j, i). 2.5.2 Bedingungen am Knotenausgang Die Bedingungen am Knotenausgang sind trivial, da diese nur von den Kapazitäten der ausgehenden Kanten bestimmt werden. Da alle Knoten Single-Stream-Beamforming betreiben und jeder Knoten mit nur einer Rate an alle adjazenten Knoten senden kann, ist die maximal erreichbare Rate einer Kante (i, j) ∈ Uout (i), mit der über diese Kante übertragen wird, kleiner R̃ij (siehe Abschnitt 2.4). Die Bedingungen, die sich daraus für die Quellraten ergeben, lassen sich wie folgt ableiten: Jede Kante (i, j) ∈ Uout (i) von einem Knoten i ∈ XT ∪ XN zu einem Knoten j ∈ XN ∪ XR transportiert eine Menge A(i, j) von Informationsströmen (k, Rk ) ∈ A(i, j). Damit alle Informationsströme (k, Rk ) über die Kante (i, j) mit der maximal übertragbaren Rate R̃ij übertragen werden können, muss gelten: ∀(i, j) ∈ Uout (i) ∧ ∀(k, Rk ) ∈ A(i, j) : Rk < R̃ij . (2.29) Die Menge A(i, j) wird bei bekanntem Netzwerkcode durch diesen bestimmt. Da in dieser Arbeit angenommen wird, dass der konkrete Netzwerkcode nicht bekannt ist, ist 2.6 Algorithmus 19 die Menge A(i, j) wie folgt beschrieben: [ A(i, j) = A(`, i). (2.30) (`,i)∈Uin (i) Mit Definition 2.1 kann (2.29) als Ratenbedingung (P, a) mit (P, a) = (1 · Rk , R̃ij ) (2.31) geschrieben werden. 2.5.3 Ratenregion mit klassischem Routing Um die Vorteile der Netzwerkcodierung zu untersuchen, soll im Folgenden kurz auf die erreichbare Ratenregion mit klassischem Routing eingegangen werden. Die Vorgehensweise zur Ermittlung der Ratenregion ist die gleiche, wie bei der Untersuchung mit Netzwerkcodierung. Der einzige Unterschied liegt in den Bedingungen am Knotenausgang. Im Fall mit Netzwerkcodierung wird die Rate Rk eines Informationsstroms (k, Rk ) über eine Kante (i, j) nur durch die maximal übertragbare Rate R̃ij dieser Kante beschränkt (siehe Gleichung (2.29)). Im Fall mit klassischem Routing muss allerdings die Summe der Eingangsraten am Knoten i auf den ausgehenden Kanten unterstützt werden, da die Informationsströme, die am Knoten i ankommen, getrennt voneinander, also nicht als Linearkombination, weitergeleitet werden. Mit klassischem Routing gilt deshalb mit [ Asum = A(u) (2.32) u∈Uin (i) folgende Bedingung am Knotenausgang: ∀(i, j) ∈ Uout (i) : X Rk < R̃ij . (2.33) (k,Rk )∈Asum Dies kann als Ratenbedingung (P, a) mit P = X Rk (2.34) (k,Rk )∈Asum und a = R̃ij (2.35) geschrieben werden. 2.6 Algorithmus Im Folgenden wird ein Algorithmus vorgestellt, mit dem die in Abschnitt 2.5 diskutierte Ratenregion ermittelt werden kann. Der Algorithmus erwartet eine gültige Repräsentation des Netzwerkes als Graph G(X, U) sowie alle Kanalvektoren hij für alle Kanten 20 Kapitel 2 Erreichbare Ratenregion (i, j) ∈ U und alle individuellen Leistungsbeschränkungen Pi aller Knoten i ∈ XT ∪XN . Weiterhin wird erwartet, dass für jede Senke t ∈ XR genau |XT | knotendisjunkte Pfade existieren, das heißt von jeder Quelle s ∈ XT gibt es genau einen Pfad zur Senke t. Das heißt, alle Kanten im Netzwerk werden zur Übertragung von allen Quellen zu allen Senken verwendet. Welche Informationsströme über welche Kante übertragen werden, kann mit dem Algorithmus 2 ermittelt werden. Dieser bildet an jedem Knoten die Vereinigung aller eingehenden Informationsströme und weist diese allen ausgehenden Kanten zu. Da diese Vorgehensweise nicht immer den tatsächlichen Netzwerkcode wiederspiegeln muss, kann dieser Algorithmus leicht ausgetauscht werden, um die Pfadsuche an den Netzwerkcode anzupassen. Algorithmus 2: Pfadsuche im Netzwerk Eingabe : Graphenrepräsentation G(X, U) eines Netzwerkes Ausgabe : Zuordnung von Informationsströmen zu jeder Kante 1 2 3 4 Es sei A(i, k) die Menge der Informationsströme über die Kante (i, k); Erstelle topologisch sortierte Liste LX aller Knoten i ∈ X im Netzwerk; für jedes i = LS X (1), . . . , LX (|X|) tue A(i) = A(j, i); (j,i)∈Uin (i) 5 6 7 8 für jedes (i, k) ∈ Uout (i) tue A(i, k) := A(i) Ende Ende Der Algorithmus zur Ermittlung der erreichbaren Ratenregion beginnt mit der Initialisierung der Menge aller Quellratenbedingungen B = ∅. Danach wird eine topologisch sortierte Liste aller Knoten im Netzwerk erstellt. Diese Liste wird durchlaufen und für jeden Knoten die Eingangs- und Ausgangsbedingungen (siehe Abschnitt 2.5.1 und 2.5.2) ermittelt und auf Quellratenbedingungen zurückgeführt. Der komplette Algorithmus ist in Algorithmus 3 dargestellt. Als Rückgabe erhält man die Menge B, die alle aktiven Ratenbedingungen der Raten Rs aller Quellen s ∈ XT enthält. 2.7 Leistungsoptimierung Die erreichbare Ratenregion des Netzwerks wird ermittelt, indem für die Kapazität eines Kanals angenommen wird, dass der sendende Knoten mit maximaler Leistung sendet, da dies die Übertragungsrate des Kanals maximiert. Nach Bestimmung der Ratenregion kann diese Annahme aber fallengelassen werden, da die Kapazität der Kanäle durch schlechtere nachfolgende Kanäle nicht immer voll ausgeschöpft werden kann. Für die praktische Anwendung ist es daher sinnvoll, die Sendeleistung an den Knoten so weit zu reduzieren, dass die Ratenregion gerade noch erreicht wird. Damit ergibt sich ein konvexes Optimierungsproblem. Im Folgenden sollen kurz die allgemeinen Grund- 2.7 Leistungsoptimierung Algorithmus 3: Ratenregion mit Netzwerkcodierung Eingabe : Graphenrepräsentation G(X, U) eines Netzwerkes Eingabe : Alle Pfade von allen Quellen zu allen Senken Eingabe : Kanalparameter hij , Leistungsbeschränkungen Pi Ausgabe : Die erreichbare Ratenregion des Netzwerkes für alle Raten Rs der Quellen s ∈ XT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 Erstelle Menge B = ∅ ; Erstelle topologisch sortierte Liste LX aller Knoten i ∈ X im Netzwerk; für jedes i = LX (1), . . . , LX (|X|) tue wenn |Uin (i)| > 0 dann Erstelle Menge E = ∅ aller Eingangsbedingungen; Berechne MAC-Bedingungen (Abschnitt 2.3); Übertrage MAC-Bedingungen auf Ratenbedingungen (Pe , ae ) für die Quellen (Abschnitt 2.5.1); E ← E ∪ (Pe , ae ); Ende wenn |Uout (i)| > 0 dann Erstelle Menge F = ∅ aller Ausgangsbedingungen; (opt) Berechne wi (Abschnitt 2.4); für alle j : i ↓ j tue berechne R̃ij (Abschnitt 2.4); für alle (s, Rs ) ∈ A(i, j) tue P = 1 · Rs ; a = R̃ij ; F ← F ∪ {(P, a)}; Ende Ende Ende für jedes (Pi , ai ) ∈ F ∪ E tue Setze inB = False; für jedes (Pb , ab ) ∈ B tue wenn Pi = Pb ∧ ai < ab dann ab ← ai ; inB ← True; Ende Ende wenn inB = False dann B ← B ∪ {(Pi , ai )}; Ende Ende Ende 21 22 Kapitel 2 Erreichbare Ratenregion lagen konvexer Optimierung dargelegt und diese dann auf das Problem der Sendeleistungsoptimierung angewandt werden. 2.7.1 Konvexe Optimierung Das Problem konvexer Optimierung wird detailliert in [8] behandelt. Dieser Abschnitt bezieht sich hauptsächlich auf [8, Kap. 4]. Ein Optimierungsproblem mit x ∈ Rn ist konvex, wenn folgendes gilt: Seien gi : K → R mit 1 ≤ i ≤ m konvexe Funktionen und hj : K → R mit 1 ≤ j ≤ l affine Funktionen mit K als konvexer Teilmenge von Rn . Weiterhin sei f : K → R eine konvexe Zielfunktion. Ein konvexes Optimierungsproblem ist dann wie folgt beschrieben: min f (x) x∈K unter den Nebenbedingungen: gi (x) ≤ 0, 1 ≤ i ≤ m, hj (x) = 0, 1 ≤ j ≤ l. Mit Hilfe der Karush-Kuhn-Tucker-Bedingungen (KKT-Bedingungen), einer Verallgemeinerung der Lagrange-Multiplikatoren, kann eine Lösung gefunden werden. 2.3 Satz (hinreichende Bedingungen). Es seien x̂ ∈ K und die Gradienten ∇gi (x̂) und ∇hj (x̂) linear unabhängig. Falls x̂ ein lokales Minimum ist, dann existieren Konstanten µi ≥ 0 mit 1 ≤ i ≤ m und νj mit 1 ≤ j ≤ `, so dass ∇f (x̂) + m X µi ∇gi (x̂) + i=1 ` X νj ∇hj (x̂) = 0, (2.36) j=1 µi gi (x̂) = 0 für alle 1 ≤ i ≤ m. (2.37) Der Punkt x̂ ist dann ein globales Minimum. 2.7.2 Optimierung der Sendeleistungen Die Optimierung der Sendeleistung kann für zwei ähnliche Probleme durchgeführt werden: 1. Eine Ratenregion wurde mittels des Algorithmus aus Abschnitt 2.6 ermittelt. Die Sendeleistungen der Knoten im Netzwerk sollen soweit reduziert werden, dass die ermittelte Ratenregion gerade noch erreicht wird. 2. Es wird eine Ratenregion vorgegeben, die sich innerhalb der erreichbaren Ratenregion des Netzwerkes befindet. Dies kann zum Beispiel in einem Szenario sinnvoll sein, wo den Quellen bestimmte Raten garantiert werden (Quality of Service (QoS)). Die Sendeleistungen der Knoten im Netzwerk sollen so optimiert werden, dass diese Ratenregion gerade noch erreicht wird. 2.7 Leistungsoptimierung 23 Diese beiden Optimierungsprobleme unterscheiden sich lediglich in der Art und Weise, wie die Ratenregion, die es zu erreichen gilt, ermittelt wurde. Das Optimierungsproblem ist jedoch dasselbe. Es sei p der Vektor mit den Sendeleistungen pi aller Knoten i ∈ XT ∪ XN sowie P der Vektor mit den Leistungsbeschränkungen Pi aller Knoten i ∈ XT ∪ XN . Für das Optimierungsproblem sind individuelle Leistungsbeschränkungen nicht zwingend notwendig. Diese wegzulassen ist allerdings nur sinnvoll, wenn eine Ratenregion gegeben ist, die nicht zuvor mit einer individuellen Leistungsbeschränkung berechnet wurde. Für die Optimierung der Sendeleistung an den Knoten im Netzwerk sieht die Zielfunktion wie folgt aus: X f (p) = pi . (2.38) i∈XT ∪XN Diese Zielfunktion soll über p minimiert werden. Damit wird die Gesamtleistung, die vom Netzwerk verbraucht wird, minimiert, was für die Praxis von großer Bedeutung ist. Da die Ratenregion weiterhin erreicht werden soll, gilt es, die Nebenbedingungen zu finden, die diese beschreiben. Dies sind die MAC-Bedingungen (siehe Abschnitt 2.3) an den Knoteneingängen beziehungsweise die Kantenkapazitäten an den Knotenausgängen. Diese Bedingungen können nach wenigen Umformungsschritten in folgende Form gebracht werden: 2· P R ij σ2 (i,j)∈J · 2 − 1 ≤ 0. (2.39) gµ (p) = P 2 (hT ij · w i ) · pi (i,j)∈J Dabei sei J ⊆ Uin (j). Affine Funktionen treten bei diesem Optimierungsproblem nicht auf. Das sich ergebende Optimierungsproblem ist konvex (siehe Anhang A) und kann wie folgt beschrieben werden: Es sei L = |XT ∪ XN | sowie P = p ∈ RL : ∀i ∈ XT ∪ XN : 0 ≤ pi ≤ Pi (2.40) und P(Uin (j)) die Potenzmenge von Uin (j). Das Optimierungsproblem lautet dann X pi (2.41) min p∈P i∈XT ∪XN mit den Nebenbedingungen für alle j ∈ XN ∪ XR 2· P R ij σ2 (i,j)∈J ∀J ∈ P(Uin (j)) \ ∅ : gµ (p) = P · 2 − 1 ≤ 0. 2 (hT ij · w i ) · pi (2.42) (i,j)∈J Die optimale Lösung kann mit Hilfe der Lagrange-Funktion gefunden werden: L(p, Λ) = f (p) + m X µ=1 λµ gµ (p) (2.43) 24 Kapitel 2 Erreichbare Ratenregion mit m = |XN ∪ XR | · |P|, wobei Λ = (λ1 , . . . , λm ) und gµ alle Nebenbedingungen bezeichnet. Der optimale Punkt p̂ ist der Punkt für den ∇f (p̂) = 0 gilt. Im vorliegenden Fall der Leistungsoptimierung ist es nicht praktikabel, die Lösung symbolisch zu ermitteln. Es gibt zahlreiche Programme (wie zum Beispiel Matlab, GLPK, etc.), die die Lösung numerisch ermitteln können. Die Zielfunktion und die Nebenbedingungen werden in Matrixschreibweise angegeben und die Struktur sieht wie folgt aus: min c · x (2.44) A · x ≤ b, x ≤ xmax , x ≥ xmin . (2.45) (2.46) (2.47) unter den Nebenbedingungen: Dabei ist x der Vektor der Variablen, die es zu optimieren gilt. x kann dabei Werte aus Rn annehmen. Gleichung (2.45) repräsentiert alle linearen Nebenbedingungen, während (2.46) und (2.47) obere und untere Schranken für die einzelnen Variablen darstellen. 2.8 Erweiterungen des Algorithmus Im Folgenden sollen mögliche Erweiterungen der vorgestellten Modelle und des Algorithmus diskutiert werden. Folgende Annahmen aus den Abschnitten 2.5 und 2.6 sollen dabei untersucht werden: a) Es existiert keine Interferenz im Netzwerk, außer an Knoten mit mehr als einem Eingang. Das heißt es existieren keine Interferenzkanten. b) Alle Kanten im Netzwerk werden zum Informationstransport verwendet. c) Es existieren für jede Senke t ∈ XR genau |XT | knotendisjunkte Pfade Wi = (si , . . . , t) mit si ∈ XT . Es wird deutlich, dass die Annahmen a) - c) gekoppelt sind. Wird Annahme a) fallen gelassen und werden zusätzliche Interferenzkanten in das Netzwerk eingefügt, wäre es auch denkbar, diese Kanten zur Informationsübertragung zu verwenden. Somit existieren mehr Pfade als in c) angenommen und auch Annahme c) muss fallengelassen werden. Durch das Hinzufügen von Interferenzkanten werden auch nicht mehr alle Kanten im Netzwerk zum Informationstransport verwendet und auch Annahme b) entfällt. Es ergibt sich ein Optimierungsproblem, welches zunächst entscheiden muss, ob eine Kante als Interferenzkante betrachtet wird oder zur Informationsübertragung verwendet wird. Dabei soll die erreichbare Ratenregion der Quellen maximiert werden. Die folgenden Abschnitte diskutieren diese Probleme. 2.8 Erweiterungen des Algorithmus 25 2.8.1 Interferenz im Netzwerk In den vorangegangenen Abschnitten wurde davon ausgegangen, dass außer im MAC keine weitere Interferenz vorhanden ist. Wird diese Annahme fallen gelassen, ergeben sich mögliche Interferenzkanten, deren Interferenz als zusätzliches Rauschen an den Knoteneingängen modelliert werden kann. Sei I die Menge der Interferenzkanten am Knoten i ∈ XN ∪ XR , dann ergibt sich für die Rauschleistung ni am Knoten i: X ni = σ 2 + (2.48) (hT ji · w j ) · Pj . (j,i)∈I Die Rauschleistung ni ersetzt in allen Ratenausdrücken die Rauschleistung σ 2 und es ergibt sich für die erreichbare Rate eines MISO-Gaußkanals (j, i) ∈ U: ! 2 · w ) · P (hT 1 j j ji . (2.49) Rji < · log2 1 + 2 ni 2.8.2 Netzwerke mit überflüssigen Kanten / Interferenzkanten In diesem Abschnitt soll ein Lösungsvorschlag diskutiert werden, wie Netzwerke mit mehr als |XT | knotendisjunkten Pfaden zu jeder Senke behandelt werden können. Es wird zunächst davon ausgegangen, dass alle Kanten im Netzwerk zum Informationstransport verwendet werden. Es wird eine Liste L aller Kanten (i, j) ∈ U, aufsteigend sortiert nach der Norm khij k des Kanalvektors, erstellt. Somit stehen „schlechte“ Kanäle weiter vorn, während „gute“ Kanäle weiter hinten stehen. Diese Sortierung muss nicht das Optimum für den folgenden Algorithmus darstellen, bietet aber eine erste Möglichkeit, einen Algorithmus zu entwickeln, der in linearer Zeit eine Lösung findet. Die Liste L wird durchlaufen und für jede Kante (i, j) ∈ L wird überprüft, ob diese Kante für den Informationstransport benötigt wird, das heißt, ob ohne diese Kante immer noch |XT | knotendisjunkte Pfade zu jeder Senke existieren. Ist dies der Fall, kann die Kante (i, j) als Interferenzkante betrachtet werden. Erhöht dies die maximale Summenrate der Ratenregion der Quellen, so wird die Kante (i, j) als Interferenzkante markiert. Es ist zu beachten, dass dies ein Greedy-Algorithmus ist, der nicht zwingend das Optimum findet. Ein weiteres Problem, welches in diesem Zusammenhang auftritt, ist die Suche nach den optimalen Beamforming-Vektoren. Es seien i ∈ XT ∪ XN und j ∈ XN ∪ XR . Weiterhin existiere eine Interferenzkante (i, j) (siehe Abb. 2.5). Es wird angenommen, dass die über die Interferenzkante (i, j) gesendete Leistung möglichst klein werden soll, während die Leistungen über alle anderen ausgehenden Kanten von Knoten i möglichst groß werden sollen. Es sei I die Menge aller Interferenzkanten am Ausgang von Knoten i. Gleichung (2.18) wird dann wie folgt erweitert: X X T T wi (λ) = v max λ h h − λ h h ij ij z (i,j) z (i,j) ij ij i i j:i↓j (i,j)6∈I j:i↓j (i,j)∈I (2.50) 26 Kapitel 2 Erreichbare Ratenregion i Interferenzkanal Übertragungskanal j Abb. 2.5: Beispiel zur Beamforming-Suche mit Interferenzkante (i, j) Dieser Ansatz stellt allerdings nicht das Optimum dar, da durch den Versuch, die Leistung über die Interferenzkante (i, j) zu verkleinern, die erreichbaren Raten der Übertragungskanäle beeinflusst und eventuell reduziert werden. Dieses Vorgehen muss allerdings keine Vergrößerung der Ratenregion der Quellen bewirken, da die Kanäle am Ausgang von Knoten j die erreichbaren Raten limitieren können und die Interferenz am Knoten j für die erreichbare Ratenregion der Quellen keinen Unterschied macht. Somit würde eher eine Verkleinerung der Ratenregion der Quellen erreicht werden, da die erreichbaren Raten über die ausgehenden Übertragungskanäle von Knoten i verkleinert werden. Es wird deutlich, dass die Beamforming-Suche nun kein lokales Optimierungsproblem mehr ist, sondern ein globales Problem darstellt. Kapitel 3 3 Implementation 3.1 Wahl der Programmierumgebung Um die Algorithmen aus Kapitel 2 zu implementieren, wurden verschiedene Möglichkeiten (Programmiersprachen) auf ihre Effizienz und Programmierfreundlichkeit überprüft. Im Folgenden sollen kurz die Vor- und Nachteile, die zur Auswahl der Programmierumgebung geführt haben, dargelegt werden. Als Anforderung wurden folgende Kriterien zu Grunde gelegt: • Unterstützung objektorientierter Programmierung, • Unterstützung linearer Algebra, • Implementation von Graphenrepräsentation und Graphenalgorithmen, • Implementation von Optimierungsalgorithmen, • Möglichkeit ermittelte Ergebnisse graphisch darzustellen, • Möglichkeit eine Graphische Benutzeroberfläche (engl.: Graphical User Interface) (GUI) zu implementieren. 3.1.1 Java Java erfüllt als objektorientierte Programmiersprache das erste Kriterium. Es gibt auch Bibliotheken, die die Funktionalität linearer Algebra zur Java-Funktionalität hinzufügen. Die Anzahl an Bibliotheken ist allerdings begrenzt und die Implementation von Graphen- und Optimierungsalgorithmen ist eher noch rudimentär. Ein möglicher Grund dafür könnte die Effizienz sein. Da Java als virtuelle Maschine läuft, ist eine Java-Implementation in der Regel immer langsamer als eine vergleichbare C-Implementation. Der Vorteil von Java ist die Plattformunabhängigkeit, die allerdings verloren geht, sobald effiziente Implementationen von Algorithmen erforderlich sind. 3.1.2 Matlab / Octave Sowohl Matlab als auch die Open-Source-Variante Octave wurden speziell für den einfachen Umgang mit Rechenoperationen der linearen Algebra entwickelt. Ihre Stärken in diesem Bereich sind unbestritten. Allerdings wurden sie als Script-Sprachen entwickelt, mit denen objektorientierte Programmierung nicht so komfortabel ist wie mit nativen objektorientierten Programmiersprachen. Um neue Strukturen zu schaffen, müsste man entweder auf C zurückgreifen oder sehr umständlich die Matrizenstrukturen 28 Kapitel 3 Implementation verwenden. Die Möglichkeit, eine GUI zu entwickeln, besteht zwar, lässt dem Programmierer allerdings deutlich weniger Möglichkeiten als dies mit anderen Programmiersprachen der Fall ist. Es existiert eine Schnittstelle zu Java, mit der man Zugriff auf Java-Funktionalität wie zum Beispiel GUI-Programmierung bekommt. Diese Schnittstelle kann allerdings nur Java aus Matlab heraus ansprechen und nicht umgekehrt. 3.1.3 Python Python ist die unter Unix-Systemen neben C am weitesten verbreitete Programmiersprache und bietet entsprechend viele Bibliotheken an. Die Bibliotheken zur linearen Algebra, Graphen- und Optimierungsalgorithmen sowie graphischer Darstellung sind umfangreich und können durchaus mit Matlab konkurrieren. Da Python als objektorientierte Sprache verwendet werden kann, bietet es die ideale Verbindung von Programmierkomfort und Unterstützung durch vorhandene Bibliotheken. Es unterstützt ebenfalls eine Schnittstelle zu C, so dass effiziente Algorithmen hardwarenah geschrieben werden können. 3.1.4 Sage Sage ist ein Python-Projekt, das zum Ziel hat, eine Umgebung mit ähnlichem Umfang wie Matlab, Maple oder Mathematica zu schaffen. Anders als bei Octave besteht aber nicht der Anspruch, Matlab-Code verwenden zu können, sondern es werden die Vorteile von Python genutzt. Es werden viele bereits vorhandene Python-Bibliotheken verwendet und gebündelt. Eine Übersicht über alle Möglichkeiten von Sage ist in [46] oder auf der offiziellen Homepage [32] zu finden. Leider kann Sage nur mit der mitgelieferten Python-Version verwendet werden und erschwert somit das Einbinden von weiteren Paketen wie zum Beispiel zur Unterstützung von GUIs. 3.1.5 Zusammenfassung Auf Grund des Funktionsumfangs, der Effizienz und der Erweiterbarkeit fiel die Wahl auf Python als Programmiersprache zur Umsetzung der Algorithmen und Simulationen. Sollte Sage die Abhängigkeit von der eigenen Python-Distribution verlieren, so wäre dies eine lohnende Alternative, da die Schnittstellen zwischen den einzelnen PythonPaketen bereits implementiert sind. Für die volle Flexibilität und Anpassung an die individuellen Ansprüche ist jedoch eine offizielle Python-Distribution mit selbst hinzugefügten Bibliotheken am sinnvollsten. 3.2 Grundstruktur des Programms In diesem Abschnitt soll der grundlegende Aufbau des Programms dargestellt werden. Dabei sollen sowohl das Programm selbst als auch die benötigten Programme, Bibliotheken und Pakete kurz vorgestellt und die Möglichkeiten des Programms aufgezeigt werden. 3.2 Grundstruktur des Programms 29 3.2.1 Verwendete Programme Tabelle 3.1 listet alle Programme, die verwendet wurden, um eine Simulationsumgebung zu schaffen. In den Referenzen sind die offiziellen Webseiten angegeben, auf denen die aktuelle Version zu finden ist. Alle Programme sind Open-Source und können kostenlos verwendet werden. Auch wenn es für alle Programme Windows-Versionen gibt, wird empfohlen, unter Linux zu arbeiten. Die Simulationsumgebung wurde in Python geschrieben und benötigt verschiedene Python-Bibliotheken, die nicht in der Standard-Distribution enthalten sind. Tabelle 3.2 enthält eine Übersicht über diese Pakete sowie Referenzen zu den offiziellen Webseiten mit aktuellen Versionen. Die meisten dieser Pakete stellen Schnittstellen zu Bibliotheken dar, die in C implementiert sind und somit an die jeweilige Plattform angepasst sind. Die Bibliotheken der linearen Algebra (BLAS, LAPACK, ATLAS) werden auch von Matlab oder Octave verwendet und durch die Python-Pakete SciPy und NumPy dem Pythonprogrammierer nutzbar gemacht. Diese werden zur Berechnung der Ratenregion und Beamforming-Vektoren benötigt. Die Repräsentation des zu untersuchenden Netzwerkes erfolgt intern mit dem Python-Paket pygraph, auch bekannt unter dem Namen python-graph. Dieses stellt auch Algorithmen, wie zum Beispiel den Edmonds-KarpAlgorithmus, bereit. Um das Optimierungsproblem, welches in Abschnitt 2.7 dargestellt ist, zu lösen, wird das Python-Paket OpenOpt als Schnittstelle zu den beiden Bibliotheken CVXOPT und GLPK verwendet. Für die graphische Darstellung der ermittelten Ratenregion und aller weiteren Plots sorgt das Python-Paket matplotlib, welches einen enormen Funktionsumfang zum Plotten von Daten und Funktionen bereitstellt. Um alternativ zur Kommandozeile eine GUI zu verwenden, wird das Python-Paket pygtk verwendet, welches eine Schnittstelle zur Komponentenbibliothek GTK+ bereitstellt. Zur Visualisierung des Netzwerkgraphen wird die Layout-Bibliothek Graphviz verwendet, die aus einem Graphen, der in der Beschreibungssprache Dot gegeben ist, ein Layout dieses Graphen in verschiedenen Ausgabevarianten erstellt. Um den Netzwerkgraphen in der GUI zu zeichnen, wird die 2D-Vektor-Graphik-Bibliothek Cairo verwendet, die durch das Python-Paket pycairo unter Python nutzbar ist. 3.2.2 Netzwerkdatei Um ein Netzwerk in das Programm einzugeben, wird eine Netzwerkdatei angelegt. Aus dieser werden die Struktur des Netzwerks und die auszuführenden Funktionen entnommen. Die Datei wird zeilenweise gelesen, wobei jede Zeile genau einem Netzwerkparameter entspricht. Alle Zeichen hinter einem Rautezeichen (#) werden ignoriert und können somit für Kommentare verwendet werden. Die folgende Syntax wird dabei unterstützt, wobei spitze Klammern (<>) selbst einzutragende Parameter bezeichnen. Die Klammern selbst sind nicht mit zu schreiben. Eckige Klammern ([]) kennzeichnen optionale Parameter, während runde Klammern eine Gruppierung darstellen. Ein senkrechter Strich (|) bezeichnet eine Oder-Verknüpfung möglicher Werte. Network Name: <Netzwerkname> Noise: <Rauschen> 30 Paket Python CVXOPT GLPK LAPACK BLAS ATLAS Graphviz GTK+ Cairo Kapitel 3 Implementation Beschreibung Python ist eine universelle höhere Programmiersprache, die verschiedene Programmierparadigmen unterstützt. Dazu zählen objektorientierte, aspektorientierte und funktionale Programmierung. [15, 45] CVXOPT ist ein allgemeiner, in Python geschriebener, Löser für konvexe Optimierungsprobleme, der externe Routinen wie z.B. LAPACK für numerische Berechnungen verwendet. Obwohl er eigene Löser besitzt, kann er auch externe wie z.B. GLPK aufrufen. Das GLPK ist eine in C geschriebene Programmbibliothek zur Lösung von Problemen der linearen Optimierung. [24, 37] LAPACK ist ein Softwarepaket für numerische lineare Algebra. Es stellt Routinen zur Lösung linearer Gleichungssysteme und von Eigenwertproblemen, Zerlegungsproblemen, etc. bereit. Es ist in Fortran geschrieben und basiert auf BLAS. [4, 40] BLAS ist eine Softwarebibliothek, die elementare Operationen der linearen Algebra wie Vektor- und Matrixmultiplikation implementiert. [2, 36] ATLAS ist eine Implementierung von BLAS und Teilen von LAPACK für C und Fortran. [1, 35] Graphviz ist ein plattformübergreifendes Programmpaket zur Visualisierung von gerichteten und ungerichteten Graphen. Die Eingabe von Graphen erfolgt in der Beschreibungssprache DOT. [7, 38] GTK+ ist eine Komponentenbibliothek, mit der GUIs erstellt werden können. [3, 39] Cairo ist eine Vektor-Graphik-Bibliothek, die verschiedene Ausgabemedien unterstützt. Es wurde entwickelt, um eine konsistente Ausgabe auf allen Ausgabemedien zu erreichen, während es, wenn möglich, die Vorteile der DisplayHardware-Beschleunigung nutzt. GTK+ verwendet Cairo zum Zeichnen der GUI-Komponenten. [48] Tabelle 3.1: Verwendete Programme und Pakete Version 2.6.6 1.1.2 4.43 3.2.1 1.2 3.8.3 2.26.3 2.22.0 1.10.0 3.2 Grundstruktur des Programms 31 Node: name=’<Knotenname>’, power=<Power>[, type=(source|sink|networknode)] Channel: name=’<Kanalname>’, ’<Startknoten>’ -> ’<Endknoten>’, ’<Kanalvektor>’ Jeder Netzwerkparameter wird durch ein Schlüsselwort gefolgt von einem Doppelpunkt eingeleitet. Sollte ein Parameter mehrere Unterparameter besitzen, so werden diese durch Kommata getrennt angegeben. Die Reihenfolge der Unterparameter ist dabei beliebig. Der Name des Netzwerkes wird durch das Schlüsselwort Network Name gekennzeichnet. <Netzwerkname> ist dabei eine beliebige Zeichenkette. Die Rauschleistung σ 2 , die für jeden Knoten im Netzwerk als konstant angenommen wird, wird durch das Schlüsselwort Noise eingeleitet. Dabei muss <Rauschen> eine gültige Fließkommazahl sein. Ein Knoten im Netzwerk wird durch das Schlüsselwort Node gekennzeichnet und durch zwei oder drei Parameter spezifiziert. <Knotenname> ist die Bezeichnung des Knotens und kann eine beliebige Zeichenkette sein. <Power> muss eine gültige Fließkommazahl sein und gibt die maximal dem Knoten zur Verfügung stehende Sendeleistung an. Der Parameter type ist optional und gibt den Typ des Knotens an, wobei folgende Werte unterstützt werden: • source: Der Knoten ist eine Quelle. • sink: Der Knoten ist eine Senke. • networknode: Der Knoten ist ein Netzwerkknoten. Wird kein Knotentyp angegeben, wird er als Netzwerkknoten dem Netzwerk hinzugefügt. Ein Kanal wird durch das Schlüsselwort Channel gekennzeichnet und benötigt drei Parameter. <Kanalname> ist eine beliebige Zeichenkette, die als Bezeichnung für den Kanal dient. <Startknoten> und <Endknoten> geben den Startknoten und den Endknoten des Kanals an, wobei die Werte jeweils einem Knotennamen entsprechen müssen, der als Knoten dem Netzwerk hinzugefügt wurde. Der Kanal ist gerichtet und die Richtung wird durch den Pfeil zwischen <Startknoten> und <Endknoten> festgelegt. <Kanalvektor> spezifiziert den Vektor mit den Kanalkoeffizienten in Matlabähnlicher Form: [a,b,c,...]. Außer dem Netzwerk an sich können in der Netzwerkdatei manuell Ratenbedingungen angegeben werden, die verwendet werden, sollte keine Ratenregion berechnet worden sein. Eine Ratenbedingung wird durch das Schlüsselwort Constraint eingeleitet und hat folgende Syntax: [<mul> *] ’<Knotenname>’ [+ <mul> * ’<Knotenname>’ [...]] = <Wert> <mul> ist dabei ein ganzzahliger Multiplikator. Ist dieser 1 kann er auch weggelassen werden. <Knotenname> muss eine gültige Knotenbezeichnung eines Quellknotens sein, der sich im Netzwerk befindet. Durch ein Plus-Zeichen können Summenbedingungen angegeben werden. <Wert> gibt die obere Schranke an, die diese Bedingung ausdrücken soll und muss eine gültige Fließkommazahl sein. Weiterhin wird in der Netzwerkdatei angegeben, welche Funktionen vom Programm ausgeführt werden sollen. Die Syntax ist wie folgt: <Funktionsname> = (T|t)rue | (F|f)alse <Funktionsname> muss dabei der Name einer gültigen Funktion sein. Tabelle 3.3 listet alle im Moment zur Verfügung stehenden Funktionen. 32 Kapitel 3 Implementation 3.2.3 Befehlszeile Das Programm wird durch Aufrufen der Datei rrt.py im Python-Interpreter gestartet. Für Linux-Systeme gibt es ein Bash-Skript, was direkt in der Kommandozeile ausgeführt werden kann. Es können verschiedene Parameter übergeben werden, die in Tabelle 3.4 angegeben sind. Die Syntax des Programmaufrufs sieht wie folgt aus: rrt.py [-h] [-f FILE] [--gui] [-o OUTPUT] [-l LOGFILE] [-v {debug,info,warning,error,critical}] 3.3 Installation In diesem Anschnitt soll die Installation des Programms kurz beschrieben werden. Da dieses in Python geschrieben ist, ist die Installation des Programms selbst plattformunabhängig. Vor Installation des Programms ist zu prüfen, ob alle in Tabelle 3.1 aufgeführten Programme installiert sind. Diese sind plattformabhängig und können auf den angegebenen Webseiten für die passende Plattform heruntergeladen werden. Auf den Internetseiten sind ebenfalls Installationsanleitungen bzw. -hinweise zu finden, die auf jeden Fall zu beachten sind. Weiterhin müssen alle Python-Pakete, die in Tabelle 3.2 aufgeführt sind, installiert werden. Diese sind meist plattformunabhängig und können direkt vom Quellcode gebaut und installiert werden. Dazu wird das Archiv mit dem Quellcode entpackt und in das entpackte Verzeichnis gewechselt. Dort sollte sich ein Setup-Skript setup.py befinden. Wenn nicht anders angegeben, kann durch Ausführen des Setup-Skripts im Python-Interpreter das Python-Paket installiert werden. Unter Unix-System kann die entsprechende Kommandozeile wie folgt aussehen: python setup.py install Für abweichende Installationsanweisungen wird dringend empfohlen, die READMEDateien zu lesen. Das Programm zur Bestimmung der erreichbaren Ratenregion benötigt keine eigene Installation. Das bereitgestellte Archiv kann an einen beliebigen Ort entpackt werden. Gestartet wird das Programm durch Aufrufen der Datei rrt.py im PythonInterpreter. Für Unix-Systeme lautet der Aufruf wie folgt: python rrt.py 3.4 Verwendung des Programms In diesem Abschnitt soll die Verwendung des Programms dargestellt und an Beispielen verdeutlicht werden. Das komplette Beispiel, der in diesem Abschnitt verwendeten Netzwerkdatei, ist in Anhang B.1 zu finden. 3.4 Verwendung des Programms 33 1 2 h13 h23 3 h15 h34 h26 4 h45 h46 5 6 Abb. 3.1: Butterfly-Netzwerk 3.4.1 Eingabe eines Netzwerkes Um ein zu untersuchendes Netzwerk in das Programm einzugeben, wird eine Netzwerkdatei, gemäß der Syntax wie in 3.2.2 beschrieben, angelegt. Listing 3.1 zeigt den Abschnitt einer Netzwerkdatei, der ein Beispielnetzwerk angibt. Als Beispiel wurde das Butterfly-Netzwerk, welches in Abb. 3.1 dargestellt ist, verwendet. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Network Name : B u t t e r f l y Network Noise : 1 . 0 Node : Node : Node : Node : Node : Node : power = 1 . 0 , name = ’ 1 ’ , t y p e = s o u r c e name = ’ 2 ’ , power = 1 . 0 , t y p e = s o u r c e name = ’ 3 ’ , power = 1 . 0 , t y p e = networknode name = ’ 4 ’ , power = 1 . 0 name = ’ 5 ’ , power = 1 . 0 , t y p e = s i n k name = ’ 6 ’ , power = 1 . 0 , t y p e = s i n k Channel : Channel : Channel : Channel : Channel : Channel : Channel : name = ’ h13 name = ’ h23 name = ’ h34 name = ’ h15 name = ’ h26 name = ’ h45 name = ’ h46 ’ ’ ’ ’ ’ ’ ’ , , , , , , , ’1 ’ ’2 ’ ’4 ’ ’1 ’ ’2 ’ ’4 ’ ’4 ’ −> −> <− −> −> −> −> ’3 ’ , ’3 ’ , ’3 ’ , ’5 ’ , ’6 ’ , ’5 ’ , ’6 ’ , ’[4 ,3 ,2] ’ ’[2 ,3 ,2] ’ ’[3 ,3 ,3] ’ ’[[6] ,[4] ,[7]] ’ ’[[8] ,[8] ,[8]] ’ ’[[20] ,[20] ,[20]] ’ ’[[30] ,[20] ,[20]] ’ Listing 3.1: Beispiel-Netzwerk: Butterfly-Netzwerk Ist das Netzwerk in der Datei examplenetwork.net gespeichert und befindet sich diese Netzwerkdatei im selben Verzeichnis wie die Datei rrt.py, so kann das Programm mit der Zeile rrt.py -f examplenetwork.net gestartet werden und das Netzwerk wird in das Programm geladen. Befindet sich die Netzwerkdatei nicht im selben Verzeichnis, so muss der komplette Pfad angegeben werden. 34 Kapitel 3 Implementation 3.4.2 Berechnen der erreichbaren Ratenregion Um die erreichbare Ratenregion des Netzwerkes zu berechnen, gibt es zwei Funktionen: • calculateRateRegion und • calculateRateRegionRouting. Die Funktion calculateRateRegion berechnet die erreichbare Ratenregion unter Verwendung von Netzwerkcodierung. Um den Gewinn der Netzwerkcodierung gegenüber klassischem Routing zu illustrieren, kann die Ratenregion, die sich ergibt, wenn keine Netzwerkcodierung angewandt und klassisches Routing betrieben wird, mit der Funktion calculateRateRegionRouting berechnet werden. Um diese Funktionen zu aktivieren, müssen folgende Zeilen in der Netzwerkdatei existieren: 1 c a l c u l a t e R a t e R e g i o n = True 2 c a l c u l a t e R a t e R e g i o n R o u t i n g = True Listing 3.2: Berechne Ratenregion 3.4.3 Manuelles Angeben einer Ratenregion In der Netzwerkdatei kann eine Ratenregion angegeben werden, die zum Beispiel für spätere Leistungsoptimierung verwendet werden soll. Um sinnvolle Ergebnisse zu erhalten, sollte zuvor die erreichbare Ratenregion des Netzwerkes berechnet und sichergestellt werden, dass die manuell angegebene Ratenregion in der erreichbaren Ratenregion liegt. Eine manuelle Ratenregion wird wie in Kapitel 3.2.2 angegeben. Ein Beispiel für das Butterfly-Netzwerk in Abb. 3.1 zeigt Listing 3.3. 1 Constraint : ’1 ’ + ’2 ’ = 2.5 2 Constraint : 1 ∗ ’1 ’ = 1.0 3 Constraint : 1 ∗ ’2 ’ = 2.0 Listing 3.3: Manuelle Ratenregion Dies entspricht folgenden Ratenbedingungen: R1 + R2 < 2.5, R1 < 1.0, R2 < 2.0. 3.4.4 Plotten der erreichbaren Ratenregion Um eine Ratenregion zu plotten, muss folgende Zeile in der Netzwerkdatei angegeben sein: 1 p l o t R a t e R e g i o n = True Listing 3.4: Plotte Ratenregion Dazu muss zuvor eine Ratenregion berechnet oder manuell eine Ratenreion in der Netzwerkdatei angegeben worden sein. 3.5 Implementation der Beamformer-Suche 35 3.4.5 Optimierung der Summenleistung des Netzwerkes Um eine Lösung für das Optimierungsproblem in 2.7 zu erhalten, existiert die Funktion optimizePower. Diese minimiert die Sendeleistungen an allen Knoten im Netzwerk unter der Bedingung, dass die Ratenregion, die zuvor berechnet oder manuell angegeben wurde, weiterhin erreicht werden kann. Um die Gültigkeit des Ergebnisses zu prüfen, das heißt, um zu überprüfen, ob mit den optimierten Leistungen weiterhin die Ratenregion erreicht wird, gibt es die Funktion checkPower. Diese berechnet mit den optimierten Leistungen die erreichbare Ratenregion neu und vergleicht diese mit der Ratenregion wenn alle Knoten mit maximaler Leistung senden. Um beide Funktionen zu nutzen werden in der Netzwerkdatei folgende Zeilen angegeben: 1 o p t i m i z e P o w e r = True 2 checkPower = True Listing 3.5: Optimiere Sendeleistungen Soll die Optimierung der Leistungen ohne individuelle Leistungsbeschränkung durchgeführt werden, was nur bei manueller Eingabe einer Ratenregion sinnvoll ist, so können die Leistungen der Knoten auf inf (∞) gesetzt werden: 1 2 3 4 5 6 Node : Node : Node : Node : Node : Node : name = ’ 1 ’ , name = ’ 2 ’ , name = ’ 3 ’ , name = ’ 4 ’ , name = ’ 5 ’ , name = ’ 6 ’ , power = i n f power = i n f power = i n f power = i n f power = i n f power = i n f , type = source , type = source , t y p e = networknode , type = sink , type = sink Listing 3.6: Beispiel-Netzwerk: Butterfly-Netzwerk Es ist zu beachten, dass die Überprüfung der optimierten Leistungen mit checkPower in diesem Falle immer eine wahre Aussage liefert, da die Ratenregion mit unendlicher Leistung an den Knoten eine unendlich große Ratenregion liefert. 3.5 Implementation der Beamformer-Suche Wie in Abschnitt 2.4 beschrieben wurde, kann der optimale Beamforming-Vektor des Knotens i ∈ XT ∪ XN für eine oder zwei ausgehende Kanten analytisch berechnet werden. Ab drei ausgehenden Kanten muss der Beamformer durch einen Suchalgorithmus gefunden werden. Diese Methode kann auch für den Fall Uout (i) < 3 gewählt werden, ist aber langsamer als die analytische Berechnung (siehe Abb. 3.2). Im Programm zur Ermittlung der erreichbaren Ratenregion ist nur der Suchalgorithmus implementiert. In Abb. 3.2 ist ein Vergleich zwischen der analytischen Berechnung und der Suche des optimalen Beamforming-Vektors dargestellt. Dabei wurden für den Fall von zwei ausgehenden Kanten an einem Knoten i ∈ XT ∪XN mit nT = 4 Sendeantennen 1000 zufällige Kanalvektorpaare erzeugt und dazu der optimale Beamforming-Vektor bestimmt. Die Genauigkeit der Beamforming-Suche ist abhängig von der Laufvariablen λ (siehe Gleichungen (2.17) - (2.19)). Je kleiner die Schrittweite von λ gewählt wird, desto näher liegt 36 Kapitel 3 Implementation Ratenunterschied ∆R 0.0040 0.0035 0.0030 0.0025 0.0020 0.0015 0.0010 0.0005 Laufzeit pro Vektor [Sekunden] 0.0000 2−3 2−4 2−5 2−6 2−7 Schrittweite von λ 2−8 2−9 2−10 0.35 0.30 0.25 0.20 0.15 0.10 0.05 0.00 2−3 2−4 2−5 2−6 2−7 Schrittweite von λ 2−8 2−9 2−10 Abb. 3.2: Vergleich Beamforming-Suche und analytische Berechnung für Uout (i) = 2 und nT = 4 mit 1000 zufällig erzeugten Kanalvektorpaaren für SNR = 1. Oben: Abweichung ∆R der mit der Beamforming-Suche ermittelten Rate von der durch analytische Berechnung ermittelten optimalen Rate. Unten: Durchschnittliche Laufzeit der Beamforming-Suche pro Beamformer. der ermittelte Beamforming-Vektor am Optimum. Da sich der Beamforming-Vektor auf die maximale Senderate eines Knotens (siehe Gleichung (2.21)) auswirkt, ist im oberen Diagramm von Abb. 3.2 die durchschnittliche Abweichung ∆R der maximalen Senderate R̃i , die mit der Beamforming-Suche ermittelt wurde, von der optimalen Senderate, die analytisch berechnet wurde, für ein SNR von σP2i = 1 dargestellt. Es wird ersichtlich, dass eine Schrittweite von λ zwischen 2−6 und 2−7 akzeptable Werte liefert, deren Abweichungen ∆R von der optimalen Rate kleiner als 0.001 ist. Eine Verkleinerung der Schrittweite von λ bedeutet allerdings auch eine längere Laufzeit. Die durchschnittlich benötigte Zeit für die Suche eines optimalen Beamforming-Vektors ist im unteren Diagramm von Abb. 3.2 dargestellt. 3.5 Implementation der Beamformer-Suche Paket NumPy SciPy OpenOpt python-glpk pygraph matplotlib pygtk pycairo Beschreibung NumPy fügt zu Python die Möglichkeit hinzu, effizient mit großen, multidimensionalen Matrizen zu rechnen. Es stellt außerdem eine große Bibliothek von Rechenoperationen, numerischen Algorithmen und Funktionen der linearen Algebra bereit. Genau wie Matlab greift NumPy intern auf LAPACK zurück. [26, 42] SciPy basiert auf NumPy und fügt den dort bereits implementierten Funktionen weitere hinzu. Es verfügt über Module für Optimierung, Lineare Algebra, Integration, Interpolation, spezielle Funktionen, FFT, Signal- und Bildverarbeitung, ODE-Lösungsalgorithmen und weitere Aufgaben aus dem Bereich der Natur- und Ingenieurwissenschaften. [30, 47] OpenOpt ist eine Optimierungsumgebung. Es dient als Interface zur Lösung von Optimierungsproblemen mit Hilfe verschiedener Bibliotheken, wie zum Beispiel GLPK oder CVXOPT. [27, 43] python-glpk ist eine Schnittstelle zwischen Python und GLPK. pygraph ist ein Modul zur Repräsentation von Graphen und stellt Algorithmen und Funktionen auf Graphen bereit. [28] matplotlib ist ein umfangreiches Modul zum Plotten von Funktionen und Diagrammen. [18, 41] pygtk stellt die Schnittstelle zwischen Python und GTK her. Es wird für die GUI benötigt. [33, 44] pycairo stellt eine Schnittstelle zwischen Python und Cairo her. Es wird verwendet, um die Netzwerkgraphen zu zeichnen. [5] Tabelle 3.2: Verwendete Python-Pakete 37 Version 1.5.1rc1 0.8.0 0.31 0.4.43 1.8.0 1.0.0 2.21.0 1.8.8 38 Kapitel 3 Implementation Funktion calculateRateRegion calculateRateRegionRouting optimizePower checkPower plotNetwork plotRateRegion Beschreibung Berechnet die Ratenregion des Netzwerkes mit Netzwerkcodierung. Berechnet die Ratenregion des Netzwerkes mit klassischem Routing. Minimiert die Summenleistung der Knoten im Netzwerk so, dass die Ratenregion mit Netzwerkcodierung weiterhin erreicht werden kann. Überprüft, ob mit den zuvor optimierten Sendeleistungen weiterhin die Ratenregion erreicht werden kann. Plottet das Netzwerk. Plottet die Ratenregion. Tabelle 3.3: Unterstützte Funktionen 3.5 Implementation der Beamformer-Suche Parameter -h, --help -f FILE, --file FILE --gui -v LOGLEVEL -o OUTPUT, --output OUTPUT -l LOGFILE, --log LOGFILE 39 Beschreibung Zeigt alle möglichen Parameter an und beendet das Programm. Gibt die Netzwerkdatei an, die verwendet werden soll. Wird das Programm ohne GUI gestartet, ist dieser erforderlich. Die Datei kann sowohl als absoluter Pfad als auch als relativer Pfad angegeben werden. Startet das Programm mit einer GUI. Gibt das Level an, das für das Logging verwendet werden soll. Folgende Werte sind aufsteigend nach dem Level sortiert möglich: • debug • info • warning • error • critical Wird dieser Parameter nicht angegeben, wird das Level auf „warning“ gesetzt. Gibt eine Datei an, wo die Ausgabe des Programms gespeichert werden soll. Wird der Parameter weggelassen, werden alle Nachrichten auf der Konsole ausgegeben. Dies beeinflusst die Ausgabe von Logging-Nachrichten nicht. Gibt eine Datei an, wo die Logging-Nachrichten des Programms gespeichert werden sollen. Wird der Parameter weggelassen, werden alle Logging-Nachrichten auf der Konsole ausgegeben. Dies beeinflusst die normale Ausgabe des Programms nicht. Tabelle 3.4: Kommandozeilenparameter Kapitel 4 4 Simulationsergebnisse Im Folgenden werden für verschiedene Szenarien Simulationsergebnisse präsentiert und diskutiert. In Abschnitt 4.1 soll das bekannte Butterfly-Netzwerk, wie in Abb. 4.1 dargestellt, betrachtet werden. Dabei soll gezeigt werden, wie sich die Kanalvektoren einzelner Kanten oder Gruppen von Kanten auf die Ratenregion auswirken. In Abschnitt 4.2 sollen Interferenzkanten hinzugefügt und die in Abschnitt 2.8 angesprochenen Erweiterungen des Algorithmus an Hand von Beispielen diskutiert werden. In Abschnitt 4.3 wird die Ratenregion eines Netzwerkes mit drei Quellen und drei Senken präsentiert. 4.1 Simulationen ohne Interferenz Im Folgenden werden für das Butterfly-Netzwerk ohne Interferenzkanten (siehe Abb. 4.1) verschiedene Szenarien diskutiert und die Simulationsergebnisse präsentiert. Das SignalRausch-Verhältnis (engl.: Signal-to-Noise Ratio) (SNR) ist in allen Beispielen auf Eins normiert und die Beamforming-Vektoren werden nach den Darstellungen in Abschnitt 2.4 optimiert. 4.1.1 Gewinn mit Netzwerkcodierung In diesem Beispiel-Szenario soll die Vergrößerung der Ratenregion gezeigt werden, die durch Netzwerkcodierung im Vergleich mit klassischem Routing erreicht werden kann. Im Folgenden sind die Kanalvektoren der einzelnen Kanäle in diesem Beispiel angegeben: • h13 = [4, 3, 2]T ⇒ kh13 k = 5.38, 1 2 h13 h23 3 h15 h34 h26 4 h45 h46 5 6 Abb. 4.1: Butterfly-Netzwerk für Simulationen 42 Kapitel 4 Simulationsergebnisse Butterfly-Netzwerk (Original) 2.0 Butterfly-Netzwerk 2.0 Routing (Netzwerk ohne Interferenz) Ro NC (Netzwerk ohne Interferenz) NC 1.5 R2 R2 1.5 1.0 0.5 0.0 0.0 1.0 0.5 0.5 1.0 R1 1.5 2.0 0.0 0.0 Abb. 4.2: Ratenregion des Butterfly-Netzwerkes mit Netzwerkcodierungsgewinn • • • • • • h23 h34 h15 h26 h45 h46 = [2, 3, 2]T ⇒ kh23 k = 4.12, = [2, 2, 2]T ⇒ kh34 k = 3.46, = [6, 4, 7]T ⇒ kh15 k = 10.05, = [8, 8, 8]T ⇒ kh26 k = 13.86, = [30, 20, 30]T ⇒ kh45 k = 46.90, = [30, 20, 30]T ⇒ kh46 k = 46.90. Die komplette Netzwerkdatei für dieses Beispiel ist in Abschnitt B.2 zu finden. Die erreichbare Ratenregion ist in Abb. 4.2 dargestellt. Im Fall mit Netzwerkcodierung werden die Quellraten R1 und R2 durch den Kanal (3, 4) beschränkt, der lediglich die größere der beiden Quellraten unterstützen muss, da die Netzwerkcodierung für eine Linearkombination der Informationen sorgt. Die Summenrate R1 + R2 wird durch den MAC am Knoten 3 beschränkt. Im Fall mit klassischem Routing muss über den Kanal (3, 4) die Summenrate R1 + R2 übertragen werden. Aus diesem Grund wirkt die maximal über den Kanal übertragbare Rate beschränkend auf die Summenrate der Quellen, was eine Verkleinerung der Ratenregion im Vergleich mit der Ratenregion mit Netzwerkcodierung bewirkt. 0.5 1.0 R1 4.1 Simulationen ohne Interferenz 43 Butterfly-Netzwerk (Original) Butterfly-Netzwerk (O Routing (Netzwerk ohne Interferenz) 2.5 Rout 2.5 NC (Netzwerk ohne Interferenz) 1.5 1.5 R2 2.0 R2 2.0 NC ( 1.0 1.0 0.5 0.5 0.0 0.0 0.5 1.0 1.5 2.0 2.5 0.0 0.0 0.5 R1 Abb. 4.3: Ratenregion des Butterfly-Netzwerkes mit den limitierenden Kanten (1, 3) und (2, 3) 4.1.2 Limitierende Ausgangskanten an den Quellen In diesem Beispiel-Szenario sollen die Kanten (1, 3) und (2, 3) die limitierenden Kanten sein. Im Vergleich zum Beispiel aus Abschnitt 4.1.1 wurde nur der Kanalvektor des Kanals h34 verändert und der Kanal verbessert. Die Kanalvektoren lauten in diesem Beispiel wie folgt: • h13 = [4, 3, 2]T ⇒ kh13 k = 5.38, • h23 = [2, 3, 2]T ⇒ kh23 k = 4.12, • h34 = [7, 9, 5]T ⇒ kh34 k = 12.45, • h15 = [6, 4, 7]T ⇒ kh15 k = 10.05, • h26 = [8, 8, 8]T ⇒ kh26 k = 13.86, • h45 = [30, 20, 30]T ⇒ kh45 k = 46.90, • h46 = [30, 20, 30]T ⇒ kh46 k = 46.90. Die komplette Netzwerkdatei ist in Abschnitt B.3 zu finden. Die sich ergebende erreichbare Ratenregion ist in Abb. 4.3 dargestellt. Es ist zu sehen, dass die Netzwerkcodierung in diesem Fall keine Vergrößerung der Ratenregion gegenüber klassischem Routing bewirkt. Dies kann damit erklärt werden, dass der MAC am Knoten 3 die komplette Ratenregion beschränkt, da die eingehenden Kanten deutlich schlechter sind als alle nachfolgenden Kanten. Da vor dem Knoten 3 noch keine Netzwerkcodierung durchgeführt wird, bringt diese zunächst keinen Gewinn bezüglich der Ratenregion. Wird im Netz- 1.0 1.5 R1 44 Kapitel 4 Simulationsergebnisse werk aber Netzwerkcodierung angewandt, verringert sich die verbrauchte Leistung für die Informationsübertragung im Netzwerk, da über die Kanten (3, 4), (4, 5) und (4, 6) nur die größte der Quellraten übertragen werden muss, während mit klassischem Routing die Summe der Quellraten übertragen werden muss. Damit ist die Summenleistung, die zur Informationsübertragung benötigt wird, mit Routing immer größer oder gleich der benötigten Summenleistung in einem Szenario mit Netzwerkcodierung. 4.1.3 Iteration über Mittelkante In Abb. 4.4 sind die sich ergebenden Ratenregionen mit Netzwerkcodierung und Routing in Abhängigkeit der Kante (3, 4) dargestellt. Die Kanalvektoren lauten für dieses Beispiel wie folgt: • h13 = [50, 50, 50]T , • h23 = [50, 50, 50]T , • h34 = [x, x, x]T mit x ∈ {1, . . . , 15}, • h15 = [50, 50, 50]T , • h26 = [50, 50, 50]T , • h45 = [50, 50, 50]T , • h46 = [50, 50, 50]T . Es wird deutlich, dass die Kante (3, 4) die limitierende Kante in diesem Szenario ist. Entsprechend vergrößert sich auch die Ratenregion mit Verbesserung der Kante (3, 4). Im Fall mit Netzwerkcodierung ist interessant zu beobachten, dass bereits ab x = 7 oder kh34 k = 12.12 die Kante (3, 4) nicht mehr limitierend wirkt und eine Verbesserung der Kante keine Vergrößerung der Ratenregion bewirkt. Dies kann damit erklärt werden, dass der MAC am Knoten 5 bzw. 6 Informationsströme der gleichen Quelle über zwei unterschiedliche Kanten erhält. An dieser Stelle wirkt die Summenrate des MAC beschränkend auf die Einzelraten, weil beispielhaft am Knoten 5 gilt: R15 + R45 < a, wobei a der Wert der maximalen Summenrate ist, die der Knoten 5 decodieren kann. Da sowohl über die Kante (1, 5) als auch über (4, 5) ein Informationsstrom von Quelle 1 fließt, gilt für die Rate R1 : R1 + R1 < a. Somit lautet die obere Schranke für R1 : R1 < a2 . Im Fall mit klassischem Routing muss über die Kante (3, 4) die Summe der beiden Quellraten übertragen werden und die Kante (3, 4) wirkt beschränkend auf die Summenrate R1 + R2 . In diesem Fall bringt eine Verbesserung des Kanals (3, 4) bis x = 14 oder kh34 k = 22.52 eine Vergrößerung der Ratenregion. Ab x = 14 haben die MACs an den Knoten 5 und 6 striktere Beschränkungen. 4.1.4 Leistungsoptimierung In diesem Beispiel soll die erreichbare Ratenregion im Zusammenhang mit den Sendeleistungen an den Knoten untersucht werden. Dazu wird das Butterfly-Netzwerk mit folgenden Kanalvektoren verwendet (siehe auch Abschnitt 4.1.1): • h13 = [4, 3, 2]T ⇒ kh13 k = 5.38, • h23 = [2, 3, 2]T ⇒ kh23 k = 4.12, 4.1 Simulationen ohne Interferenz Butterfly-Netzwerk (mit Netzwerkcodierung) Butterfly-N kh34 k = 1.73 kh34 k = 3.46 3.5 3.5 kh34 k = 5.20 kh34 k = 6.93 3.0 3.0 kh34 k = 8.66 kh34 k = 10.39 kh34 k = 12.12 2.5 2.5 kh34 k = 13.86 kh34 k = 17.32 2.0 kh34 k = 19.05 R2 R2 kh34 k = 15.59 2.0 kh34 k = 20.78 kh34 k = 22.52 1.5 kh34 k = 24.25 1.5 1.0 1.0 0.5 0.5 0.0 0.0 0.5 ierung) 0 45 1.0 1.5 2.0 R1 2.5 3.0 0.0 0.0 3.5 Butterfly-Netzwerk (mit Routing) kh34 k = 1.73 kh34 k = 1.73 kh34 k = 3.46 kh34 k = 3.46 3.5 kh34 k = 5.20 kh34 k = 5.20 kh34 k = 6.93 kh34 k = 6.93 3.0 kh34 k = 8.66 kh34 k = 8.66 kh34 k = 10.39 kh34 k = 10.39 kh34 k = 12.12 kh34 k = 12.12 2.5 kh34 k = 13.86 kh34 k = 13.86 kh34 k = 17.32 kh34 k = 19.05 kh34 k = 15.59 R2 kh34 k = 15.59 kh34 k = 17.32 2.0 kh34 k = 19.05 kh34 k = 20.78 kh34 k = 22.52 kh34 k = 24.25 kh34 k = 20.78 kh34 k = 22.52 1.5 kh34 k = 24.25 1.0 0.5 3.5 0.0 0.0 0.5 1.0 1.5 2.0 R1 2.5 3.0 3.5 Abb. 4.4: Ratenregion des Butterfly-Netzwerkes mit Iteration über die Norm der Kante (3, 4) 0.5 1.0 1 46 Kapitel 4 Simulationsergebnisse • h34 = [2, 2, 2]T ⇒ kh34 k = 3.46, • h15 = [6, 4, 7]T ⇒ kh15 k = 10.05, • h26 = [8, 8, 8]T ⇒ kh26 k = 13.86, • h45 = [30, 20, 30]T ⇒ kh45 k = 46.90, • h46 = [30, 20, 30]T ⇒ kh46 k = 46.90. Die erreichbare Ratenregion ist bereits in Abschnitt 4.1.1 diskutiert worden und in Abb. 4.2 dargestellt. Im Folgenden soll nur die Ratenregion mit Netzwerkcodierung betrachtet werden, die durch folgende Ungleichungen beschrieben wird: R1 ≤ 1.850220, R2 ≤ 1.850220, R1 + R2 ≤ 2.777294. (4.1) (4.2) (4.3) Es werden die folgenden beiden Szenarien betrachtet: 1. Es sollen die Leistungen an allen Knoten soweit reduziert werden, dass die Ratenregion in Abb. 4.2 gerade noch erreicht wird. 2. Es wird den Quellen 1 und 2 jeweils eine Rate R1 bzw. R2 garantiert, wie dies zum Beispiel in einem QoS-Szenario der Fall wäre. Damit ergibt sich eine neue Ratenregion. Die Leistungen an den Knoten im Netzwerk sollen nun soweit reduziert werden, dass diese Ratenregion erreicht wird. Szenario 1 Soll die erreichbare Ratenregion komplett gehalten werden, ergeben sich für die optimierten Leistungen an den Knoten folgende Werte: • P1 = 1.000000, • P2 = 1.000000, • P3 = 1.000000, • P4 = 0.037179, • PSum = 3.037179. Es ist zu sehen, dass lediglich die Leistung am Knoten 4 reduziert werden kann. Dies ist leicht nachzuvollziehen, denn die Kanten (4, 5) und (4, 6) sind deutlich besser als die restlichen Kanten im Netzwerk. Somit braucht Knoten 4 weniger Leistung, um die Raten der vorhergehenden Kanten übertragen zu können. Szenario 2 Nun wird eine Ratenregion wie folgt vorgegeben: R1∗ = 1.388647 und R2∗ = 1.388647. Dies entspricht einem Szenario, in dem den Quellen 1 und 2 jeweils eine Rate von 1.388647 garantiert wird. Die somit maximal erreichbare Summenrate R1∗ + R2∗ entspricht weiterhin der maximalen Summenrate R1 + R2 ≤ 2.777294 der erreichbaren Ratenregion. Die Sendeleistungen der Knoten im Netzwerk werden so optimiert, dass die vorgegebene Ratenregion gerade noch erreicht wird. Es ergeben sich folgende Werte: 4.2 Simulationen mit Interferenz 47 1 2 h13 h23 3 h14 h24 h34 h15 h26 4 h45 h46 5 6 Abb. 4.5: Butterfly-Netzwerk mit zusätzlichen Interferenzkanten • P1 = 1.000000, • P2 = 0.999998, • P3 = 0.487971, • P4 = 0.002662, • PSum = 2.490631. Es ist zu sehen, dass bei gleicher Summenrate wie zuvor die verbrauchte Leistung im Netzwerk noch einmal reduziert werden kann. Weiterhin sei darauf hingewiesen, dass mit einer Summenleistung von 2.49 eine Summenrate erreicht wird, die in diesem Netzwerk mit klassischem Routing auch mit einer Summenleistung von 4.0 nicht erreicht werden kann. 4.2 Simulationen mit Interferenz In diesem Abschnitt sollen an Hand des Butterfly-Netzwerkes mit zusätzlichen Interferenzkanten (Abb. 4.5) die Anwendbarkeit des Algorithmus aus Abschnitt 2.6 diskutiert und die Probleme, die bereits in Abschnitt 2.8 angesprochen wurden, illustriert werden. Es existieren zwei mögliche Varianten, wie die Interferenzkanten (1, 4) und (2, 4) behandelt werden können: 1. Die Informationen, die über die Interferenzkanten übertragen werden, werden nicht als Interferenz behandelt, sondern die Endknoten der Interferenzkanten versuchen, die Information zu decodieren. 2. Die Informationen, die über die Interferenzkanten übertragen werden, werden an den Endknoten als zusätzliches Rauschen betrachtet. 4.2.1 Beispiel 1 Als Beispiel wird das Butterfly-Netzwerk aus Abb. 4.5 mit folgenden Kanalvektoren angenommen: 48 Kapitel 4 Simulationsergebnisse • h13 = [4, 3, 2]T ⇒ kh13 k = 5.38, • h23 = [2, 3, 2]T ⇒ kh23 k = 4.12, • h34 = [2, 2, 2]T ⇒ kh34 k = 3.46, • h15 = [6, 4, 7]T ⇒ kh15 k = 10.05, • h26 = [8, 8, 8]T ⇒ kh26 k = 13.86, • h45 = [30, 20, 30]T ⇒ kh45 k = 46.90, • h46 = [30, 20, 30]T ⇒ kh46 k = 46.90, • h14 = [1, 1, 1]T ⇒ kh14 k = 1.73, • h24 = [1, 1, 1]T ⇒ kh24 k = 1.73. Die Netzwerkdatei dazu ist in Abschnitt B.5 zu finden. Ohne Interferenzkanten entspricht das Netzwerk dem in Abschnitt 4.1.1. In Abschnitt 2.8 wurde eine Iteration über die Kanten im Netzwerk vorgeschlagen, um zu ermitteln, welche Kanten als Interferenzkanten behandelt werden sollen, um die erreichbare Summenrate im Netzwerk zu erhöhen. Diese Methode wird auf das gegebene Netzwerk angewandt. Das Behandeln der Kanten (1, 4) bzw. (2, 4) als Interferenzkanten mit einem Beamforming-Vektor gemäß Gleichung (2.50) bringt aber zunächst keine Erhöhung der Summenrate und diese Kanten werden als Informationskanten behandelt, was der Variante 1 (siehe oben) entspricht. Diese liefert die erreichbare Ratenregion in Abb. 4.6 mit einer maximal erreichbaren Summenrate von 1.40. Variante 2 erzwingt die Behandlung der Kanten (1, 4) und (2, 4) als Interferenzkanten mit einem Beamforming-Vektor gemäß Gleichung (2.50) und liefert die Ratenregion in Abb. 4.7 mit einer maximal erreichbaren Summenrate von 1.48. Es ist zu sehen, dass Variante 2 eine Erhöhung der maximal erreichbaren Summenrate bewirkt. Dies bedeutet, dass das einzelne Betrachten der Kanten als Interferenzkanten keine optimale Lösung erreicht. Erst das gleichzeitige Betrachten beider Kanten (1, 4) und (2, 4) bewirkt eine Vergrößerung der Summmenrate im Netzwerk. Weiterhin ist zu sehen, dass die Ratenregion in Abb. 4.7 striktere Bedingungen an die Einzelratenbedingungen stellt, als die in Abb. 4.6. Die maximal erreichbare Summenrate im Netzwerk ist jedoch größer. In diesem Fall kommt es auf das Optimierungskriterium an, welches als Entscheidung dient, welche Ratenregion „besser“ ist. In der Praxis ist dies häufig die maximal übertragbare Summenrate, weswegen diese als Entscheidungkriterium implementiert wurde. 4.2.2 Beispiel 2 In Abb. 4.8 ist eine erreichbare Ratenregion für das Butterfly-Netzwerk in Abb. 4.5 mit den folgenden Kanalvektoren dargestellt: • h13 = [4, 3, 7]T ⇒ kh13 k = 8.60, • h23 = [5, 9, 2]T ⇒ kh23 k = 10.49, • h34 = [2, 6, 7]T ⇒ kh34 k = 9.43, • h15 = [6, 4, 7]T ⇒ kh15 k = 10.05, • h26 = [9, 8, 10]T ⇒ kh26 k = 15.65, • h45 = [30, 20, 30]T ⇒ kh45 k = 46.90, • h46 = [30, 20, 30]T ⇒ kh46 k = 46.90, 4.2 Simulationen mit Interferenz 49 Butterfly-Netzwerk (Original) Butterfly-Netzwerk Routing (Netzwerk ohne Interferenz) Routi NC (Netzwerk ohne Interferenz) 1.0 0.8 0.6 0.6 R2 0.8 R2 NC (N 1.0 0.4 0.4 0.2 0.2 0.0 0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.0 0.2 0.4 0.6 R1 R1 Abb. 4.6: Ratenregion des Butterfly-Netzwerkes in Abb. 4.5, in dem die Interferenzkanten zur Informationsübertragung verwendet werden. Butterfly-Netzwerk (Original) Butterfly-Netzwerk (O Routing (Netzwerk mit Interferenz) 1.0 0.8 NC (Netzwerk mit Interferenz) 0.7 0.8 0.6 0.5 R2 0.6 0.4 0.4 0.3 0.2 0.2 0.1 0.0 0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.0 0.1 0.2 R1 Abb. 4.7: Ratenregion des Butterfly-Netzwerkes in Abb. 4.5, in dem die Interferenzkanten als Interferenz behandelt werden. 0.3 0.4 0 50 Kapitel 4 Simulationsergebnisse • h14 = [1, 1, 1]T ⇒ kh14 k = 1.73, • h24 = [1, 1, 1]T ⇒ kh24 k = 1.73. Die Netzwerkdatei dazu ist in Abschnitt B.6 zu finden. In diesem Beispiel findet der Algorithmus aus Abschnitt 2.8 ein optimiertes Netzwerk, in dem die Kanten (1, 4) und (2, 4) als Interferenzkanten betrachtet werden. Es wird ersichtlich, dass dies eine Verbesserung der erreichbaren Ratenregion gegenüber der Ratenregion darstellt, die erreichbar wäre, wenn alle Kanten zur Informationsübertragung verwendet werden (siehe Abb. 4.8 (oben)). Weiterhin ist zu sehen, dass die maximal erreichbare Summenrate mit Netzwerkcodierung und Interferenz immer noch größer ist, als die maximal erreichbare Summenrate mit klassischem Routing, wenn keine Interferenz vorhanden wäre. 4.3 Netzwerk mit drei Quellen und drei Senken Im Folgenden ist die Ratenregion für das Netzwerk in Abb. 4.9 mit den folgenden Kanalvektoren dargestellt: • • • • • • • • • • • • • • • h14 h17 h24 h25 h35 h38 h39 h46 h48 h49 h56 h57 h59 h67 h68 = [4, 3, 2]T ⇒ kh14 k = 5.38, = [2, 3, 2]T ⇒ kh17 k = 4.12, = [2, 2, 2]T ⇒ kh24 k = 3.46, = [6, 4, 7]T ⇒ kh25 k = 10.05, = [8, 8, 8]T ⇒ kh35 k = 13.86, = [30, 20, 30]T ⇒ kh38 k = 46.90, = [30, 20, 30]T ⇒ kh39 k = 46.90, = [3, 3, 2]T ⇒ kh46 k = 4.69, = [8, 3, 9]T ⇒ kh48 k = 12.41, = [2, 3, 2]T ⇒ kh49 k = 4.12, = [5, 3, 4]T ⇒ kh56 k = 7.07, = [4, 5, 8]T ⇒ kh57 k = 10.25, = [15, 9, 21]T ⇒ kh59 k = 27.33, = [4, 10, 9]T ⇒ kh67 k = 14.04, = [10, 12, 22]T ⇒ kh68 k = 26.98. Die komplette Netzwerkdatei ist in Abschnitt B.7 zu finden. Da dieses Netzwerk drei Quellen besitzt, ist die erreichbare Ratenregion dreidimensional und wird durch folgen- 0.5 4.3 Netzwerk mit drei Quellen und drei Senken 51 Butterfly-Netzwerk (Original) 3.0 Butterfly-Netzwerk (Opt 3.5 Routing (Netzwerk ohne Interferenz) Routing (Netzw NC (Netzwerk ohne Interferenz) Routing (Netzw NC (Netzwerk 3.0 2.5 NC (Netzwerk 2.5 2.0 R2 R2 2.0 1.5 1.5 1.0 1.0 0.5 0.0 0.0 0.5 0.5 Butterfly-Netzwerk (Original) 1.0 1.5 R1 2.0 2.5 3.0 0.0 0.0 0.5 Butterfly-Netzwerk (Optimiert) 3.5 Routing (Netzwerk ohne Interferenz) Routing (Netzwerk ohne Interferenz) NC (Netzwerk ohne Interferenz) Routing (Netzwerk mit Interferenz) NC (Netzwerk ohne Interferenz) 3.0 NC (Netzwerk mit Interferenz) 2.5 R2 2.0 1.5 1.0 0.5 1.0 1.5 R1 2.0 2.5 3.0 0.0 0.0 0.5 1.0 1.5 R1 2.0 2.5 3.0 Abb. 4.8: Ratenregion des Butterfly-Netzwerkes in Abb. 4.5. Oben: Ratenregion des Netzwerkes, in dem alle Kanten zur Informationsübertragung verwendet werden. Unten: Ratenregion des Netzwerkes, in dem die Kanten (1, 4) und (2, 4) als Interferenzkanten betrachtet werden sowie die Ratenregion, die sich ergeben würde, wenn die Interferenzkanten nicht existieren würden. 1.0 1.5 R1 2.0 52 Kapitel 4 Simulationsergebnisse 1 2 h14 h24 1 3 h25 2 h35 2 4 h17 3 5 1 h46 h56 1, 2 2, 3 h57 h38 3 3 h39 1, 2 2, 3 1, 2 h48 h49 6 2, 3 h59 h68 1, 2, 3 1, 2, 3 h67 7 8 9 Abb. 4.9: Netzwerk mit drei Quellen und drei Senken de Ungleichungen beschrieben: R1 R2 R3 R2 + R3 R1 + R2 R1 + R3 R1 + 2 · R3 2 · R2 + R3 R2 + 2 · R3 2 · R1 + R3 2 · R1 + R2 R1 + 2 · R2 R1 + R2 + R3 < 1.9370, < 1.5436, < 2.0422, < 3.0873, < 2.6416, < 3.0873, < 4.1258, < 5.7366, < 5.7366, < 4.1258, < 4.1258, < 4.1258, < 4.1258. Anders als zuvor im Butterfly-Netzwerk existieren in diesem Szenario nicht nur Bedingungen an die Einzelraten und die Summenraten aller Quellen. Aus den verschiedenen MAC-Bedingungen resultieren zudem auch Bedingungen an die Summe zweier Quellraten, bedingt durch den Informationsfluss durch das Netzwerk. Da zum Teil gleiche In- 4.3 Netzwerk mit drei Quellen und drei Senken 53 formationsströme über verschiedene Kanten an demselben MAC fließen, ergeben sich auch Ratenbedingungen mit Faktoren ungleich Eins. Kapitel 5 5 Zusammenfassung und Ausblick 5.1 Zusammenfassung In dieser Arbeit wurde ein Algorithmus präsentiert, mit dem eine erreichbare Ratenregion eines Mehrantennennetzwerkes ermittelt werden kann. Das Netzwerk wurde dabei für ein Muticast-Szenario untersucht, in dem Netzwerkcodierung angewandt wird, und die Ratenregion mit der erreichbaren Ratenregion mit klassischem Routing verglichen. Für eine größtmögliche Ratenregion wurden die Beamforming-Vektoren aller Knoten unter der Annahme optimiert, dass alle Knoten Single-Stream-Beamforming anwenden und mehrere Sendeantennen sowie genau eine Empfangsantenne besitzen. Der Algorithmus wurde zunächst entworfen, um Netzwerke zu untersuchen, die genau |XT | knotendisjunkte Pfade zu jeder Senke und keine Interferenzkanten besitzen. Die Anwendung auf allgemeinere Netzwerke und die damit verbundenen Probleme wurden kurz diskutiert. Weiterhin wurde gezeigt, dass die Sendeleistung der Knoten bei gegebener Ratenregion optimiert werden kann und es sich dabei um ein konvexes Optimierungsproblem handelt. Der Algorithmus sowie das Optimierungsproblem wurden implementiert und durch Simulationsergebnisse illustriert. 5.2 Ausblick Da angenommen wird, dass alle Knoten im Netzwerk Single-Stream-Beamforming anwenden und somit auf allen ausgehenden Kanten nur eine Nachricht übertragen können, ergeben sich zusätzliche Limitierungen. Wird das Butterfly-Netzwerk in Abb. 5.1 mit drahtgebundenen Übertragungsstrecken betrachtet, so ist der Hauptsatz der Netzwerkcodierung erfüllt und es kann ein gültiger Netzwerkcode gefunden werden, da das Netzwerk wie in Abb. 5.1 dargestellt zerlegt werden kann. Es ergeben sich das ButterflyNetzwerk, für das der Netzwerkcode bekannt ist, und ein einfaches Netzwerk, in dem keine Netzwerkcodierung durchgeführt werden muss. In dem Netzwerkmodell, mit dem in dieser Arbeit gearbeitet wird, sind keine parallelen Kanten vorgesehen. Es wird angenommen, dass an jedem Knoten Netzwerkcodierung durchgeführt wird und auf allen ausgehenden Kanten die maximale Rate der Eingangsraten übertragen wird. Dies schließt Netzwerke wie in Abb. 5.1 aus. In Abb. 5.2 ist ein Netzwerk mit zwei Quellen und drei Senken dargestellt, welches mit dem in dieser Arbeit vorgestellten Algorithmus auswertbar ist, der dafür allerdings keine optimale Lösung bringt. Die Voraussetzung, dass genau |XT | knotendisjunkte Pfade zu jeder Senke existieren, ist erfüllt. In Abb. 5.2(a) sind die Informationsströme im Netzwerk dargestellt, wie sie sich mit dem Ansatz aus dieser Arbeit ergeben würden. Der Algorithmus aus Abschnitt 2.6 ist zwar anwendbar, liefert allerdings eine kleinere Ratenregion als tatsächlich erreichbar wäre, da auf den Kanten (4, 6), (4, 7), (5, 7) 56 Kapitel 5 Zusammenfassung und Ausblick S1 S2 S3 S1 S3 S2 1 2 3 1 3 2 4 4 4 = + 5 5 5 6 7 6 7 6 7 E1 E2 E1 E2 E1 E2 Abb. 5.1: Butterfly-Netzwerk mit parallelen Kanten und (5, 8) unter Umständen weniger Informationsströme übertragen werden müssen als vom Algorithmus angenommen, da der angenommene Informationsfluss nicht zwingend mit dem Netzwerkcode korrespondieren muss. Der in dieser Arbeit angenommene Informationsfluss führt jedoch zu einer Ratenregion, die mit jedem gültigen Netzwerkcode für dieses Netzwerk erreichbar ist. Ist ein konkreter Netzwerkcode bekannt, kann im aktuellen Beispiel mit SingleStream-Beamforming (siehe Abb. 5.2(b)) an den Knoten 4 und 5 ein Informationsstrom herausgerechnet werden und es ergibt sich ein optimierter Informationsfluss, der den Netzwerkcode wiederspiegelt. Der Algorithmus aus Abschnitt 2.6 kann mit diesem Informationsfluss angewandt werden, um eine erreichbare Ratenregion in diesem Szenario zu ermitteln. In Abb. 5.3(a) ist der Informationsfluss dargestellt, der sich ohne Anwendung von Netzwerkcodierung ergeben würde. Im klassischen drahtgebundenen Fall wäre die Multicast-Übertragung im Netzwerk auch ohne Netzwerkcodierung mit maximalem Fluss möglich. Dieses Szenario würde sich auch im drahtlosen Übertragungsfall realisieren lassen, wenn Multi-Stream-Beamforming angewandt wird. Durch die Anwendung von Multi-Stream-Beamforming wird zwar die Menge der unterstützten Netzwerke größer, es ergeben sich aber zusätzliche Optimierungsprobleme. Zum Einen ergibt sich dadurch zusätzliche Interferenz auf den Kanten. Diese könnte eventuell durch Anwendung gezielter Netzwerkcodierung einfach herausgerechnet werden. Im Beispiel in Abb. 5.3(a) wäre es denkbar, dass die Anwendung von Netzwerkcodierung eine Vergößerung der erreichbaren Ratenregion bewirkt, obwohl Multicast auch ohne Netzwerkcodierung möglich wäre. Zum Anderen muss die Leistungsverteilung über die Sendeantennen und über die Senderichtungen optimiert werden. Dies könnte ebenfalls in weiterführenden Arbeiten untersucht werden. Mit der Anwendung von Multi-Stream-Beamforming kann auch die Vorausset- 5.2 Ausblick 57 S1 S2 S1 S2 1 2 1 2 2 1 3 1 1, 2 2 4 1, 2 2 1, 2 1, 2 1 5 1, 2 3 1 2 1, 2 1 2 1 2 4 1, 2 1, 2 5 2 2 1 1 6 7 8 6 7 8 E1 E2 E3 E1 E2 E3 (a) (b) Abb. 5.2: Netzwerk mit 2 Quellen und 3 Empfängern. (a) Informationsfluss mit SingleStream-Beamforming ohne bekannten Netzwerkcode. (b) Informationsfluss mit Single-StreamBeamforming und bekanntem Netzwerkcode. S1 S2 S1 S2 1 2 1 2 2 1 3 1 1 4 2 2 5 1 2 4 1 2 1 6 7 8 5 E1 E2 E3 E1 (a) 2 3 2 1 2 2 1 (b) Abb. 5.3: (a) Netzwerk mit 2 Quellen und 3 Empfängern. Informationsfluss mit Multi-StreamBeamforming aber ohne Netzwerkcodierung. (b) Beispiel-Netzwerk, welches mit Multi-StreamBeamforming den max-flow-Wert erreichen kann. 58 Kapitel 5 Zusammenfassung und Ausblick zung, dass |XT | knotendisjunkte Pfade zu jeder Senke existieren müssen, gelockert werden und wie im drahtgebundenen Fall reicht es aus, wenn |XT | kantendisjunkte Pfade zu jeder Senke existieren (siehe Satz 1.20). Damit wäre auch ein Szenario, wie es in Abb. 5.3(b) dargestellt ist, möglich und die Menge der unterstützen Netzwerke würde erweitert werden. Anhang A A Beweis zur Konvexität der Leistungsoptimierung Es ist zu zeigen, dass es sich bei dem folgenden Optimierungsproblem um ein konvexes Optimierungsproblem handelt. Es seien p der Vektor mit den Sendeleistungen pi aller Knoten i ∈ XT ∪ XN sowie P der Vektor mit den Leistungsbeschränkungen Pi aller Knoten i ∈ XT ∪ XN . Weiterhin seien L = |XT ∪ XN | und P = p ∈ RL : ∀i ∈ XT ∪ XN : 0 ≤ pi ≤ Pi . (A.1) P(Uin (i)) bezeichnet die Potenzmenge von Uin (i). Das Optimierungsproblem lautet dann X min pi (A.2) p∈P i∈XT ∪XN mit den Nebenbedingungen für alle i ∈ XT ∪ XN 2· P R ij σ2 · 2 (i,j)∈J − 1 ≤ 0. ∀J ∈ P(Uin (i)) \ ∅ : gµ (p) = P 2·p (hT · w ) i i ij (A.3) (i,j)∈J A.1 Konvexität der Menge Im Folgenden soll gezeigt werden, dass die Menge P aller Leistungsvektoren eine konvexe Menge ist. Die Menge P ist konvex, wenn gilt: ∀q, p ∈ P ⇒ λ · q + (1 − λ) · p ∈ P (A.4) u = λ · q + (1 − λ) · p. (A.5) mit λ ∈ [0, 1]. Es sei Im Folgenden sind alle Relationen zwischen Vektoren komponentenweise zu verstehen. Damit ergeben sich folgende zu überprüfende Bedingungen: u ≥ 0, u ≤ P. (A.6) (A.7) Gleichung (A.6) ist erfüllt, da λ ∈ [0, 1] und sowohl q ≥ 0 als auch p ≥ 0 gilt und somit die Summe beider Produkte ebenfalls immer größer oder gleich Null ist. (A.7) ist erfüllt, da folgende Ungleichung gilt: λ · q + (1 − λ) · p ≤ λ · P + (1 − λ) · P = P . (A.8) Dies gilt, da q ≤ P und p ≤ P . Damit ist gezeigt, dass die Menge P eine konvexe Menge ist. 60 Anhang A Beweis zur Konvexität der Leistungsoptimierung A.2 Konvexität der Zielfunktion und der Nebenbedingungen Es sei zu zeigen, dass die Zielfunktion f (p) eine konvexe Funktionen ist. Eine Funktion f (p) ist konvex, wenn die Hesse-Matrix H(f ) positiv semidefinit ist: ∂2f ∂2f ∂2f · · · ∂p ∂p ∂p1 ∂p2 ∂p1 ∂pn 1 1 ∂2f ∂2f 2 ∂2f · · · ∂p2 ∂p1 ∂p2 ∂p2 ∂p2 ∂pn ∂ f (A.9) H(f ) = = . .. .. 0. .. ∂pi ∂pj .. . . . 2 2 2 ∂ f ∂ f ∂ f · · · ∂pn ∂pn ∂pn ∂p1 ∂pn ∂p2 Da die Zielfunktion f (p) linear in p ist, ist zu erwarten, dass alle zweiten Ableitungen Null sind und somit die Hesse-Matrix eine Null-Matrix und damit auch positiv semidefinit ist. Für die Zielfunktion f (p) gilt: X f (p) = pi , (A.10) i∈XT ∪XN ∂f (p) = 1, ∂pi ( 0 ∂ 2 f (p) = ∂pi ∂pj 0 (A.11) für i = j . für i 6= j (A.12) Damit ist gezeigt, dass f (p) eine konvexe Funktion oder genauer eine lineare Funktion ist. Um zu zeigen, dass die Nebenbedingungen konvexe Funktionen sind, wird folgende Eigenschaft konvexer Funktionen betrachtet: gµ (λp + (1 − λ)q) ≤ λ · gµ (p) + (1 − λ) · gµ (q). (A.13) Dabei sind λ ∈ [0, 1] und p, q ∈ P. Mit 2 P 2· A=σ · 2 Rij (i,j)∈J −1 (A.14) und bij = hT ij · w i (A.15) ergibt sich für Gleichung (A.13) P (i,j)∈J b2ij ? A A A ≤λ· P 2 + (1 − λ) · P 2 . · (λpi + (1 − λ)qi ) bij · pi bij · qi (i,j)∈J (A.16) (i,j)∈J Mit B= X (i,j)∈J b2ij · pi (A.17) A.2 Konvexität der Zielfunktion und der Nebenbedingungen 61 und C= X b2ij · qi (A.18) (i,j)∈J kann Gleichung (A.16) als ? λ · C + (1 − λ) · B 1 ≤ λ · B + (1 − λ) · C B·C (A.19) geschrieben werden. Mit wenigen Umformungsschritten kann eine eindeutige Aussage über die Gültigkeit der Ungleichung getroffen werden: ? B · C ≤ [λ · C + (1 − λ) · B][λ · B + (1 − λ) · C], (A.20) ? B · C ≤ [λ2 + (1 − λ)2 ] · BC + λ(1 − λ)B 2 + λ(1 − λ)C 2 , (A.21) ? B · C ≤ [λ + (1 − λ)]2 ·BC − 2λ(1 − λ)BC + λ(1 − λ)B 2 + λ(1 − λ)C 2 , | {z } (A.22) 1 ? 0 ≤ λ(1 − λ)(B − C)2 . (A.23) Diese Ungleichung ist für alle λ ∈ [0, 1] sowie alle B und C erfüllt. Damit ist gezeigt, dass es sich bei den Nebenbedingungen gµ um konvexe Funktionen handelt. Anhang B B Netzwerkdateien B.1 Beispiel-Netzwerkdatei für das Butterfly-Netzerk 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ############################################## # c r e a t e t h e network w i t h n o d e s and c h a n n e l s # ############################################## Network Name : B u t t e r f l y Network Noise : 1 . 0 Node : Node : Node : Node : Node : Node : power = 1 . 0 , name = ’ 1 ’ , t y p e = s o u r c e name = ’ 2 ’ , power = 1 . 0 , t y p e = s o u r c e name = ’ 3 ’ , power = 1 . 0 , t y p e = networknode name = ’ 4 ’ , power = 1 . 0 name = ’ 5 ’ , power = 1 . 0 , t y p e = s i n k name = ’ 6 ’ , power = 1 . 0 , t y p e = s i n k Channel : Channel : Channel : Channel : Channel : Channel : Channel : name = ’ h13 name = ’ h23 name = ’ h34 name = ’ h15 name = ’ h26 name = ’ h45 name = ’ h46 ’ ’ ’ ’ ’ ’ ’ , , , , , , , ’1 ’ ’2 ’ ’4 ’ ’1 ’ ’2 ’ ’4 ’ ’4 ’ −> −> <− −> −> −> −> ’3 ’ , ’3 ’ , ’3 ’ , ’5 ’ , ’6 ’ , ’5 ’ , ’6 ’ , ’[4 ,3 ,2] ’ ’[2 ,3 ,2] ’ ’[3 ,3 ,3] ’ ’[[6] ,[4] ,[7]] ’ ’[[8] ,[8] ,[8]] ’ ’[[20] ,[20] ,[20]] ’ ’[[30] ,[20] ,[20]] ’ ################################################## # P r e d e f i n i n g R a t e R e g i o n f o r Power O p t i m i z a t i o n # ################################################## Constraint : ’1 ’ + ’2 ’ = 2.5 Constraint : 1 ∗ ’1 ’ = 1.0 Constraint : 1 ∗ ’2 ’ = 2.0 #################### # performing tasks # #################### c a l c u l a t e R a t e R e g i o n = True c a l c u l a t e R a t e R e g i o n R o u t i n g = True o p t i m i z e P o w e r = True checkPower = True plotNetwork = F a l s e p l o t R a t e R e g i o n = True Listing B.1: Beispiel-Netzwerkdatei: Butterfly-Netzwerk 64 Anhang B Netzwerkdateien B.2 Butterfly-Netzwerk mit Netzwerkcodierungsgewinn 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ############################################## # c r e a t e t h e network w i t h n o d e s and c h a n n e l s # ############################################## Network Name : B u t t e r f l y −Netzwerk Noise : 1 . 0 Node : Node : Node : Node : Node : Node : power = 1 . 0 , name = ’ 1 ’ , t y p e = s o u r c e name = ’ 2 ’ , power = 1 . 0 , t y p e = s o u r c e name = ’ 3 ’ , power = 1 . 0 , t y p e = networknode name = ’ 4 ’ , power = 1 . 0 name = ’ 5 ’ , power = 1 . 0 , t y p e = s i n k name = ’ 6 ’ , power = 1 . 0 , t y p e = s i n k Channel : Channel : Channel : Channel : Channel : Channel : Channel : name = ’ h13 name = ’ h23 name = ’ h34 name = ’ h15 name = ’ h26 name = ’ h45 name = ’ h46 ’ ’ ’ ’ ’ ’ ’ , , , , , , , ’1 ’ ’2 ’ ’4 ’ ’1 ’ ’2 ’ ’4 ’ ’4 ’ −> −> <− −> −> −> −> ’3 ’ , ’3 ’ , ’3 ’ , ’5 ’ , ’6 ’ , ’5 ’ , ’6 ’ , ’[4 ,3 ,2] ’ ’[2 ,3 ,2] ’ ’[2 ,2 ,2] ’ ’[6 ,4 ,7] ’ ’[8 ,8 ,8] ’ ’[30 ,20 ,30] ’ ’[30 ,20 ,30] ’ ################################################## # P r e d e f i n i n g R a t e R e g i o n f o r Power O p t i m i z a t i o n # ################################################## Constraint : 1 ∗ ’1 ’ = 1.0 Constraint : 1 ∗ ’2 ’ = 1.0 #################### # performing tasks # #################### # usePredefinedRateRegion = False c a l c u l a t e R a t e R e g i o n = True c a l c u l a t e R a t e R e g i o n R o u t i n g = True optimizePower = F a l s e checkPower = F a l s e plotNetwork = F a l s e p l o t R a t e R e g i o n = True Listing B.2: Butterfly-Netzwerk mit Vergrößerung der Ratenregion durch Netzwerkcodierung B.3 Butterfly-Netzwerk mit limitierenden Kanten an den Quellen B.3 Butterfly-Netzwerk mit limitierenden Kanten an den Quellen 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ############################################## # c r e a t e t h e network w i t h n o d e s and c h a n n e l s # ############################################## Network Name : B u t t e r f l y −Netzwerk Noise : 1 . 0 Node : Node : Node : Node : Node : Node : power = 1 . 0 , name = ’ 1 ’ , t y p e = s o u r c e name = ’ 2 ’ , power = 1 . 0 , t y p e = s o u r c e name = ’ 3 ’ , power = 1 . 0 , t y p e = networknode name = ’ 4 ’ , power = 1 . 0 name = ’ 5 ’ , power = 1 . 0 , t y p e = s i n k name = ’ 6 ’ , power = 1 . 0 , t y p e = s i n k Channel : Channel : Channel : Channel : Channel : Channel : Channel : name = ’ h13 name = ’ h23 name = ’ h34 name = ’ h15 name = ’ h26 name = ’ h45 name = ’ h46 ’ ’ ’ ’ ’ ’ ’ , , , , , , , ’1 ’ ’2 ’ ’4 ’ ’1 ’ ’2 ’ ’4 ’ ’4 ’ −> −> <− −> −> −> −> ’3 ’ , ’3 ’ , ’3 ’ , ’5 ’ , ’6 ’ , ’5 ’ , ’6 ’ , ’[4 ,3 ,2] ’ ’[2 ,3 ,2] ’ ’[2 ,2 ,2] ’ ’[6 ,4 ,7] ’ ’[8 ,8 ,8] ’ ’[30 ,20 ,30] ’ ’[30 ,20 ,30] ’ ################################################## # P r e d e f i n i n g R a t e R e g i o n f o r Power O p t i m i z a t i o n # ################################################## Constraint : 1 ∗ ’1 ’ = 1.0 Constraint : 1 ∗ ’2 ’ = 1.0 #################### # performing tasks # #################### # usePredefinedRateRegion = False c a l c u l a t e R a t e R e g i o n = True c a l c u l a t e R a t e R e g i o n R o u t i n g = True optimizePower = F a l s e checkPower = F a l s e plotNetwork = F a l s e p l o t R a t e R e g i o n = True Listing B.3: Butterfly-Netzwerk mit limitierenden Ausgangskanten an den Quellen 65 66 Anhang B Netzwerkdateien B.4 Butterfly-Netzwerk mit Iteration über Mittelkante 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ############################################## # c r e a t e t h e network w i t h n o d e s and c h a n n e l s # ############################################## Network Name : B u t t e r f l y Network Noise : 1 . 0 Node : Node : Node : Node : Node : Node : power = 1 . 0 , name = ’ 1 ’ , t y p e = s o u r c e name = ’ 2 ’ , power = 1 . 0 , t y p e = s o u r c e name = ’ 3 ’ , power = 1 . 0 , t y p e = networknode name = ’ 4 ’ , power = 1 . 0 name = ’ 5 ’ , power = 1 . 0 , t y p e = s i n k name = ’ 6 ’ , power = 1 . 0 , t y p e = s i n k Channel : name = ’ h13 ’ , Channel : name = ’ h23 ’ , ’ 1 ’ −> ’ 3 ’ , ’ 2 ’ −> ’ 3 ’ , ’[50 ,50 ,50] ’ ’[50 ,50 ,50] ’ Channel : name = ’ h34 ’ , ’ 4 ’ <− ’ 3 ’ , ’[x , x , x ] ’ Channel : Channel : Channel : Channel : ’1 ’ ’2 ’ ’4 ’ ’4 ’ name = ’ h15 name = ’ h26 name = ’ h45 name = ’ h46 ’ ’ ’ ’ , , , , −> −> −> −> ’5 ’ , ’6 ’ , ’5 ’ , ’6 ’ , ’[50 ’[50 ’[50 ’[50 ,50 ,50 ,50 ,50 ,50] ,50] ,50] ,50] ’ ’ ’ ’ #################### # performing tasks # #################### c a l c u l a t e R a t e R e g i o n = True c a l c u l a t e R a t e R e g i o n R o u t i n g = True optimizePower = F a l s e checkPower = F a l s e plotNetwork = F a l s e p l o t R a t e R e g i o n = True Listing B.4: Butterfly-Netzwerk mit limitierender Kante h34 . Die Variable x wird in jeder Iteration mit einem Wert ersetzt. B.5 Butterfly-Netzwerk mit Interferenz Beispiel 1 B.5 Butterfly-Netzwerk mit Interferenz Beispiel 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ############################################## # c r e a t e t h e network w i t h n o d e s and c h a n n e l s # ############################################## Network Name : B u t t e r f l y −Netzwerk Noise : 1 . 0 Node : Node : Node : Node : Node : Node : power = 1 . 0 , name = ’ 1 ’ , t y p e = s o u r c e name = ’ 2 ’ , power = 1 . 0 , t y p e = s o u r c e name = ’ 3 ’ , power = 1 . 0 , t y p e = networknode name = ’ 4 ’ , power = 1 . 0 name = ’ 5 ’ , power = 1 . 0 , t y p e = s i n k name = ’ 6 ’ , power = 1 . 0 , t y p e = s i n k Channel : Channel : Channel : Channel : Channel : Channel : Channel : name = ’ h13 name = ’ h23 name = ’ h34 name = ’ h15 name = ’ h26 name = ’ h45 name = ’ h46 ’ ’ ’ ’ ’ ’ ’ , , , , , , , Channel : name = ’ h14 ’ , Channel : name = ’ h24 ’ , ’1 ’ ’2 ’ ’4 ’ ’1 ’ ’2 ’ ’4 ’ ’4 ’ −> −> <− −> −> −> −> ’3 ’ , ’3 ’ , ’3 ’ , ’5 ’ , ’6 ’ , ’5 ’ , ’6 ’ , ’ 1 ’ −> ’ 4 ’ , ’ 2 ’ −> ’ 4 ’ , ’[4 ,3 ,2] ’ ’[2 ,3 ,2] ’ ’[2 ,2 ,2] ’ ’[6 ,4 ,7] ’ ’[8 ,8 ,8] ’ ’[30 ,20 ,30] ’ ’[30 ,20 ,30] ’ ’[1 ,1 ,1] ’ ’[1 ,1 ,1] ’ ################################################## # P r e d e f i n i n g R a t e R e g i o n f o r Power O p t i m i z a t i o n # ################################################## Constraint : 1 ∗ ’1 ’ = 1.0 Constraint : 1 ∗ ’2 ’ = 1.0 #################### # performing tasks # #################### c a l c u l a t e R a t e R e g i o n = True c a l c u l a t e R a t e R e g i o n R o u t i n g = True optimizePower = F a l s e checkPower = F a l s e plotNetwork = F a l s e p l o t R a t e R e g i o n = True Listing B.5: Butterfly-Netzwerk mit Interferenz 67 68 Anhang B Netzwerkdateien B.6 Butterfly-Netzwerk mit Interferenz Beispiel 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ############################################## # c r e a t e t h e network w i t h n o d e s and c h a n n e l s # ############################################## Network Name : B u t t e r f l y −Netzwerk Noise : 1 . 0 Node : Node : Node : Node : Node : Node : power = 1 . 0 , name = ’ 1 ’ , t y p e = s o u r c e name = ’ 2 ’ , power = 1 . 0 , t y p e = s o u r c e name = ’ 3 ’ , power = 1 . 0 , t y p e = networknode name = ’ 4 ’ , power = 1 . 0 name = ’ 5 ’ , power = 1 . 0 , t y p e = s i n k name = ’ 6 ’ , power = 1 . 0 , t y p e = s i n k Channel : Channel : Channel : Channel : Channel : Channel : Channel : name = ’ h13 name = ’ h23 name = ’ h34 name = ’ h15 name = ’ h26 name = ’ h45 name = ’ h46 ’ ’ ’ ’ ’ ’ ’ , , , , , , , Channel : name = ’ h14 ’ , Channel : name = ’ h24 ’ , ’1 ’ ’2 ’ ’4 ’ ’1 ’ ’2 ’ ’4 ’ ’4 ’ −> −> <− −> −> −> −> ’3 ’ , ’3 ’ , ’3 ’ , ’5 ’ , ’6 ’ , ’5 ’ , ’6 ’ , ’ 1 ’ −> ’ 4 ’ , ’ 2 ’ −> ’ 4 ’ , ’[4 ,3 ,7] ’ ’[5 ,9 ,2] ’ ’[2 ,6 ,7] ’ ’[6 ,4 ,7] ’ ’[9 ,8 ,10] ’ ’[30 ,20 ,30] ’ ’[30 ,20 ,30] ’ ’[1 ,1 ,1] ’ ’[1 ,2 ,1] ’ ################################################## # P r e d e f i n i n g R a t e R e g i o n f o r Power O p t i m i z a t i o n # ################################################## Constraint : 1 ∗ ’1 ’ = 1.0 Constraint : 1 ∗ ’2 ’ = 1.0 #################### # performing tasks # #################### c a l c u l a t e R a t e R e g i o n = True c a l c u l a t e R a t e R e g i o n R o u t i n g = True optimizePower = F a l s e checkPower = F a l s e plotNetwork = F a l s e p l o t R a t e R e g i o n = True Listing B.6: Butterfly-Netzwerk mit Interferenz B.7 Netzwerk mit drei Quellen und drei Senken B.7 Netzwerk mit drei Quellen und drei Senken 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 ############################################## # c r e a t e t h e network w i t h n o d e s and c h a n n e l s # ############################################## Network Name : Netzwerk m i t 3 Q u e l l e n Noise : 1 . 0 Node : Node : Node : Node : Node : Node : Node : Node : Node : name = ’ 1 ’ , name = ’ 2 ’ , name = ’ 3 ’ , name = ’ 4 ’ , name = ’ 5 ’ , name = ’ 6 ’ , name = ’ 7 ’ , name = ’ 8 ’ , name = ’ 9 ’ , Channel : Channel : Channel : Channel : Channel : Channel : Channel : Channel : Channel : Channel : Channel : Channel : Channel : Channel : Channel : power = 1 . 0 power = 1 . 0 power = 1 . 0 power = 1 . 0 power = 1 . 0 power = 1 . 0 power = 1 . 0 power = 1 . 0 power = 1 . 0 name = ’ h14 name = ’ h17 name = ’ h24 name = ’ h25 name = ’ h35 name = ’ h38 name = ’ h39 name = ’ h46 name = ’ h48 name = ’ h49 name = ’ h56 name = ’ h57 name = ’ h59 name = ’ h67 name = ’ h68 ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ , , , , , , , , , , , , , , , ’1 ’ ’1 ’ ’2 ’ ’2 ’ ’3 ’ ’3 ’ ’3 ’ ’4 ’ ’4 ’ ’4 ’ ’5 ’ ’5 ’ ’5 ’ ’6 ’ ’6 ’ , type = source , type = source , type = source , type = sink , type = sink , type = sink −> −> −> −> −> −> −> −> −> −> −> −> −> −> −> ’4 ’ , ’7 ’ , ’4 ’ , ’5 ’ , ’5 ’ , ’8 ’ , ’9 ’ , ’6 ’ , ’8 ’ , ’9 ’ , ’6 ’ , ’7 ’ , ’9 ’ , ’7 ’ , ’8 ’ , ’[4 ,3 ,2] ’ ’[2 ,3 ,2] ’ ’[2 ,2 ,2] ’ ’[6 ,4 ,7] ’ ’[8 ,8 ,8] ’ ’[30 ,20 ,30] ’ ’[30 ,20 ,30] ’ ’[3 ,3 ,2] ’ ’[8 ,3 ,9] ’ ’[2 ,3 ,2] ’ ’[5 ,3 ,4] ’ ’[4 ,5 ,8] ’ ’[15 ,9 ,21] ’ ’[4 ,10 ,9] ’ ’[10 ,12 ,22] ’ ################################################## # P r e d e f i n i n g R a t e R e g i o n f o r Power O p t i m i z a t i o n # ################################################## Constraint : 1 ∗ ’1 ’ = 1.388647 Constraint : 1 ∗ ’2 ’ = 1.388647 #################### # performing tasks # #################### c a l c u l a t e R a t e R e g i o n = True c a l c u l a t e R a t e R e g i o n R o u t i n g = True optimizePower = F a l s e checkPower = F a l s e plotNetwork = F a l s e plotRateRegion = False Listing B.7: Netzwerk mit drei Quellen und drei Senken 69 Literaturverzeichnis [1] Automatically Tuned Linear Algebra Software (ATLAS). http://math-atlas. sourceforge.net, Januar 2011. [2] BLAS. http://www.netlib.org/blas, Januar 2011. [3] The GTK+ Project. http://www.gtk.org, Januar 2011. [4] LAPACK - Linear Algebra PACKage. http://www.netlib.org/lapack, Januar 2011. [5] Pycairo. http://cairographics.org/pycairo, Januar 2011. [6] Ahlswede, R., Ning Cai, S. Y.R. Li und R.W. Yeung: Network information flow. IEEE Transactions on Information Theory, 46(4):1204–1216, Juli 2000, ISSN 0018-9448. [7] AT&T und Bell-Labs: Graphviz - Graph Visualization Software. http://www. graphviz.org, Januar 2011. [8] Boyd, Stephen und Lieven Vandenberghe: Convex Optimization. Cambridge University Press, The Edinburgh Building, Cambridge, CB2 8RU, UK, 7. Auflage, 2009. [9] Cover, Thomas M., Abbas El Gamal und Masoud Salehi: Multiple-access channel with arbitrarily correlated sources. IEEE Transactions on Information Theory, IT26(6):648–659, November 1980. [10] Cover, Thomas M. und Joy A. Thomas: Elements of Information Theory. John Wiley & Sons, Inc., Hoboken, New Jersey, 2. Auflage, 2006. [11] Edmonds, Jack und Richard M. Karp: Theoretical Improvements in Algorithmic Efficiency for Network Flow Problems. J. ACM, 19(2):248–264, 1972, ISSN 0004-5411. [12] Ford, Jr., Lester R. und Delbert R. Fulkerson: Maximal Flow Through a Network. Canadian Journal of Mathematics, 8:399–404, 1956. [13] Ford, Jr., Lester R. und Delbert R. Fulkerson: A Simple Algorithm for Finding Maximal Network Flows and an Application to the Hitchcock Problem. Canadian Journal of Mathematics, 9:210–218, 1957. [14] Ford, Jr., Lester R. und Delbert R. Fulkerson: Flows in Networks. Princeton University Press, Princeton, NJ, 1962. [15] Foundation, Python Software: Python Programming Language - Official Website. http://www.python.org, Januar 2011. 72 Literaturverzeichnis [16] Fragouli, Christina und Emina Soljanin: Network Coding Fundamentals, Band 2 der Reihe Foundations and Trends in Networking, Seiten 1–133. now Publishers Inc., 2007. [17] Gershman, Alex B., Nicholas D. Sidiropoulos, Shahram Shahbazpanahi, Mats Bengtsson und Björn Ottersten: Convex Optimization-based Beamforming: From Receive to Transmit and Network Designs. IEEE Signal Processing Magazine, 27(3):62–75, Mai 2010. [18] Hunter, John, Darren Dale und Michael Droettboom: maplotlib: python plotting. http://matplotlib.sourceforge.net, Januar 2011. [19] Jorswieck, Eduard A.: Material zur Vorlesung „Netzwerkcodierung“. Technische Universität Dresden, Sommersemester 2009. [20] Lehnert, Ralf: Material zur Vorlesung „Planung und Optimierung von Telekommunikationnetzen“. Technische Universität Dresden, Wintersemester 2008/2009. [21] Li, Shuo Yen Robert, Raymond W. Yeung und Ning Cai: Linear network coding. IEEE Transactions on Information Theory, 49:371–381, Februar 2003. [22] Lo, Titus K.Y.: Maximum ratio transmission. IEEE Transactions on Communications, 47:1458–1461, Oktober 1999. [23] Lo, Titus K.Y.: Maximum ratio transmission. United States Patent, (20100002798), Januar 2010. [24] Makhorin, Andrew: GLPK (GNU Linear Programming Kit). http://www.gnu.org/ software/glpk, Januar 2011. [25] Mochaourab, Rami und Eduard A. Jorswieck: Optimal Beamforming in Interference Networks with Perfect Local Channel Information. IEEE Transactions on Signal Processing, 2010. http://arxiv.org/abs/1004.4492, voraussichtlicher Erscheinungstermin April 2011. [26] Numpy Developers: NumPy. http://numpy.org, Januar 2011. [27] Optimization department of cybernetics institute, National Academy of Sciences of Ukraine: OpenOpt. http://openopt.org, Januar 2011. [28] pmatiello: python-graph - A library for working with graphs in Python. http:// code.google.com/p/python-graph/, Januar 2011. [29] Sachs, Horst und J. Finck: Einführung in die Theorie der endlichen Graphen. BSB B.G. Teubner Verlagsgesellschaft, 1970. [30] SciPy: SciPy. http://www.scipy.org, Januar 2011. Literaturverzeichnis 73 [31] Slepian, D. und J. K. Wolf: A coding theorem for multiple access channels with correlated sources. Bell Syst. Tech. J., 52:1037–1076, 1973. [32] Stein, William: Sage: Open Source Mathematics Software. http://www.sagemath. org, Januar 2011. [33] The GNOME Project und PyGTK Team: PyGTK: GTK+ for Python. http://www. pygtk.org, Januar 2011. [34] Wikipedia: Augmenting Path. http://en.wikipedia.org/wiki/Augmenting_ path, Januar 2011. [35] Wikipedia: Automatically Tuned Linear Algebra Software. http://en. wikipedia.org/wiki/Automatically_Tuned_Linear_Algebra_Software, Januar 2011. [36] Wikipedia: Basic Linear Algebra Subprograms. http://de.wikipedia.org/ wiki/Basic_Linear_Algebra_Subprograms, Januar 2011. [37] Wikipedia: GNU Linear Programming Kit. http://de.wikipedia.org/wiki/ GNU_Linear_Programming_Kit, Januar 2011. [38] Wikipedia: Graphviz. 2011. http://de.wikipedia.org/wiki/Graphviz, Januar [39] Wikipedia: GTK+. http://de.wikipedia.org/wiki/GTK%2B, Januar 2011. [40] Wikipedia: LAPACK. http://de.wikipedia.org/wiki/LAPACK, Januar 2011. [41] Wikipedia: Matplotlib. http://en.wikipedia.org/wiki/Matplotlib, Januar 2011. [42] Wikipedia: NumPy. http://en.wikipedia.org/wiki/Numpy, Januar 2011. [43] Wikipedia: OpenOpt. http://en.wikipedia.org/wiki/OpenOpt, Januar 2011. [44] Wikipedia: PyGTK. http://en.wikipedia.org/wiki/Pygtk, Januar 2011. [45] Wikipedia: Python (Programmiersprache). http://de.wikipedia.org/wiki/ Python_%28Programmiersprache%29, Januar 2011. [46] Wikipedia: Sage (mathematics software). http://en.wikipedia.org/wiki/ Sage_%28mathematics_software%29, Januar 2011. [47] Wikipedia: SciPy. http://en.wikipedia.org/wiki/SciPy, Januar 2011. [48] Worth, Carl und Behdad Esfahbod: Cairo. http://cairographics.org, Januar 2011. 74 Literaturverzeichnis [49] Yeung, Raymond W., Shuo Yen Robert Li, Ning Cai und Zhen Zhang: Network Coding Theory – Part I: Single Source, Band 2 der Reihe Foundations and Trends in Communications and Information Theory, Seiten 241–329. now Publishers Inc., 2006.