-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathread_data.py
More file actions
64 lines (51 loc) · 1.76 KB
/
read_data.py
File metadata and controls
64 lines (51 loc) · 1.76 KB
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
class Link:
def __init__(self, number, node1, node2, capacity):
self.number = number
self.node1 = node1
self.node2 = node2
self.capacity = capacity
def __str__(self) -> str:
return f"{self.number} {self.node1} {self.node2} {self.capacity}"
class Demand:
def __init__(self, number, node1, node2, volume, no_of_links):
self.number = number
self.node1 = node1
self.node2 = node2
self.volume = volume
self.no_of_links = no_of_links
def __str__(self) -> str:
return f"{self.number} {self.node1} {self.node2} {self.volume} {self.no_of_links}"
class Path:
def __init__(self, d, l, amount, paths):
self.d = d
self.l = l
self.amount = amount
self.paths = paths
def __str__(self) -> str:
return f"{self.amount} {self.paths}"
def read_data(filename):
f = open(filename, "r")
no_of_links = int(f.readline())
links = []
demands = []
paths = []
for x in range(no_of_links):
linkData = f.readline()
newData = linkData.split(" ")
link = Link(newData[0], newData[1], newData[2], newData[3])
links.append(link)
f.readline()
no_of_demands = int(f.readline())
for x in range(no_of_demands):
demandData = f.readline()
newData = demandData.split(" ")
no_of_links = int(f.readline())
demand = Demand(newData[0], newData[1], newData[2], newData[3], no_of_links)
demands.append(demand)
for i in range(no_of_links):
pathData = f.readline()
newPath = pathData.split(" ")
path = Path(x, i, newPath[0], newPath[1:-1])
paths.append(path)
f.readline()
return links, demands, paths