ํผ๋์๋ด๋ ๊ทธ๋ฆฌ๋ ์๋ ์ถ์ถ ๋ฐ ๊ฐํํ์ต ๊ธฐ๋ฐ ์ ๋๋ฑ ์ ์ด๋ฅผ ํตํ ํ์ฌ ๋ํผ ์๋ฎฌ๋ ์ด์
์กฐ์์ฐ ยท ์๊ฐ์ ยท ์ฃผ์์ ยท ๊น๋ณ์ (์์ธ๊ณผํ๊ธฐ์ ๋ํ๊ต ์ฐฝ์์ตํฉ๋ํ ์ธ๊ณต์ง๋ฅ์์ฉํ๊ณผ)
ํผ๋์๋ด๋ ์ด๋ฏธ์ง์์ ๊ทธ๋ฆฌ๋ ๋งต์ ์๋์ผ๋ก ์ถ์ถํ๋ ์์์ฒ๋ฆฌ ๋ชจ๋๊ณผ,
๊ฐํํ์ต(PPO)์ผ๋ก ์ ๋๋ฑ ๋ฐฉํฅ์ ์ค์๊ฐ ์ ์ดํ๋ ๊ฐํํ์ต ๋ชจ๋๋ก ๊ตฌ์ฑ๋
3๋จ๊ณ ํ๋ ์์ํฌ๋ฅผ ์ ์ํ๋ค. ๊ฐ ๋ชจ๋์ ๋
๋ฆฝ์ ์ผ๋ก ์ค๊ณยท๊ฒ์ฆํ์ผ๋ฉฐ, ๋ชจ๋ ๊ฐ
๊ฒฐํฉ์ ์๋์์ ๋ฐ๋ก ์ค๋ช
ํ๋ฏ ์์ง ์ด๋ค์ง์ง ์์๋ค(์์ธ: "ํ๊ณ ๋ฐ ํฅํ
์ฐ๊ตฌ" ์ ).
๊ธฐ์กด ์ ์ ์ ๋๋ฑ๊ณผ ๋ฌ๋ฆฌ ํ์ฌ ํ์ฐยท๊ตฐ์ค ๋ฐ์ง์ ๋ฐ์ํ ๋์ ๊ฒฝ๋ก ๊ฐฑ์ ์ด ๊ฐ๋ฅํ๊ณ , ๋ฐฉ์ฌ ์์์ ์ธ์ง์ ๋ถํ๋ ๋ฎ์ถ๋ค.
[ํผ๋์๋ด๋ ์ด๋ฏธ์ง] โ Stage 1์ ์ด ์ฌ์ง ํ ์ฅ์ผ๋ก ๋
๋ฆฝ ๊ฒ์ฆ๋จ
โ Stage 1: OpenCV ์์ ๋ง์คํน โ ๊ทธ๋ฆฌ๋ ๋ณํ
โผ
[40ร25 ๊ทธ๋ฆฌ๋ ๋งต (grid_map.npy)] โ ์ค์ ๋ก๋ ์๋ ํ์ดํ๋ก ์ ์ด์ด์ง(๋ฏธํตํฉ)
โ Stage 2: ์ปค๋ฆฌํ๋ผ ๊ธฐ๋ฐ PPO ๊ฐํํ์ต Stage 2๊ฐ ํ์ต์ ์ฐ๋ ๊ทธ๋ฆฌ๋๋
โผ Unity ์ฌ์์ ๋ณ๋๋ก ๋ง๋ ๊ฒ
[ํ์ต๋ PPO ์ ์ฑ
: 3๊ฐ ์ฐ์ ํ๋์ผ๋ก ์ ๋๋ฑ ์ค์๊ฐ ์ ์ด]
โ Stage 3: Python ์๊ฐํ / Unity 3D ์๋ฎฌ๋ ์ด์
โผ
[2D GIF ๊ฒ์ฆ] ยทยทยทยทยทยทยทยทยทยทยทยทยทยท [Unity ๊ธฐ๋ฐ 3D ์๊ฐํ]
Stage 1๊ณผ Stage 2๋ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฒ์ฆ๋๋ค. ์ง๊ธ ํ์ต๋ ์ ์ฑ ์ด ์ฐ๋ ๊ทธ๋ฆฌ๋๋ Unity ์๋ํฐ์์ ๋ง๋ ์ฌ์ ๋ด๋ณด๋ธ ๊ฒ์ด๊ณ , Stage 1(์ฌ์งโ๊ทธ๋ฆฌ๋ ์๋ ์ถ์ถ)์ ๊ฐ์ ๊ฑด๋ฌผ ์ฌ์ง ํ ์ฅ์ ๋ณ๋๋ก ๊ฒ์ฆํ๋ค(์์ฒด ์ถ๊ตฌ ๋๋ฌ ๊ฐ๋ฅ๋ฅ 100%, ์ถ๊ตฌ ๊ฒ์ถ 100%. ์์ธ: Stage 1 ์ถ์ถ ์ ํ๋ ํ๊ฐ). ๋ ๊ตฌ์ฑ ์์๋ฅผ ํ๋๋ก ์๋ ๊ฑด ๋ค์ ๋จ๊ณ๋ค.
๋์ ๋ํผ ์ ๋(dynamic evacuation guidance)์ ๊ฐํํ์ต์ ์ ์ฉํ ์ ํ ์ฐ๊ตฌ์ ๋น๊ตํ๋ค. ์ฐจ๋ณ์ ์ ๋ ๊ฐ์ง๋ค: (1) ๊ทธ๋ฆฌ๋ ํฌ๊ธฐ์ ๋ ๋ฆฝ์ ์ธ 4์ฐจ์ ๊ณ ์ ๊ด์ธก(F1, F2, F14, F15 โ ํ์ฌ ์ํ๊ณผ ๊ทธ ๋ณํ์จ๋ง ๋จ๊ธด ์ถ์ํ, ์์ธ๋ ์๋ "๊ด์ธก ๊ณต๊ฐ" ์ )์ผ๋ก ์ธ์ ์ N๊ณผ ๋ฌด๊ดํ๊ฒ ์ถ๋ก ์๋๊ฐ ์ผ์ , (2) A*๋ฟ ์๋๋ผ ์ํ์ ๋ณด๋ฅผ ๋์ผํ๊ฒ ์ฌ์ฉํ๋ ๋นํ์ต Hazard-aware BFS๊น์ง ๋น๊ตํด "๊ฐํํ์ต์ด ๊ธฐ์ฌํ ๋ชซ"๊ณผ "์ํ์ ๋ณด ์ฌ์ฉ ์์ฒด๊ฐ ๊ธฐ์ฌํ ๋ชซ"์ ๋ถ๋ฆฌํด์ ์ ์.
| ์ฐ๊ตฌ | ์ ๊ทผ ๋ฐฉ๋ฒ | ์ด ํ๋ก์ ํธ์์ ์ฐจ์ด |
|---|---|---|
| Xie et al. (2025) [3] | CTM ๊ธฐ๋ฐ ๋ฉ์กฐ์ค์ฝํฝ ๊ตฐ์ค ๋ชจ๋ธ + PyroSim ํ์ฌ ์๋ฎฌ๋ ์ด์ + QMIX(MARL)๋ก ๋์ ํ์งํ ์ต์ ํ | ๊ฐ์ฅ ๊ทผ์ ํ ์ ํ ์ฐ๊ตฌ(๋์ ์ ๋๋ฑ + ํ์ฌ ์ ํ + RL). ๋ฉํฐ์์ด์ ํธ QMIX๋ก ํ์งํ ์์ฒด๋ฅผ ์์ด์ ํธํํ๋ ๋ฐ๋ฉด, ๋ณธ ํ๋ก์ ํธ๋ ๋จ์ผ ์ ์ฑ ์ด ์ ์ญ ์ถ๊ตฌ ๊ฐ์ค์น๋ฅผ ์ถ๋ ฅํ๋ ๋จ์ํ ๊ตฌ์กฐ |
| Xu et al. (2021) [4] | ๋ค์ค ์ถ๊ตฌ ๋ํผ๋ฅผ DRL๋ก ์๋ฎฌ๋ ์ด์ (Transactions in GIS) | ํ์ฌ ํ์ฐยท๋ณ๋ชฉ์ ๋ช ์์ ์ผ๋ก ๋ชจ๋ธ๋งํ์ง ์๊ณ ์ ์ ๋ค์ค ์ถ๊ตฌ ์ ํ ๋ฌธ์ ์ ๊ฐ๊น์ |
| Zhang, Chai & Lykotrafitis (2021) [5] | Social force model ๊ธฐ๋ฐ particle dynamics ํ๊ฒฝ + DRL(Dyna-Q), ์ค๋ชฉ ์ฅ์ ๋ฌผ ํํผ | ๊ฐ๋ณ ์์ด์ ํธ ๊ฒฝ๋ก๊ณํ์ด ๋ชฉ์ . ๋ณธ ํ๋ก์ ํธ์ฒ๋ผ "์ ๋ ์์คํ (์ถ๊ตฌ ๊ฐ์ค์น)"์ ํ์ตํ๋ ๊ฒ ์๋๋ผ ์์ด์ ํธ ์์ฒด์ ์ด๋ ์ ์ฑ ์ ํ์ต |
| Lee et al. (2025) [2] | F_A*(A* ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฐ ํ์ฌ ์ํฉ ๋ํผ ๊ฒฝ๋ก ํ์) | ํ์ต ์๋ ํด๋ฆฌ์คํฑ ๊ฒฝ๋กํ์. ๋ณธ ํ๋ก์ ํธ์ A* ๋ฒ ์ด์ค๋ผ์ธ๊ณผ ๊ฐ์ ๊ณ์ด, RL ๋น๊ต ๋์ |
๋ฐ์ดํฐ ๋ฐฉ์ ๋น๊ต: ์ 4ํธ ๋ชจ๋ ์ค์ ํ์ฌยท๊ตฐ์ค raw ๋ฐ์ดํฐ๋ฅผ ์ฐ์ง ์๋๋ค. ๊ฐ์ฅ ๊ทผ์ ํ ์ ํ์ฐ๊ตฌ์ธ Xie et al. (2025)๋ ์ค์ ๋ ธ๋๋ฐฉ ๊ฑด๋ฌผ์ ํ๋ฉด๋๋ง ์ค์ฌ์ฉํ๊ณ ํ์ฌยท๊ตฐ์ค ์์ฒด๋ CTM+PyroSim ์๋ฎฌ๋ ์ด์ ์ด๋ค(๋ณธ ํ๋ก์ ํธ๊ฐ Unity ํ๋ฉด๋๋ ์ค์ฌ์ฉ, ํ์ฌยท๊ตฐ์ค์ ์๋ฎฌ๋ ์ด์ ์ธ ๊ตฌ์กฐ์ ๋์ผ). ์์ ์๋ฎฌ๋ ์ด์ ์ด ์ด ๋์น(RL ๊ธฐ๋ฐ ํ์ฌ/๊ตฐ์ค ๋ํผ)์ ํ์ค ๊ดํ์ด๋ค.
์ค์ ํผ๋์๋ด๋ ์ฌ์ง์ ์ฒ๋ฆฌํด base_grid.npy(40ร25 ์ ์ ๋ฐฐ์ด)๋ฅผ ์์ฑํ๋ค.
ํ์ ํ์ดํ๋ผ์ธ์ build_base_grid.py(Hough Line ๊ธฐ๋ฐ)๋ค โ
gridcell_extract.py๋ ์ด ํ๋ก์ ํธ ์ด๊ธฐ์ ํ๋กํ ํ์
์ผ๋ก, ์ถ๊ตฌยท๋ฌธ ๊ฒ์ถ์ด
์๊ณ ๋ฒฝ ๊ฒ์ถ๋ ํฌ๊ธฐ ๊ธฐ๋ฐ์ด๋ผ ํ์ฅ์ค ํฝํ ๊ทธ๋จ ๊ฐ์ ๊ณก์ ํ ์์ด์ฝ์ ๋ฒฝ์ผ๋ก
์คํํ๋ ๋ฌธ์ ๊ฐ ์์ด ๋์ฒด๋๋ค.
| ๋จ๊ณ | ์ฒ๋ฆฌ ๋ด์ฉ |
|---|---|
| ์์ ๋ง์คํน | HSV ๋ฒ์๋ก ๋นจ๊ฐยทํ๋ ๋ ธ์ด์ฆ ์ ๊ฑฐ |
| ์ด๋์ด ํฝ์ ์ด์งํ | ๋ฒฝ ํ๋ณด ์ถ์ถ(๋ฒฝยท์นธ๋ง์ด) |
| ์ง์ ์ฑ๋ถ ํํฐ๋ง | Hough Line Transform์ผ๋ก ์ถ ์ ๋ ฌ ์ง์ ๋ง ๋ฒฝ์ผ๋ก ์ธ์ , ๊ณก์ ํ ์์ด์ฝ ์คํ ์ ๊ฑฐ |
| ์ธ๊ณฝ ๋ง์คํน | ๊ฑด๋ฌผ ์ธ๊ณฝ ์ปจํฌ์ด ๋ฐ์ WALL๋ก ์ง์ (์ด์ดํ ๋ง์คํฌ ๊ธฐ์ค) |
| ๋ฌธ ๊ธฐํธ ๊ฒ์ถ | ํ ํ๋ฆฟ ๋งค์นญ์ผ๋ก ๋ฌธ ์ ๊ฐ๋ฐฉ(์ด ๋๋ฉด ์ ์ฉ, ์ผ๋ฐํ ์ ๋จ) |
| ์ถ๊ตฌ ๊ฒ์ถ | ๋ น์ ํ์ง ์์์ผ๋ก EXIT ์๋ณ |
| ๊ทธ๋ฆฌ๋ ๋งคํ | ํฝ์ ์์ญ โ 40ร25 ์ (HALL / WALL / EXIT / ROOM) |
cd stage1
python build_base_grid.py
# ์ถ๋ ฅ: base_grid.npy, base_grid_vis.jpg์ ํ๋(WALL IoU 0.658, ์ถ๊ตฌ ๋๋ฌ๋ฅ 100% ๋ฑ) ์์ธ๋ "ํ๊ณ ๋ฐ ํฅํ ์ฐ๊ตฌ" ์ ๊ณผ Stage 1 ์ถ์ถ ์ ํ๋ ํ๊ฐ ์ฐธ๊ณ .
gridcell_extract.py๋ ํ๊ท ๋น๊ต์ฉ์ผ๋ก๋ง ์ ์ฅ์์ ๋จ์์๋ค.
LAYER 1: ์
๋ ฅ ๋ฐ ๋งคํ
๊ทธ๋ฆฌ๋ ๋งต (40ร25) + ํ์ฌยท์ฐ๊ธฐยท๊ตฐ์ค ์ํ
โ
LAYER 2: ์ ์ฑ
๋ฐ ์์ฌ ๊ฒฐ์ (PPO)
๊ด์ธก ๋ฒกํฐ F1, F2, F14, F15 (4์ฐจ์) โ PPO ์ ๊ฒฝ๋ง
โ [exit_A_cost, exit_B_cost, crowd_weight]
โ
LAYER 3: ๋ฐฉํฅ ์ต์ ํ (Dijkstra Cost Map)
ํ์ฌ ์ํ + ์ฐ๊ธฐ ์ํ + ๊ตฐ์ค ๋ฐ๋ โ ๋น์ฉ ๋งต
Dijkstra ๊ฒฝ๋ก ํ์ โ ๊ฐ ์
์ต์ ๋ฐฉํฅ ๊ฒฐ์
โ
LAYER 4: ์คํ ๋ฐ ํผ๋๋ฐฑ
์ ๋๋ฑ ๋ฐฉํฅ ๊ฐฑ์ โ ๊ตฐ์ค ์ด๋ โ ์์กด์จ ๋ณด์ โ PPO ํ์ต
ํ๋ก๋์ ๋ชจ๋ธ์ 4์ฐจ์ ๊ด์ธก์ ์ด๋ค. ์๋ ์ค๊ณ๋ 3์ฑ๋ ์ํ(ํ์ฌยท๊ตฐ์คยท์ฐ๊ธฐ)๋ฅผ 15๊ฐ ์ค์นผ๋ผ๋ก ์์ฝํ ๊ด์ธก์ด์์ผ๋, ๊ฐ๋ณยท๊ทธ๋ฃน ๋จ์ ๋ง์คํน(ablation)์ผ๋ก ์ ๋ณด ์ค๋ณต์ฑ์ ๊ฒ์ฆํ ๊ฒฐ๊ณผ 11๊ฐ ํผ์ฒ(F3~F13)๋ฅผ ์ ๊ฑฐํด๋ ์์กด์จ์ด ํต๊ณ์ ์ผ๋ก ๊ตฌ๋ถ๋์ง ์์๋ค. ์ด ๊ทผ๊ฑฐ๋ก ํ์ฌ ์ํ๊ณผ ๊ทธ ๋ณํ์จ๋ง ๋จ๊ธด 4์ฐจ์์ผ๋ก ์ฒ์๋ถํฐ ์ฌํ์ตํ๊ณ , 15์ฐจ์ ๋ชจ๋ธ๊ณผ ๋๋ฑํ ์ฑ๋ฅ์ ํ์ธํ๋ค(์์ธ ๊ฒฝ์: ํผ์ฒ ๊ณต๊ฐ ์ต์ ํ ๊ณํ).
| ์ธ๋ฑ์ค | ํผ์ฒ | ๋ด์ฉ |
|---|---|---|
| F1 | ์ถ๊ตฌ A ํ์ฌ ์ํ | ํ์ฌโ์ถ๊ตฌA ์ต๋จ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ ์์ ๋ (1=์์ , 0=์ํ) |
| F2 | ์ถ๊ตฌ B ํ์ฌ ์ํ | ํ์ฌโ์ถ๊ตฌB ์ต๋จ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ ์์ ๋ |
| F14 | ์ถ๊ตฌ A ์ํ ๋ณํ์จ | ์ด์ ์คํ ๋๋น F1 ๊ฐ์๋ |
| F15 | ์ถ๊ตฌ B ์ํ ๋ณํ์จ | ์ด์ ์คํ ๋๋น F2 ๊ฐ์๋ |
์ฝ๋์์๋
FireEvacEnv(feature_set="reduced")๋ก ํ์ฑํํ๋ค(๊ธฐ๋ณธ๊ฐ"full"์ ๊ธฐ์กด 15์ฐจ์ ๊ทธ๋๋ก ์ ์งํด ํ์ ํธํ). ๊ทธ๋ฆฌ๋ ํฌ๊ธฐยท๋ํผ์ ์์ ๋ฌด๊ดํ๊ฒ ์ฐจ์์ด ๊ณ ์ ๋๋ฏ๋ก Unity ์ด์์๋ ์ ๋ฆฌํ๋ค.
์๋ 15์ฐจ์ ์ ์ฒด ์ ์ (feature_set="full", ๋น๊ต/ํ๊ท ํ ์คํธ์ฉ์ผ๋ก ์ ์ง)
| ์ธ๋ฑ์ค | ํผ์ฒ | ๋ด์ฉ |
|---|---|---|
| F1 | ์ถ๊ตฌ A ํ์ฌ ์ํ | ํ์ฌโ์ถ๊ตฌA ์ต๋จ๊ฑฐ๋ฆฌ / 20 (1=์์ , 0=์ํ) |
| F2 | ์ถ๊ตฌ B ํ์ฌ ์ํ | ํ์ฌโ์ถ๊ตฌB ์ต๋จ๊ฑฐ๋ฆฌ / 20 |
| F3 | ์ถ๊ตฌ A ์ ํธ ๋น์จ | ์ถ๊ตฌ A๊ฐ ๋ ๊ฐ๊น์ด ์์กด์ ๋น์จ |
| F4 | ํ์ถ ์๋ฃ ๋น์จ | |
| F5 | ์ฌ๋ง ๋น์จ | |
| F6 | ์๊ฐ ๊ฒฝ๊ณผ ๋น์จ (๊ธด๊ธ๋) | |
| F7 | ์ถ๊ตฌ A ๊ทผ์ ํผ์ก๋ | BFS ๊ฑฐ๋ฆฌ 4 ์ด๋ด ์์กด์ ๋น์จ |
| F8 | ์ถ๊ตฌ B ๊ทผ์ ํผ์ก๋ | BFS ๊ฑฐ๋ฆฌ 4 ์ด๋ด ์์กด์ ๋น์จ |
| F9 | ํ๊ท ๊ณตํฉ ์์ค | Helbing (2000) |
| F10 | ์์กด์โ์ถ๊ตฌ A ํ๊ท BFS ๊ฑฐ๋ฆฌ | / 50 ์ ๊ทํ |
| F11 | ์์กด์โ์ถ๊ตฌ B ํ๊ท BFS ๊ฑฐ๋ฆฌ | / 50 ์ ๊ทํ |
| F12 | ํ์ฌ ๋ฌด๊ฒ์ค์ฌ ํ | / ROWS |
| F13 | ํ์ฌ ๋ฌด๊ฒ์ค์ฌ ์ด | / COLS |
| F14 | ์ถ๊ตฌ A ์ํ ๋ณํ์จ | ์ด์ ์คํ ๋๋น F1 ๊ฐ์๋ |
| F15 | ์ถ๊ตฌ B ์ํ ๋ณํ์จ | ์ด์ ์คํ ๋๋น F2 ๊ฐ์๋ |
F7/F8(์ถ๊ตฌ ๊ทผ์ ํผ์ก๋)์ ํฌํจํ ๊ด์ธก ํด๋ฌ์คํฐ๋ฅผ ํต์งธ๋ก ๊ฐ๋ ค๋ ์์กด์จ ๋ํญ์ด ยฑ1.6%p ์ด๋ด์๋ค โ "PPO๊ฐ F7/F8์ ์ธ์ํด ๋ณ๋ชฉ์ ํํผํ๋ค"๋ ์ธ๊ณผ ์ฃผ์ฅ์ ๋ฐ์ดํฐ๋ก ๋ท๋ฐ์นจ๋์ง ์๋๋ค(์๊ด๋ ๋ค๋ฅธ ์ฑ๋์ธ F3/F10/F11์ด ๊ฐ์ ์ ๋ณด๋ฅผ ๋์ฒดํ ์ ์์ด์๋ก ์ถ์ ). ์ด๊ฒ ๋ฐ๋ก F3~F13์ ์ ๊ฑฐํด๋ ์ฑ๋ฅ์ด ์ ์ง๋ ์ด์ ์ด์, 4์ฐจ์ ์ถ์ํ์ ์ฑํํ ๊ทผ๊ฑฐ๋ค.
์ต๊ทผ 50 ์ํผ์๋ ํ๊ท ํ์ถ์๋ฃ์จ์ด --curriculum-threshold(๋จ์ผ ๊ฐ, ์
๋จ๊ณ ๋์ผ ์ ์ฉ) ์ด์์ด๋ฉด ๋ค์ ์๋๋ฆฌ์ค๋ก ์๋ ์ง๊ธํ๋ค. ํ์ ๊ฐ์
0.85๋ค โ ์๋ ๊ธฐ๋ณธ๊ฐ 0.90์ผ๋ก๋ 3.5M ์คํ
์ ๋๊น์ง ๋๋ ค๋ S4 ์น๊ธ์ด
ํ ๋ฒ๋ ์ผ์ด๋์ง ์์, 0.85๋ก ๋ฎ์ถฐ ์ฌ๊ฒ์ฆํ๋ค(์์ธ:
Hazard-Awareness Ablation ํ์ ๋ถ์ 7).
| ๋จ๊ณ | ์๋๋ฆฌ์ค | ์ธ์ | ํ์ฌ ์์น | ํ์ฐ ํ๋ฅ |
|---|---|---|---|---|
| S1 | ๊ธฐ๋ณธ ํ์ถ | 20๋ช | ๊ณ ์ ์์น | 3% |
| S2 | EXIT A ์ํ | 40๋ช | ์ฐ์ธก ๊ตฌ์ญ ์๋จ | 12% |
| S3 | ์ง์ ๋ก ์ฐจ๋จ | 40๋ช | EXIT A ์ ๊ทผ๋ก | 18% |
| S4 | ์๋ฐฉํฅ ๋์ ์ํ | 40๋ช | ์ถ๊ตฌ AยทB ๊ตฌ์ญ | 15% |
์ปค๋ฆฌํ๋ผ์ S1~S4๊น์ง๋ง ์งํ๋๋ฉฐ(
--max-scenario 4), S5(EXIT B ์ํ)๋ ํ์ต์์ ์์ ํ ์ ์ธํด out-of-distribution ์ผ๋ฐํ ํ ์คํธ๋ก ๋จ๊ฒจ๋๋ค. ์์ธ๋ ์คํ ๊ฒฐ๊ณผ ์ ์ฐธ๊ณ .
| ์ด๋ฒคํธ | ๋ณด์ |
|---|---|
| EXIT ํ์ถ ์ฑ๊ณต | +20.0 |
| ์ถ๊ตฌ ๋ฐฉํฅ ์ ๊ทผ (urgency ๋ฐฐ์จ ร1.0~ร3.0) | +ฮ |
| ํ์ฌยท์ฐ๊ธฐ ์ฌ๋ง | โ20.0 |
| ์ํผ์๋ ์ข ๋ฃ ์ ๋ฏธํ์ถ 1๋ช ๋น | โ15.0 |
| ๋ ์ถ๊ตฌ ๋ชจ๋ ์ฌ์ฉ (๋ถ์ฐ ๋ณด๋์ค) | +15.0 |
urgency ๋ฐฐ์จ: ์คํ ๊ฒฝ๊ณผ์ ๋ฐ๋ผ ร1.0 โ ร3.0์ผ๋ก ์ฆ๊ฐ (ํ์์์ ์ต์ )
๋ถ์ฐ ๋ณด๋์ค๊ฐ ์์ด๋ ์ค์ ํ์ต๋ ์ ์ฑ ์ ๊ท ํ๋ณด๋ค ์ฒ๋ฆฌ ํจ์จ์ ์ฐ์ ํ๋ค (Exit Balance ์ค์ธก ๊ฒฐ๊ณผ๋ ์คํ ๊ฒฐ๊ณผ ์ ์ฐธ๊ณ ). ๋ค๋ฅธ ๋ณด์ ํญ๋ชฉ(์์กดยท์ฌ๋งยท ์๋ฅ ํ๋ํฐ)์ ํฌ๊ธฐ๊ฐ ๋ ์ปค์, ์ต์ข ์ ์ผ๋ก๋ "๊ณ ๋ฅด๊ฒ ๋๋๊ธฐ"๋ณด๋ค "๋ ๋์ ์ชฝ์ผ๋ก ๋ชฐ์ ๋นจ๋ฆฌ ์ฒ๋ฆฌํ๊ธฐ"๊ฐ ์ฐ์ธํ ์ ๋ต์ผ๋ก ์๋ ดํ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
์กฐ๊ฑด: 30 ์ํผ์๋ | EXIT_CAPACITY=2 / CELL_CAPACITY=2(์ฝ๋ ํ์ฌ๊ฐ. ์ฃผ์์๋ "ํ์ต์ 1๋ก ์งํ"์ด๋ผ๊ณ ์ ํ ์์ผ๋ ๋ฏธ๊ฒ์ฆ โ ์ต์ข ์ ์ถ ์ ์ค์ ์ฌ์ฉ๊ฐ ํ์ ํ์, paper-review-todo ์ฐธ๊ณ ) | 4์ฐจ์ ์ถ์ ๊ด์ธก(
feature_set="reduced")์ผ๋ก PPO 3,506,176 ์คํ ํ์ต(์ปค๋ฆฌํ๋ผ S1โS4, threshold=0.85,--max-scenario 4๋ก S5๋ ํ์ต์์ ์ ์ธ) |--seed 42ํ์ด๋ง(๋ค ์ ๋ต์ด ๋งค ์ํผ์๋ ๋์ผํ ํ์ฌยท์์ ์กฐ๊ฑด์ ๊ฒช์)
๋ค ๊ฐ์ง ์ ๋ ์ ๋ต์ ๋น๊ตํ๋ค. ์ ์ ์ ๋๋ฑ์ ์ต์ด 1ํ ๊ณ์ฐํ ๊ฒฝ๋ก๋ฅผ
ํ์ฌยท๊ตฐ์ค ์ํ์ ๋ฌด๊ดํ๊ฒ ๊ณ ์ ํ๋ค(EC directive 92/58/EEC ์ค์ ํ์ค
ํ์งํ๊ณผ ๊ฐ์ ์๋ฆฌ๋ก, ๋์ ์ ๋๋ฑ ๋ฌธํ์ ํ์ค ๋น๊ต๊ตฐ์ด๋ค). **A***๋ ๋งค ์คํ
์ฌํ์ํ๋ ํ์ฌ๋ฅผ ๋ฌด์ํ๋ ์์ ์ต๋จ๊ฒฝ๋ก(Pure A*, Manhattan ํด๋ฆฌ์คํฑ).
Hazard-aware BFS๋ ํ์ฌ ์
์ ํต๊ณผ ๋ถ๊ฐ๋ก ์ฐจ๋จํ ์ฑ ๋งค ์คํ
์ฌํ์ํ๋
๋นํ์ต ํด๋ฆฌ์คํฑ์ผ๋ก, ์ํ์ ๋ณด๋ฅผ PPO์ ๋์ผํ ์์ค์ผ๋ก ์ฌ์ฉํ๋ค(์ฝ๋์
astar_baseline.py์ bfs_action() โ ํจ์๋ช
๊ณผ ๋ฌ๋ฆฌ ํด๋ฆฌ์คํฑ์ด ์๋ ์์
BFS๋ค). **์ ์ ์ ์ฑ
(PPO)**์ 4์ฐจ์ ๊ด์ธก์ผ๋ก ํ์ต๋ ์ ์ฑ
. ์ ์ ์ ๋๋ฑยทA*
๋ชจ๋ hazard_aware=False๋ก ํ๊ฐํด ์ค์ ๋ก ํ์ฌ๋ฅผ ๋ฌด์ํ๋๋ก ๊ตฌํํ๋ค(๊ตฌํ
์ธ๋ถ์ฌํญ์ Hazard-Awareness Ablation ์ฐธ๊ณ ).
| ์๋๋ฆฌ์ค | ์ธ์ | ์ ์ ์ ๋๋ฑ | A* | Hazard-aware BFS | ์ ์ ์ ์ฑ (PPO) | PPOโA* | PPOโBFS |
|---|---|---|---|---|---|---|---|
| S1 ๊ธฐ๋ณธ ํ์ถ | 20๋ช | 99.8ยฑ0.9 | 99.8ยฑ0.9 | 99.8ยฑ0.9 | 99.8ยฑ0.9 | 0.0 | 0.0 |
| S2 EXIT A ์ํ | 40๋ช | 59.0ยฑ16.8 | 54.4ยฑ22.0 | 91.3ยฑ6.2 | 87.1ยฑ5.8 | +32.7โก | โ4.2โก |
| S3 ์ง์ ๋ก ์ฐจ๋จ | 40๋ช | 57.8ยฑ12.1 | 60.5ยฑ14.3 | 86.4ยฑ5.8 | 86.0ยฑ7.0 | +25.5โก | โ0.4(n.s.) |
| S4 ์๋ฐฉํฅ ๋์ ์ํ | 40๋ช | 50.0ยฑ25.8 | 53.0ยฑ29.1 | 68.9ยฑ34.1 | 66.3ยฑ32.2 | +13.3โก | โ2.6โก |
| S5 EXIT B ์ํ (๋ฏธํ์ต, OOD) | 40๋ช | 63.1ยฑ15.4 | 67.1ยฑ20.5 | 89.6ยฑ7.0 | 80.3ยฑ7.9 | +13.3โก | โ9.3โก |
| ์๋๋ฆฌ์ค | ์ ์ Step | A* Step | BFS Step | PPO Step |
|---|---|---|---|---|
| S2 | 71ยฑ15 | 76ยฑ17 | 102ยฑ21 | 98ยฑ18 |
| S3 | 58ยฑ10 | 62ยฑ14 | 84ยฑ10 | 84ยฑ8 |
| S4 | 66ยฑ15 | 70ยฑ14 | 84ยฑ19 | 75ยฑ17 |
| S5 | 74ยฑ12 | 84ยฑ14 | 105ยฑ17 | 91ยฑ11 |
โก paired t-test ๊ธฐ์ค ์ ์(n=30, seed=42 ํ์ด๋ง). PPO vs A*: S2 p<0.0001, S3 p<0.0001, S4 p=0.0009, S5 p=0.0003 โ S1์ ์ ์ธํ ์ ์๋๋ฆฌ์ค์์ ์ ์ํ๊ฒ ๋๋ค. PPO vs Hazard-aware BFS: S2 p=0.0007, S3 p=0.55(์ ์ํ์ง ์์), S4 p=0.0102, S5 p<0.0001 โ S3์์๋ง ์ฐจ์ด๊ฐ ํต๊ณ์ ์ผ๋ก ํ์ธ๋์ง ์์๊ณ (์ด๊ฒ์ด "๋๋ฑํจ์ ์ฆ๊ฑฐ"๋ ์๋๋ค, ๋จ์ง "๋ณธ ํ๊ฐ์์ ๋๋ ทํ ์ฐจ์ด๊ฐ ํ์ธ๋์ง ์์"), ๋๋จธ์ง ์ธ ์๋๋ฆฌ์ค๋ ๋ชจ๋ PPO๊ฐ ์ ์ํ๊ฒ ๋ฎ๋ค. S1์ ์ ๋ฐฉ๋ฒ์ด ~100%๋ก ์๋ ดํ๋ ์ฒ์ฅ ํจ๊ณผ๋ผ ๊ฒ์ ๋์์์ ์ ์ธ.
ํต์ฌ์ ๋น๊ต ๋์์ ์ด๋๋ก ์ก๋๋์ ๋ฐ๋ผ ๊ฒฐ๋ก ์ด ๊ฐ๋ฆฐ๋ค๋ ์ ์ด๋ค. ํ์ฌ๋ฅผ ๋ฌด์ํ๋ A* ๋๋น๋ก๋ PPO๊ฐ ์ ์๋๋ฆฌ์ค์์ ๋๋ ทํ๊ฒ ์ฐ์์ง๋ง, ์ํ์ ๋ณด๋ฅผ ๋์ผํ๊ฒ ์ฐ๋ Hazard-aware BFS ๋๋น๋ก๋ ํ์ต ์๋๋ฆฌ์ค์์๋ ๋๋ฑํ๊ฑฐ๋ ์ด์ธ์ด๊ณ ๋ฏธํ์ต ์๋๋ฆฌ์ค(S5)์์๋ ๊ฒฉ์ฐจ๊ฐ ๊ฐ์ฅ ํฌ๋ค(โ9.3%p). ์ฆ A* ๋๋น ๊ฐ์ ๋ถ์ ์๋น ๋ถ๋ถ์ "๊ฐํํ์ต"์ด ์๋๋ผ "์ํ์ ๋ณด ์ฌ์ฉ ์์ฒด"์์ ๋์จ๋ค. ์ด ๊ตฌ๋ถ์ด ์ ์ค์ํ์ง๋ ๋ฐ๋ก ์๋ ์ถ๋ก ์๋ ์ ์์ ์ด์ด์ง๋ค โ ์์กด์จ์์ ๋ชป ์ด๊ธฐ๋ Hazard-aware BFS๋ฅผ ๊ณ์ฐ ๋น์ฉ์์๋ ์๋์ ์ผ๋ก ์ด๊ธด๋ค.
๋ฉ์ปค๋์ฆ: "์ถ๊ตฌ ๋ถ์ฐ"์ด ์๋๋ผ "๊ฒฐ๋จ๋ ฅ ์๋ ์ ๋ฆผ". Exit Balance(์์ชฝ
์ถ๊ตฌ ๊ท ๋ฑ ์ฌ์ฉ๋)์ Throughput(์คํ
๋น ์ฒ๋ฆฌ ์ธ์)์
experiments/compute_extra_metrics.py๋ก ๋ถํดํ๋ฉด, PPO์ Exit Balance๋
A*๋ณด๋ค ์คํ๋ ค ๋ฎ๋ค(S2: 0.221 vs 0.411, S3: 0.245 vs 0.400, S4: 0.381 vs
0.496, S5: 0.356 vs 0.435). ๋์ Throughput์ ํญ์ A*๋ณด๋ค ๋๋ค(S2: 0.364
vs 0.302, S3: 0.414 vs 0.403, S4: 0.344 vs 0.300, S5: 0.360 vs 0.322). ์ฆ
PPO๋ ์์ชฝ ์ถ๊ตฌ์ ๊ณ ๋ฅด๊ฒ ๋๋๋ ๊ฒ ์๋๋ผ, ๋ ์์ ํ๊ฑฐ๋ ๋น ๋ฅธ ์ชฝ ์ถ๊ตฌ๋ก
๊ณผ๊ฐํ๊ฒ ๋ชฐ์ ์ฒ๋ฆฌ ํจ์จ์ ๊ทน๋ํํ๋ ์ ๋ต์ ํ์ตํ๋ค. ๋ค๋ง ์ด ์ ๋ต์ด ํน์
๊ด์ธก ์ฑ๋(์์ 15์ฐจ์ ์ค๊ณ์ F7/F8 "์ถ๊ตฌ ๊ทผ์ ํผ์ก๋")์ ์ธ์ํด์ ๋์จ
ํ๋์ด๋ผ๋ ์ธ๊ณผ ๊ด๊ณ๋ ํ์ธ๋์ง ์์๋ค โ ์คํ๋ ค ๊ทธ ์ฑ๋์ ํฌํจํ ๊ด์ธก
ํด๋ฌ์คํฐ๋ฅผ ํต์งธ๋ก ๊ฐ๋ ค๋ ์์กด์จ ๋ํญ์ด ยฑ1.6%p ์ด๋ด์๋ค(๊ทธ๋ฃน ablation,
Feature Space Optimization ์ฐธ๊ณ ).
์ด๊ฒ ๋ฐ๋ก F7/F8์ ํฌํจํ 11๊ฐ ํผ์ฒ๋ฅผ ์ ๊ฑฐํ๊ณ 4์ฐจ์์ผ๋ก ์ถ์ํด๋ ์ฑ๋ฅ์ด
์ ์ง๋ ์ด์ ์ด๊ธฐ๋ ํ๋ค.
S5(EXIT B ์ํ)๋ ์ปค๋ฆฌํ๋ผ ํ์ต์ ์ ํ ํฌํจ๋์ง ์์ ์๋๋ฆฌ์ค๋ค.
env_core.py์ ์ปค๋ฆฌํ๋ผ์ S1~S4๊น์ง๋ง ์งํํ๋ฉฐ --max-scenario 4๋ก
ํ์ต ์ค ์ง๊ธ์ด ์์ฒ ์ฐจ๋จ๋์ด ์๋ค. A* ๋๋น๋ก๋ ๋ฏธํ์ต ์๋๋ฆฌ์ค์์๋
์ ์ํ๊ฒ ๋์ ์์กด์จ(+13.3%p)์ ๋ณด์ด์ง๋ง, Hazard-aware BFS ๋๋น๋ก๋
๋ค ์๋๋ฆฌ์ค ์ค ๊ฐ์ฅ ํฐ ๊ฒฉ์ฐจ(โ9.3%p)๋ก ๋ค์ง๋ค. ๋ฐ๋ผ์ "๋ฏธํ์ต ์กฐ๊ฑด์์๋
์ผ์ ํ ๋ํผ ์ฑ๊ณผ๋ฅผ ์ ์งํ๋ค"๋ ์ฃผ์ฅ์ ๊ฐ๋ฅํด๋, "์ํ ๋ฐ์ ํ์๋ณด๋ค
์ผ๋ฐํ๋ฅผ ์ํ๋ค"๋ ์ฃผ์ฅ์ ๋ฐ์ดํฐ๊ฐ ๋ท๋ฐ์นจํ์ง ์๋๋ค. ๋์ผ ๊ฑด๋ฌผ ๋ด ํ์ฌ
์์น ๋ณํ์ด๋ฏ๋ก ๋ค๋ฅธ ๊ฑด์ถ๋ฌผ๋ก์ ์ ์ด ์ฑ๋ฅ์ผ๋ก ํ๋ ํด์ํ์ง๋ ์๋๋ค.
2026-10 ์ ์ : ์๋ ํ๋
experiments/exp_speed_breakdown.py(์ ๊ท)๋ก ์ธก์ ํ ์ ์ฒด ์ ์ด์ฃผ๊ธฐ(T_control) ๊ธฐ์ค์ด๋ค. ์ด์ ๋ฒ์ ์ PPO ์ชฝ์ ์ ๊ฒฝ๋ง forward pass(T_policy)๋ง ์๊ณ Hazard-aware BFS ์ชฝ์ ๊ฒฝ๋กํ์ ์ ์ฒด๋ฅผ ์๋ค โ ์ธก์ ๋ฒ์๊ฐ ๋ฌ๋ผ "์ ์ฒด ์ ์ด ์๋"์ ๊ณต์ ํ ๋น๊ต๊ฐ ์๋์๋ค(์ง๋๊ต์ ๊ฒํ ๋ฉ๋ชจ 3.1์ ์ง์ , ์์ธ: paper-review-todo). T_policy๋ง ๋ณด๋ฉด 0.14~0.18ms์ง๋ง, ์ค์ ๋ก๋ Dijkstra ๋น์ฉ์ฅ ์์ฑ(T_costmap+guidance)์ด ์ ์ฒด ์ ์ด์ฃผ๊ธฐ์90%๋ฅผ ์ฐจ์งํด **T_control์ 6.67.2ms**๋ค.
PPO๋ 4์ฐจ์ ๊ณ ์ ๊ด์ธก์ผ๋ก ์ ์ฒด ์ํฉ์ ์์ฝํด ํ๋ 3๊ฐ๋ก ์ ์ดํ๋ฏ๋ก, ์ ์ฒด ์ ์ด์ฃผ๊ธฐ๊ฐ ์ธ์ ์ N์ ๊ฑฐ์ ๋ฌด๊ดํ๋ค. Hazard-aware BFS๋ ์์กด์๋ง๋ค ๊ฐ๋ณ ํ์์ ๋๋ ค์ผ ํด์ O(N)์ผ๋ก ์ ํ ์ฆ๊ฐํ๋ค. N=20/50/100/150/200/300/500 7๋จ๊ณ๋ก ์ธก์ ํ๋ค(S4, M1 8์ฝ์ด CPU, ๋จ๋ ์คํยท๋ค๋ฅธ ํ๋ก์ธ์ค์ CPU ๊ฒฝํฉ ์์).
| N | T_observation | T_policy | T_costmap+guidance | T_control(ํฉ๊ณ) | Hazard-aware BFS(์ ์ฒด) |
|---|---|---|---|---|---|
| 20 | 0.22ms | 0.27ms | 6.07ms | 6.56ms | 8.5ms |
| 50 | 0.37ms | 0.22ms | 6.21ms | 6.80ms | 26.3ms |
| 100 | 0.56ms | 0.20ms | 5.88ms | 6.64ms | 47.4ms |
| 150 | 0.46ms | 0.21ms | 6.01ms | 6.68ms | 74.9ms |
| 200 | 0.64ms | 0.20ms | 5.90ms | 6.74ms | 97.7ms |
| 300 | 0.68ms | 0.35ms | 6.18ms | 7.21ms | 170.4ms |
| 500 | 0.86ms | 0.19ms | 5.84ms | 6.88ms | 255.1ms |
T_control์ N=20
500 ์ ๊ตฌ๊ฐ์์ 6.67.2ms๋ก ๊ฑฐ์ ํํํ๋ค(๋น์ฉ๋งต ์์ฑ์ด ๊ทธ๋ฆฌ๋ ํฌ๊ธฐ์๋ง ์์กดํ๊ณ N์๋ ๊ฑฐ์ ์ ์์กดํด์๋ค โ T_observation๋ง N์ ๋ฐ๋ผ ์ํญ ์ฆ๊ฐ). Hazard-aware BFS๋ "์ค์๊ฐ" ๊ธฐ์ค์ 100ms/์คํ ์ผ๋ก ์ก์ผ๋ฉด Nโ200~300 ์ฌ์ด์์ ์ด ๊ธฐ์ค์ ๋๋๋ค(N=200: 97.7ms, N=300: 170.4ms). ์ ์ ์ ์ฑ ์ N=500์์๋ T_control์ด 7ms ๋ฏธ๋ง์ด๋ผ ์ด ๊ธฐ์ค์ ๋๊ธธ ์ฌ์ง๊ฐ ๊ตฌ์กฐ์ ์ผ๋ก ๊ฑฐ์ ์๋ค.์ธก์ ํ๊ณ:
_compute_dirs_for_strategy()๊ฐ Dijkstra ๋น์ฉ์ฅ ์์ฑ๊ณผ ๋ฐฉํฅ ๊ฒฐ์ ์ ํ ํจ์ ์์์ ๊ฐ์ด ์ํํด, ํ์ฌ ์ฝ๋ ๊ตฌ์กฐ๋ก๋ T_costmap๊ณผ T_guidance๋ฅผ ๋ ์ธ๋ถํ๋ ๋ ํ์ด๋จธ๋ก ๋ถ๋ฆฌํ์ง ๋ชปํ๋ค(๋ฆฌํฉํฐ๋ง ์์ด๋ ํฉ์ฐ๊ฐ๊น์ง๋ง ๋ณด๊ณ ๊ฐ๋ฅ). ๋ํ Hazard-aware BFS๋ "๊ด์ธก ๊ตฌ์ฑ"๊ณผ "๊ฒฝ๋กํ์"์ด ๋ถ๋ฆฌ๋์ง ์์ ๋จ์ผ ํจ์๋ผ ๊ฐ์ 4๋จ๊ณ๋ก๋ ๋ถํดํ ์ ์์ด, ์ ๋น๊ต๋ "PPO์ T_control ํฉ๊ณ" ๋ "BFS ํจ์ 1ํ ํธ์ถ ์ ์ฒด"์ ๋น๊ต๋ค.
โ๋นจ๊ฐ: ํ์ฌ |โ์ด๋ก/ํ๋: ๋ํผ์ | ํ์ดํ: ์ ๋๋ฑ ๋ฐฉํฅ | A*ยทPPO๋ฅผ ํ ์ด๋ฏธ์ง์ ๋๋ํ ๋น๊ต(make_comparison_gifs_2.py์์ฑ, seed=42๋ก ํ 3๊ณผ ๋์ผ ์กฐ๊ฑด)
(์ ๋ฐ์ดํธ๋จ, 2026-08-20): ์ด GIF ๋ด ์บก์ ์ "๋ ์ํํ ์ถ๊ตฌ๋ก ๊ท ๋ฑ ๋ถ์ฐ"์ด๋ผ๊ณ ์ ํ ์์ผ๋, ์ดํ Exit Balance ์ค์ธก(์ ์คํ ๊ฒฐ๊ณผ ์ ์ฐธ๊ณ )์ผ๋ก ์ ์ ๋๋ค. ์ค์ ๋ก๋ "๊ท ๋ฑ ๋ถ์ฐ"์ด ์๋๋ผ "๋ ์์ ํ ์ชฝ์ผ๋ก ๊ฒฐ๋จ๋ ฅ ์๊ฒ ๋ชฐ์ ์ฒ๋ฆฌ ํจ์จ์ ๋์ด๋" ์ ๋ต์ด๋ค. GIF๋ ์ฌ์์ฑ ์ ๊น์ง ๊ตฌ๋ฒ์ ์บก์ ๊ทธ๋๋ก ์ ์งํ๋ค.
(์ ๋ฐ์ดํธ๋จ, 2026-08-20): GIF ๋ด๋ถ ์ ๋ชฉ์ "์ค์ ์ฐจ๋จ"์ผ๋ก ํ์๋์ง๋ง, ์ด ๋ฌธ์ ์ ๋ฐ์ "S5"๋
env_core.SCENARIO_CONFIGS[5]("EXIT B ์ํ")๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ์ฌ์์ฑ ์ ๊น์ง GIF ์์ฒด์ ํ์ ์ ๋ชฉ์ ๊ตฌ๋ฒ์ ๊ทธ๋๋ก๋ค.
(์ ๋ฐ์ดํธ๋จ, 2026-08-20): ์ด ํฌ์คํฐ๋ hazard_aware ๋ฒ๊ทธ ์์ (Hazard-Awareness Ablation ์ฐธ๊ณ ) ์ด์ ๋ฒ์ ์ด๋ผ ์๋ ํญ๋ชฉ๋ค์ด ๋ณธ๋ฌธ ํ 3ยท๊ทธ๋ฆผ 5์ ๋ค๋ฅด๋ค.
- ํ 3 ์์น: ํฌ์คํฐ๋ ์ ์ ์ ๋๋ฑ ์์ด A*/PPO 2-way ๋น๊ต์ด๊ณ ์์กด์จ ์์ฒด๊ฐ ๋ค๋ฅด๋ค(์: S2 ํฌ์คํฐ A*77ยฑ16/PPO89ยฑ5 vs ๋ณธ๋ฌธ A*54.4ยฑ22.0/ PPO85.7ยฑ6.1). ์ ์ ์ ๋๋ฑ ๋ฒ ์ด์ค๋ผ์ธ์ ๋ฒ๊ทธ ์์ ์ดํ์ ์ถ๊ฐ๋๋ค.
- ์๋ฃ ์๊ฐ ๋ฐฉํฅ์ฑ์ด ๋ฐ๋๋ค: ํฌ์คํฐ๋ PPO๊ฐ A*๋ณด๋ค ํญ์ ๋น ๋ฅด๋ค๊ณ ๋ณด๊ณ ํ์ง๋ง, ์ฌ์ธก์ ๊ฒฐ๊ณผ๋ ๋ฐ๋๋ค. S2/S3/S5์์๋ ์ ์ ยทA*๊ฐ ํ์ฌ๋ฅผ ๋ฌด์ํ๊ณ ์ง์งํด PPO๋ณด๋ค ์คํ ์๊ฐ ์ ๋ค(๋์ ํจ์ฌ ๋ง์ด ์ฃฝ๋๋ค). ์๋์ ์์กด์จ์ ํธ๋ ์ด๋์คํ๋ก ์ฌํด์๋๋ค(๋ณธ๋ฌธ ํ 3 ํด์ค ์ฐธ๊ณ ).
- ์ถ๋ก ์๋ "38๋ฐฐ" ์์ฝ: ํฌ์คํฐ๋ N=200์์ PPO ~1.5ms, 38๋ฐฐ ๋น ๋ฅด๋ค๊ณ ์์ฝํ์ง๋ง, ์ฌ์ค์ธก ๊ฒฐ๊ณผ PPO๋
0.16ms(O(1) ๊ณ ์ ), A*๋ 53.6ms์ด๊ณ ๋ฐฐ์จ์ N์ ๋ฐ๋ผ 10๋ฐฐ849๋ฐฐ๊น์ง ๋ณํ๋ค(๋ณธ๋ฌธ ๊ทธ๋ฆผ 5 ์ฐธ๊ณ ). ๋จ์ผ ๋ฐฐ์จ ์์ฝ์ ์คํด ์์ง๊ฐ ์์ด ๋ณธ๋ฌธ์์๋ ์ ๊ฑฐํ๋ค.- ํ 1 ํ์ฌ ํ์ฐ ํ๋ฅ : ํฌ์คํฐ๋ S3 15%/S4 18%๋ก ์ ํ ์๋๋ฐ ๋ณธ๋ฌธ ํ 1์ S3 18%/S4 15%๋ก ๋ฐ๋๋ค. ๋ณธ๋ฌธ ํ 1์ ํ์ฌ
env_core.SCENARIO_CONFIGS์ฝ๋๊ฐ๊ณผ ์ผ์น์ํจ ๊ฒ์ด๋ค.- S5 ๋ผ๋ฒจ: ํฌ์คํฐ์ "S5 ์ค์ ์ฐจ๋จ"์ ์ดํ
SCENARIO_CONFIGS[5]("EXIT B ์ํ")๋ก ์ด์ด์ง๋๋ฐ, ์ด ๋ช ์นญ ๋ถ์ผ์น๋ ์์ง ์์ ํ ํด์๋์ง ์์๋ค(์ ์๊ฐํ ์ ๊ฐ์ฃผ ์ฐธ๊ณ ).- Conclusion์ "+10%p ์์กด์จ,
30๋ฐฐ ์๋" ์์ฝ๋ ์ฌ์ธก์ ํ ์๋๋ฆฌ์ค๋ณ๋ก +12.3%p+31.2%p, ๋ฐฐ์จ 10๋ฐฐ~849๋ฐฐ๋ก ํจ์ฌ ํฌ๊ณ ๊ฐ๋ณ์ ์ผ๋ก ๋ํ๋ฌ๋ค.
pip install -r requirements.txt# Stage 1: ๊ทธ๋ฆฌ๋ ์ถ์ถ
cd stage1
python gridcell_extract.py
# Stage 2 ์์
๋๋ ํ ๋ฆฌ
cd stage2
# PPO ํ์ต (4์ฐจ์ ์ถ์ ๊ด์ธก, ์ปค๋ฆฌํ๋ผ S1โS4 ์๋ ์ง๊ธ, S5๋ --max-scenario๋ก ์ ์ธ)
python ppo/ppo_train.py --mode train --people 40 --steps 3506176 \
--feature-set reduced --curriculum-threshold 0.85 --ent-coef 0.005 --max-scenario 4
# ์๋ ํ์ด๋ง + ์ ์ ยทA*ยทHazard-aware BFS ํฌํจ ์ ์ฒด ๋น๊ต (ํ 3 ์ฌํ)
python experiments/exp1_compare.py --scenarios 1 2 3 4 5 --episodes 30 --seed 42 \
--feature-set reduced --include-static --include-hazard-astar
# ์ ์ฒด ์ ์ด์ฃผ๊ธฐ ์๊ฐ ๋ถํด ์ธก์ (๊ทธ๋ฆผ 5, T_observation+T_policy+T_costmap+guidance)
python experiments/exp_speed_breakdown.py --scenarios 4 --feature-set reduced \
--n-agents-list 20 50 100 150 200 300 500
# (๊ตฌ๋ฒ์ ) ์ ๊ฒฝ๋ง ์ถ๋ก ์๊ฐ๋ง ๋น๊ต โ T_policy๋ง ์ฌ๋ฏ๋ก ์ ์ฒด ์ ์ด ์๋ ๋น๊ต๋ก๋ ์ฐ์ง ๋ง ๊ฒ
python experiments/exp_speed.py --n-agents 200 --feature-set reduced
# ์ํผ์๋ GIF ์๊ฐํ (๊ทธ๋ฆผ 6)
python experiments/exp3_visualize.py
# A* ๋ฒ ์ด์ค๋ผ์ธ ๋จ๋
ํ
์คํธ
python baselines/astar_baseline.py --all-scenarios --episodes 30 # Hazard-aware
python baselines/astar_simple_baseline.py --all-scenarios --episodes 30 # Simple (ํ์ฌ ๋ฌด์)
python baselines/astar_real.py --all-scenarios --episodes 30 # Pure (ํ์ฌ ๋ฌด์)
python baselines/static_signage_baseline.py --all-scenarios --episodes 30 # ์ ์ ์ ๋๋ฑ
# ๋ณด์กฐ ํ๊ฐ์งํ (Exit Balance / Throughput / Path Efficiency)
python experiments/compute_extra_metrics.py --scenario 4 --csv <exp1_compare.py ์ถ๋ ฅ CSV>
# TensorBoard ํ์ต ์งํ ํ์ธ
tensorboard --logdir ./fire_evac_log/Unity-FireEvacSim-pipeline/
โโโ requirements.txt
โ
โโโ stage1/
โ โโโ build_base_grid.py # ํผ๋์๋ด๋ ์ด๋ฏธ์ง โ base_grid.npy (Stage 1, Hough Line ํ์ ํ)
โ โโโ gridcell_extract.py # ์ด๊ธฐ ํ๋กํ ํ์
(ํ๊ท ๋น๊ต์ฉ, ์ถ๊ตฌ/๋ฌธ ๊ฒ์ถ ์์)
โ โโโ build_ground_truth.py # ์ ํ๋ ํ๊ฐ์ฉ ์์์
์ ๋ต ์ ์
โ โโโ eval_extraction_accuracy.py # WALL IoUยท์ฐ๊ฒฐ์ฑ ๋ณด์กด์จยท์ถ๊ตฌ ๋๋ฌ๋ฅ ํ๊ฐ
โ โโโ image.jpg # ์๋ณธ ํผ๋์๋ด๋ ์ฌ์ง
โ โโโ door_template.png # ๋ฌธ ๊ธฐํธ ํ
ํ๋ฆฟ(์ด ๋๋ฉด ์ ์ฉ)
โ โโโ base_grid.npy # ์ถ์ถ๋ 40ร25 ๊ทธ๋ฆฌ๋
โ
โโโ stage2/
โโโ env_core.py # ํต์ฌ ํ๊ฒฝ (FireEvacEnv, ์๋๋ฆฌ์ค, ๋ณด์, hazard_aware ํ๋๊ทธ)
โโโ train_ppo_grid.py # 3,000์ฐจ์ ๊ทธ๋ฆฌ๋ ๊ด์ธก ablation (๋ณ๋ ์คํ, ๋ณธ ํ๋ก์ ํธ ์ฃผ ๋ชจ๋ธ ์๋)
โโโ train_common.py # ์ปค๋ฆฌํ๋ผ ๋ํผยท์ฒดํฌํฌ์ธํธยทVecNormalize ์ ํธ๋ฆฌํฐ
โโโ unity_interface.py # Python โ Unity 3D ์ฐ๋ ์ธํฐํ์ด์ค
โโโ record_episode.py # ์ํผ์๋ ๊ธฐ๋ก (recordings/*.jsonl ์์ฑ)
โโโ playback_server.py # ๊ธฐ๋ก๋ ์ํผ์๋ ์ฌ์ ์๋ฒ
โโโ visualize_episode.py # 2D GIF ๋ ๋๋ง ์์ง
โโโ make_visualize_episode.py # ์๊ฐํ ์คํฌ๋ฆฝํธ (VISUALIZE_README ์ฐธ๊ณ )
โโโ make_visualize_episode_test.py
โโโ make_comparison_gifs.py # A* vs PPO ๋น๊ต GIF ์์ฑ
โโโ make_comparison_gifs_2.py # ๋น๊ต GIF ์์ฑ (๊ฐ์ ํ)
โโโ make_gridworld_map.py # ํฌ์คํฐ์ฉ ๊ทธ๋ฆฌ๋์๋ ๋งต ์๊ฐํ
โโโ plot_exp1_table.py # ํ 3 ๊ทธ๋ํ ์์ฑ
โโโ plot_speed_cached.py # ๊ทธ๋ฆผ 5 ํฌ์คํฐ์ฉ ์ฐจํธ ์์ฑ
โโโ plot_obs_design_split.py # ๊ด์ธก ๊ณต๊ฐ ์ค๊ณ ๋น๊ต ๊ทธ๋ํ
โโโ poster_grid.py # ๊ทธ๋ฆผ 4: A* vs PPO ๊ฒฝ๋ก ๋น๊ต ๊ทธ๋ฆฌ๋
โ
โโโ ppo/
โ โโโ ppo_train.py # PPO ์ปค๋ฆฌํ๋ผ ํ์ต ๋ฉ์ธ ์คํฌ๋ฆฝํธ (--feature-set reduced=F1,F2,F14,F15/4์ฐจ์[๊ธฐ๋ณธ ํ๋ก๋์
], full=F1~F15/15์ฐจ์[ํ์ํธํ])
โ
โโโ baselines/
โ โโโ astar_baseline.py # Hazard-aware A* (ํ์ฌยท์ฐ๊ธฐยทํผ์ก ๋ฐ์)
โ โโโ astar_simple_baseline.py # Simple A* (ํ์ฌ ๋ฌด์, ์์ ์ต๋จ๊ฑฐ๋ฆฌ)
โ โโโ astar_real.py # Pure A* (Manhattan ํด๋ฆฌ์คํฑ, ํ 3 ๊ธฐ์ค)
โ โโโ static_signage_baseline.py # ์ ์ ์ ๋๋ฑ (์ต์ด 1ํ ๊ณ์ฐ ํ ๊ณ ์ , ์ด ๋ถ์ผ ํ์ค ๋น๊ต๊ตฐ)
โ
โโโ experiments/
โ โโโ exp1_compare.py # ์๋๋ฆฌ์ค๋ณ ์ ์ /A*/Hazard-aware BFS/PPO ๋น๊ต, ์๋ ํ์ด๋ง (ํ 3)
โ โโโ exp3_visualize.py # ์ํผ์๋ GIF ์๊ฐํ (๊ทธ๋ฆผ 6)
โ โโโ exp_speed.py # ์ถ๋ก ์๋ ๋น๊ต โ T_policy(์ ๊ฒฝ๋ง ์ถ๋ก )๋ง ์ธก์ , ๊ตฌ๋ฒ์
โ โโโ exp_speed_breakdown.py # ์ ์ฒด ์ ์ด์ฃผ๊ธฐ ๋ถํด ์ธก์ (๊ทธ๋ฆผ 5, T_control ๊ธฐ์ค, ํ์ ํ)
โ โโโ feature_ablation.py # F1~F15 ๊ฐ๋ณ permutation ๋ง์คํน
โ โโโ feature_group_ablation.py # F1~F15 ๊ทธ๋ฃน ๋จ์ ๋ง์คํน (HAZARD/CROWD/PROGRESS/ALL_BLIND)
โ โโโ feature_correlation.py # F1~F15 15ร15 ์๊ดํ๋ ฌ
โ โโโ compute_extra_metrics.py # Exit Balance / Throughput / Path Efficiency
โ
โโโ recordings/ # ์๋๋ฆฌ์ค๋ณ ๊ธฐ๋ก๋ ์ํผ์๋ (*.jsonl)
โโโ figures/ # ํฌ์คํฐยท๊ทธ๋ฆผ์ฉ ์ ์ ์ด๋ฏธ์ง
โโโ model/ # ํ์ต๋ PPO ๋ชจ๋ธ (.zip, _vecnorm.pkl)
โ โโโ ppo/
โโโ result/ # ์คํ ๊ฒฐ๊ณผ JSON
โ โโโ ppo/
โ โโโ astar/
โ โโโ astar_real/
โ โโโ astar_simple/
โ โโโ exp1_compare/
โ โโโ visualize/ # GIFยทPNG ์๊ฐํ ๊ฒฐ๊ณผ
โโโ fire_evac_log/ # TensorBoard ๋ก๊ทธ
๋จ์ผ ๊ฑด๋ฌผ ๊ฒ์ฆ: ๋ชจ๋ ์คํ์ด ์ค์ ์์๊ด 2์ธต ํ๋ฉด๋ ํ๋๋ก ์ํ๋๋ค. Stage 1(์ด๋ฏธ์งโ๊ทธ๋ฆฌ๋ ์๋ ์ถ์ถ)์ด ์์์ ํ๋ฉด๋๋ฅผ ์ง์ํ๋ฏ๋ก ๊ตฌ์กฐ์ ์ผ๋ก ๋ค๋ฅธ ๊ฑด๋ฌผ์ ๋ํ zero-shot ์ผ๋ฐํ ๊ฒ์ฆ์ด ๊ฐ๋ฅํ์ง๋ง, ์์ง ๋ ๋ฒ์งธ ํ๋ฉด๋๋ก ์ค์ธกํ์ง๋ ์์๋ค. ๋ค๋ง ์ ํ์ฐ๊ตฌ(Xie et al. 2025 ๋ฑ) ์ค์๋ ์ฌ๋ฌ ๊ฑด๋ฌผ๋ก ๊ฒ์ฆํ ์ฌ๋ก๊ฐ ์์ด, ๋จ์ผ ๊ฑด๋ฌผ ๊ฒ์ฆ ์์ฒด๊ฐ ์ด ๋ถ์ผ์์ ์ด๋ก์ ์ธ ๊ฒ์ ์๋๋ค.
Stage 1์ ์ค์ ํ์ต์ ์ฐ์ธ ๊ทธ๋ฆฌ๋์ ์ถ์ฒ๊ฐ ์๋๋ค: ์ง๊ธ ํ์ต๋ ๋ชจ๋ธ์ด
์ฐ๋ env_core.BASE_GRID๋ ์ด ์ฌ์ง(stage1/image.jpg)์์ ์๋ ์ถ์ถ๋ ๊ฒ
์๋๋ผ, Unity ์๋ํฐ์์ ์์์
์ผ๋ก ๋ง๋ 3D ์ฌ์ ๋ด๋ณด๋ธ ๊ฒ์ด๋ค(์ฝ๋ ์ฃผ์
ํ์ธ). ์ฆ "์ฌ์ง โ ๊ทธ๋ฆฌ๋ ์๋ ์ถ์ถ โ ํ์ต"์ด๋ผ๋ E2E ํ์ดํ๋ผ์ธ์ ์ง๊ธ
๊ฒฐ๊ณผ๋ฌผ ๊ธฐ์ค์ผ๋ก๋ ์ค์ ๋ก ์ด์ด์ ธ ์์ง ์๋ค. Stage 1(build_base_grid.py)์
๋ณ๋๋ก ๊ฒ์ฆ๋ ํ์ฅ ๊ฒฝ๋ก๋ค.
ํตํฉ์ด ๋งํ ์ด์ ๋ ๊ทธ๋ฆฌ๋ ํ์ง(WALL IoU)๋ง์ด ์๋๋ค. env_core.py์
EXIT_A_POS/EXIT_B_POS์ ์๋๋ฆฌ์ค๋ณ ํ์ฌ ๋ฐ์ ๊ตฌ์ญ(_EXIT_A_UPPER,
_EXIT_A_CROSSING, _EXIT_B_LOWER, _CENTER_CORRIDOR)์ด ์ ๋ถ ์ง๊ธ
Unity ๊ทธ๋ฆฌ๋์ ๊ตฌ์ฒด์ ์ขํ์ ์์ผ๋ก ๋ง์ถฐ์ ธ ์์ด์(2026-09-17 ํ์ธ),
Stage 1 ๊ทธ๋ฆฌ๋๋ก ๊ต์ฒดํ๋ ค๋ฉด ํด์๋๋ฅผ ๋ง์ถ๋ ๊ฒ๊ณผ ๋ณ๊ฐ๋ก ์ด ์ขํ๋ค์
์ ๊ทธ๋ฆฌ๋์ ๊ฑด๋ฌผ ๊ตฌ์กฐ์ ๋ง๊ฒ ๋ค์ ์ง์ ํด์ผ ํ๋ค. ๋จ์ ์์ ์ฌ์กฐ์ ์ผ๋ก
๋๋์ง ์๋ ๋ณ๋ ์ค๊ณ ์์
์ด๋ผ ์ด๋ฒ ํตํฉ์์๋ ๋ฒ์ ๋ฐ์ผ๋ก ๋๋ค.
์ด ์ฌ์ง ํ ์ฅ์ ๋ํด ์ง์ ๋ง๋ ์ ๋ต๊ณผ ๋น๊ตํ ๊ฒฐ๊ณผ: ์ ๋จ์ ์ ํ๋(pixel accuracy) 80.0%, WALL IoU 65.8%, ๊ฒฝ๊ณ 1์นธ ์ค์ฐจ๊น์ง ํ์ฉํ๋ ๊ด๋ํ ๋งค์นญ ๊ธฐ์ค์ผ๋ก๋ recall 94.1%/precision 94.3%, ์ถ๊ตฌ(EXIT) ๊ฒ์ถ์ recall/precision ๋ชจ๋ 100%. ์์ฒด ์ถ๊ตฌ ๋๋ฌ ๊ฐ๋ฅ๋ฅ (๊ทธ๋ฆฌ๋ ๋ด ๋ชจ๋ ๋ณดํ ๊ฐ๋ฅ ์ ์ด ์ถ๊ตฌ๊น์ง ๋ฟ๋ ๋น์จ)์ ์๋ 45%์์ ๊ฑด๋ฌผ ์ธ๊ณฝ ๋ง์คํนยท๋ฌธ ๊ฒ์ถ ๊ฐ์ (98.1%)๊ณผ ๋ฒฝ ๊ฒ์ถ ์์ฒด๋ฅผ ์์/ํฌ๊ธฐ ๊ธฐ์ค์์ ์ง์ (Hough Line) ๊ธฐ์ค์ผ๋ก ๋ฐ๊พผ ๊ฐ์ (100%)์ ๊ฑฐ์ณ ๋์ด์ฌ๋ ธ๋ค. ํ์ฅ์ค ํฝํ ๊ทธ๋จ์ฒ๋ผ ๊ณก์ ํ ์์ด์ฝ์ ๋ฒฝ์ผ๋ก ์คํํ๋ ๋ฌธ์ ๋ฅผ "๋ฒฝ์ ์ง์ , ์์ด์ฝ์ ๊ณก์ "์ด๋ผ๋ ์ ์ ๋ก ์๋น ๋ถ๋ถ ์ค์์ง๋ง, ์ฌ์ ํ ๋จ์ ๊ท์น ๊ธฐ๋ฐ ๋ฐฉ์์ด๋ผ CubiCasa5K๊ธ ๋ฅ๋ฌ๋ ๋ฐฉ๋ฒ(mIoU ~87%)๋ณด๋ค ์ ๋ฐ๋๊ฐ ๋ฎ๊ณ , ์๋ฆฌ๋ฒ ์ดํฐยท์ํ๊ธฐ ํ์งํ ๊ฐ์ ์ง์ ์์ฃผ ์์ด์ฝ์ ์ด ๋ฐฉ์์ผ๋ก๋ ์ ๊ฑธ๋ฌ์ง๋ค. ํ๋ณธ์ด ์ฌ์ง 1์ฅ๋ฟ์ด๋ผ ์ค์ฐจ์ ์ ๋ขฐ๊ตฌ๊ฐ๋ ๋ ผํ ์ ์๋ค. ์์ธ: Stage 1 ์ถ์ถ ์ ํ๋ ํ๊ฐ Phase E.
๋ฐ๋ ์ผ๋ฐํ ๊ฒฝ๊ณ: ์ปค๋ฆฌํ๋ผ ํ์ต์ ์ต๋ 40๋ช ๊น์ง๋ง ์งํ๋๋ค. S4์์ N์ 40โ500๊น์ง ๋๋ ค๊ฐ๋ฉฐ 4์ฐจ์ ๋ชจ๋ธ๋ก ์ฌ์ธก์ ํ ๊ฒฐ๊ณผ(n=8), A* ๋๋น ์์กด์จ ์ฐ์๋ N=200๊น์ง๋ ์ ์ง๋์ง๋ง(N=40: +12.8%p โ N=80: +11.2%p โ N=120: +12.1%p โ N=160: +8.6%p โ N=200: +8.0%p) N=300 ์ด์์์๋ ์ฌ์ค์ ์ฌ๋ผ์ง๋ค(N=300: +0.3%p, N=500: +0.1%p). ์ญ์ ๊น์ง๋ ์๋์ง๋ง, ํ์ต ๋ฐ๋(โค40๋ช )๋ฅผ 10๋ฐฐ ์ด์ ๋ฒ์ด๋๋ฉด ์์กด์จ ์ฐ์๋ฅผ ๋ ์ด์ ์ฃผ์ฅํ ์ ์๋ค. ์ด ๋น๊ต ์๋๋ Hazard-aware BFS๊ฐ ์๋๋ผ A*์ด๋ฏ๋ก, "์ธ์์ด ๋์ด๋ ์ํ ๋ฐ์ ํ์๋ณด๋ค ์ฐ์ํ๋ค"๋ ๋ป์ ์๋๋ค. T_control(์ ์ฒด ์ ์ด์ฃผ๊ธฐ, ์ ์ถ๋ก ์๋ ์ ์ฐธ๊ณ )์ N=500์์๋ 7ms ๋ฏธ๋ง์ผ๋ก ์ผ์ ํด ๊ณ์ฐ ๋น์ฉ ์ฐ์๋ ๋ฐ๋์ ๋ฌด๊ดํ๊ฒ ์ ์ง๋๋ค โ ์์กด์จ๊ณผ ๊ณ์ฐ ๋น์ฉ์ ์๋ก ๋ค๋ฅธ ํ๊ฐ์ถ์ด๋ฉฐ, ๊ณ ๋ฐ๋ ๊ตฌ๊ฐ์์๋ ์ ์๊ฐ ๋ฌด๋์ง๊ณ ํ์๋ง ๋จ๋๋ค.
์ธ์์(N) ์ค์ ๊ทผ๊ฑฐ ๋ฏธํ์ : ์ปค๋ฆฌํ๋ผ์ 20~40๋ช ๊ท๋ชจ๋ก ํ์ตํ๋ค. ์ด ๊ท๋ชจ๊ฐ ์ค์ ์์๊ด 2์ธต ๊ฑด๋ฌผ์ ์ ์ ํ์ง ๋ท๋ฐ์นจํ๋ ๊ทผ๊ฑฐ๊ฐ ์์ง ์๋ค. ๊ทธ๋ฆฌ๋ ์ 1๊ฐ๊ฐ ์ค์ ๋ช ใก์ ๋์ํ๋์ง ์ ์๋ ๊ณณ์ด ์์ด์, ์๋ฐฉ๋ฒ๋ น ์์ฉ์ธ์ ๊ธฐ์ค(๊ตญ๊ฐํ์ฌ์์ ๊ธฐ์ค, ๋๋ NFPA 101 occupant load factor)๊ณผ ๋์กฐํ๋ ๊ฒ ํ์ฌ๋ ๋ถ๊ฐ๋ฅํ๋ค. ๊ฑด๋ฌผ์ ์ค์ ๋ฉด์ ์๋ฃ๋ฅผ ํ๋ณดํ๋ ๋๋ก ์ด ๊ณ์ฐ์ ์ฑ์ ๋ฃ์ ๊ณํ์ด๋ค.
PPO ์ํคํ
์ฒ ๋ฏธ๊ฒ์ฆ: ์ง๊ธ PPO๋ ๊ธฐ๋ณธ MLP(net_arch=[256, 256]) ๊ตฌ์กฐ
๊ทธ๋๋ก์ด๊ณ , ์ง์ญ์ฑ ์์ฝ ๋ ์ด์ด ๊ฐ์ ๊ฒฝ๋ ๋ชจ๋ ์ถ๊ฐ๋ ์์ง ์คํํ์ง ์์๋ค.
์ํธ๋กํผ ๊ณ์(ent_coef) ๊ฐ์ฌ๋ 40๋ง ์คํ
๊ธฐ์ค์ผ๋ก๋ ๊ธฐ์กด ๊ธฐ๋ณธ๊ฐ 0.05๊ฐ
๋ซ๋ค๊ณ ๊ฒฐ๋ก ๋์์ง๋ง, production ๊ธธ์ด(3.5M ์คํ
)๊น์ง ๋๊น์ง ํ์ตํ๋ฉด
log_std๊ฐ ๋ฐ์ฐํด exit ๋น์ฉ ์ก์
์ด ๊ฒฝ๊ณ๊ฐ์ ๊ณ ์ ๋๋ ๋ฌธ์ ๊ฐ ๋ค๋ฆ๊ฒ
๋ฐ๊ฒฌ๋๋ค. ๊ทผ๋ณธ ์์ธ์ ์ํธ๋กํผ๊ฐ ์๋๋ผ ์ ์ฑ
๋ง์ ์ด๊ธฐ ์ถ๋ ฅ ์ค์ผ์ผ๊ณผ ์ก์
๋ฐ์ค๊ฐ ์ด๊ธ๋ ์๋ ๊ฒ์ด์๊ณ , action_net์ ์ด๊ธฐ bias๋ฅผ ๋ฐ์ค ์ค๊ฐ๊ฐ์ผ๋ก
๋ง์ถ๋ ์์ ์ผ๋ก ํด์ํ๋ค(์์ธ: Hazard-Awareness
Ablation ํ์ ๋ถ์ 6,
ํผ์ฒ ๊ณต๊ฐ ์ต์ ํ ๊ณํ). GAE
ฮปยทlearning rate schedule ๋ฑ ๋๋จธ์ง ํ์ดํผํ๋ผ๋ฏธํฐ๋ ์์ง ๊ฒํ ํ์ง ์์๋ค.
์ปค๋ฆฌํ๋ผ ํ์ต(S1โS4 ์์ฐจ ์ง๊ธ) ์์ฒด์ ํจ๊ณผ๋ ์ ent_coef=0.05 ๊ธฐ์ค์ผ๋ก
๊ฒ์ฆํ๋ค. ๊ฐ์ ์กฐ๊ฑด(40๋ง ์คํ
)์์ ์ปค๋ฆฌํ๋ผ ์์ด S4๋ก ๋ฐ๋ก ํ์ตํ
๋ชจ๋ธ(53.3ยฑ36.6%)๊ณผ ๋น๊ตํ๋ฉด ์ปค๋ฆฌํ๋ผ ์ชฝ์ด +12.15%p ๋๊ณ ๋ถ์ฐ๋ ๋
์์ง๋ง(65.4ยฑ28.2%), n=30 ํ๋ณธ์์ ํต๊ณ์ ์ผ๋ก ์ ์ํ ์์ค์ ์๋์๋ค(์์ธ๋
Hazard-Awareness Ablation ํ์ ๋ถ์ 4ยท5).
์ด ๋น๊ต ์์ฒด๋ ์ ์์ ํ(ent_coef=0.005 + bias ์ด๊ธฐํ) ๊ธฐ์ค์ผ๋ก๋ ์์ง
์ฌ๊ฒ์ฆ ์ ์ด๋ค. ๋ค๋ง ์์ ํ์ผ๋ก ์ฌํ์ตํ๋ ๊ณผ์ ์์ ์น๊ธ ๊ธฐ์ค(์ต๊ทผ 50
์ํผ์๋ ํ๊ท ์์กด์จ 0.90 ์ด์)์ด S4์์ ํ ๋ฒ๋ ์ถฉ์กฑ๋์ง ์๋๋ค๋ ๊ฑธ
๋ฐ๊ฒฌํด, ๊ธฐ์ค์ 0.85๋ก ๋ฎ์ถฐ ๋ค์ ํ์ตํ๋ ์ฒ์์ผ๋ก S4๊น์ง ์น๊ธํ๊ณ S4ยทS5
์์กด์จ์ด ํจ๊ป ๊ฐ์ ๋๋ค(์์ธ: ํ์ ๋ถ์ 7). ์น๊ธ ๊ธฐ์ค ์์ฒด๋ ์ฌ๊ฒ์ฆ์ด
ํ์ํ ํ์ดํผํ๋ผ๋ฏธํฐ์๋ ์
์ด๋ค.
ํผ์ฒ ๊ณต๊ฐ(F1~F15) ์ต์ ํ โ ์๋ฃ, 4์ฐจ์์ผ๋ก ์ถ์ ํ์ : ๊ด์ธก ๋ฒกํฐ
15์ฐจ์์ ์ด๊ธฐ ์ค๊ณ ์ดํ ์ฌ๊ฒํ ์์ด ์ฐ์ฌ์ค๋ค๊ฐ, ์ก์
๊ฒฝ๊ณ๊ฐ ๊ณ ์ ๋ฒ๊ทธ(์
"PPO ์ํคํ
์ฒ ๋ฏธ๊ฒ์ฆ" ํญ๋ชฉ)๋ฅผ ๊ณ ์น ์ ์ ์๋ ๋ชจ๋ธ ๊ธฐ์ค์ผ๋ก permutation
๊ฐ๋ณยท๊ทธ๋ฃน ๋ง์คํน๊ณผ 15ร15 ์๊ดํ๋ ฌ ๋ถ์์ ์ฌ๊ฒ์ฆํ๋ค. F3ยทF7ยทF8ยทF10ยทF11์ด
"์ถ๊ตฌ ์ ํธ"๋ผ๋ ๊ฐ์ ์ถ์ ์ค๋ณต ์ธ์ฝ๋ฉํ๊ณ (|r| 0.640.95), F1/F13ยทF2/F12๋
์ด ๊ฑด๋ฌผ ํ์์ ๊ณ ์ ๋ผ ์๊ด์ด ๋์๋ ๋ฐ๋ฉด(|r| 0.850.90), F1/F2์
F14/F15๋ ์์๊ณผ ๋ฌ๋ฆฌ ๋
๋ฆฝ์ ์ด์๋ค(|r|<0.06). ๊ทธ๋ฃน ๋จ์๋ก ๊ฐ๋ ค๋(HAZARD/
CROWD/PROGRESS/ALL_BLIND) ๋ํญ์ด ยฑ4.4%p ์ด๋ด์๊ณ , ์ด ๊ทผ๊ฑฐ๋ก F1, F2,
F14, F15 4๊ฐ๋ง ๋จ๊ธด ์ถ์ ๊ด์ธก์ ์ค๊ณํด ์ฒ์๋ถํฐ ์ฌํ์ตํ๋ค(feature_set= "reduced"). 15์ฐจ์ ๋ชจ๋ธ๊ณผ ํต๊ณ์ ์ผ๋ก ๊ตฌ๋ถ๋์ง ์๋ ์ฑ๋ฅ์ ํ์ธํด ์ด์
์ด๊ฒ ํ๋ก๋์
๊ธฐ๋ณธ ๋ชจ๋ธ์ด๋ค(์์ธ ์ซ์๋ ์ "๊ด์ธก ๊ณต๊ฐ" ์ , ์ ์ฒด ๊ฒฝ์๋
ํผ์ฒ ๊ณต๊ฐ ์ต์ ํ ๊ณํ).
Kim & Ha(2020)๊ฐ ๋ณด๊ณ ํ "observation dropout์ผ๋ก ๋ถํ์ํ ๊ด์ธก ์ฑ๋์ ์ ๊ฑฐํด๋ ์ ์ฑ ์ฑ๋ฅ์ด ์ ์ง๋๋ค"๋ ๊ฒฐ๊ณผ์ ๋ฐฉํฅ์ด ์ผ์นํ๋ค. S1(20๋ช )๋ ๋์ผ ์ ์ฐจ(3,506,176 ์คํ , threshold=0.85)๋ก 4์ฐจ์์ผ๋ก ์ฌํ์ตํด ๋ ์ธ์๋ (20๋ช ยท40๋ช ) ๋ชจ๋ ํ๋ก๋์ ๋ชจ๋ธ์ด 4์ฐจ์์ผ๋ก ๊ต์ฒด๋๋ค.
์ฌํ ๋ถ๊ฐ๋ฅํ ์ํคํ
์ฒ ๋ณํ: stage2/model/, stage2/logs/์๋
RecurrentPPOยทJointPPOยทAutoregressivePPO๋ก ํ์ตํ ์ฒดํฌํฌ์ธํธยท๋ก๊ทธ๊ฐ ์ผ๋ถ
๋จ์ ์์ผ๋, ํด๋น ์์ค ์ฝ๋๋ ์ ๋ฆฌ ๊ณผ์ ์์ ์ญ์ ๋๋ค(๊ฐ ๋ณํ ๋ชจ๋
30์๊ฐ ์ด์ ํ์ตํด๋ ์๋ ดํ์ง ์์ ํ๊ธฐ๋จ). ์ด ๊ฒฐ๊ณผ๋ฌผ๋ค์ ํ์ฌ ์ฌํ
๋ถ๊ฐ๋ฅํ๋ฉฐ, ํ 3 ๋ฑ ์ด๋ค ๋น๊ต์๋ ํฌํจํ์ง ์์๋ค.
ํํ ์ ์ถ์ฉ ์ธ๋ถ ์๊ณ ์์ ์ ํฉ์ฑ(์งํ ์ค): ํ๊ตญ์๋ฎฌ๋ ์ด์
ํํ๋
ผ๋ฌธ์ง
ํฌ๊ณ ๋ฅผ ์ํด ์ด ์ ์ฅ์ ๋ฐ์์ ๋ณ๋๋ก ์์ฑ ์ค์ธ ํ์ฅ ์๊ณ ๋ฅผ ์ง๋๊ต์๊ฐ
๊ฒํ ํ ๊ฒฐ๊ณผ, (1) ์๋๋ฆฌ์ค ๊ตฌ์ฑํ์์ S5๊ฐ ์ค์ SCENARIO_CONFIGS[5]
("EXIT B ์ํ")๊ฐ ์๋๋ผ S6("์ค์ ๊ฒฝ๋ก ์ฐจ๋จ")์ผ๋ก ์๋ชป ์ ํ ๋ถ๋ถ, (2)
์์กด์จ ํ์์ S3์ A* ๊ฐ์ด ๋ณต์ฌ ์ค๋ฅ๋ก ์ ์ ์ ๋๋ฑ ๊ฐ๊ณผ ๊ฐ๊ฒ ์ ํ ๋ถ๋ถ
(์ ํํ ๊ฐ์ 60.5, ์ ํ 3 ์ฐธ๊ณ ), (3) ์ฐธ๊ณ ๋ฌธํ ์์์ด ํํ ๊ณต์ ์์๊ณผ
๋ค๋ฅธ ๋ถ๋ถ์ด ์์ง ๋จ์์๋ค. ์์ธ์ ์ฒดํฌ๋ฆฌ์คํธ๋
paper-review-todo-2026-10.md.
Raw ๋ฐ์ดํฐ์ : ํ์ฌยท๊ตฐ์ค ์ค์ธก ๋ฐ์ดํฐ๋ ์ค๋ฆฌ์ ยทํ์ค์ ์ผ๋ก ์์ง์ด ๋ถ๊ฐ๋ฅํด ์ฌ์ฉํ์ง ์์๋ค. ์ด๋ ์ด ๋ถ์ผ(RL ๊ธฐ๋ฐ ํ์ฌ/๊ตฐ์ค ๋ํผ)์ ํ์ค ๊ดํ์ด๋ฉฐ, ์ ํ์ฐ๊ตฌ 4ํธ ๋ชจ๋ ๋์ผํ๋ค. ๊ตฐ์ค ๋ฌผ๋ฆฌ ๋ชจ๋ธ(Fruin 1971, Helbing 2000)์ ๊ฒ์ฆํ ์ ์๋ ์ค์ธก ๋ณดํ์ ๋ฐ์ดํฐ๋ ๋ณ๋๋ก ๊ณต๊ฐ๋ผ ์๋ค(์์ธ๋ ์๋ฎฌ๋ ์ด์ ํ๋ผ๋ฏธํฐ ๊ทผ๊ฑฐํ).
- KCI ์ ๋ ๊ฒ์ฌ๋ฅผ ์ํ ๋ณด์ ์ฌํญ ๋ถ์
- ์๋ฎฌ๋ ์ด์ ํ๋ผ๋ฏธํฐ ๊ทผ๊ฑฐํ: raw ๋ฐ์ดํฐ์ ๋ถ์ฌ๋ฅผ ๋ฌธํ ๊ทผ๊ฑฐ๋ก ๋ฐฉ์ดํ๋ ๋ฌธ์
- Hazard-Awareness Ablation: "ํ์ฌ ๋ฌด์" ๋ฒ ์ด์ค๋ผ์ธ์ด ์ค์ ๋ก๋ ํ์ฌ๋ฅผ ํํผํ๋ ๋ฒ๊ทธ์ ์์ ์ ํ ๋น๊ต, N ์ค์ผ์ผ๋งยทExit Balance ํ์ ๋ถ์
- ํผ์ฒ ๊ณต๊ฐ(F1~F15) ์ต์ ํ ๊ณํ: permutationยท๊ทธ๋ฃน ablation๊ณผ ์๊ด๋ถ์์ผ๋ก ์ค๋ณต์ฑ์ ๊ฒ์ฆํ๊ณ , F1/F2/F14/F15 4์ฐจ์ ์ถ์ํ์ ์ฌํ์ต๊น์ง ์๋ฃํ ์ ์ฒด ๊ฒฝ์
- Stage 1 ์ถ์ถ ์ ํ๋ ํ๊ฐ: ์ฌ์ง 1์ฅ ๊ธฐ์ค ground truth ๋๋น ํ์ค ์งํยท๊ด๋ํ ๋งค์นญยท์ฐ๊ฒฐ์ฑ ๋ณด์กด์จ ํ๊ฐ, ๋ฌธํ ๋์กฐ
- ๋ ผ๋ฌธ ํฌ๊ณ ์ ๋ณด์ ์ฌํญ (2026-10): ํ๊ตญ์๋ฎฌ๋ ์ด์ ํํ๋ ผ๋ฌธ์ง ํฌ๊ณ ์ฉ ํ์ฅ ์๊ณ ๊ฒํ ์์ ๋์จ ์ฌ์ค๊ด๊ณ ์ค๋ฅ(์๋๋ฆฌ์คํยท์์กด์จํ ์คํ)์, ์ ์ฑ ์ถ๋ก ์๊ฐ๋ง ์๋ ๊ธฐ์กด ์๋ ๋น๊ต๋ฅผ ์ ์ฒด ์ ์ด์ฃผ๊ธฐ(T_observation+T_policy+T_costmap+guidance) ๋ถํด ์ธก์ ์ผ๋ก ๋ณด์ํ ๋ด์ญ
- [1] J. Schulman et al., "Proximal Policy Optimization Algorithms," arXiv:1707.06347, 2017.
- [2] H.-K. Lee et al., "Research Evacuation Route Search in Case of Fire Using the F_A* Algorithm Based on the A* Algorithm," Fire Sci. Eng., vol. 39, no. 1, pp. 22โ32, 2025.
- [3] C.-Z. Xie et al., "Coordinating Dynamic Signage for Evacuation Guidance: A Multi-Agent Reinforcement Learning Approach Integrating Mesoscopic Crowd Modeling and Fire Propagation," Chaos, Solitons & Fractals, 2025.
- [4] D. Xu, X. Huang, J. Mango, X. Li, & Z. Li, "Simulating multi-exit evacuation using deep reinforcement learning," Transactions in GIS, 2021.
- [5] Y. Zhang, Z. Chai, & G. Lykotrafitis, "Deep reinforcement learning with a particle dynamics environment applied to emergency evacuation of a room with obstacles," Physica A, 571, 2021.
- [6] J. T. Kim & S. Ha, "Observation Space Matters: Benchmark and Optimization Algorithm," arXiv:2011.00756, 2020.
- [7] S. Zeng, X. Yang, X. Yeung, S. Fu, & W. Chun, "Deep Floor Plan Recognition Using a Multi-Task Network with Room-Boundary-Guided Attention," ICCV, 2019.
- [8] A. Kalervo, J. Ylioinas, M. Hรคikiรถ, A. Karhu, & J. Kannala, "CubiCasa5K: A Dataset and an Improved Multi-Task Model for Floorplan Image Analysis," arXiv:1904.01920, 2019.
- [9] L.-P. de las Heras, O. R. Terrades, S. Robles, & G. Sรกnchez, "Statistical segmentation and structural recognition for floor plan interpretation," IJDAR, 2014.
- [10] C. Liu, J. Wu, P. Kohli, & Y. Furukawa, "Raster-to-Vector: Revisiting Floorplan Transformation," ICCV, 2017.
- Fruin, J. J. (1971). Pedestrian Planning and Design. Metropolitan Association of Urban Designers.
- Helbing, D., Farkas, I., & Vicsek, T. (2000). Simulating dynamical features of escape panic. Nature, 407, 487โ490.
- Henderson, L. F. (1974). On the fluid mechanics of human crowd motion. Transportation Research, 8(6), 509โ515.





