0

Anylogic で単純な配送センターを作成しています。トラック エージェントを作成しましたが、ある GIS ポイントから別の GIS ポイントに移動できます。

しかし、他のエージェント (バナナ エージェントとしましょう) をトラック エージェントにロードしてから、トラックが移動を開始したいと考えています (トラックがバナナでいっぱいの場合)。

4

1 に答える 1

3

ほぼ 1 年前からの問題がすでに解決されていることを願っています。ただし、具体的な答えはないので、同じ問題で行き詰まる可能性のある人のためにここに残しておきます。

Anylogic のProcess Modeling Library (PML) には、Pickupとその反対のDropoffという要素があります。これはまさにあなたが要求したことを行うために使用されます: いくつかの要素をトランスポーター (トラック、フォークリフト、または人) に積み込むために使用されます。

あなたが求めたようにブロックを使用するには、写真のようなトポロジが必要です: トポロジー

Queue要素は、ピックアップが発生するまで要素を保持するために必要です。Pickup要素は、次の3 つのモードで要素を選択できます。

  • 指定された条件が True の間。
  • 正確な金額 (利用可能な場合);
  • 利用可能なすべてのエージェント。

私は、すべてのトラックが最大容量まで完全に満たされている必要があると想定しています. したがって、選択されたモードは、正確な量がエージェントTruckのパラメーターであるTruckCapacityになる 2 番目のモードになります。選択したモードは、希望する量までエージェント (この場合はバナナ) をピックアップします。ただし、何も利用できない場合、または現在の量が必要な量よりも少ない場合、 Pickupブロックのネイティブの動作は、コンテナー要素が単にそれを通過し、利用可能なものだけを選択できるようにすることです。

このような行為を防ぐために、一度に 1 台のトラックしか入れない制限エリアを作成しました。さらに、HoldブロックWaitFullyLoaded (最初はブロックされているように設定) は、コンテナー エージェントのTruckを強制的に完全にロードします。BananaがQueue waitTruckに入るたびに、検証が実行され、1 つのTruckを埋めることができるかどうかが確認されます。その場合、その 1 台のトラックの通過を許可します。

if(self.size()/TruckCapacity>=1){
    WaitFullyLoaded.unblock();
}

再びWaitFullyLoadedをブロックするには、トラックが制限されたAreaEndブロックを通過するときに、WaitFullyLoaded.block();

主なアイデアはこれです。ただし、多くの機能を追加および変更できます。

お役に立てれば、

ルイス

于 2016-10-04T14:11:51.070 に答える