{"meta": {"name": "샘플 자동차 공장(가상, 20 JPH, 연구 32)", "version": "0.1", "units": "m, min, kW", "product_kind": "car", "shift": {"start": "08:00", "end": "17:00", "commute_min": 20, "machine_off_outside_shift": true, "breaks": [["10:00", "10:10"], ["12:00", "12:50"], ["15:00", "15:10"]], "days_per_week": 5}, "energy": {"tariff_krw_per_kwh": 140, "contract_kw": 6000, "base_load_kw": 400}, "finance": {"margin_rate": 0.12, "working_days_per_year": 250}, "worker_pool": {"helping": true}, "walk_speed_mps": 1.3, "transport_name": "AGV"}, "site": {"width": 150, "depth": 100, "height": 12, "grid_m": 1.0, "polygon": [[0, 0], [150, 0], [150, 100], [0, 100], [0, 60], [44, 60], [44, 25], [0, 25]], "walls": [[50, 60, 50, 76], [50, 88, 50, 100], [50, 60, 100, 60], [106, 60, 140, 60], [146, 60, 150, 60], [50, 55, 100, 55], [106, 55, 140, 55], [146, 55, 150, 55], [50, 25, 70, 25], [76, 25, 118, 25], [124, 25, 150, 25], [20, 25, 20, 60], [20, 0, 20, 8], [20, 18, 20, 25]], "zones": [{"id": "Z_PRESS", "name": "프레스 공장(블랭크 → 탠덤 라인)", "type": "process", "polygon": [[0, 60], [50, 60], [50, 100], [0, 100]], "color": "#90a4ae"}, {"id": "Z_BLANK", "name": "코일·블랭크 적치", "type": "storage", "polygon": [[0, 60], [12, 60], [12, 100], [0, 100]], "color": "#8d6e63"}, {"id": "Z_BODY", "name": "차체 공장(로봇 용접)", "type": "process", "polygon": [[50, 60], [150, 60], [150, 100], [50, 100]], "color": "#ffb74d"}, {"id": "Z_PAINT", "name": "도장 공장", "type": "process", "polygon": [[50, 25], [150, 25], [150, 55], [50, 55]], "color": "#81d4fa"}, {"id": "Z_ASSY", "name": "의장 공장(최종 조립 라인)", "type": "assembly", "polygon": [[20, 0], [150, 0], [150, 25], [20, 25]], "color": "#a5d6a7"}, {"id": "Z_FG", "name": "완성차 야드", "type": "shipping", "polygon": [[0, 0], [20, 0], [20, 25], [0, 25]], "color": "#42a5f5"}, {"id": "Z_AISLE", "name": "차체 주통로", "type": "aisle", "polygon": [[50, 80], [150, 80], [150, 84], [50, 84]], "color": "#e0e0e0"}, {"id": "Z_AISLE2", "name": "도장 복도", "type": "aisle", "polygon": [[50, 38], [150, 38], [150, 40], [50, 40]], "color": "#e0e0e0"}], "obstacles": [[74.5, 59.5, 1, 1], [99.5, 59.5, 1, 1], [124.5, 59.5, 1, 1], [74.5, 24.5, 1, 1], [99.5, 24.5, 1, 1], [124.5, 24.5, 1, 1], [99.5, 98.5, 1, 1]], "entrance": [23, 0.5], "break_area": [30, 20], "dock": [0.5, 12], "raw_dock": [0.5, 80], "truck_lane": [[-20, 0], [0, 100]], "parcel_point": [23, 3]}, "stations": [{"id": "RAW", "name": "코일·블랭크 적치장", "process": "raw", "zone": "Z_BLANK", "pos": [6, 80], "size": [10, 36, 1.5], "rotation_deg": 0, "capacity": 99, "workers_required": 0, "rated_kw": 0, "load_factor": 0.6, "idle_kw": 0, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 99, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {}, "cv": 0.06}, "in_pos": [12.5, 78], "out_pos": [12.5, 82]}, {"id": "PRESS", "name": "탠덤 프레스 라인(Schuler ServoDirect 급: 2,500 t 드로 + 1,200 t×4, 크로스바 스텝 5.2 m, 이송 로봇 ABB IRB 6700)", "process": "press", "zone": "Z_PRESS", "pos": [31, 82], "size": [34, 9, 8], "rotation_deg": 0, "capacity": 1, "workers_required": 2, "rated_kw": 1500, "load_factor": 0.55, "idle_kw": 120, "mtbf_min": 900, "mttr_min": 25, "setup_min": 0.5, "buffer_batches": 6, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 0.45, "P_SUV": 0.5}, "cv": 0.04}, "maker": "Schuler(참조 사양, 연구 34)", "model": "서보 탠덤 5기, 베드 4,600×2,400, 12~18 SPM(패널 세트 1대분 ≈ 0.5분), 자동 금형 교환 — 대량 로트를 세트당 0.5분 셋업으로 축약", "press_pitch": 5.2, "presses": 5, "in_pos": [13, 78.5], "out_pos": [49, 78.5]}, {"id": "UB1", "name": "언더바디 용접 셀 1(KUKA KR 210 R2700 extra ×4, C형 서보 스팟건)", "process": "underbody", "zone": "Z_BODY", "pos": [60, 93], "size": [10, 7, 4], "rotation_deg": 0, "capacity": 1, "workers_required": 0, "rated_kw": 180, "load_factor": 0.5, "idle_kw": 12, "mtbf_min": 600, "mttr_min": 12, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.7, "P_SUV": 2.8}, "cv": 0.06}, "robots": 4, "tool": "spot", "in_pos": [53.5, 93], "out_pos": [66.5, 93]}, {"id": "UB2", "name": "언더바디 용접 셀 2(KUKA KR 210 R2700 extra ×4, C형 서보 스팟건)", "process": "underbody", "zone": "Z_BODY", "pos": [73, 93], "size": [10, 7, 4], "rotation_deg": 0, "capacity": 1, "workers_required": 0, "rated_kw": 180, "load_factor": 0.5, "idle_kw": 12, "mtbf_min": 600, "mttr_min": 12, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.7, "P_SUV": 2.8}, "cv": 0.06}, "robots": 4, "tool": "spot", "in_pos": [66.5, 93], "out_pos": [79.5, 93]}, {"id": "UB3", "name": "언더바디 용접 셀 3(KUKA KR 210 R2700 extra ×4, C형 서보 스팟건)", "process": "underbody", "zone": "Z_BODY", "pos": [86, 93], "size": [10, 7, 4], "rotation_deg": 0, "capacity": 1, "workers_required": 0, "rated_kw": 180, "load_factor": 0.5, "idle_kw": 12, "mtbf_min": 600, "mttr_min": 12, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.7, "P_SUV": 2.8}, "cv": 0.06}, "robots": 4, "tool": "spot", "in_pos": [79.5, 93], "out_pos": [92.5, 93]}, {"id": "SBL1", "name": "사이드 바디 L 셀 1(KUKA KR 210 R2700 extra ×3)", "process": "side_l", "zone": "Z_BODY", "pos": [60, 72], "size": [10, 6, 4], "rotation_deg": 0, "capacity": 1, "workers_required": 0, "rated_kw": 140, "load_factor": 0.5, "idle_kw": 10, "mtbf_min": 700, "mttr_min": 12, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.6, "P_SUV": 2.7}, "cv": 0.06}, "robots": 3, "tool": "spot", "in_pos": [53.5, 72], "out_pos": [66.5, 72]}, {"id": "SBL2", "name": "사이드 바디 L 셀 2(KUKA KR 210 R2700 extra ×3)", "process": "side_l", "zone": "Z_BODY", "pos": [73, 72], "size": [10, 6, 4], "rotation_deg": 0, "capacity": 1, "workers_required": 0, "rated_kw": 140, "load_factor": 0.5, "idle_kw": 10, "mtbf_min": 700, "mttr_min": 12, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.6, "P_SUV": 2.7}, "cv": 0.06}, "robots": 3, "tool": "spot", "in_pos": [66.5, 72], "out_pos": [79.5, 72]}, {"id": "SBR1", "name": "사이드 바디 R 셀 1(KUKA KR 210 R2700 extra ×3)", "process": "side_r", "zone": "Z_BODY", "pos": [60, 64], "size": [10, 6, 4], "rotation_deg": 0, "capacity": 1, "workers_required": 0, "rated_kw": 140, "load_factor": 0.5, "idle_kw": 10, "mtbf_min": 700, "mttr_min": 12, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.6, "P_SUV": 2.7}, "cv": 0.06}, "robots": 3, "tool": "spot", "in_pos": [53.5, 64], "out_pos": [66.5, 64]}, {"id": "SBR2", "name": "사이드 바디 R 셀 2(KUKA KR 210 R2700 extra ×3)", "process": "side_r", "zone": "Z_BODY", "pos": [73, 64], "size": [10, 6, 4], "rotation_deg": 0, "capacity": 1, "workers_required": 0, "rated_kw": 140, "load_factor": 0.5, "idle_kw": 10, "mtbf_min": 700, "mttr_min": 12, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.6, "P_SUV": 2.7}, "cv": 0.06}, "robots": 3, "tool": "spot", "in_pos": [66.5, 64], "out_pos": [79.5, 64]}, {"id": "FRAMER", "name": "프레이밍 스테이션(게이트 프레이머, KR 210 R2700 extra ×6)", "process": "framing", "zone": "Z_BODY", "pos": [100, 93], "size": [12, 8, 5], "rotation_deg": 0, "capacity": 1, "workers_required": 0, "rated_kw": 260, "load_factor": 0.55, "idle_kw": 15, "mtbf_min": 500, "mttr_min": 15, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.8, "P_SUV": 2.9}, "cv": 0.06}, "robots": 6, "tool": "spot", "in_pos": [92.5, 93], "out_pos": [107.5, 93]}, {"id": "ROOF", "name": "루프 장착·레이저 브레이징 셀(FANUC R-2000iC/210F ×4)", "process": "roof", "zone": "Z_BODY", "pos": [114, 93], "size": [10, 7, 4.5], "rotation_deg": 0, "capacity": 1, "workers_required": 0, "rated_kw": 120, "load_factor": 0.5, "idle_kw": 8, "mtbf_min": 800, "mttr_min": 12, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.6, "P_SUV": 2.7}, "cv": 0.06}, "robots": 4, "tool": "laser", "in_pos": [107.5, 93], "out_pos": [120.5, 93]}, {"id": "RESPOT1", "name": "리스팟 셀 1(KR 210 R2700 extra ×6)", "process": "respot", "zone": "Z_BODY", "pos": [128, 93], "size": [10, 7, 4], "rotation_deg": 0, "capacity": 1, "workers_required": 0, "rated_kw": 240, "load_factor": 0.55, "idle_kw": 12, "mtbf_min": 600, "mttr_min": 12, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.7, "P_SUV": 2.8}, "cv": 0.06}, "robots": 6, "tool": "spot", "in_pos": [121.5, 93], "out_pos": [134.5, 93]}, {"id": "RESPOT2", "name": "리스팟 셀 2(KR 210 R2700 extra ×6)", "process": "respot", "zone": "Z_BODY", "pos": [141, 93], "size": [10, 7, 4], "rotation_deg": 0, "capacity": 1, "workers_required": 0, "rated_kw": 240, "load_factor": 0.55, "idle_kw": 12, "mtbf_min": 600, "mttr_min": 12, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.7, "P_SUV": 2.8}, "cv": 0.06}, "robots": 6, "tool": "spot", "in_pos": [134.5, 93], "out_pos": [147.5, 93]}, {"id": "CLOSURE", "name": "클로저 장착(도어·후드·트렁크 힌지 체결, FANUC R-2000iC ×4 + 작업자 2)", "process": "closures", "zone": "Z_BODY", "pos": [141, 72], "size": [11, 7, 4], "rotation_deg": 0, "capacity": 1, "workers_required": 2, "rated_kw": 90, "load_factor": 0.45, "idle_kw": 6, "mtbf_min": 900, "mttr_min": 10, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.8, "P_SUV": 2.9}, "cv": 0.06}, "robots": 4, "tool": "gripper", "in_pos": [147.5, 72], "out_pos": [134.5, 72]}, {"id": "BIW_INSP", "name": "BIW 검사(인라인 비전·CMM 샘플링, 검사원 2)", "process": "biw_insp", "zone": "Z_BODY", "pos": [122, 72], "size": [9, 6, 3.5], "rotation_deg": 0, "capacity": 1, "workers_required": 2, "rated_kw": 15, "load_factor": 0.6, "idle_kw": 2, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.004, "paced": "operator", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.5, "P_SUV": 2.6}, "cv": 0.06}, "in_pos": [127.5, 72], "out_pos": [116.5, 72]}, {"id": "PT_ED", "name": "전처리·전착 회전 침지(Eisenmann E-Shuttle 200 / Dürr RoDip 급, 360° 회전, 시스템 높이 6 m)", "process": "pt_ed", "zone": "Z_PAINT", "pos": [136, 47], "size": [16, 6, 5], "rotation_deg": 0, "capacity": 2, "workers_required": 0, "rated_kw": 400, "load_factor": 0.7, "idle_kw": 60, "mtbf_min": 1500, "mttr_min": 20, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.8, "P_SUV": 2.9}, "cv": 0.06}, "in_pos": [145, 47], "out_pos": [127, 47]}, {"id": "ED_OVEN", "name": "전착 오븐(Dürr EcoInCure 급, 180℃ 터널)", "process": "ed_oven", "zone": "Z_PAINT", "pos": [116, 47], "size": [18, 5, 4.5], "rotation_deg": 0, "capacity": 3, "workers_required": 0, "rated_kw": 600, "load_factor": 0.8, "idle_kw": 150, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.9, "P_SUV": 2.9}, "cv": 0.06}, "in_pos": [126, 47], "out_pos": [106, 47]}, {"id": "SEALER", "name": "실러·언더코트 로봇 셀(KUKA KR 60-3 ×4)", "process": "sealer", "zone": "Z_PAINT", "pos": [97, 47], "size": [10, 6, 4], "rotation_deg": 0, "capacity": 1, "workers_required": 0, "rated_kw": 60, "load_factor": 0.5, "idle_kw": 5, "mtbf_min": 800, "mttr_min": 10, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.7, "P_SUV": 2.8}, "cv": 0.06}, "robots": 4, "tool": "sealer", "in_pos": [103, 47], "out_pos": [91, 47]}, {"id": "PRIMER", "name": "프라이머 부스(Dürr EcoRP E043i ×4 + EcoBell3, 스톱앤고)", "process": "primer", "zone": "Z_PAINT", "pos": [79, 47], "size": [12, 6, 5], "rotation_deg": 0, "capacity": 1, "workers_required": 0, "rated_kw": 220, "load_factor": 0.7, "idle_kw": 40, "mtbf_min": 700, "mttr_min": 12, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.7, "P_SUV": 2.8}, "cv": 0.06}, "robots": 4, "tool": "bell", "in_pos": [86, 47], "out_pos": [72, 47]}, {"id": "BASE", "name": "베이스코트 부스(수성, Dürr EcoRP E043i ×4 + EcoBell3)", "process": "basecoat", "zone": "Z_PAINT", "pos": [61, 47], "size": [12, 6, 5], "rotation_deg": 0, "capacity": 1, "workers_required": 0, "rated_kw": 220, "load_factor": 0.7, "idle_kw": 40, "mtbf_min": 700, "mttr_min": 12, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.7, "P_SUV": 2.8}, "cv": 0.06}, "robots": 4, "tool": "bell", "in_pos": [68, 47], "out_pos": [54, 47]}, {"id": "CLEAR", "name": "클리어코트 부스(Dürr EcoRP E043i ×4 + EcoBell3)", "process": "clearcoat", "zone": "Z_PAINT", "pos": [64, 32], "size": [12, 6, 5], "rotation_deg": 0, "capacity": 1, "workers_required": 0, "rated_kw": 220, "load_factor": 0.7, "idle_kw": 40, "mtbf_min": 700, "mttr_min": 12, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.7, "P_SUV": 2.8}, "cv": 0.06}, "robots": 4, "tool": "bell", "in_pos": [57, 32], "out_pos": [71, 32]}, {"id": "P_OVEN", "name": "도장 오븐(Dürr EcoInCure 급, 140℃ 터널)", "process": "paint_oven", "zone": "Z_PAINT", "pos": [88, 32], "size": [22, 5, 4.5], "rotation_deg": 0, "capacity": 4, "workers_required": 0, "rated_kw": 700, "load_factor": 0.8, "idle_kw": 180, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.9, "P_SUV": 2.9}, "cv": 0.06}, "in_pos": [76, 32], "out_pos": [100, 32]}, {"id": "P_INSP", "name": "도장 검사·폴리싱 터널(검사원 3)", "process": "paint_insp", "zone": "Z_PAINT", "pos": [112, 32], "size": [12, 6, 4], "rotation_deg": 0, "capacity": 1, "workers_required": 3, "rated_kw": 20, "load_factor": 0.6, "idle_kw": 3, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.01, "paced": "operator", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.6, "P_SUV": 2.7}, "cv": 0.06}, "in_pos": [105, 32], "out_pos": [119, 32]}, {"id": "TRIM1", "name": "트림 1(도어 탈거·하네스·헤드라이너, 4명)", "process": "trim", "zone": "Z_ASSY", "pos": [140.0, 14], "size": [9, 6, 3.5], "rotation_deg": 0, "capacity": 1, "workers_required": 4, "rated_kw": 25, "load_factor": 0.6, "idle_kw": 3, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "operator", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.6, "P_SUV": 2.7}, "cv": 0.1}, "robots": 0, "tool": "gripper", "in_pos": [145.5, 14], "out_pos": [134.5, 14]}, {"id": "TRIM2", "name": "트림 2(계기판 모듈·글래스 로봇 ABB IRB 6700 ×2, 4명)", "process": "trim", "zone": "Z_ASSY", "pos": [127.5, 14], "size": [9, 6, 3.5], "rotation_deg": 0, "capacity": 1, "workers_required": 4, "rated_kw": 25, "load_factor": 0.6, "idle_kw": 3, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "operator", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.7, "P_SUV": 2.8000000000000003}, "cv": 0.1}, "robots": 2, "tool": "gripper", "in_pos": [133.0, 14], "out_pos": [122.0, 14]}, {"id": "TRIM3", "name": "트림 3(시트·카펫·콘솔, 4명)", "process": "trim", "zone": "Z_ASSY", "pos": [115.0, 14], "size": [9, 6, 3.5], "rotation_deg": 0, "capacity": 1, "workers_required": 4, "rated_kw": 25, "load_factor": 0.6, "idle_kw": 3, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "operator", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.7, "P_SUV": 2.8000000000000003}, "cv": 0.1}, "robots": 0, "tool": "gripper", "in_pos": [120.5, 14], "out_pos": [109.5, 14]}, {"id": "MARRIAGE", "name": "매리지(Dürr ProFleet 4200 급 리프트 1.5 m, 파워트레인·섀시 모듈 결합, 3명)", "process": "marriage", "zone": "Z_ASSY", "pos": [102.5, 14], "size": [9, 6, 3.5], "rotation_deg": 0, "capacity": 1, "workers_required": 3, "rated_kw": 25, "load_factor": 0.6, "idle_kw": 3, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "operator", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.8, "P_SUV": 2.9}, "cv": 0.1}, "robots": 0, "tool": "gripper", "in_pos": [108.0, 14], "out_pos": [97.0, 14]}, {"id": "CHASSIS1", "name": "섀시 1(배기·연료탱크·브레이크, 4명)", "process": "chassis", "zone": "Z_ASSY", "pos": [90.0, 14], "size": [9, 6, 3.5], "rotation_deg": 0, "capacity": 1, "workers_required": 4, "rated_kw": 25, "load_factor": 0.6, "idle_kw": 3, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "operator", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.7, "P_SUV": 2.8000000000000003}, "cv": 0.1}, "robots": 0, "tool": "gripper", "in_pos": [95.5, 14], "out_pos": [84.5, 14]}, {"id": "CHASSIS2", "name": "섀시 2(범퍼·도어 재장착, 4명)", "process": "chassis", "zone": "Z_ASSY", "pos": [77.5, 14], "size": [9, 6, 3.5], "rotation_deg": 0, "capacity": 1, "workers_required": 4, "rated_kw": 25, "load_factor": 0.6, "idle_kw": 3, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "operator", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.7, "P_SUV": 2.8000000000000003}, "cv": 0.1}, "robots": 0, "tool": "gripper", "in_pos": [83.0, 14], "out_pos": [72.0, 14]}, {"id": "WHEELS", "name": "휠·타이어 장착(ABB IRB 6700 ×2 + Atlas Copco QST 너트러너, 2명)", "process": "wheels", "zone": "Z_ASSY", "pos": [65.0, 14], "size": [9, 6, 3.5], "rotation_deg": 0, "capacity": 1, "workers_required": 2, "rated_kw": 25, "load_factor": 0.6, "idle_kw": 3, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "operator", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.5, "P_SUV": 2.6}, "cv": 0.1}, "robots": 2, "tool": "gripper", "in_pos": [70.5, 14], "out_pos": [59.5, 14]}, {"id": "FINAL", "name": "최종 조립(라이트·시트벨트·전장 검사, 4명)", "process": "final", "zone": "Z_ASSY", "pos": [52.5, 14], "size": [9, 6, 3.5], "rotation_deg": 0, "capacity": 1, "workers_required": 4, "rated_kw": 25, "load_factor": 0.6, "idle_kw": 3, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "operator", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.7, "P_SUV": 2.8000000000000003}, "cv": 0.1}, "robots": 0, "tool": "gripper", "in_pos": [58.0, 14], "out_pos": [47.0, 14]}, {"id": "FLUIDS", "name": "주입(냉각수·브레이크·에어컨 가스, 2명)", "process": "fluids", "zone": "Z_ASSY", "pos": [40.0, 14], "size": [9, 6, 3.5], "rotation_deg": 0, "capacity": 1, "workers_required": 2, "rated_kw": 25, "load_factor": 0.6, "idle_kw": 3, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "operator", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.5, "P_SUV": 2.6}, "cv": 0.1}, "robots": 0, "tool": "gripper", "in_pos": [45.5, 14], "out_pos": [34.5, 14]}, {"id": "EOL", "name": "EOL 롤러 테스트(48인치 롤러)·휠 얼라인먼트·헤드램프(2명)", "process": "eol", "zone": "Z_ASSY", "pos": [27.5, 14], "size": [9, 6, 3.5], "rotation_deg": 0, "capacity": 1, "workers_required": 2, "rated_kw": 80, "load_factor": 0.6, "idle_kw": 3, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 3, "scrap_rate": 0.0, "paced": "operator", "cycle": {"base_min": 0, "per_product": {"P_SEDAN": 2.6, "P_SUV": 2.7}, "cv": 0.1}, "robots": 0, "tool": "gripper", "in_pos": [33.0, 14], "out_pos": [22.0, 14]}, {"id": "FG", "name": "완성차 야드(출하 대기)", "process": "fg", "zone": "Z_FG", "pos": [10, 12], "size": [18, 22, 1.5], "rotation_deg": 0, "capacity": 99, "workers_required": 0, "rated_kw": 0, "load_factor": 0.6, "idle_kw": 0, "mtbf_min": 0, "mttr_min": 0, "setup_min": 0, "buffer_batches": 99, "scrap_rate": 0.0, "paced": "machine", "cycle": {"base_min": 0, "per_product": {}, "cv": 0.06}, "in_pos": [20.5, 14], "out_pos": [20.5, 10]}], "ancillary": [{"id": "COMP_BODY", "name": "차체 공압 컴프레서", "pos": [148, 98], "size": [3, 2, 2.5], "rated_kw": 160, "mode": "shift", "load_factor": 0.6}, {"id": "PAINT_AHU", "name": "도장 급배기(AHU)", "pos": [148, 27], "size": [4, 3, 4], "rated_kw": 350, "mode": "shift", "load_factor": 0.8}], "transport": {"agv_model": "Dürr EcoProFleet 급(2,850×1,450×255 mm, 1,000 kg)", "handlers": 14, "handler_speed_mps": 1.4, "cart_capacity_parts": 1, "forklifts": 2, "forklift_speed_mps": 2.2, "load_unload_min": 0.3, "forklift_processes": ["raw", "fg"], "carts": 60}, "workers": [{"id": "W01", "name": "프레스 라인 오퍼레이터", "role": "press", "skills": ["press"], "station": "PRESS", "monthly_wage_krw": 4200000}, {"id": "W02", "name": "프레스 금형 교환", "role": "press", "skills": ["press"], "station": "PRESS", "monthly_wage_krw": 4200000}, {"id": "W03", "name": "클로저 조립", "role": "closures", "skills": ["closures"], "station": "CLOSURE", "monthly_wage_krw": 4200000}, {"id": "W04", "name": "클로저 조립", "role": "closures", "skills": ["closures"], "station": "CLOSURE", "monthly_wage_krw": 4200000}, {"id": "W05", "name": "BIW 검사원", "role": "biw_insp", "skills": ["biw_insp"], "station": "BIW_INSP", "monthly_wage_krw": 4200000}, {"id": "W06", "name": "BIW 검사원", "role": "biw_insp", "skills": ["biw_insp"], "station": "BIW_INSP", "monthly_wage_krw": 4200000}, {"id": "W07", "name": "도장 검사", "role": "paint_insp", "skills": ["paint_insp"], "station": "P_INSP", "monthly_wage_krw": 4200000}, {"id": "W08", "name": "도장 검사", "role": "paint_insp", "skills": ["paint_insp"], "station": "P_INSP", "monthly_wage_krw": 4200000}, {"id": "W09", "name": "폴리싱", "role": "paint_insp", "skills": ["paint_insp"], "station": "P_INSP", "monthly_wage_krw": 4200000}, {"id": "W10", "name": "트림 1 1", "role": "trim", "skills": ["chassis", "final", "trim"], "station": "TRIM1", "monthly_wage_krw": 4200000}, {"id": "W11", "name": "트림 1 2", "role": "trim", "skills": ["chassis", "final", "trim"], "station": "TRIM1", "monthly_wage_krw": 4200000}, {"id": "W12", "name": "트림 1 3", "role": "trim", "skills": ["chassis", "final", "trim"], "station": "TRIM1", "monthly_wage_krw": 4200000}, {"id": "W13", "name": "트림 1 4", "role": "trim", "skills": ["chassis", "final", "trim"], "station": "TRIM1", "monthly_wage_krw": 4200000}, {"id": "W14", "name": "트림 2 1", "role": "trim", "skills": ["chassis", "final", "trim"], "station": "TRIM2", "monthly_wage_krw": 4200000}, {"id": "W15", "name": "트림 2 2", "role": "trim", "skills": ["chassis", "final", "trim"], "station": "TRIM2", "monthly_wage_krw": 4200000}, {"id": "W16", "name": "트림 2 3", "role": "trim", "skills": ["chassis", "final", "trim"], "station": "TRIM2", "monthly_wage_krw": 4200000}, {"id": "W17", "name": "트림 2 4", "role": "trim", "skills": ["chassis", "final", "trim"], "station": "TRIM2", "monthly_wage_krw": 4200000}, {"id": "W18", "name": "트림 3 1", "role": "trim", "skills": ["chassis", "final", "trim"], "station": "TRIM3", "monthly_wage_krw": 4200000}, {"id": "W19", "name": "트림 3 2", "role": "trim", "skills": ["chassis", "final", "trim"], "station": "TRIM3", "monthly_wage_krw": 4200000}, {"id": "W20", "name": "트림 3 3", "role": "trim", "skills": ["chassis", "final", "trim"], "station": "TRIM3", "monthly_wage_krw": 4200000}, {"id": "W21", "name": "트림 3 4", "role": "trim", "skills": ["chassis", "final", "trim"], "station": "TRIM3", "monthly_wage_krw": 4200000}, {"id": "W22", "name": "매리지 1", "role": "marriage", "skills": ["marriage"], "station": "MARRIAGE", "monthly_wage_krw": 4200000}, {"id": "W23", "name": "매리지 2", "role": "marriage", "skills": ["marriage"], "station": "MARRIAGE", "monthly_wage_krw": 4200000}, {"id": "W24", "name": "매리지 3", "role": "marriage", "skills": ["marriage"], "station": "MARRIAGE", "monthly_wage_krw": 4200000}, {"id": "W25", "name": "섀시 1 1", "role": "chassis", "skills": ["chassis", "fluids", "trim"], "station": "CHASSIS1", "monthly_wage_krw": 4200000}, {"id": "W26", "name": "섀시 1 2", "role": "chassis", "skills": ["chassis", "fluids", "trim"], "station": "CHASSIS1", "monthly_wage_krw": 4200000}, {"id": "W27", "name": "섀시 1 3", "role": "chassis", "skills": ["chassis", "fluids", "trim"], "station": "CHASSIS1", "monthly_wage_krw": 4200000}, {"id": "W28", "name": "섀시 1 4", "role": "chassis", "skills": ["chassis", "fluids", "trim"], "station": "CHASSIS1", "monthly_wage_krw": 4200000}, {"id": "W29", "name": "섀시 2 1", "role": "chassis", "skills": ["chassis", "fluids", "trim"], "station": "CHASSIS2", "monthly_wage_krw": 4200000}, {"id": "W30", "name": "섀시 2 2", "role": "chassis", "skills": ["chassis", "fluids", "trim"], "station": "CHASSIS2", "monthly_wage_krw": 4200000}, {"id": "W31", "name": "섀시 2 3", "role": "chassis", "skills": ["chassis", "fluids", "trim"], "station": "CHASSIS2", "monthly_wage_krw": 4200000}, {"id": "W32", "name": "섀시 2 4", "role": "chassis", "skills": ["chassis", "fluids", "trim"], "station": "CHASSIS2", "monthly_wage_krw": 4200000}, {"id": "W33", "name": "휠·타이어 장착 1", "role": "wheels", "skills": ["wheels"], "station": "WHEELS", "monthly_wage_krw": 4200000}, {"id": "W34", "name": "휠·타이어 장착 2", "role": "wheels", "skills": ["wheels"], "station": "WHEELS", "monthly_wage_krw": 4200000}, {"id": "W35", "name": "최종 조립 1", "role": "final", "skills": ["final", "fluids", "trim"], "station": "FINAL", "monthly_wage_krw": 4200000}, {"id": "W36", "name": "최종 조립 2", "role": "final", "skills": ["final", "fluids", "trim"], "station": "FINAL", "monthly_wage_krw": 4200000}, {"id": "W37", "name": "최종 조립 3", "role": "final", "skills": ["final", "fluids", "trim"], "station": "FINAL", "monthly_wage_krw": 4200000}, {"id": "W38", "name": "최종 조립 4", "role": "final", "skills": ["final", "fluids", "trim"], "station": "FINAL", "monthly_wage_krw": 4200000}, {"id": "W39", "name": "주입 1", "role": "fluids", "skills": ["fluids"], "station": "FLUIDS", "monthly_wage_krw": 4200000}, {"id": "W40", "name": "주입 2", "role": "fluids", "skills": ["fluids"], "station": "FLUIDS", "monthly_wage_krw": 4200000}, {"id": "W41", "name": "EOL 롤러 테스트 1", "role": "eol", "skills": ["eol"], "station": "EOL", "monthly_wage_krw": 4200000}, {"id": "W42", "name": "EOL 롤러 테스트 2", "role": "eol", "skills": ["eol"], "station": "EOL", "monthly_wage_krw": 4200000}, {"id": "H01", "name": "AGV", "role": "handler", "skills": ["handler"], "station": null, "monthly_wage_krw": 0}, {"id": "H02", "name": "AGV", "role": "handler", "skills": ["handler"], "station": null, "monthly_wage_krw": 0}, {"id": "H03", "name": "AGV", "role": "handler", "skills": ["handler"], "station": null, "monthly_wage_krw": 0}, {"id": "H04", "name": "AGV", "role": "handler", "skills": ["handler"], "station": null, "monthly_wage_krw": 0}, {"id": "H05", "name": "AGV", "role": "handler", "skills": ["handler"], "station": null, "monthly_wage_krw": 0}, {"id": "H06", "name": "AGV", "role": "handler", "skills": ["handler"], "station": null, "monthly_wage_krw": 0}, {"id": "H07", "name": "AGV", "role": "handler", "skills": ["handler"], "station": null, "monthly_wage_krw": 0}, {"id": "H08", "name": "AGV", "role": "handler", "skills": ["handler"], "station": null, "monthly_wage_krw": 0}, {"id": "H09", "name": "AGV", "role": "handler", "skills": ["handler"], "station": null, "monthly_wage_krw": 0}, {"id": "H10", "name": "AGV", "role": "handler", "skills": ["handler"], "station": null, "monthly_wage_krw": 0}, {"id": "H11", "name": "AGV", "role": "handler", "skills": ["handler"], "station": null, "monthly_wage_krw": 0}, {"id": "H12", "name": "AGV", "role": "handler", "skills": ["handler"], "station": null, "monthly_wage_krw": 0}, {"id": "H13", "name": "AGV", "role": "handler", "skills": ["handler"], "station": null, "monthly_wage_krw": 0}, {"id": "H14", "name": "AGV", "role": "handler", "skills": ["handler"], "station": null, "monthly_wage_krw": 0}, {"id": "F01", "name": "지게차(블랭크)", "role": "forklift", "skills": ["forklift"], "station": null, "monthly_wage_krw": 4200000}, {"id": "F02", "name": "지게차(야드)", "role": "forklift", "skills": ["forklift"], "station": null, "monthly_wage_krw": 4200000}, {"id": "D01", "name": "카캐리어 기사", "role": "driver", "skills": ["driver"], "station": null, "monthly_wage_krw": 4200000}], "outsourced": [{"id": "OUT_PT", "name": "파워트레인(엔진·변속기) 외주 입고", "products": ["P_SEDAN", "P_SUV"], "order_at": "order", "lead_days": {"min": 0.05, "mode": 0.1, "max": 0.3}, "join_process": "marriage", "delay_prob": 0.05, "delay_days": 1.0}], "products": [{"id": "P_SEDAN", "name": "중형 세단", "routing": [[["press", "underbody"], ["press", "side_l"], ["press", "side_r"]], "framing", "roof", "respot", "closures", "biw_insp", "pt_ed", "ed_oven", "sealer", "primer", "basecoat", "clearcoat", "paint_oven", "paint_insp", "trim", "marriage", "chassis", "wheels", "final", "fluids", "eol"], "parts": [{"id": "언더바디 패널", "qty": 12, "w": 1.6, "d": 1.2, "t": 0.0008, "n_edges": 0, "holes": 0, "finish": true, "material": "강판/알루미늄"}, {"id": "사이드 패널", "qty": 2, "w": 3.6, "d": 1.4, "t": 0.0008, "n_edges": 0, "holes": 0, "finish": true, "material": "강판/알루미늄"}, {"id": "루프·클로저", "qty": 7, "w": 1.8, "d": 1.3, "t": 0.0008, "n_edges": 0, "holes": 0, "finish": true, "material": "강판/알루미늄"}], "price_krw": 32000000, "color": "실버", "body": "sedan"}, {"id": "P_SUV", "name": "중형 SUV", "routing": [[["press", "underbody"], ["press", "side_l"], ["press", "side_r"]], "framing", "roof", "respot", "closures", "biw_insp", "pt_ed", "ed_oven", "sealer", "primer", "basecoat", "clearcoat", "paint_oven", "paint_insp", "trim", "marriage", "chassis", "wheels", "final", "fluids", "eol"], "parts": [{"id": "언더바디 패널", "qty": 14, "w": 1.7, "d": 1.3, "t": 0.0008, "n_edges": 0, "holes": 0, "finish": true, "material": "강판/알루미늄"}, {"id": "사이드 패널", "qty": 2, "w": 3.9, "d": 1.6, "t": 0.0008, "n_edges": 0, "holes": 0, "finish": true, "material": "강판/알루미늄"}, {"id": "루프·클로저", "qty": 7, "w": 1.9, "d": 1.4, "t": 0.0008, "n_edges": 0, "holes": 0, "finish": true, "material": "강판/알루미늄"}], "price_krw": 41000000, "color": "블루", "body": "suv"}], "orders": {"mode": "generate", "horizon_days": 6, "orders_per_day": 150, "release": "shift_start", "install_lead_days": {"min": 3, "mode": 5, "max": 8, "start_before_days": 1}, "batching": {"cut_key": "order", "cut_window_min": 0, "sort_min_per_part": 0.0}, "batch_size": {"P_SEDAN": 1, "P_SUV": 1}, "mix": {"P_SEDAN": 0.6, "P_SUV": 0.4}, "release_delay_min": [0, 5]}, "shipping": {"install_sites_per_day": 150}, "colors": ["화이트", "실버", "블랙", "블루", "레드", "그레이"], "assumptions": ["20 JPH(택트 3분), 1교대 9시간 — 실제 완성차 공장(40~60 JPH, 2~3교대)을 1/2~1/3 로 축소한 가정값(연구 32)", "프레스 라인은 언더바디·사이드 L·사이드 R 세 가지(병렬)가 공유 — 패널 종류가 바뀌면 금형 교환 8분(setup)", "차체 로봇 셀은 작업자 0명(로봇 n대), 의장은 사람 페이스(스테이션당 2~4명) — 실제는 라인별 수백 명", "운반 = AGV 14대(Dürr EcoProFleet 급 치수, 스키드 1대 = 차체 1대), 지게차 2대(블랭크·야드)", "설비 치수는 제조사 데이터시트 도면(연구 34: KUKA·FANUC·ABB·Dürr·Schuler·Eisenmann)에서 읽은 값, 셀 배치·대수는 가정", "파워트레인은 JIS 순서 납입(매리지에서 합류), 리드 1~7시간"]}