2017-03-10 9 views
0

기본적으로, 나는 다음과 같은 문제가 있습니다. Anylogic에있는 여러 병원의 특산품을 모델링하고 전문 분야 중 하나가 닫히면 어떻게되는지 분석해야합니다.Anylogic에서 dinamically/programmatically 리소스 만들기

병원 전문의 조합 수가 매우 (약 1000) 문제이므로 "동적/프로그래밍 방식으로"할 수있는 방법을 찾고 있습니다.

즉, 나는 Anylogic MANUALLY에서 리소스를 만들 필요없이 자동으로 resourcePool (및 그에 첨부 된 Schedule)을 만드는 방법을 찾고 있습니다. 예를 들어,이

//An arraylist of names of hospitals 
for (String hospitalCode : hospitals) { 
    for(String specialtyCode : specialtiesCodes) { 
     ResourcePool res = new ResourcePool(); 
     res.setName(hospitalCode + "_" + specialtyCode); 
     Schedule schedule = new Schedule(); 

     //Set the type of the schedule along with other parameters. This will be used 
     //to set the capacity of the resourcePool res 
     schedule.setParameters(type, capacity, ...); 

     res.attachSchedule(schedule); //Connects the schedule to the resource 

     schedule.create(); 
     res.create() //Creates the resources in the Main panel of Anylogic 
    } 
} 

Futhermore 같은,이 그림에서 나는

(용량 및 지연 시간이 내가 모델이 문제에 필수적이기 때문에 그들이 resourcePool로 모델링하는) 여러 가지 요리를이 An example of the modeled problem

당신은 내가 resourcePools 및 일정의 무리를 만든 것을 볼 수 있습니다,하지만 난이 수동으로을 수행했다.

일부 resourcePools를 복사/붙여 넣으려고했지만 resourcePool의 이름을 변경할 수있는 방법이 없습니다. Java API도 보았지만 솔루션을 찾지 못했습니다.

도움 주셔서 감사합니다. 나는 나의 질문이 분명하기를 바랍니다.

+0

일정은 다른 분야마다 다릅니다? 그렇다면 차이점은 무엇입니까? –

+0

예, 일정은 전문 분야에 따라 다릅니다. 그들 사이에 고정 된 차이가 없습니다. 예를 들어, 하나의 전문 분야는 10 개의 분야와 150 개의 분야를 가질 수 있습니다.중요한 것은 일정을 사용하여 최대 용량을 추적하는 것입니다. – Eugene

+0

용량 관리에만 사용 하시겠습니까? 또는 당신은 또한 그것들을 사용하여 근무 시간을 정의하고 있습니까? –

답변

0

방법 1 :
가장 쉬운 방법은 매개 변수 변형 실험을 사용하고 resourcePool의 용량으로 매개 변수를 정의하기 만하면되는 간단한 모델을 만드는 것입니다.
그런 식으로 한 번에 많은 실험을 실행할 수 있습니다.
그러나 이것은 병원 전문의 조합 간의 차이를 처리 할 수있는 모델을 요구합니다. 문제의 모든 세부 사항을 알지 못하기 때문에 가능한지 확실하지 않습니다. 하지만이 방법은 일반적으로 쉽고 빠르기 때문에이 방법을 사용하려고합니다.

방법 2 :
또 다른 방법은 아마도 당신이 시도하는 것을 따라야 할 것입니다.

  1. ResourcePool의 Advanced을 보면. 옵션이 표시되어 Single agentPopulation of agents 중 하나를 선택해야합니다.
    Population of agents을 선택하십시오. 이것은 리소스 풀의 배열로 바뀔 것이다.
    add_NameOfMyResourcepool(... parameters ...)
  2. 당신이 사용하고자하는 선택해야는 resourcepool를 사용하는 : 또한 당신이 코드를 원하는대로 에이전트를 만들 수 있습니다 시작하는 동안 initial empty
  3. 를 선택합니다. 이는 Resource sets 매개 변수를 동적 매개 변수로 변경하고 다음과 같이 작성하여 수행합니다. {{NameOfMyResourcepool.get(index_of_resource_you_want)}}
+0

두 번째 방법에 따라 솔루션을 구현했습니다. 일을 끝내는 것은 조금 까다 롭지 만 작동하는 것 같습니다. 고맙습니다! – Eugene