{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"import numpy as np\n",
|
|
"from datetime import datetime\n",
|
|
"import os\n",
|
|
"import random\n",
|
|
"from tqdm import tqdm"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"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>inter_name</th>\n",
|
|
" <th>inter_lat</th>\n",
|
|
" <th>inter_lon</th>\n",
|
|
" <th>group_no</th>\n",
|
|
" <th>main_phase_no</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>한솔삼거리(한솔마을3거리)</td>\n",
|
|
" <td>37.36857</td>\n",
|
|
" <td>127.11478</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>느티마을4단지</td>\n",
|
|
" <td>37.36724</td>\n",
|
|
" <td>127.11480</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>한솔6단지(정자동사무소)</td>\n",
|
|
" <td>37.36619</td>\n",
|
|
" <td>127.11480</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>신기4거리</td>\n",
|
|
" <td>37.36346</td>\n",
|
|
" <td>127.11480</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>느티마을4거리</td>\n",
|
|
" <td>37.36854</td>\n",
|
|
" <td>127.10984</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>느티마을 안촌유치원</td>\n",
|
|
" <td>37.36855</td>\n",
|
|
" <td>127.11241</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>상록마을 321동</td>\n",
|
|
" <td>37.36483</td>\n",
|
|
" <td>127.10981</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>상록4거리(상록마을입구4거리)</td>\n",
|
|
" <td>37.36347</td>\n",
|
|
" <td>127.10982</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no inter_name inter_lat inter_lon group_no main_phase_no\n",
|
|
"0 175 한솔삼거리(한솔마을3거리) 37.36857 127.11478 3 2\n",
|
|
"1 176 느티마을4단지 37.36724 127.11480 3 2\n",
|
|
"2 177 한솔6단지(정자동사무소) 37.36619 127.11480 3 2\n",
|
|
"3 178 신기4거리 37.36346 127.11480 3 2\n",
|
|
"4 201 느티마을4거리 37.36854 127.10984 3 2\n",
|
|
"5 202 느티마을 안촌유치원 37.36855 127.11241 3 2\n",
|
|
"6 206 상록마을 321동 37.36483 127.10981 3 2\n",
|
|
"7 210 상록4거리(상록마을입구4거리) 37.36347 127.10982 3 2"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# 교차로정보\n",
|
|
"inter_info = pd.read_csv(\"inter_info.csv\")\n",
|
|
"inter_info['group_no'] = 3\n",
|
|
"inter_info['main_phase_no'] = 2\n",
|
|
"display(inter_info)\n",
|
|
"inter_info.to_csv('../inter_info.csv')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"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>main_phase</th>\n",
|
|
" <th>mg1A</th>\n",
|
|
" <th>mg1B</th>\n",
|
|
" <th>mg2A</th>\n",
|
|
" <th>mg2B</th>\n",
|
|
" <th>mg3A</th>\n",
|
|
" <th>mg3B</th>\n",
|
|
" <th>mg4A</th>\n",
|
|
" <th>mg4B</th>\n",
|
|
" <th>mg5A</th>\n",
|
|
" <th>mg5B</th>\n",
|
|
" <th>mg6A</th>\n",
|
|
" <th>mg6B</th>\n",
|
|
" <th>mg7A</th>\n",
|
|
" <th>mg7B</th>\n",
|
|
" <th>mg8A</th>\n",
|
|
" <th>mg8B</th>\n",
|
|
" <th>r1A</th>\n",
|
|
" <th>r1B</th>\n",
|
|
" <th>r2A</th>\n",
|
|
" <th>r2B</th>\n",
|
|
" <th>r3A</th>\n",
|
|
" <th>r3B</th>\n",
|
|
" <th>r4A</th>\n",
|
|
" <th>r4B</th>\n",
|
|
" <th>r5A</th>\n",
|
|
" <th>r5B</th>\n",
|
|
" <th>r6A</th>\n",
|
|
" <th>r6B</th>\n",
|
|
" <th>r7A</th>\n",
|
|
" <th>r7B</th>\n",
|
|
" <th>r8A</th>\n",
|
|
" <th>r8B</th>\n",
|
|
" <th>y1A</th>\n",
|
|
" <th>y1B</th>\n",
|
|
" <th>y2A</th>\n",
|
|
" <th>y2B</th>\n",
|
|
" <th>y3A</th>\n",
|
|
" <th>y3B</th>\n",
|
|
" <th>y4A</th>\n",
|
|
" <th>y4B</th>\n",
|
|
" <th>y5A</th>\n",
|
|
" <th>y5B</th>\n",
|
|
" <th>y6A</th>\n",
|
|
" <th>y6B</th>\n",
|
|
" <th>y7A</th>\n",
|
|
" <th>y7B</th>\n",
|
|
" <th>y8A</th>\n",
|
|
" <th>y8B</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>12</td>\n",
|
|
" <td>15</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>15</td>\n",
|
|
" <td>19</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>31</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>16</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>13</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>19</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>32</td>\n",
|
|
" <td>31</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>31</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>12</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>31</td>\n",
|
|
" <td>31</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>19</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>12</td>\n",
|
|
" <td>13</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>12</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no main_phase mg1A mg1B mg2A mg2B mg3A mg3B mg4A mg4B mg5A \\\n",
|
|
"0 175 2 24 27 33 12 15 39 15 19 0 \n",
|
|
"1 176 2 21 31 33 30 16 0 0 0 0 \n",
|
|
"2 177 2 35 18 36 36 0 0 38 13 0 \n",
|
|
"3 178 2 18 19 35 26 36 29 17 37 0 \n",
|
|
"4 201 2 25 20 21 32 31 28 31 17 27 \n",
|
|
"5 202 2 12 30 0 0 0 0 0 0 0 \n",
|
|
"6 206 2 36 29 0 0 31 31 0 0 0 \n",
|
|
"7 210 2 19 0 12 13 21 37 12 22 0 \n",
|
|
"\n",
|
|
" mg5B mg6A mg6B mg7A mg7B mg8A mg8B r1A r1B r2A r2B r3A r3B \\\n",
|
|
"0 0 0 0 0 0 0 0 1 1 1 1 1 1 \n",
|
|
"1 0 0 0 0 0 0 0 1 1 1 1 1 0 \n",
|
|
"2 0 0 0 0 0 0 0 1 1 1 1 1 0 \n",
|
|
"3 0 0 0 0 0 0 0 1 1 1 1 1 1 \n",
|
|
"4 27 0 0 0 0 0 0 1 1 1 1 1 1 \n",
|
|
"5 0 0 0 0 0 0 0 1 1 1 0 0 0 \n",
|
|
"6 0 0 0 0 0 0 0 1 1 1 0 1 1 \n",
|
|
"7 0 0 0 0 0 0 0 1 0 1 1 1 1 \n",
|
|
"\n",
|
|
" r4A r4B r5A r5B r6A r6B r7A r7B r8A r8B y1A y1B y2A y2B y3A \\\n",
|
|
"0 1 1 0 0 0 0 0 0 0 0 4 4 4 4 4 \n",
|
|
"1 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 \n",
|
|
"2 1 1 0 0 0 0 0 0 0 0 4 4 4 4 0 \n",
|
|
"3 1 1 0 0 0 0 0 0 0 0 4 4 4 4 4 \n",
|
|
"4 1 1 1 1 0 0 0 0 0 0 4 4 4 4 4 \n",
|
|
"5 0 0 0 0 0 0 0 0 0 0 4 4 0 0 0 \n",
|
|
"6 1 0 0 0 0 0 0 0 0 0 4 4 0 0 4 \n",
|
|
"7 1 1 0 0 0 0 0 0 0 0 4 0 4 4 4 \n",
|
|
"\n",
|
|
" y3B y4A y4B y5A y5B y6A y6B y7A y7B y8A y8B \n",
|
|
"0 4 4 4 0 0 0 0 0 0 0 0 \n",
|
|
"1 0 0 0 0 0 0 0 0 0 0 0 \n",
|
|
"2 0 4 4 0 0 0 0 0 0 0 0 \n",
|
|
"3 4 4 4 0 0 0 0 0 0 0 0 \n",
|
|
"4 4 4 4 4 4 0 0 0 0 0 0 \n",
|
|
"5 0 0 0 0 0 0 0 0 0 0 0 \n",
|
|
"6 4 0 0 0 0 0 0 0 0 0 0 \n",
|
|
"7 4 4 4 0 0 0 0 0 0 0 0 "
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# # 현시구성\n",
|
|
"# phase_info = pd.read_csv(\"phase_info.csv\")\n",
|
|
"# phase_info.drop('flow_no', axis=1, inplace=True)\n",
|
|
"# # display(phase_info)\n",
|
|
"# mg = phase_info.pivot_table(index='inter_no', columns=['phase_no', 'ring_type'], values='min_green_dur').fillna(0).astype(int)\n",
|
|
"# y = phase_info.pivot_table(index='inter_no', columns=['phase_no', 'ring_type'], values='yellow_dur').fillna(0).astype(int)\n",
|
|
"# r = phase_info.pivot_table(index='inter_no', columns=['phase_no', 'ring_type'], values='red_dur').fillna(0).astype(int)\n",
|
|
"# max_phase_no = phase_info['phase_no'].max()\n",
|
|
"# new_columns = [f'{col}{phase}{ring}' for col in ['mg', 'y', 'r'] for phase in range(1, max_phase_no + 1) for ring in ['A', 'B']]\n",
|
|
"# phase_info = pd.concat([mg, y, r], axis=1)\n",
|
|
"# phase_info.columns = new_columns\n",
|
|
"# # phase_info['main_phase'] = 2\n",
|
|
"# phase_info['mg6A'] = phase_info['mg6B'] = phase_info['mg7A'] = phase_info['mg7B'] = phase_info['mg8A'] = phase_info['mg8B']= 0\n",
|
|
"# phase_info['y6A'] = phase_info['y6B'] = phase_info['y7A'] = phase_info['y7B'] = phase_info['y8A'] = phase_info['y8B']= 0\n",
|
|
"# phase_info['r6A'] = phase_info['r6B'] = phase_info['r7A'] = phase_info['r7B'] = phase_info['r8A'] = phase_info['r8B']= 0\n",
|
|
"# phase_info = phase_info[sorted(phase_info.columns)]\n",
|
|
"# phase_info.reset_index(inplace=True)\n",
|
|
"# with pd.option_context('display.max_rows', None, 'display.max_columns', None): \n",
|
|
"# display(phase_info)\n",
|
|
"# phase_info.to_csv('../phase_info.csv')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"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>angle_A1</th>\n",
|
|
" <th>angle_A2</th>\n",
|
|
" <th>angle_A3</th>\n",
|
|
" <th>angle_A4</th>\n",
|
|
" <th>angle_A5</th>\n",
|
|
" <th>angle_A6</th>\n",
|
|
" <th>angle_A7</th>\n",
|
|
" <th>angle_A8</th>\n",
|
|
" <th>angle_B1</th>\n",
|
|
" <th>angle_B2</th>\n",
|
|
" <th>angle_B3</th>\n",
|
|
" <th>angle_B4</th>\n",
|
|
" <th>angle_B5</th>\n",
|
|
" <th>angle_B6</th>\n",
|
|
" <th>angle_B7</th>\n",
|
|
" <th>angle_B8</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>179004</td>\n",
|
|
" <td>001095</td>\n",
|
|
" <td>090270</td>\n",
|
|
" <td>268000</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>003176</td>\n",
|
|
" <td>179270</td>\n",
|
|
" <td>090180</td>\n",
|
|
" <td>270090</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>270356</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>359180</td>\n",
|
|
" <td>180270</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>000090</td>\n",
|
|
" <td>stop</td>\n",
|
|
" <td>268000</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>001176</td>\n",
|
|
" <td>179270</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>090180</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>000090</td>\n",
|
|
" <td>270000</td>\n",
|
|
" <td>090270</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>000180</td>\n",
|
|
" <td>180270</td>\n",
|
|
" <td>270090</td>\n",
|
|
" <td>090180</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>270000</td>\n",
|
|
" <td>090270</td>\n",
|
|
" <td>090270</td>\n",
|
|
" <td>000090</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>180270</td>\n",
|
|
" <td>270090</td>\n",
|
|
" <td>270090</td>\n",
|
|
" <td>090180</td>\n",
|
|
" <td>000180</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>090270</td>\n",
|
|
" <td>stop</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>270090</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>stop</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>stop</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>000180</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>000180</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>090270</td>\n",
|
|
" <td>268000</td>\n",
|
|
" <td>359090</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>270090</td>\n",
|
|
" <td>000180</td>\n",
|
|
" <td>180270</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no angle_A1 angle_A2 angle_A3 angle_A4 angle_A5 angle_A6 angle_A7 \\\n",
|
|
"0 175 179004 001095 090270 268000 NaN NaN NaN \n",
|
|
"1 176 180000 180000 270356 NaN NaN NaN NaN \n",
|
|
"2 177 180000 000090 stop 268000 NaN NaN NaN \n",
|
|
"3 178 180000 000090 270000 090270 NaN NaN NaN \n",
|
|
"4 201 180000 270000 090270 090270 000090 NaN NaN \n",
|
|
"5 202 090270 stop NaN NaN NaN NaN NaN \n",
|
|
"6 206 180000 stop 180000 stop NaN NaN NaN \n",
|
|
"7 210 090270 268000 359090 180000 NaN NaN NaN \n",
|
|
"\n",
|
|
" angle_A8 angle_B1 angle_B2 angle_B3 angle_B4 angle_B5 angle_B6 angle_B7 \\\n",
|
|
"0 NaN 003176 179270 090180 270090 NaN NaN NaN \n",
|
|
"1 NaN 359180 180270 NaN NaN NaN NaN NaN \n",
|
|
"2 NaN 001176 179270 NaN 090180 NaN NaN NaN \n",
|
|
"3 NaN 000180 180270 270090 090180 NaN NaN NaN \n",
|
|
"4 NaN 180270 270090 270090 090180 000180 NaN NaN \n",
|
|
"5 NaN 270090 NaN NaN NaN NaN NaN NaN \n",
|
|
"6 NaN 000180 NaN 000180 NaN NaN NaN NaN \n",
|
|
"7 NaN NaN 270090 000180 180270 NaN NaN NaN \n",
|
|
"\n",
|
|
" angle_B8 \n",
|
|
"0 NaN \n",
|
|
"1 NaN \n",
|
|
"2 NaN \n",
|
|
"3 NaN \n",
|
|
"4 NaN \n",
|
|
"5 NaN \n",
|
|
"6 NaN \n",
|
|
"7 NaN "
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# 방위각정보\n",
|
|
"flow_angle = pd.read_csv(\"flow_angle.csv\")\n",
|
|
"angle = flow_angle.pivot_table(index='inter_no', columns=['phase_no', 'ring_type'], values='angle_code', aggfunc='first').fillna('NaN')\n",
|
|
"new_columns = [f'angle_{ring}{phase}' for phase in range(1, 6) for ring in ['A', 'B']]\n",
|
|
"angle.columns = new_columns\n",
|
|
"angle['angle_A6'] = angle['angle_A7'] = angle['angle_A8'] = np.nan\n",
|
|
"angle['angle_B6'] = angle['angle_B7'] = angle['angle_B8'] = np.nan\n",
|
|
"angle = angle[sorted(angle.columns)]\n",
|
|
"angle = angle.reset_index()\n",
|
|
"display(angle)\n",
|
|
"angle.to_csv('../angle.csv')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"100%|██████████| 17280/17280 [03:48<00:00, 75.78it/s]\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>phas_A</th>\n",
|
|
" <th>phas_B</th>\n",
|
|
" <th>move_A</th>\n",
|
|
" <th>move_B</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>18</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>18</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>3</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no phas_A phas_B move_A move_B\n",
|
|
"0 175 4 4 5 2\n",
|
|
"0 176 3 3 5 18\n",
|
|
"0 177 4 4 5 1\n",
|
|
"0 178 1 1 8 4\n",
|
|
"0 201 1 1 8 3\n",
|
|
"0 202 1 1 6 2\n",
|
|
"0 206 4 4 17 18\n",
|
|
"0 210 4 4 8 3"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# 이동류번호\n",
|
|
"plan = pd.read_csv(\"time_plan.csv\")\n",
|
|
"phase = pd.read_csv('phase_info.csv')\n",
|
|
"plan = plan[plan.ID.isin([1, 5, 8, 11])]\n",
|
|
"ID2starttime = {1:\"00:00\", 5:\"07:00\", 8:\"09:00\", 11:\"18:30\"}\n",
|
|
"plan['start_hour'] = plan.ID.apply(lambda id:ID2starttime[id].split(\":\")[0])\n",
|
|
"plan['start_minute']=plan.ID.apply(lambda id:ID2starttime[id].split(\":\")[1])\n",
|
|
"plan = plan[['inter_no', 'start_hour', 'start_minute', 'phase_no', 'ring_type', 'duration', 'cycle']]\n",
|
|
"plan_ = pd.merge(plan, phase[['inter_no', 'phase_no', 'ring_type', 'flow_no']], on=['inter_no', 'phase_no', 'ring_type'], how='left')\n",
|
|
"plan_['flow_no'] = plan_['flow_no'].fillna(18).astype(int)\n",
|
|
"plan_['start_second'] = plan_.start_hour.astype(int)*3600 + plan_.start_minute.astype(int)*60\n",
|
|
"plan_ = plan_[['inter_no', 'start_second', 'phase_no', 'ring_type', 'duration', 'flow_no', 'cycle']]\n",
|
|
"cycle_dict = dict(zip(zip(plan_['inter_no'], plan_['start_second']), plan_['cycle']))\n",
|
|
"df = plan_[['inter_no','start_second','cycle']].drop_duplicates()\n",
|
|
"df = df.reset_index(drop=True)\n",
|
|
"df['start_second_exact'] = 0\n",
|
|
"for i in range(1, len(df)):\n",
|
|
" if i % 4 != 0:\n",
|
|
" prev = df.loc[i-1, 'start_second_exact']\n",
|
|
" start_second = df.loc[i, 'start_second']\n",
|
|
" cycle = df.loc[i-1, 'cycle']\n",
|
|
" df.loc[i, 'start_second_exact'] = (start_second - prev) % cycle + start_second\n",
|
|
"inter2start = {inter_no:list(df[df.inter_no==inter_no]['start_second_exact']) for inter_no in df.inter_no}\n",
|
|
"plan_ = plan_.pivot_table(index=['inter_no', 'start_second', 'phase_no'],\n",
|
|
" columns='ring_type',\n",
|
|
" values=['duration', 'flow_no'],\n",
|
|
" aggfunc='first').reset_index()\n",
|
|
"plan_.columns = ['inter_no', 'start_second', 'phase_no', 'dura_A', 'dura_B', 'move_A', 'move_B']\n",
|
|
"inter2no_phase = {inter_no:group.phase_no.unique().max() for (inter_no, group) in plan.groupby('inter_no')}\n",
|
|
"\n",
|
|
"midnight = int(datetime(2024, 1, 5, 0, 0, 0).timestamp())\n",
|
|
"next_day = int(datetime(2024, 1, 6, 0, 0, 0).timestamp())\n",
|
|
"for current_time in tqdm(range(midnight, next_day, 5)):\n",
|
|
" sec = current_time - midnight\n",
|
|
" the_start_second = np.max(df.start_second[df.start_second <= sec])\n",
|
|
" move = []\n",
|
|
" for inter_no in plan_.inter_no.unique():\n",
|
|
" cycle = cycle_dict[(inter_no, the_start_second)]\n",
|
|
" df = plan_[(plan_.inter_no==inter_no)&(plan_.start_second==the_start_second)].reset_index(drop=True)\n",
|
|
" remainder = sec % cycle\n",
|
|
" df['cums_A'] = df.copy().dura_A.cumsum()\n",
|
|
" df['cums_B'] = df.copy().dura_B.cumsum()\n",
|
|
" ind_A = len(df.cums_A[df.cums_A <= remainder]) % inter2no_phase[inter_no]\n",
|
|
" ind_B = len(df.cums_B[df.cums_B <= remainder]) % inter2no_phase[inter_no]\n",
|
|
" dura_A = df.loc[ind_A, 'dura_A']\n",
|
|
" dura_B = df.loc[ind_B, 'dura_B']\n",
|
|
" phas_A = df.loc[ind_A, 'phase_no']\n",
|
|
" phas_B = df.loc[ind_B, 'phase_no']\n",
|
|
" move_A = df.loc[ind_A, 'move_A']\n",
|
|
" move_B = df.loc[ind_B, 'move_B']\n",
|
|
" move.append(pd.DataFrame({'inter_no':[inter_no], 'phas_A':[phas_A], 'phas_B':[phas_B], 'move_A':[move_A], 'move_B':[move_B]}))\n",
|
|
" move = pd.concat(move)\n",
|
|
" move.to_csv(f'../moves/move_{current_time}.csv')\n",
|
|
"display(move)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 80,
|
|
"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>start_hour</th>\n",
|
|
" <th>start_minute</th>\n",
|
|
" <th>dura_A1</th>\n",
|
|
" <th>dura_A2</th>\n",
|
|
" <th>dura_A3</th>\n",
|
|
" <th>dura_A4</th>\n",
|
|
" <th>dura_A5</th>\n",
|
|
" <th>dura_A6</th>\n",
|
|
" <th>dura_A7</th>\n",
|
|
" <th>...</th>\n",
|
|
" <th>dura_B1</th>\n",
|
|
" <th>dura_B2</th>\n",
|
|
" <th>dura_B3</th>\n",
|
|
" <th>dura_B4</th>\n",
|
|
" <th>dura_B5</th>\n",
|
|
" <th>dura_B6</th>\n",
|
|
" <th>dura_B7</th>\n",
|
|
" <th>dura_B8</th>\n",
|
|
" <th>cycle</th>\n",
|
|
" <th>offset</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>40</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>28</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>41</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>190</td>\n",
|
|
" <td>18</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>131</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>153</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>103</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>103</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>169</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>113</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>113</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>190</td>\n",
|
|
" <td>185</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>35</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>71</td>\n",
|
|
" <td>34</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>71</td>\n",
|
|
" <td>34</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>33</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>41</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>32</td>\n",
|
|
" <td>77</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>32</td>\n",
|
|
" <td>77</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>190</td>\n",
|
|
" <td>49</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>50</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>41</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>62</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>90</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>50</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>71</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>80</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>15</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>80</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>75</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>16</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>133</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>17</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>132</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>18</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>134</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>19</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>50</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>50</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>137</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>20</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>21</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>114</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>114</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>22</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>114</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>114</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>23</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>122</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>122</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>24</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>10</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>25</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>7</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>26</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>53</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>53</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>17</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>27</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>62</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>62</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>10</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>28</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>115</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>29</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>65</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>65</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>131</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>30</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>137</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>31</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>47</td>\n",
|
|
" <td>75</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>66</td>\n",
|
|
" <td>75</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>190</td>\n",
|
|
" <td>143</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"<p>32 rows × 21 columns</p>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no start_hour start_minute dura_A1 dura_A2 dura_A3 dura_A4 \\\n",
|
|
"0 175 00 00 37 39 55 29 \n",
|
|
"1 175 07 00 40 42 55 33 \n",
|
|
"2 175 09 00 43 45 55 37 \n",
|
|
"3 175 18 30 46 48 55 41 \n",
|
|
"4 176 00 00 37 73 40 0 \n",
|
|
"5 176 07 00 37 93 40 0 \n",
|
|
"6 176 09 00 37 103 40 0 \n",
|
|
"7 176 18 30 37 113 40 0 \n",
|
|
"8 177 00 00 36 20 68 26 \n",
|
|
"9 177 07 00 40 25 71 34 \n",
|
|
"10 177 09 00 43 27 70 40 \n",
|
|
"11 177 18 30 45 32 77 36 \n",
|
|
"12 178 00 00 38 39 40 23 \n",
|
|
"13 178 07 00 38 39 42 41 \n",
|
|
"14 178 09 00 38 39 43 50 \n",
|
|
"15 178 18 30 38 39 44 59 \n",
|
|
"16 201 00 00 24 24 17 58 \n",
|
|
"17 201 07 00 30 36 18 58 \n",
|
|
"18 201 09 00 33 36 25 58 \n",
|
|
"19 201 18 30 36 50 18 58 \n",
|
|
"20 202 00 00 39 101 0 0 \n",
|
|
"21 202 07 00 46 114 0 0 \n",
|
|
"22 202 09 00 46 114 0 0 \n",
|
|
"23 202 18 30 48 122 0 0 \n",
|
|
"24 206 00 00 33 35 26 26 \n",
|
|
"25 206 07 00 44 44 26 26 \n",
|
|
"26 206 09 00 45 53 26 26 \n",
|
|
"27 206 18 30 46 62 26 26 \n",
|
|
"28 210 00 00 43 29 56 22 \n",
|
|
"29 210 07 00 43 39 65 23 \n",
|
|
"30 210 09 00 43 43 70 24 \n",
|
|
"31 210 18 30 43 47 75 25 \n",
|
|
"\n",
|
|
" dura_A5 dura_A6 dura_A7 ... dura_B1 dura_B2 dura_B3 dura_B4 \\\n",
|
|
"0 0 0 0 ... 37 39 25 59 \n",
|
|
"1 0 0 0 ... 40 42 29 59 \n",
|
|
"2 0 0 0 ... 43 45 33 59 \n",
|
|
"3 0 0 0 ... 46 48 37 59 \n",
|
|
"4 0 0 0 ... 37 73 40 0 \n",
|
|
"5 0 0 0 ... 37 93 40 0 \n",
|
|
"6 0 0 0 ... 37 103 40 0 \n",
|
|
"7 0 0 0 ... 37 113 40 0 \n",
|
|
"8 0 0 0 ... 36 20 68 26 \n",
|
|
"9 0 0 0 ... 40 25 71 34 \n",
|
|
"10 0 0 0 ... 43 27 70 40 \n",
|
|
"11 0 0 0 ... 45 32 77 36 \n",
|
|
"12 0 0 0 ... 38 39 40 23 \n",
|
|
"13 0 0 0 ... 38 39 62 21 \n",
|
|
"14 0 0 0 ... 38 39 71 22 \n",
|
|
"15 0 0 0 ... 38 39 80 23 \n",
|
|
"16 17 0 0 ... 24 24 17 58 \n",
|
|
"17 18 0 0 ... 30 36 18 58 \n",
|
|
"18 18 0 0 ... 33 36 25 58 \n",
|
|
"19 18 0 0 ... 36 50 18 58 \n",
|
|
"20 0 0 0 ... 39 101 0 0 \n",
|
|
"21 0 0 0 ... 46 114 0 0 \n",
|
|
"22 0 0 0 ... 46 114 0 0 \n",
|
|
"23 0 0 0 ... 48 122 0 0 \n",
|
|
"24 0 0 0 ... 33 35 26 26 \n",
|
|
"25 0 0 0 ... 44 44 26 26 \n",
|
|
"26 0 0 0 ... 45 53 26 26 \n",
|
|
"27 0 0 0 ... 46 62 26 26 \n",
|
|
"28 0 0 0 ... 24 48 56 22 \n",
|
|
"29 0 0 0 ... 24 58 65 23 \n",
|
|
"30 0 0 0 ... 28 58 70 24 \n",
|
|
"31 0 0 0 ... 24 66 75 25 \n",
|
|
"\n",
|
|
" dura_B5 dura_B6 dura_B7 dura_B8 cycle offset \n",
|
|
"0 0 0 0 0 160 57 \n",
|
|
"1 0 0 0 0 170 40 \n",
|
|
"2 0 0 0 0 180 28 \n",
|
|
"3 0 0 0 0 190 18 \n",
|
|
"4 0 0 0 0 150 131 \n",
|
|
"5 0 0 0 0 170 153 \n",
|
|
"6 0 0 0 0 180 169 \n",
|
|
"7 0 0 0 0 190 185 \n",
|
|
"8 0 0 0 0 150 35 \n",
|
|
"9 0 0 0 0 170 33 \n",
|
|
"10 0 0 0 0 180 41 \n",
|
|
"11 0 0 0 0 190 49 \n",
|
|
"12 0 0 0 0 140 50 \n",
|
|
"13 0 0 0 0 160 90 \n",
|
|
"14 0 0 0 0 170 80 \n",
|
|
"15 0 0 0 0 180 75 \n",
|
|
"16 17 0 0 0 140 133 \n",
|
|
"17 18 0 0 0 160 132 \n",
|
|
"18 18 0 0 0 170 134 \n",
|
|
"19 18 0 0 0 180 137 \n",
|
|
"20 0 0 0 0 140 103 \n",
|
|
"21 0 0 0 0 160 103 \n",
|
|
"22 0 0 0 0 160 103 \n",
|
|
"23 0 0 0 0 170 103 \n",
|
|
"24 0 0 0 0 120 10 \n",
|
|
"25 0 0 0 0 140 7 \n",
|
|
"26 0 0 0 0 150 17 \n",
|
|
"27 0 0 0 0 160 10 \n",
|
|
"28 0 0 0 0 150 115 \n",
|
|
"29 0 0 0 0 170 131 \n",
|
|
"30 0 0 0 0 180 137 \n",
|
|
"31 0 0 0 0 190 143 \n",
|
|
"\n",
|
|
"[32 rows x 21 columns]"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# 신호계획\n",
|
|
"plan = pd.read_csv(\"time_plan.csv\")\n",
|
|
"plan = plan[plan.ID.isin([1, 5, 8, 11])]\n",
|
|
"ID2starttime = {1:\"00:00\", 5:\"07:00\", 8:\"09:00\", 11:\"18:30\"}\n",
|
|
"plan['start_hour'] = plan.ID.apply(lambda id:ID2starttime[id].split(\":\")[0])\n",
|
|
"plan['start_minute']=plan.ID.apply(lambda id:ID2starttime[id].split(\":\")[1])\n",
|
|
"plan = plan[['inter_no', 'start_hour', 'start_minute', 'phase_no', 'ring_type', 'duration', 'cycle', 'offset']]\n",
|
|
"plan = plan.pivot_table(index=['inter_no', 'start_hour', 'start_minute', 'cycle', 'offset'], columns=['phase_no','ring_type'], values='duration', aggfunc='first').fillna(0).astype(int)\n",
|
|
"new_columns = [f'dura_{ring}{phase}' for phase in range(1, 6) for ring in ['A', 'B']]\n",
|
|
"plan.columns = new_columns\n",
|
|
"new_columns = [f'dura_{ring}{phase}' for phase in range(1, 9) for ring in ['A', 'B']]\n",
|
|
"for col in new_columns:\n",
|
|
" if col not in plan.columns:\n",
|
|
" plan[col] = 0\n",
|
|
"plan.reset_index(inplace=True)\n",
|
|
"plan = plan[list(plan.columns)[:3] + sorted(plan.columns)[1:-4] + list(plan.columns)[3:5]]\n",
|
|
"plan.to_csv('../plan.csv')\n",
|
|
"pland = plan.copy()\n",
|
|
"cums_A = np.array(pland[[f'dura_A{k}' for k in range(1,9)]].cumsum(axis=1))\n",
|
|
"cums_B = np.array(pland[[f'dura_B{k}' for k in range(1,9)]].cumsum(axis=1))\n",
|
|
"detailed_cums = []\n",
|
|
"i = 0\n",
|
|
"for row_A, row_B in zip(cums_A, cums_B):\n",
|
|
" combined_row = np.unique(np.concatenate((row_A, row_B)))\n",
|
|
" ddur = np.concatenate(([combined_row[0]], np.diff(combined_row)))\n",
|
|
" ddur = np.pad(ddur, (0, 8 - len(ddur)), constant_values=(0))\n",
|
|
" detailed_cums.append(ddur)\n",
|
|
" for j in range(8):\n",
|
|
" pland.at[i, f'ddur_{j+1}'] = ddur[j]\n",
|
|
" i+=1\n",
|
|
"pland = pland[['inter_no', 'start_hour', 'start_minute'] + [f'ddur_{i}' for i in range(1,9)] + ['cycle', 'offset']] # plan detailed\n",
|
|
"pland[[f'ddur_{i}' for i in range(1,9)]] = pland[[f'ddur_{i}' for i in range(1,9)]].astype(int)\n",
|
|
"display(plan)\n",
|
|
"# pland.to_csv('../pland.csv')\n",
|
|
"# display(pland)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 78,
|
|
"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>end_unix</th>\n",
|
|
" <th>dura_A1</th>\n",
|
|
" <th>dura_A2</th>\n",
|
|
" <th>dura_A3</th>\n",
|
|
" <th>dura_A4</th>\n",
|
|
" <th>dura_A5</th>\n",
|
|
" <th>dura_A6</th>\n",
|
|
" <th>dura_A7</th>\n",
|
|
" <th>dura_A8</th>\n",
|
|
" <th>dura_B1</th>\n",
|
|
" <th>dura_B2</th>\n",
|
|
" <th>dura_B3</th>\n",
|
|
" <th>dura_B4</th>\n",
|
|
" <th>dura_B5</th>\n",
|
|
" <th>dura_B6</th>\n",
|
|
" <th>dura_B7</th>\n",
|
|
" <th>dura_B8</th>\n",
|
|
" <th>cycle</th>\n",
|
|
" <th>offset</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>1704380520</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>10</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>1704380540</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>50</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704380540</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>133</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>1704380540</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>1704380550</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>35</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>1704380550</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>131</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>1704380550</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>115</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704380560</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>1704380639</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>10</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>1704380680</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>1704380680</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>50</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704380680</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>133</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>1704380700</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>35</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>1704380700</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>115</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>1704380700</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>131</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>15</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704380720</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>16</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>1704380760</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>10</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>17</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>1704380820</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>18</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>1704380820</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>50</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>19</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704380820</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>133</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no end_unix dura_A1 dura_A2 dura_A3 dura_A4 dura_A5 dura_A6 \\\n",
|
|
"0 206 1704380520 33 35 26 26 0 0 \n",
|
|
"1 178 1704380540 38 39 40 23 0 0 \n",
|
|
"2 201 1704380540 24 24 17 58 17 0 \n",
|
|
"3 202 1704380540 39 101 0 0 0 0 \n",
|
|
"4 177 1704380550 36 20 68 26 0 0 \n",
|
|
"5 176 1704380550 37 73 40 0 0 0 \n",
|
|
"6 210 1704380550 43 29 56 22 0 0 \n",
|
|
"7 175 1704380560 37 39 55 29 0 0 \n",
|
|
"8 206 1704380639 33 35 26 26 0 0 \n",
|
|
"9 202 1704380680 39 101 0 0 0 0 \n",
|
|
"10 178 1704380680 38 39 40 23 0 0 \n",
|
|
"11 201 1704380680 24 24 17 58 17 0 \n",
|
|
"12 177 1704380700 36 20 68 26 0 0 \n",
|
|
"13 210 1704380700 43 29 56 22 0 0 \n",
|
|
"14 176 1704380700 37 73 40 0 0 0 \n",
|
|
"15 175 1704380720 37 39 55 29 0 0 \n",
|
|
"16 206 1704380760 33 35 26 26 0 0 \n",
|
|
"17 202 1704380820 39 101 0 0 0 0 \n",
|
|
"18 178 1704380820 38 39 40 23 0 0 \n",
|
|
"19 201 1704380820 24 24 17 58 17 0 \n",
|
|
"\n",
|
|
" dura_A7 dura_A8 dura_B1 dura_B2 dura_B3 dura_B4 dura_B5 dura_B6 dura_B7 \\\n",
|
|
"0 0 0 33 35 26 26 0 0 0 \n",
|
|
"1 0 0 38 39 40 23 0 0 0 \n",
|
|
"2 0 0 24 24 17 58 17 0 0 \n",
|
|
"3 0 0 39 101 0 0 0 0 0 \n",
|
|
"4 0 0 36 20 68 26 0 0 0 \n",
|
|
"5 0 0 37 73 40 0 0 0 0 \n",
|
|
"6 0 0 24 48 56 22 0 0 0 \n",
|
|
"7 0 0 37 39 25 59 0 0 0 \n",
|
|
"8 0 0 33 35 26 26 0 0 0 \n",
|
|
"9 0 0 39 101 0 0 0 0 0 \n",
|
|
"10 0 0 38 39 40 23 0 0 0 \n",
|
|
"11 0 0 24 24 17 58 17 0 0 \n",
|
|
"12 0 0 36 20 68 26 0 0 0 \n",
|
|
"13 0 0 24 48 56 22 0 0 0 \n",
|
|
"14 0 0 37 73 40 0 0 0 0 \n",
|
|
"15 0 0 37 39 25 59 0 0 0 \n",
|
|
"16 0 0 33 35 26 26 0 0 0 \n",
|
|
"17 0 0 39 101 0 0 0 0 0 \n",
|
|
"18 0 0 38 39 40 23 0 0 0 \n",
|
|
"19 0 0 24 24 17 58 17 0 0 \n",
|
|
"\n",
|
|
" dura_B8 cycle offset \n",
|
|
"0 0 120 10 \n",
|
|
"1 0 140 50 \n",
|
|
"2 0 140 133 \n",
|
|
"3 0 140 103 \n",
|
|
"4 0 150 35 \n",
|
|
"5 0 150 131 \n",
|
|
"6 0 150 115 \n",
|
|
"7 0 160 57 \n",
|
|
"8 0 120 10 \n",
|
|
"9 0 140 103 \n",
|
|
"10 0 140 50 \n",
|
|
"11 0 140 133 \n",
|
|
"12 0 150 35 \n",
|
|
"13 0 150 115 \n",
|
|
"14 0 150 131 \n",
|
|
"15 0 160 57 \n",
|
|
"16 0 120 10 \n",
|
|
"17 0 140 103 \n",
|
|
"18 0 140 50 \n",
|
|
"19 0 140 133 "
|
|
]
|
|
},
|
|
"execution_count": 78,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# 신호이력\n",
|
|
"midnight = int(datetime(2024, 1, 5, 0, 0, 0).timestamp())\n",
|
|
"next_day = int(datetime(2024, 1, 6, 0, 0, 0).timestamp())\n",
|
|
"plan['end_unix'] = plan['start_hour'].astype(int) * 3600 + plan['start_minute'].astype(int) * 60 + midnight # 각 plan의 마지막 시점\n",
|
|
"history = []\n",
|
|
"for inter_no in plan.inter_no.unique():\n",
|
|
" aplan = plan[plan.inter_no == inter_no] # a (specific) plan\n",
|
|
" rows = []\n",
|
|
" current_time = midnight # 현재시각\n",
|
|
" for i in range(len(aplan)):\n",
|
|
" first_row = aplan.iloc[i]\n",
|
|
" cycle = first_row['cycle']\n",
|
|
" unix_end = aplan.iloc[i + 1]['end_unix'] if i < len(aplan) - 1 else next_day # a plan의 마지막 시점\n",
|
|
" r = 0\n",
|
|
" while current_time <= unix_end:\n",
|
|
" remainder = current_time % 10\n",
|
|
" if remainder != 0: # 현재시각의 일의자리가 0이 아니면 다음 현재시각의 일의자리가 0이 되도록 맞춰준다.\n",
|
|
" r = (5 - remainder) % 10 - 5 # 1>-1, 2>-2, 3>-3, 4>-4, 5>-5, 6>4, 7>3, 8>2, 9>1\n",
|
|
" else:\n",
|
|
" r = random.choices([0, -1, 1], weights=[10, 1, 1])[0] # 측정오차\n",
|
|
" # 0.001의 확률로 결측 발생\n",
|
|
" if random.random() < 0.001: # 주기의 배수만큼 결측\n",
|
|
" n = random.randint(0,100)\n",
|
|
" current_time += n * cycle + r\n",
|
|
" # 0.01의 확률로 이상치 발생\n",
|
|
" elif random.random() > 0.99: # 카이제곱분포값 * 주기만큼의 이상치 발생. 카이제곱분포값은 항상 양수이고 평균이 1\n",
|
|
" current_time += int(np.random.normal()**2 * cycle) + r\n",
|
|
" else:\n",
|
|
" current_time += cycle + r # 결측/이상 없음\n",
|
|
" new_row = first_row.copy()\n",
|
|
" new_row['end_unix'] = current_time\n",
|
|
" rows.append(new_row)\n",
|
|
" ahistory = pd.concat(rows, axis=1).transpose().reset_index(drop=True) # a (specific) history\n",
|
|
" history.append(ahistory)\n",
|
|
"history = pd.concat(history)\n",
|
|
"history = history[history.end_unix <= next_day]\n",
|
|
"history = history.sort_values(by='end_unix').reset_index(drop=True)\n",
|
|
"history = history[['inter_no', 'end_unix'] + [f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)] + ['cycle', 'offset']]\n",
|
|
"history.to_csv('../history.csv')\n",
|
|
"history[:20]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 37,
|
|
"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>end_unix</th>\n",
|
|
" <th>ddur_1</th>\n",
|
|
" <th>ddur_2</th>\n",
|
|
" <th>ddur_3</th>\n",
|
|
" <th>ddur_4</th>\n",
|
|
" <th>ddur_5</th>\n",
|
|
" <th>ddur_6</th>\n",
|
|
" <th>ddur_7</th>\n",
|
|
" <th>ddur_8</th>\n",
|
|
" <th>cycle</th>\n",
|
|
" <th>offset</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>1704380520</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>10</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>1704380539</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>50</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704380540</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>133</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>1704380540</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>1704380550</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>35</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>1704380550</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>131</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>1704380550</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>19</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>115</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704380560</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>1704380641</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>10</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>1704380680</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>1704380680</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>50</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704380680</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>133</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>1704380700</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>35</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>1704380700</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>131</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>1704380701</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>19</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>115</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>15</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704380720</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>16</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>1704380760</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>10</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>17</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>1704380820</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>18</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704380820</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>133</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>19</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>1704380820</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>50</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>20</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>1704380821</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>21</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>1704380850</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>131</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>22</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>1704380850</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>35</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>23</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>1704380850</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>19</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>115</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>24</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704380880</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>25</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>1704380880</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>10</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>26</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>1704380960</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>27</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>1704380960</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>50</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>28</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704380960</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>133</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>29</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>1704381000</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>131</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no end_unix ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 ddur_6 ddur_7 \\\n",
|
|
"0 206 1704380520 33 35 26 26 0 0 0 \n",
|
|
"1 178 1704380539 38 39 40 23 0 0 0 \n",
|
|
"2 201 1704380540 24 24 17 58 17 0 0 \n",
|
|
"3 202 1704380540 39 101 0 0 0 0 0 \n",
|
|
"4 177 1704380550 36 20 68 26 0 0 0 \n",
|
|
"5 176 1704380550 37 73 40 0 0 0 0 \n",
|
|
"6 210 1704380550 24 19 29 56 22 0 0 \n",
|
|
"7 175 1704380560 37 39 25 30 29 0 0 \n",
|
|
"8 206 1704380641 33 35 26 26 0 0 0 \n",
|
|
"9 202 1704380680 39 101 0 0 0 0 0 \n",
|
|
"10 178 1704380680 38 39 40 23 0 0 0 \n",
|
|
"11 201 1704380680 24 24 17 58 17 0 0 \n",
|
|
"12 177 1704380700 36 20 68 26 0 0 0 \n",
|
|
"13 176 1704380700 37 73 40 0 0 0 0 \n",
|
|
"14 210 1704380701 24 19 29 56 22 0 0 \n",
|
|
"15 175 1704380720 37 39 25 30 29 0 0 \n",
|
|
"16 206 1704380760 33 35 26 26 0 0 0 \n",
|
|
"17 202 1704380820 39 101 0 0 0 0 0 \n",
|
|
"18 201 1704380820 24 24 17 58 17 0 0 \n",
|
|
"19 178 1704380820 38 39 40 23 0 0 0 \n",
|
|
"20 202 1704380821 39 101 0 0 0 0 0 \n",
|
|
"21 176 1704380850 37 73 40 0 0 0 0 \n",
|
|
"22 177 1704380850 36 20 68 26 0 0 0 \n",
|
|
"23 210 1704380850 24 19 29 56 22 0 0 \n",
|
|
"24 175 1704380880 37 39 25 30 29 0 0 \n",
|
|
"25 206 1704380880 33 35 26 26 0 0 0 \n",
|
|
"26 202 1704380960 39 101 0 0 0 0 0 \n",
|
|
"27 178 1704380960 38 39 40 23 0 0 0 \n",
|
|
"28 201 1704380960 24 24 17 58 17 0 0 \n",
|
|
"29 176 1704381000 37 73 40 0 0 0 0 \n",
|
|
"\n",
|
|
" ddur_8 cycle offset \n",
|
|
"0 0 120 10 \n",
|
|
"1 0 140 50 \n",
|
|
"2 0 140 133 \n",
|
|
"3 0 140 103 \n",
|
|
"4 0 150 35 \n",
|
|
"5 0 150 131 \n",
|
|
"6 0 150 115 \n",
|
|
"7 0 160 57 \n",
|
|
"8 0 120 10 \n",
|
|
"9 0 140 103 \n",
|
|
"10 0 140 50 \n",
|
|
"11 0 140 133 \n",
|
|
"12 0 150 35 \n",
|
|
"13 0 150 131 \n",
|
|
"14 0 150 115 \n",
|
|
"15 0 160 57 \n",
|
|
"16 0 120 10 \n",
|
|
"17 0 140 103 \n",
|
|
"18 0 140 133 \n",
|
|
"19 0 140 50 \n",
|
|
"20 0 140 103 \n",
|
|
"21 0 150 131 \n",
|
|
"22 0 150 35 \n",
|
|
"23 0 150 115 \n",
|
|
"24 0 160 57 \n",
|
|
"25 0 120 10 \n",
|
|
"26 0 140 103 \n",
|
|
"27 0 140 50 \n",
|
|
"28 0 140 133 \n",
|
|
"29 0 150 131 "
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# # 신호이력\n",
|
|
"# midnight = int(datetime(2024, 1, 5, 0, 0, 0).timestamp())\n",
|
|
"# next_day = int(datetime(2024, 1, 6, 0, 0, 0).timestamp())\n",
|
|
"# pland['end_unix'] = pland['start_hour'].astype(int) * 3600 + pland['start_minute'].astype(int) * 60 + midnight # 각 plan의 마지막 시점\n",
|
|
"# history = []\n",
|
|
"# for inter_no in pland.inter_no.unique():\n",
|
|
"# aplan = pland[pland.inter_no == inter_no] # a (specific) plan\n",
|
|
"# rows = []\n",
|
|
"# current_time = midnight # 현재시각\n",
|
|
"# for i in range(len(aplan)):\n",
|
|
"# first_row = aplan.iloc[i]\n",
|
|
"# cycle = first_row['cycle']\n",
|
|
"# unix_end = aplan.iloc[i + 1]['end_unix'] if i < len(aplan) - 1 else next_day # a plan의 마지막 시점\n",
|
|
"# r = 0\n",
|
|
"# while current_time <= unix_end:\n",
|
|
"# remainder = current_time % 10\n",
|
|
"# if remainder != 0: # 현재시각의 일의자리가 0이 아니면 다음 현재시각의 일이자리가 0이 되도록 맞춰준다.\n",
|
|
"# r = (5 - remainder) % 10 - 5 # 1>-1, 2>-2, 3>-3, 4>-4, 5>-5, 6>4, 7>3, 8>2, 9>1\n",
|
|
"# else:\n",
|
|
"# r = random.choices([0, -1, 1], weights=[10, 1, 1])[0] # 측정오차\n",
|
|
"# # 0.001의 확률로 결측 발생\n",
|
|
"# if random.random() < 0.001: # 주기의 배수만큼 결측\n",
|
|
"# n = random.randint(0,100)\n",
|
|
"# current_time += n * cycle + r\n",
|
|
"# # 0.01의 확률로 이상치 발생\n",
|
|
"# elif random.random() > 0.99: # 카이제곱분포값 * 주기만큼의 이상치 발생. 카이제곱분포값은 항상 양수이고 평균이 1\n",
|
|
"# current_time += int(np.random.normal()**2 * cycle) + r\n",
|
|
"# else:\n",
|
|
"# current_time += cycle + r # 결측/이상 없음\n",
|
|
"# new_row = first_row.copy()\n",
|
|
"# new_row['end_unix'] = current_time\n",
|
|
"# rows.append(new_row)\n",
|
|
"# ahistory = pd.concat(rows, axis=1).transpose().reset_index(drop=True) # a (specific) history\n",
|
|
"# history.append(ahistory)\n",
|
|
"# history = pd.concat(history)\n",
|
|
"# history = history[history.end_unix <= next_day]\n",
|
|
"# history = history.sort_values(by='end_unix').reset_index(drop=True)\n",
|
|
"# history = history[['inter_no', 'end_unix'] + [f'ddur_{j}' for j in range(1, 9)] + ['cycle', 'offset']]\n",
|
|
"# history.to_csv('../history.csv')\n",
|
|
"# display(history[:30])\n",
|
|
"# # hist = history.copy()[history.inter_no==175]\n",
|
|
"# # hist['diff'] = hist['end_unix'].diff()\n",
|
|
"# # with pd.option_context('display.max_rows', None, 'display.max_columns', None):\n",
|
|
"# # display(hist)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 84,
|
|
"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>inter_type</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>u00</td>\n",
|
|
" <td>child</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>i1</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>i2</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>u20</td>\n",
|
|
" <td>child</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>i3</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u30</td>\n",
|
|
" <td>child</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u31</td>\n",
|
|
" <td>child</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u32</td>\n",
|
|
" <td>child</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>i8</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>i9</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>i7</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>c30</td>\n",
|
|
" <td>child</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no node_id inter_type\n",
|
|
"0 175 i0 parent\n",
|
|
"1 175 u00 child\n",
|
|
"2 176 i1 parent\n",
|
|
"3 177 i2 parent\n",
|
|
"4 177 u20 child\n",
|
|
"5 178 i3 parent\n",
|
|
"6 178 u30 child\n",
|
|
"7 178 u31 child\n",
|
|
"8 178 u32 child\n",
|
|
"9 201 i8 parent\n",
|
|
"10 202 i9 parent\n",
|
|
"11 206 i7 parent\n",
|
|
"12 210 i6 parent\n",
|
|
"13 178 c30 child"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# 교차로-노드 매칭\n",
|
|
"uturn = pd.read_csv('U_TURN.csv')\n",
|
|
"inter_node = pd.read_csv('inter.csv')\n",
|
|
"inter_node = inter_node[['INT_NO', 'node_id', 'P/C']]\n",
|
|
"# inter_node.drop(index=len(inter_node) - 1, inplace=True)\n",
|
|
"inter_node.columns = ['inter_no', 'node_id', 'inter_type'] # parent : 주교차로, child : 부교차로\n",
|
|
"inter_node['inter_no'] = inter_node['inter_no'].astype(int) # i : intersection, u : u-turn intersection, c : coupling intersection\n",
|
|
"inter_node.iloc[-1] = pd.Series([178, 'c30', 'child'])\n",
|
|
"inter_node.to_csv('../inter_node.csv')\n",
|
|
"display(inter_node)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# 부교차로 정보\n",
|
|
"# 지금은 생략 (23. 1. 9. 09:32)\n",
|
|
"# (23. 1. 18)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 81,
|
|
"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>start_hour</th>\n",
|
|
" <th>start_minute</th>\n",
|
|
" <th>dura_A1</th>\n",
|
|
" <th>dura_A2</th>\n",
|
|
" <th>dura_A3</th>\n",
|
|
" <th>dura_A4</th>\n",
|
|
" <th>dura_A5</th>\n",
|
|
" <th>dura_A6</th>\n",
|
|
" <th>dura_A7</th>\n",
|
|
" <th>...</th>\n",
|
|
" <th>dura_B1</th>\n",
|
|
" <th>dura_B2</th>\n",
|
|
" <th>dura_B3</th>\n",
|
|
" <th>dura_B4</th>\n",
|
|
" <th>dura_B5</th>\n",
|
|
" <th>dura_B6</th>\n",
|
|
" <th>dura_B7</th>\n",
|
|
" <th>dura_B8</th>\n",
|
|
" <th>cycle</th>\n",
|
|
" <th>offset</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>40</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>28</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>41</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>190</td>\n",
|
|
" <td>18</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>131</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>153</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>103</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>103</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>169</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>113</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>113</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>190</td>\n",
|
|
" <td>185</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>35</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>71</td>\n",
|
|
" <td>34</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>71</td>\n",
|
|
" <td>34</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>33</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>41</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>32</td>\n",
|
|
" <td>77</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>32</td>\n",
|
|
" <td>77</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>190</td>\n",
|
|
" <td>49</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>50</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>41</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>62</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>90</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>50</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>71</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>80</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>15</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>80</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>75</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>16</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>133</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>17</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>132</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>18</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>134</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>19</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>50</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>50</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>137</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>20</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>21</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>114</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>114</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>22</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>114</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>114</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>23</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>122</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>122</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>24</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>10</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>25</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>7</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>26</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>53</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>53</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>17</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>27</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>62</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>62</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>10</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>28</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>115</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>29</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>65</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>65</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>131</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>30</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>137</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>31</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>47</td>\n",
|
|
" <td>75</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>66</td>\n",
|
|
" <td>75</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>190</td>\n",
|
|
" <td>143</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"<p>32 rows × 21 columns</p>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no start_hour start_minute dura_A1 dura_A2 dura_A3 dura_A4 \\\n",
|
|
"0 175 00 00 37 39 55 29 \n",
|
|
"1 175 07 00 40 42 55 33 \n",
|
|
"2 175 09 00 43 45 55 37 \n",
|
|
"3 175 18 30 46 48 55 41 \n",
|
|
"4 176 00 00 37 73 40 0 \n",
|
|
"5 176 07 00 37 93 40 0 \n",
|
|
"6 176 09 00 37 103 40 0 \n",
|
|
"7 176 18 30 37 113 40 0 \n",
|
|
"8 177 00 00 36 20 68 26 \n",
|
|
"9 177 07 00 40 25 71 34 \n",
|
|
"10 177 09 00 43 27 70 40 \n",
|
|
"11 177 18 30 45 32 77 36 \n",
|
|
"12 178 00 00 38 39 40 23 \n",
|
|
"13 178 07 00 38 39 42 41 \n",
|
|
"14 178 09 00 38 39 43 50 \n",
|
|
"15 178 18 30 38 39 44 59 \n",
|
|
"16 201 00 00 24 24 17 58 \n",
|
|
"17 201 07 00 30 36 18 58 \n",
|
|
"18 201 09 00 33 36 25 58 \n",
|
|
"19 201 18 30 36 50 18 58 \n",
|
|
"20 202 00 00 39 101 0 0 \n",
|
|
"21 202 07 00 46 114 0 0 \n",
|
|
"22 202 09 00 46 114 0 0 \n",
|
|
"23 202 18 30 48 122 0 0 \n",
|
|
"24 206 00 00 33 35 26 26 \n",
|
|
"25 206 07 00 44 44 26 26 \n",
|
|
"26 206 09 00 45 53 26 26 \n",
|
|
"27 206 18 30 46 62 26 26 \n",
|
|
"28 210 00 00 43 29 56 22 \n",
|
|
"29 210 07 00 43 39 65 23 \n",
|
|
"30 210 09 00 43 43 70 24 \n",
|
|
"31 210 18 30 43 47 75 25 \n",
|
|
"\n",
|
|
" dura_A5 dura_A6 dura_A7 ... dura_B1 dura_B2 dura_B3 dura_B4 \\\n",
|
|
"0 0 0 0 ... 37 39 25 59 \n",
|
|
"1 0 0 0 ... 40 42 29 59 \n",
|
|
"2 0 0 0 ... 43 45 33 59 \n",
|
|
"3 0 0 0 ... 46 48 37 59 \n",
|
|
"4 0 0 0 ... 37 73 40 0 \n",
|
|
"5 0 0 0 ... 37 93 40 0 \n",
|
|
"6 0 0 0 ... 37 103 40 0 \n",
|
|
"7 0 0 0 ... 37 113 40 0 \n",
|
|
"8 0 0 0 ... 36 20 68 26 \n",
|
|
"9 0 0 0 ... 40 25 71 34 \n",
|
|
"10 0 0 0 ... 43 27 70 40 \n",
|
|
"11 0 0 0 ... 45 32 77 36 \n",
|
|
"12 0 0 0 ... 38 39 40 23 \n",
|
|
"13 0 0 0 ... 38 39 62 21 \n",
|
|
"14 0 0 0 ... 38 39 71 22 \n",
|
|
"15 0 0 0 ... 38 39 80 23 \n",
|
|
"16 17 0 0 ... 24 24 17 58 \n",
|
|
"17 18 0 0 ... 30 36 18 58 \n",
|
|
"18 18 0 0 ... 33 36 25 58 \n",
|
|
"19 18 0 0 ... 36 50 18 58 \n",
|
|
"20 0 0 0 ... 39 101 0 0 \n",
|
|
"21 0 0 0 ... 46 114 0 0 \n",
|
|
"22 0 0 0 ... 46 114 0 0 \n",
|
|
"23 0 0 0 ... 48 122 0 0 \n",
|
|
"24 0 0 0 ... 33 35 26 26 \n",
|
|
"25 0 0 0 ... 44 44 26 26 \n",
|
|
"26 0 0 0 ... 45 53 26 26 \n",
|
|
"27 0 0 0 ... 46 62 26 26 \n",
|
|
"28 0 0 0 ... 24 48 56 22 \n",
|
|
"29 0 0 0 ... 24 58 65 23 \n",
|
|
"30 0 0 0 ... 28 58 70 24 \n",
|
|
"31 0 0 0 ... 24 66 75 25 \n",
|
|
"\n",
|
|
" dura_B5 dura_B6 dura_B7 dura_B8 cycle offset \n",
|
|
"0 0 0 0 0 160 57 \n",
|
|
"1 0 0 0 0 170 40 \n",
|
|
"2 0 0 0 0 180 28 \n",
|
|
"3 0 0 0 0 190 18 \n",
|
|
"4 0 0 0 0 150 131 \n",
|
|
"5 0 0 0 0 170 153 \n",
|
|
"6 0 0 0 0 180 169 \n",
|
|
"7 0 0 0 0 190 185 \n",
|
|
"8 0 0 0 0 150 35 \n",
|
|
"9 0 0 0 0 170 33 \n",
|
|
"10 0 0 0 0 180 41 \n",
|
|
"11 0 0 0 0 190 49 \n",
|
|
"12 0 0 0 0 140 50 \n",
|
|
"13 0 0 0 0 160 90 \n",
|
|
"14 0 0 0 0 170 80 \n",
|
|
"15 0 0 0 0 180 75 \n",
|
|
"16 17 0 0 0 140 133 \n",
|
|
"17 18 0 0 0 160 132 \n",
|
|
"18 18 0 0 0 170 134 \n",
|
|
"19 18 0 0 0 180 137 \n",
|
|
"20 0 0 0 0 140 103 \n",
|
|
"21 0 0 0 0 160 103 \n",
|
|
"22 0 0 0 0 160 103 \n",
|
|
"23 0 0 0 0 170 103 \n",
|
|
"24 0 0 0 0 120 10 \n",
|
|
"25 0 0 0 0 140 7 \n",
|
|
"26 0 0 0 0 150 17 \n",
|
|
"27 0 0 0 0 160 10 \n",
|
|
"28 0 0 0 0 150 115 \n",
|
|
"29 0 0 0 0 170 131 \n",
|
|
"30 0 0 0 0 180 137 \n",
|
|
"31 0 0 0 0 190 143 \n",
|
|
"\n",
|
|
"[32 rows x 21 columns]"
|
|
]
|
|
},
|
|
"execution_count": 81,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"plan"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "rts",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.8.10"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|