Browse Source

comment on initialize_state

master
김선중 1 year ago
parent
commit
1a0b6adfe3
3 changed files with 21 additions and 955 deletions
  1. +8
    -940
      Analysis/0411_unp-left_p-right-uturn/0416_initialize_state.ipynb
  2. +1
    -1
      Intermediates/node2init.json
  3. +12
    -14
      Scripts/preprocess_daily.py

+ 8
- 940
Analysis/0411_unp-left_p-right-uturn/0416_initialize_state.ipynb View File

@ -472,22 +472,22 @@
},
{
"cell_type": "code",
"execution_count": 28,
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"i8 grrrrrrrgrrrgrrr\n",
"i6 grrrgrrrrgrrgrrr\n",
"i1 grrrrrrgrr\n",
"c30 rrrrrr\n",
"i0 grrrgrrrgrrrrrgrr\n",
"i7 rrrggrr\n",
"i1 grrrrrrgrr\n",
"i2 rrggrrr\n",
"i3 grrrrgrrrrgrrrrgrrrr\n",
"i6 grrrgrrrrgrrgrrr\n",
"i7 rrrggrr\n",
"i8 grrrrrrrgrrrgrrr\n",
"i9 rrrr\n",
"i2 rrggrrr\n",
"c30 rrrrrr\n",
"u00 GGGGrGGGG\n",
"u20 GGrGGG\n",
"u30 GGGGrGGG\n",
@ -501,7 +501,7 @@
"self.nodes = [self.net.getNode(node_id) for node_id in self.node_ids]\n",
"self.node2init = {}\n",
"# 유턴노드를 제외한 모든 노드 (우회전, 삼지교차로직진 : g, 그외 : r)\n",
"for node_id in set(self.node_ids) - set(self.u_turn_ids):\n",
"for node_id in sorted(set(self.node_ids) - set(self.u_turn_ids)):\n",
" node = self.net.getNode(node_id)\n",
" conns = [(c.getJunctionIndex(), c) for c in node.getConnections()]\n",
" conns = [c for c in conns if c[0] >= 0]\n",
@ -552,938 +552,6 @@
" print(node_id, ''.join(self.node2init[node_id]))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2-2. 비보호우회전(g)을 배정했습니다.\n",
"c30 rrrrrr\n",
"i0 grrrgrrrgrrrrrgrr\n",
"i1 grrrrrrgrr\n",
"i2 rrggrrr\n",
"i3 grrrrgrrrrgrrrrgrrrr\n",
"i6 grrrgrrrrgrrgrrr\n",
"i7 rrrggrr\n",
"i8 grrrrrrrgrrrgrrr\n",
"i9 rrrr\n",
"u00 ggggrgggg\n",
"u20 ggrggg\n",
"u30 ggggrggg\n",
"u31 ggggrggg\n",
"u32 gggggggr\n",
"u60 ggggggggr\n"
]
}
],
"source": [
"self.initialize_state() # 2-2 신호 초기화\n",
"for node_id in self.node_ids:\n",
" print(node_id, ''.join(self.node2init[node_id]))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2-2. 비보호우회전(g)을 배정했습니다.\n",
"2-3. 직진 및 좌회전(G)을 배정했습니다.\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>node_id</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>state</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>175</td>\n",
" <td>u00</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrgggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>175</td>\n",
" <td>u00</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrgggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>175</td>\n",
" <td>u00</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>571500487_02</td>\n",
" <td>571500487_01.32</td>\n",
" <td>ggggGgggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>175</td>\n",
" <td>u00</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrgggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>175</td>\n",
" <td>u00</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrgggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>175</td>\n",
" <td>u00</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrgggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>175</td>\n",
" <td>u00</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrgggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>175</td>\n",
" <td>u00</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrgggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>177</td>\n",
" <td>u20</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>177</td>\n",
" <td>u20</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>177</td>\n",
" <td>u20</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>17</td>\n",
" <td>571542810_01.51</td>\n",
" <td>571542810_02</td>\n",
" <td>ggGggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>177</td>\n",
" <td>u20</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>18</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>178</td>\n",
" <td>u30</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>178</td>\n",
" <td>u30</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>178</td>\n",
" <td>u30</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>178</td>\n",
" <td>u30</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>178</td>\n",
" <td>u30</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>178</td>\n",
" <td>u30</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>178</td>\n",
" <td>u30</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>571556452_01</td>\n",
" <td>571556452_02</td>\n",
" <td>ggggGggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>178</td>\n",
" <td>u30</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>178</td>\n",
" <td>u31</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>571500475_02</td>\n",
" <td>571500475_01.26</td>\n",
" <td>ggggGggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>178</td>\n",
" <td>u31</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>178</td>\n",
" <td>u31</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>178</td>\n",
" <td>u31</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>178</td>\n",
" <td>u31</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>178</td>\n",
" <td>u31</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>178</td>\n",
" <td>u31</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>178</td>\n",
" <td>u31</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggrggg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>178</td>\n",
" <td>u32</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>gggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>178</td>\n",
" <td>u32</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>571540303_02</td>\n",
" <td>-571540303_02</td>\n",
" <td>gggggggG</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64</th>\n",
" <td>178</td>\n",
" <td>u32</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>gggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>65</th>\n",
" <td>178</td>\n",
" <td>u32</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>gggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>178</td>\n",
" <td>u32</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>gggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>178</td>\n",
" <td>u32</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>gggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>178</td>\n",
" <td>u32</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>gggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>178</td>\n",
" <td>u32</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>gggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>100</th>\n",
" <td>210</td>\n",
" <td>u60</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>101</th>\n",
" <td>210</td>\n",
" <td>u60</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>18</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>102</th>\n",
" <td>210</td>\n",
" <td>u60</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>5</td>\n",
" <td>571500535_02</td>\n",
" <td>-571500535_02</td>\n",
" <td>ggggggggG</td>\n",
" </tr>\n",
" <tr>\n",
" <th>103</th>\n",
" <td>210</td>\n",
" <td>u60</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>104</th>\n",
" <td>210</td>\n",
" <td>u60</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>105</th>\n",
" <td>210</td>\n",
" <td>u60</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>106</th>\n",
" <td>210</td>\n",
" <td>u60</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>107</th>\n",
" <td>210</td>\n",
" <td>u60</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggggggr</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no node_id phase_no ring_type move_no inc_edge_id \\\n",
"8 175 u00 1 A 8 NaN \n",
"9 175 u00 1 B 4 NaN \n",
"10 175 u00 2 A 7 571500487_02 \n",
"11 175 u00 2 B 3 NaN \n",
"12 175 u00 3 A 6 NaN \n",
"13 175 u00 3 B 1 NaN \n",
"14 175 u00 4 A 5 NaN \n",
"15 175 u00 4 B 2 NaN \n",
"26 177 u20 1 A 8 NaN \n",
"27 177 u20 1 B 4 NaN \n",
"28 177 u20 2 A 17 571542810_01.51 \n",
"29 177 u20 2 B 18 NaN \n",
"46 178 u30 1 A 8 NaN \n",
"47 178 u30 1 B 4 NaN \n",
"48 178 u30 2 A 7 NaN \n",
"49 178 u30 2 B 3 NaN \n",
"50 178 u30 3 A 5 NaN \n",
"51 178 u30 3 B 2 NaN \n",
"52 178 u30 4 A 6 571556452_01 \n",
"53 178 u30 4 B 1 NaN \n",
"54 178 u31 1 A 8 571500475_02 \n",
"55 178 u31 1 B 4 NaN \n",
"56 178 u31 2 A 7 NaN \n",
"57 178 u31 2 B 3 NaN \n",
"58 178 u31 3 A 5 NaN \n",
"59 178 u31 3 B 2 NaN \n",
"60 178 u31 4 A 6 NaN \n",
"61 178 u31 4 B 1 NaN \n",
"62 178 u32 1 A 8 NaN \n",
"63 178 u32 1 B 4 571540303_02 \n",
"64 178 u32 2 A 7 NaN \n",
"65 178 u32 2 B 3 NaN \n",
"66 178 u32 3 A 5 NaN \n",
"67 178 u32 3 B 2 NaN \n",
"68 178 u32 4 A 6 NaN \n",
"69 178 u32 4 B 1 NaN \n",
"100 210 u60 1 A 6 NaN \n",
"101 210 u60 1 B 18 NaN \n",
"102 210 u60 2 A 5 571500535_02 \n",
"103 210 u60 2 B 2 NaN \n",
"104 210 u60 3 A 7 NaN \n",
"105 210 u60 3 B 4 NaN \n",
"106 210 u60 4 A 8 NaN \n",
"107 210 u60 4 B 3 NaN \n",
"\n",
" out_edge_id state \n",
"8 NaN ggggrgggg \n",
"9 NaN ggggrgggg \n",
"10 571500487_01.32 ggggGgggg \n",
"11 NaN ggggrgggg \n",
"12 NaN ggggrgggg \n",
"13 NaN ggggrgggg \n",
"14 NaN ggggrgggg \n",
"15 NaN ggggrgggg \n",
"26 NaN ggrggg \n",
"27 NaN ggrggg \n",
"28 571542810_02 ggGggg \n",
"29 NaN ggrggg \n",
"46 NaN ggggrggg \n",
"47 NaN ggggrggg \n",
"48 NaN ggggrggg \n",
"49 NaN ggggrggg \n",
"50 NaN ggggrggg \n",
"51 NaN ggggrggg \n",
"52 571556452_02 ggggGggg \n",
"53 NaN ggggrggg \n",
"54 571500475_01.26 ggggGggg \n",
"55 NaN ggggrggg \n",
"56 NaN ggggrggg \n",
"57 NaN ggggrggg \n",
"58 NaN ggggrggg \n",
"59 NaN ggggrggg \n",
"60 NaN ggggrggg \n",
"61 NaN ggggrggg \n",
"62 NaN gggggggr \n",
"63 -571540303_02 gggggggG \n",
"64 NaN gggggggr \n",
"65 NaN gggggggr \n",
"66 NaN gggggggr \n",
"67 NaN gggggggr \n",
"68 NaN gggggggr \n",
"69 NaN gggggggr \n",
"100 NaN ggggggggr \n",
"101 NaN ggggggggr \n",
"102 -571500535_02 ggggggggG \n",
"103 NaN ggggggggr \n",
"104 NaN ggggggggr \n",
"105 NaN ggggggggr \n",
"106 NaN ggggggggr \n",
"107 NaN ggggggggr "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"self.initialize_state() # 2-2 신호 초기화\n",
"self.assign_signals() # 2-3 신호 배정\n",
"self.match6[self.match6.node_id.isin(self.u_turn_ids)]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['c30', 'i0', 'i1', 'i2', 'i3', 'i6', 'i7', 'i8', 'i9', 'u00', 'u20', 'u30', 'u31', 'u32', 'u60']\n",
"['i0', 'i1', 'i2', 'i3', 'i6', 'i7', 'i8', 'i9']\n",
"['c30', 'u00', 'u20', 'u30', 'u31', 'u32', 'u60']\n",
"15\n",
"8\n",
"7\n",
"\n",
"['u00', 'u20', 'u30', 'u31', 'u32', 'u60']\n",
"['c30']\n"
]
}
],
"source": [
"print(self.node_ids)\n",
"print(self.parent_ids)\n",
"print(self.child_ids)\n",
"print(len(self.node_ids))\n",
"print(len(self.parent_ids))\n",
"print(len(self.child_ids))\n",
"print()\n",
"print(self.u_turn_ids)\n",
"print(self.coord_ids)\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"c30 rrrrrr\n",
"u00 ggggrgggg\n",
"u20 ggrggg\n",
"u30 ggggrggg\n",
"u31 ggggrggg\n",
"u32 gggggggr\n",
"u60 ggggggggr\n"
]
}
],
"source": [
"for node_id in self.child_ids:\n",
" state = ''.join(self.node2init[node_id])\n",
" print(node_id, state)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"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>node_id</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>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>1</td>\n",
" <td>동</td>\n",
" <td>남</td>\n",
" <td>571545870_02</td>\n",
" <td>571542797_02</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>2</td>\n",
" <td>서</td>\n",
" <td>동</td>\n",
" <td>571510153_02</td>\n",
" <td>571545870_01</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>-571542797_02</td>\n",
" <td>571510153_01</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>-571500487_01</td>\n",
" <td>571542797_02</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>5</td>\n",
" <td>서</td>\n",
" <td>북</td>\n",
" <td>571510153_02</td>\n",
" <td>571500487_01</td>\n",
" <td>left</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",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>123</th>\n",
" <td>210</td>\n",
" <td>i6</td>\n",
" <td>12</td>\n",
" <td>북서</td>\n",
" <td>남동</td>\n",
" <td>571500535_02.18</td>\n",
" <td>571542115_01</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>124</th>\n",
" <td>210</td>\n",
" <td>i6</td>\n",
" <td>13</td>\n",
" <td>남서</td>\n",
" <td>북서</td>\n",
" <td>571500585_02</td>\n",
" <td>571500535_01</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>125</th>\n",
" <td>210</td>\n",
" <td>i6</td>\n",
" <td>14</td>\n",
" <td>북동</td>\n",
" <td>남서</td>\n",
" <td>571511538_02.121</td>\n",
" <td>571500585_01</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>126</th>\n",
" <td>210</td>\n",
" <td>i6</td>\n",
" <td>15</td>\n",
" <td>북서</td>\n",
" <td>북동</td>\n",
" <td>571500535_02.18</td>\n",
" <td>571511538_01</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>127</th>\n",
" <td>210</td>\n",
" <td>i6</td>\n",
" <td>16</td>\n",
" <td>남동</td>\n",
" <td>북서</td>\n",
" <td>-571542115_01</td>\n",
" <td>571500535_01</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>128 rows × 8 columns</p>\n",
"</div>"
],
"text/plain": [
" inter_no node_id move_no inc_dire out_dire inc_edge_id \\\n",
"0 175 i0 1 동 남 571545870_02 \n",
"1 175 i0 2 서 동 571510153_02 \n",
"2 175 i0 3 남 서 -571542797_02 \n",
"3 175 i0 4 북 남 -571500487_01 \n",
"4 175 i0 5 서 북 571510153_02 \n",
".. ... ... ... ... ... ... \n",
"123 210 i6 12 북서 남동 571500535_02.18 \n",
"124 210 i6 13 남서 북서 571500585_02 \n",
"125 210 i6 14 북동 남서 571511538_02.121 \n",
"126 210 i6 15 북서 북동 571500535_02.18 \n",
"127 210 i6 16 남동 북서 -571542115_01 \n",
"\n",
" out_edge_id turn_type \n",
"0 571542797_02 left \n",
"1 571545870_01 straight \n",
"2 571510153_01 left \n",
"3 571542797_02 straight \n",
"4 571500487_01 left \n",
".. ... ... \n",
"123 571542115_01 straight \n",
"124 571500535_01 left \n",
"125 571500585_01 straight \n",
"126 571511538_01 left \n",
"127 571500535_01 straight \n",
"\n",
"[128 rows x 8 columns]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"self.matching"
]
},
{
"cell_type": "code",
"execution_count": 10,

+ 1
- 1
Intermediates/node2init.json View File

@ -1 +1 @@
{"i0": ["g", "r", "r", "r", "g", "r", "r", "r", "g", "r", "r", "r", "r", "r", "g", "r", "r"], "i3": ["g", "r", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "r", "r"], "c30": ["r", "r", "r", "r", "r", "r"], "i7": ["r", "r", "r", "g", "g", "r", "r"], "i9": ["r", "r", "r", "r"], "i1": ["g", "r", "r", "r", "r", "r", "r", "g", "r", "r"], "i6": ["g", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "g", "r", "r", "r"], "i2": ["r", "r", "g", "g", "r", "r", "r"], "i8": ["g", "r", "r", "r", "r", "r", "r", "r", "g", "r", "r", "r", "g", "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": ["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"]}

+ 12
- 14
Scripts/preprocess_daily.py View File

@ -713,8 +713,8 @@ class DailyPreprocessor():
'''
self.nodes = [self.net.getNode(node_id) for node_id in self.node_ids]
self.node2init = {}
# 유턴노드를 제외한 모든 노드에 대하여 초기화 신호 지정
for node_id in set(self.node_ids) - set(self.u_turn_ids):
# 유턴노드를 제외한 모든 노드 (우회전, 삼지교차로직진 : g, 그외 : r)
for node_id in sorted(set(self.node_ids) - set(self.u_turn_ids)):
node = self.net.getNode(node_id)
conns = [(c.getJunctionIndex(), c) for c in node.getConnections()]
conns = [c for c in conns if c[0] >= 0]
@ -736,7 +736,7 @@ class DailyPreprocessor():
state.append('r' if are_foes else 'g')
self.node2init[node_id] = state
# 유턴노드에 대하여 초기화 신호 지정
# 유턴노드 (유턴x : G, 유턴 : G)
for node_id in self.u_turn_ids:
node = self.net.getNode(node_id)
conns = [(c.getJunctionIndex(), c) for c in node.getConnections()]
@ -746,24 +746,22 @@ class DailyPreprocessor():
for i, ci in conns:
if ci.getTLLinkIndex() < 0:
continue
is_uturn = (i == self.uid2uindex[node_id])
state.append('r' if is_uturn else 'G')
state.append('G')
self.node2init[node_id] = state
# 어떤 연결과도 상충이 일어나지는 않지만, 신호가 부여되어 있는 경우에는 r을 부여
# 신호가 부여되어 있는 경우에는 r을 부여 (우회전 : g, 그외 : r / 유턴x : G, 유턴 : r)
for _, row in self.match6.dropna(subset=['inc_edge_id', 'out_edge_id']).iterrows():
node_id = row.node_id
move_no = row.move_no
inc_edge_id = row.inc_edge_id
out_edge_id = row.out_edge_id
if move_no != 21:
inc_edge = self.net.getEdge(inc_edge_id)
out_edge = self.net.getEdge(out_edge_id)
for conn in inc_edge.getConnections(out_edge):
index = conn.getTLLinkIndex()
if index >= 0:
self.node2init[node_id][index] = 'r'
inc_edge = self.net.getEdge(inc_edge_id)
out_edge = self.net.getEdge(out_edge_id)
for conn in inc_edge.getConnections(out_edge):
index = conn.getTLLinkIndex()
if index >= 0:
self.node2init[node_id][index] = 'r'
# json 파일로 저장
with open(os.path.join(self.path_intermediates, 'node2init.json'), 'w') as file:
json.dump(self.node2init, file)

Loading…
Cancel
Save