문제

나는 에이전트 기반 모델링 프로그램 자바에서.

에이전트에 애니메이션을 적용하는 가장 좋은 방법을 결정하려고 노력 중입니다.나는 각 에이전트가 한 번에 하나의 셀만 점유할 수 있도록 그리드를 사용하는 몇 가지 예를 보았습니다.

나는 에이전트가 모든 방향으로 창을 가로질러 "흐르게" 할 수 있는 더 부드러운 것을 찾고 있습니다.

어떤 제안이 있으십니까?

감사해요!

편집하다:

환경은 단순하고 2차원적입니다.에이전트는 한 명에서 수백 명에 이르기까지 다양합니다.

나는 에이전트를 일종의 방향 표시가 있는 작은 원으로 표현하고 싶습니다(구체적인 내용은 관련이 없습니다.요점은 에이전트에 회전 기능이 필요하다는 것입니다.)

두 번째 편집:

나는 현재 이 튜토리얼을 읽고 있습니다: http://www.giosoft.net/Development/Java-Asteroids-Tutorial.html

제가 이루고자 하는 일에 도움이 될 것 같습니다.

도움이 되었습니까?

해결책

정말로 무엇을 요구 하시는지 모르겠습니다. 아마도이 세 가지 질문을하고 계신가요 (또는 질문 할 예정이신가요)?

  1. "제 에이전트 기반 모델의 경우 공간에서 에이전트를 어떻게 표현해야합니까?"

    에이전트 기반 모델링을 수행 할 때 도메인에 적합한 방식으로 시뮬레이션을 설계해야합니다. 여기에있는 어느 누구도 귀하의 도메인에 대한 아이디어가없는 한 어떤 공간 선택을해야하는지에 대해 합리적인 답변을 드릴 수 없습니다.

    2 차원 또는 3 차원 시각화를 사용할 수 있습니다. 토로 이달 공간을 사용할 수 있습니다. 그리드 (예 : 이산 x 및 y 차원)를 부과하거나 연속 공간을 허용 할 수 있습니다. 근접성에 대한 특정 규칙이있을 수 있습니다 (예 : 한 번에 하나의 에이전트 만 한 번에 하나의 그리드 공간을 차지할 수 있음). 다른 규칙을 사용하는 것이 좋습니다.

    다시 한 번 핵심은 도메인에 적합한 규칙 집합을 찾는 것입니다. 모델에 필수적인 동작 유형을 생성하는 가장 간단한 규칙 세트를 찾는 것이 좋습니다.

  2. "어떤 Java 기반 애니메이션 라이브러리를 고려해야합니까?"

    에이전트 기반 모델의 공간적 측면을 결정했으면 그런 다음 이를 표시하는 데 사용할 기술을 결정할 준비가 된 것입니다. 이것은 광범위한 주제이지만 Processing, Piccolo2D, JavaFX, Java 2D 및 Java 3D를 살펴 보는 것이 좋습니다.

    사실이 질문은 위에서 언급 한 것보다 조금 더 광범위합니다. 아마도 애니메이션 이상의 것에 관심을 가질 것입니다. 에이전트 기반 모델은 GUI 및 / 또는 명령 줄 인터페이스에 의해 구동 될 수 있습니다. GUI를 원하면 모델 매개 변수를 조정할 수 있도록 다양한 입력 제어를 원할 것입니다. 적어도 Swing과 JavaFX를 고려하고 싶을 것입니다.

  3. "에이전트 기반 모델을 구축하려면 어떤 툴킷이나 라이브러리를 사용해야합니까?"

    위키 백과의 에이전트 기반 모델링 도구 비교 는 제가 가장 포괄적 인 목록입니다. 지금까지 보았지만 압도 될 수 있습니다. 내 경험상 동료와 동료는 NetLogo, RePast Simphony, AnyLogic 또는 MASON 중 하나 이상에 끌리는 경향이 있습니다. 나 자신을 포함하여 어떤 사람들은 종종 자신의 롤링이 더 빠르다고 생각합니다. 그 길을 가고 있다면 Ruby, Scala 또는 Python과 같은 고급 언어를 살펴보고 하위 수준의 언어 세부 정보 대신 도메인 논리에 집중할 수 있도록하는 것이 좋습니다.

다른 팁

MASON 을 살펴볼 수 있습니다.다중 에이전트 시뮬레이션을위한 오픈 소스 Java 플랫폼입니다.일부 데모 (예 : MAV)는 사용자가 설명하는 작업을 정확히 수행하는 방법을 보여줍니다.

RePast 는 옵션이 될 수있는 또 다른 Java 플랫폼입니다.

마지막으로 NetLogo 를 사용하면 설명을 매우 쉽게 할 수 있습니다.NetLogo를 다른 Java 코드와 통합 할 수는 있지만 매우 빠른 개발을 가능하게하는 고유 한 언어가 없습니다.

2000년부터 2006년까지 저는 다중 에이전트 시스템을 전문으로 하는 네덜란드 회사인 Tryllian에서 근무했습니다.회사는 현재 활동하지 않습니다.

Tryllian의 첫 번째 아이디어는 에이전트 기반 검색 어플라이언스(Gossip이라고 함)를 구축하는 것이었습니다.여기에는 귀여운 눈을 가진 여러 가지 밝은 색상의 원형 에이전트가 포함된 그래픽 클라이언트 앱이 있었습니다.각 에이전트의 뒷면에는 '배낭'을 끌 수 있는 틈이 있었습니다.배낭에는 검색어와 다양한 검색 결과(URL, 문서, 이미지 등)가 포함될 수 있습니다.검색을 수행하려면 사용자는 공상 과학 영화에서 볼 수 있듯이 별이 빛나는 배경을 가진 일종의 착륙장 문인 '인터넷 포털'로 준비된 배낭을 든 에이전트를 끌어야 했습니다.그런 다음 에이전트는 Tryllian 서버로 '텔레포트'되어 서버에 거주하는 '집사 에이전트'에 의해 '토픽 룸'으로 연결됩니다.방에서는 다른 에이전트와 상호 작용하고 검색 관심사와 결과를 교환할 수 있습니다.아직 Gossip을 다운로드할 수 있는 것 같습니다. 여기.

Here's what the Gossip client looked like

나중에 Tryllian은 Gossip과 같은 에이전트 애플리케이션을 더 쉽게 만들 수 있는 ADK(에이전트 개발 키트)를 개발하기로 결정했습니다.에이전트 동작 프로그래밍을 위한 작업 기반 모델을 제공했습니다.에이전트는 많은 이벤트(agentStarted 등)를 가져오고 이벤트 핸들러에서 이벤트(taskStarted 등)를 가져오는 작업을 추가할 수 있으며 더 복잡한 동작(하위 작업 형식)을 예약할 수 있습니다.API는 정말 훌륭하게 완성되었습니다.

제 생각에는 ADK의 주요 기능은 ADK가 제공하는 코드 이동성이었습니다.에이전트는 로컬 ARE(에이전트 런타임 환경)의 가상 공간 간을 이동할 수 있을 뿐만 아니라 다른 서버로 이동할 수도 있습니다.여기에는 당시 상당히 혁명적이었던 클래스 직렬화 및 다중 클래스 로더 솔루션이 포함되었습니다(우리는 생각하기를 좋아했습니다).이 기능을 사용하면 데이터를 전달하는 대신 데이터에 코드를 가져오는 설계가 가능해졌습니다(데이터를 펌핑하는 것은 여전히 ​​내가 아는 대부분의 엔터프라이즈 시스템의 주요 기능입니다).예를 들어 Tryllian은 감사 회사의 분석가가 감사 규칙을 에이전트에 인코딩하고 클라이언트 서버로 안전하게 전송하여 프로세스를 모니터링할 수 있는 원격 감사 애플리케이션을 개발했습니다.

이 대답이 나오기 전에 그만둘게요 정말 긴 (-;

이것은 아마도 당신이 지금 달성하고자 하는 것보다 조금 더 많은 것일 것입니다.질문을 좀 더 구체적으로 작성할 수 있다면 다중 에이전트 시스템을 설정하는 방법에 대해 조언을 드릴 수 있습니다(에이전트 간의 메시징을 모델링하는 방법도 매우 흥미로운 주제입니다. 그런데 아 죄송합니다. 그만하겠다고 말씀드렸습니다. ..).

다중 에이전트 시스템의 목적은 무엇입니까?대리인은 무엇을 하게 될까요?하나의 컴퓨터에서 실행됩니까, 아니면 분산됩니까?에이전트의 동작/규칙이 하드코딩되어 있거나 구성 가능하거나 완전히 동적입니까?

마지막 제안:단순 에이전트 모델링에 대한 합리적인 출발점은 다음과 같습니다. 감각-계획-행위 일반적으로 로봇과 관련이 있습니다.

편집하다:귀하의 의견에 대한 응답

Tryllian 에이전트 모델은 시뮬레이션된 물리적 환경과의 긴밀한 상호 작용보다 메시징에 더 중점을 둡니다.귀하가 게시한 예제 사이트를 보면 특히 에이전트 수가 증가할 때 성능이 매우 중요한 것 같습니다.Tryllian 에이전트의 장점을 활용하지 않을 것입니다.코드 이동성, 작업 기반 프로그래밍, 일반성 등을 고려하여 이와 같은 시뮬레이션에 가장 적합한 도구는 아닐 것이라고 생각합니다.

'그리드'와 '부드러운' 접근 방식을 언급하셨습니다.컴퓨터 시뮬레이션에서는 항상 일종의 개별 좌표계 내에서 에이전트의 크기, 좌표, 속도 및 방향을 나타내야 한다고 생각합니다.따라서 항상 일종의 그리드가 있지만 '셀'을 더 작게 만들어 더 부드럽게 보이도록 할 수 있습니다.

게임 영역에서 유용한 리소스를 찾을 수 있을까요?(스프라이트, 충돌 감지 등)

행운을 빌고 재미있게 보내!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top