{ "cells": [ { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "import os\n", "import pandas as pd\n", "\n", "import sys, copy\n", "from datetime import datetime\n", "sys.path.append('../../Scripts')\n", "\n", "from preprocess_daily import DailyPreprocessor\n", "\n", "from generate_signals import SignalGenerator" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "self = DailyPreprocessor()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1. 데이터를 로드합니다.\n", "1-1. 네트워크가 로드되었습니다.\n", "1-2. 테이블들이 로드되었습니다.\n", "1-3. 네트워크의 모든 clean state requirement들을 체크했습니다.\n", "1-4. 테이블들의 무결성 검사를 완료했습니다.\n" ] } ], "source": [ "self.load_data()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "이동류정보 불러오는 중: 100%|██████████| 17280/17280 [00:15<00:00, 1138.40it/s]\n" ] } ], "source": [ "# 2-1-1~7\n", "self.make_match1()\n", "self.make_match2()\n", "self.make_match3()\n", "self.make_match4()\n", "self.make_match5()\n", "self.make_match6()\n", "self.make_matching()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2-2. 비보호우회전(g)을 배정했습니다.\n" ] } ], "source": [ "match6 = self.match6.copy()\n", "matching = self.matching.copy()\n", "self.initialize_state()" ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [], "source": [ "self.match6 = match6\n", "self.matching=matching" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2-2. 비보호우회전(g)을 배정했습니다.\n" ] } ], "source": [ "self.initialize_state()" ] }, { "cell_type": "code", "execution_count": 101, "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", "
inter_nophase_noring_typemove_noinc_dirout_dirinc_angleout_angleinc_edgeout_edgenode_id
01751A8179004-571542797_02571500487_01i0
11751B4003176-571500487_01571542797_02i0
21752A7001095-571500487_01571545870_01i0
31752B3179270-571542797_02571510153_01i0
41753A6090270571545870_02571510153_01i0
....................................
32102B2270090NaNNaNu60
42103A7359090NaNNaNu60
52103B4000180NaNNaNu60
62104A8180000NaNNaNu60
72104B3180270NaNNaNu60
\n", "

116 rows × 11 columns

\n", "
" ], "text/plain": [ " inter_no phase_no ring_type move_no inc_dir out_dir inc_angle out_angle \\\n", "0 175 1 A 8 남 북 179 004 \n", "1 175 1 B 4 북 남 003 176 \n", "2 175 2 A 7 북 동 001 095 \n", "3 175 2 B 3 남 서 179 270 \n", "4 175 3 A 6 동 서 090 270 \n", ".. ... ... ... ... ... ... ... ... \n", "3 210 2 B 2 서 동 270 090 \n", "4 210 3 A 7 북 동 359 090 \n", "5 210 3 B 4 북 남 000 180 \n", "6 210 4 A 8 남 북 180 000 \n", "7 210 4 B 3 남 서 180 270 \n", "\n", " inc_edge out_edge node_id \n", "0 -571542797_02 571500487_01 i0 \n", "1 -571500487_01 571542797_02 i0 \n", "2 -571500487_01 571545870_01 i0 \n", "3 -571542797_02 571510153_01 i0 \n", "4 571545870_02 571510153_01 i0 \n", ".. ... ... ... \n", "3 NaN NaN u60 \n", "4 NaN NaN u60 \n", "5 NaN NaN u60 \n", "6 NaN NaN u60 \n", "7 NaN NaN u60 \n", "\n", "[116 rows x 11 columns]" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "self.match6" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [], "source": [ "# node = self.net.getNode(node_id)\n", "# conns = list(node.getConnections())\n", "# print(node_id)\n", "# for con in node.getConnections():\n", "# print(con)\n", "# print()\n", "# for con in conns:\n", "# print(con)" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "i0\n", "['g', 'r', 'r', 'r', 'g', 'r', 'r', 'r', 'g', 'r', 'r', 'r', 'r', 'r', 'g', 'r', 'r']\n", "571545870_02\n", "571542797_02\n", "\n", "['g', 'r', 'r', 'r', 'g', 'r', 'r', 'G', 'g', 'r', 'r', 'r', 'r', 'r', 'g', 'r', 'r']\n", "[, , , , , , , , , , , , , , , , ]\n" ] } ], "source": [ "all_conns = list(node.getConnections())\n", "allocated_conns = []\n", "# display(matching)\n", "row = self.matching.iloc[0]\n", "node_id = row.node_id\n", "move_no = row.move_no\n", "inc_edge = row.inc_edge\n", "out_edge = row.out_edge\n", "state = copy.deepcopy(self.node2init)[node_id]\n", "\n", "node = self.net.getNode(node_id)\n", "\n", "print(node_id)\n", "print(state)\n", "print(inc_edge)\n", "print(out_edge)\n", "inc_edge = self.net.getEdge(inc_edge)\n", "out_edge = self.net.getEdge(out_edge)\n", "# incoming edge, outgoing edge가 지정된 이동류에 대하여\n", "for conn in inc_edge.getConnections(out_edge):\n", " allocated_conns.append(conns)\n", " print(conn)\n", " index = conn.getTLLinkIndex()\n", " if index >= 0:\n", " # 신호를 G로 지정\n", " state[index] = 'G'\n", "print(state)\n", "for conn in allocated_conns:\n", " print(conn)" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "node_id = self.node_ids[0]\n", "node = self.net.getNode(node_id)\n", "node" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, "outputs": [], "source": [ "node2conns = dict()\n", "node2allocated_conns = dict()\n", "for node_id in self.node_ids:\n", " node = self.net.getNode(node_id)\n", " node2conns[node_id] = list(node.getConnections())\n", " node2allocated_conns[node_id] = []" ] }, { "cell_type": "code", "execution_count": 118, "metadata": {}, "outputs": [], "source": [ "self.match6 = match6\n", "self.matching=matching" ] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "i0\n", "i0\n", "i0\n", "i0\n", "i0\n", "i0\n", "i0\n", "i0\n", "i0\n", "i0\n", "i0\n", "i0\n", "i0\n", "u00\n", "i1\n", "i1\n", "i1\n", "i1\n", "i1\n", "i1\n", "i1\n", "i1\n", "i2\n", "i2\n", "i2\n", "i2\n", "i2\n", "i2\n", "i2\n", "i2\n", "i2\n", "u20\n", "i3\n", "i3\n", "i3\n", "i3\n", "i3\n", "i3\n", "i3\n", "i3\n", "i3\n", "i3\n", "i3\n", "i3\n", "i3\n", "i3\n", "i3\n", "i3\n", "u30\n", "u31\n", "u32\n", "i8\n", "i8\n", "i8\n", "i8\n", "i8\n", "i8\n", "i8\n", "i8\n", "i8\n", "i8\n", "i8\n", "i8\n", "i8\n", "i9\n", "i9\n", "i9\n", "i9\n", "i7\n", "i7\n", "i7\n", "i7\n", "i6\n", "i6\n", "i6\n", "i6\n", "i6\n", "i6\n", "i6\n", "i6\n", "i6\n", "i6\n", "i6\n", "i6\n", "u60\n" ] } ], "source": [ "self.matching['init_state'] = self.matching['node_id'].map(self.node2init)\n", "self.matching['state'] = self.matching['init_state'].map(lambda x:''.join(x))\n", " \n", "node2allocated_conns = dict()\n", "# matching의 각 행을 순회\n", "for row in self.matching.itertuples(index=True):\n", " node_id = row.node_id\n", " move_no = row.move_no\n", " inc_edge = row.inc_edge\n", " out_edge = row.out_edge\n", " state = copy.deepcopy(self.node2init)[node_id]\n", "\n", " if move_no != 21:\n", " inc_edge = self.net.getEdge(inc_edge)\n", " out_edge = self.net.getEdge(out_edge)\n", " for conn in inc_edge.getConnections(out_edge):\n", " # node2allocated_conns[node_id].append(conn)\n", " index = conn.getTLLinkIndex()\n", " if index >= 0:\n", " state[index] = 'G'\n", " self.matching.at[row.Index, 'state'] = ''.join(state)\n", "\n", "self.matching = self.matching.dropna(subset='state')\n", "self.matching = self.matching.reset_index(drop=True)\n", "self.matching = self.matching[['inter_no', 'node_id', 'move_no', 'state']]\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "node2allocated_conns" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2-3. 직진 및 좌회전(G)을 배정했습니다.\n" ] } ], "source": [ "self.assign_signals()" ] }, { "cell_type": "code", "execution_count": 62, "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", "
inter_nophase_noring_typemove_noinc_dirout_dirinc_angleout_angleinc_edgeout_edgenode_id
01751A8179004-571542797_02571500487_01i0
11751B4003176-571500487_01571542797_02i0
21752A7001095-571500487_01571545870_01i0
31752B3179270-571542797_02571510153_01i0
41753A6090270571545870_02571510153_01i0
....................................
32102B2270090NaNNaNu60
42103A7359090NaNNaNu60
52103B4000180NaNNaNu60
62104A8180000NaNNaNu60
72104B3180270NaNNaNu60
\n", "

116 rows × 11 columns

\n", "
" ], "text/plain": [ " inter_no phase_no ring_type move_no inc_dir out_dir inc_angle out_angle \\\n", "0 175 1 A 8 남 북 179 004 \n", "1 175 1 B 4 북 남 003 176 \n", "2 175 2 A 7 북 동 001 095 \n", "3 175 2 B 3 남 서 179 270 \n", "4 175 3 A 6 동 서 090 270 \n", ".. ... ... ... ... ... ... ... ... \n", "3 210 2 B 2 서 동 270 090 \n", "4 210 3 A 7 북 동 359 090 \n", "5 210 3 B 4 북 남 000 180 \n", "6 210 4 A 8 남 북 180 000 \n", "7 210 4 B 3 남 서 180 270 \n", "\n", " inc_edge out_edge node_id \n", "0 -571542797_02 571500487_01 i0 \n", "1 -571500487_01 571542797_02 i0 \n", "2 -571500487_01 571545870_01 i0 \n", "3 -571542797_02 571510153_01 i0 \n", "4 571545870_02 571510153_01 i0 \n", ".. ... ... ... \n", "3 NaN NaN u60 \n", "4 NaN NaN u60 \n", "5 NaN NaN u60 \n", "6 NaN NaN u60 \n", "7 NaN NaN u60 \n", "\n", "[116 rows x 11 columns]" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "match6" ] }, { "cell_type": "code", "execution_count": 58, "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", "
inter_nonode_idphase_noring_typemove_nostate
0175i01A8grrrgrrrgGGGGrgrr
1175i01B4gGGrgrrrgrrrrrgrr
2175i02A7grrGgrrrgrrrrrgrr
3175i02B3grrrgrrrgrrrrGgrr
4175i03A6grrrgGGrgrrrrrgrr
.....................
111210u602B2ggggggggr
112210u603A7ggggggggr
113210u603B4ggggggggr
114210u604A8ggggggggr
115210u604B3ggggggggr
\n", "

116 rows × 6 columns

\n", "
" ], "text/plain": [ " inter_no node_id phase_no ring_type move_no state\n", "0 175 i0 1 A 8 grrrgrrrgGGGGrgrr\n", "1 175 i0 1 B 4 gGGrgrrrgrrrrrgrr\n", "2 175 i0 2 A 7 grrGgrrrgrrrrrgrr\n", "3 175 i0 2 B 3 grrrgrrrgrrrrGgrr\n", "4 175 i0 3 A 6 grrrgGGrgrrrrrgrr\n", ".. ... ... ... ... ... ...\n", "111 210 u60 2 B 2 ggggggggr\n", "112 210 u60 3 A 7 ggggggggr\n", "113 210 u60 3 B 4 ggggggggr\n", "114 210 u60 4 A 8 ggggggggr\n", "115 210 u60 4 B 3 ggggggggr\n", "\n", "[116 rows x 6 columns]" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "self.match6" ] }, { "cell_type": "code", "execution_count": 25, "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", "
inter_nonode_idphase_noring_typemove_nostate
0175i01A8grrrgrrrgGGGGrgrr
1175i01B4gGGrgrrrgrrrrrgrr
2175i02A7grrGgrrrgrrrrrgrr
3175i02B3grrrgrrrgrrrrGgrr
4175i03A6grrrgGGrgrrrrrgrr
.....................
111210u602B2ggggggggr
112210u603A7ggggggggr
113210u603B4ggggggggr
114210u604A8ggggggggr
115210u604B3ggggggggr
\n", "

116 rows × 6 columns

\n", "
" ], "text/plain": [ " inter_no node_id phase_no ring_type move_no state\n", "0 175 i0 1 A 8 grrrgrrrgGGGGrgrr\n", "1 175 i0 1 B 4 gGGrgrrrgrrrrrgrr\n", "2 175 i0 2 A 7 grrGgrrrgrrrrrgrr\n", "3 175 i0 2 B 3 grrrgrrrgrrrrGgrr\n", "4 175 i0 3 A 6 grrrgGGrgrrrrrgrr\n", ".. ... ... ... ... ... ...\n", "111 210 u60 2 B 2 ggggggggr\n", "112 210 u60 3 A 7 ggggggggr\n", "113 210 u60 3 B 4 ggggggggr\n", "114 210 u60 4 A 8 ggggggggr\n", "115 210 u60 4 B 3 ggggggggr\n", "\n", "[116 rows x 6 columns]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "self.match6" ] } ], "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 }