황현동 블로그 개발, 인생, 유우머

260216 3D 간섭해결 재배치 AI 휴리스틱 종합

Tags:

⚖️ 260216 3D 간섭 해결 재배치 솔루션 종합 리서치 - AI vs 휴리스틱

📝 작성일: 2026-02-16
💡 문서 목적: 3D 공간에서 배치된 객체들의 간섭(Clash)을 이동/길이조정을 통해 해결하는 재배치 문제에 대한 종합 리서치
핵심 키워드: Clash Detection, Collision Resolution, Reinforcement Learning, Genetic Algorithm, GNN, Diffusion Model, CSP, MEP Routing, BIM, NSGA-II, XPBD, Motion Planning
💡 조사 범위: BIM / CAD / 로보틱스 / 게임 엔진 / 건축 설계 / 수학적 최적화


📚 목차


🧠 Part 1. 문제 정의와 수학적 기초

🧠 1.1 문제의 수학적 정의

🧭 1.1.1 문제 개요

3D 객체 배치 최적화 문제는 주어진 3차원 공간 내에서 복수의 객체를 비중첩(non-overlapping) 조건과 다양한 제약조건을 만족시키면서 배치하는 문제이다. BIM(Building Information Modeling) 환경에서 MEP(기계, 전기, 배관) 요소들의 간섭을 해결하는 재배치 문제로 직접 연결된다.

3차원 공간에 배치된 복수의 객체(배관, 덕트, 구조 부재, 케이블 트레이 등)가 서로의 물리적 영역을 침범하는 현상을 간섭(Clash) 또는 충돌(Collision) 이라 한다. BIM 환경에서는 이를 Clash Detection이라 부르며, 건축/MEP 설계 조율의 핵심 과정이다.

일반적 정의: n개의 3D 객체 O = {o_1, o_2, ..., o_n}이 주어졌을 때, 각 객체의 배치 구성(configuration) q_i = (x_i, y_i, z_i, theta_i, phi_i, psi_i)를 결정하여 목적함수를 최적화하면서 모든 제약조건을 만족시키는 문제이다.

최적화 문제:
  minimize   f(q_1, q_2, ..., q_n)
  subject to g_j(q_1, ..., q_n) <= 0,   j = 1, ..., m   (부등식 제약)
             h_k(q_1, ..., q_n) = 0,    k = 1, ..., p   (등식 제약)
             q_i in C_free,              i = 1, ..., n   (실현 가능 영역)

여기서:
- q_i = (x_i, y_i, z_i, theta_i, phi_i, psi_i): 객체 i의 위치(3) + 회전(3) = 6 자유도(DOF)
- f: 목적함수 (간섭 수 최소화, 총 이동거리 최소화 등)
- g_j: 부등식 제약 (비중첩, 이격거리, 공간 범위 등)
- h_k: 등식 제약 (연결점 유지, 고정 지점 등)
- C_free: 실현 가능한 구성 공간(free configuration space)

🔹 1.1.2 해결 행동의 분류

간섭을 해결하기 위한 객체 조작은 크게 세 가지로 분류된다.

  • 이동(Translation): 객체를 x, y, z축 방향으로 평행 이동
  • 회전(Rotation): 객체를 특정 축을 중심으로 회전
  • 길이/크기 조정(Resizing/Rerouting): 배관 경로 변경, 엘보/티 삽입, 단면 크기 변경

🔹 1.1.3 3D Packing Problem과의 관계

본 문제는 고전적인 3D Packing Problem의 변형이다.

구분 표준 3D Packing BIM 간섭 해결 재배치
객체 형상 직육면체(box) 중심 복잡한 3D 형상 (배관, 덕트, 철골 등)
용기 단일/복수 bin 건물 내부 공간 (비정형)
초기 상태 빈 공간에서 시작 기존 배치에서 시작 (재배치)
연결 제약 없음 배관/전선 연결 유지 필수
목적함수 공간 활용률 최대화 간섭 해소 + 이동 최소화
실시간성 오프라인 해결 가능 인터랙티브 요구 가능

Stoyan과 Romanova(2012)는 phi-객체(phi-objects) 개념을 도입하여 phi-함수를 비중첩 제약의 분석 도구로 사용하는 체계를 수립하였다.

phi-함수 정의:
  Phi(A, B) > 0   : A와 B가 분리됨 (separated)
  Phi(A, B) = 0   : A와 B가 접촉 (touching)
  Phi(A, B) < 0   : A와 B가 중첩됨 (overlapping)

⚠️ 1.1.4 CSP(Constraint Satisfaction Problem)으로의 정식화

CSP는 변수(Variables), 도메인(Domains), 제약(Constraints)의 3-tuple (X, D, C)로 정의된다.

변수(Variables):
  X = {x_1, y_1, z_1, theta_1, ..., x_n, y_n, z_n, theta_n}

도메인(Domains):
  D(x_i) = [x_min, x_max]
  D(theta_i) = {0, pi/2, pi, 3pi/2}  -- 이산 회전 (또는 [0, 2pi) 연속)
  D(r_i) = {route_1, ..., route_R}    -- 경로 후보군

제약조건(Constraints):
  비중첩: for all i != j: Volume(o_i) intersection Volume(o_j) = empty
  포함:   for all i: o_i subset Omega  (건물 공간 내에 포함)
  연결:   for all (i,j) in E_connect: dist(connection_point(o_i), connection_point(o_j)) = 0
  이격:   for all i != j: dist(o_i, o_j) >= d_min(i, j)

🔹 1.1.5 Mixed Integer Programming(MIP)으로의 정식화

직육면체(box) 객체에 대한 기본 MIP 정식화이다.

비중첩 제약 (Big-M Disjunctive Formulation):

x_i + w_i <= x_j + M(1 - delta_ij^1)     ... (i가 j의 x- 방향)
x_j + w_j <= x_i + M(1 - delta_ij^2)     ... (i가 j의 x+ 방향)
y_i + d_i <= y_j + M(1 - delta_ij^3)
y_j + d_j <= y_i + M(1 - delta_ij^4)
z_i + h_i <= z_j + M(1 - delta_ij^5)
z_j + h_j <= z_i + M(1 - delta_ij^6)

delta_ij^1 + delta_ij^2 + ... + delta_ij^6 >= 1

재배치 문제 특화 MIP:

minimize  alpha * sum(||q_i - q_i^0||) + beta * N_clash
subject to
  비중첩 제약 (위의 Big-M 정식화)
  포함 제약: 0 <= x_i, y_i, z_i; x_i + w_i' <= W, ...
  연결 제약: |connection_out(i) - connection_in(j)| = 0, for (i,j) in E
  이동 제약: ||q_i - q_i^0|| <= D_max
  고정 제약: q_i = q_i^0, for i in Fixed

💡 참고: Springer - Stoyan & Romanova, Wiley - Paquay et al.


🧠 1.2 간섭(Clash) 유형의 수학적 분류 (Hard/Soft/Clearance/4D)

🔹 1.2.1 Hard Clash: 물리적 관통

두 객체가 동일한 물리적 공간을 점유하여 기하학적으로 교차하는 상태이다.

Hard Clash 조건:
  V_A intersection V_B != empty

정량적 측정:
  관통 볼륨: V_overlap = Volume(V_A intersection V_B)
  관통 깊이: d_p = min{ ||v|| : (V_A + v) intersection V_B = empty }  (EPA로 계산)

phi-함수 표현:
  Phi(A, B) < 0  <==>  Hard Clash 존재

허용 공차: 0mm ~ 3mm (실무적 시공 오차 감안)

🔹 1.2.2 Soft Clash: 이격거리 미확보

두 요소가 물리적으로 교차하지는 않지만, 규정된 최소 이격거리를 확보하지 못한 상태이다.

Soft Clash(A, B, d_min):
  dist(A, B) < d_min  AND  V_A intersection V_B = empty

Minkowski Sum 기반 표현:
  A_expanded = A (+) B_{d_min/2}
  Soft Clash  <==>  A_expanded intersection B_expanded != empty  AND  A intersection B = empty

요소 유형별 최소 이격거리 (실무):

요소 조합 최소 이격거리
전기 배선 - 수배관 150mm
덕트 - 구조 보 50mm
배관 - 배관 25mm
스프링클러 - 천장 25~50mm
유지보수 접근 공간 100~300mm

🔹 1.2.3 Clearance Clash: 유지보수 공간 미확보

비등방적(anisotropic) 이격거리가 필요한 경우이다. 유지보수 방향에 따라 다른 이격거리를 적용한다.

Clearance Zone(o_i):
  front:  d_front  (접근 방향, 가장 큰 값)
  back:   d_back
  left/right/top/bottom: 각각 다른 값

예시 - 밸브(Valve):
  전면(핸들 방향): 600mm
  후면: 50mm, 좌우: 100mm, 상하: 150mm

🔹 1.2.4 4D Clash: 시간축 포함 간섭

공간적으로는 간섭이 없지만, 시공 순서를 고려할 때 시간-공간적으로 충돌이 발생하는 경우이다.

V_4D(o_i) = Volume(o_i) x [t_start_i, t_end_i]

4D Clash 조건:
  Volume(o_i) intersection Volume(o_j) != empty
  AND  t_start_i < t_end_j  AND  t_start_j < t_end_i

4가지 유형:
  Type 1: 물리적 4D (임시 구조물 vs 최종 구조물)
  Type 2: 작업 영역 4D (동일 공간 동시 작업 불가)
  Type 3: 접근 경로 4D (자재 반입 경로 충돌)
  Type 4: 순서 의존 4D (선행 작업 미완료)

⚖️ 1.2.5 간섭 유형 종합 비교

+--------------------------------------------------+
| 4D Clash (시공 순서 포함)                          |
|  +--------------------------------------------+  |
|  | Clearance Clash (비등방 이격거리)             |  |
|  |  +--------------------------------------+  |  |
|  |  | Soft Clash (등방 이격거리)              |  |  |
|  |  |  +------------------------------+    |  |  |
|  |  |  | Hard Clash (물리적 관통)       |    |  |  |
|  |  |  +------------------------------+    |  |  |
|  |  +--------------------------------------+  |  |
|  +--------------------------------------------+  |
+--------------------------------------------------+
유형 공간 조건 시간 조건 심각도 감지 난이도
Hard Clash V_i inter V_j != empty - 최고 낮음
Soft Clash dist(i,j) < d_min - 높음 중간
Clearance CZ_i inter V_j != empty - 중간 중간
4D Clash WZ_i inter WZ_j != empty T_i inter T_j 가변 높음

🧠 1.3 관련 수학/CS 분야

🔹 1.3.1 Computational Geometry: Minkowski Sum, Configuration Space

Minkowski Sum: 두 점 집합 A와 B의 합 A (+) B = { a + b : a in A, b in B }. 장애물 공간에서의 C-obstacle 계산에 활용된다.

C_obs = O (+) (-R)   (O: 장애물, R: 로봇/객체)

Configuration Space (C-Space): 객체의 모든 가능한 구성의 집합이다.

C = C_free  union  C_obs
C_free = { q in C : Robot(q) intersection Obstacles = empty }

n개 객체, 각 6DOF: 전체 C-Space = 6n 차원

🔹 1.3.2 Motion Planning: C-Space 개념

객체 재배치 문제는 Multi-Agent Motion Planning(MAPF) 의 변형으로 볼 수 있다. 최근 AAAI SOCS에서 MAPF 알고리즘을 3D Pipe Routing 문제에 적용한 연구가 발표되었다.

Sampling-based Planning:
  PRM: C_free에서 랜덤 샘플링 후 그래프 구성
  RRT: 트리를 점진적으로 확장하여 목표에 도달
  RRT*: 점근적 최적성 보장이 추가된 RRT

🔹 1.3.3 Combinatorial Optimization

조합 최적화 분류 체계:
  Assignment Problems (QAP - 시설 배치)
  Packing Problems (Bin Packing 1D/2D/3D, Strip Packing, Knapsack)
  Cutting Problems (Cutting Stock, Guillotine)
  Routing Problems (VRP, Pipe Routing)
  Scheduling Problems (Job-shop, 4D 시공 순서)

메타휴리스틱 접근법:

알고리즘 핵심 메커니즘 BIM 적용 사례
SA 온도 기반 확률적 수용 MEP 충돌 해소 (ISARC 2019)
GA 선택, 교차, 변이 철근 충돌 해소, 배치 최적화
NSGA-II 비지배 정렬, 혼잡도 거리 다목적 충돌 해소 (2024)
PSO 군집 지능 시설 배치 최적화
ACO 페로몬 기반 경로 탐색 배관 라우팅

💡 참고: AAAI SOCS - Pipe Routing, ScienceDirect - Anjos & Vieira


🎯 1.4 목적함수 및 제약조건 설계

🎯 1.4.1 단일 목적 최적화

간섭 수 최소화:     f_1(q) = sum_{i<j} max(0, -Phi(o_i(q_i), o_j(q_j)))
총 이동거리 최소화: f_2(q) = sum_i ||q_i - q_i^0||_p
관통 볼륨 최소화:   f_3(q) = sum_{i<j} Volume(V_i intersection V_j)
최대 이동거리 최소화(Min-Max): f_4(q) = max_i ||q_i - q_i^0||

🎯 1.4.2 다목적 최적화

minimize  F(q) = (f_1, f_2, ..., f_K)

Pareto 최적성:
  q^a dominates q^b  <==>
    f_k(q^a) <= f_k(q^b) for all k  AND  exists k: f_k(q^a) < f_k(q^b)

접근법 비교:

  • 가중합법: 비볼록 Pareto Front 발견 불가
  • epsilon-Constraint: 비볼록 Front 발견 가능, 시간 복잡도 O(p^{K-1})
  • NSGA-II: BIM 충돌 해소에 가장 많이 적용. 비지배 정렬 복잡도 O(K * N^2)

🔹 1.4.3 제약조건 종합

+-----------------------------------------------------------------------+
| 제약 유형          | 수학적 형태             | 선형화 가능 여부       |
|--------------------|-------------------------|------------------------|
| 비중첩             | disjunctive inequality  | Big-M으로 MIP 가능     |
| 이격거리           | dist >= d_min           | Big-M 확장으로 가능    |
| 포함               | linear inequalities     | 직접 선형              |
| 연결 유지          | equality constraint     | 직접 선형              |
| 구배 유지          | linear inequality       | 직접 선형              |
| 유지보수 공간      | directional clearance   | Big-M 확장 (복잡)      |
| 시간 분리 (4D)     | disjunctive + temporal  | Big-M + 시간 변수      |
+-----------------------------------------------------------------------+

🔍 1.5 해 공간(Solution Space) 분석

🔹 1.5.1 해 공간 크기 추정

이산 해 공간 (G^3 그리드, 6 직교 회전):
  단일 객체: 6 * G^3
  n개 객체:  (6 * G^3)^n

  G=100, n=50:  ~10^339
  G=100, n=100: ~10^678  (관측 가능한 우주의 원자 수 ~10^80 압도)

연속 해 공간 (6 DOF):
  n=50:  300차원
  n=100: 600차원
  n=500: 3000차원

🔹 1.5.2 실현 가능 영역의 특성

  • 비볼록성: 비중첩 제약이 본질적으로 비볼록 영역을 생성
  • 단절성: 장애물 배치에 따라 여러 연결 성분으로 분리 가능
  • 고차원 축소: 실현 가능 비율 ~ exp(-c * n^2)
  • 국소 최적해가 문제 크기에 따라 지수적으로 증가

📌 1.6 NP-Hard 복잡도와 실무적 함의

🔹 1.6.1 NP-Hardness 증명

3-Partition Problem (NP-Hard)  -->  1D-BPP  -->  2D-BPP  -->  3D-BPP  -->  3D Object Rearrangement

🔹 1.6.2 최근 근사 비율 성과 (2025, ICALP)

문제 이전 최선 최신 결과
3D-BPP 13 6
3D-SPP 46/7 6
점근적 ~2.86 ~2.54

🔹 1.6.3 실무적 함의

  1. 다항 시간 정확해 불가: 정확한 최적해를 합리적 시간 내에 구할 수 없다
  2. 휴리스틱/메타휴리스틱 필수: SA, GA, NSGA-II 등 근사 알고리즘이 필수
  3. 문제 분해 전략: 대규모 문제를 소규모 하위 문제로 분해하여 각각 해결
  4. 품질 보장 한계: 최적해와의 차이를 정밀하게 보장하기 어려움

💡 참고: arXiv - 3D BPP Improved


🧠 Part 2. 충돌 감지(Collision Detection) 알고리즘

충돌 감지는 Broad Phase(대략적 필터링)와 Narrow Phase(정밀 검사)의 2단계로 구성된다.

📌 2.1 Broad Phase: AABB, Spatial Hashing

🔹 2.1.1 AABB (Axis-Aligned Bounding Box)

객체를 월드 좌표축에 정렬된 직육면체로 감싸고, 모든 축에서 범위가 겹치면 충돌 후보로 판정한다.

function AABB_Intersect(a, b):
    if a.maxX < b.minX or a.minX > b.maxX: return false
    if a.maxY < b.minY or a.minY > b.maxY: return false
    if a.maxZ < b.minZ or a.minZ > b.maxZ: return false
    return true
항목 복잡도
단일 쌍 검사 O(1) - 6회 비교
Brute-force O(n^2)
Sweep-and-Prune O(n log n) 초기, O(n + k) 이후
  • 장점: 구현 극히 단순, SIMD 벡터화 적합
  • 단점: 회전 시 False Positive 증가, 대각선 객체에 부정확

🔹 2.1.2 Spatial Hashing

3D 공간을 균일 셀로 분할하고, 해시 테이블에 매핑하여 같은 버킷의 객체 쌍만 검사한다.

function SpatialHash_BroadPhase(objects, cellSize):
    hashTable = {}
    for obj in objects:
        cells = GetOccupiedCells(obj.aabb, cellSize)
        for cell in cells:
            hashKey = Hash(cell.x, cell.y, cell.z)
            hashTable[hashKey].append(obj)
    // 같은 버킷 내 쌍 검사
    ...

function Hash(x, y, z):
    return (x * 92837111 ^ y * 689287499 ^ z * 283923481) % TABLE_SIZE

성능: O(n) 평균 (균일 분포 시), 20,000+ 객체 실시간 처리 가능

💡 참고: MDN - 3D Collision Detection, Matthias Teschner - Optimized Spatial Hashing


🧠 2.2 Narrow Phase: OBB, GJK, SAT

🔹 2.2.1 OBB (Oriented Bounding Box)

객체의 주축 방향에 맞춰 회전된 직육면체. 분리축 정리(SAT) 로 교차 검사한다. 3D OBB-OBB 검사 시 테스트할 분리축: 3 + 3 + 9 = 15축.

function OBB_Intersect(A, B):
    axes = [A.axisX, A.axisY, A.axisZ, B.axisX, B.axisY, B.axisZ]
    for i in A.axes:
        for j in B.axes:
            axes.append(Normalize(CrossProduct(i, j)))
    for axis in axes:
        if not Overlap(ProjectOBB(A, axis), ProjectOBB(B, axis)):
            return false   // 분리축 발견
    return true

🧠 2.2.2 GJK (Gilbert-Johnson-Keerthi) 알고리즘

볼록 형상 간의 최소 거리/교차 여부를 판정하는 반복 알고리즘. 민코프스키 차(Minkowski Difference)가 원점을 포함하면 충돌이다.

function GJK(shapeA, shapeB):
    d = initial_direction
    simplex = [Support(A-B, d)]
    d = -simplex[0]
    loop:
        point = Support(A-B, d)
        if Dot(point, d) < 0: return NO_COLLISION
        simplex.add(point)
        if DoSimplex(simplex, d): return COLLISION
항목 복잡도
반복당 O(1)
수렴까지 일반적으로 10회 이내
총 복잡도 O(n) (n = 꼭짓점 수)
  • 장점: 형상 종류에 무관(볼록이면), 메모리 극소, 빠른 수렴
  • 단점: 오목(concave) 형상 직접 불가, 관통 깊이 미제공 (EPA 필요)

🧠 2.2.3 SAT (Separating Axis Theorem)

모든 후보 축에 투영하여, 하나라도 겹치지 않으면 비충돌. MTV(최소 이동 벡터) 를 직접 산출 가능하다.

function SAT_with_MTV(A, B):
    min_overlap = INFINITY
    for axis in CandidateAxes(A, B):
        overlap = ComputeOverlap(Project(A, axis), Project(B, axis))
        if overlap <= 0: return NO_COLLISION, null
        if overlap < min_overlap:
            min_overlap = overlap
            mtv_axis = axis
    return COLLISION, mtv_axis * min_overlap

💡 참고: Winter.dev - GJK, dyn4j - SAT, GitHub - gjk.c


🧠 2.3 BVH (Bounding Volume Hierarchy)

객체들을 바운딩 볼륨의 트리 구조로 계층 조직. 루트는 전체 장면, 리프는 개별 객체. 부모 볼륨이 교차하지 않으면 자식 전체를 가지치기.

function BVH_Query(nodeA, nodeB):
    if not Intersect(nodeA.bv, nodeB.bv): return
    if nodeA.isLeaf and nodeB.isLeaf:
        NarrowPhaseTest(nodeA.obj, nodeB.obj)
        return
    if nodeA.volume > nodeB.volume:
        BVH_Query(nodeA.left, nodeB)
        BVH_Query(nodeA.right, nodeB)
    else:
        BVH_Query(nodeA, nodeB.left)
        BVH_Query(nodeA, nodeB.right)
항목 복잡도
구축 (Top-Down) O(n log n)
질의 O(n log n) 평균
갱신 (Refit) O(n)

💡 참고: Wikipedia - BVH, NVIDIA - Parallel BVH Construction


⚖️ 2.4 알고리즘 종합 비교

알고리즘 단계 정확도 속도 볼록 제한 MTV 제공 적용 대상
AABB Broad 낮음 매우 빠름 없음 아니오 1차 필터링
OBB (SAT) Broad/Narrow 중간 빠름 볼록만 방향성 객체
BVH Broad 중간 빠름 (대규모) 없음 아니오 대규모 장면
GJK Narrow 높음 빠름 볼록만 아니오 정밀 검사
SAT Narrow 높음 중간 볼록만 다면체 검사
Spatial Hash Broad 낮음 매우 빠름 없음 아니오 균일 크기 객체

📌 2.5 Spatial Indexing (Octree, KD-Tree, R-Tree)

구조 구축 시간 질의 시간 메모리 동적 갱신 적용
Octree O(n log n) O(log n) 중간 중간 균일 분포 3D 장면
KD-Tree O(n log n) O(log n) 낮음 느림 최근접 이웃 질의
R-Tree O(n log n) O(log n + k) 중간 빠름 공간 범위 질의
Spatial Hash O(n) O(1) 평균 높음 매우 빠름 균일 크기 객체
BVH O(n log n) O(log n) 중간 Refit O(n) 비균일 객체

하이브리드 접근: Octree + 3D R*-Tree가 단일 구조 대비 구축 및 질의 모두에서 우수한 성능을 보인다.

💡 참고: MDPI - Hybrid Octree + R*-Tree


📝 Part 3. 휴리스틱 기반 솔루션

🧠 3.1 충돌 해결 알고리즘 (EPA, MTV, Push-out)

🔹 3.1.1 EPA (Expanding Polytope Algorithm)

GJK가 “충돌함”으로 판정한 후, 정확한 관통 깊이와 관통 방향(접촉 법선) 을 계산하는 알고리즘이다.

function EPA(simplex, shapeA, shapeB):
    polytope = InitPolytope(simplex)
    loop:
        closestFace = FindClosestFace(polytope)
        support = Support(A-B, closestFace.normal)
        newDist = Dot(support, closestFace.normal)
        if (newDist - closestFace.distance) < TOLERANCE:
            return (closestFace.normal, closestFace.distance)
        RemoveFacingFaces(polytope, support)
        FillHole(polytope, support)

🔹 3.1.2 MTV (Minimum Translation Vector) 기반 분리

function ResolvePenetration(objA, objB, mtv):
    // 방법 1: 한쪽만 이동
    objA.position += mtv
    // 방법 2: 질량 비례 분배
    totalMass = objA.mass + objB.mass
    objA.position += mtv * (objB.mass / totalMass)
    objB.position -= mtv * (objA.mass / totalMass)
    // 방법 3: 우선순위 기반 (BIM)
    if objA.priority < objB.priority:
        objA.position += mtv
    else:
        objB.position -= mtv

🚀 3.1.3 Push-out vs 최적화 기반 재배치

구분 물리 기반 Push-out 최적화 기반 재배치
원리 MTV 방향으로 즉각 이동 목적함수 최소화
속도 매우 빠름 느림
품질 국소적 최적 전역적 최적 가능
연쇄 충돌 새 충돌 유발 가능 전체적 고려 가능
적용 실시간 게임 물리 BIM 설계 최적화

💡 참고: dyn4j - EPA, Winter.dev - EPA Algorithm


📌 3.2 경로 탐색/라우팅 (3D A*, RRT, PRM)

🧠 3.2.1 A* 알고리즘의 3D 확장

건물 공간을 3D 복셀(voxel) 그리드로 이산화하여 MEP 직교 라우팅에 적용한다.

function AStar_3D_MEP(start, goal, voxelGrid):
    openSet = PriorityQueue()
    openSet.push(start, f=0)
    while openSet is not empty:
        current = openSet.pop()
        if current == goal: return ReconstructPath(cameFrom, current)
        for neighbor in OrthogonalNeighbors(current):  // +X,-X,+Y,-Y,+Z,-Z
            if voxelGrid[neighbor] == BLOCKED: continue
            turnPenalty = TURN_COST if direction_changed else 0
            heightPenalty = HEIGHT_COST if neighbor.z != current.z else 0
            tentative_g = gScore[current] + 1 + turnPenalty + heightPenalty
            ...

MEP 특화 비용 함수:

비용 항목 가중치
이동 거리 1.0
방향 전환 (엘보) 5.0
높이 변경 3.0
클리어런스 위반 10.0
기존 배관 근접 (병렬) -0.5 (보너스)

시간복잡도: O(WHD log(WHD)) (W x H x D 그리드)

💻 3.2.2 RRT (Rapidly-exploring Random Tree)

무작위 샘플링으로 트리를 확장하며 경로를 탐색. 고차원/복잡 장애물에 강하다.

function RRT(start, goal, obstacles, maxIter):
    tree = Tree(root=start)
    for i in range(maxIter):
        qRand = goal if random() < GOAL_BIAS else RandomSample()
        qNearest = tree.NearestNeighbor(qRand)
        qNew = Steer(qNearest, qRand, stepSize)
        if CollisionFree(qNearest, qNew, obstacles):
            tree.AddNode(qNew, parent=qNearest)
            if Distance(qNew, goal) < threshold:
                return ExtractPath(tree, qNew)
    return FAILURE

RRT*: 반경 내 이웃 탐색 + 재연결(Rewire)로 점근적 최적성 보장.

🔹 3.2.3 PRM (Probabilistic Roadmap Method)

전처리 단계에서 로드맵을 구축, 질의 단계에서 Dijkstra/A*를 적용. 다수의 시작/목표 쌍에 로드맵 재활용 가능.

항목 A* 3D Grid RRT/RRT* PRM
장점 최적 보장, 직교 자연스러움 고차원 강함 다수 질의 효율
단점 메모리 큼 비결정적 전처리 시간
MEP 적합성 직교 배관에 최적 자유 형상 정적 환경

💡 참고: AAAI - Pipe Routing in 3D, Wikipedia - RRT


🚀 3.3 최적화 기반 (LP/MIP, SA, PSO)

🔹 3.3.1 LP/MIP

Big-M 기법으로 비중첩 제약을 선형화하여 상용 솔버(Gurobi, CPLEX)로 해결. LP는 다항시간, MIP는 NP-Hard이나 실용적으로 수천 변수 처리 가능.

🔹 3.3.2 Simulated Annealing (SA)

function SA_ClashResolution(objects, clashes, T_init, T_min, alpha):
    state = CurrentPositions(objects)
    bestState = state
    T = T_init
    while T > T_min:
        neighbor = Perturb(state)
        deltaCost = Cost(neighbor) - Cost(state)
        if deltaCost < 0:
            state = neighbor
        else:
            if random() < exp(-deltaCost / T):
                state = neighbor
        if Cost(state) < Cost(bestState): bestState = state
        T = T * alpha
    return bestState

🔹 3.3.3 Particle Swarm Optimization (PSO)

각 파티클이 자신의 최적(pBest)과 전체 최적(gBest)을 기준으로 이동. 시간복잡도: O(maxIter x numParticles x evaluationCost).

🎯 3.3.4 NSGA-II 기반 다목적 최적화

function NSGA2_ClashResolution(population, maxGen):
    for gen in range(maxGen):
        fronts = FastNonDominatedSort(population)
        for front in fronts: CrowdingDistanceAssignment(front)
        parents = TournamentSelection(population, fronts)
        offspring = Crossover(parents) + Mutation(parents)
        offspring = FilterFeasible(offspring, constraints)
        combined = population + offspring
        population = SelectByRankAndCrowding(combined, popSize)
    return ParetoFront(population)

💡 참고: ScienceDirect - NSGA-II BIM Clash Resolution, Gurobi - MIP Primer


⚠️ 3.4 제약 기반 (Constraint Propagation, 이격거리)

🔹 3.4.1 제약 전파 (AC-3 기반)

function ConstraintPropagation(objects, constraints):
    queue = AllConstraints(constraints)
    while queue is not empty:
        constraint = queue.dequeue()
        if Revise(objA, objB, constraint):
            if Domain(objA) is empty: return FAILURE
            for c in ConstraintsInvolving(objA) - {constraint}:
                queue.enqueue(c)
    return SUCCESS

🔹 3.4.2 계층적 제약 해결 전략

우선순위 1 (하드): 구조체 관통 불가, 공간 경계, 연결 유지
우선순위 2 (규범): 이격거리, 지지 간격, 경사 기울기
우선순위 3 (소프트): 이동 최소화, 꺾임 최소화, 병렬 정렬

🧠 3.5 게임 물리 엔진 접근 (PhysX, Sequential Impulse, XPBD)

🏗️ 3.5.1 NVIDIA PhysX 아키텍처

매 물리 프레임:
1. Broad Phase (SAP / BVH) -> 잠재적 충돌 쌍
2. Narrow Phase (GJK + EPA / SAT) -> 접촉 매니폴드
3. Constraint Solver (Sequential Impulse / TGS) -> 접촉+조인트 동시 해결
4. Integration -> 속도/위치 갱신

🔹 3.5.2 Sequential Impulse Solver

Erin Catto(Box2D 저자)가 제안한 방식. 제약을 순차적으로 해결하되 여러 번 반복하여 전역 해에 수렴한다.

function SequentialImpulseSolver(contacts, joints, iterations):
    for contact in contacts: ApplyAccumulatedImpulse(contact)  // Warm Starting
    for iter in range(iterations):
        for contact in contacts:
            relVel = GetRelativeVelocity(contact)
            bias = -BETA * max(0, penetration - SLOP) / dt + RESTITUTION * normalVel
            lambda = -(normalVel + bias) / effectiveMass
            // 누적 충격량 클램핑
            contact.accumulatedLambda = max(0, oldLambda + lambda)
            // 충격량 적용
            ...

🔹 3.5.3 XPBD (Extended Position Based Dynamics)

PBD의 한계(강성이 반복 횟수에 의존)를 컴플라이언스(compliance) 매개변수로 해결.

delta_lambda = (-C(x) - alpha_tilde * lambda) / (grad_C * M_inv * grad_C^T + alpha_tilde)
delta_x = M_inv * grad_C^T * delta_lambda
alpha_tilde = alpha / (dt^2)   // alpha=0 -> 완전 강체
구분 Impulse 기반 XPBD
작동 층위 속도 위치 직접
안정성 높은 강성 시 불안정 무조건 안정
물리 정확도 높음 XPBD: 높음
대표 엔진 Box2D, Bullet, PhysX Havok, XPBD 솔버

💡 참고: Erin Catto - Sequential Impulses GDC 2006, Miles Macklin - XPBD


🏢 3.6 BIM 특화 휴리스틱 (우선순위, 계층적 해결, 규칙 기반)

🔹 3.6.1 우선순위 매트릭스

객체 유형 우선순위 이동 가능성
구조 부재 (보, 기둥, 슬래브) 1 (최고) 이동 불가
주요 기계 장비 2 이동 불가/최소
소방 배관 (주관) 3 최소 이동
대구경 배관 (150mm+) 4 제한적 이동
공조 덕트 (주덕트) 5 제한적 이동
소구경 배관 (50mm 미만) 8 자유 이동
분기관/지관 9 (최저) 자유 이동

🔹 3.6.2 계층적 해결

Phase 1: Hard Clash (구조체 관통, 대구경 교차)
Phase 2: Soft Clash (이격거리 미달, 유지보수 공간)
Phase 3: 4D Clash (시공 순서 간섭)
Phase 4: 최적화 (병렬 정렬, 미관, 지지대)

🔹 3.6.3 규칙 기반 해결 (Rule-based)

Rule 1 (배관-보): 소구경이면 슬리브, 아니면 보 하부 우회
Rule 2 (배관-배관): 소구경을 수직 이동
Rule 3 (덕트-배관): 배관을 이동 (덕트 단면적이 커서 이동 비용 높음)
Rule 4 (케이블트레이): 항상 케이블트레이를 이동 (가장 유연)
Rule 5 (경사 배관): 경사 유지하며 전체 라인 시프트

🔹 3.6.4 이력 기반 (Pattern-based) 해결

과거 프로젝트의 유사 간섭 해결 패턴을 KNN으로 검색하여 추천한다.


📝 Part 4. AI 기반 솔루션

📌 4.1 강화학습 (RL) 기반 접근 (DQN, PPO, SAC)

🔹 4.1.1 상태/행동/보상 설계

# 상태 공간
S = {
    객체_위치: (x, y, z) for each object,
    간섭_맵: clash_matrix[i][j] = overlap_volume,
    공간_점유: occupancy_grid[x][y][z],
    제약_조건: constraint_satisfaction_vector
}

# 행동 공간
A = {
    이동: delta(x, y, z),
    회전: delta(roll, pitch, yaw),
    객체_선택: select(object_id)
}

# 보상 함수
def reward_function(state, action, next_state):
    r_clash = alpha * (count_clashes(state) - count_clashes(next_state))
    r_displacement = -beta * compute_displacement(action)
    r_constraint = -gamma * sum(check_constraints(next_state))
    r_cascade = -epsilon * count_new_clashes(state, next_state)
    r_terminal = omega if count_clashes(next_state) == 0 else 0
    return r_clash + r_displacement + r_constraint + r_cascade + r_terminal

⚖️ 4.1.2 주요 알고리즘 비교

알고리즘 행동 공간 장점 적용 사례
DQN 이산 안정적, 경험 재생 그리드 기반 배치
PPO 연속/이산 안정성, 범용성 3D bin packing
SAC 연속 탐색-활용 균형 로봇 모션 플래닝
APF-DDPG 연속 로컬 미니마 완화 로봇 팔 충돌 회피

🏢 4.1.3 적용 사례

  • MEP 배관 자동 라우팅: Liao et al. (2020) DRL 기반 글로벌 라우팅, A* burn-in 메모리 활용 (ASME)
  • 3D Bin Packing: BoxStacker, GOPT (Transformer), One4Many-StablePacker, DeepPack3D (MDPI)
  • 로봇 모션 플래닝: APF-DDPG 하이브리드 (Nature)

🧠 4.2 유전 알고리즘 / 진화 전략 (GA, NSGA-II)

🔹 4.2.1 염색체 인코딩 및 적합도 함수

# 염색체: 각 객체의 이동/회전 벡터
Chromosome = [(dx1,dy1,dz1,droll1,dpitch1,dyaw1), ..., (dxn,...)]

# 적합도 (다목적)
def fitness(chromosome):
    f1 = count_changed_components(chromosome)
    f2 = total_moving_distance(chromosome)
    f3 = count_remaining_clashes(chromosome)
    return (f1 + penalty, f2 + penalty, f3 + penalty)

🏢 4.2.2 NSGA-II 기반 BIM 간섭 해결 (2024 ScienceDirect)

  • 최적화 목적: (1) 변경 컴포넌트 수 최소화 (2) 이동 거리 최소화
  • 컴포넌트 공간 관계 네트워크(Component Spatial Relation Network) 기반
  • 지하 주차장(고밀도 MEP 설비)에서 실용성과 실행 가능성 검증
  • BIM 특화 유전 연산: 각 세대 모집단의 다양성과 구별성을 보존하면서 해의 실행 가능성 보장

🏢 4.2.3 ACO + A* 하이브리드 MEP 라우팅

  • 설계 효율 25-35% 향상, 충돌 발생률 약 40% 감소
  • 총 레이아웃 비용: A* 대비 67.0%, ACO 대비 68.5%, 수작업 대비 51.1% 절감

💡 참고: ScienceDirect - NSGA-II Clash Resolution, ScienceDirect - ACO+A*


📌 4.3 딥러닝/신경망 (GNN, PointNet, Diffusion Model, Transformer)

🔹 4.3.1 GNN (Graph Neural Network)

BIM 컴포넌트를 노드, 간섭/연결/영향 관계를 엣지로 표현. GCN으로 MEP 간섭 변경 컴포넌트를 예측.

  • Point-GNN: 포인트 클라우드 기반 3D 객체 탐지 (ScanNet 64.7% mAP@0.5)
  • VoxT-GNN (2025): 복셀 트랜스포머 + GNN

🔹 4.3.2 CabiNet (NVIDIA)

신경 충돌 탐지 모델. 쿼리당 7 마이크로초 추론, 베이스라인 대비 20% 높은 성능, 재배치 성능 35% 향상. Sim-to-Real 전이 성공.

🔹 4.3.3 Diffusion Model 기반

  • PhyScene (CVPR 2024 Highlight): 물리 제약 통합 3D 장면 합성 (GitHub)
  • DiffuScene: 잡음 제거 확산 모델
  • CommonScenes: VAE + Latent Diffusion

🔹 4.3.4 Transformer 기반

  • Non-Autoregressive Transformer: 오류 연쇄 누적 해결, 소규모 충돌 완화
  • GOPT: Transformer + DRL 기반 3D Bin Packing
  • DirectLayout: LLM 기반 3D 레이아웃 생성 (BEV -> 3D -> 정밀화)

🔹 4.3.5 ML 기반 간섭 분류/필터링

  • XGBoost/Random Forest/MLP: 허위 간섭(false positive) 필터링. 실무 즉시 적용 가능
  • MXGBoost: BIM 간섭 탐지 특화
  • ML + 규칙 기반 하이브리드: 견고성 향상

💡 참고: ScienceDirect - GCN Clash Prediction, NVIDIA CabiNet, PhyScene


📌 4.4 시뮬레이션 환경 (Unity ML-Agents, Isaac Lab)

🔹 4.4.1 Unity ML-Agents

특성 강점
3D 렌더링 BIM 모델 임포트 가능
물리 엔진 PhysX 기반 충돌 검출 내장
학습 알고리즘 PPO, SAC, MA-POCA 내장
병렬 환경 다수 환경 동시 실행

🔹 4.4.2 NVIDIA Isaac Sim / Isaac Lab

  • Isaac Lab: GPU 가속 시뮬레이션, PhysX 기반 고충실도 물리
  • GaussGym: 소비자 GPU에서 초당 100,000 스텝 이상

🔹 4.4.3 Gymnasium 호환 환경

class ClashResolutionEnv(gym.Env):
    def __init__(self, config):
        self.observation_space = gym.spaces.Dict({
            'voxel_grid': gym.spaces.Box(shape=(gx, gy, gz)),
            'clash_matrix': gym.spaces.Box(shape=(max_obj, max_obj)),
            'object_params': gym.spaces.Box(shape=(max_obj, 9))
        })
        self.action_space = gym.spaces.Dict({
            'object_id': gym.spaces.Discrete(max_obj),
            'translation': gym.spaces.Box(shape=(3,)),
            'rotation': gym.spaces.Box(shape=(3,))
        })

💡 참고: Unity ML-Agents, Isaac Lab


📌 4.5 CSP + AI 하이브리드

🔹 4.5.1 CSP 매핑

변수: V_i = (x_i, y_i, z_i, rx_i, ry_i, rz_i) -- 6-DOF
도메인: 그리드 포인트 또는 연속 구간
제약: C_no_clash, C_clearance, C_boundary, C_connectivity, C_priority

🔹 4.5.2 주요 솔버 및 하이브리드

  • CP-SAT (Google): 제약 전파 + SAT 솔빙 하이브리드
  • PDP-Solver (Microsoft): 메시지 패싱 기반 신경 CSP 솔버 (GitHub)
  • FourierCSP: Walsh-Fourier 확장 기반 미분 가능 CSP
  • 보상 쉐이핑 + 제약 프로그래밍: RL과 CSP 직접 결합 (Springer, 2025)

💡 참고: GitHub - PDP-Solver, arXiv - FourierCSP


📝 Part 5. 실제 구현과 상용 솔루션

🏢 5.1 상용 BIM 소프트웨어 간섭 해결 현황

⚖️ 5.1.1 상용 소프트웨어 자동화 수준 비교

소프트웨어 간섭 검출 분류/우선순위 자동 해결 AI 지원
Navisworks ★★★★★ ★★★☆☆ ☆☆☆☆☆ 서드파티(ClashWiseAI)
Revit ★★★☆☆ ★★☆☆☆ ☆☆☆☆☆ 미지원
Solibri ★★★★★ ★★★★★ ☆☆☆☆☆ 미지원
Tekla ★★★★☆ ★★★☆☆ ☆☆☆☆☆ 미지원
Bentley ★★★★☆ ★★★☆☆ ☆☆☆☆☆ 미지원
BAMROC ★★★☆☆ ★★★★☆ ★★★★☆ ★★★★★
ClashWiseAI ★★★☆☆ ★★★★★ ☆☆☆☆☆ ★★★★☆

핵심 인사이트: 기존 BIM SW는 검출에 성숙하지만, 자동 해결은 BAMROC이 유일한 상용 솔루션이다. 이 영역은 블루오션.

🔹 5.1.2 BAMROC (VAVETEK)

유일한 상용 자동 해결 솔루션. Movement Strategy + Bend Strategy. 대형 병원에서 1,100건 중 94% 자동 해결.

🔹 5.1.3 AI 기반 스타트업

솔루션 핵심
Auto BIM Route AI 인간 대비 400배 빠른 MEP 라우팅
Genusys AI 전기 BIM 워크플로 특화
ArchiLabs Revit 코파일럿, 노코드 자동화
ViaTechnik (GenMEP) 포인트 클라우드 기반 자동 라우팅

💡 참고: BAMROC, Auto BIM Route AI, ClashWiseAI


🧠 5.2 오픈소스 라이브러리 (FCL, OMPL, Bullet, CGAL, IfcOpenShell)

라이브러리 라이선스 충돌 검출 해결 계산 BIM 지원 Python 성숙도
Bullet zlib ★★★★★ ★★★★★ ☆☆☆☆☆ ★★★★★ ★★★★★
CGAL GPL/LGPL ★★★★★ ★★★☆☆ ☆☆☆☆☆ ★★☆☆☆ ★★★★★
FCL BSD ★★★★★ ★★★★☆ ☆☆☆☆☆ ★★★☆☆ ★★★★☆
Open3D MIT ★☆☆☆☆ ☆☆☆☆☆ ☆☆☆☆☆ ★★★★★ ★★★★☆
OMPL BSD ☆☆☆☆☆ ★★★★☆ ☆☆☆☆☆ ★★★☆☆ ★★★★☆
IfcOpenShell LGPL ★★★★☆ ☆☆☆☆☆ ★★★★★ ★★★★★ ★★★★☆

FCL: Global Penetration Depth로 자동 해결의 핵심 메트릭 제공. IfcOpenShell: IFC 의미 정보 직접 접근으로 지능적 간섭 관리.

💡 참고: FCL GitHub, OMPL, IfcOpenShell


📌 5.3 게임/로보틱스 기술 차용 가능성

기술 영역 적용 시나리오 실현 가능성 핵심 과제
Unity DOTS 대규모 BIM 시각화 + 인터랙티브 편집 ★★★★☆ IFC 파서 통합
NVIDIA Omniverse 디지털 트윈 기반 실시간 간섭 관리 ★★★★★ 비용, HW
MoveIt/OMPL MEP 배관/덕트 자동 경로 탐색 ★★★★☆ BIM 제약 모델링
Gazebo 시공 순서 시뮬레이션 ★★★☆☆ 건설 워크플로우
PhysX GPU 가속 대규모 충돌 검출 ★★★★☆ NVIDIA 종속성

⚡ 5.4 대규모 객체 처리 시 성능 최적화

⚡ 5.4.1 벤치마크 참고치

객체 수 Brute-force BVH Broad Phase Spatial Hash
1,000 500K 쌍 ~수 ms ~수 ms
10,000 50M 쌍 ~수십 ms ~수십 ms
100,000 5B 쌍 ~수백 ms ~수백 ms
1,000,000 불가능 ~수 초 ~수 초

🎮 5.4.2 GPU 가속

단계 GPU 활용 기법
BVH 구축 높음 Morton Code 병렬 정렬
Broad Phase 높음 병렬 AABB 비교, Spatial Hashing
Narrow Phase 중간 각 쌍 독립 GJK/SAT
Constraint Solving 낮음 Jacobi 반복

⚖️ 5.4.3 점진적 vs 일괄 해결

function HybridResolution(allClashes):
    clusters = ClusterClashes(allClashes, proximityThreshold)
    for cluster in clusters:
        if cluster.size <= SMALL_THRESHOLD:
            IncrementalResolve(cluster)
        else:
            OptimizationResolve(cluster)
    newClashes = DetectNewClashes()
    if newClashes: HybridResolution(newClashes)

💡 참고: NVIDIA GPU Gems 3 - Collision Detection CUDA


⚖️ Part 6. AI vs 휴리스틱 비교 분석

⚡ 6.1 성능(속도) 비교

시나리오: 1,000건의 MEP 간섭 해결

[휴리스틱] 규칙 ~2ms + 이동벡터 ~5ms + A* ~50ms = 총 ~57초
[AI 추론]  모델로딩 ~2초 + 특징추출 ~10ms + 추론 ~20ms + 후처리 ~5ms = 총 ~37초
[AI 학습포함] 데이터 수시간 + 학습 수시간~수일 + 추론 ~37초
측면 휴리스틱 AI
초기 응답 매우 빠름 (ms) 느림 (수백ms~초)
예측 가능성 결정론적 확률적
사전 계산 불필요 학습 필요

⚖️ 6.2 해의 품질 비교

측면 휴리스틱 AI
단순 간섭 우수 우수
복합 간섭 (연쇄) 보통 우수
전역 최적해 국소 최적 전역 근접 가능
도메인 규칙 준수 확실 학습 데이터 의존
실패 시 투명성 높음 낮음 (블랙박스)

📌 6.3 구현 난이도 / 확장성 / 도메인 전이

항목 휴리스틱 AI
초기 프로토타입 쉬움 (2-4주) 어려움 (2-3개월)
디버깅 용이 어려움
새 객체 유형 추가 규칙 수동 추가 데이터 추가 + 재학습
다른 건물 유형 적용 규칙 재작성 Transfer Learning
객체 수 증가 O(n^2)~O(n log n) GPU 병렬화 확장

📌 6.4 하이브리드 전략 (4가지)

🔹 전략 1: 휴리스틱으로 초기해 -> AI로 개선

[간섭] -> [휴리스틱 초기해] -> [AI 개선(GNN/RL/Diffusion)] -> [검증]

🔹 전략 2: AI로 분류 -> 유형별 휴리스틱

CLASH_TYPES = {
    'simple_move', 'reroute_pipe', 'resize_element',
    'elevation_change', 'design_change', 'acceptable'
}
# ML 분류 -> 유형별 특화 휴리스틱 적용

🔹 전략 3: 온라인 학습 - 사용자 피드백으로 규칙 개선

[자동 해결안 제시] -> [사용자 수락/수정/거부] -> [피드백 기록] -> [모델 업데이트]

🔹 전략 4: 메타 학습(MAML) - 새 프로젝트에 빠른 적응

10-20건의 few-shot 데이터로 새 프로젝트에 수분 내 적응. 기존 AI의 전체 재학습(수일) 대비 압도적.


⚖️ 6.5 종합 점수 비교표

평가 기준 휴리스틱 AI 하이브리드
속도 ★★★★★ ★★★☆☆ ★★★★☆
해의 품질 ★★★☆☆ ★★★★☆ ★★★★★
구현 난이도 ★★★★★ (쉬움) ★★☆☆☆ ★★★☆☆
확장성 ★★★☆☆ ★★★★☆ ★★★★★
데이터 요구 ★★★★★ (없음) ★★☆☆☆ ★★★★☆
도메인 전이 ★★☆☆☆ ★★★★☆ ★★★★☆
설명 가능성 ★★★★★ ★★☆☆☆ ★★★★☆
총합 25/35 21/35 29/35

🔍 Part 7. 최신 연구 동향 및 구현 로드맵

📌 7.1 LLM/Foundation Model 기반 3D 배치 (2023-2026)

연구/시스템 핵심 기법 적용 영역
LLplace LLM 기반 공간 관계 예측, SFT 실내 레이아웃
LayoutVLM (CVPR 2025) VLM + 미분 가능 최적화 3D 레이아웃
Scene-LLM (WACV 2025) LLM의 3D 시각적 추론 확장 3D 장면 이해
OptiScene (2025) Multi-stage DPO 물리적 타당 레이아웃
HOLODECK 언어 유도 3D 환경 생성 Embodied AI

BIM 시사점: LLM이 “이 덕트가 보와 충돌하는데, 어디로 우회시켜야 하는가?”에 자연어로 답변 가능. OptiScene의 DPO는 사용자 선호도 반영 해결안 생성에 직접 적용 가능.

💡 참고: LLplace, LayoutVLM (CVPR 2025)


📌 7.2 Diffusion Model 기반 접근

연구 핵심 기법
Human-Aware 3D Scene (2024) 확산 + 공간 충돌 가이던스
Controllable 3D Placement (2025) 장면 인식 확산 모델
MIDI (CVPR 2025) 다중 인스턴스 확산
INFERACT 확산 + RL, 물리적 타당성
PhyScene 물리 제약 통합

충돌 회피 가이던스 함수:

def collision_guidance(x_t, scene_objects, t):
    overlap_loss = compute_overlap_penalty(x_t, scene_objects)
    boundary_loss = compute_boundary_penalty(x_t, room_bounds)
    clearance_loss = compute_clearance_penalty(x_t, scene_objects, min_distance=0.1)
    guidance_grad = torch.autograd.grad(total_loss, x_t)[0]
    return -guidance_grad * guidance_scale

📌 7.3 Digital Twin과 실시간 해결

[현장 데이터]  ->  [Edge Computing]  ->  [Digital Twin Platform]
   드론               실시간 처리            Omniverse / Azure DT
   LiDAR              포인트클라우드          물리 시뮬레이션
   IoT                변환/정합              간섭 검출 + 해결
                                            -> [Feedback to Design]

시장 규모: AI in Construction 시장 2024년 24억 달러 -> 2030년 121억 달러 (CAGR 31.0%)


🏗️ 7.4 구현 아키텍처 제안 (파이프라인)

┌─────────────────────────────────────────────────────────────────┐
│                    3D 간섭 자동 해결 시스템                        │
├─────────────────────────────────────────────────────────────────┤
│  [1. BIM Model Parsing]  IFC -> IfcOpenShell -> Internal Model  │
│  [2. Clash Detection]    AABB Broadphase -> FCL Narrowphase     │
│  [3. Classification]     ML Classify -> Priority Rank -> Select │
│  [4. Resolution Engine]  Heuristic | AI/ML | Hybrid Selector    │
│  [5. Validation]         Re-clash Check -> Rule Verify -> Score │
│  [6. Output]             Modified IFC | BCF Report | 3D View    │
└─────────────────────────────────────────────────────────────────┘

단계적 아키텍처 전환:

  • Phase 1: 모놀리식 프로토타입 (Python + IfcOpenShell + FCL + 규칙)
  • Phase 2: 모듈화된 모놀리스 (내부 모듈 분리, 명확한 인터페이스)
  • Phase 3: 마이크로서비스 (부하 집중 모듈부터 분리)

🏢 7.5 24개월 실무 적용 로드맵

Phase 1 (0-6개월): 규칙 기반 MVP
  - FCL 기반 간섭 검출/분리 벡터 계산
  - OMPL 기반 배관 경로 탐색
  - IfcOpenShell 기반 BIM 파싱
  - 규칙 기반 우선순위 해결
  - 기본 시각화 (Unity)

Phase 2 (6-12개월): AI 분류기 추가
  - ML 기반 간섭 유형 분류기 (XGBoost/GNN)
  - NSGA-II 기반 다목적 최적화
  - ACO + A* 하이브리드 MEP 라우팅
  - 사용자 피드백 수집 시스템
  - 온라인 학습 파이프라인

Phase 3 (12-18개월): AI 개선 엔진
  - GNN 기반 전역 최적화
  - Diffusion Model 기반 배치 개선
  - 강화학습 기반 시퀀싱
  - 메타 학습 프레임워크
  - RL 환경 구축 (Unity ML-Agents 또는 Gymnasium)

Phase 4 (18-24개월): 완전 자율 시스템
  - LLM 기반 자연어 해결안 설명
  - 디지털 트윈 실시간 통합
  - 자율 건설 로봇 연계
  - 다중 에이전트 RL로 전체 MEP 최적화
  - 멀티 프로젝트 전이 학습

📝 부록

🧠 A. 알고리즘 선택 매트릭스 (시나리오별)

시나리오 충돌 감지 충돌 해결 경로 탐색 최적화
실시간 편집 (소규모) AABB + GJK MTV Push-out - -
설계 검토 (중규모) BVH + GJK/EPA 우선순위 기반 A* (직교) SA
일괄 최적화 (대규모) BVH + GJK/EPA 제약 전파 RRT*/PRM NSGA-II
MEP 자동 라우팅 Octree + AABB - A* 3D Grid MIP
게임/시뮬레이션 BVH + SAP Sequential Impulse / XPBD - -

문제 규모별 추천:

규모 객체 수 추천 1순위 추천 2순위
소규모 10-50 CSP + AI GA (NSGA-II)
중규모 50-500 GA (NSGA-II) RL + GNN
대규모 500-5000 RL (PPO/SAC) ACO + A*
초대규모 5000+ 계층적 분할 + ML 상용 솔루션 + AI

🧪 B. 핵심 의사코드 모음

🏗️ B.1 BIM 간섭 자동 해결 권장 파이프라인

[입력: BIM 모델 + 규칙 세트]
    -> [1. Spatial Indexing] Octree/BVH
    -> [2. Broad Phase] AABB + Sweep-and-Prune
    -> [3. Narrow Phase] GJK + EPA
    -> [4. 간섭 분류 및 우선순위화] Hard/Soft 분류, 클러스터링
    -> [5. 해결 전략 선택] 규칙 1차 -> 실패 시 최적화
    -> [6-A. 이동 기반] MTV + 우선순위 + 제약 전파
       [6-B. 경로 재탐색] A* 3D Grid
    -> [7. 검증] 새 간섭 발생? Yes -> 5단계 복귀
    -> [8. 출력: 수정된 BIM 모델]

🔹 B.2 하이브리드 해결기

class HybridClashResolver:
    def resolve(self, clashes, bim_model):
        results = []
        for clash in clashes:
            initial = self.heuristic_solver.solve(clash, bim_model)
            if initial.quality_score < 0.8:
                refined = self.ai_refiner.refine(initial, context)
                if self.validator.validate(refined, bim_model):
                    results.append(refined)
                else:
                    results.append(initial)  # AI 무효 시 휴리스틱 사용
            else:
                results.append(initial)
        return results

⚡ C. 주요 논문/벤치마크 목록

🔹 C.1 주요 학회 논문

연도 출처 핵심 내용
2017 ISARC BIM + GA 기반 RC 접합부 철근 충돌 자동 해소
2019 ISARC SA 알고리즘 기반 MEP 충돌 자동 해소
2019 ISARC MARL 기반 철근 충돌 해소
2020 Automation in Construction 충돌 의존성 네트워크 기반 해결 순서 최적화
2020 Automation in Construction SA + 지식 기반 충돌 해소
2024 J. Building Engineering NSGA-II 기반 다목적 충돌 해소
2025 AAAI SOCS MAPF의 3D 배관 라우팅 적용

⚡ C.2 3D Bin Packing 벤치마크

  • Bischoff-Ratcliff (BR): 16개 인스턴스, 가장 널리 사용
  • Q4RealBPP (2023): 12개 인스턴스, 실무 제약 반영 (중량, 호환성, 적재 순서)
  • GENPACK (2025): 산업용 KPI 기반 평가

🔹 C.3 Computational Geometry / Optimization

연도 출처 핵심
2012 Springer phi-함수 기반 배치 최적화 (Stoyan, Romanova)
2016 ITOR 항공 화물 3D BPP MIP 정식화 (Paquay et al.)
2017 EJOR 시설 배치 수학적 최적화 서베이 (Anjos, Vieira)
2025 ICALP 3D-BPP 근사 비율 13에서 6으로 개선

🔗 D. 출처 종합 (카테고리별)

🔹 강화학습 기반

  1. Liao, H. et al. (2020). “A Deep Reinforcement Learning Approach for Global Routing.” 링크
  2. “Novel deep RL based collision avoidance.” PLOS One. 링크
  3. “Robot movement planning using RL.” Scientific Reports. 링크
  4. “DRL based proactive obstacle avoidance.” ScienceDirect. 링크
  5. “Pipe Routing using RL.” Korea Science. 링크
  6. “Reimagining space layout through DRL.” Oxford Academic. 링크

🧠 유전 알고리즘 / 진화 전략

  1. “BIM-based multi-objective optimization: NSGA-II.” ScienceDirect. 링크
  2. “GA Application on 3D Pipe Routing.” Springer. 링크
  3. “SVM + NSGA-II for complex steel joints.” ScienceDirect. 링크
  4. “AI-based 3D pipe automation with ACO.” ScienceDirect. 링크

🔹 딥러닝 / 신경망

  1. “GCN clash change component prediction.” ScienceDirect. 링크
  2. “ML to Predict Clash Resolution Options.” ASCE. 링크
  3. “Point-GNN.” CVPR 2020. 링크
  4. “CabiNet: Scaling Neural Collision Detection.” NVIDIA. 링크
  5. “ML clash relevance filtering.” ScienceDirect (2025). 링크
  6. “MXGBoost BIM clash detection.” ScienceDirect. 링크

🔹 생성 모델

  1. “PhyScene.” CVPR 2024. 링크
  2. “3D Object and Scene Generation Survey.” arXiv. 링크
  3. “Generative AI for Architectural Design.” ScienceDirect. 링크
  4. “Non-autoregressive transformer for indoor layout.” ScienceDirect. 링크
  5. “DirectLayout: LLM-based 3D Layout.” arXiv. 링크

🔹 시뮬레이션 환경

  1. Unity ML-Agents. GitHub
  2. IsaacGymEnvs. GitHub
  3. Gymnasium. 문서
  4. “GaussGym.” arXiv. 링크

🔹 CSP + AI 하이브리드

  1. PDP-Solver. GitHub
  2. “FourierCSP.” arXiv. 링크
  3. “Reward Shaping with CP.” Springer. 링크
  4. “Spatial synthesis by disjunctive CSP.” Cambridge Core. 링크

🧠 충돌 감지 알고리즘

  1. MDN - 3D Collision Detection
  2. dyn4j - SAT
  3. dyn4j - GJK
  4. dyn4j - EPA
  5. Winter.dev - GJK
  6. Wikipedia - BVH
  7. PBR Book - BVH
  8. NVIDIA - Parallel BVH

🔹 게임 물리 엔진

  1. Erin Catto - Sequential Impulses GDC 2006
  2. Miles Macklin - XPBD
  3. NVIDIA PhysX 5.4.1 Docs

🔹 상용 솔루션

  1. Navisworks
  2. ClashWise AI
  3. BAMROC
  4. Revizto
  5. BIMcollab
  6. Auto BIM Route AI
  7. Genusys AI
  8. Solibri

🔹 오픈소스 라이브러리

  1. Bullet Physics
  2. CGAL
  3. FCL
  4. Open3D
  5. OMPL
  6. IfcOpenShell
  7. GitHub - gjk.c
  8. GitHub - NVlabs/cabi_net
  9. GitHub - PhyScene

🧠 수학적 기초

  1. Stoyan & Romanova (2012)
  2. Anjos & Vieira (2017)
  3. Paquay et al. (2016)
  4. 3D-BPP Improved (ICALP 2025)

🏢 BIM 실무

  1. Enginero - AI BIM Clash Detection
  2. NY Engineers - Generative AI BIM
  3. Georgia Tech - Clash Resolution Optimization
  4. Nature - Human-in-the-loop optimization

🔹 3D Bin Packing

  1. “BoxStacker.” MDPI Sensors. 링크
  2. “DeepPack3D.” ScienceDirect. 링크
  3. Q4RealBPP 데이터셋

🔹 LLM/최신 동향

  1. LLplace
  2. LayoutVLM (CVPR 2025)
  3. Scene-LLM (WACV 2025)
  4. RUN-CSP (GNN)
  5. AI in Construction Market 2025

💡 본 문서는 2026년 2월 16일 기준 웹 리서치를 기반으로 작성되었습니다.
💡 기술의 빠른 발전 속도를 고려하여, 6개월 이내 업데이트를 권장합니다.


리서치 요청
- md 파일로 작성
- ultra think hard
- 백그라운드 진행
- sub agent 여러개 생성 요청

3차원 공간에서 배치된 객체들을 이동, 길이조정을 통해 간섭이 해결되도록 재배치하는 문제
- 솔루션 방식
  - AI 를 이용한 해결 솔루션
  - 휴리스틱 로직을 이용한 해결 솔루션