AnyLogic에서 부품 라우팅의AGV시뮬레이션

이 기사에서는 간단한 AGV 시뮬레이션 모델 을 제시합니다 . 공장에서 부품 라우팅을 시뮬레이션하는 방법에 대한 예입니다. AnyLogic에서 시뮬레이션을 구현했습니다.

나는 이미 AnyLogic에 대한 몇 가지 다른 기본 소개를 제공했습니다. 더 구체적으로 말하자면, 저는 이전에 YT 비디오 시리즈에서 몇 가지 기본 컨베이어 모델을 소개했습니다. 다음은 AnyLogic 시뮬레이션 모델링에 대한 몇 가지 기본 소개 목록입니다.

다음 단락의 아래 그림에서 AGV 시뮬레이션의 개념적 레이아웃을 설명했습니다.

라우팅과 함께 AGV 시뮬레이션에 AnyLogic 사용

이 블로그의 이전 게시물에서 이미 다양한 이산 이벤트 시뮬레이션 소프트웨어 옵션을 소개했습니다. 아래에 몇 가지 예를 나열합니다. 분명히 저는 무료 공개 시뮬레이션 도구 와 프레임워크의 팬입니다(예: “simmer” 참조). 그러나 AnyLogic은 상용 도구입니다.

다양한 시뮬레이션 프로젝트를 통해 위에 나열된 도구뿐만 아니라 다양한 이산 이벤트 시뮬레이션 도구 로 작업했습니다. 그러나 재료 흐름 연구에 포함된 AGV 시뮬레이션의 경우 AnyLogic 및 Simio가 최고의 이산 이벤트 시뮬레이션 도구 중 하나라는 것을 알았습니다 . 나는 또한 AGV 시뮬레이션과 관련하여 FlexSim 및 Plant Simulation의 기능을 보았고 여러분도 그럴 수 있습니다. 하지만 커스터마이징이 가능하다는 점에서 저는 AnyLogic을 선호합니다. 주로 구조, 문서화 및 투명성과 AnyLogic이 JAVA로 코딩되어 있다는 사실 때문입니다.

시뮬레이션 연구에는 절차 모델이 필요합니다.

공급망 분석가가 시뮬레이션에 들어갈 때 자주 관찰하는 일반적인 실수는 바로 모델링으로 넘어가는 것입니다. 그러나 좋은 시뮬레이션 모델 은 시뮬레이션 연구의 목적이 명확하게 정의되어야만 개발될 수 있습니다. 더욱이 이것은 일반적으로 관련된 모든 당사자가 기본 시스템이나 문제를 완전히 이해한 후에만 가능합니다. 모든 시뮬레이션 연구에 절차 모델을 사용하는 것이 좋습니다. 아래 그림은 내 절차 모델을 보여줍니다.

AGV 시뮬레이션을 위한 이산 이벤트 시뮬레이션 절차 모델.

사실 제가 적용한 절차 모델은 이전 포스트에서 이 블로그에 게시된 적이 있습니다. 다음은 두 가지 관련 기사입니다.

따라서 시뮬레이션 연구의 초기 단계에서 상황을 완전히 이해하는 것이 중요합니다. 이 단계에 대한 적절한 용어는 예를 들어 상황 분석, 격차 분석 및 문제 정의입니다. 데이터 수집은 이 단계의 일부입니다. 그 후, 나는 일반적으로 개발할 시뮬레이션 모델 의 일부인 것과 포함하지 않는 것을 명시적으로 정의합니다 . 예를 들어, 취리히(스위스)에서 트램 운행과 트램 일정을 시뮬레이션한 적이 있습니다. 나는 그 프로젝트에서 트램 레일을 막는 보행자 흐름을 자세히 구현하지 않기로 결정했습니다. 대신 랜덤 분포 곡선을 사용하여 레일 막힘 빈도와 지속 시간을 설명했습니다.

결국 시뮬레이션 연구는 레이아웃과 개념 모델을 개발하여 진행됩니다. 개념적 모델링에는 예를 들어 관련 장비에 대한 상태 전환 다이어그램의 정의뿐만 아니라 흐름도 작성이 포함됩니다. 이것은 실제 시뮬레이션 모델링 구현을 훨씬 쉽게 만들고 잘 구조화된 코드를 보장합니다.

AGV 시뮬레이션의 간단한 레이아웃을 스케치했습니다.

내가 작업하는 프로젝트에 따라 일반적으로 대략적인 레이아웃을 직접 그립니다. 또는 클라이언트 엔지니어링 팀에서 나에게 제공한 AutoCAD 도면(또는 이와 유사한 것)에 의존할 것입니다.

AGV 시뮬레이션 모델의 간단한 레이아웃 초안.

위 그림은 롤러 컨베이어를 통해 수신된 입력 재료를 전달하는 중앙 수신 영역을 나타냅니다. 크레인 또는 로봇은 컨베이어 끝에 있는 AGV에 부품을 배치합니다.

AGV는 초기 입고에서 자재 흐름을 용이하게 합니다.

AnyLogic에서 이 AGV 시뮬레이션의 핵심을 나타내는 AGV는 부품을 작업 영역으로 라우팅합니다. 이 라우팅 프로세스에는 매우 복잡한 수준에서 의사 결정이 필요할 수 있습니다.

예를 들어 가장 가까운 AGV를 작업에 할당하거나 사용률이 가장 낮은 AGV를 할당할 수 있습니다. 실제 라우팅 결정을 모델링하고 싶은 상황에 직면할 수도 있습니다. 즉, 하나의 AGV는 경로 A를 사용하고 다른 AGV는 AGV 레인 네트워크를 통해 경로 B를 사용합니다.

AnyLogic에서 AGV 시뮬레이션 구현

AnyLogic에서 이 AGV 시뮬레이션을 구현했습니다. 모델의 스크린샷은 아래에서 볼 수 있습니다.

AnyLogic의 AGV 시뮬레이션 모델.

기본적으로 모델은 부품 도착을 생성하는 소스로 구성됩니다. 이러한 부품 도착은 컨베이어로 전달됩니다. 부품이 컨베이어의 정의된 끝 위치에 도착하면 운송 작업이 해제됩니다. 실제로 이 작업 디스패치 프로세스는 기본 AnyLogic 프로세스입니다. 그러나 JAVA를 사용하여 사용자 지정 작업 디스패치 논리를 구현할 수 있었습니다.

위에서 설명한 대로 기본 AnyLogic 논리를 사용하여 AGV 중 하나가 전송에 할당되면 모델은 부품을 전송할 작업 영역을 결정합니다. 이를 위해 데모 목적으로 사용자 정의하지만 간단한 결정 로직을 구현했습니다. 아래의 다음 장에서 이 사용자 정의 논리에 대해 설명합니다.

이것은 간단한 예이므로 작업 영역을 자세히 구현하지 않았습니다. 또한 컨베이어 출구에서 로봇이나 크레인의 픽 앤 플레이스 작업을 세부적으로 구현하지도 않았습니다. 내 절차 모델을 참조하면 이것은 완전히 괜찮습니다. 연구 목표와 문제 정의가 이러한 프로세스 단계를 특정 세부사항으로 구현해야 한다고 나타내지 않는 한 더 높은 추상화 수준에서 이러한 프로세스 단계를 구현하는 것이 “허용”됩니다. 픽 앤 플레이스 작업은 예를 들어 시간 지연으로 모델링될 수 있습니다. 이 시간 지연은 선택한 자재 취급 장비에 적합한 경우 무작위로 분배될 수 있습니다.

사실 또 다른 추상화는 작업 영역을 시각화하지 않았으며 이를 나타내는 사용자 정의 개체를 구현하지 않았다는 것입니다. 대신 AnyLogic의 기본 노드 개체를 사용했습니다. 현재 활성 대상 노드, 즉 현재 관련 작업 영역은 스테이션 변수에 의해 참조됩니다. 이 변수는 사용자 지정 라우팅 알고리즘에 의해 업데이트됩니다. 이 기사에서 더 자세히 설명하겠습니다.

AnyLogic 노드 형태의 스테이션별 AGV 시뮬레이션 작업 영역 참조

부품이 작업 영역에 도착하면 부품은 지정된 기본 시간 동안 작업 영역에 머뭅니다. 결국 부품이 싱크대에 들어갑니다. 싱크가 부품을 삭제하여 모델에서 제거합니다.

JAVA로 커스텀 라우팅 결정 구현하기

AGV 시뮬레이션을 구현할 때 영향을 미치고 싶은 한 가지는 라우팅 결정입니다. 이는 라우팅이 모든 자재 흐름을 용이하게 하기 때문입니다. 이 경우 입고에서 도착하는 각 부품이 동일한 입력 재료(예: 밀링 또는 기타 처리를 위한 원시 부품)를 나타낸다고 가정하면 재료 유형을 기준으로 라우팅할 수 없습니다. 대신 작업 센터 활용도 또는 기타 기준을 기반으로 라우팅할 수 있습니다. 요점은 라우팅 결정을 쉽게 사용자 지정할 수 있어야 한다는 것입니다. AnyLogic에서 이를 수행하는 방법에 대한 간단한 예를 제공하기 위해 이 블로그 게시물을 작성했습니다.

이 간단한 AGV 시뮬레이션 모델 에서 저는 4개의 변수와 1개의 기능으로 사용자 지정 라우팅을 용이하게 합니다.

  • output_01 ~ output_03 은 각 작업 영역에 전달된 총 부품 수를 측정합니다.
  • 스테이션 은 부품 대상 작업 영역(AnyLogic 노드 개체)을 참조합니다.
  • set_route 는 맞춤형 라우팅 결정을 용이하게 하는 기능입니다.

아래 스크린샷은 set_route 함수의 내용을 표시합니다.

AnyLogic의 AGV 시뮬레이션에 구현된 맞춤형 라우팅 로직

set_route 함수는 단순히 순환 라우팅을 구현합니다 . 즉, 첫 번째 부분은 station_a 로 가고, 두 번째 부분은 station_b 로 가는 식 입니다. 그러나 필요한 경우 추가 기능과 변수, 기타 유형의 의사 결정을 지정할 수 있습니다. 결국 구현해야 할 논리는 특정 상황에 따라 다릅니다.

set_route 함수는 에이전트가 논리 블록의 아래 체인에서 moveTo_a 블록에 들어갈 때마다 호출 됩니다 .

AGV 시뮬레이션에서 사용자 지정 라우팅을 호출하기 위한 논리 블록

이 논리 블록 체인은 다음 흐름을 구현합니다.

  • src 는 간격 시간이 무작위로 분포된 부품을 생성합니다.
  • 컨베이어 마크업의 시작 위치에서 끝 위치까지 부품을 전달합니다 .
  • get_transport 는 AGV가 컨베이어 출구에서 부품을 픽업하도록 요청합니다.
  • moveTo_a 는 set_route 를 호출 하고 스테이션 의 노드 참조로 부품을 전송합니다.
  • 지연 은 부품이 일정 시간 동안 노드(작업 영역을 나타냄)에 머물게 합니다.
  • 싱크 는 모델에서 부품을 제거합니다.

moveTo_a 블록의 OnEnter 섹션에서 함수 호출을 지정할 수 있습니다. 아래 스크린샷을 참조하세요.

블록 호출 라우팅 논리 이동

결론 및 관련 내용

이 간단한 AGV 시뮬레이션 예제에서 저는 AnyLogic에서 부품 라우팅을 사용자 정의하는 방법을 보여주었습니다. 이 예에서 사용된 라우팅 기준과 라우팅 로직은 매우 간단했습니다. 실제 라우팅 알고리즘은 종종 더 정교하고 작동하는 공장의 요구 사항에 맞게 조정됩니다. 이러한 라우팅 알고리즘은 빠르게 복잡해지고 어려울 수 있습니다.

이 기사 전체에서 이미 관련 콘텐츠에 대한 다양한 링크를 제공했습니다. 그럼에도 불구하고 관심 있는 독자와 공유하고 싶은 몇 가지 추가 기사가 있습니다.

You May Also Like

Leave a Reply

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.