{ "cells": [ { "cell_type": "code", "execution_count": 1, "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": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
inter_nointer_nameinter_latinter_longroup_nomain_phase_no
0175한솔삼거리(한솔마을3거리)37.36857127.1147832
1176느티마을4단지37.36724127.1148032
2177한솔6단지(정자동사무소)37.36619127.1148032
3178신기4거리37.36346127.1148032
4201느티마을4거리37.36854127.1098432
5202느티마을 안촌유치원37.36855127.1124132
6206상록마을 321동37.36483127.1098132
7210상록4거리(상록마을입구4거리)37.36347127.1098232
\n", "
" ], "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": [], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
inter_noangle_A1angle_A2angle_A3angle_A4angle_A5angle_A6angle_A7angle_A8angle_B1angle_B2angle_B3angle_B4angle_B5angle_B6angle_B7angle_B8
0175179004001095090270268000NaNNaNNaNNaN003176179270090180270090NaNNaNNaNNaN
1176180000180000270356NaNNaNNaNNaNNaN359180180270NaNNaNNaNNaNNaNNaN
2177180000000090stop268000NaNNaNNaNNaN001176179270NaN090180NaNNaNNaNNaN
3178180000000090270000090270NaNNaNNaNNaN000180180270270090090180NaNNaNNaNNaN
4201180000270000090270090270000090NaNNaNNaN180270270090270090090180000180NaNNaNNaN
5202090270stopNaNNaNNaNNaNNaNNaN270090NaNNaNNaNNaNNaNNaNNaN
6206180000stop180000stopNaNNaNNaNNaN000180NaN000180NaNNaNNaNNaNNaN
7210090270268000359090180000NaNNaNNaNNaNNaN270090000180180270NaNNaNNaNNaN
\n", "
" ], "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": [], "source": [ "def generate_moves():\n", " # 이동류번호\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", " 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", " 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'../move/move_{current_time}.csv')\n", " display(move)\n", "# generate_moves()" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
inter_nostart_hourstart_minutedura_A1dura_A2dura_A3dura_A4dura_A5dura_A6dura_A7dura_A8dura_B1dura_B2dura_B3dura_B4dura_B5dura_B6dura_B7dura_B8cycleoffsetyellow_A1yellow_B1yellow_A2yellow_B2yellow_A3yellow_B3yellow_A4yellow_B4yellow_A5yellow_B5yellow_A6yellow_B6yellow_A7yellow_B7yellow_A8yellow_B8red_A1red_B1red_A2red_B2red_A3red_B3red_A4red_B4red_A5red_B5red_A6red_B6red_A7red_B7red_A8red_B8
017500003739552900003739255900001605744444444444444441111111111111111
117507004042553300004042295900001704044444444444444441111111111111111
217509004345553700004345335900001802844444444444444441111111111111111
317518304648554100004648375900001901844444444444444441111111111111111
41760000377340000003773400000015013144444444444444441111111111111111
51760700379340000003793400000017015344444444444444441111111111111111
6176090037103400000037103400000018016944444444444444441111111111111111
7176183037113400000037113400000019018544444444444444441111111111111111
817700003620682600003620682600001503544444444444444441111111111111111
917707004025713400004025713400001703344444444444444441111111111111111
1017709004327704000004327704000001804144444444444444441111111111111111
1117718304532773600004532773600001904944444444444444441111111111111111
1217800003839402300003839402300001405044444444444444442222222222222222
1317807003839424100003839622100001609044444444444444442222222222222222
1417809003839435000003839712200001708044444444444444442222222222222222
1517818303839445900003839802300001807544444444444444442222222222222222
1620100002424175817000242417581700014013333333333333333332222222222222222
1720107003036185818000303618581800016013233333333333333332222222222222222
1820109003336255818000333625581800017013433333333333333332222222222222222
1920118303650185818000365018581800018013733333333333333332222222222222222
202020000391010000003910100000014010344444444444444441111111111111111
212020700461140000004611400000016010344444444444444441111111111111111
222020900461140000004611400000016010344444444444444441111111111111111
232021830481220000004812200000017010344444444444444441111111111111111
2420600003335262600003335262600001201044444444444444441111111111111111
252060700444426260000444426260000140744444444444444441111111111111111
2620609004553262600004553262600001501744444444444444441111111111111111
2720618304662262600004662262600001601044444444444444441111111111111111
28210000043295622000024485622000015011544444444444444442222222222222222
29210070043396523000024586523000017013144444444444444442222222222222222
30210090043437024000028587024000018013744444444444444442222222222222222
31210183043477525000024667525000019014344444444444444442222222222222222
\n", "
" ], "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_A8 dura_B1 dura_B2 dura_B3 dura_B4 \\\n", "0 0 0 0 0 37 39 25 59 \n", "1 0 0 0 0 40 42 29 59 \n", "2 0 0 0 0 43 45 33 59 \n", "3 0 0 0 0 46 48 37 59 \n", "4 0 0 0 0 37 73 40 0 \n", "5 0 0 0 0 37 93 40 0 \n", "6 0 0 0 0 37 103 40 0 \n", "7 0 0 0 0 37 113 40 0 \n", "8 0 0 0 0 36 20 68 26 \n", "9 0 0 0 0 40 25 71 34 \n", "10 0 0 0 0 43 27 70 40 \n", "11 0 0 0 0 45 32 77 36 \n", "12 0 0 0 0 38 39 40 23 \n", "13 0 0 0 0 38 39 62 21 \n", "14 0 0 0 0 38 39 71 22 \n", "15 0 0 0 0 38 39 80 23 \n", "16 17 0 0 0 24 24 17 58 \n", "17 18 0 0 0 30 36 18 58 \n", "18 18 0 0 0 33 36 25 58 \n", "19 18 0 0 0 36 50 18 58 \n", "20 0 0 0 0 39 101 0 0 \n", "21 0 0 0 0 46 114 0 0 \n", "22 0 0 0 0 46 114 0 0 \n", "23 0 0 0 0 48 122 0 0 \n", "24 0 0 0 0 33 35 26 26 \n", "25 0 0 0 0 44 44 26 26 \n", "26 0 0 0 0 45 53 26 26 \n", "27 0 0 0 0 46 62 26 26 \n", "28 0 0 0 0 24 48 56 22 \n", "29 0 0 0 0 24 58 65 23 \n", "30 0 0 0 0 28 58 70 24 \n", "31 0 0 0 0 24 66 75 25 \n", "\n", " dura_B5 dura_B6 dura_B7 dura_B8 cycle offset yellow_A1 yellow_B1 \\\n", "0 0 0 0 0 160 57 4 4 \n", "1 0 0 0 0 170 40 4 4 \n", "2 0 0 0 0 180 28 4 4 \n", "3 0 0 0 0 190 18 4 4 \n", "4 0 0 0 0 150 131 4 4 \n", "5 0 0 0 0 170 153 4 4 \n", "6 0 0 0 0 180 169 4 4 \n", "7 0 0 0 0 190 185 4 4 \n", "8 0 0 0 0 150 35 4 4 \n", "9 0 0 0 0 170 33 4 4 \n", "10 0 0 0 0 180 41 4 4 \n", "11 0 0 0 0 190 49 4 4 \n", "12 0 0 0 0 140 50 4 4 \n", "13 0 0 0 0 160 90 4 4 \n", "14 0 0 0 0 170 80 4 4 \n", "15 0 0 0 0 180 75 4 4 \n", "16 17 0 0 0 140 133 3 3 \n", "17 18 0 0 0 160 132 3 3 \n", "18 18 0 0 0 170 134 3 3 \n", "19 18 0 0 0 180 137 3 3 \n", "20 0 0 0 0 140 103 4 4 \n", "21 0 0 0 0 160 103 4 4 \n", "22 0 0 0 0 160 103 4 4 \n", "23 0 0 0 0 170 103 4 4 \n", "24 0 0 0 0 120 10 4 4 \n", "25 0 0 0 0 140 7 4 4 \n", "26 0 0 0 0 150 17 4 4 \n", "27 0 0 0 0 160 10 4 4 \n", "28 0 0 0 0 150 115 4 4 \n", "29 0 0 0 0 170 131 4 4 \n", "30 0 0 0 0 180 137 4 4 \n", "31 0 0 0 0 190 143 4 4 \n", "\n", " yellow_A2 yellow_B2 yellow_A3 yellow_B3 yellow_A4 yellow_B4 \\\n", "0 4 4 4 4 4 4 \n", "1 4 4 4 4 4 4 \n", "2 4 4 4 4 4 4 \n", "3 4 4 4 4 4 4 \n", "4 4 4 4 4 4 4 \n", "5 4 4 4 4 4 4 \n", "6 4 4 4 4 4 4 \n", "7 4 4 4 4 4 4 \n", "8 4 4 4 4 4 4 \n", "9 4 4 4 4 4 4 \n", "10 4 4 4 4 4 4 \n", "11 4 4 4 4 4 4 \n", "12 4 4 4 4 4 4 \n", "13 4 4 4 4 4 4 \n", "14 4 4 4 4 4 4 \n", "15 4 4 4 4 4 4 \n", "16 3 3 3 3 3 3 \n", "17 3 3 3 3 3 3 \n", "18 3 3 3 3 3 3 \n", "19 3 3 3 3 3 3 \n", "20 4 4 4 4 4 4 \n", "21 4 4 4 4 4 4 \n", "22 4 4 4 4 4 4 \n", "23 4 4 4 4 4 4 \n", "24 4 4 4 4 4 4 \n", "25 4 4 4 4 4 4 \n", "26 4 4 4 4 4 4 \n", "27 4 4 4 4 4 4 \n", "28 4 4 4 4 4 4 \n", "29 4 4 4 4 4 4 \n", "30 4 4 4 4 4 4 \n", "31 4 4 4 4 4 4 \n", "\n", " yellow_A5 yellow_B5 yellow_A6 yellow_B6 yellow_A7 yellow_B7 \\\n", "0 4 4 4 4 4 4 \n", "1 4 4 4 4 4 4 \n", "2 4 4 4 4 4 4 \n", "3 4 4 4 4 4 4 \n", "4 4 4 4 4 4 4 \n", "5 4 4 4 4 4 4 \n", "6 4 4 4 4 4 4 \n", "7 4 4 4 4 4 4 \n", "8 4 4 4 4 4 4 \n", "9 4 4 4 4 4 4 \n", "10 4 4 4 4 4 4 \n", "11 4 4 4 4 4 4 \n", "12 4 4 4 4 4 4 \n", "13 4 4 4 4 4 4 \n", "14 4 4 4 4 4 4 \n", "15 4 4 4 4 4 4 \n", "16 3 3 3 3 3 3 \n", "17 3 3 3 3 3 3 \n", "18 3 3 3 3 3 3 \n", "19 3 3 3 3 3 3 \n", "20 4 4 4 4 4 4 \n", "21 4 4 4 4 4 4 \n", "22 4 4 4 4 4 4 \n", "23 4 4 4 4 4 4 \n", "24 4 4 4 4 4 4 \n", "25 4 4 4 4 4 4 \n", "26 4 4 4 4 4 4 \n", "27 4 4 4 4 4 4 \n", "28 4 4 4 4 4 4 \n", "29 4 4 4 4 4 4 \n", "30 4 4 4 4 4 4 \n", "31 4 4 4 4 4 4 \n", "\n", " yellow_A8 yellow_B8 red_A1 red_B1 red_A2 red_B2 red_A3 red_B3 \\\n", "0 4 4 1 1 1 1 1 1 \n", "1 4 4 1 1 1 1 1 1 \n", "2 4 4 1 1 1 1 1 1 \n", "3 4 4 1 1 1 1 1 1 \n", "4 4 4 1 1 1 1 1 1 \n", "5 4 4 1 1 1 1 1 1 \n", "6 4 4 1 1 1 1 1 1 \n", "7 4 4 1 1 1 1 1 1 \n", "8 4 4 1 1 1 1 1 1 \n", "9 4 4 1 1 1 1 1 1 \n", "10 4 4 1 1 1 1 1 1 \n", "11 4 4 1 1 1 1 1 1 \n", "12 4 4 2 2 2 2 2 2 \n", "13 4 4 2 2 2 2 2 2 \n", "14 4 4 2 2 2 2 2 2 \n", "15 4 4 2 2 2 2 2 2 \n", "16 3 3 2 2 2 2 2 2 \n", "17 3 3 2 2 2 2 2 2 \n", "18 3 3 2 2 2 2 2 2 \n", "19 3 3 2 2 2 2 2 2 \n", "20 4 4 1 1 1 1 1 1 \n", "21 4 4 1 1 1 1 1 1 \n", "22 4 4 1 1 1 1 1 1 \n", "23 4 4 1 1 1 1 1 1 \n", "24 4 4 1 1 1 1 1 1 \n", "25 4 4 1 1 1 1 1 1 \n", "26 4 4 1 1 1 1 1 1 \n", "27 4 4 1 1 1 1 1 1 \n", "28 4 4 2 2 2 2 2 2 \n", "29 4 4 2 2 2 2 2 2 \n", "30 4 4 2 2 2 2 2 2 \n", "31 4 4 2 2 2 2 2 2 \n", "\n", " red_A4 red_B4 red_A5 red_B5 red_A6 red_B6 red_A7 red_B7 red_A8 \\\n", "0 1 1 1 1 1 1 1 1 1 \n", "1 1 1 1 1 1 1 1 1 1 \n", "2 1 1 1 1 1 1 1 1 1 \n", "3 1 1 1 1 1 1 1 1 1 \n", "4 1 1 1 1 1 1 1 1 1 \n", "5 1 1 1 1 1 1 1 1 1 \n", "6 1 1 1 1 1 1 1 1 1 \n", "7 1 1 1 1 1 1 1 1 1 \n", "8 1 1 1 1 1 1 1 1 1 \n", "9 1 1 1 1 1 1 1 1 1 \n", "10 1 1 1 1 1 1 1 1 1 \n", "11 1 1 1 1 1 1 1 1 1 \n", "12 2 2 2 2 2 2 2 2 2 \n", "13 2 2 2 2 2 2 2 2 2 \n", "14 2 2 2 2 2 2 2 2 2 \n", "15 2 2 2 2 2 2 2 2 2 \n", "16 2 2 2 2 2 2 2 2 2 \n", "17 2 2 2 2 2 2 2 2 2 \n", "18 2 2 2 2 2 2 2 2 2 \n", "19 2 2 2 2 2 2 2 2 2 \n", "20 1 1 1 1 1 1 1 1 1 \n", "21 1 1 1 1 1 1 1 1 1 \n", "22 1 1 1 1 1 1 1 1 1 \n", "23 1 1 1 1 1 1 1 1 1 \n", "24 1 1 1 1 1 1 1 1 1 \n", "25 1 1 1 1 1 1 1 1 1 \n", "26 1 1 1 1 1 1 1 1 1 \n", "27 1 1 1 1 1 1 1 1 1 \n", "28 2 2 2 2 2 2 2 2 2 \n", "29 2 2 2 2 2 2 2 2 2 \n", "30 2 2 2 2 2 2 2 2 2 \n", "31 2 2 2 2 2 2 2 2 2 \n", "\n", " red_B8 \n", "0 1 \n", "1 1 \n", "2 1 \n", "3 1 \n", "4 1 \n", "5 1 \n", "6 1 \n", "7 1 \n", "8 1 \n", "9 1 \n", "10 1 \n", "11 1 \n", "12 2 \n", "13 2 \n", "14 2 \n", "15 2 \n", "16 2 \n", "17 2 \n", "18 2 \n", "19 2 \n", "20 1 \n", "21 1 \n", "22 1 \n", "23 1 \n", "24 1 \n", "25 1 \n", "26 1 \n", "27 1 \n", "28 2 \n", "29 2 \n", "30 2 \n", "31 2 " ] }, "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", "\n", "yellow_columns = [f'yellow_{ring}{phase}' for phase in range(1, 9) for ring in ['A', 'B']]\n", "red_columns = [f'red_{ring}{phase}' for phase in range(1, 9) for ring in ['A', 'B']]\n", "\n", "inter_nos = plan.inter_no.unique()\n", "yellow_list = np.random.choice([3, 4, 5], size=plan.inter_no.nunique(), p=[0.1, 0.7, 0.2])\n", "inter2yellow = dict(zip(inter_nos, yellow_list))\n", "red_list = np.random.choice([0, 1, 2], size=plan.inter_no.nunique(), p=[0.1, 0.7, 0.2])\n", "inter2red = dict(zip(inter_nos, red_list))\n", "\n", "for phase in range(1, 9):\n", " for ring in ['A', 'B']:\n", " plan[f'yellow_{ring}{phase}'] = plan['inter_no'].map(inter2yellow)\n", "for phase in range(1, 9):\n", " for ring in ['A', 'B']:\n", " plan[f'red_{ring}{phase}'] = plan['inter_no'].map(inter2red)\n", "\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", "with pd.option_context('display.max_rows', None, 'display.max_columns', None):\n", " display(plan)\n", "# pland.to_csv('../pland.csv')\n", "# display(pland)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
inter_noend_unixdura_A1dura_A2dura_A3dura_A4dura_A5dura_A6dura_A7dura_A8dura_B1dura_B2dura_B3dura_B4dura_B5dura_B6dura_B7dura_B8cycleoffset
0206170438052033352626000033352626000012010
120217043805393910100000039101000000140103
2178170438054038394023000038394023000014050
3201170438054024241758170002424175817000140133
4177170438055036206826000036206826000015035
52101704380550432956220000244856220000150115
617617043805513773400000037734000000150131
7175170438056037395529000037392559000016057
8206170438064033352626000033352626000012010
9201170438068024241758170002424175817000140133
10178170438068038394023000038394023000014050
1120217043806803910100000039101000000140103
122101704380700432956220000244856220000150115
1317617043807003773400000037734000000150131
14177170438070136206826000036206826000015035
15175170438072137395529000037392559000016057
16206170438076033352626000033352626000012010
17201170438081924241758170002424175817000140133
18178170438082038394023000038394023000014050
1920217043808203910100000039101000000140103
\n", "
" ], "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 202 1704380539 39 101 0 0 0 0 \n", "2 178 1704380540 38 39 40 23 0 0 \n", "3 201 1704380540 24 24 17 58 17 0 \n", "4 177 1704380550 36 20 68 26 0 0 \n", "5 210 1704380550 43 29 56 22 0 0 \n", "6 176 1704380551 37 73 40 0 0 0 \n", "7 175 1704380560 37 39 55 29 0 0 \n", "8 206 1704380640 33 35 26 26 0 0 \n", "9 201 1704380680 24 24 17 58 17 0 \n", "10 178 1704380680 38 39 40 23 0 0 \n", "11 202 1704380680 39 101 0 0 0 0 \n", "12 210 1704380700 43 29 56 22 0 0 \n", "13 176 1704380700 37 73 40 0 0 0 \n", "14 177 1704380701 36 20 68 26 0 0 \n", "15 175 1704380721 37 39 55 29 0 0 \n", "16 206 1704380760 33 35 26 26 0 0 \n", "17 201 1704380819 24 24 17 58 17 0 \n", "18 178 1704380820 38 39 40 23 0 0 \n", "19 202 1704380820 39 101 0 0 0 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 39 101 0 0 0 0 0 \n", "2 0 0 38 39 40 23 0 0 0 \n", "3 0 0 24 24 17 58 17 0 0 \n", "4 0 0 36 20 68 26 0 0 0 \n", "5 0 0 24 48 56 22 0 0 0 \n", "6 0 0 37 73 40 0 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 24 24 17 58 17 0 0 \n", "10 0 0 38 39 40 23 0 0 0 \n", "11 0 0 39 101 0 0 0 0 0 \n", "12 0 0 24 48 56 22 0 0 0 \n", "13 0 0 37 73 40 0 0 0 0 \n", "14 0 0 36 20 68 26 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 24 24 17 58 17 0 0 \n", "18 0 0 38 39 40 23 0 0 0 \n", "19 0 0 39 101 0 0 0 0 0 \n", "\n", " dura_B8 cycle offset \n", "0 0 120 10 \n", "1 0 140 103 \n", "2 0 140 50 \n", "3 0 140 133 \n", "4 0 150 35 \n", "5 0 150 115 \n", "6 0 150 131 \n", "7 0 160 57 \n", "8 0 120 10 \n", "9 0 140 133 \n", "10 0 140 50 \n", "11 0 140 103 \n", "12 0 150 115 \n", "13 0 150 131 \n", "14 0 150 35 \n", "15 0 160 57 \n", "16 0 120 10 \n", "17 0 140 133 \n", "18 0 140 50 \n", "19 0 140 103 " ] }, "execution_count": 7, "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": 8, "metadata": {}, "outputs": [], "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": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
inter_nonode_idinter_type
0175i0parent
1175u00child
2176i1parent
3177i2parent
4177u20child
5178i3parent
6178u30child
7178u31child
8178u32child
9201i8parent
10202i9parent
11206i7parent
12210i6parent
13210u60child
14178c30child
\n", "
" ], "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 210 u60 child\n", "14 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 = pd.concat([inter_node, pd.DataFrame({'inter_no':[178], 'node_id':['c30'], 'inter_type':['child']})]).reset_index(drop=True)\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": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
inter_nostart_hourstart_minutedura_A1dura_A2dura_A3dura_A4dura_A5dura_A6dura_A7...dura_B2dura_B3dura_B4dura_B5dura_B6dura_B7dura_B8cycleoffsetend_unix
0175000037395529000...3925590000160571704380400
1175070040425533000...4229590000170401704405600
2175090043455537000...4533590000180281704412800
3175183046485541000...4837590000190181704447000
417600003773400000...7340000001501311704380400
517607003793400000...9340000001701531704405600
6176090037103400000...10340000001801691704412800
7176183037113400000...11340000001901851704447000
8177000036206826000...2068260000150351704380400
9177070040257134000...2571340000170331704405600
10177090043277040000...2770400000180411704412800
11177183045327736000...3277360000190491704447000
12178000038394023000...3940230000140501704380400
13178070038394241000...3962210000160901704405600
14178090038394350000...3971220000170801704412800
15178183038394459000...3980230000180751704447000
162010000242417581700...241758170001401331704380400
172010700303618581800...361858180001601321704405600
182010900333625581800...362558180001701341704412800
192011830365018581800...501858180001801371704447000
2020200003910100000...1010000001401031704380400
2120207004611400000...1140000001601031704405600
2220209004611400000...1140000001601031704412800
2320218304812200000...1220000001701031704447000
24206000033352626000...3526260000120101704380400
25206070044442626000...442626000014071704405600
26206090045532626000...5326260000150171704412800
27206183046622626000...6226260000160101704447000
28210000043295622000...48562200001501151704380400
29210070043396523000...58652300001701311704405600
30210090043437024000...58702400001801371704412800
31210183043477525000...66752500001901431704447000
\n", "

32 rows × 22 columns

\n", "
" ], "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_B2 dura_B3 dura_B4 dura_B5 \\\n", "0 0 0 0 ... 39 25 59 0 \n", "1 0 0 0 ... 42 29 59 0 \n", "2 0 0 0 ... 45 33 59 0 \n", "3 0 0 0 ... 48 37 59 0 \n", "4 0 0 0 ... 73 40 0 0 \n", "5 0 0 0 ... 93 40 0 0 \n", "6 0 0 0 ... 103 40 0 0 \n", "7 0 0 0 ... 113 40 0 0 \n", "8 0 0 0 ... 20 68 26 0 \n", "9 0 0 0 ... 25 71 34 0 \n", "10 0 0 0 ... 27 70 40 0 \n", "11 0 0 0 ... 32 77 36 0 \n", "12 0 0 0 ... 39 40 23 0 \n", "13 0 0 0 ... 39 62 21 0 \n", "14 0 0 0 ... 39 71 22 0 \n", "15 0 0 0 ... 39 80 23 0 \n", "16 17 0 0 ... 24 17 58 17 \n", "17 18 0 0 ... 36 18 58 18 \n", "18 18 0 0 ... 36 25 58 18 \n", "19 18 0 0 ... 50 18 58 18 \n", "20 0 0 0 ... 101 0 0 0 \n", "21 0 0 0 ... 114 0 0 0 \n", "22 0 0 0 ... 114 0 0 0 \n", "23 0 0 0 ... 122 0 0 0 \n", "24 0 0 0 ... 35 26 26 0 \n", "25 0 0 0 ... 44 26 26 0 \n", "26 0 0 0 ... 53 26 26 0 \n", "27 0 0 0 ... 62 26 26 0 \n", "28 0 0 0 ... 48 56 22 0 \n", "29 0 0 0 ... 58 65 23 0 \n", "30 0 0 0 ... 58 70 24 0 \n", "31 0 0 0 ... 66 75 25 0 \n", "\n", " dura_B6 dura_B7 dura_B8 cycle offset end_unix \n", "0 0 0 0 160 57 1704380400 \n", "1 0 0 0 170 40 1704405600 \n", "2 0 0 0 180 28 1704412800 \n", "3 0 0 0 190 18 1704447000 \n", "4 0 0 0 150 131 1704380400 \n", "5 0 0 0 170 153 1704405600 \n", "6 0 0 0 180 169 1704412800 \n", "7 0 0 0 190 185 1704447000 \n", "8 0 0 0 150 35 1704380400 \n", "9 0 0 0 170 33 1704405600 \n", "10 0 0 0 180 41 1704412800 \n", "11 0 0 0 190 49 1704447000 \n", "12 0 0 0 140 50 1704380400 \n", "13 0 0 0 160 90 1704405600 \n", "14 0 0 0 170 80 1704412800 \n", "15 0 0 0 180 75 1704447000 \n", "16 0 0 0 140 133 1704380400 \n", "17 0 0 0 160 132 1704405600 \n", "18 0 0 0 170 134 1704412800 \n", "19 0 0 0 180 137 1704447000 \n", "20 0 0 0 140 103 1704380400 \n", "21 0 0 0 160 103 1704405600 \n", "22 0 0 0 160 103 1704412800 \n", "23 0 0 0 170 103 1704447000 \n", "24 0 0 0 120 10 1704380400 \n", "25 0 0 0 140 7 1704405600 \n", "26 0 0 0 150 17 1704412800 \n", "27 0 0 0 160 10 1704447000 \n", "28 0 0 0 150 115 1704380400 \n", "29 0 0 0 170 131 1704405600 \n", "30 0 0 0 180 137 1704412800 \n", "31 0 0 0 190 143 1704447000 \n", "\n", "[32 rows x 22 columns]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plan" ] } ], "metadata": { "kernelspec": { "display_name": "sts", "language": "python", "name": "sts" }, "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 }