[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[sumo-user] Net instance has no attribute '__getitem__' : Query in Answer to Hayder
|
Hi Michael & Hayder,
I am using the code of Hayder attached here with.
Error :
Traceback (most recent call last):
File "hay2_1.py", line 143, in <module>
main()
File "hay2_1.py", line 132, in main
route = shortestPath(graph, 'node1', 'node9')
File "hay2_1.py", line 122, in shortestPath
D,P = Dijkstra(graph,start,end)
File "hay2_1.py", line 104, in Dijkstra
for edge in graph[vertex]:
AttributeError: Net instance has no attribute '__getitem__'
Solution Given :
Dear Hayder,
you cannot access the vertices and edges of a sumo network using the [] operator. You have to use methods like getEdge / getOutgoing, see here:
I am not able to understand how to resolve this problem. Hayder if you have solved this problem please let me know What would be the best solution of this. I am expecting new hay_2 file,if you don't mind.
--
import os, sys
import optparse
import subprocess
import random
from Queue import PriorityQueue
import xml.sax
from xml.sax import saxutils, parse, make_parser, handler
from copy import copy
from itertools import *
SUMO_HOME = "/home/hayder/sumo-0.21.0"
try:
sys.path.append(os.path.join(SUMO_HOME, "tools"))
# import the library
import sumolib
from sumolib.net import Net
from sumolib.net import NetReader
from sumolib.net import Lane
from sumolib.net import Edge
from sumolib.net import Node
from sumolib.net import Connection
from sumolib.net import Roundabout
except ImportError:
sys.exit("please declare environment variable 'SUMO_HOME' as the root directory of your sumo installation (it should contain folders 'bin', 'tools' and 'docs')")
class priorityDictionary(dict):
def __init__(self):
'''Initialize priorityDictionary by creating binary heap
of pairs (value,key). Note that changing or removing a dict entry will
not remove the old pair from the heap until it is found by smallest() or
until the heap is rebuilt.'''
self.__heap = []
dict.__init__(self)
def smallest(self):
'''Find smallest item after removing deleted items from heap.'''
if len(self) == 0:
raise IndexError, "smallest of empty priorityDictionary"
heap = self.__heap
while heap[0][1] not in self or self[heap[0][1]] != heap[0][0]:
lastItem = heap.pop()
insertionPoint = 0
while 1:
smallChild = 2*insertionPoint+1
if smallChild+1 < len(heap) and \
heap[smallChild][0] > heap[smallChild+1][0]:
smallChild += 1
if smallChild >= len(heap) or lastItem <= heap[smallChild]:
heap[insertionPoint] = lastItem
break
heap[insertionPoint] = heap[smallChild]
insertionPoint = smallChild
return heap[0][1]
def __iter__(self):
'''Create destructive sorted iterator of priorityDictionary.'''
def iterfn():
while len(self) > 0:
x = self.smallest()
yield x
del self[x]
return iterfn()
def __setitem__(self,key,val):
'''Change value stored in dictionary and add corresponding
pair to heap. Rebuilds the heap if the number of deleted items grows
too large, to avoid memory leakage.'''
dict.__setitem__(self,key,val)
heap = self.__heap
if len(heap) > 2 * len(self):
self.__heap = [(v,k) for k,v in self.iteritems()]
self.__heap.sort() # builtin sort likely faster than O(n) heapify
else:
newPair = (val,key)
insertionPoint = len(heap)
heap.append(None)
while insertionPoint > 0 and val < heap[(insertionPoint-1)//2][0]:
heap[insertionPoint] = heap[(insertionPoint-1)//2]
insertionPoint = (insertionPoint-1)//2
heap[insertionPoint] = newPair
def setdefault(self,key,val):
'''Reimplement setdefault to call our customized __setitem__.'''
if key not in self:
self[key] = val
return self[key]
def update(self, other):
for key in other.keys():
self[key] = other[key]
def Dijkstra(graph,start,end=None):
D = {} # dictionary of final distances
P = {} # dictionary of predecessors
Q = priorityDictionary() # estimated distances of non-final vertices
Q[start] = 0
for vertex in Q:
D[vertex] = Q[vertex]
if vertex == end: break
for edge in graph[vertex]:
vwLength = D[vertex] + graph[vertex][edge]
if edge in D:
if vwLength < D[edge]:
raise ValueError, "Dijkstra: found better path to already-final vertex"
elif w not in Q or vwLength < Q[edge]:
Q[edge] = vwLength
P[edge] = vertex
return (D,P)
def shortestPath(graph,start,end):
"""
Find a single shortest path from the given start vertex to the given end vertex.
The input has the same conventions as Dijkstra().
The output is a list of the vertices in order along the shortest path.
"""
D,P = Dijkstra(graph,start,end)
Path = []
while 1:
Path.append(end)
if end == start: break
end = P[end]
Path.reverse()
return Path
def main():
route = shortestPath(graph, 'node1', 'node9')
#create the new route for vehicle
print
#assign the new route for vehicle with id vehicle1
if __name__ == "__main__":
# parse the net
graph = Net()
graph = sumolib.net.readNet('Dijkstra1.net.xml')
main()
<?xml version="1.0" encoding="UTF-8"?>
<!-- generated on Mon Nov 9 15:44:31 2015 by SUMO netconvert Version 0.21.0
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo-sim.org/xsd/netconvertConfiguration.xsd">
<input>
<node-files value="dijkstra.nod.xml"/>
<edge-files value="dijkstra.edg.xml"/>
</input>
<output>
<output-file value="Dijkstra1.net.xml"/>
</output>
</configuration>
-->
<net version="0.13" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo-sim.org/xsd/net_file.xsd">
<location netOffset="0.00,862.00" convBoundary="0.00,0.00,856.00,1085.00" origBoundary="0.00,-862.00,856.00,223.00" projParameter="!"/>
<edge id=":2_0" function="internal">
<lane id=":2_0_0" index="0" speed="12.12" length="5.36" shape="138.08,997.75 139.31,998.67 140.44,998.88 141.47,998.38 142.41,997.16"/>
</edge>
<edge id=":2_1" function="internal">
<lane id=":2_1_0" index="0" speed="12.12" length="6.98" shape="138.08,997.75 143.60,1002.02"/>
</edge>
<edge id=":3_0" function="internal">
<lane id=":3_0_0" index="0" speed="12.12" length="6.83" shape="425.58,1082.03 427.01,1082.09 428.17,1081.39 429.07,1079.92 429.69,1077.69"/>
</edge>
<edge id=":3_1" function="internal">
<lane id=":3_1_0" index="0" speed="12.12" length="8.39" shape="425.58,1082.03 427.53,1082.29 429.45,1081.97 431.33,1081.05 433.18,1079.54"/>
</edge>
<edge id=":4_0" function="internal">
<lane id=":4_0_0" index="0" speed="12.12" length="9.30" shape="843.67,673.87 845.81,671.43 846.19,670.08 844.81,669.82 841.67,670.65"/>
</edge>
<edge id=":4_1" function="internal">
<lane id=":4_1_0" index="0" speed="12.12" length="14.58" shape="843.67,673.87 848.08,669.42 851.15,666.12 852.87,663.98 853.24,662.99"/>
</edge>
<edge id=":5_0" function="internal">
<lane id=":5_0_0" index="0" speed="12.12" length="3.73" shape="486.86,792.11 485.42,792.03 483.37,791.02"/>
</edge>
<edge id=":5_1" function="internal">
<lane id=":5_1_0" index="0" speed="12.12" length="4.05" shape="486.86,792.11 485.41,791.97 483.87,790.59 483.60,790.15"/>
</edge>
<edge id=":5_2" function="internal">
<lane id=":5_2_0" index="0" speed="12.12" length="9.29" shape="486.86,792.11 485.12,792.22 484.23,791.09 484.19,788.70 484.98,785.07"/>
</edge>
<edge id=":5_6" function="internal">
<lane id=":5_6_0" index="0" speed="12.12" length="7.66" shape="483.37,791.02 480.70,789.09 477.41,786.23"/>
</edge>
<edge id=":5_7" function="internal">
<lane id=":5_7_0" index="0" speed="12.12" length="6.79" shape="483.60,790.15 482.25,787.96 480.55,784.09"/>
</edge>
<edge id=":5_3" function="internal">
<lane id=":5_3_0" index="0" speed="12.12" length="11.29" shape="482.41,795.87 482.40,793.66 481.56,791.32 479.90,788.84 477.41,786.23"/>
</edge>
<edge id=":5_4" function="internal">
<lane id=":5_4_0" index="0" speed="12.12" length="12.13" shape="482.41,795.87 482.76,792.61 482.50,789.89 481.73,787.21 480.55,784.09"/>
</edge>
<edge id=":5_5" function="internal">
<lane id=":5_5_0" index="0" speed="12.12" length="11.10" shape="482.41,795.87 483.01,792.78 483.52,790.43 484.13,788.10 484.98,785.07"/>
</edge>
<edge id=":6_0" function="internal">
<lane id=":6_0_0" index="0" speed="12.12" length="11.65" shape="338.51,657.72 337.54,657.72 335.44,658.44 332.18,659.88 327.79,662.05"/>
</edge>
<edge id=":6_1" function="internal">
<lane id=":6_1_0" index="0" speed="12.12" length="4.66" shape="338.51,657.72 336.25,653.64"/>
</edge>
<edge id=":6_2" function="internal">
<lane id=":6_2_0" index="0" speed="12.12" length="7.83" shape="330.50,664.89 331.59,662.49 331.50,661.22 330.24,661.07 327.79,662.05"/>
</edge>
<edge id=":6_3" function="internal">
<lane id=":6_3_0" index="0" speed="12.12" length="12.91" shape="330.50,664.89 332.49,662.00 334.44,659.51 335.85,656.89 336.25,653.64"/>
</edge>
<edge id=":7_0" function="internal">
<lane id=":7_0_0" index="0" speed="12.12" length="5.83" shape="72.94,791.86 71.13,792.46 70.03,792.04 69.63,790.61 69.80,789.36"/>
</edge>
<edge id=":7_1" function="internal">
<lane id=":7_1_0" index="0" speed="12.12" length="8.17" shape="72.94,791.86 70.52,792.81 69.30,792.56 69.31,791.13 70.52,788.50"/>
</edge>
<edge id=":7_4" function="internal">
<lane id=":7_4_0" index="0" speed="12.12" length="1.20" shape="69.80,789.36 69.95,788.17"/>
</edge>
<edge id=":7_2" function="internal">
<lane id=":7_2_0" index="0" speed="12.12" length="5.04" shape="67.24,792.43 69.95,788.17"/>
</edge>
<edge id=":7_3" function="internal">
<lane id=":7_3_0" index="0" speed="12.12" length="5.12" shape="67.24,792.43 70.52,788.50"/>
</edge>
<edge id=":8_0" function="internal">
<lane id=":8_0_0" index="0" speed="12.12" length="10.88" shape="314.82,362.41 314.59,359.31 314.37,356.98 314.05,354.67 313.51,351.61"/>
</edge>
<edge id=":8_1" function="internal">
<lane id=":8_1_0" index="0" speed="12.12" length="9.25" shape="314.82,362.41 314.75,358.93 315.15,356.41 316.00,354.84 317.31,354.24"/>
</edge>
<edge id=":8_2" function="internal">
<lane id=":8_2_0" index="0" speed="12.12" length="10.66" shape="316.49,361.81 315.39,358.94 314.66,356.81 314.10,354.62 313.51,351.61"/>
</edge>
<edge id=":8_3" function="internal">
<lane id=":8_3_0" index="0" speed="12.12" length="7.12" shape="316.49,361.81 315.48,358.61 315.28,356.28 315.83,354.97"/>
</edge>
<edge id=":8_6" function="internal">
<lane id=":8_6_0" index="0" speed="12.12" length="1.69" shape="315.83,354.97 315.89,354.82 317.31,354.24"/>
</edge>
<edge id=":8_4" function="internal">
<lane id=":8_4_0" index="0" speed="12.12" length="10.62" shape="310.98,361.55 312.54,358.85 313.51,356.79 313.84,354.62 313.51,351.61"/>
</edge>
<edge id=":8_5" function="internal">
<lane id=":8_5_0" index="0" speed="12.12" length="9.88" shape="310.98,361.55 312.88,358.42 314.57,356.16 316.04,354.76 317.31,354.24"/>
</edge>
<edge id=":9_0" function="internal">
<lane id=":9_0_0" index="0" speed="12.12" length="12.63" shape="617.99,335.22 615.91,332.56 613.90,330.44 611.73,328.44 609.20,326.19"/>
</edge>
<edge id=":9_1" function="internal">
<lane id=":9_1_0" index="0" speed="12.12" length="6.51" shape="607.88,330.10 609.91,329.70 610.80,328.91 610.57,327.74 609.20,326.19"/>
</edge>
<edge id=":9_2" function="internal">
<lane id=":9_2_0" index="0" speed="12.12" length="11.34" shape="613.87,335.93 614.05,333.67 613.33,331.30 611.72,328.80 609.20,326.19"/>
</edge>
<edge id="1" from="1" to="2" priority="75">
<lane id="1_0" index="0" speed="12.12" length="192.18" shape="2.19,861.86 138.08,997.75"/>
</edge>
<edge id="10" from="5" to="8" priority="75">
<lane id="10_0" index="0" speed="12.12" length="453.03" shape="480.55,784.09 316.49,361.81"/>
</edge>
<edge id="11" from="5" to="9" priority="75">
<lane id="11_0" index="0" speed="12.12" length="467.27" shape="484.98,785.07 613.87,335.93"/>
</edge>
<edge id="12" from="6" to="7" priority="75">
<lane id="12_0" index="0" speed="12.12" length="286.01" shape="327.79,662.05 72.94,791.86"/>
</edge>
<edge id="13" from="6" to="8" priority="75">
<lane id="13_0" index="0" speed="12.12" length="292.03" shape="336.25,653.64 314.82,362.41"/>
</edge>
<edge id="14" from="7" to="8" priority="75">
<lane id="14_0" index="0" speed="12.12" length="490.01" shape="70.52,788.50 310.98,361.55"/>
</edge>
<edge id="15" from="7" to="10" priority="75">
<lane id="15_0" index="0" speed="12.12" length="798.86" shape="69.95,788.17 246.27,9.01"/>
</edge>
<edge id="16" from="8" to="9" priority="75">
<lane id="16_0" index="0" speed="12.12" length="291.57" shape="317.31,354.24 607.88,330.10"/>
</edge>
<edge id="17" from="8" to="10" priority="75">
<lane id="17_0" index="0" speed="12.12" length="348.36" shape="313.51,351.61 250.01,9.09"/>
</edge>
<edge id="18" from="9" to="10" priority="75">
<lane id="18_0" index="0" speed="12.12" length="479.54" shape="609.20,326.19 253.10,5.02"/>
</edge>
<edge id="2" from="1" to="7" priority="75">
<lane id="2_0" index="0" speed="12.12" length="91.99" shape="2.19,857.47 67.24,792.43"/>
</edge>
<edge id="3" from="2" to="3" priority="75">
<lane id="3_0" index="0" speed="12.12" length="293.11" shape="143.60,1002.02 425.58,1082.03"/>
</edge>
<edge id="4" from="2" to="6" priority="75">
<lane id="4_0" index="0" speed="12.12" length="381.82" shape="142.41,997.16 330.50,664.89"/>
</edge>
<edge id="5" from="3" to="5" priority="75">
<lane id="5_0" index="0" speed="12.12" length="286.71" shape="429.69,1077.69 482.41,795.87"/>
</edge>
<edge id="6" from="3" to="4" priority="75">
<lane id="6_0" index="0" speed="12.12" length="577.12" shape="433.18,1079.54 843.67,673.87"/>
</edge>
<edge id="7" from="4" to="5" priority="75">
<lane id="7_0" index="0" speed="12.12" length="375.02" shape="841.67,670.65 486.86,792.11"/>
</edge>
<edge id="8" from="4" to="9" priority="75">
<lane id="8_0" index="0" speed="12.12" length="403.46" shape="853.24,662.99 617.99,335.22"/>
</edge>
<edge id="9" from="5" to="6" priority="75">
<lane id="9_0" index="0" speed="12.12" length="189.24" shape="477.41,786.23 338.51,657.72"/>
</edge>
<junction id="1" type="unregulated" x="0.00" y="862.00" incLanes="" intLanes="" shape="1.06,862.99 3.32,860.73 3.32,858.61 1.06,856.34"/>
<junction id="10" type="unregulated" x="250.00" y="0.00" incLanes="17_0 18_0 15_0" intLanes="" shape="248.43,9.38 251.58,8.80 252.03,6.20 254.17,3.83 244.71,8.66 247.83,9.37"/>
<junction id="2" type="priority" x="141.00" y="1003.00" incLanes="1_0" intLanes=":2_0_0 :2_1_0" shape="143.17,1003.56 144.04,1000.48 143.80,997.95 141.02,996.38 139.22,996.62 136.95,998.88">
<request index="0" response="00" foes="00" cont="0"/>
<request index="1" response="00" foes="00" cont="0"/>
</junction>
<junction id="3" type="priority" x="430.00" y="1085.00" incLanes="3_0" intLanes=":3_0_0 :3_1_0" shape="434.30,1080.68 432.05,1078.40 431.26,1077.98 428.12,1077.39 426.02,1080.49 425.14,1083.57">
<request index="0" response="00" foes="00" cont="0"/>
<request index="1" response="00" foes="00" cont="0"/>
</junction>
<junction id="4" type="priority" x="856.00" y="664.00" incLanes="6_0" intLanes=":4_0_0 :4_1_0" shape="854.54,662.06 851.94,663.92 841.15,669.14 842.19,672.16 842.54,672.73 844.79,675.01">
<request index="0" response="00" foes="00" cont="0"/>
<request index="1" response="00" foes="00" cont="0"/>
</junction>
<junction id="5" type="priority" x="485.00" y="791.00" incLanes="7_0 5_0" intLanes=":5_6_0 :5_7_0 :5_2_0 :5_3_0 :5_4_0 :5_5_0" shape="487.38,793.62 486.34,790.59 486.52,785.51 483.45,784.63 482.04,783.51 479.06,784.67 478.50,785.05 476.32,787.40 480.84,795.57 483.98,796.16">
<request index="0" response="111000" foes="111000" cont="1"/>
<request index="1" response="110000" foes="110000" cont="1"/>
<request index="2" response="100000" foes="100000" cont="0"/>
<request index="3" response="000000" foes="000001" cont="0"/>
<request index="4" response="000000" foes="000011" cont="0"/>
<request index="5" response="000000" foes="000111" cont="0"/>
</junction>
<junction id="6" type="priority" x="338.00" y="655.00" incLanes="9_0 4_0" intLanes=":6_0_0 :6_1_0 :6_2_0 :6_3_0" shape="337.42,658.89 339.59,656.54 337.84,653.53 334.65,653.76 327.06,660.63 328.51,663.48 329.11,664.10 331.90,665.68">
<request index="0" response="1100" foes="1100" cont="0"/>
<request index="1" response="1000" foes="1000" cont="0"/>
<request index="2" response="0000" foes="0001" cont="0"/>
<request index="3" response="0000" foes="0011" cont="0"/>
</junction>
<junction id="7" type="priority" x="71.00" y="791.00" incLanes="12_0 2_0" intLanes=":7_4_0 :7_1_0 :7_2_0 :7_3_0" shape="73.66,793.29 72.21,790.44 71.91,789.28 69.12,787.71 66.11,791.29 68.37,793.56">
<request index="0" response="1100" foes="1100" cont="1"/>
<request index="1" response="1000" foes="1000" cont="0"/>
<request index="2" response="0000" foes="0001" cont="0"/>
<request index="3" response="0000" foes="0011" cont="0"/>
</junction>
<junction id="8" type="priority" x="316.00" y="356.00" incLanes="13_0 10_0 14_0" intLanes=":8_0_0 :8_1_0 :8_2_0 :8_6_0 :8_4_0 :8_5_0" shape="313.22,362.52 316.41,362.29 317.44,355.83 317.18,352.64 315.08,351.32 311.93,351.90 309.59,360.76 312.38,362.33">
<request index="0" response="110100" foes="110100" cont="0"/>
<request index="1" response="101100" foes="101100" cont="0"/>
<request index="2" response="110000" foes="110011" cont="0"/>
<request index="3" response="100000" foes="100010" cont="1"/>
<request index="4" response="000000" foes="000101" cont="0"/>
<request index="5" response="000000" foes="001111" cont="0"/>
</junction>
<junction id="9" type="priority" x="617.00" y="331.00" incLanes="8_0 16_0 11_0" intLanes=":9_0_0 :9_1_0 :9_2_0" shape="616.69,336.15 619.29,334.28 610.27,325.00 608.13,327.38 607.75,328.51 608.02,331.70 612.33,335.49 615.41,336.37">
<request index="0" response="010" foes="110" cont="0"/>
<request index="1" response="000" foes="101" cont="0"/>
<request index="2" response="011" foes="011" cont="0"/>
</junction>
<junction id=":5_6_0" type="internal" x="483.37" y="791.02" incLanes=":5_0_0 5_0" intLanes=":5_3_0 :5_4_0 :5_5_0"/>
<junction id=":5_7_0" type="internal" x="483.60" y="790.15" incLanes=":5_1_0 5_0" intLanes=":5_4_0 :5_5_0"/>
<junction id=":7_4_0" type="internal" x="69.80" y="789.36" incLanes=":7_0_0 2_0" intLanes=":7_2_0 :7_3_0"/>
<junction id=":8_6_0" type="internal" x="315.83" y="354.97" incLanes=":8_3_0 14_0" intLanes=":8_1_0 :8_5_0"/>
<connection from="1" to="4" fromLane="0" toLane="0" via=":2_0_0" dir="r" state="M"/>
<connection from="1" to="3" fromLane="0" toLane="0" via=":2_1_0" dir="s" state="M"/>
<connection from="10" to="17" fromLane="0" toLane="0" via=":8_2_0" dir="s" state="m"/>
<connection from="10" to="16" fromLane="0" toLane="0" via=":8_3_0" dir="l" state="m"/>
<connection from="11" to="18" fromLane="0" toLane="0" via=":9_2_0" dir="r" state="m"/>
<connection from="12" to="15" fromLane="0" toLane="0" via=":7_0_0" dir="L" state="m"/>
<connection from="12" to="14" fromLane="0" toLane="0" via=":7_1_0" dir="l" state="m"/>
<connection from="13" to="17" fromLane="0" toLane="0" via=":8_0_0" dir="s" state="m"/>
<connection from="13" to="16" fromLane="0" toLane="0" via=":8_1_0" dir="l" state="m"/>
<connection from="14" to="17" fromLane="0" toLane="0" via=":8_4_0" dir="s" state="M"/>
<connection from="14" to="16" fromLane="0" toLane="0" via=":8_5_0" dir="l" state="M"/>
<connection from="16" to="18" fromLane="0" toLane="0" via=":9_1_0" dir="r" state="M"/>
<connection from="2" to="15" fromLane="0" toLane="0" via=":7_2_0" dir="s" state="M"/>
<connection from="2" to="14" fromLane="0" toLane="0" via=":7_3_0" dir="s" state="M"/>
<connection from="3" to="5" fromLane="0" toLane="0" via=":3_0_0" dir="r" state="M"/>
<connection from="3" to="6" fromLane="0" toLane="0" via=":3_1_0" dir="R" state="M"/>
<connection from="4" to="12" fromLane="0" toLane="0" via=":6_2_0" dir="r" state="M"/>
<connection from="4" to="13" fromLane="0" toLane="0" via=":6_3_0" dir="s" state="M"/>
<connection from="5" to="9" fromLane="0" toLane="0" via=":5_3_0" dir="r" state="M"/>
<connection from="5" to="10" fromLane="0" toLane="0" via=":5_4_0" dir="s" state="M"/>
<connection from="5" to="11" fromLane="0" toLane="0" via=":5_5_0" dir="s" state="M"/>
<connection from="6" to="7" fromLane="0" toLane="0" via=":4_0_0" dir="r" state="M"/>
<connection from="6" to="8" fromLane="0" toLane="0" via=":4_1_0" dir="R" state="M"/>
<connection from="7" to="9" fromLane="0" toLane="0" via=":5_0_0" dir="L" state="m"/>
<connection from="7" to="10" fromLane="0" toLane="0" via=":5_1_0" dir="L" state="m"/>
<connection from="7" to="11" fromLane="0" toLane="0" via=":5_2_0" dir="l" state="m"/>
<connection from="8" to="18" fromLane="0" toLane="0" via=":9_0_0" dir="s" state="m"/>
<connection from="9" to="12" fromLane="0" toLane="0" via=":6_0_0" dir="r" state="m"/>
<connection from="9" to="13" fromLane="0" toLane="0" via=":6_1_0" dir="s" state="m"/>
<connection from=":2_0" to="4" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":2_1" to="3" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":3_0" to="5" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":3_1" to="6" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":4_0" to="7" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":4_1" to="8" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":5_0" to="9" fromLane="0" toLane="0" via=":5_6_0" dir="s" state="m"/>
<connection from=":5_6" to="9" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":5_1" to="10" fromLane="0" toLane="0" via=":5_7_0" dir="s" state="m"/>
<connection from=":5_7" to="10" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":5_2" to="11" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":5_3" to="9" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":5_4" to="10" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":5_5" to="11" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":6_0" to="12" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":6_1" to="13" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":6_2" to="12" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":6_3" to="13" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":7_0" to="15" fromLane="0" toLane="0" via=":7_4_0" dir="s" state="m"/>
<connection from=":7_4" to="15" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":7_1" to="14" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":7_2" to="15" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":7_3" to="14" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":8_0" to="17" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":8_1" to="16" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":8_2" to="17" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":8_3" to="16" fromLane="0" toLane="0" via=":8_6_0" dir="s" state="m"/>
<connection from=":8_6" to="16" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":8_4" to="17" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":8_5" to="16" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":9_0" to="18" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":9_1" to="18" fromLane="0" toLane="0" dir="s" state="M"/>
<connection from=":9_2" to="18" fromLane="0" toLane="0" dir="s" state="M"/>
</net>