DIPLOMARBEIT

Werbung
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.
Herunterladen