@@ -92,7 +92,7 @@ def tours_connectivity(ids)
9292 def tours_connectivity_from_solution ( solution )
9393 result = { }
9494 solution . routes . each_with_index do |route , idx |
95- service_ids = route . stops . filter_map { | s | s . service_id } . compact
95+ service_ids = route . stops . filter_map ( & : service_id) . compact
9696 result [ idx ] = tours_connectivity ( service_ids )
9797 end
9898 result
@@ -160,20 +160,21 @@ def to_geojson
160160
161161 # Full adjacency list: Delaunay edges + KNN-repair edges, cached.
162162 def adjacency
163- @adjacency_cache ||= begin
164- adj = Hash . new { |h , k | h [ k ] = [ ] }
165- ( edges || [ ] ) . each do |e |
166- adj [ e [ 0 ] ] << e [ 1 ]
167- adj [ e [ 1 ] ] << e [ 0 ]
168- end
169- ( knn_neighbors || { } ) . each do |sid , neighbors |
170- neighbors . each do |nb |
171- adj [ sid ] << nb unless adj [ sid ] . include? ( nb )
172- adj [ nb ] << sid unless adj [ nb ] . include? ( sid )
163+ @adjacency ||=
164+ begin
165+ adj = Hash . new { |h , k | h [ k ] = [ ] }
166+ ( edges || [ ] ) . each do |e |
167+ adj [ e [ 0 ] ] << e [ 1 ]
168+ adj [ e [ 1 ] ] << e [ 0 ]
169+ end
170+ ( knn_neighbors || { } ) . each do |sid , neighbors |
171+ neighbors . each do |nb |
172+ adj [ sid ] << nb unless adj [ sid ] . include? ( nb )
173+ adj [ nb ] << sid unless adj [ nb ] . include? ( sid )
174+ end
173175 end
176+ adj
174177 end
175- adj
176- end
177178 end
178179
179180 def build_service_ids_by_point
@@ -229,45 +230,48 @@ def neighbors_for_point(point_id)
229230 end
230231
231232 def knn_neighbors
232- @knn_neighbors_cache ||= begin
233- merged = { }
234- @graphs . each_value do |g |
235- ( g . knn_neighbors || { } ) . each do |sid , neighbors |
236- ( merged [ sid ] ||= [ ] ) . concat ( neighbors )
233+ @knn_neighbors ||=
234+ begin
235+ merged = { }
236+ @graphs . each_value do |g |
237+ ( g . knn_neighbors || { } ) . each do |sid , neighbors |
238+ ( merged [ sid ] ||= [ ] ) . concat ( neighbors )
239+ end
237240 end
241+ merged . each_value ( &:uniq! )
242+ merged
238243 end
239- merged . each_value ( &:uniq! )
240- merged
241- end
242244 end
243245
244246 def nodes
245- @nodes_cache ||= begin
246- merged = { }
247- @graphs . each_value { |g | merged . merge! ( g . nodes || { } ) }
248- merged
249- end
247+ @nodes ||=
248+ begin
249+ merged = { }
250+ @graphs . each_value { |g | merged . merge! ( g . nodes || { } ) }
251+ merged
252+ end
250253 end
251254
252255 def edges
253- @edges_cache ||= begin
254- seen = { }
255- result = [ ]
256- @graphs . each_value do |g |
257- ( g . edges || [ ] ) . each do |e |
258- pair = [ e [ 0 ] , e [ 1 ] ] . sort
259- next if seen [ pair ]
260-
261- seen [ pair ] = true
262- result << e
256+ @edges ||=
257+ begin
258+ seen = { }
259+ result = [ ]
260+ @graphs . each_value do |g |
261+ ( g . edges || [ ] ) . each do |e |
262+ pair = [ e [ 0 ] , e [ 1 ] ] . sort
263+ next if seen [ pair ]
264+
265+ seen [ pair ] = true
266+ result << e
267+ end
263268 end
269+ result
264270 end
265- result
266- end
267271 end
268272
269273 def edge_set
270- @edge_set_cache ||= edges . each_with_object ( { } ) { |e , h | h [ [ e [ 0 ] , e [ 1 ] ] . sort ] = true }
274+ @edge_set ||= edges . each_with_object ( { } ) { |e , h | h [ [ e [ 0 ] , e [ 1 ] ] . sort ] = true }
271275 end
272276
273277 def connected? ( id_a , id_b )
@@ -292,7 +296,7 @@ def tours_connectivity(ids)
292296 def tours_connectivity_from_solution ( solution )
293297 result = { }
294298 solution . routes . each_with_index do |route , idx |
295- service_ids = route . stops . filter_map { | s | s . service_id } . compact
299+ service_ids = route . stops . filter_map ( & : service_id) . compact
296300 result [ idx ] = tours_connectivity ( service_ids )
297301 end
298302 result
0 commit comments