-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.go
70 lines (63 loc) · 1.8 KB
/
main.go
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package main
import (
"fmt"
"routing-algorithms/network"
"routing-algorithms/random"
)
func main() {
var net network.Network
net.Links = [][]int{
{0, 2, 4, -1, 10},
{2, 0, 2, -1, 7},
{4, 2, 0, 4, 3},
{-1, -1, 4, 0, 5},
{10, 7, 3, 5, 0},
}
net.Nodes = make([]network.Node, len(net.Links))
net.Jitters = [][]int{
{0, 2, 8, 2, 40},
{2, 0, 10, 17, 8},
{8, 10, 0, 9, 14},
{2, 17, 9, 0, 16},
{40, 8, 14, 16, 0},
}
var paths1 [][]network.Path = network.Dijkstra(net, 0)
for i := 0; i < len(paths1); i++ {
fmt.Println(paths1[i])
}
fmt.Println()
var paths2 []network.Path = network.KShortest(net, network.Flow{Source: 0, Destination: 4}, 10)
fmt.Println()
for i := 0; i < len(paths2); i++ {
fmt.Println(paths2[i])
}
var paths3 []network.Path
var jitters []int
var reliabilities []float64
paths3, jitters, reliabilities = network.R2tdsdnRouting(net, network.Flow{Source: 0, Destination: 4, DesirableJitter: 40}, 10, 0.6, 0.3)
fmt.Println("Paths: -------------")
network.PrintPaths(paths3)
for i := 0; i < len(paths3); i++ {
fmt.Printf("Path: %v, jitters: %v, reliabilities: %v\n", paths3, jitters, reliabilities)
}
// var net1 network.Network
// net1.Links = [][]int{
// {0, 3, 2, -1, -1, -1},
// {-1, 0, -1, 4, -1, -1},
// {-1, 1, 0, 2, 3, -1},
// {-1, -1, -1, 0, 2, 1},
// {-1, -1, -1, -1, 0, 2},
// {-1, -1, -1, -1, -1, 0},
// }
// net1.Nodes = make([]network.Node, len(net1.Links))
// fmt.Println()
// network.GenerateDirectedJitters(net1, 0, 10)
fmt.Println("Generate 40 random following Normal(10, 20), between -10 and 30:")
for i := 0; i < 40; i++ {
fmt.Println(random.NormalRandomBM(-10, 30, 10, 20))
}
fmt.Println("Generate 40 random following Normal(5, 2), between -5 and 15:")
for i := 0; i < 40; i++ {
fmt.Println(random.NormalRandomBM(-5, 15, 5, 2))
}
}