-
Notifications
You must be signed in to change notification settings - Fork 2
Simulation
SEMES 기업의 물류반송시스템 상에서 생성되는 로그 데이터를 동일하게 수집하기 위한 물류반송시스템 시뮬레이션을 말합니다. 실제 SEMES 기업의 로그데이터는 보안상 문제로 사용할 수 없어 Anylogic 툴을 활용하여 실제 물류반송시스템과 유사한 시뮬레이션을 구현했습니다. 이후 해당 시뮬레이션을 동작해 실제 로그와 유사한 로그데이터를 수집했습니다.

OS 환경에 맞는 Anylogic - Personal Learning Edition(무료)를 설치합니다. 무료 버전의 경우 시뮬레이션 동작 시 5시간이라는 제약이 있습니다. (시뮬레이션 상의 시간 기준)
Main -> Agent actions를 선택하여 url, id, pw를 사용할 mysql 설정 정보로 변경합니다.

시뮬레이션 화면 상에서 2D, 3D 버튼을 선택해 각 차원에서 물류반송시스템의 동작과정을 살펴볼 수 있습니다.
-
Simulation: Main 선택

-
Model Time 변경

- Main에서 설비에러, OHT 에러 발생 함수 선택
-
isFacilityRandomFailer: 설비 에러 발생 함수 -
isOhtRandomFailer: OHT 에러 발생 함수
- FunctionBody에서 밑줄친 숫자 값 변경
실제 SEMES 기업의 물류반송시스템의 구조는 보안상 문제로 그대로 재현할 수 없어 논문 및 자료, 실제 시스템의 수치 등을 참고하여 물류반송시스템을 유사하게 구현했습니다. 물류반송시스템 상에서 다음과 같은 요소를 고려했습니다.
- 레이아웃
- 설비 위치 및 설비 작업 시간
- OHT 작업 할당 및 OHT 이동 경로
- OHT 양보 주행 및 OHT 이동 속도
OHT의 이동경로인 레이아웃은 노드와 링크로 이루어져있습니다. 노드는 설비가 있을 수 있어 OHT가 정지해 작업을 수행할 수 있는 위치를 말하며, 링크는 OHT가 노드와 노드 사이를 이동하는 길입니다. 레이아웃은 논문을 참고하여 논문에서 제시한 레이아웃을 따라 구현하였습니다.
참조 논문 : Q learning-based dynamic route guidance algorithm for overhead hoist transport systems in semiconductor fabs
위에서 제시된 논문의 레이아웃에서 링크 사이마다 노드를 배치하였습니다. SEMES 기업 멘토님의 조언을 바탕으로 설비의 위치와 대수를 반영하였고, 설비 작업 시 공중의 OHT를 설비가 있는 지상으로 내리고 올리는 시간, 설비에서 작업을 수행하는 시간을 반영하였습니다.
OHT의 작업은 출발 설비에서 웨이퍼를 받아 목적 설비로 전달하는 일련의 과정을 가집니다. 실제 물류반송시스템에서는 다양한 요소를 고려하여 SEMES 기업 만의 알고리즘을 통해 생산량을 증가시키는 방향으로 OHT에 작업을 할당하고 OHT가 최단 시간 내에 도착할 수 있도록 이동 경로를 설정합니다. 시뮬레이션에서는 지정된 설비들에 대해 랜덤 위치에서 랜덤 시간을 두고 웨이퍼가 생산되도록 하며, 가장 가까이에 있는 유휴상태 OHT에 작업을 배정하여 출발 설비에서 목적 설비까지 경로를 최단 경로로 설정하였습니다. 최단 경로 알고리즘은 Anylogic에서 자체적으로 제공하는 경로 설정 방식을 사용했습니다.
OHT는 작업이 끝나면 유휴 상태가 되고, 유휴 상태에서는 레이아웃 상에 정지해있습니다. 만약 OHT가 정지해있는 곳을 다른 OHT가 지나가야한다면, 실제 물류시스템에서는 정지해있던 OHT가 다른 경로로 길을 비켜주는 양보주행을 실천합니다. 하지만 양보 주행의 경우 AI가 로그 분석 시 영향을 미치는 정보가 아니었기에 유휴상태인 OHT의 경우 실제 경로상에 존재하지 않다고 생각하여 다른 OHT의 이동에 문제가 없도록 구현했습니다. OHT의 이동 속도는 SEMES 기업 멘토님의 조언을 바탕으로 직선에서 5m/s, 곡선에서 3m/s로 조정하여 진행했습니다.
| data | desc | example |
| OHT ID | OHT 호기명 | 2606 |
| mode | OHT 작동 상태(A: 자동, M: 수동) | A |
| status | OHT 상태(I: 유휴, A: 도착, W: 작업, G: 이동) | G |
| error | OHT 에러(0: 정상, 200: OHT 에러, 300: 설비 에러) | 0 |
| carrier | 웨이퍼 여부(0: 웨이퍼 없음, 1: 웨이퍼 있음) | 1 |
| current_node | 현재 노드명 | node173 |
| next_node | 다음 노드명 | node174 |
| target_node | 목적 노드명 | node50 |
| point_x | 레이아웃 상 x좌표 | 1043.724 |
| point_y | 레이아웃 상 y좌표 | 480.000 |
| path | 링크명 | path343 |
| speed | 현재 속도 | 4m/s |
| start_time | 작업 시작 시간 | 2021-04-15 15:11:00 |
| current_time | 현재 시간 | 2021-04-15 15:12:30 |
| is_fail | 작업 성공/실패 여부(0: 성공, 1: 실패) | 1 |
