特定のパートに対してバッファが照会されたときにQUESTの動作をエミュレートしようとしています。パーツがバッファーにない場合、要求は保留されたままになり、パーツがバッファーに到着すると、パーツを要求したマシンに解放されます。私はまた、この動作を別のDESエンジンであるSimPyで見てきました。Anyogic Process Blockからエンティティをリクエストし、現在存在しない場合は利用可能になるまで待ちます。
私はALでこれを行う簡単な方法を見つけることができないようです。キュー・ブロックは、次のメソッドがあります。
- リリース(エージェント):何があるの場合はnullを返しません。一つは
- 削除(エージェント)を指定したとしてfalseを返すと、エージェントがないかどう要求を忘れるだろうキュー内のエージェントは
ので、これらのメソッドは、キューがパラメータでエージェントが含まれているとして、それは少し複雑になります... 私がやりたいことではないだろうと私は、パラメータの特定のセット(のは言わせを依頼したいですエージェントには1から3までの数値パラメータがあります。このパラメータがhであれば、キュー内のエージェントにのみ関心があります値2として)。私が試したし、どこにも私をリードしていない持ってきたカップルの事があります も同時にキューからこの薬を引っ張っ薬のシリーズがありますし、私が設定する優先順位を希望(のは、FIFOを言わせて) :
- キューの代わりにseizeブロックを使用し、エージェントをseizeブロックの埋め込みキューに追加します。 - >私はバッファブロックとは別の方法でバッファから取る適切な方法を見つけることができません(私はオプション2に移りました)。しかし、押さえつけは、パラメータダウン選択に役立つ可能性のあるカスタマイズ可能なリソース選択を持っています。
- seizeブロックを使用してエージェントをプールにリソースとして格納する。リソースの動的作成に関する問題、適切なリソースの確保など...
- キューからnullを戻した要求のキューを作成する。これはやり過ぎのように聞こえるが、私はそれに
を見てみましょうそれらのすべては、私は何かが足りない場合、またはしていた場合、私は思ったんだけどので、シミュレーションのための他のソフトでは、このような単純なことのために少し複雑のように見えます誰かがこの問題を克服する前にこの問題に遭遇しました
あなたが言及したように、Anylogicはその種の問題に対処するネイティブな方法を持っていません。人口(または待機ブロック)で満たされなかったリクエストを格納し、エージェントがキューに入るたびに、エージェントが目的のパラメータを満たしているかどうかにかかわらず、それらのリクエストをチェックします。それは基本的にQUESTとSimPyの機能です(自動的にでも)。 他のソフトウェアでも利用可能な多くの機能は、Anylogicで実装されていますが、オブジェクト指向プログラミングでは、Javaコードを使ってほとんど何でもできます。 – luizfvpereira