AnyLogicのマテリアルハンドリングライブラリに関するシリーズのパート5。これは、商品が移動、処理、および分類される工場や倉庫、およびその他の施設の作業をモデル化するために特別に設計されたライブラリです。
以前のブログでは、コンベア操作、無人搬送車(AGV)、 ワークステーション、産業用クレーンをシミュレートする方法について詳しく説明しました。このブログでは、 Network Port エレメントを使用して、個々のコンベアと処理ステーションを単一のコンベアネットワークに接続する方法を示します。
AnyLogicの経験豊富なユーザーは理解が容易かとおもいますが、マテリアルハンドリングライブラリを使い始めたばかりの場合は、以前のブログと、ライブラリの基本機能に関するこのステップバイステップのオンラインガイドが参考になります。
それでは始めましょう!
内容
- 前書き
- 注文ピッキングラインのモデル
- Network Portエレメントを使用して、異なるエージェントでスペースマークアップを組み合わせる方法
- Network portエレメントを使用して同一の処理ステーションを組み合わせる方法
- 単一ステーションのロジックをモデル化する方法(PickingZoneエージェント)
- ステーションプロセスをコンベア上のオブジェクトの動きと接続する方法
- 結論
複数の同一エレメントを持つコンベアネットワークを見たことがありますか?たとえば、処理センターとフルフィルメントセンターでは、共通のコンベアネットワークによって結合された数十の並列または連続するステーションを備えた注文組立ラインを見ることができます。多くの場合、これらのステーションは同一です:同じ数の保管場所、同じプロセス、同じ数のオペレーターなどがあります。
AnyLogic 8.5には、このようなコンベアネットワークの作成を簡素化するために、新しいエレメントであるNetwork portがあります。これにより、個々のネットワークを簡単に相互に接続できます。接続エレメントが異なるエージェント、モデル内の異なるレベル、及び互いに遠く離れている場合でも機能します。
このアプローチがモデリングの高速化にどのように役立つかを次に示します:
- 同一のステーションのグループを作成するには、そのうちの1つを描画してカスタマイズするだけです。次に、モデルの起動時に、AnyLogicは必要な数の同一ステーションを生成して接続します。したがって、コンベアネットワークの大きなセクションを複製する必要はありません。
- 定期的に使用されるコンベアステーションとネットワークモデルをカスタムライブラリに組み合わせ、Network Portを使用して、連続コンベアおよび輸送ネットワークの保管および生産施設のモデルを構築できるようになりました。モデリングを簡素化および高速化するビルディングブロックのようなものです。
AnyLogicでカスタムブロックを作成する方法とオブジェクトを複製する方法を知っている場合は、この記事は理解しやすくなります。カスタムブロックを作成したことがない場合は、この短いハウツービデオをご覧ください。
注文ピッキングラインのモデル
AnyLogicのトレーニングモデルセクションからOrder Picking Lineモデルを開きましょう。
PickingZoneエージェントにはコンベアネットワークがあります。これは、すべての組立ステーションを通過するメインコンベアと、その脇に接続されている補助のpickingConveyorラインで構成されています。メインコンベアは、 conveyor1、 conveyor2、takeawayConveyorのセグメントに分かれています。これらのセグメントは、ボックスをメインコンベアから補助コンベアに、またはその逆に転送できる転送ステーションによって接続されています。補助コンベアでは、ボックススキャナーが配置されドットが表示されています。
コンベアの隣には、palletRackという名前の商品ラックがあります。このマークアップエレメントはネットワーク内にある必要があるため、ルートを定義するためにパスが描画されています。パレットラックオペレータワークステーションは、pickerWorkplaceドットノードによって定義されます。このノードは、ピッカーリソース(ResourcePoolブロック)のベースロケーションでもあります。
Network Portエレメントを使用して、異なるエージェントでスペースマークアップを組み合わせる方法
最終的なコンベアネットワークは、いくつかの同一のエージェントで構成されます。このコンベアシステムを機能させるには、さまざまなコンベアセクションとエージェントを接続して1つのネットワークを作成する必要があります。
最初に、2つのエージェントに配置されているコンベアのパーツをリンクする単純なケースを見てみましょう。
これを行うために、Mainにある infeedingConveyor コンベアの最後に、ネットワークポートを追加しました(モデル内— infeedingConveyorPort)。別のネットワークポート(モデル内— inputPort)は、conveyor1の先頭でエージェントPickingZoneに追加されます。ポートを接続してコンベアに参加するには、ネットワークポートの1つの Pair with portプロパティで2番目のポートへのリンクを指定するだけで十分です。さらに、コンベアの部品が1つのエージェント内にある場合は、このプロパティで2番目のポートの名前を指定するだけです。コンベアのパーツが異なるエージェントに配置されている場合(この例のように)、2番目のポートを含むエージェントを定義する必要があります。この場合、ポートへのリンクは次のようになります:<agent name>.<port name>
アニメーションを正しく表示するために、PickingZoneエージェントからのpickingZone_presentationをMainコンベアにオーバーレイして、ネットワークポートが一致するようにしました。現在、コンベアは異なるエージェント(MainとPickingZone)に配置されていますが、システム内を移動するボックスは問題なくエンドポイントに到達します。
コンベア部品が接続されると、Conveyブロックは、単一のネットワークであるかのように、組み合わされたコンベアと連携できます。
Network portエレメントを使用して同一の処理ステーションを組み合わせる方法
より複雑なオプションには、2つ以上のエージェント(この例では、チェーン内の同一のステーション)を接続することが含まれます。Mainでは、PickingZoneエージェントはエージェントの数(アクティブプロパティAgent population)として表されます。その中で、nZones パラメーターは、モデルが開始時に生成する必要なステーションの数を設定します(Population is プロパティ、 Contains the specified number of agents オプション、 Initial number of agents 値)。
モデルの開始時に、デフォルトでは、すべてのPickingZoneステーションが同じポイントに描画されます。 ステーションをラインに形成するには、エージェントプレゼンテーション( pickingZones_presentationオブジェクト)を構成する必要があります。これを行うには、X座標とY座標に動的な値を使用し、プロパティDraw agent with a shift from this pointを選択します; これは、編集中に表示されるアニメーションの場所を基準にして、実行時に表示されるエージェントのオフセットを設定する方法です。ステーションの垂直位置は変化しないため、Y = 0であり、ステーションは水平方向に隣接しているため、それらの位置は式180 *インデックスで与えられます(180はステーショングラフィック幅でピクセル数で表記、インデックスは集団内のステーションの数です。)。
次に、さまざまなエージェントにあるコンベアのパーツを論理的にリンクします。エージェントは1つずつ初期化されるため、最初のステーションが作成されたとき、2番目のステーションはまだ存在せず、ネットワークポートを介してエージェントと通信することはできません。したがって、後続の各ステーションの入力ポートinputPortを前のステーションの出力outputPortに関連付けます(2番目は1番目、3番目は2番目など)。最初のステーションのinputPortには、Mainのポート— infeedingConveyorPortを指定します。このロジックは、 getInfeedingPort 関数で説明されています。このコードは、目的のポートをパラメーターとして返します。これは、inputPortプロパティのpickingZoneエージェントによって使用されます。
これで、異なるステーションにあるコンベアのすべての部品が接続されました。ステーションの数を決定する設定の値を変更することにより(モデルでは、これはnZonesオプション、またはpickingZones集団内の Initial number of agents です)、作成されるステーションの数を増減できます。したがって、コンベアネットワークを手動で作成する必要はありません。
単一ステーションのロジックをモデル化する方法(PickingZoneエージェント)
ボックス(Boxエージェント)は、 enterブロックを介してステーションに渡され、注文されたアイテムが待機しているpickupブロックに移動します。最後のブロックでは、Pickupプロパティの Exact amount オプション(if not, wait)を使用して、Numberプロパティで指定されたエージェントの数(この場合は1)が含まれるまでボックスを待機させます。
ステーションで利用可能なすべての商品(エージェントタイプItem)は、コマンド source.inject(100) を使用して sourceブロックに作成されます。これは、On startupアクションのPickingZoneエージェントでモデルの開始時に実行されます。RackStoreブロックでは、商品はpalletRackに配置され、waitブロックでは、コマンドがプロセスに沿ってさらに移動するのを待ちます。このモデルでは、ステーションで注文を組み立てるプロセス(箱に入った製品)は次のようになります。
コンベア上のボックスがscannerの先端(マークアップエレメントPoint on conveyor)を横切ると、関数 wait.free (palletRack.randomAgent ()); On leading edge enter プロパティで、wait ブロックからランダムなエージェントを解放し、それを rackPickブロックに転送します。rackPickブロックは、エージェントをラックから削除します。それは以下を指定します:
- 製品をラックから取り外すためのリソース(この場合は picker):Resource Setsプロパティで設定します。このプロパティは、オプションUse resources to move in the Resourcesセクションを選択したときに表示されます。
- 商品の回収期間(この場合は2.5秒から5秒):Delay timeプロパティで設定します。
- 商品が転送される場所(モデルでは、これは注文が組み立てられる場所— pickerWorkplaceポイントノード):Nodeプロパティで選択されます。これは、Destination is プロパティでNetwork nodeオプションが選択されたときに表示されます。
Serviceブロックは、ボックスにアイテムを配置するときにオペレーターが実行する操作(バーコードの読み取りなど)をシミュレートします。その後、エージェントは pickupブロックによってボックスに入れられます。
エージェントがボックス内に入ると、 outPortを介してビルドステーションを離れます。コンベアに沿ったボックス移動のすべてのロジックは、 PickingZoneエージェントの範囲外の Mainに移動されます。
ステーションプロセスをコンベア上のオブジェクトの動きと接続する方法
ステーションとコンベアが連携するためには、モデルでそれらを接続する必要があります。
Mainの Source ブロックで、ボックス(Boxエージェント)が作成され、これらのボックスはコンベアネットワークに沿って移動します。作成時に、ボックスが移動するステーションとその色はランダムに決定されます;これらの値は、Boxエージェント(pickingZoneNumber および boxColor パラメーター)に格納されます。
作成後、ボックスはコンベアネットワークに沿って移動する役割があるconveyToPickingZoneブロック(ブロックタイプ Convey)に入ります。Mainのコンベアは開始点(Start conveyor プロパティ、infeedingConveyor 値)として指定され、目的地(Target conveyorプロパティ)はステーションの補助コンベアであり、ボックスのターゲットはpickingZones. get(agent.pickingZoneNumber). pickingConveyorです。ボックスが目的地に到達するとすぐに、関数 pickingZones. get(agent.pickingZoneNumber)がある exit ブロックに移動します。enter.take(agent); PickingZoneエージェントで説明されているプロセス図の入力に送信します。
ステーションでプロセスを実行した後(注文の収集の詳細については、上記を参照)、ボックスはプロセス図のoutputPortを離れ、Mainレベルに戻り、conveyFromPickingLine ブロック(Conveyタイプ)に移動します。現在の位置(プロパティ Convey from、オプション Current position)からメインコンベアの終端まで移動し続けます。最後のコンベアは、他のコンベアと同様に、モデルの開始時に動的に作成されるため、メインコンベアの終了は、Target conveyor プロパティのpickingZones.get (nZones - 1).takeawayConveyorによって設定されます。コンベアのすべての部分がポートによって相互に接続されているため、 MainのConvey ブロックは、追加のブロックを必要とせずに、ネットワーク全体で注文を移動できます。
以上です。お疲れさまでした。
結論
覚えておくべき重要なポイントは次のとおりです:
- ネットワークポートは、コンベアまたはトランスポーターネットワークを相互接続できます。また、同時に、ネットワークはさまざまなエージェントまたはさまざまなレベルのマルチレベルモデルに配置できます。
- 1つのエージェント内でネットワークの一部を接続する必要がある場合は、別のポートのプロパティ内でネットワークポートの1つの名前を指定するだけで十分です。パイプラインの一部が異なるエージェントに配置されている場合は、最初に2番目のポートが配置されているエージェントを参照する必要があります。リンクは次のようになります:<agent name>.<port name>。
- 複製されたオブジェクトをリンクするときは、最初のオブジェクトが作成されたとき、2番目のオブジェクトはまだ存在しないことに注意してください。したがって、各エージェントは前のエージェントに関連付ける必要があります。
Fulfillment Center Conveyor Systemモデルを使用して、複製されたスペースマークアップの使用について詳しく知ることができます;AnyLogicサンプルとAnyLogic Cloudで利用できます。 モデルは、AnyLogic Material Handling Libraryを使用して作成されました。その他の資料で詳細をご覧ください:
- ビデオウェビナー: 自動構成モデルを使用して真のデジタルツインを構築する方法
- ビデオウェビナー: AnyLogicマテリアルハンドリングライブラリの基礎
- AnyLogicヘルプ
- その他のMHLブログ記事
- AnyLogic MHLメールパックを入手する
本チュートリアルの不明な点がありますか? 以下のコメントで教えてください。また、続々発行される新しい資料を見逃さないように、月刊ニュースレターを購読してください。