2017-03-10 4 views
0

基本的に、私は次のような問題があります:Anylogicのいくつかの病院の専門分野をモデル化し、Anylogicでのディメンショナル/プログラムによるリソースの作成

病院専門の組み合わせの数が非常に多い(約1000)ので、私はそれを「動的に/プログラム的に」行う方法を探しています。

つまり、私は、Anylogic MANUALLYでリソースを作成する必要なく、自動的にresourcePool(およびそれに関連付けられたスケジュール)を作成する方法を探しています。たとえば、この

//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

はい、スケジュールは専門分野によって異なります。それらの間には一定の違いはありません。例えば、1つの専門分野は、能力10と別の専門分野150を有することができる。重要なことは、スケジュールを使用して最大キャパシティを追跡することです。 – Eugene

+0

は容量の管理にのみ使用していますか?またはあなたも勤務時間を定義するためにそれらを使用していますか? –

答えて

0

方法1:
最も簡単な方法は、パラメータ変動実験を使用し、パラメータをresourcePoolの容量で定義するだけでよい単純なモデルを作成することです。
このようにして、一度に多くの実験を同時に実行することができます。
しかし、これはあなたの病院の専門の組み合わせの間のバリエーションを扱うことができるモデルを必要とします。私はあなたの問題のすべての詳細を知らないので、私はそれが可能であるかどうかわからない。しかし、これは通常、方法がより簡単で高速であるため、このメソッドを使用しようとします。

方法2:
もう1つの方法、おそらくあなたが試みていることに沿ってもっと。

  1. あなたのResourcePoolのAdvancedの下で見れば。 オプションが表示され、Single agentPopulation of agentsのいずれかを選択する必要があります。
    Population of agentsを選択します。これにより、リソースプールの配列に変更されます。また、あなたがコードにしたいだけのように、エージェントを作成することができます起動時initial empty
  2. を選択:
    add_NameOfMyResourcepool(... parameters ...)
  3. をRESOURCEPOOLを使用するために、あなたが使用したいかを選択する必要があります。これは、パラメータResource setsを動的パラメータに変更し、次のように書き込むことによって行われます。{{NameOfMyResourcepool.get(index_of_resource_you_want)}}
+0

私は第2の方法に従って解決策を実施した。物事を完了させるのはちょっと難しいですが、それは機能しているようです。ありがとうございました! – Eugene

関連する問題