{ "cells": [ { "cell_type": "code", "execution_count": 2, "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:13<00:00, 1252.17it/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": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['북', '북동', '동', '남동', '남', '남서', '서', '북서']" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "self.directions" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'북': array([6.123234e-17, 1.000000e+00]),\n", " '북동': array([0.70710678, 0.70710678]),\n", " '동': array([1., 0.]),\n", " '남동': array([ 0.70710678, -0.70710678]),\n", " '남': array([ 6.123234e-17, -1.000000e+00]),\n", " '남서': array([-0.70710678, -0.70710678]),\n", " '서': array([-1.0000000e+00, -1.2246468e-16]),\n", " '북서': array([-0.70710678, 0.70710678])}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "\n", "# dictionary that maps dire(북) to dir(np.array([0,1]))\n", "self.dire2dir = dict()\n", "theta = np.pi/2\n", "for dire in self.directions:\n", " self.dire2dir[dire] = np.array([np.cos(theta), np.sin(theta)])\n", " theta -= np.pi/4\n", "self.dire2dir" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(10315.19, 11460.86),\n", " (10314.85, 11439.86),\n", " (10314.54, 11439.86),\n", " (10314.9, 11460.86)]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "node_id = 'i5'\n", "node = self.net.getNode(node_id)\n", "inc_edges = [edge for edge in node.getIncoming() if edge.getFunction() == ''] # incoming edges\n", "out_edges = [edge for edge in node.getOutgoing() if edge.getFunction() == ''] # outgoing edges\n", "inc_edge = inc_edges[0]\n", "loc_inc_edge = inc_edge.getShape()[-1]\n", "node.getShape()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2-2. 비보호우회전(g)을 배정했습니다.\n" ] } ], "source": [ "self.initialize_state()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "c30\n", "571542116_01\n", "571542116_02.96\n", "i0\n", "-571500487_01\n", "-571542797_02\n", "571510153_02\n", "571545870_02\n", "i1\n", "-571542810_01\n", "571542797_02.99\n", "571543469_02\n", "i2\n", "-571542809_01\n", "571542107_02\n", "571542811_02\n", "i3\n", "-571500475_01\n", "571540303_02.21\n", "571540304_02\n", "571556450_02\n", "i6\n", "-571542115_01\n", "571500535_02.18\n", "571500585_02\n", "571511538_02.121\n", "i7\n", "-571511538_02\n", "571542071_02\n", "571542073_01\n", "i8\n", "-571500569_01\n", "571500583_01\n", "571500617_02\n", "571500618_02\n", "i9\n", "571510152_01\n", "571510152_02\n", "u00\n", "571500487_01\n", "571500487_02\n", "u20\n", "571542810_01.51\n", "571542811_01\n", "u30\n", "571556450_01\n", "571556452_01\n", "u31\n", "571500475_01\n", "571500475_02\n", "u32\n", "571540303_01\n", "571540303_02\n", "u60\n", "571500535_01\n", "571500535_02\n" ] } ], "source": [ "for node_id in self.node_ids:\n", " print(node_id)\n", " node = self.net.getNode(node_id)\n", " inc_edges = [edge for edge in node.getIncoming() if edge.getFunction() == ''] # incoming edges\n", " out_edges = [edge for edge in node.getOutgoing() if edge.getFunction() == ''] # outgoing edges\n", " inc_edge_ids = [edge.getID() for edge in node.getIncoming() if edge.getFunction() == ''] # incoming edge ids\n", " out_edge_ids = [edge.getID() for edge in node.getOutgoing() if edge.getFunction() == ''] # outgoing edge ids\n", " # print(node)\n", " for inc_edge_id in inc_edge_ids:\n", " print(inc_edge_id)" ] }, { "cell_type": "code", "execution_count": 10, "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", "
inter_nomove_noinc_dirout_dirinc_edgeout_edgenode_id
01751571545870_02571542797_02i0
11752571510153_02571545870_01i0
21753-571542797_02571510153_01i0
31754-571500487_01571542797_02i0
41755571510153_02571500487_01i0
........................
7121021571511538_02.121571500535_01i6
7221021571500535_02.18571500585_01i6
7321021571500585_02571542115_01i6
7421021-571542115_01571511538_01i6
752105571500535_02-571500535_02u60
\n", "

76 rows × 7 columns

\n", "
" ], "text/plain": [ " inter_no move_no inc_dir out_dir inc_edge out_edge node_id\n", "0 175 1 동 남 571545870_02 571542797_02 i0\n", "1 175 2 서 동 571510153_02 571545870_01 i0\n", "2 175 3 남 서 -571542797_02 571510153_01 i0\n", "3 175 4 북 남 -571500487_01 571542797_02 i0\n", "4 175 5 서 북 571510153_02 571500487_01 i0\n", ".. ... ... ... ... ... ... ...\n", "71 210 21 북 서 571511538_02.121 571500535_01 i6\n", "72 210 21 서 남 571500535_02.18 571500585_01 i6\n", "73 210 21 남 동 571500585_02 571542115_01 i6\n", "74 210 21 동 북 -571542115_01 571511538_01 i6\n", "75 210 5 서 북 571500535_02 -571500535_02 u60\n", "\n", "[76 rows x 7 columns]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "self.matching" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['북', '북동', '동', '남동', '남', '남서', '서', '북서']" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "self.directions" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'-571542797_02'" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(self.node_id2inc_edge2dir['i0'])[1]" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'-571500487_01': array([-0.00936558, -0.99995614]),\n", " '-571542797_02': array([0.00318883, 0.99999492]),\n", " '571510153_02': array([0.99927006, 0.03820147]),\n", " '571545870_02': array([-0.99951221, 0.03123044])}" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "self.node_id2inc_edge2dir['i0']" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'북': array([6.123234e-17, 1.000000e+00]),\n", " '북동': array([0.70710678, 0.70710678]),\n", " '동': array([1., 0.]),\n", " '남동': array([ 0.70710678, -0.70710678]),\n", " '남': array([ 6.123234e-17, -1.000000e+00]),\n", " '남서': array([-0.70710678, -0.70710678]),\n", " '서': array([-1.0000000e+00, -1.2246468e-16]),\n", " '북서': array([-0.70710678, 0.70710678])}" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "self.dire2dir" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'-571500487_01': array([-0.00936558, -0.99995614]),\n", " '-571542797_02': array([0.00318883, 0.99999492]),\n", " '571510153_02': array([0.99927006, 0.03820147]),\n", " '571545870_02': array([-0.99951221, 0.03123044])}" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "self.node_id2inc_edge2dir['i0']" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n", "남\n", "[6.123234e-17 1.000000e+00]\n", "[-0.00936558 -0.99995614]\n", "-0.999956141961442\n", "\n", "[0.70710678 0.70710678]\n", "[-0.00936558 -0.99995614]\n", "-0.7136982364459966\n", "\n", "[1. 0.]\n", "[-0.00936558 -0.99995614]\n", "-0.00936558346224636\n", "\n", "[ 0.70710678 -0.70710678]\n", "[-0.00936558 -0.99995614]\n", "0.7004533012941507\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[-0.00936558 -0.99995614]\n", "0.999956141961442\n", "\n", "[-0.70710678 -0.70710678]\n", "[-0.00936558 -0.99995614]\n", "0.7136982364459966\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[-0.00936558 -0.99995614]\n", "0.009365583462246483\n", "\n", "[-0.70710678 0.70710678]\n", "[-0.00936558 -0.99995614]\n", "-0.7004533012941506\n", "\n", "0\n", "북\n", "[6.123234e-17 1.000000e+00]\n", "[0.00318883 0.99999492]\n", "0.9999949156539597\n", "\n", "[0.70710678 0.70710678]\n", "[0.00318883 0.99999492]\n", "0.7093580325944496\n", "\n", "[1. 0.]\n", "[0.00318883 0.99999492]\n", "0.0031888346194069504\n", "\n", "[ 0.70710678 -0.70710678]\n", "[0.00318883 0.99999492]\n", "-0.7048483394275195\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[0.00318883 0.99999492]\n", "-0.9999949156539597\n", "\n", "[-0.70710678 -0.70710678]\n", "[0.00318883 0.99999492]\n", "-0.7093580325944496\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[0.00318883 0.99999492]\n", "-0.0031888346194070727\n", "\n", "[-0.70710678 0.70710678]\n", "[0.00318883 0.99999492]\n", "0.7048483394275193\n", "\n", "2\n", "동\n", "[6.123234e-17 1.000000e+00]\n", "[0.99927006 0.03820147]\n", "0.03820147100728745\n", "\n", "[0.70710678 0.70710678]\n", "[0.99927006 0.03820147]\n", "0.7336031530235902\n", "\n", "[1. 0.]\n", "[0.99927006 0.03820147]\n", "0.9992700573983387\n", "\n", "[ 0.70710678 -0.70710678]\n", "[0.99927006 0.03820147]\n", "0.6795781146224817\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[0.99927006 0.03820147]\n", "-0.038201471007287324\n", "\n", "[-0.70710678 -0.70710678]\n", "[0.99927006 0.03820147]\n", "-0.7336031530235901\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[0.99927006 0.03820147]\n", "-0.9992700573983387\n", "\n", "[-0.70710678 0.70710678]\n", "[0.99927006 0.03820147]\n", "-0.6795781146224819\n", "\n", "6\n", "서\n", "[6.123234e-17 1.000000e+00]\n", "[-0.99951221 0.03123044]\n", "0.031230438222358273\n", "\n", "[0.70710678 0.70710678]\n", "[-0.99951221 0.03123044]\n", "-0.6846786075562368\n", "\n", "[1. 0.]\n", "[-0.99951221 0.03123044]\n", "-0.9995122108951142\n", "\n", "[ 0.70710678 -0.70710678]\n", "[-0.99951221 0.03123044]\n", "-0.728845116849151\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[-0.99951221 0.03123044]\n", "-0.0312304382223584\n", "\n", "[-0.70710678 -0.70710678]\n", "[-0.99951221 0.03123044]\n", "0.6846786075562367\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[-0.99951221 0.03123044]\n", "0.9995122108951142\n", "\n", "[-0.70710678 0.70710678]\n", "[-0.99951221 0.03123044]\n", "0.7288451168491511\n", "\n", "0\n", "북\n", "[6.123234e-17 1.000000e+00]\n", "[0.01954731 0.99980893]\n", "0.9998089329965109\n", "\n", "[0.70710678 0.70710678]\n", "[0.01954731 0.99980893]\n", "0.7207937149812274\n", "\n", "[1. 0.]\n", "[0.01954731 0.99980893]\n", "0.019547314403227895\n", "\n", "[ 0.70710678 -0.70710678]\n", "[0.01954731 0.99980893]\n", "-0.6931496378442115\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[0.01954731 0.99980893]\n", "-0.9998089329965109\n", "\n", "[-0.70710678 -0.70710678]\n", "[0.01954731 0.99980893]\n", "-0.7207937149812274\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[0.01954731 0.99980893]\n", "-0.019547314403228017\n", "\n", "[-0.70710678 0.70710678]\n", "[0.01954731 0.99980893]\n", "0.6931496378442114\n", "\n", "4\n", "남\n", "[6.123234e-17 1.000000e+00]\n", "[-0.00324512 -0.99999473]\n", "-0.9999947345997597\n", "\n", "[0.70710678 0.70710678]\n", "[-0.00324512 -0.99999473]\n", "-0.7093977009603124\n", "\n", "[1. 0.]\n", "[-0.00324512 -0.99999473]\n", "-0.0032451152146071934\n", "\n", "[ 0.70710678 -0.70710678]\n", "[-0.00324512 -0.99999473]\n", "0.7048084150123516\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[-0.00324512 -0.99999473]\n", "0.9999947345997597\n", "\n", "[-0.70710678 -0.70710678]\n", "[-0.00324512 -0.99999473]\n", "0.7093977009603124\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[-0.00324512 -0.99999473]\n", "0.0032451152146073157\n", "\n", "[-0.70710678 0.70710678]\n", "[-0.00324512 -0.99999473]\n", "-0.7048084150123515\n", "\n", "2\n", "동\n", "[6.123234e-17 1.000000e+00]\n", "[ 0.99974606 -0.02253478]\n", "-0.02253477852193767\n", "\n", "[0.70710678 0.70710678]\n", "[ 0.99974606 -0.02253478]\n", "0.690992723527485\n", "\n", "[1. 0.]\n", "[ 0.99974606 -0.02253478]\n", "0.9997460596356292\n", "\n", "[ 0.70710678 -0.70710678]\n", "[ 0.99974606 -0.02253478]\n", "0.7228617129382832\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[ 0.99974606 -0.02253478]\n", "0.022534778521937793\n", "\n", "[-0.70710678 -0.70710678]\n", "[ 0.99974606 -0.02253478]\n", "-0.6909927235274849\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[ 0.99974606 -0.02253478]\n", "-0.9997460596356292\n", "\n", "[-0.70710678 0.70710678]\n", "[ 0.99974606 -0.02253478]\n", "-0.7228617129382833\n", "\n", "0\n", "북\n", "[6.123234e-17 1.000000e+00]\n", "[0.0188774 0.99982181]\n", "0.9998218060534435\n", "\n", "[0.70710678 0.70710678]\n", "[0.0188774 0.99982181]\n", "0.7203291148904717\n", "\n", "[1. 0.]\n", "[0.0188774 0.99982181]\n", "0.018877397596868892\n", "\n", "[ 0.70710678 -0.70710678]\n", "[0.0188774 0.99982181]\n", "-0.6936324431866705\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[0.0188774 0.99982181]\n", "-0.9998218060534435\n", "\n", "[-0.70710678 -0.70710678]\n", "[0.0188774 0.99982181]\n", "-0.7203291148904717\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[0.0188774 0.99982181]\n", "-0.018877397596869013\n", "\n", "[-0.70710678 0.70710678]\n", "[0.0188774 0.99982181]\n", "0.6936324431866704\n", "\n", "5\n", "남서\n", "[6.123234e-17 1.000000e+00]\n", "[-0.71131147 -0.70287694]\n", "-0.7028769433114078\n", "\n", "[0.70710678 0.70710678]\n", "[-0.71131147 -0.70287694]\n", "-0.9999822145459303\n", "\n", "[1. 0.]\n", "[-0.71131147 -0.70287694]\n", "-0.7113114666313288\n", "\n", "[ 0.70710678 -0.70710678]\n", "[-0.71131147 -0.70287694]\n", "-0.0059641086355921675\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[-0.71131147 -0.70287694]\n", "0.7028769433114078\n", "\n", "[-0.70710678 -0.70710678]\n", "[-0.71131147 -0.70287694]\n", "0.9999822145459303\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[-0.71131147 -0.70287694]\n", "0.7113114666313289\n", "\n", "[-0.70710678 0.70710678]\n", "[-0.71131147 -0.70287694]\n", "0.005964108635592357\n", "\n", "4\n", "남\n", "[6.123234e-17 1.000000e+00]\n", "[-0.00514794 -0.99998675]\n", "-0.9999867492848744\n", "\n", "[0.70710678 0.70710678]\n", "[-0.00514794 -0.99998675]\n", "-0.7107375526307316\n", "\n", "[1. 0.]\n", "[-0.00514794 -0.99998675]\n", "-0.005147936933367546\n", "\n", "[ 0.70710678 -0.70710678]\n", "[-0.00514794 -0.99998675]\n", "0.7034572704013218\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[-0.00514794 -0.99998675]\n", "0.9999867492848744\n", "\n", "[-0.70710678 -0.70710678]\n", "[-0.00514794 -0.99998675]\n", "0.7107375526307316\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[-0.00514794 -0.99998675]\n", "0.005147936933367668\n", "\n", "[-0.70710678 0.70710678]\n", "[-0.00514794 -0.99998675]\n", "-0.7034572704013217\n", "\n", "6\n", "서\n", "[6.123234e-17 1.000000e+00]\n", "[-0.99937585 0.03532571]\n", "0.035325714272748256\n", "\n", "[0.70710678 0.70710678]\n", "[-0.99937585 0.03532571]\n", "-0.6816863899147254\n", "\n", "[1. 0.]\n", "[-0.99937585 0.03532571]\n", "-0.9993758521753067\n", "\n", "[ 0.70710678 -0.70710678]\n", "[-0.99937585 0.03532571]\n", "-0.7316444941397628\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[-0.99937585 0.03532571]\n", "-0.03532571427274838\n", "\n", "[-0.70710678 -0.70710678]\n", "[-0.99937585 0.03532571]\n", "0.6816863899147253\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[-0.99937585 0.03532571]\n", "0.9993758521753067\n", "\n", "[-0.70710678 0.70710678]\n", "[-0.99937585 0.03532571]\n", "0.731644494139763\n", "\n", "2\n", "동\n", "[6.123234e-17 1.000000e+00]\n", "[ 0.99959605 -0.02842068]\n", "-0.028420683815972996\n", "\n", "[0.70710678 0.70710678]\n", "[ 0.99959605 -0.02842068]\n", "0.6867246877003452\n", "\n", "[1. 0.]\n", "[ 0.99959605 -0.02842068]\n", "0.9995960507782293\n", "\n", "[ 0.70710678 -0.70710678]\n", "[ 0.99959605 -0.02842068]\n", "0.7269176042048118\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[ 0.99959605 -0.02842068]\n", "0.02842068381597312\n", "\n", "[-0.70710678 -0.70710678]\n", "[ 0.99959605 -0.02842068]\n", "-0.6867246877003451\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[ 0.99959605 -0.02842068]\n", "-0.9995960507782293\n", "\n", "[-0.70710678 0.70710678]\n", "[ 0.99959605 -0.02842068]\n", "-0.7269176042048119\n", "\n", "0\n", "북\n", "[6.123234e-17 1.000000e+00]\n", "[0.00401066 0.99999196]\n", "0.9999919572590873\n", "\n", "[0.70710678 0.70710678]\n", "[0.00401066 0.99999196]\n", "0.7099370610648998\n", "\n", "[1. 0.]\n", "[0.00401066 0.99999196]\n", "0.004010662930190224\n", "\n", "[ 0.70710678 -0.70710678]\n", "[0.00401066 0.99999196]\n", "-0.7042651271549178\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[0.00401066 0.99999196]\n", "-0.9999919572590873\n", "\n", "[-0.70710678 -0.70710678]\n", "[0.00401066 0.99999196]\n", "-0.7099370610648998\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[0.00401066 0.99999196]\n", "-0.0040106629301903465\n", "\n", "[-0.70710678 0.70710678]\n", "[0.00401066 0.99999196]\n", "0.7042651271549177\n", "\n", "4\n", "남\n", "[6.123234e-17 1.000000e+00]\n", "[-0.02221674 -0.99975318]\n", "-0.99975317783161\n", "\n", "[0.70710678 0.70710678]\n", "[-0.02221674 -0.99975318]\n", "-0.7226418571477022\n", "\n", "[1. 0.]\n", "[-0.02221674 -0.99975318]\n", "-0.022216737285151163\n", "\n", "[ 0.70710678 -0.70710678]\n", "[-0.02221674 -0.99975318]\n", "0.6912226459673614\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[-0.02221674 -0.99975318]\n", "0.99975317783161\n", "\n", "[-0.70710678 -0.70710678]\n", "[-0.02221674 -0.99975318]\n", "0.7226418571477022\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[-0.02221674 -0.99975318]\n", "0.022216737285151285\n", "\n", "[-0.70710678 0.70710678]\n", "[-0.02221674 -0.99975318]\n", "-0.6912226459673613\n", "\n", "6\n", "서\n", "[6.123234e-17 1.000000e+00]\n", "[-0.99990726 0.01361849]\n", "0.013618485596221176\n", "\n", "[0.70710678 0.70710678]\n", "[-0.99990726 0.01361849]\n", "-0.69741148350594\n", "\n", "[1. 0.]\n", "[-0.99990726 0.01361849]\n", "-0.9999072641250615\n", "\n", "[ 0.70710678 -0.70710678]\n", "[-0.99990726 0.01361849]\n", "-0.7166709305350987\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[-0.99990726 0.01361849]\n", "-0.013618485596221298\n", "\n", "[-0.70710678 -0.70710678]\n", "[-0.99990726 0.01361849]\n", "0.6974114835059398\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[-0.99990726 0.01361849]\n", "0.9999072641250615\n", "\n", "[-0.70710678 0.70710678]\n", "[-0.99990726 0.01361849]\n", "0.7166709305350988\n", "\n", "2\n", "동\n", "[6.123234e-17 1.000000e+00]\n", "[ 0.99979737 -0.02013015]\n", "-0.020130148349706223\n", "\n", "[0.70710678 0.70710678]\n", "[ 0.99979737 -0.02013015]\n", "0.692729334344831\n", "\n", "[1. 0.]\n", "[ 0.99979737 -0.02013015]\n", "0.9997973680338526\n", "\n", "[ 0.70710678 -0.70710678]\n", "[ 0.99979737 -0.02013015]\n", "0.721197663153568\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[ 0.99979737 -0.02013015]\n", "0.020130148349706348\n", "\n", "[-0.70710678 -0.70710678]\n", "[ 0.99979737 -0.02013015]\n", "-0.6927293343448309\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[ 0.99979737 -0.02013015]\n", "-0.9997973680338526\n", "\n", "[-0.70710678 0.70710678]\n", "[ 0.99979737 -0.02013015]\n", "-0.7211976631535681\n", "\n", "0\n", "북\n", "[6.123234e-17 1.000000e+00]\n", "[0.02097793 0.99977994]\n", "0.9997799391161097\n", "\n", "[0.70710678 0.70710678]\n", "[0.02097793 0.99977994]\n", "0.7217848077280572\n", "\n", "[1. 0.]\n", "[0.02097793 0.99977994]\n", "0.02097792508776536\n", "\n", "[ 0.70710678 -0.70710678]\n", "[0.02097793 0.99977994]\n", "-0.6921175415584926\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[0.02097793 0.99977994]\n", "-0.9997799391161097\n", "\n", "[-0.70710678 -0.70710678]\n", "[0.02097793 0.99977994]\n", "-0.7217848077280572\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[0.02097793 0.99977994]\n", "-0.02097792508776548\n", "\n", "[-0.70710678 0.70710678]\n", "[0.02097793 0.99977994]\n", "0.6921175415584925\n", "\n", "4\n", "남\n", "[6.123234e-17 1.000000e+00]\n", "[-0.0178916 -0.99983993]\n", "-0.9998399325579537\n", "\n", "[0.70710678 0.70710678]\n", "[-0.0178916 -0.99983993]\n", "-0.7196448663590954\n", "\n", "[1. 0.]\n", "[-0.0178916 -0.99983993]\n", "-0.017891597539252523\n", "\n", "[ 0.70710678 -0.70710678]\n", "[-0.0178916 -0.99983993]\n", "0.6943423264665635\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[-0.0178916 -0.99983993]\n", "0.9998399325579537\n", "\n", "[-0.70710678 -0.70710678]\n", "[-0.0178916 -0.99983993]\n", "0.7196448663590954\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[-0.0178916 -0.99983993]\n", "0.017891597539252645\n", "\n", "[-0.70710678 0.70710678]\n", "[-0.0178916 -0.99983993]\n", "-0.6943423264665634\n", "\n", "0\n", "북\n", "[6.123234e-17 1.000000e+00]\n", "[0.03173005 0.99949648]\n", "0.9994964752953672\n", "\n", "[0.70710678 0.70710678]\n", "[0.03173005 0.99949648]\n", "0.7291872667376466\n", "\n", "[1. 0.]\n", "[0.03173005 0.99949648]\n", "0.031730046834780104\n", "\n", "[ 0.70710678 -0.70710678]\n", "[0.03173005 0.99949648]\n", "-0.684314204169167\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[0.03173005 0.99949648]\n", "-0.9994964752953672\n", "\n", "[-0.70710678 -0.70710678]\n", "[0.03173005 0.99949648]\n", "-0.7291872667376466\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[0.03173005 0.99949648]\n", "-0.03173004683478023\n", "\n", "[-0.70710678 0.70710678]\n", "[0.03173005 0.99949648]\n", "0.6843142041691669\n", "\n", "6\n", "서\n", "[6.123234e-17 1.000000e+00]\n", "[-0.99996279 0.00862609]\n", "0.00862608913718171\n", "\n", "[0.70710678 0.70710678]\n", "[-0.99996279 0.00862609]\n", "-0.7009809068725814\n", "\n", "[1. 0.]\n", "[-0.99996279 0.00862609]\n", "-0.9999627946009778\n", "\n", "[ 0.70710678 -0.70710678]\n", "[-0.99996279 0.00862609]\n", "-0.7131800391206231\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[-0.99996279 0.00862609]\n", "-0.008626089137181832\n", "\n", "[-0.70710678 -0.70710678]\n", "[-0.99996279 0.00862609]\n", "0.7009809068725813\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[-0.99996279 0.00862609]\n", "0.9999627946009778\n", "\n", "[-0.70710678 0.70710678]\n", "[-0.99996279 0.00862609]\n", "0.7131800391206232\n", "\n", "4\n", "남\n", "[6.123234e-17 1.000000e+00]\n", "[-0.01269051 -0.99991947]\n", "-0.9999194722128006\n", "\n", "[0.70710678 0.70710678]\n", "[-0.01269051 -0.99991947]\n", "-0.7160233863906494\n", "\n", "[1. 0.]\n", "[-0.01269051 -0.99991947]\n", "-0.012690511797166758\n", "\n", "[ 0.70710678 -0.70710678]\n", "[-0.01269051 -0.99991947]\n", "0.6980762924936404\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[-0.01269051 -0.99991947]\n", "0.9999194722128006\n", "\n", "[-0.70710678 -0.70710678]\n", "[-0.01269051 -0.99991947]\n", "0.7160233863906494\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[-0.01269051 -0.99991947]\n", "0.012690511797166881\n", "\n", "[-0.70710678 0.70710678]\n", "[-0.01269051 -0.99991947]\n", "-0.6980762924936403\n", "\n", "0\n", "북\n", "[6.123234e-17 1.000000e+00]\n", "[0.01501082 0.99988733]\n", "0.9998873313095755\n", "\n", "[0.70710678 0.70710678]\n", "[0.01501082 0.99988733]\n", "0.7176413642873244\n", "\n", "[1. 0.]\n", "[0.01501082 0.99988733]\n", "0.015010818985489397\n", "\n", "[ 0.70710678 -0.70710678]\n", "[0.01501082 0.99988733]\n", "-0.6964128604957177\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[0.01501082 0.99988733]\n", "-0.9998873313095755\n", "\n", "[-0.70710678 -0.70710678]\n", "[0.01501082 0.99988733]\n", "-0.7176413642873244\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[0.01501082 0.99988733]\n", "-0.01501081898548952\n", "\n", "[-0.70710678 0.70710678]\n", "[0.01501082 0.99988733]\n", "0.6964128604957176\n", "\n", "4\n", "남\n", "[6.123234e-17 1.000000e+00]\n", "[-0.01245578 -0.99992242]\n", "-0.9999224237500915\n", "\n", "[0.70710678 0.70710678]\n", "[-0.01245578 -0.99992242]\n", "-0.7158594937446279\n", "\n", "[1. 0.]\n", "[-0.01245578 -0.99992242]\n", "-0.012455781057098932\n", "\n", "[ 0.70710678 -0.70710678]\n", "[-0.01245578 -0.99992242]\n", "0.6982443592437287\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[-0.01245578 -0.99992242]\n", "0.9999224237500915\n", "\n", "[-0.70710678 -0.70710678]\n", "[-0.01245578 -0.99992242]\n", "0.7158594937446279\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[-0.01245578 -0.99992242]\n", "0.012455781057099055\n", "\n", "[-0.70710678 0.70710678]\n", "[-0.01245578 -0.99992242]\n", "-0.6982443592437285\n", "\n", "6\n", "서\n", "[6.123234e-17 1.000000e+00]\n", "[-0.99986689 0.01631585]\n", "0.016315849579498894\n", "\n", "[0.70710678 0.70710678]\n", "[-0.99986689 0.01631585]\n", "-0.695475608674601\n", "\n", "[1. 0.]\n", "[-0.99986689 0.01631585]\n", "-0.9998668876668031\n", "\n", "[ 0.70710678 -0.70710678]\n", "[-0.99986689 0.01631585]\n", "-0.7185497044315678\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[-0.99986689 0.01631585]\n", "-0.01631584957949902\n", "\n", "[-0.70710678 -0.70710678]\n", "[-0.99986689 0.01631585]\n", "0.6954756086746009\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[-0.99986689 0.01631585]\n", "0.9998668876668031\n", "\n", "[-0.70710678 0.70710678]\n", "[-0.99986689 0.01631585]\n", "0.718549704431568\n", "\n", "2\n", "동\n", "[6.123234e-17 1.000000e+00]\n", "[ 0.99992218 -0.01247524]\n", "-0.012475239731228712\n", "\n", "[0.70710678 0.70710678]\n", "[ 0.99992218 -0.01247524]\n", "0.6982304283525206\n", "\n", "[1. 0.]\n", "[ 0.99992218 -0.01247524]\n", "0.999922181168939\n", "\n", "[ 0.70710678 -0.70710678]\n", "[ 0.99992218 -0.01247524]\n", "0.7158730815742801\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[ 0.99992218 -0.01247524]\n", "0.012475239731228834\n", "\n", "[-0.70710678 -0.70710678]\n", "[ 0.99992218 -0.01247524]\n", "-0.6982304283525205\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[ 0.99992218 -0.01247524]\n", "-0.999922181168939\n", "\n", "[-0.70710678 0.70710678]\n", "[ 0.99992218 -0.01247524]\n", "-0.7158730815742802\n", "\n", "2\n", "동\n", "[6.123234e-17 1.000000e+00]\n", "[ 0.99986806 -0.01624397]\n", "-0.016243967759571678\n", "\n", "[0.70710678 0.70710678]\n", "[ 0.99986806 -0.01624397]\n", "0.6955272643837823\n", "\n", "[1. 0.]\n", "[ 0.99986806 -0.01624397]\n", "0.999868058051374\n", "\n", "[ 0.70710678 -0.70710678]\n", "[ 0.99986806 -0.01624397]\n", "0.71849970389612\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[ 0.99986806 -0.01624397]\n", "0.016243967759571803\n", "\n", "[-0.70710678 -0.70710678]\n", "[ 0.99986806 -0.01624397]\n", "-0.6955272643837822\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[ 0.99986806 -0.01624397]\n", "-0.999868058051374\n", "\n", "[-0.70710678 0.70710678]\n", "[ 0.99986806 -0.01624397]\n", "-0.7184997038961201\n", "\n", "6\n", "서\n", "[6.123234e-17 1.000000e+00]\n", "[-0.99986809 0.01624217]\n", "0.016242171657398802\n", "\n", "[0.70710678 0.70710678]\n", "[-0.99986809 0.01624217]\n", "-0.6955285550518142\n", "\n", "[1. 0.]\n", "[-0.99986809 0.01624217]\n", "-0.9998680872294363\n", "\n", "[ 0.70710678 -0.70710678]\n", "[-0.99986809 0.01624217]\n", "-0.7184984544920996\n", "\n", "[ 6.123234e-17 -1.000000e+00]\n", "[-0.99986809 0.01624217]\n", "-0.016242171657398927\n", "\n", "[-0.70710678 -0.70710678]\n", "[-0.99986809 0.01624217]\n", "0.6955285550518141\n", "\n", "[-1.0000000e+00 -1.2246468e-16]\n", "[-0.99986809 0.01624217]\n", "0.9998680872294363\n", "\n", "[-0.70710678 0.70710678]\n", "[-0.99986809 0.01624217]\n", "0.7184984544920997\n", "\n" ] }, { "data": { "text/plain": [ "{'-571500487_01': '남',\n", " '-571542797_02': '북',\n", " '571510153_02': '동',\n", " '571545870_02': '서'}" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "\n", "# dictionary that maps dire(북) to dir(np.array([0,1]))\n", "self.dire2dir = dict()\n", "theta = np.pi/2\n", "for dire in self.directions:\n", " self.dire2dir[dire] = np.array([np.cos(theta), np.sin(theta)])\n", " theta -= np.pi/4\n", "\n", "# dictionary that maps node_id and inc_edge_id to direction(북)\n", "self.node_id2inc_edge2dire = dict()\n", "for node_id in self.parent_ids:\n", " inc_edge2dire = dict()\n", " node = self.net.getNode(node_id)\n", " inc_edges = [inc_edge.getID() for inc_edge in node.getIncoming()]\n", " out_edges = [out_edge.getID() for out_edge in node.getOutgoing()]\n", "\n", " for inc_edge in inc_edges:\n", " inc_dir_true = self.node_id2inc_edge2dir[node_id][inc_edge]\n", " inc_dirs = [self.dire2dir[inc_dire] for inc_dire in self.directions]\n", " inc_index = np.array([np.dot(inc_dir, inc_dir_true) for inc_dir in inc_dirs]).argmax()\n", " print(inc_index)\n", " print(self.directions[inc_index])\n", " for inc_dir in inc_dirs:\n", " print(inc_dir)\n", " print(inc_dir_true)\n", " print(np.dot(inc_dir, inc_dir_true))\n", " print()\n", " inc_edge2dire[inc_edge] = self.directions[inc_index]\n", " self.node_id2inc_edge2dire[node_id] = inc_edge2dire\n", "self.node_id2inc_edge2dire['i0']" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "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": 121, "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": 120, "metadata": {}, "outputs": [], "source": [ "self.match6 = match6\n", "self.matching=matching" ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [ { "ename": "KeyError", "evalue": "'i0'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[122], line 17\u001b[0m\n\u001b[0;32m 15\u001b[0m out_edge \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnet\u001b[38;5;241m.\u001b[39mgetEdge(out_edge)\n\u001b[0;32m 16\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m conn \u001b[38;5;129;01min\u001b[39;00m inc_edge\u001b[38;5;241m.\u001b[39mgetConnections(out_edge):\n\u001b[1;32m---> 17\u001b[0m \u001b[43mnode2allocated_conns\u001b[49m\u001b[43m[\u001b[49m\u001b[43mnode_id\u001b[49m\u001b[43m]\u001b[49m\u001b[38;5;241m.\u001b[39mappend(conn)\n\u001b[0;32m 18\u001b[0m index \u001b[38;5;241m=\u001b[39m conn\u001b[38;5;241m.\u001b[39mgetTLLinkIndex()\n\u001b[0;32m 19\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m index \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m:\n", "\u001b[1;31mKeyError\u001b[0m: 'i0'" ] } ], "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 }