{ "name": "Manual Node Network Example", "description": "Simple factory simulation with manually configured node network", "physical_layout": { "world_bounds": { "x": { "min": 0, "max": 100 }, "y": { "min": 0, "max": 50 }, "z": { "min": 0, "max": 10 } }, "unit": "meter", "collision_margin": 0.2 }, "prefabs": [ // ½Ã¹Ä·¹À̼ǿ¡¼­ »ç¿ëµÉ °³Ã¼µé ¼³Á¤°ª { "name": "raw_material_box", // ÇÁ¸®ÆÕ À̸§ "label": "Raw Material Box", // È­¸é¿¡ º¸¿©Áú ÇÁ¸®ÆÕ À̸§ "width": 4, // °³Ã¼ ±æÀÌ "length": 3, // °³Ã¼ ³ÐÀÌ "height": 2, // °³Ã¼ ³ôÀÌ "weight": 10, // °³Ã¼ ¹«°Ô "priority_order": 1, // °³Ã¼ ¿ì¼±¼øÀ§ "tags": [ // °³Ã¼ÀÇ ÅÂ±× °ª { "key": "address", // ÅÂ±× Å° "value": "anyang", // ÅÂ±× °ª(¹«Á¶°Ç string, ¼­¹ö¿¡¼­ typeÀ» º¸°í 󸮿¹Á¤) "type": "string" // ÅÂ±× °ªÀÇ Å¸ÀÔµé (string, number ÇÑÁ¤) } ] } ], "resources": [ { "name": "agv_fleet", "type": "agv", "capacity": 2, "speed": 2.0, "failure_rate": 0.001, "repair_time": 300 } ], "queues": [ // ÆÈ·¹Æ®(queue) { "name": "buffer_A", "label": "Buffer A", "capacity": 20, // ÃÖ´ë¿ë·® "is_unlimited": false, // ¿ë·®¹«Á¦ÇÑ "policy": "fifo", // ´ë±â¿­Ã³¸® ¹æ½Ä "wait_cost": 2.5, // ´ë±â ºñ¿ë "cost_time": 60, // ´ë±âºñ¿ë ½Ã°£¼³Á¤°ª "physical": { "position": { "x": 30, "y": 20, "z": 0 }, "dimensions": { "width": 3, "depth": 2, "height": 1.5 }, "orientation": 0, "access_points": { "input": { "local_position": { "x": -1.5, "y": 0, "z": 0 } }, "output": { "local_position": { "x": 1.5, "y": 0, "z": 0 } } } } } ], "rack": [ // ·¢(rack) { "name": "raw_materials", "label": "Raw Materials", "is_unlimited": false, // ¿ë·®¹«Á¦ÇÑ "rack_layout": { // ·¢±¸Á¶ "bay": 10, "level": 5, "depth": 2, "bay_length": 10, "level_length": 10, "depth_length": 10 }, "entity_count_per_block": 4, // Ä­´ç °³Ã¼ °³¼ö "receiving_time_policy": { // ÀÔ°í¼Ò¿äÁ¤Ã¥ "type": "exponential", "mean": 10.0 }, "shipping_time_policy": { // Ãâ°í¼Ò¿äÁ¤Ã¥ "type": "exponential", "mean": 10.0 }, "storage_cost_policy": { // º¸°üÀ¯Áöºñ¿ë Á¤Ã¥ "type": "exponential", "mean": 10.0 }, "required_resource": [ "forklift" ], // ÀÚ¿ø ¼±Åà "resource_usage": 1, // ÀÚ¿ø »ç¿ë·® "physical": { "position": { "x": 10, "y": 25, "z": 0 }, "dimensions": { "width": 6, "depth": 4, "height": 3 }, "orientation": 0, "access_points": { "pickup": { "local_position": { "x": 3, "y": 0, "z": 0 } } } } } ], "asrs": [ // ÀÚµ¿Ã¢°í(asrs) { "name": "automated_storage_A", "label": "ASRS A", "capacity": 1000, // ÃÖ´ë¿ë·® "is_unlimited": false, // ¿ë·®¹«Á¦ÇÑ "policy": "lifo", // ´ë±â¿­Ã³¸® ¹æ½Ä "receive_policy": "closest_available_cell", // ÀÔ°íÁ¤Ã¥ "shipping_policy": "batch_retrieval", // Ãâ°íÁ¤Ã¥ "rack_layout": { // ·¢±¸Á¶ "bay": 10, "level": 5, "depth": 2, "bay_length": 10, "level_length": 10, "depth_length": 10 }, "entity_count_per_cell": 1, // ¼¿´ç °³Ã¼ °³¼ö "receiving_time_policy": { // ÀÔ°í¼Ò¿äÁ¤Ã¥ "type": "exponential", "mean": 10.0 }, "shipping_time_policy": { // Ãâ°í¼Ò¿äÁ¤Ã¥ "type": "exponential", "mean": 10.0 }, "storage_cost": 0.05, // º¸°üÀ¯Áöºñ¿ë "storage_cost_policy": "per_cell_per_day", // º¸°üÀ¯Áöºñ¿ë Á¤Ã¥ "wait_cost": 0.5, // ´ë±â ºñ¿ë "cost_time": 3600, // ´ë±âºñ¿ë ½Ã°£¼³Á¤°ª "required_resource": [ "stacker_crane_A" ], // ÀÚ¿ø ¼±Åà "resource_usage": 1, // ÀÚ¿ø »ç¿ë·® "stacker_crane": { // ½ºÅÂÄ¿ Å©·¹ÀÎ "horizontal_speed": 3.0, // ¼öÆò À̵¿¼Óµµ "vertical_speed": 1.5, // ¼öÁ÷ À̵¿¼Óµµ "fork_cycle_time": 15 // Æ÷Å© »çÀÌŬ ŸÀÓ (for_cycle_time ¿ÀŸ ¼öÁ¤) }, "physical": { "position": { "x": 10, "y": 25, "z": 0 }, "dimensions": { "width": 6, "depth": 4, "height": 3 }, "orientation": 0, "access_points": { "pickup": { "local_position": { "x": 3, "y": 0, "z": 0 } } } } } ], "sources": [ // ÅõÀÔ { "name": "material_source", "label": "Material Source", "prefab": "raw_material_box", // »ý¼ºµÉ °³Ã¼ À¯Çü(prefab) "spawn_time_policy": { // »ý¼º ½Ã°£ Á¤Ã¥ "type": "exponential", "mean": 10.0 }, "spawn_count_policy": { // »ý¼º °³¼ö Á¤Ã¥ "type": "triangular", "min_val": 10.0, "mode": 30.0, "max_val": 40.0 }, "max_spawn_limit": 1000, // ÃÖ´ë»ý»ê°³¼ö "output_store": "raw_materials", // ¹èÃâ À§Ä¡ "physical": { "position": { "x": 20, "y": 10, "z": 0 }, "dimensions": { "width": 4, "depth": 3, "height": 2 }, "orientation": 0, "access_points": { "output": { "local_position": { "x": 2, "y": 0, "z": 0 } } } } } ], "processors": [ // ÀÛ¾÷ { "name": "main_processor", "label": "Main Processor", "type": "combine", // ŸÀÔ - Á¶ÇÕ, (split, transform Á¸Àç) "policy": "priority_based", // ¼±Åà Á¤Ã¥ "processing_time": 20, // ó¸® ½Ã°£ "processing_time_distribution": { // ó¸® ½Ã°£ Á¤Ã¥ (È®·üºÐÆ÷±â¹Ý) "type": "normal", "mean": 20, "std_dev": 2 }, "setup_time": 5, // Áغñ ½Ã°£ "setup_time_distribution": { // Áغñ ½Ã°£ (È®·üºÐÆ÷±â¹Ý) "type": "uniform", "min": 4, "max": 6 }, "defect_rate_policy": "normal", // ºÒ·®·ü (È®·üºÐÆ÷±â¹Ý) "defect_rate_time": [ 1 ], "input_stores": [ { "store_name": "raw_materials", "required_items": 2 } ], "output_queue": "buffer_A", "required_resource": [ "agv_fleet" ], // ÇÒ´çµÈ ÀÚ¿ø "physical": { "position": { "x": 50, "y": 20, "z": 0 }, "dimensions": { "width": 6, "depth": 4, "height": 3 }, "orientation": 0, "access_points": { "input": { "local_position": { "x": -3, "y": 0, "z": 0 } }, "output": { "local_position": { "x": 3, "y": 0, "z": 0 } } } } } ], "sinks": [ // ¹èÃâ { "name": "shipping_dock", "label": "Shipping Dock", "input_queues": [ "buffer_A" ], "physical": { "position": { "x": 80, "y": 10, "z": 0 }, "dimensions": { "width": 8, "depth": 6, "height": 3 }, "orientation": 0, "access_points": { "input": { "local_position": { "x": -4, "y": 0, "z": 0 } } } } } ], "conveyors": [ // ÄÁº£À̾î { "name": "main_conveyor", // À̸§ "speed": 1.5, // ¼Óµµ "length": 20, // ÄÁº£À̾îÀÇ ÃÑ ±æÀÌ "capacity": 15, // ¿ë·® "routing_rules": [ // Á¶°ÇºÐ±â·ê { "name": "route_to_qc", // ºÐ±â À̸§ "target_entity": "sample_entity_1", // ±ÔÄ¢À» Àû¿ëÇÒ °³Ã¼ "rules": [ // ±ÔÄ¢µé ¹«Á¶°Ç or Á¶°Ç { "tag": "product_tag_1", // ±ÔÄ¢¿¡ Àû¿ëµÉ Å×±× Å° "value": "1", // ű×ÀÇ °ª "rule": "more_than" // Á¶°Ç½Ä } ], "output_conveyor": "qc_conveyor" // Ãâ·Â ÄÁº£À̾î }, { "name": "default_route", "target_entity": "sample_entity_1", "rules": [ // ±ÔÄ¢µé ¹«Á¶°Ç or Á¶°Ç { "tag": "ÁÖ¼Ò", // ±ÔÄ¢¿¡ Àû¿ëµÉ Å×±× Å° "value": "ÀÇ¿Õ", // ű×ÀÇ °ª "rule": "equal" // Á¶°Ç½Ä(include, exclude) } ], "output_conveyor": "packing_conveyor" } ], "wait_rules": [ // Á¶°Ç ´ë±â·ê { "name": "inspection_wait", // ´ë±â À̸§ "timeout": 300, // ŸÀӾƿô "entity_limit": 5, // Á¦ÇÑ °³Ã¼ ¼ö "target_entity": "sample_entity_1", // ±ÔÄ¢À» Àû¿ëÇÒ °³Ã¼ "rules": [ // ±ÔÄ¢µé ¹«Á¶°Ç or Á¶°Ç { "tag": "product_tag_1", // ±ÔÄ¢¿¡ Àû¿ëµÉ Å×±× Å° "value": "10", // ű×ÀÇ °ª "rule": "more_less" // Á¶°Ç½Ä } ] } ], "physical": { "position": { "x": 50, "y": 20, "z": 0 }, "dimensions": { "width": 6, "depth": 4, "height": 3 } } } ], "node_network": { "nodes": [ { "id": "node_source_output", "position": { "x": 22, "y": 10, "z": 0 }, "type": "station", "connected_component": "material_source", "connection_type": "output", "properties": { "description": "Material source output point" } }, { "id": "node_storage_pickup", "position": { "x": 13, "y": 25, "z": 0 }, "type": "station", "connected_component": "raw_materials", "connection_type": "pickup", "properties": { "description": "Raw materials pickup point" } }, { "id": "node_processor_input", "position": { "x": 47, "y": 20, "z": 0 }, "type": "station", "connected_component": "main_processor", "connection_type": "input", "properties": { "description": "Main processor input point" } }, { "id": "node_processor_output", "position": { "x": 53, "y": 20, "z": 0 }, "type": "station", "connected_component": "main_processor", "connection_type": "output", "properties": { "description": "Main processor output point" } }, { "id": "node_buffer_input", "position": { "x": 28.5, "y": 20, "z": 0 }, "type": "station", "connected_component": "buffer_A", "connection_type": "input", "properties": { "description": "Buffer A input point" } }, { "id": "node_buffer_output", "position": { "x": 31.5, "y": 20, "z": 0 }, "type": "station", "connected_component": "buffer_A", "connection_type": "output", "properties": { "description": "Buffer A output point" } }, { "id": "node_sink_input", "position": { "x": 76, "y": 10, "z": 0 }, "type": "station", "connected_component": "shipping_dock", "connection_type": "input", "properties": { "description": "Shipping dock input point" } }, { "id": "node_finished_delivery", "position": { "x": 66, "y": 25, "z": 0 }, "type": "station", "connected_component": "finished_goods", "connection_type": "delivery", "properties": { "description": "Finished goods delivery point" } }, { "id": "central_hub", "position": { "x": 40, "y": 25, "z": 0 }, "type": "waypoint", "properties": { "description": "Central traffic hub" } }, { "id": "agv_parking_zone", "position": { "x": 10, "y": 10, "z": 0 }, "type": "parking", "properties": { "capacity": 2, "description": "AGV parking area" } }, { "id": "charging_station", "position": { "x": 90, "y": 40, "z": 0 }, "type": "charging", "properties": { "charging_power": 5.0, "description": "AGV charging station" } } ], "paths": [ { "from": "node_source_output", "to": "node_storage_pickup", "bidirectional": false }, { "from": "node_storage_pickup", "to": "central_hub", "bidirectional": true }, { "from": "central_hub", "to": "node_processor_input", "bidirectional": true }, { "from": "node_processor_output", "to": "node_buffer_input", "bidirectional": false }, { "from": "node_buffer_output", "to": "central_hub", "bidirectional": true }, { "from": "central_hub", "to": "node_sink_input", "bidirectional": true }, { "from": "central_hub", "to": "node_finished_delivery", "bidirectional": true }, { "from": "agv_parking_zone", "to": "central_hub", "bidirectional": true }, { "from": "central_hub", "to": "charging_station", "bidirectional": true } ], "agv_specs": { "speed": 2.0, "acceleration": 1.0, "deceleration": 1.2, "max_load": 10.0, "empty_weight": 50.0, "battery_capacity": 24.0, "charging_power": 5.0, "base_power_consumption": 0.5, "max_rotation_speed": 90.0, "rotation_acceleration": 45.0, "stop_time": 2.0, "turn_around_time": 3.0 } }, "groups": { "production": { "label": "Production Line", "components": [ "material_source", "main_processor" ], "queues": [ "buffer_A" ] }, "logistics": { "label": "Logistics", "components": [ "shipping_dock" ], "stores": [ "raw_materials", "finished_goods" ] } } }