신호생성 repo (24. 1. 5 ~).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

195 lines
5.0 KiB

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import os, sys, copy, argparse, json, pickle\n",
"import sumolib, traci\n",
"from tqdm import tqdm\n",
"from datetime import datetime\n",
"path_root = os.path.dirname(os.path.dirname(os.path.abspath('.')))\n",
"path_scr = os.path.join(path_root, 'scripts')\n",
"sys.path.append(path_scr)\n",
"from preprocess_daily import DailyPreprocessor\n",
"# from generate_signals import SignalGenerator"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"self = DailyPreprocessor(config_name = 'test_0731')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1. 데이터를 로드합니다.\n",
"1-1. 네트워크가 로드되었습니다.\n",
"1-2. 테이블들이 로드되었습니다.\n",
"1-5. 테이블을 표준화했습니다.\n",
"1-6. 주요 객체 (리스트, 딕셔너리)들을 저장했습니다.\n"
]
}
],
"source": [
"# 1. 데이터 불러오기\n",
"self.load_data()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2. 중간산출물을 생성합니다.\n",
"2-1. 매칭 테이블들을 생성했습니다.\n",
"2-2. 초기화 신호가 지정되었습니다. (우회전 : g)\n",
"2-3. 유턴 인덱스 / 비보호좌회전 인덱스를 지정했습니다.\n",
"2-4. 직진 및 좌회전(G)을 배정했습니다.\n",
"2-5. 모든 현시에서 적색신호인 경우에 대한 처리 완료\n",
"2-6. node2num_cycles.json를 저장했습니다.\n"
]
}
],
"source": [
"self.get_intermediates()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[436, 437, 438, 442, 443, 455, 456, 457, 458]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"self.inter_nos"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"40 gGGGgrrrrrgggggrrrrrrrgrrrr\n",
"41 grrrgGGrrrgggggrrrrrrrgrrrr\n",
"42 gGGGgrrrrrgggggrrrrrrrgrrrr\n",
"43 grrrgrrrrrgggggGGGGGrrgrrrr\n",
"44 grrrgrrrrrgggggrrrrrGGgrrrr\n",
"45 grrrgrrrrrgggggGGGGGrrgrrrr\n",
"46 grrrgrrrrrgggggrrrrrrrgrrrG\n",
"47 grrrgrrrrrgggggrrrrrrrgGGGr\n",
"48 grrrgrrGGrgggggrrrrrrrgrrrr\n",
"49 grrrgrrrrGgggggrrrrrrrgrrrr\n",
"50 grrrgrrGGrgggggrrrrrrrgrrrr\n",
"51 grrrgrrrrGgggggrrrrrrrgrrrr\n",
"Name: state, dtype: object"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m6 = self.match6[self.match6.node_id=='106332']\n",
"m6.state"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"106231 set()\n",
"106234 set()\n",
"106238 set()\n",
"106332 set()\n",
"106350 set()\n",
"107587 set()\n",
"108769 set()\n",
"109295 set()\n",
"109296 set()\n",
"109297 set()\n",
"109313 set()\n",
"109333 set()\n",
"109836 set()\n",
"109901 set()\n",
"109986 set()\n"
]
}
],
"source": [
"# match6에 적용\n",
"for node_id, group in self.match6.groupby('node_id'):\n",
" state_length = len(group.iloc[0].state)\n",
" consistent_length = all([len(state)==state_length for state in group.state])\n",
" # state 길이 일정 여부\n",
" if not consistent_length:\n",
" print(f\"node_id : {node_id}에 대하여 state 길이가 일정하지 않습니다.\")\n",
" any_non_red_indices = set()\n",
" for state in group.state:\n",
" state = list(state)\n",
" any_non_red_indices.update({index for index, char in enumerate(state) if not char == 'r'})\n",
" # 모든 현시에서 적색신호인 인덱스 목록\n",
" all_red_indices = set(range(state_length)) - any_non_red_indices\n",
" print(node_id, all_red_indices)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "siggen_env",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}