尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Drawing-in, smaller-layout-out: function-preserving building & plant layout optimization (Claude Code plugin + MCP server, deterministic solver)
翻译准备中
正在加载完整 README。
查看完整 README ↗도면을 넣으면, 각 공간의 역할을 지키면서 더 작게. 건물·플랜트의 배치 계획(General Arrangement)을 결정론적 솔버로 다시 짜고, 원래 도면과 같은 기준으로 비교한다. Claude Code 플러그인 + MCP 서버(Claude · ChatGPT · Codex) + 브라우저 스튜디오. Python 표준 라이브러리만 쓴다.
English summary. GA Layout Optimizer takes an existing drawing (DXF, SVG, vector PDF, PNG, IFC, or an equipment table), recognises the as-is layout, and searches for a smaller layout in which every space still works — rooms stay reachable, corridors stay connected, egress distances hold, pipe racks and cranes still serve their equipment. Requirements are formalised as a JSON Design Intent IR with cited sources, frozen after human approval, and solved by a deterministic Sequence-Pair / simulated-annealing engine; the LLM never generates a single coordinate. The as-is layout is scored with the same objective, so the tool reports "keep as-is" or "not adoptable" instead of inventing an improvement. Example domains: petrochemical plant, offshore FPSO topside, hospital surgical suite, a nuclear auxiliary building, and two real public BIM models (a medical-dental clinic and a research institute). Concept-study use only — NOT FOR CONSTRUCTION.
왼쪽은 원래 배치, 오른쪽은 같은 모듈들이 위험구역 이격·크레인 작업반경을 지키며 새 자리로 옮겨 가는 과정 (FPSO 상부, 가상 도면, 6,528 → 2,600 m²).
3D 로 직접 돌려 보기 → 사례 6건과 벤치마크를 브라우저에서 돌려 보고, "변형 재생" 으로 배치가 바뀌는 과정을 볼 수 있다. 설치 필요 없음.
NOT FOR CONSTRUCTION — 개념검토용. 산출물은 시공·인허가 제출·상세설계에 그대로 쓸 수 없고, 예제의 치수·이격·제약 파라미터는 전부 가정값이다. 설계 책임은 유자격자에게 있다. 그리고 실제 설계값을 LLM 대화에 입력하지 말 것 — 로컬인 것은 엔진뿐이다 (한계 18항).
Python 3.8+ 만 있으면 된다. 엔진·파서·MCP 서버 모두 표준 라이브러리만 쓰고 외부 네트워크가 필요 없다.
Claude Code 플러그인 (MCP 서버 자동 등록)
git clone https://github.com/hajun011103/ga-layout-optimizer.git smr-ga-plugin
# Claude Code 안에서
/plugin marketplace add ./smr-ga-plugin
/plugin install smr-ga@smr-ga-marketplace
/smr-ga:ga-layout # 도면 경로 또는 자연어 경로로 전체 진행
Claude Desktop · Codex CLI — MCP 서버 server/mcp_server.py 를 stdio 로 등록한다.
ChatGPT 웹 · Claude.ai 웹 — --http --token 으로 띄우고 터널(예: cloudflared)로 연 뒤 원격 MCP 커넥터로 등록한다.
LLM 없이 — python3 server/mcp_server.py --http → http://127.0.0.1:8765/studio 브라우저 스튜디오.
설정 파일 예시와 주의사항(원격 연결 시 도면·결과가 LLM 서비스로 전송됨): guide/CONNECT.md.
python3 tests/run_all.py # 테스트
python3 engine/validate_spec.py examples/spec_smr_aux.json --freeze # Gate 1 검증 + 동결
python3 engine/run.py examples/spec_smr_aux.json --iters 60000 --restarts 6
flowchart LR
A["도면 파일<br/>DXF · SVG · PDF · PNG · IFC · CSV"] --> B["결정론적 파서<br/>현황 배치 (as-is)"]
B --> C["요건 → Design Intent IR<br/>근거 출처 명시 · 모르면 질문"]
C --> D{"Gate 1<br/>규칙 검증 + 사람 승인<br/>→ IR 해시 동결"}
D --> E["결정론적 솔버<br/>Sequence-Pair + SA / NSGA-II<br/>현황에서 출발, seed 고정"]
E --> F["같은 목적함수로<br/>현황 vs 최적화 채점"]
F --> G["판정 · SVG/DXF 도면 · 보고서<br/>채택 후보 / 현황 유지 / 채택 불가"]
LLM 의 역할은 두 곳뿐이다 — 요구사항을 IR 로 정형화하며 되묻는 것(Gate 1 앞), 그리고 결과를 읽기 전용으로 해설하는 것(맨 뒤). Gate 1 이후는 LLM 호출 0회로 재현된다. 자세한 구조와 제약 라이브러리: guide/ARCHITECTURE.md.
실제 도면에서는 "가장 작은 배치" 가 무엇인지 아무도 모른다. 그래서 같은 엔진을 논문이 최적해를 증명해 둔 문제에 돌렸다. "+x%" 는 증명된 최적보다 x% 비싼 배치를 찾았다는 뜻이다 — 낮을수록 좋고, 0% 가 정답이다. 증명된 최적보다 싼 답은 나올 수 없다.
| 벤치마크 | 문제 | 결과 (정답 대비) |
|---|---|---|
| QAPLIB (12건) | 시설 배치 표준 문제, n = 12~36 | n ≤ 19 0.00% · n = 20~36 +0.16 ~ +5.37% |
| Ejeh et al. 2019 — 다층 공정 플랜트 | 요소 비료 8기기 (증명된 최적) | +1.48% (seed 5개 중 최선, 중앙 +6.19%) |
| CDU 17기기 (증명된 최적) | +15.04% (중앙 +19.54%) | |
| LNG 22기기 (논문도 2.2% 갭) | +14.36% (중앙 +21.60%) | |
| COGP 25기기 (논문도 11.8% 갭) | +39.64% (중앙 +40.74%) — 기기가 많아질수록 갭이 커진다 | |
| Wrigley et al. 2019 — 원전 계통 배치 | Shearon Harris 20개 모듈, 기존 배치 14,914 | 한 면 4층 6,793 (−54.5%), 논문 8,036 (−46.1%) — 같은 문제라고 단정할 수 없어 "논문보다 낫다" 고 말하지 않는다 |
전체 표, 층 수 스윕, 조건 해석: guide/BENCHMARKS.md.
tools/make_viewer_data.py, tools/make_bench_data.py 로 다시 만들 수 있다.가상 도면 4건과 실제 공개 BIM 2건에 같은 방식으로 돌렸다. 숫자와 3D 는 웹페이지에, 표·요건·가정은 guide/RESULTS.md 에 있다.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗