FlexSimの人ベースの3Dオブジェクトアクティビティと処理フローアクティビティを使用すると、医療施設やカスタマーサービスセンターのようなシステム全体を移動する人が組み込まれたシミュレーションモデルを簡単に構築できます。このチュートリアルタスクでは、人ベースモデルの構築の基礎について学習します。次の方法を学習します。
人ベースの3Dオブジェクトと処理フローの使用方法を学習するために、小規模な救急治療室の一部を構築します。このチュートリアルタスクでは、システムの新しい患者の到着を処理するセクションのみを構築します。必要なオブジェクトを追加し、救急治療室に到着してフロントデスクで受付をする患者の基本的な動作を作成します。
タスクが完了すると、モデルは次の画像のようになります。
このステップでは、このチュートリアルでシミュレーションする救急治療室のフロアプランを追加します。このフロアプランは、ソフトウェアのインストール時にFlexSimに含まれています。フロアプランの追加が完了すると、モデルは次の画像のようになります。
このフロアプランを追加するには:
モデルがこのステップの冒頭に表示した画像のようになっていることを確認します。
3Dライブラリには、人ベースのモデルでうまく機能するように特別に設計された一連のオブジェクトがあります。このステップでは、3Dモデルに人ベースの場所と複数の場所(マルチロケーション)を追加する方法を学習します。
FlexSimをよくご存じの場合、場所はFlexSimのフローアイテムの固定リソースと同じです。人々はこれらの場所に移動し、それぞれのオブジェクトのタイプに基づいてやり取りします。通常、相互作用はその場所にいる人のビジュアルやアニメーションに何らかの変化をもたらします。たとえば、人と椅子とが相互に作用するときは、人が椅子に座っているようにアニメーション化されます。
また、このステップでは3Dモデルにマルチロケーションを追加します。マルチロケーションは、関連する場所のグループを包括する場所です。マルチロケーションを取得すると、このグループの任意の場所を取得できます。このモデルでは、待合室の椅子を表すために椅子のマルチロケーションを追加します。それぞれの椅子は潜在的に患者によって取得される可能性がありますが、各椅子をモデルに追加する必要はありません。椅子のグループのみを追加します。このステップでは、マルチロケーションを編集してグループに椅子を追加する方法についても学習します。
この時点では、モデルの登録エリアを作成します。登録エリアには、患者用の出入り口、患者の到着時に受付をするフロントデスク、待機エリアがあります。作業が完了すると、3Dモデルは次の画像のようになります。
これらの場所をモデルに追加するには:
15
に増やします。-90
または0
に変更します)。-90.00
に変更します。3Dモデルがこのステップの冒頭に表示した画像のようになっていることを確認します。
このステップでは、スタッフオブジェクトを3Dモデルに追加する方法を学習します。そしてスタッフと場所のオブジェクトグループを作成する方法を学習します。ツールボックス内のグループを調査し、グループによる人ベース3Dオブジェクトの一般的な操作方法も学習します。
デフォルトではすべての場所が自動で[場所]グループと名付けられた一般グループに追加され、すべてのスタッフが[スタッフ]グループに追加されます。その一方で、追加のグループまたはサブグループを作成してモデルをさらに整理する機能も用意されています。後の手順で説明するように、これらのグループは人ベースのオブジェクトのロジックを構築する上で重要です。
このステップでは、受付を担当するスタッフをメンバー単位で追加します。[スタッフ]グループ内にこの新しいスタッフメンバーを含む「Receptionists」(受付担当者)というサブグループを作成します。それから2人の追加スタッフメンバーを追加し、これらのメンバーを「RN」(看護師)というグループに追加します。またWaitingAreaを「WaitingAreas」というグループに追加します。
作業が完了すると、3Dモデルは次の画像のようになります。
スタッフメンバーを追加してオブジェクトグループを作成するには:
この時点でシミュレーションモデルを保存することをおすすめします。
このステップでは、処理フローの設定方法を学習します。処理フローツールを使用すると、モデルのロジックのフローチャートを作成できます。このフローチャートの中に、あらかじめプログラムされたロジックまたは指示の小さいかたまりを含むアクティビティを追加します。シミュレーションモデルを実行すると、トークンと呼ばれる小さな緑色の円が処理フローアクティビティを移動し、各アクティビティの指示を実行します。
このステップでは2つの処理フローを作成します。このうち1つは、作成された患者と3Dモデルとのやり取りをコントロールするために使用する「PatientTrack」という人の処理フローです。2つ目は、患者が到着する頻度をコントロールして3Dモデル内で頻繁に患者を作成する方法をコントロールする「PatientArrivals」という一般的な処理フローです。
[PatientTrack]処理フロー内に「予約なし処理(順番待ち列)」というアクティビティセットを追加します。人ベースモデルにはシミュレーションモデルのロジックを組み立てるアクティビティセットがいくつかあります。アクティビティセットはそれぞれ、人ベースモデルのごく一般的なロジックタスクを遂行するよう事前にプログラムされた処理フローアクティビティのグループです。
このステップに追加するアクティビティセットには、フロントデスクまで歩いてから登録処理を開始するよう患者に指示するアクティビティが含まれています。受付担当者が他の患者に忙しく対応している場合、現在の患者は列で待ちます。
作業が完了すると、処理フローは次の画像のようになります。
現時点では、これらのアクティビティの追加と2つの処理フローへの接続のみを行います。後のステップで、プロパティを編集してロジックを追加します。
これらのアクティビティを追加して接続するには:
アクティビティ | 新しい名前 |
---|---|
ソース | ソース:シミュレーションを開始する |
人を作成 | 人を作成する:患者 |
シンク | シンク:患者を作成済み |
アクティビティまたは共有アセット | 新しい名前 |
---|---|
スタッフ | 受付担当者 |
場所 | 登録 |
場所を取得(左側) | 登録を取得 |
歩く(最初) | フロントデスクまで歩く |
スタッフを取得 | 受付担当者を取得 |
歩く(2つ目) | 患者のところまで歩く |
処理 | 患者を登録 |
スタッフをリリース | 受付担当者をリリース |
場所をリリース | 登録をリリース |
Wait in Line | 登録の列で待つ |
場所を取得(右側) | 登録を取得 |
2つの新しい処理フローがこのステップの冒頭に表示した画像のようになっていることを確認します。
このステップでは、処理フローのアクティビティのプロパティを編集します。留意すべき重要な概念の1つとして、このチュートリアルでは、[PatientArrival]処理フローで作成された各患者に対して[処理フローインスタンス]を使用します。つまり、このステップで各患者用に作成するテンプレートに基づき、患者はそれぞれ独自の[PatientTrack]処理フローのコピーを実行します。処理フローインスタンスの動作の詳細については、「処理フローインスタンス」を参照してください。
具体的には、アクティビティのプロパティにおいて現在の
というキーワードが表示されるときは、この処理フローのこのインスタンスを実行している現在の患者を参照することを意味します。このインスタンスを通じて実行するトークンは、この患者に結び付けられます。
このステップでは、先のチュートリアルで設定したスタッフグループがどのようにこのモデルのロジックで使用されるかも説明します。患者に対応するスタッフメンバーが必要なときは、グループのメンバーを誰か(特定のメンバーではなく)割り当てることができます。必要なときは、処理フローでこのグループからタスクに対応できる最初のメンバーが選択されます。
オブジェクトグループを使用すると、モデルがより複雑になり、拡張する場合に役立ちます。将来的に、モデルロジックを変更することなく、必要に応じて椅子、受付担当者、看護師などを追加できます。3Dモデルに新しいオブジェクトを追加するときは、グループに新しいメンバーを追加するのみで、FlexSimが残りのロジックを処理します。しかもこれらのオブジェクトグループでは、最も効率的にリソースを活用する方法を見つけられるように、モデルに追加のスタッフや場所を追加する影響を簡単に調査できます。
[PatientArrivals]処理フローの各アクティビティが機能する方法の概要を次に示します。
アクティビティまたは共有アセット | 説明 |
---|---|
ソース:シミュレーションを開始する | このアクティビティは、シミュレーションの開始時にトークンを作成し、これを次の下流アクティビティにリリースします。今はまず患者1人でシミュレーションモデルをテストします。患者の到着スケジュールは、後のチュートリアルタスクで変更します。 |
人を作成する:患者 | このアクティビティは、新しい人物を作成して3Dモデルの入り口に配置します。この人物は、システム内を移動する患者を表します。この患者が作成されると、[PatientTrack]処理フローの独自のコピーを実行する、この人物のインスタンスが作成されます。 |
シンク:患者を作成済み | このアクティビティは、患者が作成されると、[PatientArrivals]処理フローからトークンを削除します。デフォルト設定を使用します。 |
また、[PatientTrack]処理フローの各アクティビティが機能する方法の概要を次に示します。
アクティビティまたは共有アセット | 説明 |
---|---|
ソース:患者が到着 | このアクティビティは、[PatientArrival]処理フローで新しい患者が作成されると同時にトークンを作成します。このトークンは、3Dモデルで作成された患者に関連付けられます。 |
受付担当者 | この共有アセットはこれまでのステップで作成した[Receptionists]グループにリンクします。 |
登録 | この共有アセットは3Dモデルに含まれる[Registration1]の場所にリンクします。 |
登録を取得 | このアクティビティでは、[Registration1]の場所を確保します他の患者が[Registration1]の場所を使用している場合は、[登録の列で待つ]アクティビティにトークンが移動し、その患者は列に並ぶことになります。[Registration1]の場所を取得すると、このトークンは代わりに[フロントデスクまで歩く]アクティビティに移動します。このアクティビティは[予約なし処理(順番待ち列)]アクティビティセットの一部として正常に機能するようあらかじめプログラムされているため、このデフォルト設定を使用します。 |
登録の列で待つ | このアクティビティでは現在の患者を[WaitingLine1]に送ります。このアクティビティは[予約なし処理(順番待ち列)]アクティビティセットの一部として正常に機能するようあらかじめプログラムされているため、このデフォルト設定を使用します。この待ち行列のデフォルトの名前を変更していないため、このアクティビティは自動で患者をこの順番待ち列に送ります。順番待ち列の名前を変更していた場合は、患者を送る順番待ち列を指定する必要があります。 |
登録を取得 | このアクティビティは、以前の[登録を取得]アクティビティと同一です。患者のために[Registration1]の場所の確保を試みます場所が空いているとき、このトークンは[フロントデスクまで歩く]アクティビティに移動します。 |
フロントデスクまで歩く | [Registration1]の場所を取得すると、このアクティビティでは、患者に[Registration1]の場所まで歩くように指示します。 |
受付担当者を取得 | このアクティビティで[Receptionists]グループのメンバーを取得します。[Receptionists]グループのメンバー全員が他のタスクに対応している場合は、誰か受付担当者が対応可能になるまで、このトークンがこのアクティビティで待機します。 |
患者のところまで歩く | このアクティビティではフロントデスクの患者がいる場所まで受付担当者を送ります。前のアクティビティで取得した受付担当者と同じ受付担当者が対応するように[受付担当者]共有アセットにリンクします。 |
患者を登録 | このアクティビティは、患者が受付をするのにかかる時間を表します。現時点ではその時間を15秒に設定します。 |
受付担当者をリリース | 登録処理が完了すると、処理フローの前の方で取得した受付担当者がこのアクティビティからリリースされます。そしてこの受付担当者が他のタスクを担当したり、他の患者がこの受付担当者を取得したりできるようになります。 |
登録をリリース | このアクティビティで[Registration1]の場所はリリースされ、他の患者が取得できるようになります。 |
これらのプロパティを編集するには:
PatientTrack
]処理フローにリンクされていることを確認します。15.00
」と入力します。この時点でシミュレーションモデルを保存することをおすすめします。
このステップでは、シミュレーションモデルを実行します。一般的に、小さなセクションを作成したところで定期的にモデルロジックをテストすることをおすすめします。モデルを実行すると、期待どおりに動作しなかった部分やエラーに気付くことができます。詳細については、「シミュレーションモデルを実行する」を参照してください。
モデルを実行するには、メインツールバーの下にあるシミュレーションコントロールバーの[リセット]ボタンを押します。([リセット]を押すと、シミュレーションモデルがクリアされ、開始値に戻ります)。 シミュレーションを開始するには[再生]を押し、シミュレーションを一時停止するには[停止]を押します。
3Dモデルを見ると、ドアを通って到着した患者は、順番待ち列まで歩いてからフロントデスクに移動します。ここで受付担当者はフロントデスクにいる、この患者のところまで歩きます。短い遅延の後で、次のとおり受付担当者は登録を完了し、患者のもとから歩み去ります。
3Dモデル内のアクションは[PatientTrack]処理フローの出来事と相互に関連しています。トークンが処理フローを移動すると、それらは3Dモデルにおける患者の行動と相関します。処理フローアクティビティは、患者がさまざまなタイプの場所とやり取りするときのすべてのアニメーションを処理します。
患者はまだ他の場所に移動するよう指示されていないため、今は患者がフロントデスクに残ることに注意します。次のチュートリアルタスクでは、その指示を追加します。
この時点では、救急治療室のシミュレーションモデルの、最初のフェーズが作成されました。いくつかの人ベースの3Dオブジェクトをモデルに追加し、処理フローツールと人のアクティビティセットを使用してモデルのロジックを構築する方法を見てきました。次のチュートリアルでは引き続き、救急医療施設での患者追跡の残りを構築し、処理フローでカスタムロジックを設定する方法を学習します。このまま「チュートリアルタスク1.2 - カスタムロジックを作成する」に進みます。