Browse Source

new logic for matching is applied

master
김선중 1 year ago
parent
commit
1217e8f037
7 changed files with 966 additions and 758 deletions
  1. +398
    -226
      Analysis/0411_unp-left_p-right-uturn/0415_matching.ipynb
  2. +64
    -64
      Intermediates/match6.csv
  3. +102
    -46
      Intermediates/matching.csv
  4. +1
    -1
      Intermediates/node2init.json
  5. +306
    -376
      Results/sn_1704419700.add.xml
  6. BIN
      Scripts/__pycache__/preprocess_daily.cpython-38.pyc
  7. +95
    -45
      Scripts/preprocess_daily.py

+ 398
- 226
Analysis/0411_unp-left_p-right-uturn/0415_matching.ipynb View File

@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
@ -17,7 +17,7 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 2,
"metadata": {},
"outputs": [
{
@ -46,7 +46,7 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 3,
"metadata": {},
"outputs": [
{
@ -285,7 +285,7 @@
"[108 rows x 12 columns]"
]
},
"execution_count": 4,
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
@ -296,7 +296,7 @@
},
{
"cell_type": "code",
"execution_count": 10,
"execution_count": 9,
"metadata": {},
"outputs": [
{
@ -321,209 +321,212 @@
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>202</td>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>동</td>\n",
" <td>서</td>\n",
" <td>090</td>\n",
" <td>270</td>\n",
" <td>571510152_02</td>\n",
" <td>-571510152_01</td>\n",
" <td>i9</td>\n",
" <td>straight</td>\n",
" <td>남</td>\n",
" <td>571545870_02</td>\n",
" <td>571542797_02</td>\n",
" <td>i0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>202</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>서</td>\n",
" <td>동</td>\n",
" <td>270</td>\n",
" <td>090</td>\n",
" <td>571510152_01</td>\n",
" <td>571510152_01.65</td>\n",
" <td>i9</td>\n",
" <td>straight</td>\n",
" <td>571510153_02</td>\n",
" <td>571545870_01</td>\n",
" <td>i0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>-571542797_02</td>\n",
" <td>571510153_01</td>\n",
" <td>i0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>-571500487_01</td>\n",
" <td>571542797_02</td>\n",
" <td>i0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>5</td>\n",
" <td>서</td>\n",
" <td>북</td>\n",
" <td>571510153_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>123</th>\n",
" <td>210</td>\n",
" <td>12</td>\n",
" <td>북서</td>\n",
" <td>남동</td>\n",
" <td>571500535_02.18</td>\n",
" <td>571542115_01</td>\n",
" <td>i6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>124</th>\n",
" <td>210</td>\n",
" <td>13</td>\n",
" <td>남서</td>\n",
" <td>북서</td>\n",
" <td>571500585_02</td>\n",
" <td>571500535_01</td>\n",
" <td>i6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>125</th>\n",
" <td>210</td>\n",
" <td>14</td>\n",
" <td>북동</td>\n",
" <td>남서</td>\n",
" <td>571511538_02.121</td>\n",
" <td>571500585_01</td>\n",
" <td>i6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>126</th>\n",
" <td>210</td>\n",
" <td>15</td>\n",
" <td>북서</td>\n",
" <td>북동</td>\n",
" <td>571500535_02.18</td>\n",
" <td>571511538_01</td>\n",
" <td>i6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>127</th>\n",
" <td>210</td>\n",
" <td>16</td>\n",
" <td>남동</td>\n",
" <td>북서</td>\n",
" <td>-571542115_01</td>\n",
" <td>571500535_01</td>\n",
" <td>i6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>128 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"80 202 1 A 6 동 서 090 \n",
"81 202 1 B 2 서 동 270 \n",
" inter_no move_no inc_dire out_dire inc_edge_id out_edge_id \\\n",
"0 175 1 동 남 571545870_02 571542797_02 \n",
"1 175 2 서 동 571510153_02 571545870_01 \n",
"2 175 3 남 서 -571542797_02 571510153_01 \n",
"3 175 4 북 남 -571500487_01 571542797_02 \n",
"4 175 5 서 북 571510153_02 571500487_01 \n",
".. ... ... ... ... ... ... \n",
"123 210 12 북서 남동 571500535_02.18 571542115_01 \n",
"124 210 13 남서 북서 571500585_02 571500535_01 \n",
"125 210 14 북동 남서 571511538_02.121 571500585_01 \n",
"126 210 15 북서 북동 571500535_02.18 571511538_01 \n",
"127 210 16 남동 북서 -571542115_01 571500535_01 \n",
"\n",
" node_id \n",
"0 i0 \n",
"1 i0 \n",
"2 i0 \n",
"3 i0 \n",
"4 i0 \n",
".. ... \n",
"123 i6 \n",
"124 i6 \n",
"125 i6 \n",
"126 i6 \n",
"127 i6 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"80 270 571510152_02 -571510152_01 i9 straight \n",
"81 090 571510152_01 571510152_01.65 i9 straight "
"[128 rows x 7 columns]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
"output_type": "display_data"
}
],
"source": [
"self.match6[self.match6.node_id==parent_id].dropna(subset=['inc_edge_id', 'out_edge_id'])"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"self.match7 = self.match6.copy()\n",
"self.match7 = self.match7[['inter_no', 'node_id', 'move_no', 'inc_angle', 'out_angle', 'inc_dire', 'out_dire', 'inc_edge_id', 'out_edge_id']]\n",
"# parent_id = self.parent_ids[1]\n",
"\n",
"for parent_id in self.parent_ids:\n",
" m7 = self.match7[self.match7.node_id==parent_id].dropna(subset=['inc_edge_id', 'out_edge_id'])\n",
" m6 = self.match6[self.match6.node_id==parent_id].dropna(subset=['inc_edge_id', 'out_edge_id'])\n",
" inc_angles = [int(angle) for angle in np.unique(m7.inc_angle.values)]\n",
" out_angles = [int(angle) for angle in np.unique(m7.out_angle.values)]\n",
" # print(parent_id)\n",
" # display(m6)\n",
" # display(m7)\n",
" # print(inc_angles)\n",
" # print(out_angles)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"# (1) 가능한 (진입방향, 진출방향) 목록 \n",
"flows = self.nema.dropna().apply(lambda row: (row['inc_dire'], row['out_dire']), axis=1).tolist()\n",
"\n",
"# (2) 각 교차로별 방향 목록 : pdires (possible directions)\n",
"pdires = {}\n",
"for node_id in self.parent_ids:\n",
" dires = self.match7[self.match7.node_id == node_id][['inc_dire','out_dire']].values.flatten()\n",
"p2dires = {} # parent_id to directions\n",
"for parent_id in self.parent_ids:\n",
" dires = self.match7[self.match7.node_id == parent_id][['inc_dire','out_dire']].values.flatten()\n",
" dires = {dire for dire in dires if type(dire)==str}\n",
" pdires[node_id] = dires\n",
" p2dires[parent_id] = dires\n",
"\n",
"# (3) 각 (교차로, 진입방향) 별 진입id 목록 : inc2id (incoming direction to incoming edge_id)\n",
"inc2id = {}\n",
"for node_id in self.parent_ids:\n",
" for inc_dire in pdires[node_id]:\n",
" df = self.match7[(self.match7.node_id==node_id) & (self.match7.inc_dire==inc_dire)]\n",
" inc2id[(node_id, inc_dire)] = df.inc_edge_id.iloc[0]\n",
"for parent_id in self.parent_ids:\n",
" for inc_dire in p2dires[parent_id]:\n",
" df = self.match7[(self.match7.node_id==parent_id) & (self.match7.inc_dire==inc_dire)]\n",
" inc2id[(parent_id, inc_dire)] = df.inc_edge_id.iloc[0]\n",
"\n",
"# (4) 각 (교차로, 진출방향) 별 진출id 목록 : out2id (outgoing direction to outgoing edge_id)\n",
"out2id = {}\n",
"for node_id in self.parent_ids:\n",
" for out_dire in pdires[node_id]:\n",
" df = self.match7[(self.match7.node_id==node_id) & (self.match7.out_dire==out_dire)]\n",
" out2id[(node_id, out_dire)] = df.out_edge_id.iloc[0]\n",
"# (5) 각 교차로별 가능한 (진입방향, 진출방향) 목록 : pflow (possible flows)\n",
"pflow = {}\n",
"for node_id in self.parent_ids:\n",
" pflow[node_id] = [flow for flow in flows if set(flow).issubset(pdires[node_id])]"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"i0\n"
]
},
{
"data": {
"text/plain": [
"{1: '571545870_02',\n",
" 2: '571510153_02',\n",
" 3: '-571542797_02',\n",
" 4: '-571500487_01',\n",
" 5: '571510153_02',\n",
" 6: '571545870_02',\n",
" 7: '-571500487_01',\n",
" 8: '-571542797_02',\n",
" 9: '-571500487_01',\n",
" 10: '571510153_02',\n",
" 11: '571545870_02',\n",
" 12: '-571500487_01',\n",
" 13: '571510153_02',\n",
" 14: '-571500487_01',\n",
" 15: '-571500487_01',\n",
" 16: '571545870_02'}"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"{1: '571542797_02',\n",
" 2: '571545870_01',\n",
" 3: '571510153_01',\n",
" 4: '571542797_02',\n",
" 5: '571500487_01',\n",
" 6: '571510153_01',\n",
" 7: '571545870_01',\n",
" 8: '571500487_01',\n",
" 9: '571545870_01',\n",
" 10: '571500487_01',\n",
" 11: '571510153_01',\n",
" 12: '571545870_01',\n",
" 13: '571500487_01',\n",
" 14: '571510153_01',\n",
" 15: '571500487_01',\n",
" 16: '571500487_01'}"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"p2am = dict() # parent id to a list of aligned movement numbers\n",
"for parent_id in self.parent_ids:\n",
" pnema = self.nema[self.nema.inc_dire.isin(pdires[parent_id]) & self.nema.out_dire.isin(pdires[parent_id])]\n",
" p2am[parent_id] = list(pnema.move_no)\n",
" for out_dire in p2dires[parent_id]:\n",
" df = self.match7[(self.match7.node_id==parent_id) & (self.match7.out_dire==out_dire)]\n",
" out2id[(parent_id, out_dire)] = df.out_edge_id.iloc[0]\n",
"\n",
"# (5) 각 parent_id별 이동류번호 목록\n",
"p2move = dict() # parent id to a list of aligned movement numbers\n",
"for parent_id in self.parent_ids:\n",
" pnema = self.nema[self.nema.inc_dire.isin(p2dires[parent_id]) & self.nema.out_dire.isin(p2dires[parent_id])]\n",
" p2move[parent_id] = list(pnema.move_no)\n",
"\n",
"# (6) 방위별 방향벡터\n",
"dire2vec = dict() # direction to unit vector\n",
"theta = np.pi/2\n",
"for dire in self.dires:\n",
" dire2vec[dire] = np.array([np.cos(theta), np.sin(theta)])\n",
" theta -= np.pi/4\n",
"\n",
"plain_move_nos = list(range(1,17)) # plain movement numbers\n",
"\n",
"p2pm2inc_edge_id = dict() # parent id to pm2inc_edge_id\n",
"p2pm2out_edge_id = dict() # parent id to pm2out_edge_id\n",
"# (7) 각 parent_id별 : 각 이동류별 진입/진출 엣지 id\n",
"p2move2inc_edge_id = dict() # parent id to move2inc_edge_id\n",
"p2move2out_edge_id = dict() # parent id to move2out_edge_id\n",
"for parent_id in self.parent_ids:\n",
" pm2inc_edge_id = dict() # plain movement to incoming edge id\n",
" pm2out_edge_id = dict() # plain movement to outgoing edge id\n",
" for pm in plain_move_nos:\n",
" row = self.nema[self.nema.move_no==pm].iloc[0]\n",
" move2inc_edge_id = dict() # plain movement to incoming edge id\n",
" move2out_edge_id = dict() # plain movement to outgoing edge id\n",
" for move_no in range(1,17):\n",
" row = self.nema[self.nema.move_no==move_no].iloc[0]\n",
" inc_dire = row.inc_dire\n",
" out_dire = row.out_dire\n",
" inc_vec_true = dire2vec[inc_dire]\n",
@ -553,101 +556,270 @@
" out_index = np.array([np.dot(out_vec, out_vec_true) for out_vec in out_vecs]).argmax()\n",
" inc_edge_id = inc_edges[inc_index].getID()\n",
" out_edge_id = out_edges[out_index].getID()\n",
" pm2inc_edge_id[pm] = inc_edge_id\n",
" pm2out_edge_id[pm] = out_edge_id\n",
" p2pm2inc_edge_id[parent_id] = pm2inc_edge_id\n",
" p2pm2out_edge_id[parent_id] = pm2out_edge_id\n",
" move2inc_edge_id[move_no] = inc_edge_id\n",
" move2out_edge_id[move_no] = out_edge_id\n",
" p2move2inc_edge_id[parent_id] = move2inc_edge_id\n",
" p2move2out_edge_id[parent_id] = move2out_edge_id\n",
"\n",
"# (8) 각 이동류별 진입/진출 방위\n",
"m2inc_dire = dict()\n",
"m2out_dire = dict()\n",
"for move_no in range(1,17):\n",
" row = self.nema[self.nema.move_no==move_no].iloc[0]\n",
" m2inc_dire[move_no] = row.inc_dire\n",
" m2out_dire[move_no] = row.out_dire\n",
"\n",
"parent_id = self.parent_ids[0]\n",
"print(parent_id)\n",
"display(p2pm2inc_edge_id[parent_id])\n",
"display(p2pm2out_edge_id[parent_id])"
"# (9) 가능한 모든 이동류에 대하여 진입id, 진출id 배정 : matching\n",
"self.matching = []\n",
"for parent_id in self.parent_ids:\n",
" inter_no = self.node2inter[parent_id]\n",
" # 좌회전과 직진(1 ~ 16)\n",
" for move_no in range(1,17):\n",
" inc_dire = m2inc_dire[move_no]\n",
" out_dire = m2out_dire[move_no]\n",
" if move_no in p2move[parent_id]:\n",
" inc_edge_id = inc2id[(parent_id, inc_dire)]\n",
" out_edge_id = out2id[(parent_id, out_dire)]\n",
" else:\n",
" inc_edge_id = p2move2inc_edge_id[parent_id][move_no]\n",
" out_edge_id = p2move2out_edge_id[parent_id][move_no]\n",
" new_row = pd.DataFrame({'inter_no':[inter_no], 'move_no':[move_no],\n",
" 'inc_dire':[inc_dire], 'out_dire':[out_dire],\n",
" 'inc_edge_id':[inc_edge_id], 'out_edge_id':[out_edge_id], 'node_id':[parent_id]})\n",
" self.matching.append(new_row)\n",
"child_matching = self.match7[self.match7.node_id.isin(self.child_ids)]\n",
"child_matching = child_matching.drop(columns=['inc_angle', 'out_angle'])\n",
"self.matching = pd.concat(self.matching)\n",
"self.matching = self.matching.dropna(subset=['inc_edge_id', 'out_edge_id'])\\\n",
" .sort_values(by=['inter_no', 'node_id', 'move_no']).reset_index(drop=True)\n",
"self.matching['move_no'] = self.matching['move_no'].astype(int)\n",
"display(self.matching)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"plain_move_nos = list(range(1,17)) # plain movement numbers\n",
"p2pm2inc_edge_id = dict() # parent id to pm2inc_edge_id\n",
"p2pm2out_edge_id = dict() # parent id to pm2out_edge_id\n",
"for parent_id in self.parent_ids:\n",
" pm2inc_angle = dict()\n",
" for pm in plain_move_nos:\n",
" row = self.nema[self.nema.move_no==pm].iloc[0]\n",
" # inc_dire = row.\n",
"# plain movement number(1-16) to (inc_angle, out_angle)\n"
"m2inc_dire = dict()\n",
"m2out_dire = dict()\n",
"for move_no in range(1,17):\n",
" row = self.nema[self.nema.move_no==move_no].iloc[0]\n",
" m2inc_dire[move_no] = row.inc_dire\n",
" m2out_dire[move_no] = row.out_dire"
]
},
{
"cell_type": "code",
"execution_count": 18,
"execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[('동', '남'), ('서', '동'), ('남', '서'), ('북', '남'), ('서', '북'), ('동', '서'), ('북', '동'), ('남', '북'), ('북동', '남동'), ('남서', '북동'), ('남동', '남서'), ('북서', '남동'), ('남서', '북서'), ('북동', '남서'), ('북서', '북동'), ('남동', '북서')]\n",
"{'i0': {'북', '남', '동', '서'}, 'i1': {'북', '남', '서'}, 'i2': {'북', '남'}, 'i3': {'북', '남', '동', '서'}, 'i6': {'북', '남', '동', '서'}, 'i7': {'북', '남'}, 'i8': {'북', '남', '서', '동'}, 'i9': {'동', '서'}}\n",
"{('i0', '북'): '-571500487_01', ('i0', '남'): '-571542797_02', ('i0', '동'): '571545870_02', ('i0', '서'): '571510153_02', ('i1', '북'): '571542797_02.99', ('i1', '남'): '-571542810_01', ('i1', '서'): '571543469_02', ('i2', '북'): '571542811_02', ('i2', '남'): '-571542809_01', ('i3', '북'): '571556450_02', ('i3', '남'): '571540304_02', ('i3', '동'): '-571500475_01', ('i3', '서'): '571540303_02.21', ('i6', '북'): '571511538_02.121', ('i6', '남'): '571500585_02', ('i6', '동'): '-571542115_01', ('i6', '서'): '571500535_02.18', ('i7', '북'): '571542073_01', ('i7', '남'): '-571511538_02', ('i8', '북'): '571500583_01', ('i8', '남'): '-571500569_01', ('i8', '서'): '571500618_02', ('i8', '동'): '571500617_02', ('i9', '동'): '571510152_02', ('i9', '서'): '571510152_01'}\n",
"{('i0', '북'): '571500487_01', ('i0', '남'): '571542797_02', ('i0', '동'): '571545870_01', ('i0', '서'): '571510153_01', ('i1', '북'): '-571542797_02.99', ('i1', '남'): '571542810_01', ('i1', '서'): '571543469_01', ('i2', '북'): '571542811_01', ('i2', '남'): '571542809_01', ('i3', '북'): '571556450_01', ('i3', '남'): '571540304_01', ('i3', '동'): '571500475_01', ('i3', '서'): '571540303_01', ('i6', '북'): '571511538_01', ('i6', '남'): '571500585_01', ('i6', '동'): '571542115_01', ('i6', '서'): '571500535_01', ('i7', '북'): '571542073_02', ('i7', '남'): '571511538_02', ('i8', '북'): '571500583_02', ('i8', '남'): '571500569_01', ('i8', '서'): '571500618_01', ('i8', '동'): '571500617_01', ('i9', '동'): '571510152_01.65', ('i9', '서'): '-571510152_01'}\n",
"{'i0': [('동', '남'), ('서', '동'), ('남', '서'), ('북', '남'), ('서', '북'), ('동', '서'), ('북', '동'), ('남', '북')], 'i1': [('남', '서'), ('북', '남'), ('서', '북'), ('남', '북')], 'i2': [('북', '남'), ('남', '북')], 'i3': [('동', '남'), ('서', '동'), ('남', '서'), ('북', '남'), ('서', '북'), ('동', '서'), ('북', '동'), ('남', '북')], 'i6': [('동', '남'), ('서', '동'), ('남', '서'), ('북', '남'), ('서', '북'), ('동', '서'), ('북', '동'), ('남', '북')], 'i7': [('북', '남'), ('남', '북')], 'i8': [('동', '남'), ('서', '동'), ('남', '서'), ('북', '남'), ('서', '북'), ('동', '서'), ('북', '동'), ('남', '북')], 'i9': [('서', '동'), ('동', '서')]}\n"
]
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>동</td>\n",
" <td>남</td>\n",
" <td>571545870_02</td>\n",
" <td>571542797_02</td>\n",
" <td>i0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>서</td>\n",
" <td>동</td>\n",
" <td>571510153_02</td>\n",
" <td>571545870_01</td>\n",
" <td>i0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>-571542797_02</td>\n",
" <td>571510153_01</td>\n",
" <td>i0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>-571500487_01</td>\n",
" <td>571542797_02</td>\n",
" <td>i0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>5</td>\n",
" <td>서</td>\n",
" <td>북</td>\n",
" <td>571510153_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>135</th>\n",
" <td>210</td>\n",
" <td>13</td>\n",
" <td>남서</td>\n",
" <td>북서</td>\n",
" <td>571500585_02</td>\n",
" <td>571500535_01</td>\n",
" <td>i6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>136</th>\n",
" <td>210</td>\n",
" <td>14</td>\n",
" <td>북동</td>\n",
" <td>남서</td>\n",
" <td>571511538_02.121</td>\n",
" <td>571500585_01</td>\n",
" <td>i6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>137</th>\n",
" <td>210</td>\n",
" <td>15</td>\n",
" <td>북서</td>\n",
" <td>북동</td>\n",
" <td>571500535_02.18</td>\n",
" <td>571511538_01</td>\n",
" <td>i6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>138</th>\n",
" <td>210</td>\n",
" <td>16</td>\n",
" <td>남동</td>\n",
" <td>북서</td>\n",
" <td>-571542115_01</td>\n",
" <td>571500535_01</td>\n",
" <td>i6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>139</th>\n",
" <td>210</td>\n",
" <td>5</td>\n",
" <td>서</td>\n",
" <td>북</td>\n",
" <td>571500535_02</td>\n",
" <td>-571500535_02</td>\n",
" <td>u60</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>140 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" inter_no move_no inc_dire out_dire inc_edge_id out_edge_id \\\n",
"0 175 1 동 남 571545870_02 571542797_02 \n",
"1 175 2 서 동 571510153_02 571545870_01 \n",
"2 175 3 남 서 -571542797_02 571510153_01 \n",
"3 175 4 북 남 -571500487_01 571542797_02 \n",
"4 175 5 서 북 571510153_02 571500487_01 \n",
".. ... ... ... ... ... ... \n",
"135 210 13 남서 북서 571500585_02 571500535_01 \n",
"136 210 14 북동 남서 571511538_02.121 571500585_01 \n",
"137 210 15 북서 북동 571500535_02.18 571511538_01 \n",
"138 210 16 남동 북서 -571542115_01 571500535_01 \n",
"139 210 5 서 북 571500535_02 -571500535_02 \n",
"\n",
" node_id \n",
"0 i0 \n",
"1 i0 \n",
"2 i0 \n",
"3 i0 \n",
"4 i0 \n",
".. ... \n",
"135 i6 \n",
"136 i6 \n",
"137 i6 \n",
"138 i6 \n",
"139 u60 \n",
"\n",
"[140 rows x 7 columns]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(flows)\n",
"print(pdires)\n",
"print(inc2id)\n",
"print(out2id)\n",
"print(pflow)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"\n",
"# (6) 가능한 이동류에 대하여 진입id, 진출id 배정 : matching\n",
"dires_right = ['북', '북서', '서', '남서', '남', '남동', '동', '북동'] # ex (북, 서), (서, 남) 등은 우회전 flow\n",
"self.matching = []\n",
"for node_id in self.parent_ids:\n",
" inter_no = self.node2inter[node_id]\n",
"for parent_id in self.parent_ids:\n",
" inter_no = self.node2inter[parent_id]\n",
" # 좌회전과 직진(1 ~ 16)\n",
" for (inc_dire, out_dire) in pflow[node_id]:\n",
" move_no = self.nema[(self.nema.inc_dire==inc_dire) & (self.nema.out_dire==out_dire)].move_no.iloc[0]\n",
" inc_edge_id = inc2id[(node_id, inc_dire)]\n",
" out_edge_id = out2id[(node_id, out_dire)]\n",
" for move_no in range(1,17):\n",
" inc_dire = m2inc_dire[move_no]\n",
" out_dire = m2out_dire[move_no]\n",
" if move_no in p2move[parent_id]:\n",
" inc_edge_id = inc2id[(parent_id, inc_dire)]\n",
" out_edge_id = out2id[(parent_id, out_dire)]\n",
" else:\n",
" inc_edge_id = p2pm2inc_edge_id[parent_id][move_no]\n",
" out_edge_id = p2pm2out_edge_id[parent_id][move_no]\n",
" new_row = pd.DataFrame({'inter_no':[inter_no], 'move_no':[move_no],\n",
" 'inc_dire':[inc_dire], 'out_dire':[out_dire],\n",
" 'inc_edge_id':[inc_edge_id], 'out_edge_id':[out_edge_id], 'node_id':[node_id]})\n",
" 'inc_edge_id':[inc_edge_id], 'out_edge_id':[out_edge_id], 'node_id':[parent_id]})\n",
" self.matching.append(new_row)\n",
" # 보행신호(17), 전적색(18)\n",
" new_row = pd.DataFrame({'inter_no':[inter_no] * 2, 'move_no':[17, 18],\n",
" 'inc_dire':[None]*2, 'out_dire':[None]*2,\n",
" 'inc_edge_id':[None]*2, 'out_edge_id':[None]*2, 'node_id':[node_id]*2})\n",
" self.matching.append(new_row)\n",
" # 신호우회전(21)\n",
" for d in range(len(dires_right)):\n",
" inc_dire = dires_right[d]\n",
" out_dire = dires_right[(d+2)%8]\n",
" if {inc_dire, out_dire}.issubset(pdires[node_id]):\n",
" inc_edge_id = inc2id[(node_id, inc_dire)]\n",
" out_edge_id = out2id[(node_id, out_dire)]\n",
" new_row = pd.DataFrame({'inter_no':[inter_no], 'move_no':[21],\n",
" 'inc_dire':[inc_dire], 'out_dire':[out_dire],\n",
" 'inc_edge_id':[inc_edge_id], 'out_edge_id':[out_edge_id], 'node_id':[node_id]})\n",
" self.matching.append(new_row)\n",
"self.matching.append(self.match7[self.match7.node_id.isin(self.child_ids)])\n",
"self.matching = pd.concat(self.matching)\n",
"self.matching = self.matching.dropna(subset=['inc_edge_id', 'out_edge_id'])\\\n",
" .sort_values(by=['inter_no', 'node_id', 'move_no']).reset_index(drop=True)\n",
"self.matching['move_no'] = self.matching['move_no'].astype(int)\n"
"self.matching['move_no'] = self.matching['move_no'].astype(int)\n",
"display(self.matching)"
]
}
],

+ 64
- 64
Intermediates/match6.csv View File

@ -1,34 +1,34 @@
,inter_no,node_id,phase_no,ring_type,move_no,inc_edge_id,out_edge_id,state
0,175,i0,1,A,8,-571542797_02,571500487_01,grrrgrrrgGGGGrgrr
1,175,i0,1,B,4,-571500487_01,571542797_02,gGGrgrrrgrrrrrgrr
2,175,i0,2,A,7,-571500487_01,571545870_01,grrGgrrrgrrrrrgrr
3,175,i0,2,B,3,-571542797_02,571510153_01,grrrgrrrgrrrrGgrr
4,175,i0,3,A,6,571545870_02,571510153_01,grrrgGGrgrrrrrgrr
5,175,i0,3,B,1,571545870_02,571542797_02,grrrgrrGgrrrrrgrr
6,175,i0,4,A,5,571510153_02,571500487_01,grrrgrrrgrrrrrgrG
7,175,i0,4,B,2,571510153_02,571545870_01,grrrgrrrgrrrrrgGr
8,175,u00,1,A,8,,,ggggrgggg
9,175,u00,1,B,4,,,ggggrgggg
0,175,i0,1,A,8,-571542797_02,571500487_01,rrrrrrrrgGGGGrgrr
1,175,i0,1,B,4,-571500487_01,571542797_02,rGGrrrrrgrrrrrgrr
2,175,i0,2,A,7,-571500487_01,571545870_01,rrrGrrrrgrrrrrgrr
3,175,i0,2,B,3,-571542797_02,571510153_01,rrrrrrrrgrrrrGgrr
4,175,i0,3,A,6,571545870_02,571510153_01,rrrrrGGrgrrrrrgrr
5,175,i0,3,B,1,571545870_02,571542797_02,rrrrrrrGgrrrrrgrr
6,175,i0,4,A,5,571510153_02,571500487_01,rrrrrrrrgrrrrrgrG
7,175,i0,4,B,2,571510153_02,571545870_01,rrrrrrrrgrrrrrgGr
8,175,u00,1,A,8,,,ggggggggg
9,175,u00,1,B,4,,,ggggggggg
10,175,u00,2,A,7,571500487_02,571500487_01.32,ggggGgggg
11,175,u00,2,B,3,,,ggggrgggg
12,175,u00,3,A,6,,,ggggrgggg
13,175,u00,3,B,1,,,ggggrgggg
14,175,u00,4,A,5,,,ggggrgggg
15,175,u00,4,B,2,,,ggggrgggg
16,176,i1,1,A,8,-571542810_01,-571542797_02.99,grrGGGrgrr
17,176,i1,1,B,4,571542797_02.99,571542810_01,gGGrrrrgrr
18,176,i1,2,A,8,-571542810_01,-571542797_02.99,grrGGGrgrr
19,176,i1,2,B,3,-571542810_01,571543469_01,grrrrrGgrr
20,176,i1,3,A,5,571543469_02,-571542797_02.99,grrrrrrgGG
21,176,i1,3,B,18,,,grrrrrrgrr
22,177,i2,1,A,8,-571542809_01,571542811_01,rrggGGG
23,177,i2,1,B,4,571542811_02,571542809_01,GGggrrr
24,177,i2,2,A,17,,,rrggrrr
25,177,i2,2,B,18,,,rrggrrr
26,177,u20,1,A,8,,,ggrggg
27,177,u20,1,B,4,,,ggrggg
11,175,u00,2,B,3,,,ggggggggg
12,175,u00,3,A,6,,,ggggggggg
13,175,u00,3,B,1,,,ggggggggg
14,175,u00,4,A,5,,,ggggggggg
15,175,u00,4,B,2,,,ggggggggg
16,176,i1,1,A,8,-571542810_01,-571542797_02.99,rrrGGGrrrr
17,176,i1,1,B,4,571542797_02.99,571542810_01,rGGrrrrrrr
18,176,i1,2,A,8,-571542810_01,-571542797_02.99,rrrGGGrrrr
19,176,i1,2,B,3,-571542810_01,571543469_01,rrrrrrGrrr
20,176,i1,3,A,5,571543469_02,-571542797_02.99,rrrrrrrrGG
21,176,i1,3,B,18,,,rrrrrrrrrr
22,177,i2,1,A,8,-571542809_01,571542811_01,rrgrGGG
23,177,i2,1,B,4,571542811_02,571542809_01,GGgrrrr
24,177,i2,2,A,17,,,rrgrrrr
25,177,i2,2,B,18,,,rrgrrrr
26,177,u20,1,A,8,,,gggggg
27,177,u20,1,B,4,,,gggggg
28,177,u20,2,A,17,571542810_01.51,571542810_02,ggGggg
29,177,u20,2,B,18,,,ggrggg
29,177,u20,2,B,18,,,gggggg
30,178,c30,1,A,20,,,rrrrrr
31,178,c30,1,B,20,,,rrrrrr
32,178,c30,2,A,20,571542116_01,-571542116_02.96,GGGrrr
@ -45,30 +45,30 @@
43,178,i3,3,B,2,571540303_02.21,571500475_01,grrrrgrrrrgrrrrgGGGr
44,178,i3,4,A,6,-571500475_01,571540303_01,grrrrgGGGrgrrrrgrrrr
45,178,i3,4,B,1,-571500475_01,571540304_01,grrrrgrrrGgrrrrgrrrr
46,178,u30,1,A,8,,,ggggrggg
47,178,u30,1,B,4,,,ggggrggg
48,178,u30,2,A,7,,,ggggrggg
49,178,u30,2,B,3,,,ggggrggg
50,178,u30,3,A,5,,,ggggrggg
51,178,u30,3,B,2,,,ggggrggg
46,178,u30,1,A,8,,,gggggggg
47,178,u30,1,B,4,,,gggggggg
48,178,u30,2,A,7,,,gggggggg
49,178,u30,2,B,3,,,gggggggg
50,178,u30,3,A,5,,,gggggggg
51,178,u30,3,B,2,,,gggggggg
52,178,u30,4,A,6,571556452_01,571556452_02,ggggGggg
53,178,u30,4,B,1,,,ggggrggg
53,178,u30,4,B,1,,,gggggggg
54,178,u31,1,A,8,571500475_02,571500475_01.26,ggggGggg
55,178,u31,1,B,4,,,ggggrggg
56,178,u31,2,A,7,,,ggggrggg
57,178,u31,2,B,3,,,ggggrggg
58,178,u31,3,A,5,,,ggggrggg
59,178,u31,3,B,2,,,ggggrggg
60,178,u31,4,A,6,,,ggggrggg
61,178,u31,4,B,1,,,ggggrggg
62,178,u32,1,A,8,,,gggggggr
55,178,u31,1,B,4,,,gggggggg
56,178,u31,2,A,7,,,gggggggg
57,178,u31,2,B,3,,,gggggggg
58,178,u31,3,A,5,,,gggggggg
59,178,u31,3,B,2,,,gggggggg
60,178,u31,4,A,6,,,gggggggg
61,178,u31,4,B,1,,,gggggggg
62,178,u32,1,A,8,,,gggggggg
63,178,u32,1,B,4,571540303_02,-571540303_02,gggggggG
64,178,u32,2,A,7,,,gggggggr
65,178,u32,2,B,3,,,gggggggr
66,178,u32,3,A,5,,,gggggggr
67,178,u32,3,B,2,,,gggggggr
68,178,u32,4,A,6,,,gggggggr
69,178,u32,4,B,1,,,gggggggr
64,178,u32,2,A,7,,,gggggggg
65,178,u32,2,B,3,,,gggggggg
66,178,u32,3,A,5,,,gggggggg
67,178,u32,3,B,2,,,gggggggg
68,178,u32,4,A,6,,,gggggggg
69,178,u32,4,B,1,,,gggggggg
70,201,i8,1,A,8,-571500569_01,571500583_02,grrrrrrrgGGrgrrr
71,201,i8,1,B,3,-571500569_01,571500618_01,grrrrrrrgrrGgrrr
72,201,i8,2,A,5,571500618_02,571500583_02,grrrrrrrgrrrgrrG
@ -83,14 +83,14 @@
81,202,i9,1,B,2,571510152_01,571510152_01.65,rrGG
82,202,i9,2,A,17,,,rrrr
83,202,i9,2,B,18,,,rrrr
84,206,i7,1,A,8,-571511538_02,571542073_02,rrrggGG
85,206,i7,1,B,4,571542073_01,571511538_02,GGrggrr
86,206,i7,2,A,17,,,rrrggrr
87,206,i7,2,B,18,,,rrrggrr
88,206,i7,3,A,8,-571511538_02,571542073_02,rrrggGG
89,206,i7,3,B,4,571542073_01,571511538_02,GGrggrr
90,206,i7,4,A,17,,,rrrggrr
91,206,i7,4,B,18,,,rrrggrr
84,206,i7,1,A,8,-571511538_02,571542073_02,rrrrrGG
85,206,i7,1,B,4,571542073_01,571511538_02,GGrrrrr
86,206,i7,2,A,17,,,rrrrrrr
87,206,i7,2,B,18,,,rrrrrrr
88,206,i7,3,A,8,-571511538_02,571542073_02,rrrrrGG
89,206,i7,3,B,4,571542073_01,571511538_02,GGrrrrr
90,206,i7,4,A,17,,,rrrrrrr
91,206,i7,4,B,18,,,rrrrrrr
92,210,i6,1,A,6,-571542115_01,571500535_01,grrrgGGGrgrrgrrr
93,210,i6,1,B,18,,,grrrgrrrrgrrgrrr
94,210,i6,2,A,5,571500535_02.18,571511538_01,grrrgrrrrgrrgrrG
@ -99,11 +99,11 @@
97,210,i6,3,B,4,571511538_02.121,571500585_01,gGGrgrrrrgrrgrrr
98,210,i6,4,A,8,571500585_02,571511538_01,grrrgrrrrgGGgrrr
99,210,i6,4,B,3,571500585_02,571500535_01,grrrgrrrrgrrgrrr
100,210,u60,1,A,6,,,ggggggggr
101,210,u60,1,B,18,,,ggggggggr
100,210,u60,1,A,6,,,ggggggggg
101,210,u60,1,B,18,,,ggggggggg
102,210,u60,2,A,5,571500535_02,-571500535_02,ggggggggG
103,210,u60,2,B,2,,,ggggggggr
104,210,u60,3,A,7,,,ggggggggr
105,210,u60,3,B,4,,,ggggggggr
106,210,u60,4,A,8,,,ggggggggr
107,210,u60,4,B,3,,,ggggggggr
103,210,u60,2,B,2,,,ggggggggg
104,210,u60,3,A,7,,,ggggggggg
105,210,u60,3,B,4,,,ggggggggg
106,210,u60,4,A,8,,,ggggggggg
107,210,u60,4,B,3,,,ggggggggg

+ 102
- 46
Intermediates/matching.csv View File

@ -1,32 +1,52 @@
inter_no,node_id,move_no,inc_edge_id,out_edge_id,state
175,i0,1,571545870_02,571542797_02,grrrgrrGgrrrrrgrr
175,i0,2,571510153_02,571545870_01,grrrgrrrgrrrrrgGr
175,i0,3,-571542797_02,571510153_01,grrrgrrrgrrrrGgrr
175,i0,4,-571500487_01,571542797_02,gGGrgrrrgrrrrrgrr
175,i0,5,571510153_02,571500487_01,grrrgrrrgrrrrrgrG
175,i0,6,571545870_02,571510153_01,grrrgGGrgrrrrrgrr
175,i0,7,-571500487_01,571545870_01,grrGgrrrgrrrrrgrr
175,i0,8,-571542797_02,571500487_01,grrrgrrrgGGGGrgrr
175,i0,21,-571500487_01,571510153_01,grrrgrrrgrrrrrgrr
175,i0,21,571510153_02,571542797_02,grrrgrrrgrrrrrgrr
175,i0,21,-571542797_02,571545870_01,grrrgrrrgrrrrrgrr
175,i0,21,571545870_02,571500487_01,grrrgrrrgrrrrrgrr
175,u00,7,571500487_02,571500487_01.32,ggggGgggg
176,i1,3,-571542810_01,571543469_01,grrrrrGgrr
176,i1,4,571542797_02.99,571542810_01,gGGrrrrgrr
176,i1,5,571543469_02,-571542797_02.99,grrrrrrgGG
176,i1,8,-571542810_01,-571542797_02.99,grrGGGrgrr
176,i1,21,571542797_02.99,571543469_01,grrrrrrgrr
176,i1,21,571543469_02,571542810_01,grrrrrrgrr
177,i2,4,571542811_02,571542809_01,GGggrrr
177,i2,8,-571542809_01,571542811_01,rrggGGG
177,u20,17,571542810_01.51,571542810_02,ggGggg
178,c30,20,571542116_01,-571542116_02.96,GGGrrr
178,c30,20,571542116_02.96,571542116_02.164,rrrGGG
178,c30,20,571542116_01,-571542116_02.96,GGGrrr
178,c30,20,571542116_02.96,571542116_02.164,rrrGGG
178,c30,20,571542116_01,-571542116_02.96,GGGrrr
178,c30,20,571542116_02.96,571542116_02.164,rrrGGG
175,i0,1,571545870_02,571542797_02,rrrrrrrGgrrrrrgrr
175,i0,2,571510153_02,571545870_01,rrrrrrrrgrrrrrgGr
175,i0,3,-571542797_02,571510153_01,rrrrrrrrgrrrrGgrr
175,i0,4,-571500487_01,571542797_02,rGGrrrrrgrrrrrgrr
175,i0,5,571510153_02,571500487_01,rrrrrrrrgrrrrrgrG
175,i0,6,571545870_02,571510153_01,rrrrrGGrgrrrrrgrr
175,i0,7,-571500487_01,571545870_01,rrrGrrrrgrrrrrgrr
175,i0,8,-571542797_02,571500487_01,rrrrrrrrgGGGGrgrr
175,i0,9,-571500487_01,571545870_01,rrrGrrrrgrrrrrgrr
175,i0,10,571510153_02,571500487_01,rrrrrrrrgrrrrrgrG
175,i0,11,571545870_02,571510153_01,rrrrrGGrgrrrrrgrr
175,i0,12,-571500487_01,571545870_01,rrrGrrrrgrrrrrgrr
175,i0,13,571510153_02,571500487_01,rrrrrrrrgrrrrrgrG
175,i0,14,-571500487_01,571510153_01,Grrrrrrrgrrrrrgrr
175,i0,15,-571500487_01,571500487_01,rrrrrrrrgrrrrrgrr
175,i0,16,571545870_02,571500487_01,rrrrGrrrgrrrrrgrr
176,i1,1,571542797_02.99,571542810_01,rGGrrrrrrr
176,i1,2,571543469_02,-571542797_02.99,rrrrrrrrGG
176,i1,3,-571542810_01,571543469_01,rrrrrrGrrr
176,i1,4,571542797_02.99,571542810_01,rGGrrrrrrr
176,i1,5,571543469_02,-571542797_02.99,rrrrrrrrGG
176,i1,6,571542797_02.99,571543469_01,Grrrrrrrrr
176,i1,7,571542797_02.99,-571542797_02.99,rrrrrrrrrr
176,i1,8,-571542810_01,-571542797_02.99,rrrGGGrrrr
176,i1,9,571542797_02.99,571542810_01,rGGrrrrrrr
176,i1,10,-571542810_01,-571542797_02.99,rrrGGGrrrr
176,i1,11,-571542810_01,571542810_01,rrrrrrrrrr
176,i1,12,571543469_02,571542810_01,rrrrrrrGrr
176,i1,13,-571542810_01,571543469_01,rrrrrrGrrr
176,i1,14,571542797_02.99,571542810_01,rGGrrrrrrr
176,i1,15,571543469_02,-571542797_02.99,rrrrrrrrGG
176,i1,16,-571542810_01,571543469_01,rrrrrrGrrr
177,i2,1,571542107_02,571542809_01,rrgrrrr
177,i2,2,-571542809_01,571542107_01,rrgGrrr
177,i2,3,-571542809_01,571542809_01,rrgrrrr
177,i2,4,571542811_02,571542809_01,GGgrrrr
177,i2,5,-571542809_01,571542811_01,rrgrGGG
177,i2,6,571542107_02,571542809_01,rrgrrrr
177,i2,7,571542811_02,571542107_01,rrgrrrr
177,i2,8,-571542809_01,571542811_01,rrgrGGG
177,i2,9,571542107_02,571542809_01,rrgrrrr
177,i2,10,-571542809_01,571542107_01,rrgGrrr
177,i2,11,-571542809_01,571542809_01,rrgrrrr
177,i2,12,571542811_02,571542809_01,GGgrrrr
177,i2,13,-571542809_01,571542811_01,rrgrGGG
177,i2,14,571542107_02,571542809_01,rrgrrrr
177,i2,15,571542811_02,571542107_01,rrgrrrr
177,i2,16,-571542809_01,571542811_01,rrgrGGG
178,i3,1,-571500475_01,571540304_01,grrrrgrrrGgrrrrgrrrr
178,i3,2,571540303_02.21,571500475_01,grrrrgrrrrgrrrrgGGGr
178,i3,3,571540304_02,571540303_01,grrrrgrrrrgrrrGgrrrr
@ -35,13 +55,14 @@ inter_no,node_id,move_no,inc_edge_id,out_edge_id,state
178,i3,6,-571500475_01,571540303_01,grrrrgGGGrgrrrrgrrrr
178,i3,7,571556450_02,571500475_01,grrrGgrrrrgrrrrgrrrr
178,i3,8,571540304_02,571556450_01,grrrrgrrrrgGGGrgrrrr
178,i3,21,571556450_02,571540303_01,grrrrgrrrrgrrrrgrrrr
178,i3,21,571540303_02.21,571540304_01,grrrrgrrrrgrrrrgrrrr
178,i3,21,571540304_02,571500475_01,grrrrgrrrrgrrrrgrrrr
178,i3,21,-571500475_01,571556450_01,grrrrgrrrrgrrrrgrrrr
178,u30,6,571556452_01,571556452_02,ggggGggg
178,u31,8,571500475_02,571500475_01.26,ggggGggg
178,u32,4,571540303_02,-571540303_02,gggggggG
178,i3,9,571556450_02,571500475_01,grrrGgrrrrgrrrrgrrrr
178,i3,10,571540304_02,571556450_01,grrrrgrrrrgGGGrgrrrr
178,i3,11,-571500475_01,571540304_01,grrrrgrrrGgrrrrgrrrr
178,i3,12,571540303_02.21,571500475_01,grrrrgrrrrgrrrrgGGGr
178,i3,13,571540304_02,571540303_01,grrrrgrrrrgrrrGgrrrr
178,i3,14,571556450_02,571540304_01,gGGGrgrrrrgrrrrgrrrr
178,i3,15,571540303_02.21,571556450_01,grrrrgrrrrgrrrrgrrrG
178,i3,16,-571500475_01,571540303_01,grrrrgGGGrgrrrrgrrrr
201,i8,1,571500617_02,571500569_01,grrrrrrGgrrrgrrr
201,i8,2,571500618_02,571500617_01,grrrrrrrgrrrgGGr
201,i8,3,-571500569_01,571500618_01,grrrrrrrgrrGgrrr
@ -50,14 +71,46 @@ inter_no,node_id,move_no,inc_edge_id,out_edge_id,state
201,i8,6,571500617_02,571500618_01,grrrGGGrgrrrgrrr
201,i8,7,571500583_01,571500617_01,grrGrrrrgrrrgrrr
201,i8,8,-571500569_01,571500583_02,grrrrrrrgGGrgrrr
201,i8,21,571500583_01,571500618_01,grrrrrrrgrrrgrrr
201,i8,21,571500618_02,571500569_01,grrrrrrrgrrrgrrr
201,i8,21,-571500569_01,571500617_01,grrrrrrrgrrrgrrr
201,i8,21,571500617_02,571500583_02,grrrrrrrgrrrgrrr
201,i8,9,571500583_01,571500617_01,grrGrrrrgrrrgrrr
201,i8,10,-571500569_01,571500583_02,grrrrrrrgGGrgrrr
201,i8,11,571500617_02,571500569_01,grrrrrrGgrrrgrrr
201,i8,12,571500618_02,571500617_01,grrrrrrrgrrrgGGr
201,i8,13,-571500569_01,571500618_01,grrrrrrrgrrGgrrr
201,i8,14,571500583_01,571500569_01,gGGrrrrrgrrrgrrr
201,i8,15,571500618_02,571500583_02,grrrrrrrgrrrgrrG
201,i8,16,571500617_02,571500618_01,grrrGGGrgrrrgrrr
202,i9,1,571510152_02,571510152_01.65,rrrr
202,i9,2,571510152_01,571510152_01.65,rrGG
202,i9,3,571510152_02,-571510152_01,GGrr
202,i9,4,571510152_01,571510152_01.65,rrGG
202,i9,5,571510152_01,-571510152_01,rrrr
202,i9,6,571510152_02,-571510152_01,GGrr
206,i7,4,571542073_01,571511538_02,GGrggrr
206,i7,8,-571511538_02,571542073_02,rrrggGG
202,i9,7,571510152_01,571510152_01.65,rrGG
202,i9,8,571510152_02,-571510152_01,GGrr
202,i9,9,571510152_02,571510152_01.65,rrrr
202,i9,10,571510152_01,571510152_01.65,rrGG
202,i9,11,571510152_02,-571510152_01,GGrr
202,i9,12,571510152_01,571510152_01.65,rrGG
202,i9,13,571510152_01,-571510152_01,rrrr
202,i9,14,571510152_02,-571510152_01,GGrr
202,i9,15,571510152_01,571510152_01.65,rrGG
202,i9,16,571510152_02,-571510152_01,GGrr
206,i7,1,571542071_02,571511538_02,rrrrrrr
206,i7,2,-571511538_02,571542071_01,rrrrGrr
206,i7,3,-571511538_02,571511538_02,rrrrrrr
206,i7,4,571542073_01,571511538_02,GGrrrrr
206,i7,5,-571511538_02,571542073_02,rrrrrGG
206,i7,6,571542071_02,571511538_02,rrrrrrr
206,i7,7,571542073_01,571542071_01,rrGrrrr
206,i7,8,-571511538_02,571542073_02,rrrrrGG
206,i7,9,571542073_01,571542071_01,rrGrrrr
206,i7,10,-571511538_02,571542073_02,rrrrrGG
206,i7,11,571542071_02,571511538_02,rrrrrrr
206,i7,12,571542073_01,571542071_01,rrGrrrr
206,i7,13,-571511538_02,571542073_02,rrrrrGG
206,i7,14,571542073_01,571511538_02,GGrrrrr
206,i7,15,571542073_01,571542073_02,rrrrrrr
206,i7,16,571542071_02,571542073_02,rrrGrrr
210,i6,1,-571542115_01,571500585_01,grrrgrrrGgrrgrrr
210,i6,2,571500535_02.18,571542115_01,grrrgrrrrgrrgGGr
210,i6,3,571500585_02,571500535_01,grrrgrrrrgrrgrrr
@ -66,8 +119,11 @@ inter_no,node_id,move_no,inc_edge_id,out_edge_id,state
210,i6,6,-571542115_01,571500535_01,grrrgGGGrgrrgrrr
210,i6,7,571511538_02.121,571542115_01,grrGgrrrrgrrgrrr
210,i6,8,571500585_02,571511538_01,grrrgrrrrgGGgrrr
210,i6,21,571511538_02.121,571500535_01,grrrgrrrrgrrgrrr
210,i6,21,571500535_02.18,571500585_01,grrrgrrrrgrrgrrr
210,i6,21,571500585_02,571542115_01,grrrgrrrrgrrgrrr
210,i6,21,-571542115_01,571511538_01,grrrgrrrrgrrgrrr
210,u60,5,571500535_02,-571500535_02,ggggggggG
210,i6,9,571511538_02.121,571542115_01,grrGgrrrrgrrgrrr
210,i6,10,571500585_02,571511538_01,grrrgrrrrgGGgrrr
210,i6,11,-571542115_01,571500585_01,grrrgrrrGgrrgrrr
210,i6,12,571500535_02.18,571542115_01,grrrgrrrrgrrgGGr
210,i6,13,571500585_02,571500535_01,grrrgrrrrgrrgrrr
210,i6,14,571511538_02.121,571500585_01,gGGrgrrrrgrrgrrr
210,i6,15,571500535_02.18,571511538_01,grrrgrrrrgrrgrrG
210,i6,16,-571542115_01,571500535_01,grrrgGGGrgrrgrrr

+ 1
- 1
Intermediates/node2init.json View File

@ -1 +1 @@
{"c30": ["r", "r", "r", "r", "r", "r"], "i0": ["g", "r", "r", "r", "g", "r", "r", "r", "g", "r", "r", "r", "r", "r", "g", "r", "r"], "i1": ["g", "r", "r", "r", "r", "r", "r", "g", "r", "r"], "i2": ["r", "r", "g", "g", "r", "r", "r"], "i3": ["g", "r", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "r", "r"], "i6": ["g", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "g", "r", "r", "r"], "i7": ["r", "r", "r", "g", "g", "r", "r"], "i8": ["g", "r", "r", "r", "r", "r", "r", "r", "g", "r", "r", "r", "g", "r", "r", "r"], "i9": ["r", "r", "r", "r"], "u00": ["g", "g", "g", "g", "r", "g", "g", "g", "g"], "u20": ["g", "g", "r", "g", "g", "g"], "u30": ["g", "g", "g", "g", "r", "g", "g", "g"], "u31": ["g", "g", "g", "g", "r", "g", "g", "g"], "u32": ["g", "g", "g", "g", "g", "g", "g", "r"], "u60": ["g", "g", "g", "g", "g", "g", "g", "g", "r"]}
{"c30": ["r", "r", "r", "r", "r", "r"], "i0": ["r", "r", "r", "r", "r", "r", "r", "r", "g", "r", "r", "r", "r", "r", "g", "r", "r"], "i1": ["r", "r", "r", "r", "r", "r", "r", "r", "r", "r"], "i2": ["r", "r", "g", "r", "r", "r", "r"], "i3": ["g", "r", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "r", "r"], "i6": ["g", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "g", "r", "r", "r"], "i7": ["r", "r", "r", "r", "r", "r", "r"], "i8": ["g", "r", "r", "r", "r", "r", "r", "r", "g", "r", "r", "r", "g", "r", "r", "r"], "i9": ["r", "r", "r", "r"], "u00": ["g", "g", "g", "g", "g", "g", "g", "g", "g"], "u20": ["g", "g", "g", "g", "g", "g"], "u30": ["g", "g", "g", "g", "g", "g", "g", "g"], "u31": ["g", "g", "g", "g", "g", "g", "g", "g"], "u32": ["g", "g", "g", "g", "g", "g", "g", "g"], "u60": ["g", "g", "g", "g", "g", "g", "g", "g", "g"]}

+ 306
- 376
Results/sn_1704419700.add.xml View File

@ -1,233 +1,188 @@
<additional>
<tlLogic id="c30" type="static" programID="c30_prog" offset="-150">
<tlLogic id="c30" type="static" programID="c30_prog" offset="-20">
<phase duration="34" state="rrrrrr"/>
<phase duration="4" state="rrrrrr"/>
<phase duration="1" state="rrrrrr"/>
<phase duration="34" state="GGGGGG"/>
<phase duration="2" state="rrrrrr"/>
<phase duration="33" state="GGGGGG"/>
<phase duration="4" state="GGGGGG"/>
<phase duration="1" state="GGGGGG"/>
<phase duration="38" state="GGGGGG"/>
<phase duration="2" state="GGGGGG"/>
<phase duration="37" state="GGGGGG"/>
<phase duration="4" state="GGGGGG"/>
<phase duration="1" state="GGGGGG"/>
<phase duration="17" state="GGGGGG"/>
<phase duration="2" state="GGGGGG"/>
<phase duration="16" state="GGGGGG"/>
<phase duration="4" state="yyyyyy"/>
<phase duration="1" state="rrrrrr"/>
<phase duration="33" state="rrrrrr"/>
<phase duration="2" state="rrrrrr"/>
<phase duration="32" state="rrrrrr"/>
<phase duration="4" state="rrrrrr"/>
<phase duration="1" state="rrrrrr"/>
<phase duration="34" state="GGGGGG"/>
<phase duration="2" state="rrrrrr"/>
<phase duration="33" state="GGGGGG"/>
<phase duration="4" state="GGGGGG"/>
<phase duration="1" state="GGGGGG"/>
<phase duration="38" state="GGGGGG"/>
<phase duration="2" state="GGGGGG"/>
<phase duration="37" state="GGGGGG"/>
<phase duration="4" state="GGGGGG"/>
<phase duration="1" state="GGGGGG"/>
<phase duration="17" state="GGGGGG"/>
<phase duration="2" state="GGGGGG"/>
<phase duration="16" state="GGGGGG"/>
<phase duration="4" state="yyyyyy"/>
<phase duration="1" state="rrrrrr"/>
<phase duration="33" state="rrrrrr"/>
<phase duration="2" state="rrrrrr"/>
<phase duration="32" state="rrrrrr"/>
<phase duration="4" state="rrrrrr"/>
<phase duration="1" state="rrrrrr"/>
<phase duration="34" state="GGGGGG"/>
<phase duration="2" state="rrrrrr"/>
<phase duration="33" state="GGGGGG"/>
<phase duration="4" state="GGGGGG"/>
<phase duration="1" state="GGGGGG"/>
<phase duration="38" state="GGGGGG"/>
<phase duration="2" state="GGGGGG"/>
<phase duration="37" state="GGGGGG"/>
<phase duration="4" state="GGGGGG"/>
<phase duration="1" state="GGGGGG"/>
<phase duration="17" state="GGGGGG"/>
<phase duration="2" state="GGGGGG"/>
<phase duration="16" state="GGGGGG"/>
<phase duration="4" state="yyyyyy"/>
<phase duration="1" state="rrrrrr"/>
<phase duration="33" state="rrrrrr"/>
<phase duration="2" state="rrrrrr"/>
<phase duration="32" state="rrrrrr"/>
<phase duration="4" state="rrrrrr"/>
<phase duration="1" state="rrrrrr"/>
<phase duration="34" state="GGGGGG"/>
<phase duration="2" state="rrrrrr"/>
<phase duration="33" state="GGGGGG"/>
<phase duration="4" state="GGGGGG"/>
<phase duration="1" state="GGGGGG"/>
<phase duration="38" state="GGGGGG"/>
<phase duration="2" state="GGGGGG"/>
<phase duration="37" state="GGGGGG"/>
</tlLogic>
<tlLogic id="i0" type="static" programID="i0_prog" offset="-100">
<phase duration="39" state="gGGrgrrrgGGGGrgrr"/>
<phase duration="4" state="gyyrgrrrgyyyyrgrr"/>
<phase duration="1" state="grrrgrrrgrrrrrgrr"/>
<phase duration="40" state="grrGgrrrgrrrrGgrr"/>
<phase duration="4" state="grrygrrrgrrrrygrr"/>
<phase duration="1" state="grrrgGGrgrrrrrgrr"/>
<phase duration="28" state="grrrgGGGgrrrrrgrr"/>
<phase duration="4" state="grrrgGGygrrrrrgrr"/>
<phase duration="1" state="grrrgGGrgrrrrrgGr"/>
<phase duration="17" state="grrrgGGrgrrrrrgGr"/>
<phase duration="4" state="grrrgyyrgrrrrrgGr"/>
<phase duration="1" state="grrrgrrrgrrrrrgGr"/>
<phase duration="32" state="grrrgrrrgrrrrrgGG"/>
<phase duration="4" state="grrrgrrrgrrrrrgyy"/>
<phase duration="1" state="grrrgrrrgrrrrrgrr"/>
<tlLogic id="i0" type="static" programID="i0_prog" offset="-180">
<phase duration="38" state="gGGrgrrrgGGGGrgrr"/>
<phase duration="4" state="gyyrgrrrgyyyyrgrr"/>
<phase duration="1" state="grrrgrrrgrrrrrgrr"/>
<phase duration="40" state="grrGgrrrgrrrrGgrr"/>
<phase duration="4" state="grrygrrrgrrrrygrr"/>
<phase duration="1" state="grrrgGGrgrrrrrgrr"/>
<phase duration="28" state="grrrgGGGgrrrrrgrr"/>
<phase duration="4" state="grrrgGGygrrrrrgrr"/>
<phase duration="1" state="grrrgGGrgrrrrrgGr"/>
<phase duration="17" state="grrrgGGrgrrrrrgGr"/>
<phase duration="4" state="grrrgyyrgrrrrrgGr"/>
<phase duration="1" state="grrrgrrrgrrrrrgGr"/>
<phase duration="32" state="grrrgrrrgrrrrrgGG"/>
<phase duration="4" state="grrrgrrrgrrrrrgyy"/>
<phase duration="1" state="grrrgrrrgrrrrrgrr"/>
<phase duration="38" state="gGGrgrrrgGGGGrgrr"/>
<phase duration="4" state="gyyrgrrrgyyyyrgrr"/>
<phase duration="1" state="grrrgrrrgrrrrrgrr"/>
<phase duration="40" state="grrGgrrrgrrrrGgrr"/>
<phase duration="4" state="grrygrrrgrrrrygrr"/>
<phase duration="1" state="grrrgGGrgrrrrrgrr"/>
<phase duration="28" state="grrrgGGGgrrrrrgrr"/>
<phase duration="22" state="grrrgGGygrrrrrgrr"/>
<phase duration="5" state="gyyrgrrrgyyyyrgrr"/>
<phase duration="2" state="grrrgrrrgrrrrrgrr"/>
<phase duration="38" state="grrGgrrrgrrrrGgrr"/>
<phase duration="5" state="grrygrrrgrrrrygrr"/>
<phase duration="2" state="grrrgGGrgrrrrrgrr"/>
<phase duration="26" state="grrrgGGGgrrrrrgrr"/>
<phase duration="5" state="grrrgGGygrrrrrgrr"/>
<phase duration="2" state="grrrgGGrgrrrrrgGr"/>
<phase duration="15" state="grrrgGGrgrrrrrgGr"/>
<phase duration="5" state="grrrgyyrgrrrrrgGr"/>
<phase duration="2" state="grrrgrrrgrrrrrgGr"/>
<phase duration="30" state="grrrgrrrgrrrrrgGG"/>
<phase duration="5" state="grrrgrrrgrrrrrgyy"/>
<phase duration="2" state="grrrgrrrgrrrrrgrr"/>
<phase duration="36" state="gGGrgrrrgGGGGrgrr"/>
<phase duration="5" state="gyyrgrrrgyyyyrgrr"/>
<phase duration="2" state="grrrgrrrgrrrrrgrr"/>
<phase duration="38" state="grrGgrrrgrrrrGgrr"/>
<phase duration="5" state="grrygrrrgrrrrygrr"/>
<phase duration="2" state="grrrgGGrgrrrrrgrr"/>
<phase duration="26" state="grrrgGGGgrrrrrgrr"/>
<phase duration="5" state="grrrgGGygrrrrrgrr"/>
<phase duration="2" state="grrrgGGrgrrrrrgGr"/>
<phase duration="15" state="grrrgGGrgrrrrrgGr"/>
<phase duration="5" state="grrrgyyrgrrrrrgGr"/>
<phase duration="2" state="grrrgrrrgrrrrrgGr"/>
<phase duration="30" state="grrrgrrrgrrrrrgGG"/>
<phase duration="5" state="grrrgrrrgrrrrrgyy"/>
<phase duration="2" state="grrrgrrrgrrrrrgrr"/>
<phase duration="36" state="gGGrgrrrgGGGGrgrr"/>
<phase duration="5" state="gyyrgrrrgyyyyrgrr"/>
<phase duration="2" state="grrrgrrrgrrrrrgrr"/>
<phase duration="38" state="grrGgrrrgrrrrGgrr"/>
<phase duration="5" state="grrygrrrgrrrrygrr"/>
<phase duration="2" state="grrrgrrrgrrrrrgrr"/>
<phase duration="26" state="grrrgGGGgrrrrrgrr"/>
</tlLogic>
<tlLogic id="i1" type="static" programID="i1_prog" offset="-30">
<tlLogic id="i1" type="static" programID="i1_prog" offset="-180">
<phase duration="33" state="gGGGGGrgrr"/>
<phase duration="4" state="gyyGGGrgrr"/>
<phase duration="0" state="grrGGGrgrr"/>
<phase duration="0" state="grrGGGGgrr"/>
<phase duration="0" state="grrGGGrgrr"/>
<phase duration="99" state="grrGGGGgrr"/>
<phase duration="1" state="grrGGGrgrr"/>
<phase duration="98" state="grrGGGGgrr"/>
<phase duration="4" state="grryyyygrr"/>
<phase duration="0" state="grrrrrrgrr"/>
<phase duration="0" state="grrrrrrgrr"/>
<phase duration="0" state="grrrrrrgGG"/>
<phase duration="36" state="grrrrrrgGG"/>
<phase duration="1" state="grrrrrrgrr"/>
<phase duration="35" state="grrrrrrgGG"/>
<phase duration="4" state="grrrrrrgyy"/>
<phase duration="0" state="grrrrrrgrr"/>
<phase duration="0" state="gGGrrrrgrr"/>
<phase duration="0" state="grrGGGrgrr"/>
<phase duration="33" state="gGGGGGrgrr"/>
<phase duration="1" state="grrrrrrgrr"/>
<phase duration="32" state="gGGGGGrgrr"/>
<phase duration="4" state="gyyGGGrgrr"/>
<phase duration="0" state="grrGGGrgrr"/>
<phase duration="0" state="grrGGGGgrr"/>
<phase duration="0" state="grrGGGrgrr"/>
<phase duration="99" state="grrGGGGgrr"/>
<phase duration="1" state="grrGGGrgrr"/>
<phase duration="98" state="grrGGGGgrr"/>
<phase duration="4" state="grryyyygrr"/>
<phase duration="0" state="grrrrrrgGG"/>
<phase duration="0" state="grrrrrrgGG"/>
<phase duration="0" state="grrrrrrgrr"/>
<phase duration="36" state="grrrrrrgrr"/>
<phase duration="1" state="grrrrrrgrr"/>
<phase duration="35" state="grrrrrrgGG"/>
<phase duration="4" state="grrrrrrgyy"/>
<phase duration="0" state="grrrrrrgrr"/>
<phase duration="0" state="gGGrrrrgrr"/>
<phase duration="0" state="grrGGGrgrr"/>
<phase duration="33" state="gGGGGGrgrr"/>
<phase duration="1" state="grrrrrrgrr"/>
<phase duration="32" state="gGGGGGrgrr"/>
<phase duration="4" state="gyyGGGrgrr"/>
<phase duration="0" state="grrGGGrgrr"/>
<phase duration="0" state="grrGGGGgrr"/>
<phase duration="0" state="grrGGGrgrr"/>
<phase duration="99" state="grrGGGGgrr"/>
<phase duration="1" state="grrGGGrgrr"/>
<phase duration="98" state="grrGGGGgrr"/>
<phase duration="4" state="grryyyygrr"/>
<phase duration="0" state="grrrrrrgGG"/>
<phase duration="0" state="grrrrrrgGG"/>
<phase duration="0" state="grrrrrrgrr"/>
<phase duration="36" state="grrrrrrgrr"/>
<phase duration="1" state="grrrrrrgrr"/>
<phase duration="35" state="grrrrrrgGG"/>
<phase duration="4" state="grrrrrrgyy"/>
<phase duration="0" state="grrrrrrgrr"/>
<phase duration="0" state="gGGrrrrgrr"/>
<phase duration="0" state="grrGGGrgrr"/>
<phase duration="33" state="gGGGGGrgrr"/>
<phase duration="1" state="grrrrrrgrr"/>
<phase duration="32" state="gGGGGGrgrr"/>
<phase duration="4" state="gyyGGGrgrr"/>
<phase duration="0" state="grrGGGGgrr"/>
<phase duration="0" state="grrGGGrgrr"/>
<phase duration="0" state="grrGGGGgrr"/>
<phase duration="99" state="grrGGGrgrr"/>
<phase duration="1" state="grrGGGrgrr"/>
<phase duration="98" state="grrGGGGgrr"/>
</tlLogic>
<tlLogic id="i2" type="static" programID="i2_prog" offset="-120">
<phase duration="38" state="GGgrGGG"/>
<phase duration="5" state="yygryyy"/>
<phase duration="1" state="rrgrrrr"/>
<phase duration="21" state="rrgrrrr"/>
<phase duration="5" state="rrgrrrr"/>
<phase duration="1" state="rrgrrrr"/>
<phase duration="64" state="rrgrrrr"/>
<phase duration="5" state="rrgrrrr"/>
<phase duration="1" state="rrgrrrr"/>
<phase duration="34" state="rrgrGGG"/>
<phase duration="5" state="rrgrGGG"/>
<phase duration="1" state="rrgrGGG"/>
<phase duration="37" state="GGgrGGG"/>
<phase duration="5" state="yygryyy"/>
<phase duration="1" state="rrgrrrr"/>
<phase duration="21" state="rrgrrrr"/>
<phase duration="5" state="rrgrrrr"/>
<phase duration="1" state="rrgrrrr"/>
<phase duration="64" state="rrgrrrr"/>
<phase duration="5" state="rrgrrrr"/>
<phase duration="1" state="rrgrrrr"/>
<phase duration="34" state="rrgrGGG"/>
<phase duration="5" state="rrgrGGG"/>
<phase duration="1" state="rrgrGGG"/>
<phase duration="37" state="GGgrGGG"/>
<phase duration="5" state="yygryyy"/>
<phase duration="1" state="rrgrrrr"/>
<phase duration="21" state="rrgrrrr"/>
<phase duration="5" state="rrgrrrr"/>
<phase duration="1" state="rrgrrrr"/>
<phase duration="64" state="rrgrrrr"/>
<phase duration="5" state="rrgrrrr"/>
<phase duration="1" state="rrgrrrr"/>
<phase duration="34" state="rrgrGGG"/>
<phase duration="5" state="rrgrGGG"/>
<phase duration="1" state="rrgrGGG"/>
<phase duration="37" state="GGgrGGG"/>
<phase duration="5" state="yygryyy"/>
<phase duration="1" state="rrgrrrr"/>
<phase duration="21" state="rrgrrrr"/>
<phase duration="5" state="rrgrrrr"/>
<phase duration="1" state="rrgrrrr"/>
<phase duration="64" state="rrgrrrr"/>
<tlLogic id="i2" type="static" programID="i2_prog" offset="-71">
<phase duration="38" state="GGggGGG"/>
<phase duration="5" state="yyggyyy"/>
<phase duration="1" state="rrggrrr"/>
<phase duration="21" state="rrggrrr"/>
<phase duration="5" state="rrggrrr"/>
<phase duration="1" state="rrggrrr"/>
<phase duration="37" state="GGggGGG"/>
<phase duration="5" state="yyggyyy"/>
<phase duration="1" state="rrggrrr"/>
<phase duration="21" state="rrggrrr"/>
<phase duration="5" state="rrggrrr"/>
<phase duration="1" state="rrggrrr"/>
<phase duration="37" state="GGggGGG"/>
<phase duration="5" state="yyggyyy"/>
<phase duration="1" state="rrggrrr"/>
<phase duration="21" state="rrggrrr"/>
<phase duration="5" state="rrggrrr"/>
<phase duration="1" state="rrggrrr"/>
<phase duration="37" state="GGggGGG"/>
</tlLogic>
<tlLogic id="i3" type="static" programID="i3_prog" offset="-150">
<tlLogic id="i3" type="static" programID="i3_prog" offset="-20">
<phase duration="34" state="gGGGrgrrrrgGGGrgrrrr"/>
<phase duration="4" state="gyyyrgrrrrgyyyrgrrrr"/>
<phase duration="1" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="34" state="grrrGgrrrrgrrrGgrrrr"/>
<phase duration="2" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="33" state="grrrGgrrrrgrrrGgrrrr"/>
<phase duration="4" state="grrrygrrrrgrrrygrrrr"/>
<phase duration="1" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="38" state="grrrrgrrrrgrrrrgGGGG"/>
<phase duration="2" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="37" state="grrrrgrrrrgrrrrgGGGG"/>
<phase duration="4" state="grrrrgrrrrgrrrrgyyyy"/>
<phase duration="1" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="17" state="grrrrgGGGGgrrrrgrrrr"/>
<phase duration="2" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="16" state="grrrrgGGGGgrrrrgrrrr"/>
<phase duration="4" state="grrrrgyyyygrrrrgrrrr"/>
<phase duration="1" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="33" state="gGGGrgrrrrgGGGrgrrrr"/>
<phase duration="2" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="32" state="gGGGrgrrrrgGGGrgrrrr"/>
<phase duration="4" state="gyyyrgrrrrgyyyrgrrrr"/>
<phase duration="1" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="34" state="grrrGgrrrrgrrrGgrrrr"/>
<phase duration="2" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="33" state="grrrGgrrrrgrrrGgrrrr"/>
<phase duration="4" state="grrrygrrrrgrrrygrrrr"/>
<phase duration="1" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="38" state="grrrrgrrrrgrrrrgGGGG"/>
<phase duration="2" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="37" state="grrrrgrrrrgrrrrgGGGG"/>
<phase duration="4" state="grrrrgrrrrgrrrrgyyyy"/>
<phase duration="1" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="17" state="grrrrgGGGGgrrrrgrrrr"/>
<phase duration="2" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="16" state="grrrrgGGGGgrrrrgrrrr"/>
<phase duration="4" state="grrrrgyyyygrrrrgrrrr"/>
<phase duration="1" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="33" state="gGGGrgrrrrgGGGrgrrrr"/>
<phase duration="2" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="32" state="gGGGrgrrrrgGGGrgrrrr"/>
<phase duration="4" state="gyyyrgrrrrgyyyrgrrrr"/>
<phase duration="1" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="34" state="grrrGgrrrrgrrrGgrrrr"/>
<phase duration="2" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="33" state="grrrGgrrrrgrrrGgrrrr"/>
<phase duration="4" state="grrrygrrrrgrrrygrrrr"/>
<phase duration="1" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="38" state="grrrrgrrrrgrrrrgGGGG"/>
<phase duration="2" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="37" state="grrrrgrrrrgrrrrgGGGG"/>
<phase duration="4" state="grrrrgrrrrgrrrrgyyyy"/>
<phase duration="1" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="17" state="grrrrgGGGGgrrrrgrrrr"/>
<phase duration="2" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="16" state="grrrrgGGGGgrrrrgrrrr"/>
<phase duration="4" state="grrrrgyyyygrrrrgrrrr"/>
<phase duration="1" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="33" state="gGGGrgrrrrgGGGrgrrrr"/>
<phase duration="2" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="32" state="gGGGrgrrrrgGGGrgrrrr"/>
<phase duration="4" state="gyyyrgrrrrgyyyrgrrrr"/>
<phase duration="1" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="34" state="grrrGgrrrrgrrrGgrrrr"/>
<phase duration="2" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="33" state="grrrGgrrrrgrrrGgrrrr"/>
<phase duration="4" state="grrrygrrrrgrrrygrrrr"/>
<phase duration="1" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="38" state="grrrrgrrrrgrrrrgGGGG"/>
<phase duration="2" state="grrrrgrrrrgrrrrgrrrr"/>
<phase duration="37" state="grrrrgrrrrgrrrrgGGGG"/>
</tlLogic>
<tlLogic id="i6" type="static" programID="i6_prog" offset="-70">
<tlLogic id="i6" type="static" programID="i6_prog" offset="-141">
<phase duration="1" state="grrrgGGGrgrrgrrr"/>
<phase duration="23" state="grrrgGGGrgrrgrrr"/>
<phase duration="4" state="grrrgGGGrgrrgrrr"/>
@ -286,51 +241,51 @@
<phase duration="65" state="gGGGgrrrrgrrgrrr"/>
</tlLogic>
<tlLogic id="i7" type="static" programID="i7_prog" offset="-60">
<phase duration="40" state="GGrggGG"/>
<phase duration="5" state="yyrggyy"/>
<phase duration="41" state="GGrggGG"/>
<phase duration="4" state="yyrggyy"/>
<phase duration="1" state="rrrggrr"/>
<phase duration="47" state="rrrggrr"/>
<phase duration="5" state="rrrggrr"/>
<phase duration="48" state="rrrggrr"/>
<phase duration="4" state="rrrggrr"/>
<phase duration="1" state="rrrggrr"/>
<phase duration="20" state="GGrggGG"/>
<phase duration="5" state="yyrggyy"/>
<phase duration="21" state="GGrggGG"/>
<phase duration="4" state="yyrggyy"/>
<phase duration="1" state="rrrggrr"/>
<phase duration="20" state="rrrggrr"/>
<phase duration="5" state="rrrggrr"/>
<phase duration="21" state="rrrggrr"/>
<phase duration="4" state="rrrggrr"/>
<phase duration="1" state="rrrggrr"/>
<phase duration="39" state="GGrggGG"/>
<phase duration="5" state="yyrggyy"/>
<phase duration="40" state="GGrggGG"/>
<phase duration="4" state="yyrggyy"/>
<phase duration="1" state="rrrggrr"/>
<phase duration="47" state="rrrggrr"/>
<phase duration="5" state="rrrggrr"/>
<phase duration="48" state="rrrggrr"/>
<phase duration="4" state="rrrggrr"/>
<phase duration="1" state="rrrggrr"/>
<phase duration="20" state="GGrggGG"/>
<phase duration="5" state="yyrggyy"/>
<phase duration="21" state="GGrggGG"/>
<phase duration="4" state="yyrggyy"/>
<phase duration="1" state="rrrggrr"/>
<phase duration="20" state="rrrggrr"/>
<phase duration="5" state="rrrggrr"/>
<phase duration="21" state="rrrggrr"/>
<phase duration="4" state="rrrggrr"/>
<phase duration="1" state="rrrggrr"/>
<phase duration="39" state="GGrggGG"/>
<phase duration="5" state="yyrggyy"/>
<phase duration="40" state="GGrggGG"/>
<phase duration="4" state="yyrggyy"/>
<phase duration="1" state="rrrggrr"/>
<phase duration="47" state="rrrggrr"/>
<phase duration="5" state="rrrggrr"/>
<phase duration="48" state="rrrggrr"/>
<phase duration="4" state="rrrggrr"/>
<phase duration="1" state="rrrggrr"/>
<phase duration="20" state="GGrggGG"/>
<phase duration="5" state="yyrggyy"/>
<phase duration="21" state="GGrggGG"/>
<phase duration="4" state="yyrggyy"/>
<phase duration="1" state="rrrggrr"/>
<phase duration="20" state="rrrggrr"/>
<phase duration="5" state="rrrggrr"/>
<phase duration="21" state="rrrggrr"/>
<phase duration="4" state="rrrggrr"/>
<phase duration="1" state="rrrggrr"/>
<phase duration="39" state="GGrggGG"/>
<phase duration="5" state="yyrggyy"/>
<phase duration="40" state="GGrggGG"/>
<phase duration="4" state="yyrggyy"/>
<phase duration="1" state="rrrggrr"/>
<phase duration="47" state="rrrggrr"/>
<phase duration="5" state="rrrggrr"/>
<phase duration="48" state="rrrggrr"/>
<phase duration="4" state="rrrggrr"/>
<phase duration="1" state="rrrggrr"/>
<phase duration="20" state="GGrggGG"/>
<phase duration="21" state="GGrggGG"/>
</tlLogic>
<tlLogic id="i8" type="static" programID="i8_prog" offset="-160">
<tlLogic id="i8" type="static" programID="i8_prog" offset="-80">
<phase duration="29" state="grrrrrrrgGGGgrrr"/>
<phase duration="4" state="grrrrrrrgyyygrrr"/>
<phase duration="2" state="grrrrrrrgrrrgrrr"/>
@ -387,248 +342,223 @@
<phase duration="2" state="grrrGGGrgrrrgrrr"/>
<phase duration="52" state="grrrGGGGgrrrgrrr"/>
</tlLogic>
<tlLogic id="i9" type="static" programID="i9_prog" offset="-30">
<tlLogic id="i9" type="static" programID="i9_prog" offset="-130">
<phase duration="42" state="GGGG"/>
<phase duration="4" state="yyyy"/>
<phase duration="1" state="rrrr"/>
<phase duration="109" state="rrrr"/>
<phase duration="2" state="rrrr"/>
<phase duration="108" state="rrrr"/>
<phase duration="4" state="rrrr"/>
<phase duration="1" state="rrrr"/>
<phase duration="41" state="GGGG"/>
<phase duration="2" state="rrrr"/>
<phase duration="40" state="GGGG"/>
<phase duration="4" state="yyyy"/>
<phase duration="1" state="rrrr"/>
<phase duration="109" state="rrrr"/>
<phase duration="2" state="rrrr"/>
<phase duration="108" state="rrrr"/>
<phase duration="4" state="rrrr"/>
<phase duration="1" state="rrrr"/>
<phase duration="41" state="GGGG"/>
<phase duration="2" state="rrrr"/>
<phase duration="40" state="GGGG"/>
<phase duration="4" state="yyyy"/>
<phase duration="1" state="rrrr"/>
<phase duration="109" state="rrrr"/>
<phase duration="2" state="rrrr"/>
<phase duration="108" state="rrrr"/>
<phase duration="4" state="rrrr"/>
<phase duration="1" state="rrrr"/>
<phase duration="41" state="GGGG"/>
<phase duration="2" state="rrrr"/>
<phase duration="40" state="GGGG"/>
</tlLogic>
<tlLogic id="u00" type="static" programID="u00_prog" offset="-100">
<phase duration="39" state="ggggrgggg"/>
<phase duration="4" state="ggggrgggg"/>
<phase duration="1" state="ggggrgggg"/>
<phase duration="40" state="ggggGgggg"/>
<phase duration="4" state="ggggygggg"/>
<phase duration="1" state="ggggrgggg"/>
<phase duration="28" state="ggggrgggg"/>
<phase duration="4" state="ggggrgggg"/>
<phase duration="1" state="ggggrgggg"/>
<phase duration="17" state="ggggrgggg"/>
<phase duration="4" state="ggggrgggg"/>
<phase duration="1" state="ggggrgggg"/>
<phase duration="32" state="ggggrgggg"/>
<phase duration="4" state="ggggrgggg"/>
<phase duration="1" state="ggggrgggg"/>
<phase duration="38" state="ggggrgggg"/>
<phase duration="4" state="ggggrgggg"/>
<phase duration="1" state="ggggrgggg"/>
<phase duration="40" state="ggggGgggg"/>
<phase duration="4" state="ggggygggg"/>
<phase duration="1" state="ggggrgggg"/>
<phase duration="28" state="ggggrgggg"/>
<phase duration="4" state="ggggrgggg"/>
<phase duration="1" state="ggggrgggg"/>
<phase duration="17" state="ggggrgggg"/>
<phase duration="4" state="ggggrgggg"/>
<phase duration="1" state="ggggrgggg"/>
<phase duration="32" state="ggggrgggg"/>
<phase duration="4" state="ggggrgggg"/>
<phase duration="1" state="ggggrgggg"/>
<tlLogic id="u00" type="static" programID="u00_prog" offset="-180">
<phase duration="38" state="ggggrgggg"/>
<phase duration="4" state="ggggrgggg"/>
<phase duration="1" state="ggggrgggg"/>
<phase duration="40" state="ggggGgggg"/>
<phase duration="4" state="ggggygggg"/>
<phase duration="1" state="ggggrgggg"/>
<phase duration="28" state="ggggrgggg"/>
<phase duration="22" state="ggggrgggg"/>
<phase duration="5" state="ggggrgggg"/>
<phase duration="2" state="ggggrgggg"/>
<phase duration="38" state="ggggGgggg"/>
<phase duration="5" state="ggggygggg"/>
<phase duration="2" state="ggggrgggg"/>
<phase duration="26" state="ggggrgggg"/>
<phase duration="5" state="ggggrgggg"/>
<phase duration="2" state="ggggrgggg"/>
<phase duration="15" state="ggggrgggg"/>
<phase duration="5" state="ggggrgggg"/>
<phase duration="2" state="ggggrgggg"/>
<phase duration="30" state="ggggrgggg"/>
<phase duration="5" state="ggggrgggg"/>
<phase duration="2" state="ggggrgggg"/>
<phase duration="36" state="ggggrgggg"/>
<phase duration="5" state="ggggrgggg"/>
<phase duration="2" state="ggggrgggg"/>
<phase duration="38" state="ggggGgggg"/>
<phase duration="5" state="ggggygggg"/>
<phase duration="2" state="ggggrgggg"/>
<phase duration="26" state="ggggrgggg"/>
<phase duration="5" state="ggggrgggg"/>
<phase duration="2" state="ggggrgggg"/>
<phase duration="15" state="ggggrgggg"/>
<phase duration="5" state="ggggrgggg"/>
<phase duration="2" state="ggggrgggg"/>
<phase duration="30" state="ggggrgggg"/>
<phase duration="5" state="ggggrgggg"/>
<phase duration="2" state="ggggrgggg"/>
<phase duration="36" state="ggggrgggg"/>
<phase duration="5" state="ggggrgggg"/>
<phase duration="2" state="ggggrgggg"/>
<phase duration="38" state="ggggGgggg"/>
<phase duration="5" state="ggggygggg"/>
<phase duration="2" state="ggggrgggg"/>
<phase duration="26" state="ggggrgggg"/>
</tlLogic>
<tlLogic id="u20" type="static" programID="u20_prog" offset="-120">
<tlLogic id="u20" type="static" programID="u20_prog" offset="-71">
<phase duration="38" state="ggrggg"/>
<phase duration="5" state="ggrggg"/>
<phase duration="1" state="ggrggg"/>
<phase duration="21" state="ggGggg"/>
<phase duration="5" state="ggyggg"/>
<phase duration="1" state="ggrggg"/>
<phase duration="64" state="ggrggg"/>
<phase duration="5" state="ggrggg"/>
<phase duration="1" state="ggrggg"/>
<phase duration="34" state="ggrggg"/>
<phase duration="5" state="ggrggg"/>
<phase duration="1" state="ggrggg"/>
<phase duration="37" state="ggrggg"/>
<phase duration="5" state="ggrggg"/>
<phase duration="1" state="ggrggg"/>
<phase duration="21" state="ggGggg"/>
<phase duration="5" state="ggyggg"/>
<phase duration="1" state="ggrggg"/>
<phase duration="64" state="ggrggg"/>
<phase duration="5" state="ggrggg"/>
<phase duration="1" state="ggrggg"/>
<phase duration="34" state="ggrggg"/>
<phase duration="5" state="ggrggg"/>
<phase duration="1" state="ggrggg"/>
<phase duration="37" state="ggrggg"/>
<phase duration="5" state="ggrggg"/>
<phase duration="1" state="ggrggg"/>
<phase duration="21" state="ggGggg"/>
<phase duration="5" state="ggyggg"/>
<phase duration="1" state="ggrggg"/>
<phase duration="64" state="ggrggg"/>
<phase duration="5" state="ggrggg"/>
<phase duration="1" state="ggrggg"/>
<phase duration="34" state="ggrggg"/>
<phase duration="5" state="ggrggg"/>
<phase duration="1" state="ggrggg"/>
<phase duration="37" state="ggrggg"/>
<phase duration="5" state="ggrggg"/>
<phase duration="1" state="ggrggg"/>
<phase duration="21" state="ggGggg"/>
<phase duration="5" state="ggyggg"/>
<phase duration="1" state="ggrggg"/>
<phase duration="64" state="ggrggg"/>
</tlLogic>
<tlLogic id="u30" type="static" programID="u30_prog" offset="-150">
<tlLogic id="u30" type="static" programID="u30_prog" offset="-20">
<phase duration="34" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="34" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="33" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="38" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="37" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="17" state="ggggGggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="16" state="ggggGggg"/>
<phase duration="4" state="ggggyggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="33" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="32" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="34" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="33" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="38" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="37" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="17" state="ggggGggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="16" state="ggggGggg"/>
<phase duration="4" state="ggggyggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="33" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="32" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="34" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="33" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="38" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="37" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="17" state="ggggGggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="16" state="ggggGggg"/>
<phase duration="4" state="ggggyggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="33" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="32" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="34" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="33" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="38" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="37" state="ggggrggg"/>
</tlLogic>
<tlLogic id="u31" type="static" programID="u31_prog" offset="-150">
<tlLogic id="u31" type="static" programID="u31_prog" offset="-20">
<phase duration="34" state="ggggGggg"/>
<phase duration="4" state="ggggyggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="34" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="33" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="38" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="37" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="17" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="16" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="33" state="ggggGggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="32" state="ggggGggg"/>
<phase duration="4" state="ggggyggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="34" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="33" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="38" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="37" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="17" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="16" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="33" state="ggggGggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="32" state="ggggGggg"/>
<phase duration="4" state="ggggyggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="34" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="33" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="38" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="37" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="17" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="16" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="33" state="ggggGggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="32" state="ggggGggg"/>
<phase duration="4" state="ggggyggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="34" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="33" state="ggggrggg"/>
<phase duration="4" state="ggggrggg"/>
<phase duration="1" state="ggggrggg"/>
<phase duration="38" state="ggggrggg"/>
<phase duration="2" state="ggggrggg"/>
<phase duration="37" state="ggggrggg"/>
</tlLogic>
<tlLogic id="u32" type="static" programID="u32_prog" offset="-150">
<tlLogic id="u32" type="static" programID="u32_prog" offset="-20">
<phase duration="34" state="gggggggG"/>
<phase duration="4" state="gggggggy"/>
<phase duration="1" state="gggggggr"/>
<phase duration="34" state="gggggggr"/>
<phase duration="2" state="gggggggr"/>
<phase duration="33" state="gggggggr"/>
<phase duration="4" state="gggggggr"/>
<phase duration="1" state="gggggggr"/>
<phase duration="38" state="gggggggr"/>
<phase duration="2" state="gggggggr"/>
<phase duration="37" state="gggggggr"/>
<phase duration="4" state="gggggggr"/>
<phase duration="1" state="gggggggr"/>
<phase duration="17" state="gggggggr"/>
<phase duration="2" state="gggggggr"/>
<phase duration="16" state="gggggggr"/>
<phase duration="4" state="gggggggr"/>
<phase duration="1" state="gggggggr"/>
<phase duration="33" state="gggggggG"/>
<phase duration="2" state="gggggggr"/>
<phase duration="32" state="gggggggG"/>
<phase duration="4" state="gggggggy"/>
<phase duration="1" state="gggggggr"/>
<phase duration="34" state="gggggggr"/>
<phase duration="2" state="gggggggr"/>
<phase duration="33" state="gggggggr"/>
<phase duration="4" state="gggggggr"/>
<phase duration="1" state="gggggggr"/>
<phase duration="38" state="gggggggr"/>
<phase duration="2" state="gggggggr"/>
<phase duration="37" state="gggggggr"/>
<phase duration="4" state="gggggggr"/>
<phase duration="1" state="gggggggr"/>
<phase duration="17" state="gggggggr"/>
<phase duration="2" state="gggggggr"/>
<phase duration="16" state="gggggggr"/>
<phase duration="4" state="gggggggr"/>
<phase duration="1" state="gggggggr"/>
<phase duration="33" state="gggggggG"/>
<phase duration="2" state="gggggggr"/>
<phase duration="32" state="gggggggG"/>
<phase duration="4" state="gggggggy"/>
<phase duration="1" state="gggggggr"/>
<phase duration="34" state="gggggggr"/>
<phase duration="2" state="gggggggr"/>
<phase duration="33" state="gggggggr"/>
<phase duration="4" state="gggggggr"/>
<phase duration="1" state="gggggggr"/>
<phase duration="38" state="gggggggr"/>
<phase duration="2" state="gggggggr"/>
<phase duration="37" state="gggggggr"/>
<phase duration="4" state="gggggggr"/>
<phase duration="1" state="gggggggr"/>
<phase duration="17" state="gggggggr"/>
<phase duration="2" state="gggggggr"/>
<phase duration="16" state="gggggggr"/>
<phase duration="4" state="gggggggr"/>
<phase duration="1" state="gggggggr"/>
<phase duration="33" state="gggggggG"/>
<phase duration="2" state="gggggggr"/>
<phase duration="32" state="gggggggG"/>
<phase duration="4" state="gggggggy"/>
<phase duration="1" state="gggggggr"/>
<phase duration="34" state="gggggggr"/>
<phase duration="2" state="gggggggr"/>
<phase duration="33" state="gggggggr"/>
<phase duration="4" state="gggggggr"/>
<phase duration="1" state="gggggggr"/>
<phase duration="38" state="gggggggr"/>
<phase duration="2" state="gggggggr"/>
<phase duration="37" state="gggggggr"/>
</tlLogic>
<tlLogic id="u60" type="static" programID="u60_prog" offset="-70">
<tlLogic id="u60" type="static" programID="u60_prog" offset="-141">
<phase duration="1" state="ggggggggr"/>
<phase duration="23" state="ggggggggr"/>
<phase duration="4" state="ggggggggr"/>

BIN
Scripts/__pycache__/preprocess_daily.cpython-38.pyc View File


+ 95
- 45
Scripts/preprocess_daily.py View File

@ -571,68 +571,118 @@ class DailyPreprocessor():
'''
self.match7 = self.match6.copy()
self.match7 = self.match7[['inter_no', 'move_no', 'inc_dire', 'out_dire', 'inc_edge_id', 'out_edge_id', 'node_id']]
self.match7 = self.match7[['inter_no', 'node_id', 'move_no', 'inc_angle', 'out_angle', 'inc_dire', 'out_dire', 'inc_edge_id', 'out_edge_id']]
# (1) 가능한 (진입방향, 진출방향) 목록
flows = self.nema.dropna().apply(lambda row: (row['inc_dire'], row['out_dire']), axis=1).tolist()
# (2) 각 교차로별 방향 목록 : pdires (possible directions)
pdires = {}
for node_id in self.parent_ids:
dires = self.match7[self.match7.node_id == node_id][['inc_dire','out_dire']].values.flatten()
p2dires = {} # parent_id to directions
for parent_id in self.parent_ids:
dires = self.match7[self.match7.node_id == parent_id][['inc_dire','out_dire']].values.flatten()
dires = {dire for dire in dires if type(dire)==str}
pdires[node_id] = dires
p2dires[parent_id] = dires
# (3) 각 (교차로, 진입방향) 별 진입id 목록 : inc2id (incoming direction to incoming edge_id)
inc2id = {}
for node_id in self.parent_ids:
for inc_dire in pdires[node_id]:
df = self.match7[(self.match7.node_id==node_id) & (self.match7.inc_dire==inc_dire)]
inc2id[(node_id, inc_dire)] = df.inc_edge_id.iloc[0]
for parent_id in self.parent_ids:
for inc_dire in p2dires[parent_id]:
df = self.match7[(self.match7.node_id==parent_id) & (self.match7.inc_dire==inc_dire)]
inc2id[(parent_id, inc_dire)] = df.inc_edge_id.iloc[0]
# (4) 각 (교차로, 진출방향) 별 진출id 목록 : out2id (outgoing direction to outgoing edge_id)
out2id = {}
for node_id in self.parent_ids:
for out_dire in pdires[node_id]:
df = self.match7[(self.match7.node_id==node_id) & (self.match7.out_dire==out_dire)]
out2id[(node_id, out_dire)] = df.out_edge_id.iloc[0]
# (5) 각 교차로별 가능한 (진입방향, 진출방향) 목록 : pflow (possible flows)
pflow = {}
for node_id in self.parent_ids:
pflow[node_id] = [flow for flow in flows if set(flow).issubset(pdires[node_id])]
# (6) 가능한 이동류에 대하여 진입id, 진출id 배정 : matching
dires_right = ['', '북서', '', '남서', '', '남동', '', '북동'] # ex (북, 서), (서, 남) 등은 우회전 flow
for parent_id in self.parent_ids:
for out_dire in p2dires[parent_id]:
df = self.match7[(self.match7.node_id==parent_id) & (self.match7.out_dire==out_dire)]
out2id[(parent_id, out_dire)] = df.out_edge_id.iloc[0]
# (5) 각 parent_id별 이동류번호 목록
p2move = dict() # parent id to a list of aligned movement numbers
for parent_id in self.parent_ids:
pnema = self.nema[self.nema.inc_dire.isin(p2dires[parent_id]) & self.nema.out_dire.isin(p2dires[parent_id])]
p2move[parent_id] = list(pnema.move_no)
# (6) 방위별 방향벡터
dire2vec = dict() # direction to unit vector
theta = np.pi/2
for dire in self.dires:
dire2vec[dire] = np.array([np.cos(theta), np.sin(theta)])
theta -= np.pi/4
# (7) 각 parent_id별 : 각 이동류별 진입/진출 엣지 id
p2move2inc_edge_id = dict() # parent id to move2inc_edge_id
p2move2out_edge_id = dict() # parent id to move2out_edge_id
for parent_id in self.parent_ids:
move2inc_edge_id = dict() # plain movement to incoming edge id
move2out_edge_id = dict() # plain movement to outgoing edge id
for move_no in range(1,17):
row = self.nema[self.nema.move_no==move_no].iloc[0]
inc_dire = row.inc_dire
out_dire = row.out_dire
inc_vec_true = dire2vec[inc_dire]
out_vec_true = dire2vec[out_dire]
node = self.net.getNode(parent_id)
# 교차로의 모든 (from / to) edges
inc_edges = [edge for edge in node.getIncoming() if edge.getFunction() == ''] # incoming edges
out_edges = [edge for edge in node.getOutgoing() if edge.getFunction() == ''] # outgoing edges
# 교차로의 모든 (from / to) unit vector
inc_vecs = []
for inc_edge in inc_edges:
start = inc_edge.getShape()[-1]
end = inc_edge.getShape()[-2]
inc_vec = np.array(end) - np.array(start)
inc_vec = inc_vec / (inc_vec ** 2).sum() ** 0.5
inc_vecs.append(inc_vec)
out_vecs = []
for out_edge in out_edges:
start = out_edge.getShape()[0]
end = out_edge.getShape()[1]
out_vec = np.array(end) - np.array(start)
out_vec = out_vec / (out_vec ** 2).sum() ** 0.5
out_vecs.append(out_vec)
# 매칭 엣지 반환
inc_index = np.array([np.dot(inc_vec, inc_vec_true) for inc_vec in inc_vecs]).argmax()
out_index = np.array([np.dot(out_vec, out_vec_true) for out_vec in out_vecs]).argmax()
inc_edge_id = inc_edges[inc_index].getID()
out_edge_id = out_edges[out_index].getID()
move2inc_edge_id[move_no] = inc_edge_id
move2out_edge_id[move_no] = out_edge_id
p2move2inc_edge_id[parent_id] = move2inc_edge_id
p2move2out_edge_id[parent_id] = move2out_edge_id
# (8) 각 이동류별 진입/진출 방위
m2inc_dire = dict()
m2out_dire = dict()
for move_no in range(1,17):
row = self.nema[self.nema.move_no==move_no].iloc[0]
m2inc_dire[move_no] = row.inc_dire
m2out_dire[move_no] = row.out_dire
# (9) 가능한 모든 이동류에 대하여 진입id, 진출id 배정 : matching
self.matching = []
for node_id in self.parent_ids:
inter_no = self.node2inter[node_id]
for parent_id in self.parent_ids:
inter_no = self.node2inter[parent_id]
# 좌회전과 직진(1 ~ 16)
for (inc_dire, out_dire) in pflow[node_id]:
move_no = self.nema[(self.nema.inc_dire==inc_dire) & (self.nema.out_dire==out_dire)].move_no.iloc[0]
inc_edge_id = inc2id[(node_id, inc_dire)]
out_edge_id = out2id[(node_id, out_dire)]
for move_no in range(1,17):
inc_dire = m2inc_dire[move_no]
out_dire = m2out_dire[move_no]
if move_no in p2move[parent_id]:
inc_edge_id = inc2id[(parent_id, inc_dire)]
out_edge_id = out2id[(parent_id, out_dire)]
else:
inc_edge_id = p2move2inc_edge_id[parent_id][move_no]
out_edge_id = p2move2out_edge_id[parent_id][move_no]
new_row = pd.DataFrame({'inter_no':[inter_no], 'move_no':[move_no],
'inc_dire':[inc_dire], 'out_dire':[out_dire],
'inc_edge_id':[inc_edge_id], 'out_edge_id':[out_edge_id], 'node_id':[node_id]})
'inc_edge_id':[inc_edge_id], 'out_edge_id':[out_edge_id], 'node_id':[parent_id]})
self.matching.append(new_row)
# 보행신호(17), 전적색(18)
new_row = pd.DataFrame({'inter_no':[inter_no] * 2, 'move_no':[17, 18],
'inc_dire':[None]*2, 'out_dire':[None]*2,
'inc_edge_id':[None]*2, 'out_edge_id':[None]*2, 'node_id':[node_id]*2})
self.matching.append(new_row)
# 신호우회전(21)
for d in range(len(dires_right)):
inc_dire = dires_right[d]
out_dire = dires_right[(d+2)%8]
if {inc_dire, out_dire}.issubset(pdires[node_id]):
inc_edge_id = inc2id[(node_id, inc_dire)]
out_edge_id = out2id[(node_id, out_dire)]
new_row = pd.DataFrame({'inter_no':[inter_no], 'move_no':[21],
'inc_dire':[inc_dire], 'out_dire':[out_dire],
'inc_edge_id':[inc_edge_id], 'out_edge_id':[out_edge_id], 'node_id':[node_id]})
self.matching.append(new_row)
self.matching.append(self.match7[self.match7.node_id.isin(self.child_ids)])
child_matching = self.match7[self.match7.node_id.isin(self.child_ids)]
child_matching = child_matching.drop(columns=['inc_angle', 'out_angle'])
self.matching = pd.concat(self.matching)
self.matching = self.matching.dropna(subset=['inc_edge_id', 'out_edge_id'])\
.sort_values(by=['inter_no', 'node_id', 'move_no']).reset_index(drop=True)
self.matching['move_no'] = self.matching['move_no'].astype(int)
# self.matching.to_csv(os.path.join(self.path_intermediates, 'matching.csv'))
# 2-2 신호 초기화
def initialize_state(self):

Loading…
Cancel
Save