2016-12-07 2 views
1

AnyLogic에서 선행 시뮬레이션을 수행 할 수 있습니까? 구체적 :AnyLogic : Look ahead simulation

변수 값을 사용하여 2
  1. 시뮬레이션 시간 T.까지
  2. 병렬 T + t의 값까지 모두 시뮬레이션.
  3. T + t에서 시스템 상태를 평가하고 성능 향상을위한 변수 값을 선택하십시오.
  4. 변수에 대해 선택된 값을 사용하여 T로부터 계속 시뮬레이션하십시오.

이것은 구현하려고하는 기본 기능입니다. 변수 값은 의사 결정 트리에서 가져올 수 있으며 구현에 영향을 미치지 않아야합니다.

누군가가 이와 같은 작업을 수행했는지 알려주세요.

답변

2

예, 일부 Java 코드에서 가능합니다. 다음과 같이 할 수 있습니다 :

  1. 일시적으로 부모 실험을 일시 중지하고 시간 T에 스냅 샷을 저장하십시오.
  2. 상위 실험에서 두 개의 새로운 실험을 만듭니다.
  3. 두 가지 새로운 실험에서 스냅 샷로드;
  4. 시간 T + t까지 두 실험을 모두 계속 실행하십시오.
  5. 상위 실험에 알림을 보내 결과를 비교하고 최상의 가치를 할당하고 시뮬레이션을 계속하십시오.

몇 가지 포인트는 UI 컨트롤이나 코드별로 수동으로 수행 할 수 있습니다.

+0

스냅 샷 일시 중지, 저장 및로드를 위해 호출 할 메소드를 찾을 수 있습니다. runTillTime() 메서드와 두 실험 사이의 통신에 관해 제발 저를 안내해 주시겠습니까? –

+0

"변수의 2 개 값 사용, 두 값 모두 T 또는 T까지 병렬로 시뮬레이트"라는 말은 모델을 설계하는 것에 대해 걱정할 필요가 있음을 의미합니다. 즉,이 중간 실행에 대한 변경이 '변경되지 않은' AnyLogic 매개 변수를 사용하여 해당 변수를 변경 한 결과를 '연결'할 수 있습니다. 모델 기능에 따라 문제가 될 수 있습니다. –

+0

@SwapRenushe, 시간 T + t까지 실행 :'getEngine(). runFast (time() + constant);'. 실험 커뮤니케이션 : 다른 실험에서 실험 인스턴스를 생성 했으므로 부모 실험에서 새로운 실험에 대한 참조를 저장하면됩니다. 최상위 레벨 에이전트와 모든 멤버를 다음과 같이 얻을 수 있습니다. ((Main) getEngine(). getRoot())' –

관련 문제