このチュートリアルタスクでは、さまざまなタイプのフローアイテムのカスタムロード時間とカスタムアンロード時間の作成方法を学習します。このチュートリアルタスクは、到着スケジュールを変更し、積み荷エリアに輸送される必要がある汚れた洗濯物や廃棄物が上階で定期的に作られるようにすることから始まります。最後のステップでは、グローバルテーブルを使って各タイプのフローアイテムのカスタムロード時間とカスタムアンロード時間を作成する方法を紹介します。
作業が完了すると、シミュレーションモデルは次の画像のようになります。
このステップでは、前のチュートリアルタスクで作成したDeliveryScheduleの処理フローに追加のアクティビティを追加します。最終的に、これらの新しいアクティビティによって、各上階のキュー内で定期的に汚れた洗濯物や廃棄物が作られるロジックを作成できます。
作業が完了すると、処理フローは次の画像のようになります。
現時点では、これらのアクティビティの追加と処理フローへの接続のみを行います。後のステップで、プロパティを編集して機能を追加します。
これらのアクティビティを追加して接続するには:
アクティビティ | 新しい名前 |
---|---|
ソース | ソース:シミュレーションを開始する |
オブジェクトを作成 | オブジェクトを作成:上階のアイテム |
遅延 | 遅延:収集時間 |
処理フローがこのステップの冒頭で表示されている画像のようになっていることを確認してください。
このステップでは、前のステップで追加した新しいアクティビティのロジックを作成します。各アクティビティと共有アセットの機能の概要を次に示します。
アクティビティ | 説明 |
---|---|
ソース:シミュレーションを開始する | このアクティビティでは、[汚れた洗濯物]形状にある残りのアクティビティをループし続けるトークンを3つ作成します。各トークンで[Destination]の名前のラベルに固有の値を割り当てます。1つのトークンで[Floor2DirtyLaundry]キューのトークンを作成し、別のトークンで[Floor3DirtyLaundry]キューのトークンなどを作成します。すべてのトークンが同時に次のアクティビティに移動しないように、一部のトークンのタイミングをオフセットすることもできます。 |
オブジェクトを作成:上階のアイテム | このアクティビティを編集して、新しい[DirtyLaundry]フローアイテムを作成し、上階のキュー内に配置できます。トークンの[Destination]ラベルを使うと、どのキューを使えばいいかわかります。また、[LoadType]というラベルを新しいフローアイテムに追加して、どのタイプのフローアイテムであるかを示します。[DirtyLaundry]フローアイテムには3の値を使います。 |
遅延:収集時間 | トークンにはさまざまな時間の遅延が発生します。これはスタッフが洗濯物を収集する時間を表します。1800秒(15分)スケールの指数分布を使います。トークンの遅延が終了すると、[オブジェクトを作成]アクティビティにループバックします。 |
これらの編集を加えた後に、これらのアクティビティのコピーを作成して、廃棄物収集をシミュレーションできます。アクティビティにいくつか編集を追加します。
アクティビティ | 説明 |
---|---|
ソース:シミュレーションを開始する(Waste) | このスケジュールソースは[汚れた洗濯物]のスケジュールソースと同じです。唯一の違いは、900秒の短いオフセット時間をこのアクティビティに追加するという点です。また、[Destination]ラベルを割り当てて、Floor4WasteのキューやFloor3Wasteのキューなどのトークンを作成します。 |
オブジェクトを作成:上階のアイテム | このアクティビティを編集して、新しいWasteフローアイテムを作成し、[UnloadingDock]キュー内に配置します。[LoadType]ラベルを編集して、Wasteフローアイテムで4つの値を使うこともできます。 |
このロジックを作成するには:
1
に増やします。Floor2DirtyLaundry
」と入力します。Floor3DirtyLaundry
」と入力します。Floor4DirtyLaundry
」と入力します。300
」と入力します。600
」と入力します。LoadType
」と入力します。3.00
」と入力します。1800
」に変更します。900.00
」と入力します。Floor4Waste
」と入力します。Floor3Waste
」と入力します。Floor2Waste
」と入力します。4.00
」と入力します。この時点でシミュレーションモデルを保存することをおすすめします。
このステップでは、積み荷エリアに2番目のキューを追加します。1つ目のキューでクリーニング施設に送られる汚れた洗濯物を収集し、2つ目のキューで撤去する廃棄物を収集します。ドロップロジックを変更し、積み荷エリアにある2つのキューで汚れた洗濯物と廃棄物のフローアイテムを[ItemsReadyForDelivery]グローバルリストからプルするようにします。また、上階のアイテムを積み荷エリアに輸送する必要があるため、「次の作業を検索」接続をAGVのメインネットワークから各上階に追加します。
ドロップロジックを変更するには:
== 4
」に変更します。== 3
」に変更します。シミュレーションモデルをリセットして実行します。
モデルを実行すると、上階のキューに汚れた洗濯物と廃棄物が徐々に表れはじめ、AGVはそれらのアイテムを積み荷エリアの最初に利用可能なキューに輸送します。
このステップでは、グローバルテーブルを作成し、輸送中のロードタイプに応じて、AGVのロード時間とアンロード時間をコントロールできます。作業が完了すると、グローバルテーブルは次の画像のようになります。
グローバルテーブルの設定後、3DモデルのAGVを更新し、このグローバルテーブルを使って、4つの異なるフローアイテムのロード時間とアンロード時間を決定します。このステップでは、グローバルテーブルを参照する2つの方法を実演します。[ロード時間]プロパティでは、ピックリストを使ってグローバルテーブルを参照する方法を学習します。[アンロード時間]プロパティでは、FlexScriptを使った異なる方法でグローバルテーブルを参照します。両方の方法を確認して適切な方法を決定します。
ロード時間をカスタマイズするには:
4
」に増やします。3
」に増やします。行番号 | 行名 |
---|---|
行1 | MedSupplies |
行2 | CleanLaundry |
行3 | DirtyLaundry |
行4 | Waste |
列番号 | 列名 |
---|---|
列1 | LoadType |
列2 | LoadTime |
Col3 | UnloadTime |
LoadType | LoadTime | UnloadTime | |
---|---|---|---|
MedSupplies | 1 | 30 | 45 |
CleanLaundry | 2 | 15 | 20 |
DirtyLaundry | 3 | 15 | 20 |
Waste | 4 | 10 | 10 |
item.LoadType
」と入力します。"LoadTime"
」と入力します。Table("ItemLoadTypes")[item.LoadType]["UnloadTime"]
シミュレーションモデルをリセットして実行します。
シミュレーションモデルを実行すると、フローアイテムのタイプによって、AGVがフローアイテムをロードまたはアンロードするのにかかる時間の違いに気が付きます。
AGVのチュートリアルを完了し、AGVモデルを構築する際に利用できるさまざまな機能や設定について理解が深まりました。ほとんどコードを使わずにかなり複雑なAGVシミュレーションモデルを構築できました。AGVの機能や処理フローのテンプレートを使うと、簡単にAGVのシステムを構築して、必要に応じて大規模なシミュレーションプロジェクトに合うように拡張できます。
FlexSimにおけるAGVシステムのモデリングの詳細については、「タスク実行者を操作する」に関する章でAGVについてのセクションを参照してください。これでAGVのチュートリアルは終了です。