タスク1.1 - アクティビティセットを使用する

タスクの概要

FlexSimの人ベースの3Dオブジェクトアクティビティと処理フローアクティビティを使用すると、医療施設やカスタマーサービスセンターのようなシステム全体を移動する人が組み込まれたシミュレーションモデルを簡単に構築できます。このチュートリアルタスクでは、人ベースモデルの構築の基礎について学習します。次の方法を学習します。

  • 3Dモデルにフロアプランを追加する
  • 3Dモデルに場所とスタッフを追加する
  • オブジェクトグループを作成する
  • 3Dモデル内で人を作成する処理フローを構築する
  • 処理フロー内でアクティビティセットを使用してロジック構築を高速化する

人ベースの3Dオブジェクトと処理フローの使用方法を学習するために、小規模な救急治療室の一部を構築します。このチュートリアルタスクでは、システムの新しい患者の到着を処理するセクションのみを構築します。必要なオブジェクトを追加し、救急治療室に到着してフロントデスクで受付をする患者の基本的な動作を作成します。

タスクが完了すると、モデルは次の画像のようになります。

ステップ1 フロアプランを追加する

このステップでは、このチュートリアルでシミュレーションする救急治療室のフロアプランを追加します。このフロアプランは、ソフトウェアのインストール時にFlexSimに含まれています。フロアプランの追加が完了すると、モデルは次の画像のようになります。

このフロアプランを追加するには:

  1. 左のペインで[ツールボックス]タブをクリックして、[ツールボックス]を開きます。
  2. 追加]ボタンをクリックして、メニューを開きます。[ビジュアル]をポイントし、[モデルの背景]を選択します。
  3. どのような背景図がありますか?]ページで[AutoCAD図面]が選択されていることを確認して、[次へ]ボタンをクリックします。
  4. AutoCADファイルはどこですか?]ページの[ファイル名]ボックスの横にある[...]ボタンをクリックして、コンピュータのファイルディレクトリを開きます。
  5. コンピュータの[ドキュメント]フォルダに移動し、次に[FlexSim 2019プロジェクト]フォルダに移動します。[ER_small.dwg]ファイルをダブルクリックして選択します。[次へ]ボタンをクリックします。
  6. 背景の向きとプロパティ]ページのデフォルト設定を使用するため、[次へ]ボタンをクリックします。
  7. レイヤーの可視性と色をカスタマイズ]ページで、[壁レイヤー]の横にある緑色のボックスをクリックし、暗い灰色を選択して壁をより見やすくします。[次へ]ボタンをクリックして続行します。
  8. 背景設定にスナップ]ページのデフォルト設定を使用するため、[終了]ボタンをクリックします。

モデルがこのステップの冒頭に表示した画像のようになっていることを確認します。

ステップ2 3Dモデルに場所を追加する

3Dライブラリには、人ベースのモデルでうまく機能するように特別に設計された一連のオブジェクトがあります。このステップでは、3Dモデルに人ベースの場所と複数の場所(マルチロケーション)を追加する方法を学習します。

FlexSimをよくご存じの場合、場所はFlexSimのフローアイテムの固定リソースと同じです。人々はこれらの場所に移動し、それぞれのオブジェクトのタイプに基づいてやり取りします。通常、相互作用はその場所にいる人のビジュアルやアニメーションに何らかの変化をもたらします。たとえば、人と椅子とが相互に作用するときは、人が椅子に座っているようにアニメーション化されます。

また、このステップでは3Dモデルにマルチロケーションを追加します。マルチロケーションは、関連する場所のグループを包括する場所です。マルチロケーションを取得すると、このグループの任意の場所を取得できます。このモデルでは、待合室の椅子を表すために椅子のマルチロケーションを追加します。それぞれの椅子は潜在的に患者によって取得される可能性がありますが、各椅子をモデルに追加する必要はありません。椅子のグループのみを追加します。このステップでは、マルチロケーションを編集してグループに椅子を追加する方法についても学習します。

この時点では、モデルの登録エリアを作成します。登録エリアには、患者用の出入り口、患者の到着時に受付をするフロントデスク、待機エリアがあります。作業が完了すると、3Dモデルは次の画像のようになります。

これらの場所をモデルに追加するには:

  1. 左のペインで[ライブラリ]タブをクリックして、[ライブラリ]を開きます。
  2. オブジェクトの[]グループを展開します。[場所]オブジェクトをクリックして、場所オブジェクトのメニューを開きます。[登録]オブジェクトをモデルにドラッグします。(このガイドの始めにある画像を使用してオブジェクトを配置してください)。
  3. ]グループのライブラリで[場所]オブジェクトをクリックして、場所オブジェクトのメニューを開きます。[入り口]を3Dモデルにドラッグします。
  4. 前のステップを繰り返して[出口]の場所をモデルに追加します。
  5. ]グループのライブラリで[マルチロケーション]オブジェクトをクリックして、マルチロケーションオブジェクトのメニューを開きます。モデルに[椅子]オブジェクトをドラッグします。
  6. 3Dモデルで、[Chairs1]のマルチロケーションをクリックして選択します。[クイックプロパティ]で、オブジェクトの名前を「WaitingArea1」に変更します。
  7. マルチロケーション]グループの[クイックプロパティ]で、[編集モード]のチェックボックスをオンにします。
  8. 場所]ボックスで、数を15に増やします。
  9. これで[WaitingArea1]のマルチロケーションの椅子が15脚になりました。
  10. 新しく追加された椅子を移動・回転して、より大きな待合室に見えるようにします。(青いサイズ調整矢印を右クリックして椅子を回転させるか、[クイックプロパティ]を使用してZ回転 -90または0に変更します)。
  11. 終了したら、[編集モード]のチェックボックスをオフにします。
  12. ]グループのライブラリで[順番待ち列]をモデルにドラッグします。
  13. WaitingLine1]の端をクリックし、ドラッグして90度回転させ、必要に応じてサイズを変更します。
  14. WaitingLine1]をダブルクリックして、プロパティウィンドウを開きます。
  15. 支柱]グループの[WaitingLine]タブで[支柱を描く]のチェックボックスをオフにします。
  16. OK]ボタンをクリックして変更を保存し、プロパティウィンドウを閉じます。
  17. ]グループのライブラリで[場所]オブジェクトをクリックして、場所オブジェクトのメニューを開きます。[椅子]をモデルにドラッグします。
  18. Chair1]をクリックして選択します。[クイックプロパティ]で名前を「TriageChair1」に変更します。
  19. [TriageChair]のZ回転 -90.00に変更します。

3Dモデルがこのステップの冒頭に表示した画像のようになっていることを確認します。

ステップ3 オブジェクトグループを作成する

このステップでは、スタッフオブジェクトを3Dモデルに追加する方法を学習します。そしてスタッフと場所のオブジェクトグループを作成する方法を学習します。ツールボックス内のグループを調査し、グループによる人ベース3Dオブジェクトの一般的な操作方法も学習します。

デフォルトではすべての場所が自動で[場所]グループと名付けられた一般グループに追加され、すべてのスタッフが[スタッフ]グループに追加されます。その一方で、追加のグループまたはサブグループを作成してモデルをさらに整理する機能も用意されています。後の手順で説明するように、これらのグループは人ベースのオブジェクトのロジックを構築する上で重要です。

このステップでは、受付を担当するスタッフをメンバー単位で追加します。[スタッフ]グループ内にこの新しいスタッフメンバーを含む「Receptionists」(受付担当者)というサブグループを作成します。それから2人の追加スタッフメンバーを追加し、これらのメンバーを「RN」(看護師)というグループに追加します。またWaitingAreaを「WaitingAreas」というグループに追加します。

作業が完了すると、3Dモデルは次の画像のようになります。

スタッフメンバーを追加してオブジェクトグループを作成するには:

  1. ]グループのライブラリで[スタッフ]オブジェクトをクリックして、スタッフオブジェクトのメニューを開きます。2人の男性をモデルにドラッグします。
  2. ライブラリでスタッフオブジェクトをクリックしてメニューを開きます。モデルに[女性]をドラッグします。
  3. Male1]をクリックして選択します。[クイックプロパティ]で、オブジェクトの名前を「Receptionist1」に変更します。
  4. Receptionist1]の色をオレンジ色に変更します。
  5. Male1]をクリックして選択します。[クイックプロパティ]で、オブジェクトの名前を「RN1」に変更します。
  6. RN1]の色を青色に変更します。
  7. Female1]をクリックして選択します。[クイックプロパティ]で、オブジェクトの名前を「RN2」に変更します。
  8. 左のペインで[ツールボックス]タブをクリックして、[ツールボックス]を開きます。グループフォルダを展開し、フォルダを展開して、スタッフフォルダを展開します。
  9. スタッフ]グループをダブルクリックして、このグループのプロパティウィンドウを開きます。このグループには[Receptionist1]、[RN1]、[RN2]が自動でメンバーとして組み込まれています。
  10. 3Dモデルで[Receptionist1]を右クリックしてメニューを開きます。[スタッフグループ]をポイントしてから[新しいグループに追加]を選択してグループプロパティウィンドウを開きます。
  11. 名前のボックスで現在のテキストを削除し、このグループの名前を「Receptionists」に変更します。
  12. Receptionist1]がメンバーとして、[スタッフ]が親グループとしてリストに含まれていることを確認します。グループのウィンドウを閉じます。
  13. 3Dモデルで[RN1]を右クリックして、メニューを開きます。[スタッフグループ]をポイントしてから[新しいグループに追加]を選択してグループプロパティウィンドウを開きます。
  14. 名前のボックスで現在のテキストを削除し、このグループの名前を「RN」に変更します。
  15. サンプラー]ボタン をクリックして、サンプリングモードに入ります。
  16. 3Dモデルで[RN2]をクリックしてサンプリングします。グループのウィンドウを閉じます。
  17. ツールボックスで[スタッフ]フォルダに今度は[Receptionists]グループと[RN]グループが含まれることを確認します。[スタッフ]グループをダブルクリックして、このグループのプロパティウィンドウを開きます。このグループに今度は[Receptionists]グループと[RN]グループがサブグループとして含まれることを確認します。グループのウィンドウを閉じます。
  18. ツールボックスで[場所]フォルダを展開し、[場所]グループをダブルクリックして、このグループのプロパティウィンドウを開きます。この3Dモデルにメンバーとして追加した場所はすべて、自動でこのグループに含まれています。
  19. 3Dモデルで、[WaitingArea1]を右クリックしてメニューを開きます。[場所グループ]をポイントしてから[新しいグループに追加]を選択して、グループのプロパティウィンドウを開きます。
  20. 名前のボックスで現在のテキストを削除し、このグループの名前を「WaitAreas」に変更します。グループのウィンドウを閉じます。
  21. ツールボックスで[場所]フォルダに今度は[WaitAreas]グループが含まれていることを確認します。[場所]グループをダブルクリックして、プロパティウィンドウを開きます。このグループに今度は[WaitAreas]グループがサブグループとして含まれています。グループのウィンドウを閉じます。

この時点でシミュレーションモデルを保存することをおすすめします。

ステップ4 処理フローにアクティビティを追加する

このステップでは、処理フローの設定方法を学習します。処理フローツールを使用すると、モデルのロジックのフローチャートを作成できます。このフローチャートの中に、あらかじめプログラムされたロジックまたは指示の小さいかたまりを含むアクティビティを追加します。シミュレーションモデルを実行すると、トークンと呼ばれる小さな緑色の円が処理フローアクティビティを移動し、各アクティビティの指示を実行します。

このステップでは2つの処理フローを作成します。このうち1つは、作成された患者と3Dモデルとのやり取りをコントロールするために使用する「PatientTrack」という人の処理フローです。2つ目は、患者が到着する頻度をコントロールして3Dモデル内で頻繁に患者を作成する方法をコントロールする「PatientArrivals」という一般的な処理フローです。

PatientTrack]処理フロー内に「予約なし処理(順番待ち列)」というアクティビティセットを追加します。人ベースモデルにはシミュレーションモデルのロジックを組み立てるアクティビティセットがいくつかあります。アクティビティセットはそれぞれ、人ベースモデルのごく一般的なロジックタスクを遂行するよう事前にプログラムされた処理フローアクティビティのグループです。

このステップに追加するアクティビティセットには、フロントデスクまで歩いてから登録処理を開始するよう患者に指示するアクティビティが含まれています。受付担当者が他の患者に忙しく対応している場合、現在の患者は列で待ちます。

作業が完了すると、処理フローは次の画像のようになります。

現時点では、これらのアクティビティの追加と2つの処理フローへの接続のみを行います。後のステップで、プロパティを編集してロジックを追加します。

これらのアクティビティを追加して接続するには:

  1. メインツールバーで[処理フロー]ボタンをクリックして、メニューを開きます。新しい処理フローを作成するには、[人処理フローを追加]を選択します。新しいウィンドウが開き、2つの処理フローが表示されます。
  2. 到着]タブをクリックして開きます。[クイックプロパティ]で、処理フローの名前を「PatientArrivals」に変更します。
  3. この処理フローには3つのアクティビティでできたスタックブロックが1つあります。これらの3つのアクティビティ名を次のように変更します。
  4. アクティビティ 新しい名前
    ソース ソース:シミュレーションを開始する
    人を作成 人を作成する:患者
    シンク シンク:患者を作成済み
  5. 人フロー]タブをクリックして開きます。[クイックプロパティ]で、処理フローの名前を「PatientTrack」に変更します。
  6. この処理フローにはすでに[スケジュールソース]アクティビティがあります。このアクティビティの名前を「ソース:患者が到着」に変更します。
  7. 人のアクティビティセット]グループの下にある[ライブラリ]で[予約なし処理(順番待ち列)]アクティビティセットを[PatientTrack]処理フローにドラッグします。
  8. 形状の名前を「患者登録」に変更します。
  9. 人のサブフロー]の下にあるライブラリから[スタッフを確保]アクティビティの後ろに挿入する形で[歩く]アクティビティを追加します。
  10. 混乱を避けるために、この形状のアクティビティと共有アセットの名前を以下のとおり変更します。
  11. アクティビティまたは共有アセット 新しい名前
    スタッフ 受付担当者
    場所 登録
    場所を取得(左側) 登録を取得
    歩く(最初) フロントデスクまで歩く
    スタッフを取得 受付担当者を取得
    歩く(2つ目) 患者のところまで歩く
    処理 患者を登録
    スタッフをリリース 受付担当者をリリース
    場所をリリース 登録をリリース
    Wait in Line 登録の列で待つ
    場所を取得(右側) 登録を取得
  12. ソース:患者が到着]アクティビティから[患者登録]形状の最初の[登録を取得]アクティビティに続くコネクターを作成します。

2つの新しい処理フローがこのステップの冒頭に表示した画像のようになっていることを確認します。

ステップ5 アクティビティのプロパティを編集する

このステップでは、処理フローのアクティビティのプロパティを編集します。留意すべき重要な概念の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]の場所はリリースされ、他の患者が取得できるようになります。

これらのプロパティを編集するには:

  1. PatientArrivals]処理フローで[人を作成:患者]アクティビティをクリックして選択します。[目的地]ボックスの横にある[クイックプロパティ]で[サンプラー]ボタン をクリックして、サンプリングモードに入ります。
  2. 3Dモデルで、[Entrance1]をクリックして、メニューを開きます。サンプリングするには[Entrance1]を選択します。
  3. 人フロー]ボックスで人フローが[PatientTrack]処理フローにリンクされていることを確認します。
  4. PatientTrack]タブをクリックしてこの処理フローをアクティブにします。
  5. 受付担当者]共有アセットをクリックして選択します。[クイックプロパティ]で[スタッフ]ボックスの横にある矢印をクリックして、メニューを開きます。[スタッフグループ]をポイントしてから[Receptionists]を選択します。
  6. 登録]共有アセットをクリックして選択します。[場所]ボックスの横にある[クイックプロパティ]で[サンプラー]ボタン をクリックして、サンプリングモードに入ります。
  7. 3Dモデルで[Registration1]をクリックしてサンプリングします。
  8. 患者のところまで歩く]アクティビティをクリックして選択します。[]ボックスの横にある[クイックプロパティ]で[サンプラー]ボタンをクリックして、サンプリングモードに入ります。
  9. 受付担当者]共有アセットをクリックしてサンプリングします。
  10. 患者を登録]アクティビティをクリックして選択します。[処理時間]ボックスの[クイックプロパティ]で、現在のテキストを削除し、「15.00」と入力します。

この時点でシミュレーションモデルを保存することをおすすめします。

ステップ6 モデルをテストする

このステップでは、シミュレーションモデルを実行します。一般的に、小さなセクションを作成したところで定期的にモデルロジックをテストすることをおすすめします。モデルを実行すると、期待どおりに動作しなかった部分やエラーに気付くことができます。詳細については、「シミュレーションモデルを実行する」を参照してください。

モデルを実行するには、メインツールバーの下にあるシミュレーションコントロールバーの[リセット]ボタンを押します。([リセット]を押すと、シミュレーションモデルがクリアされ、開始値に戻ります)。 シミュレーションを開始するには[再生]を押し、シミュレーションを一時停止するには[停止]を押します。

3Dモデルを見ると、ドアを通って到着した患者は、順番待ち列まで歩いてからフロントデスクに移動します。ここで受付担当者はフロントデスクにいる、この患者のところまで歩きます。短い遅延の後で、次のとおり受付担当者は登録を完了し、患者のもとから歩み去ります。

3Dモデル内のアクションは[PatientTrack]処理フローの出来事と相互に関連しています。トークンが処理フローを移動すると、それらは3Dモデルにおける患者の行動と相関します。処理フローアクティビティは、患者がさまざまなタイプの場所とやり取りするときのすべてのアニメーションを処理します。

患者はまだ他の場所に移動するよう指示されていないため、今は患者がフロントデスクに残ることに注意します。次のチュートリアルタスクでは、その指示を追加します。

結論

この時点では、救急治療室のシミュレーションモデルの、最初のフェーズが作成されました。いくつかの人ベースの3Dオブジェクトをモデルに追加し、処理フローツールと人のアクティビティセットを使用してモデルのロジックを構築する方法を見てきました。次のチュートリアルでは引き続き、救急医療施設での患者追跡の残りを構築し、処理フローでカスタムロジックを設定する方法を学習します。このまま「チュートリアルタスク1.2 - カスタムロジックを作成する」に進みます。