이 블로그 게시물은 AnyLogic 의 간단한 크레인 야드 시뮬레이션에 대해 설명합니다 . 데모 목적으로 AnyLogic에서 이 모델을 개발했습니다. 저는 이미 AnyLogic의 시뮬레이션 모델링에 대한 일련의 블로그 게시물을 게시했습니다. 아래는 그 중 일부의 목록입니다.
- 링크 : AnyLogic에서 부품 라우팅의 AGV 시뮬레이션
- Link : AnyLogic의 컨베이어 시뮬레이션
이 포스트는 가공된 부품의 보관을 위한 보관소를 고려합니다. 버퍼 자체의 채우기 속도는 고려하지 않습니다. 개별 부품 추적을 모델링하지도 않습니다. 즉, 저장 용량은 블랙박스이며 야드 크레인의 처리 능력을 평가하는 데 중점을 둡니다. 이것은 버퍼로 들어오고 나가는 속도를 설명하는 지정된 재료 흐름 매트릭스를 가정합니다.
크레인 야드 시뮬레이션 모델 개요
아래 스크린샷은 AnyLogic 크레인 야드 시뮬레이션 모델 의 주요 구성 요소를 보여줍니다 . 보관소에는 2개의 입구 컨베이어와 3개의 출구 컨베이어가 있습니다. 단일 수평 야드 크레인으로 작동됩니다.
1시간이면 시공 가능한 심플한 모델입니다. 이 기사의 소개에서 언급했듯이 개별 부품 추적은 모델의 일부가 아닙니다. 이는 부품이 버퍼에 저장되어 파괴된다는 것을 의미합니다. 이것은 위의 논리 블록 섹션 의 생산 – 보관 프로세스입니다. 야드에서 회수는 동일한 야드 크레인을 사용하여 별도의 프로세스로 구현됩니다. 이것은 위의 논리 블록 섹션에서 제공되는 검색 프로세스입니다. 마당에 있는 부품의 거주는 모델링되지 않습니다. 충진율은 고려되지 않습니다. 초점은 야드 크레인의 가능한 최대 처리량을 평가하는 것입니다.
스토리지 슬롯 및 컨베이어 할당 구현
이 크레인 야드 시뮬레이션 모델 에서 두 가지 할당 결정을 내려야 합니다.
- 입구 컨베이어 중 하나에 도착하는 부품의 경우 야드에서 부품을 보관할 위치를 결정해야 합니다.
- 다운스트림 프로세스로 전달해야 하는 부품, 즉 검색해야 하는 부품의 경우 부품을 배치할 컨베이어를 결정해야 합니다.
보관을 위해 보관 위치에 부품 할당
생산 – 보관 프로세스 부터 시작 : 이것은 논리 블록의 아래 시퀀스에서 구현됩니다.
부품은 소스(사용자 정의 클래스 부품 의 에이전트)에 의해 생성됩니다 . 이 새로운 부품은 논리 블록 carry_a 및 carry_b 를 사용하는 입구 컨베이어 중 하나에 있습니다 . 각 입구 컨베이어의 확률은 50%입니다.
다음으로 작은 사용자 정의 함수가 호출됩니다( allocation_01 / allocation_02 ). 이 기능은 단순히 부품을 저장해야 하는 “베이”라고 하는 노드(1 ~ 7)를 결정합니다. 변수 targetbay_01 / targetbay_02 를 설정하면 됩니다. 그런 다음 AnyLogic은 크레인을 잡고 지정된 노드 내의 임의 어트랙터로 전송을 실행합니다.
야드에서 부품을 회수하여 컨베이어에 할당
스토리지 야드에서 부품 검색을 모델링하려면 부품을 검색할 소스 베이 (소스 노드)와 부품을 배치할 대상 컨베이어 를 지정해야 합니다. 이를 쉽게 하기 위해 이 두 변수를 사용자 지정 부품 에이전트 클래스에 배치했습니다.
sourcebay 와 targetconveyor 도 메인 모델 자체의 변수입니다. 그러나 그것들은 단지 임시 메모리로 사용됩니다. 검색 소스에 새 에이전트가 도착하면 selection() 함수가 호출됩니다.
선택 기능은 임시 소스 베이 및 대상 컨베이어 자리 표시자를 설정합니다. 그런 다음 이러한 변수의 값이 에 기록됩니다. 소스베이 와 . 새로 도착한 부품 에이전트(객체 인스턴스) 의 targetconveyor 속성. 아래 스크린샷은 선택 기능을 보여줍니다.
위의 선택 기능 코드 스크린샷에서 볼 수 있듯이 검색 위치는 완전히 무작위입니다. 그러면 목표 컨베이어는 항상 크레인에 가장 가까운 컨베이어입니다.
AnyLogic에서 크레인 야드 시뮬레이션 실행
AnyLogic은 마크업을 2D 및 3D로 시각화합니다. 아래 스크린샷은 런타임 동안 시뮬레이션 모델 의 2D 스냅샷을 보여줍니다.
1시간의 시뮬레이션 후 9개의 부품이 배송되었고(출구 컨베이어 중 하나의 끝에서 검색 및 배송됨) 9개의 부품이 치워졌습니다. 아래는 1시간의 시뮬레이션 후 관련 블록의 스크린샷입니다.
검색보다 보관에 우선 순위를 지정하거나 작업 우선 순위 지정과 관련된 다른 논리를 구현하려는 경우 JAVA 기능으로도 그렇게 할 수 있습니다.
결론 및 관련 내용
개별 부품 추적 없이 간단한 크레인 야드 시뮬레이션 모델 을 제시했습니다. 이러한 종류의 모델은 예를 들어 장비 처리량을 평가하는 데 적합합니다. 이 경우 초점은 수평 야드 크레인의 처리 능력에 있었습니다.
최적화 및 시뮬레이션을 전문으로하는 산업 엔지니어 (R, Python, SQL, VBA)
Leave a Reply