20250930commit
This commit is contained in:
632
Assets/Resources/DataSample.json
Normal file
632
Assets/Resources/DataSample.json
Normal file
@@ -0,0 +1,632 @@
|
||||
{
|
||||
"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"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user