5
5
import cv2
6
6
import copy
7
7
8
-
9
-
10
- taps = [(29 ,29 ),(10 ,10 )]
11
- houses = [[4 ,(10 ,10 )],[7 ,(29 ,29 )],[8 ,(18 ,6 )],[15 ,(12 ,16 )],[6 ,[23 ,20 ]],[7 ,[6 ,19 ]]]
12
-
13
-
14
-
15
-
16
-
17
8
def get_taps_demand (taps ,houses ):
18
9
tap_demand = []
19
10
houses_tap = []
20
11
for tap in taps :
21
12
tap_demand .append (0 )
22
13
23
14
for house in houses :
24
- # print(house)
25
15
lowest_distance = 99999999999999999
26
16
house_tap = 0
27
17
housex = house [1 ][0 ]
@@ -38,9 +28,6 @@ def get_taps_demand(taps,houses):
38
28
39
29
for tap in houses_tap :
40
30
tap_demand [tap [0 ]]+= tap [1 ]
41
-
42
- # print(houses_tap)
43
- # print(tap_demand)
44
31
return tap_demand
45
32
46
33
def work_done (distance ):
@@ -61,44 +48,13 @@ def total_demand(tap_demands):
61
48
total += tap
62
49
return total
63
50
64
- # taps_d = get_taps_demand(taps,houses)
65
- # print(total_differnces(taps_d))
66
- #
67
-
68
-
69
- # tick = 0
70
- # for x1 in range(15):
71
- # print(tick/810000)
72
- # for y1 in (range(30)):
73
- # for x2 in (range(30)):
74
- # for y2 in (range(30)):
75
- # # print(x1,y1,x2,y2)
76
- # tick += 1
77
- # taps = [[x1, y1], [x2, y2]]
78
- # tap_demand = get_taps_demand(taps, houses)
79
- # total_differnce = total_demand(tap_demand)
80
- # if total_differnce < min_total_differnces:
81
- # happy_taps = []
82
- # happy_taps.append(taps)
83
- # min_total_differnces = total_differnce
84
- # if total_differnce == min_total_differnces:
85
- # happy_taps.append(taps)
86
-
87
-
88
- # print(happy_taps)
89
- # print(min_total_differnces)
90
-
91
- taps = [[18 ,16 ],[29 ,29 ]]
92
-
93
- def draw_network (houses ,taps ,image = "null" ):
51
+ def draw_network (houses ,taps ,image ):
94
52
pos = {}
95
53
names = []
96
54
edges = []
97
55
for i in range (len (houses )):
98
56
pos [str (houses [i ][0 ])]= (houses [i ][1 ][0 ],houses [i ][1 ][1 ])
99
57
edges .append ((str (houses [i ][0 ]),str (houses [i ][0 ])))
100
- print (pos )
101
- print (edges )
102
58
103
59
G = nx .Graph ()
104
60
G .add_edges_from (edges )
@@ -109,48 +65,23 @@ def draw_network(houses,taps,image = "null"):
109
65
edges = []
110
66
for i in range (len (taps )):
111
67
pos [(i + 1 )]= (taps [i ][0 ],taps [i ][1 ])
112
- print (pos )
113
68
edges .append ((i + 1 ,i + 1 ))
114
- print (pos )
115
- print (edges )
116
69
117
70
G = nx .Graph ()
118
71
G .add_edges_from (edges )
119
72
120
73
nx .draw_networkx (G , pos = pos , node_color = 'b' ,node_size = 30 ,fontsize = 50 )
121
- # G.add_edges_from([(1, 1), (2, 2)])
122
- # pos = {1: (taps[0][0], taps[0][1]), 2: (taps[1][0], taps[1][1])}
123
- # #
124
- # nx.draw_networkx(G, pos=pos, node_color='b')
125
- print (image )
126
- if image != "null" :
127
- img = cv2 .imread (image )
128
- img = cv2 .cvtColor (img , cv2 .COLOR_BGR2RGB )
129
- plt .imshow (img )
74
+ image = cv2 .cvtColor (image , cv2 .COLOR_BGR2RGB )
75
+ plt .imshow (image )
130
76
plt .show ()
131
77
132
-
133
- # import copy
134
- #
135
- # taps = [(10, 16), (18, 6), (19, 19)]
136
- # demands = get_taps_demand(taps,houses)
137
- # print(demands)
138
- #
139
- # print(total_demand(demands))
140
- #
141
- # taps = [(10, 16), (10,10), (19, 19)]
142
- # demands = get_taps_demand(taps,houses)
143
- # print(demands)
144
- #
145
- # print(total_demand(demands))
146
-
147
78
def total (demands ):
148
79
totalval = 0
149
80
for demand in demands :
150
81
totalval += demand
151
82
return totalval
152
83
153
- def greedy_brute (houses ,amount_of_taps ,grid_size ,image = "null" ):
84
+ def greedy_brute (houses ,amount_of_taps ,grid_size ,image ):
154
85
tick = 0
155
86
total_tick = amount_of_taps * grid_size [0 ]* grid_size [1 ]
156
87
happy_taps = []
@@ -182,67 +113,4 @@ def greedy_brute(houses,amount_of_taps,grid_size,image="null"):
182
113
183
114
min_total_differnces = total_differnce
184
115
stored_taps .append (happy_taps [- 1 ])
185
- draw_network (houses , stored_taps ,image )
186
-
187
-
188
-
189
-
190
- def brute_tap_position (houses ,amount_of_taps ,grid_size ,image = "null" ):
191
-
192
-
193
- min_total_differnces = 999999999999999
194
- happy_taps = []
195
- possible_coords = []
196
-
197
- for x in range (grid_size [0 ]+ 1 ):
198
- for y in range (grid_size [1 ]+ 1 ):
199
- possible_coords .append ((x , y ))
200
-
201
-
202
-
203
-
204
-
205
- pairs = list (itertools .combinations_with_replacement (possible_coords ,amount_of_taps ))
206
- print (pairs [- 1 ])
207
- total_ticks = (len (list (copy .copy (pairs ))))
208
- #total_ticks = (grid_size[0]**(2*amount_of_taps))
209
- print (total_ticks )
210
- tick = 0
211
-
212
- for pair in pairs :
213
-
214
- tick += 1
215
- if tick % (int (total_ticks / 1000 )) == 0 :
216
- print ((tick / total_ticks )* 100 )
217
- taps = pair
218
- tap_demand = get_taps_demand (taps , houses )
219
- total_differnce = total_demand (tap_demand )
220
-
221
-
222
- if total_differnce == min_total_differnces :
223
- happy_taps .append (taps )
224
-
225
-
226
- if total_differnce < min_total_differnces :
227
- happy_taps = []
228
- happy_taps .append (taps )
229
- min_total_differnces = total_differnce
230
-
231
- print (happy_taps )
232
-
233
- for gtaps in happy_taps :
234
- draw_network (houses , gtaps ,image = image )
235
-
236
-
237
-
238
- # #brute_tap_position(houses,3,(20,20))
239
- #
240
- # houses = [(133.0, (130, 282)), (168.5, (55, 272)), (106.0, (72, 262)), (301.5, (86, 230)), (480.5, (14, 222)), (657.0, (93, 200)), (394.5, (108, 155)), (84.0, (228, 116)), (117.0, (115, 114)), (274.0, (44, 116)), (561.0,(212, 88)), (194.0, (80, 50)), (295.5, (124, 15))]
241
- #
242
- # taps = [(103, 159), (168, 65), (56, 240), (107, 29), (214, 92), (44, 116), (96, 218),(14, 222)]
243
- # draw_network(houses,taps,image="resized.jpg")
244
-
245
-
246
-
247
-
248
-
116
+ draw_network (houses , stored_taps ,image )
0 commit comments