(57)【要約】      （修正有）【課題】ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールする方法において、デッドラインミス数の削減および性能損失の最小化を図る。【解決手段】複数のタスクをスケジュール可能なタスクの集合またはスケジュール不可能なタスクの集合に区分化し、区分化された複数のタスクを性能損失値の非昇順でソートし、スケジュール可能なタスクの集合を圧縮メカニズムに基づいてマルチロボット環境で動作する複数のロボットの中の各ロボットに割り当て、スケジュール不可能なタスクの集合をリスト・スケジューリング技法に基づいて複数のロボットの中でスケジュールする。【選択図】図２Ｂ
2020004370.tif 000002
【特許請求の範囲】
【請求項１】
ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールする方法であって、前記方法は、
複数のタスクを、１つ以上のハードウェアプロセッサによって、定義するステップであって、前記複数のタスクの各々は、実行時間、前記ノンプリエンプティブタスクを完了するための指定された時間間隔および時間単位当たりの性能損失関数で特徴付けられたノンプリエンプティブタスクである、前記定義するステップ（２０１）と；
前記複数のタスクを、スケジューリング技法によって、スケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合に区分化するステップであって、スケジュール可能なタスクの前記集合は、所定の時間間隔内に実行されて最大性能損失値を有するタスクの部分集合を含み、スケジュール不可能なタスクの前記集合は、前記所定の時間間隔内に実行できず低性能損失値を有するタスクの部分集合を含む、前記区分化するステップ（２０２）と；
区分化された前記複数のタスクを、複数のステップを行うことによって、予め定義された順序でスケジュールするステップ（２０３）であって、前記複数のステップは、
（ｉ）区分化された前記複数のタスクを、前記スケジューリング技法によって、区分化された前記複数のタスクに対応する１つ以上の性能損失値の非昇順でソートするステップ（２０３（ｉ））；
（ｉｉ）圧縮メカニズムを実装することにより、スケジュール可能なタスクの前記集合のうちの少なくとも１つを前記マルチロボット環境で動作する複数のロボットの中の各ロボットに割り当てることによってスケジュール可能なタスクの前記集合を前記マルチロボット環境でスケジュールするステップ（２０３（ｉｉ））であって、前記スケジュールするステップ（２０３（ｉｉ））は、
（ａ）スケジュール可能なタスクの前記集合のうちの各々の前記マルチロボット環境での実行の可能性を、前記スケジューリング技法によって、判定するステップ（２０３（ｉｉ）（ａ））と；
（ｂ）予め割り当てられたタスクの集合を前記複数のロボットの中でスケジュールする可能性を、前記スケジューリング技法によって、判定するステップであって、予め割り当てられたタスクの前記集合は、スケジュール可能なタスクの前記集合以外の１つ以上のタスクおよびスケジュール不可能なタスクの前記集合を含む、前記判定するステップ（２０３（ｉｉ）（ｂ））と；
（ｃ）スケジュール可能なタスクの前記集合のうちの各々の実行の前記可能性および予め割り当てられたタスクの前記集合をスケジュールする前記可能性を判定した際に、前記圧縮メカニズムによって、スケジュール可能なタスクの前記集合を前記マルチロボット環境でスケジュールするステップ（２０３（ｉｉ）（ｃ））と、
を含む、前記スケジュールするステップ（２０３（ｉｉ））；および
（ｉｉｉ）スケジュール不可能なタスクの前記集合を、リスト・スケジューリング技法によって、前記複数のロボットの中でスケジュールするステップ（２０３（ｉｉｉ））、
を含む、前記スケジュールするステップ（２０３）と、
を実施するプロセッサを含む、方法。
【請求項２】
スケジュール可能なタスクの前記集合をスケジュールする前記ステップは、
（ｉ）スケジュール可能なタスクの前記集合の中の前記スケジュール可能なタスクの各々の前記実行の最小の可能性、または
（ｉｉ）予め割り当てられたタスクの前記集合をスケジュールする最小の可能性、
のいずれかを判定した際に、スケジュール可能なタスクの前記集合の中の１つ以上のスケジュール可能なタスクを、前記スケジューリング技法によって、スケジュール不可能なタスクとしてカテゴリー化するステップを含む、請求項１に記載の方法。
【請求項３】
区分化された前記複数のタスクをスケジュールする前記ステップは、ノンプリエンプティブタスクの前記集合の前記マルチロボット環境での前記スケジューリングを最適化するために、区分化された前記複数のタスクの負荷バランシングを、前記複数のタスクに対応する前記１つ以上の性能損失値に基づいて行うステップを含む、請求項１に記載の方法。
【請求項４】
前記負荷バランシングは、
（ｉ）同一の性能損失値に基づく１つ以上のスケジュール可能なタスクおよび１つ以上のスケジュール不可能なタスクの再配置であって、前記１つ以上のスケジュール可能なタスクおよび前記１つ以上のスケジュール不可能なタスクは、それぞれ、スケジュール可能なタスクの前記集合およびスケジュール不可能なタスクの前記集合に対応する、前記再配置、および
（ｉｉ）ノンプリエンプティブタスクの前記集合を前記マルチロボット環境でスケジュールするための前記スケジューリング技法を実施することによる、最大優先度値を有する前記１つ以上のスケジュール不可能なタスクの、スケジュール不可能なタスクの前記集合からの識別、
を含む、請求項３に記載の方法。
【請求項５】
前記同一の性能損失値は、前記１つ以上のスケジュール可能なタスクおよび前記１つ以上のスケジュール不可能なタスクの各々に対応し、前記１つ以上のスケジュール可能なタスクおよび前記１つ以上のスケジュール不可能なタスクは、それぞれ、スケジュール可能なタスクの前記集合およびスケジュール不可能なタスクの前記集合に対応する、請求項４に記載の方法。
【請求項６】
前記１つ以上のスケジュール不可能なタスクの識別の前記ステップは、スケジュール不可能なタスクの前記集合のうちの各々が前記マルチロボット環境でスケジュールされるまで、前記スケジューリング技法を実施することによって反復して行われる、請求項４に記載の方法。
【請求項７】
ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするためのシステム（１００）であって、前記システム（１００）は、
命令を記憶するメモリ（１０２）；
１つ以上の通信インターフェース（１０６）；および
前記１つ以上の通信インターフェース（１０６）を介して前記メモリ（１０２）に結合された１つ以上のハードウェアプロセッサ（１０４）を備え、
前記１つ以上のハードウェアプロセッサ（１０４）は、前記命令によって、
複数のタスクを定義し、前記複数のタスクの各々は、実行時間、前記ノンプリエンプティブタスクを完了するための指定された時間間隔および時間単位当たりの性能損失関数で特徴付けられたノンプリエンプティブタスクであり；
前記複数のタスクを、スケジューリング技法によって、スケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合に区分化し、スケジュール可能なタスクの前記集合は、所定の時間間隔内に実行されて最大性能損失値を有するタスクの部分集合を含み、スケジュール不可能なタスクの前記集合は、前記所定の時間間隔内に実行できず低性能損失値を有するタスクの部分集合を含み；
区分化された前記複数のタスクを、複数のステップを行うことによって、予め定義された順序でスケジュールし、前記複数のステップは、
（ｉ）区分化された前記複数のタスクを、前記スケジューリング技法によって、区分化された前記複数のタスクに対応する１つ以上の性能損失値の非昇順でソートし；
（ｉｉ）圧縮メカニズムを実装することにより、スケジュール可能なタスクの前記集合のうちの少なくとも１つを前記マルチロボット環境で動作する複数のロボットの中の各ロボットに割り当てることによってスケジュール可能なタスクの前記集合を前記マルチロボット環境でスケジュールし、前記スケジュールするステップは、
（ａ）スケジュール可能なタスクの前記集合のうちの各々の前記マルチロボット環境での実行の可能性を、前記スケジューリング技法によって、判定し；
（ｂ）予め割り当てられたタスクの集合を前記複数のロボットの中でスケジュールする可能性を、前記スケジューリング技法によって、判定し、予め割り当てられたタスクの前記集合は、スケジュール可能なタスクの前記集合以外の１つ以上のタスクおよびスケジュール不可能なタスクの前記集合を含み；
（ｃ）スケジュール可能なタスクの前記集合のうちの各々の実行の前記可能性および予め割り当てられたタスクの前記集合を前記複数のロボットの中でスケジュールする前記可能性を判定した際に、前記圧縮メカニズムによって、スケジュール可能なタスクの前記集合をスケジュールする、
ことを含み、さらに
（ｉｉｉ）スケジュール不可能なタスクの前記集合を、リスト・スケジューリング技法によって、前記複数のロボットの中でスケジュールする、
ように構成される、
システム（１００）。
【請求項８】
前記１つ以上のハードウェアプロセッサ（１０４）は、
（ｉ）スケジュール可能なタスクの前記集合の中の前記スケジュール可能なタスクの各々の前記実行の最小の可能性、または、
（ｉｉ）予め割り当てられたタスクの前記集合をスケジュールする最小の可能性、
のいずれかを判定した際に、スケジュール可能なタスクの前記集合の中の１つ以上のスケジュール可能なタスクを、前記スケジューリング技法を介して、スケジュール不可能なタスクとしてカテゴリー化することによって、スケジュール可能なタスクの前記集合をスケジュールするように構成された、請求項７に記載のシステム（１００）。
【請求項９】
前記１つ以上のハードウェアプロセッサ（１０４）は、ノンプリエンプティブタスクの前記集合の前記マルチロボット環境での前記スケジューリングを最適化するために、区分化された前記複数のタスクの負荷バランシングを、前記複数のタスクに対応する前記１つ以上の性能損失値に基づいて行うことによって、区分化された前記複数のタスクをスケジュールするように構成された、請求項７に記載のシステム（１００）。
【請求項１０】
前記負荷バランシングは、
（ｉ）同一の性能損失値に基づく１つ以上のスケジュール可能なタスクおよび１つ以上のスケジュール不可能なタスクの再配置であって、前記１つ以上のスケジュール可能なタスクおよび前記１つ以上のスケジュール不可能なタスクは、それぞれ、スケジュール可能なタスクの前記集合およびスケジュール不可能なタスクの前記集合に対応する、前記再配置、および、
（ｉｉ）ノンプリエンプティブタスクの前記集合を前記マルチロボット環境でスケジュールするための前記スケジューリング技法を実施することによる、最大優先度値を有する前記１つ以上のスケジュール不可能なタスクの、スケジュール不可能なタスクの前記集合からの識別、
を含む、請求項９に記載のシステム（１００）。
【請求項１１】
前記同一の性能損失値は、前記１つ以上のスケジュール可能なタスクおよび前記１つ以上のスケジュール不可能なタスクの各々に対応し、前記１つ以上のスケジュール可能なタスクおよび前記１つ以上のスケジュール不可能なタスクは、それぞれ、スケジュール可能なタスクの前記集合およびスケジュール不可能なタスクの前記集合に対応する、請求項１０に記載のシステム（１００）。
【請求項１２】
前記１つ以上のハードウェアプロセッサ（１０４）は、スケジュール不可能なタスクの前記集合のうちの各々が前記マルチロボット環境でスケジュールされるまで、前記１つ以上のスケジュール不可能なタスクの識別の前記ステップを、前記スケジューリング技法を実施することによって反復して行うように構成された、請求項１０に記載のシステム（１００）。
【請求項１３】
１つ以上の非一時的機械可読情報記憶媒体であって、１つ以上のハードウェアプロセッサによって実行されるときに、
複数のタスクを、１つ以上のハードウェアプロセッサによって、定義するステップであって、前記複数のタスクの各々は、実行時間、ノンプリエンプティブタスクを完了するための指定された時間間隔および時間単位当たりの性能損失関数で特徴付けられたノンプリエンプティブタスクである、前記定義するステップ（２０１）と；
前記複数のタスクを、スケジューリング技法によって、スケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合に区分化するステップであって、スケジュール可能なタスクの前記集合は、所定の時間間隔内に実行されて最大性能損失値を有するタスクの部分集合を含み、スケジュール不可能なタスクの前記集合は、前記所定の時間間隔内に実行できず低性能損失値を有するタスクの部分集合を含む、前記区分化するステップ（２０２）と；
区分化された前記複数のタスクを、複数のステップを行うことによって、予め定義された順序でスケジュールするステップ（２０３）であって、前記複数のステップは、
（ｉ）区分化された前記複数のタスクを、前記スケジューリング技法によって、区分化された前記複数のタスクに対応する１つ以上の性能損失値の非昇順でソートするステップ（２０３（ｉ））；
（ｉｉ）圧縮メカニズムを実装することにより、スケジュール可能なタスクの前記集合のうちの少なくとも１つをマルチロボット環境で動作する複数のロボットの中の各ロボットに割り当てることによってスケジュール可能なタスクの前記集合を前記マルチロボット環境でスケジュールするステップ（２０３（ｉｉ））であって、前記スケジュールするステップ（２０３（ｉｉ））は、
（ａ）スケジュール可能なタスクの前記集合のうちの各々の前記マルチロボット環境での実行の可能性を、前記スケジューリング技法によって、判定するステップ（２０３（ｉｉ）（ａ））と；
（ｂ）予め割り当てられたタスクの集合を前記複数のロボットの中でスケジュールする可能性を、前記スケジューリング技法によって、判定するステップであって、予め割り当てられたタスクの前記集合は、スケジュール可能なタスクの前記集合以外の１つ以上のタスクおよびスケジュール不可能なタスクの前記集合を含む、前記判定するステップ（２０３（ｉｉ）（ｂ））と；
（ｃ）スケジュール可能なタスクの前記集合のうちの各々の実行の前記可能性および予め割り当てられたタスクの前記集合をスケジュールする前記可能性を判定した際に、前記圧縮メカニズムによって、スケジュール可能なタスクの前記集合を前記マルチロボット環境でスケジュールするステップ（２０３（ｉｉ）（ｃ））と、
を含む、前記スケジュールするステップ（２０３（ｉｉ））；および
（ｉｉｉ）スケジュール不可能なタスクの前記集合を、リスト・スケジューリング技法によって、前記複数のロボットの中でスケジュールするステップ（２０３（ｉｉｉ））、
を含む、前記スケジュールするステップ（２０３）と、
を行わせる１つ以上の命令を含む、１つ以上の非一時的機械可読情報記憶媒体。
【請求項１４】
スケジュール可能なタスクの前記集合をスケジュールする前記ステップは、
（ｉ）スケジュール可能なタスクの前記集合の中の前記スケジュール可能なタスクの各々の前記実行の最小の可能性、または
（ｉｉ）予め割り当てられたタスクの前記集合をスケジュールする最小の可能性、
のいずれかを判定した際に、スケジュール可能なタスクの前記集合の中の１つ以上のスケジュール可能なタスクを、前記スケジューリング技法によって、スケジュール不可能なタスクとしてカテゴリー化するステップを含む、請求項１３に記載の１つ以上の非一時的機械可読情報記憶媒体。
【請求項１５】
区分化された前記複数のタスクをスケジュールする前記ステップは、ノンプリエンプティブタスクの前記集合の前記マルチロボット環境での前記スケジューリングを最適化するために、区分化された前記複数のタスクの負荷バランシングを、前記複数のタスクに対応する前記１つ以上の性能損失値に基づいて行うステップを含む、請求項１３記載の１つ以上の非一時的機械可読情報記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照および優先権］
本特許出願は、２０１８年６月２９日出願のインド国特許出願第２０１８２１０２４３８７号の優先権を主張する。
【０００２】
［技術分野］
本開示は、一般に、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールすることに関し、より詳しくは、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするためのシステムおよび方法に関する。
【背景技術】
【０００３】
デジタルおよびオートメーション時代においては、マルチロボットシステムおよび関連する技術が様々な用途および産業で広く用いられている。例えば、倉庫調達システムでは、多種多様な対象物を倉庫内に保管し、そこから回収するプロセスを自動化するためにマルチロボットシステムが配備される。倉庫では、商品が広い区域にわたって系統的に保管され、需要に基づいて保管場所から取り出される。商品または対象物の倉庫内およびそこからの移動は、（商品の移動に関する）タスクのスケジューリングの観点から主要な課題を提起する。倉庫調達システムへリアルタイムで流入する夥しい量の需要は、需要の最適なスケジューリングを不可避にする。ｅコマースおよび最近の物流の急速な進展に伴って、倉庫システムは、短いピッキング時間に対して厖大な規模の在庫および広範な高需要を有し、それによって、ロボットシステムの配備を必要とする。
【０００４】
このように、産業および他の技術分野における用途に起因して、マルチロボットシステムにおけるタスク配分が著しく重要性を増している。与えられたシステムレベルのタスクのサブタスクに個々のロボットを割り当てるプロセスは、タスク配分と呼ばれ、いずれのマルチロボットシステムにも必要とされる重要な機能性を含む。タスク配分の目的は、マルチロボットシステムの性能を向上させることになるようにロボットタスク（単数または複数）を割り当てることであり、これは、総合的な実行時間の短縮を含む。一般に、タスク配分は、未知の動的環境で機能しているマルチロボットシステムにとって欠くことのできない要件である。タスク配分は、ロボットが総合的なシステム性能を改善するために、環境の変化または他のロボットの行動に応答してそれらの振舞いを変化させることを許容する。
【０００５】
従って、マルチロボットシステムにおけるタスク配分は、特に、異なる要件および制約を伴う様々なタスクを最適な仕方で行うために必要とされる異なる能力が複数のロボットに備わった、かかるロボット環境では、複雑な課題を提起する。タスク配分の問題は、環境の変化を含んだ現象を伴う時間的に変化する動的決定問題であるため、問題を指定された時間間隔で反復して解かなければならない。従って、タスク配分の問題は、取り組むのがより複雑になる。考察下にある特定の技術分野の要件が、マルチロボット・タスク配分問題の特徴および複雑さにさらに影響を及ぼす。
【発明の概要】
【課題を解決するための手段】
【０００６】
本開示の実施形態は、本発明者らによって従来のシステムで認識された上述の技術的問題の１つ以上への解決法としての技術改良を提示する。例えば、一実施形態において、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするための方法が提供され、この方法は、複数のタスクを、１つ以上のハードウェアプロセッサによって、定義するステップであって、複数のタスクの各々が実行時間、ノンプリエンプティブタスクを完了するための指定された時間間隔および時間単位当たりの性能損失関数で特徴付けられたノンプリエンプティブタスクである、定義するステップと；複数のタスクをスケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合に、スケジューリング技法によって、区分化するステップであって、スケジュール可能なタスクの集合は、所定の時間間隔内に実行されることになり最大性能損失値を有するタスクの部分集合を含み、スケジュール不可能なタスクの集合は、所定の時間間隔内に実行できず低性能損失値をもつタスクの部分集合を含む、区分化するステップと；区分化された複数のタスクを複数のステップを行うことによって、予め定義された順序で、スケジュールするステップであって、複数のステップは、（ｉ）区分化された複数のタスクを区分化された複数のタスクに対応する１つ以上の性能損失値の非昇順で、スケジューリング技法によって、ソートするステップ；（ｉｉ）圧縮メカニズムを実装することにより、スケジュール可能なタスクの集合のうちの少なくとも１つをマルチロボット環境で動作している複数のロボットの中の各ロボットに割り当てることによってスケジュール可能なタスクの集合をマルチロボット環境でスケジュールするステップであって、スケジュールするステップは、（ａ）スケジュール可能なタスクの集合のうちの各々のマルチロボット環境での実行の可能性を、スケジューリング技法によって、判定するステップと、（ｂ）予め割り当てられたタスクの集合を複数のロボットの中でスケジュールする可能性を、スケジューリング技法によって、判定するステップであって、予め割り当てられたタスクの集合は、スケジュール可能なタスクの集合以外の１つ以上のタスクおよびスケジュール不可能なタスクの集合を含む、判定するステップと、（ｃ）スケジュール可能なタスクの集合のうちの各々の実行の可能性および予め割り当てられたタスクの集合をスケジュールする可能性を判定した際に、スケジュール可能なタスクの集合をマルチロボット環境で、圧縮メカニズムによって、スケジュールするステップとを含む、スケジュールするステップ；および（ｉｉｉ）スケジュール不可能なタスクの集合を複数のロボットの中で、リスト・スケジューリング技法によって、スケジュールするステップを含む、複数のステップと；（ｉ）スケジュール可能なタスクの集合の中のスケジュール可能なタスクの各々の実行の最小の可能性、または（ｉｉ）予め割り当てられたタスクの集合をスケジュールする最小の可能性のいずれかを判定した際に、スケジュール可能なタスクの集合の中の１つ以上のスケジュール可能なタスクをスケジュール不可能なタスクとして、スケジューリング技法によって、カテゴリー化するステップと；ノンプリエンプティブタスクの集合のマルチロボット環境でのスケジューリングを最適化するために、区分化された複数のタスクの負荷バランシングを、複数のタスクに対応する１つ以上の性能損失値に基づいて、行うステップと；スケジュール不可能なタスクの集合のうちの各々がマルチロボット環境でスケジュールされるまで、スケジューリング技法を実装することによって１つ以上のスケジュール不可能なタスクの識別のステップを反復して行うステップとを含む。
【０００７】
別の態様では、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするためのシステムが提供され、このシステムは、命令を記憶するメモリ、１つ以上の通信インターフェース、および１つ以上の通信インターフェースを介してメモリに結合された１つ以上のハードウェアプロセッサを含み、１つ以上のハードウェアプロセッサは、命令によって、複数のタスクを定義し、複数のタスクの各々が実行時間、ノンプリエンプティブタスクを完了するための指定された時間間隔および時間単位当たりの性能損失関数で特徴付けられたノンプリエンプティブタスクであり；複数のタスクをスケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合に、スケジューリング技法によって、区分化し、スケジュール可能なタスクの集合は、所定の時間間隔内に実行されることになり最大性能損失値を有するタスクの部分集合を含み、スケジュール不可能なタスクの集合は、所定の時間間隔内に実行できず低性能損失値をもつタスクの部分集合を含み；区分化された複数のタスクを複数のステップを行うことによって、予め定義された順序で、スケジュールし、複数のステップは、（ｉ）区分化された複数のタスクを区分化された複数のタスクに対応する１つ以上の性能損失値の非昇順で、スケジューリング技法によって、ソートし、（ｉｉ）圧縮メカニズムを実装することにより、スケジュール可能なタスクの集合のうちの少なくとも１つをマルチロボット環境で動作している複数のロボットの中の各ロボットに割り当てることによってスケジュール可能なタスクの集合をマルチロボット環境でスケジュールし、スケジュールするステップは、（ａ）スケジュール可能なタスクの集合のうちの各々のマルチロボット環境での実行の可能性を、スケジューリング技法によって、判定し；（ｂ）予め割り当てられたタスクの集合を複数のロボットの中でスケジュールする可能性を、スケジューリング技法によって、判定し、予め割り当てられたタスクの集合は、スケジュール可能なタスクの集合以外の１つ以上のタスクおよびスケジュール不可能なタスクの集合を含み；（ｃ）スケジュール可能なタスクの集合のうちの各々の実行の可能性および予め割り当てられたタスクの集合を複数のロボットの中でスケジュールする可能性を判定した際に、スケジュール可能なタスクの集合を、圧縮メカニズムによって、スケジュールすることを含み；さらに（ｉｉｉ）スケジュール不可能なタスクの集合を複数のロボットの中で、リスト・スケジューリング技法によって、スケジュールすることを含み；（ｉ）スケジュール可能なタスクの集合の中のスケジュール可能なタスクの各々の実行の最小の可能性；または（ｉｉ）予め割り当てられたタスクの集合をスケジュールする最小の可能性のいずれかを判定した際に、スケジュール可能なタスクの集合の中の１つ以上のスケジュール可能なタスクをスケジュール不可能なタスクとして、スケジューリング技法を介して、カテゴリー化することによってスケジュール可能なタスクの集合をスケジュールし；ノンプリエンプティブタスクの集合のマルチロボット環境でのスケジューリングを最適化するために、区分化された複数のタスクの負荷バランシングを、複数のタスクに対応する１つ以上の性能損失値に基づいて、行うことによって区分化された複数のタスクをスケジュールして；スケジュール不可能なタスクの集合のうちの各々がマルチロボット環境でスケジュールされるまで、１つ以上のスケジュール不可能なタスクの識別のステップを、スケジューリング技法を実装することによって、反復して行うように構成される。
【０００８】
さらに別の態様では、１つ以上のハードウェアプロセッサによって実行されたときに、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするための方法を１つ以上のハードウェアプロセッサに行わせる、１つ以上の命令を含む１つ以上の非一時的機械可読情報記憶媒体が提供され、この方法は、複数のタスクを定義するステップであって、複数のタスクの各々が実行時間、ノンプリエンプティブタスクを完了するための指定された時間間隔、および時間単位当たりの性能損失関数で特徴付けられたノンプリエンプティブタスクである、定義するステップと；複数のタスクをスケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合に、スケジューリング技法によって、区分化し、スケジュール可能なタスクの集合は、所定の時間間隔内に実行されることになり最大性能損失値を有するタスクの部分集合を含み、スケジュール不可能なタスクの集合は、所定の時間間隔内に実行できず低性能損失値をもつタスクの部分集合を含む、区分化するステップと；区分化された複数のタスクを複数のステップを行うことによって、予め定義された順序で、スケジュールするステップであって、複数のステップは、（ｉ）区分化された複数のタスクを区分化された複数のタスクに対応する１つ以上の性能損失値の非昇順で、スケジューリング技法によって、ソートするステップ；（ｉｉ）圧縮メカニズムを実装することにより、スケジュール可能なタスクの集合のうちの少なくとも１つをマルチロボット環境で動作している複数のロボットの中の各ロボットに割り当てることによってスケジュール可能なタスクの集合をマルチロボット環境でスケジュールするステップであって、スケジュールするステップは、（ａ）スケジュール可能なタスクの集合のうちの各々のマルチロボット環境での実行の可能性を、スケジューリング技法によって、判定するステップと；（ｂ）予め割り当てられたタスクの集合を複数のロボットの中でスケジュールする可能性を、スケジューリング技法によって、判定し、予め割り当てられたタスクの集合は、スケジュール可能なタスクの集合以外の１つ以上のタスクおよびスケジュール不可能なタスクの集合を含む、判定するステップと；（ｃ）スケジュール可能なタスクの集合のうちの各々の実行の可能性および予め割り当てられたタスクの集合をスケジュールする可能性を判定した際に、スケジュール可能なタスクの集合をマルチロボット環境で、圧縮メカニズムによって、スケジュールするステップとを含む、スケジュールするステップ；および（ｉｉｉ）スケジュール不可能なタスクの集合を複数のロボットの中で、リスト・スケジューリング技法によって、スケジュールするステップを含む、複数のステップと；（ｉ）スケジュール可能なタスクの集合の中のスケジュール可能なタスクの各々の実行の最小の可能性、または（ｉｉ）予め割り当てられたタスクの集合をスケジュールする最小の可能性のいずれかを判定した際に、スケジュール可能なタスクの集合の中の１つ以上のスケジュール可能なタスクをスケジュール不可能なタスクとして、スケジューリング技法によって、カテゴリー化するステップと；ノンプリエンプティブタスクの集合のマルチロボット環境でのスケジューリングを最適化するために、区分化された複数のタスクの負荷バランシングを、複数のタスクに対応する１つ以上の性能損失値に基づいて、行うステップと；スケジュール不可能なタスクの集合のうちの各々がマルチロボット環境でスケジュールされるまで、スケジューリング技法を実装することによって１つ以上のスケジュール不可能なタスクの識別のステップを反復して行うステップとを含む。
【０００９】
理解されるべきは、前述の一般的な記載および以下の詳細な記載がいずれも例示的かつ説明的であるに過ぎず、請求される本発明を限定するものではないことである。
【００１０】
本開示に組み込まれてその一部を構成する添付図面は、例示的な実施形態を示し、説明と併せて、開示される原理を説明する役割を果たす。
【図面の簡単な説明】
【００１１】
【図１】本開示のいくつかの実施形態による、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするためのシステムのブロック図を示す。
【図２Ａ】本開示のいくつかの実施形態による、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするプロセスに含まれるステップを示すフロー図である。
【図２Ｂ】本開示のいくつかの実施形態による、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするプロセスに含まれるステップを示すフロー図である。
【図３Ａ】本開示のいくつかの実施形態による、提案される方法論（負荷バランシング有りおよび無し）と、従来のシステムおよび方法（すなわち、需要バウンド関数（ＤＢＦ：Ｄｅｍａｎｄ  Ｂｏｕｎｄ  Ｆｕｎｃｔｉｏｎ）および需要バウンド関数（代替）またはＤＢＦ（代替））との性能比較をグラフィカルに示し、ここでは１００個のプリエンプトされないタスクの集合が、１０個のロボットシステムによって、提案される方法論（負荷バランシング有りおよび無し）を用い、従来のシステムおよび方法（すなわち、ＤＢＦおよびＤＢＦ（代替））も用いて５つの異なるデッドラインについて行われ、性能損失は、１と１０との間のランダム値に設定される。
【図３Ｂ】本開示のいくつかの実施形態による、提案される方法論（負荷バランシング有りおよび無し）と、従来のシステムおよび方法（すなわち、需要バウンド関数（ＤＢＦ）および需要バウンド関数（代替）またはＤＢＦ（代替））との性能比較をグラフィカルに示し、ここでは１００個のプリエンプトされないタスクの集合が、１０個のロボットシステムによって、提案される方法論（負荷バランシング有りおよび無し）を用い、従来のシステムおよび方法（すなわち、ＤＢＦおよびＤＢＦ（代替））も用いて５つの異なるデッドラインについて行われ、性能損失は、１と１０との間のランダム値に設定される。
【図３Ｃ】本開示のいくつかの実施形態による、提案される方法論（負荷バランシング有りおよび無し）と、従来のシステムおよび方法（すなわち、需要バウンド関数（ＤＢＦ）および需要バウンド関数（代替）またはＤＢＦ（代替））との性能比較をグラフィカルに示し、ここでは１００個のプリエンプトされないタスクの集合が、１０個のロボットシステムによって、提案される方法論（負荷バランシング有りおよび無し）を用い、従来のシステムおよび方法（すなわち、ＤＢＦおよびＤＢＦ（代替））も用いて５つの異なるデッドラインについて行われ、性能損失は、１と１０との間のランダム値に設定される。
【図４】本開示のいくつかの実施形態による、提供される方法論を負荷バランシングとともに用いて行われるソーティングをグラフィカルに示す。
【図５Ａ】本開示のいくつかの実施形態による、マルチロボット環境においてロボットが線形に増加するケースで提案される方法論（負荷バランシング有りおよび無し）を用い、従来のシステムおよび方法（すなわち、ＤＢＦおよびＤＢＦ（代替））も用いて行われた１０００個のプリエンプトされないタスクの集合の比較をグラフィカルに示し、ここでデッドラインは、ｅｉと１０ｅｉとの間で一様に分布し、性能損失は、１と１０との間に一様に分布する。
【図５Ｂ】本開示のいくつかの実施形態による、マルチロボット環境においてロボットが線形に増加するケースで提案される方法論（負荷バランシング有りおよび無し）を用い、従来のシステムおよび方法（すなわち、ＤＢＦおよびＤＢＦ（代替））も用いて行われた１０００個のプリエンプトされないタスクの集合の比較をグラフィカルに示し、ここでデッドラインは、ｅｉと１０ｅｉとの間で一様に分布し、性能損失は、１と１０との間に一様に分布する。
【図５Ｃ】本開示のいくつかの実施形態による、マルチロボット環境においてロボットが線形に増加するケースで提案される方法論（負荷バランシング有りおよび無し）を用い、従来のシステムおよび方法（すなわち、ＤＢＦおよびＤＢＦ（代替））も用いて行われた１０００個のプリエンプトされないタスクの集合の比較をグラフィカルに示し、ここでデッドラインは、ｅｉと１０ｅｉとの間で一様に分布し、性能損失は、１と１０との間に一様に分布する。
【図６Ａ】本開示のいくつかの実施形態による、マルチロボット環境においてロボットが線形に増加するケースで提案される方法論（負荷バランシング有りおよび無し）を用い、従来のシステムおよび方法（すなわち、ＤＢＦおよびＤＢＦ（代替））も用いて行われた１０００個のプリエンプトされないタスクの集合の比較をグラフィカルに示し、ここでデッドラインは、４つの異なる分布の混合を含み、性能損失は、１と１０との間に一様に分布する。
【図６Ｂ】本開示のいくつかの実施形態による、マルチロボット環境においてロボットが線形に増加するケースで提案される方法論（負荷バランシング有りおよび無し）を用い、従来のシステムおよび方法（すなわち、ＤＢＦおよびＤＢＦ（代替））も用いて行われた１０００個のプリエンプトされないタスクの集合の比較をグラフィカルに示し、ここでデッドラインは、４つの異なる分布の混合を含み、性能損失は、１と１０との間に一様に分布する。
【図６Ｃ】本開示のいくつかの実施形態による、マルチロボット環境においてロボットが線形に増加するケースで提案される方法論（負荷バランシング有りおよび無し）を用い、従来のシステムおよび方法（すなわち、ＤＢＦおよびＤＢＦ（代替））も用いて行われた１０００個のプリエンプトされないタスクの集合の比較をグラフィカルに示し、ここでデッドラインは、４つの異なる分布の混合を含み、性能損失は、１と１０との間に一様に分布する。
【発明を実施するための形態】
【００１２】
例示的な実施形態が添付図面を参照して記載される。図中で、参照番号の最上位桁（単数または複数）は、その参照番号が最初に現われる図を特定する。便利であればどこでも、同じかまたは同様の部分を指すために同じ参照番号が複数の図面を通じて用いられる。開示される原理の例および特徴が本明細書に記載されるが、開示される実施形態の趣旨および範囲から逸脱することなく変更、適合、および他の実施が可能である。以下の詳細な記載は、例示的に過ぎないと見なされることが意図され、真の範囲および趣旨は、添付の特許請求の範囲によって示される。
【００１３】
本開示の実施形態は、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするためのシステムおよび方法を提供する。一般に、マルチロボット・タスク配分は、タスクスケジューリングまたはタスク配分を最適化するためにタスクをロボットの中で効率的に割り当てるステップを含む。例えば、対象物を顧客が発注するときにそれが配送されるようにスケジュールされる、倉庫におけるタスク配分は、対象物を保管ラックから梱包台へ引き出すステップを含む。これらのタスクは、本質的に均質であってよいとはいえ、品目の保管位置および重さに基づいて異なってもよい。一般に、タスクは、波のように扱われ、波は、数百から数千のタスクを含むことができる。これらのタスクが一旦完了されると、前の波の実行中に蓄積した、次の波が実行のために選ばれる。
【００１４】
ノンプリエンプティブまたは原子タスクの集合を複数の均質かつ自律的なロボットに対してスマート環境、特にスマート倉庫環境でスケジュールする問題は、均質なマルチプロセッサシステム上のノンプリエンプティブスケジューリングまたは散発的プロセススケジューリングに極めて類似する。目標は、ノンプリエンプティブまたは原子タスクの集合のうちの各々に対応するデッドライン内にノンプリエンプティブまたは原子タスクの集合の最大数を最適にスケジュールすることである。さらに、ノンプリエンプティブまたは原子タスクの集合のうちの各々は、デッドラインと、ノンプリエンプティブタスクの集合のうちのいずれかがその対応するデッドライン内に完了されなければマルチロボットシステムが被りかねない、それに帰される性能損失とを有するので、タスクスケジューリング・システムの目標は、デッドラインミス数の削減および性能損失の最小化である。
【００１５】
さらにまた、利用可能なリソース（特に、ロボット）の数が固定され、タスク流入数は、１日の特定の時間および１年のある期間中に非常に大きくなりうるので、多くのタスクは、これらの高需要期間中にそれらのデッドラインをミスすることが避けられない。例えば、スマート倉庫環境のシナリオを考慮すると、スマート倉庫環境内およびそれからの商品または対象物の移動が（商品の移動に関する）タスクのスケジューリングの観点から主要な課題を提起する。タスクの波でインポートされたすべてのタスクが限られた数のリソース（ロボット）を用いてできるだけ速やかに終了されることが要求され、その後、次の波がインポートされる。
【００１６】
特にロボットまたは関連技術を実装した倉庫における、従来のシステムおよび方法は、ノンプリエンプティブまたは原子タスクの集合のうちの各々と関連付けられたデッドラインおよび性能損失を考慮せず、従って、かかるノンプリエンプティブタスクがそれらのデッドラインをミスすることを避けられない場合にはノンプリエンプティブまたは原子タスクの集合の中の多くのタスクを破棄する。しかしながら、一般に、対応するデッドラインをたとえ過ぎたとしても、スマート倉庫環境における各タスクが完了される必要がある。ノンプリエンプティブまたは原子タスクの集合を区分化するステップおよびそれらをマルチプロセッサシステム（またはマルチコアシステム）上にスケジュールするステップが主要なタスクスケジューリング問題を含む。
【００１７】
さらに、従来のシステムおよび方法の大部分は、プリエンプションが許可されて、すなわち、タスクが１つのプロセッサ上でプリエンプトされてよく、その後、同じかまたはさらに別のプロセッサ上で再開されてよい解決法（単数または複数）を提供する。しかしながら、ノンプリエンプティブスケジューリング環境のケースでは、かかるタスクスケジューリング技法を実装できない。従来のシステムおよび方法のいくつかは、提案されるノンプリエンプティブスケジューリング環境のためのノンプリエンプティブスケジューリング技法を有するが、しかしながら、かかる技法をマルチプロセッサシステム上に実装することはできず、先に論じられたように、かかる技法は、性能損失およびデッドラインに関する態様を考慮しない。
【００１８】
それゆえに、ノンプリエンプティブタスクの各々が対応するデッドラインまたはそれと関連付けられた性能損失を有する、ノンプリエンプティブタスクをマルチプロセッサシステム上にスケジュールするステップを提供する技術が必要である。
【００１９】
次に、複数の図にわたって同様の参照文字が対応する特徴を一貫して表す、図面、より詳しくは図１〜図６Ｃを参照すると、好ましい実施形態が示され、これらの実施形態が以下の例示的なシステムおよび／または方法に照らして説明される。
【００２０】
図１は、本開示のある実施形態による、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするためのシステム１００の例示的なブロック図を示す。ある実施形態において、システム１００は、１つ以上のプロセッサ１０４、通信インターフェースデバイス（単数または複数）もしくは入力／出力（Ｉ／Ｏ）インターフェース（単数または複数）１０６、および１つ以上のプロセッサ１０４に作動的に結合された１つ以上のデータ記憶デバイスまたはメモリ１０２を含む。ハードウェアプロセッサである１つ以上のプロセッサ１０４を１つ以上のマイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、中央処理装置、ステートマシン、論理回路、および／または動作命令に基づいて信号を操作する任意のデバイスとして実装できる。他の能力の中でも、プロセッサ（単数または複数）は、メモリ１０２に記憶されたコンピュータ可読命令をフェッチして実行するように構成される。ある実施形態では、システム１００を様々なコンピューティングシステム、例えば、ラップトップコンピュータ、ノートブック、ハンドへルドデバイス、ワークステーション、メインフレームコンピュータ、サーバ、ネットワーククラウドおよび同様のものに実装できる。
【００２１】
Ｉ／Ｏインターフェースデバイス（単数または複数）１０６は、様々なソフトウェアおよびハードウェアインターフェース、例えば、ウェブインターフェース、グラフィカルユーザインターフェース、および同様のものを含むことができて、有線ネットワーク、例えば、ＬＡＮ、ケーブルなど、およびＷＬＡＮ、セルラ、または衛星のような無線ネットワークを含めて、多種多様なネットワークＮ／Ｗおよびプロトコルタイプ内の複数の通信を容易にすることができる。ある実施形態において、Ｉ／Ｏインターフェースデバイス（単数または複数）は、いくつかのデバイスを互いにまたは別のサーバへ接続するための１つ以上のポートを含むことができる。
【００２２】
メモリ１０２は、例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ：ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）およびダイナミックランダムアクセスメモリ（ＤＲＡＭ：ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）のような揮発性メモリ、および／またはリードオンリメモリ（ＲＯＭ：ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラマブルＲＯＭ、フラッシュメモリのような不揮発性メモリ、ハードディスク、光ディスク、ならびに磁気テープを含めて、当技術分野で知られた任意のコンピュータ可読媒体を含んでもよい。
【００２３】
図２Ａ〜図２Ｂは、図１を参照して、本開示のいくつかの実施形態による、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするための方法の例示的なフロー図を示す。ある実施形態において、システム１００は、１つ以上のハードウェアプロセッサ１０４に作動的に結合されたメモリ１０２の１つ以上のデータ記憶デバイスを含み、１つ以上のプロセッサ１０４による方法のステップの実行のための命令を記憶するように構成される。次に、本開示の方法のステップが図１に示されるシステム１００の構成要素およびフロー図を参照して説明される。本開示の実施形態において、ハードウェアプロセッサ１０４は、命令が構成されたときに本明細書に記載される１つ以上の方法論を行う。
【００２４】
本開示のある実施形態によれば、ステップ２０１では、１つ以上のハードウェアプロセッサ１０４は、複数のタスクを定義し、複数のタスクの各々が実行時間（またはタスク実行時間）、ノンプリエンプティブタスクを完了するための指定された時間間隔および時間単位当たりの性能損失関数で特徴付けられるノンプリエンプティブタスクを含む。用語「性能損失」は、本明細書では、倉庫タスクスケジューリングでよく用いられる用語である用語「ペナルティ」と同様であると理解されてよく、タスクスケジューリングは、一般に、対応する「デッドライン」および「ペナルティ」を含む。さらに、提案される方法論が倉庫システムを参照して説明されたとはいえ、倉庫システム（単数または複数）のみにそれが限定されると理解されてはならない。提案される方法論は、スケジューリングまたはタスクスケジューリングがロボットまたは関係する技術を用いて行われる、すべてのかかる環境／用途／技術もしくは関係するシナリオに実施されるか、または拡張されてよい。
【００２５】
複数のタスクを定義するステップが以下の一組の仮定を考慮に入れて論じられてよい。
【００２６】
一組の仮定
（ｉ）タスクの波がマルチロボットプラットフォーム、例えば、倉庫管理システム（ＷＭＳ：ｗａｒｅｈｏｕｓｅ  ｍａｎａｇｅｍｅｎｔ  ｓｙｓｔｅｍ）にインポートされる；
（ｉｉ）マルチロボットプラットフォームまたはＷＭＳではｍ個の均質なロボットが利用可能であり、均質なロボットは、対象物を１つずつ運び、押して良い；
（ｉｉｉ）各波の始めにはタスクの波の中の複数のタスクＴ（タスクの集合を形成する）が利用可能であり、次の波またはさらなる波は、現在の波におけるすべてのタスクの完了後にのみ、利用可能なリソースを実装することによって利用可能である；
（ｉｖ）マルチロボットプラットフォームまたはＷＭＳは、すべての必要とされる情報、例えば、タスクＩＤ、タスク実行時間、デッドライン、波の内の複数のタスクについての性能損失（またはペナルティ）をタスクスケジューラへ通信する；
（ｖ）顧客が複数の商品を発注する場合、ピックアップされる各商品は、個別のタスクとして取り扱われる。このシナリオでは、複数のタスクの各々が異なる実行時間を有してよい。しかし、それらのタスクは、同一のデッドラインおよび同一の性能損失値と関連付けられる；
（ｖｉ）作動時間は、複数のタスクの各々について同一であり、タスク実行時間に含まれず、従って、タスク実行時間は、ロボットについての完全走行時間のみを含む;
（ｖｉｉ）複数のタスクの各々は、原子的かつノンプリエンプティブである。いずれかのタスクが一旦開始されて、ロボットに割り当てられると、そのタスクが完了されなければならない；
（ｖｉｉｉ）マルチロボット環境は、複数のロボットを含み、複数のロボットの各々は、波の間にそれに割り当てられたすべてのタスクを終えるのに十分なエネルギーを有し、対応する倉庫環境（例えば、ＷＭＳ）に必須の知識を有する；
（ｉｘ）実行を待つキューに入ったタスクがあれば、ロボットは、決してアイドル状態にない。
【００２７】
先に論じられたように、タスクを複数のロボットに配分する技術的問題は、（図に示されない）マルチプロセッサシステム上のタスクスケジューリングへマッピングされてよい。波における複数のタスクは、ｍ個の同一のロボットの中で区分化されることになり、性能損失を最小化するように複数のタスクが引き受けられることになる。
【００２８】
本開示のある実施形態によれば、マルチロボットプラットフォームにインポートされた波の集合の中の各波の始めに複数のタスク（すなわち、タスクの集合）（Ｔ＝｛ｔ１，ｔ２，…，ｔｎ｝）が利用可能である。ある実施形態では、複数のタスクの各々がすべての１≦ｉ≦ｎについてｔｉ＝（ｅｉ，ｄｉ，ｐｉ）と形式的に表されてよく、ｅｉは、実行時間であり、ｄｉは、デッドラインであり、ｐｉは、性能損失である。さらにｍ個の倉庫同一ロボットのチームＲ＝｛ｒ１，ｒ２，…，ｒｍ｝がある。（複数のタスクからの）様々な処理時間のタスクが、性能損失を最小化しながら、ｍ個の同一のロボットの中でスケジュールされることになる。先述のように、複数のタスクの中のいずれかのタスクが対応するデッドラインをミスした（または対応するデッドライン内に実行できなかった）場合には、遅れに比例した性能損失が課されてよい。
【００２９】
ある実施形態において、性能損失関数は、
Ｐ（ｔｉ）＝ｍａｘ（０，（ｃｉ−ｄｉ）×ｐｉ）  式（１）
と定義されてよく、ｃｉは、タスクｔｉについての完了時間を表し、ｔｉは、複数のタスクに対応する。式（１）を参照すると、タスクがデッドライン内に実行された場合には、性能損失がないが、タスクが一旦デッドライン内に実行できない（またはデッドラインをミスする）と、性能損失は、時間に比例して増加することに気付くであろう。提案される開示は、従って、複数のタスク、すなわち、ｎ個のタスクをｍ個のロボットの中で区分化するステップと、ロボットに割り当てられたタスクの部分集合を実行する命令とを提供し、Ｔ（ｒｊ）は、ロボットｒｊに割り当てられたタスクの部分集合を表し、タスクの部分集合は、複数のタスクに対応する。従って、タスクスケジューラの目的関数は、以下の式（２）によって表されてよい。
【００３０】
【数１】
2020004370.tif 000003
【００３１】
本開示のある実施形態によれば、ステップ２０２では、１つ以上のハードウェアプロセッサ１０４は、マルチプロセッサシステム上で複数のタスクをスケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合に、スケジューリング技法によって、区分化し、スケジュール可能なタスクの集合は、所定の時間間隔内に実行されることになり最大性能損失値を有するタスクの部分集合を含み、スケジュール不可能なタスクの集合は、所定の時間間隔内に実行できず低性能損失値をもつタスクの部分集合を含む。
【００３２】
スケジューリング技法
提案される開示は、ノンプリエンプティブタスク（または散発的タスク）の集合のマルチプロセッサシステム上におけるマルチロボット環境での区分化およびスケジューリングを容易にし、ノンプリエンプティブタスクの集合のうちの各々は、本明細書に開示されるスケジューリング技法を実装することによってデッドラインを有する。従って、スケジューリング技法は、さらに、様々な処理時間のタスクが複数のロボットの各々にどのように割り当てられることになるかを、かかるタスク（すなわち、様々な処理時間のタスク）の各々の実行の順序と併せて、決定するために、タスクスケジューリングの技術的問題をマルチプロセッサシステム上で定式化して解決することを容易にする。マルチロボットプラットフォームにインポートされたタスクの波が、従って、スケジューリング技法への入力としての役割を果たす。
【００３３】
本開示のある実施形態によれば、スケジューリング技法は、２つのフェーズを含む。第１のフェーズでは、（１つ以上のハードウェアプロセッサ１０４を介して実装された）スケジューリング技法がスケジュール可能なタスクの集合の割り当てを試みる、すなわち、スケジューリング技法は、ある１つのロボットに（複数のタスクの中の）最大数のタスクを割り当て、１つ以上の高性能損失タスクが高い優先順位でスケジュールされる。第２のフェーズでは、スケジューリング技法は、第１のフェーズで蓄積されたスケジュール不可能なタスクの集合を対応する蓄積された性能損失も最小化されうるように割り当てようと試みる。デッドラインを有するノンプリエンプティブタスクまたは散発的タスクの集合をマルチプロセッサシステム上で区分化し、スケジュールするためのスケジューリング技法の実装が次に詳細に考察されてよい。
【００３４】
本開示のある実施形態によれば、スケジューリング技法を実装することにより、複数のタスクがスケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合に、１つ以上のハードウェアプロセッサ１０４によって、最初に区分化されてよい。従って、ｎ個のタスクの集合は、ｍ＋１個の素集合、すなわち、Ｔ（ｒ１），Ｔ（ｒ２），…，Ｔ（ｍ），
【００３５】
【数２】
2020004370.tif 000004
に区分化または分割され、ここで、Ｔ（ｒｊ）は、ロボットｒｊ上にスケジュールされてよいタスクの部分集合を表し、
【００３６】
【数３】
2020004370.tif 000005
は、スケジュール可能なタスクの集合のデッドラインに違反することなしには複数のロボットのいずれにもスケジュール可能でないタスクの部分集合である。
【００３７】
ある実施形態において、区分化は、１つ以上のロボットが全速力で移動を始める前に、スケジュール可能なタスクの集合を（複数のロボットの中の）１つ以上のロボットに割り当てることを容易にする。言い換えれば、ゼロの性能損失値で達成されてよい複数のタスクの中の１つ以上のタスクがスケジュール可能なタスクの集合を実行するのに最も適した１つ以上のロボットに割り当てられる。ソーティングの例は、以下の段落００６２〜００６８で詳細に論じられ、そこではスケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合がプロセッサＰ１およびＰ２上に区分化される。
【００３８】
本開示のある実施形態によれば、ステップ２０３では、１つ以上のハードウェアプロセッサ１０４は、区分化された複数のタスクを複数のステップを行うことによって、予め定義された順序で、スケジュールする。ステップ２０３（ｉ）では、１つ以上のハードウェアプロセッサ１０４は、スケジューリング技法を実装することによって、区分化された複数のタスクを区分化された複数のタスクに対応する１つ以上の性能損失値の非昇順でソートする。
【００３９】
区分化は、最大数のタスクを割り当てることを容易にするとはいえ、性能損失が依然として最小化されないことがある。ある実施形態において、スケジューリング技法は、区分化された複数のタスクを１つ以上の性能損失値の非昇順でこのように初めにソートし、ソーティングに基づいて、区分化された複数のタスクを圧縮メカニズム（ロボットの中でのタスクスケジューリングのために実装された既知の技法）を用いてスケジュールすることを考慮する。性能損失最小化の例は、以下の段落００６２〜００９７で詳細に論じられた。さらに、上述のように、ソーティングの例は、以下の段落００６２〜００６８で詳細に論じられた。
【００４０】
本開示のある実施形態によれば、ステップ２０３（ｉｉ）では、１つ以上のハードウェアプロセッサ１０４は、圧縮メカニズムを実装することにより、スケジュール可能なタスクの集合のうちの少なくとも１つをマルチロボット環境で動作している複数のロボットの中の各ロボットに割り当てることによってスケジュール可能なタスクの集合をマルチロボット環境でスケジュールする。スケジュールするステップが次に詳細に考察されてよい。ある実施形態において、ステップ２０３（ｉｉ）（ａ）では、１つ以上のハードウェアプロセッサ１０４は、スケジュール可能なタスクの集合のうちの各々のマルチロボット環境での実行の可能性を、スケジューリング技法によって、判定する。従って、タスクｔｌを（ｍ個のロボットの中の）ロボットｒｋ上にスケジュールできるかどうかをチェックするために、両方の式（３）および（４）（以下に論じられる）が満たされるべきである。
【００４１】
【数４】
2020004370.tif 000006
【００４２】
ここで、式（３）は、ロボットｒｋ上にスケジュールされてｔｌより小さいデッドラインを有するすべてのタスクを実行した後にタスクｔｌを実行するのに十分なスペースをもたらすのを助ける。
【００４３】
ある実施形態において、ステップ２０３（ｉｉ）（ｂ）では、１つ以上のハードウェアプロセッサ１０４は、予め割り当てられたタスクの集合を複数のロボットの中でスケジュールする可能性を、スケジューリング技法によって、判定し、予め割り当てられたタスクの集合は、スケジュール可能なタスクの集合以外の１つ以上のタスクおよびスケジュール不可能なタスクの集合を含む。従って、式（４）は、ｔｌもスケジュールされる場合には、ロボットｒｋ上にスケジュールされ、ｔｌより大きいデッドラインを有するすべてのタスク（すなわち、予め割り当てられたタスクの集合）がやはりスケジュールされうることを容易にする。
【００４４】
ある実施形態において、スケジュール可能なタスクの集合をスケジュールするステップは、スケジュール可能なタスクの集合のうちの各々をスケジュールする最小の可能性および／または予め割り当てられたタスクの集合をスケジュールする最小の可能性のいずれかを判定した際に、スケジュール可能なタスクの集合の中の１つ以上のスケジュール可能なタスクをスケジュール不可能なタスクとして、スケジューリング技法によって、カテゴリー化するステップを含む。従って、いずれの判定基準にも不合格な場合、すなわち、複数のロボットの各々について式（３）または式（４）がいずれも満たされない場合には、ｔｌが
【００４５】
【数５】
2020004370.tif 000007
に加えられ、
【００４６】
【数６】
2020004370.tif 000008
は、スケジュール可能なタスクの集合のデッドラインに違反することなしには複数のロボットのいずれにもスケジュール可能でないタスクの部分集合である。
【００４７】
本開示のある実施形態によれば、ステップ２０３（ｉｉ）（ｃ）では、１つ以上のハードウェアプロセッサ１０４は、スケジュール可能なタスクの集合のうちの各々をスケジュールする可能性および予め割り当てられたタスクの集合をマルチロボット環境でスケジュールする可能性を判定した際に、スケジュール可能なタスクの集合をマルチロボット環境で（マルチプロセッサシステム上に）スケジュールする。
【００４８】
本開示のある実施形態によれば、ステップ２０３（ｉｉｉ）では、１つ以上のハードウェアプロセッサ１０４は、スケジュール不可能なタスクの集合を複数のロボットの中で、リスト・スケジューリング技法によって、スケジュールし、スケジューリングは、マルチプロセッサシステム上で行われる。ある実施形態において、ｎ個のタスク（すなわち、ｎ個の独立したタスク）の集合とシーケンスに依存する時間設定のｍ個のロボットとを所与として、複数のジョブの中のある１つのジョブの実行時間に等しい、非負時間中に複数のジョブをｍ個のロボットの中の１つだけのロボット上でプリエンプションなしに処理するために、リスト・スケジューリング技法が実装されてよい。
【００４９】
ある実施形態において、複数のロボットのいずれかが次のタスクを実行するために利用可能になるとすぐに、利用可能なロボットがキューの先頭にあるタスクを選んでよい。ｍ個のロボットの各々が同一なので、ｍ個のロボットの各々は、特定のタスクを実行するために同じ時間を要する。それゆえに、１つより多いロボットがキューの先頭にあるタスクを選ぶために利用可能なケースでは、より低いロボットＩＤをもつロボットがタスクに割り当てられてよい。複数のタスクの各々が完了するまでｍ個のロボットのいずれもアイドル状態のままではない。
【００５０】
スケジューリング技法は、ノンプリエンプティブタスク（または散発的タスク）の集合をマルチプロセッサシステム上においてマルチロボット環境で区分化し、スケジュールして、性能損失を最小化するとはいえ、さらに、いくつかのケースでは、メイクスパン（段落００８６〜００９７で後に論じられる）が増加しかねず、第１のフェーズにおけるように、スケジュール可能なタスクの集合は、スケジュール可能なタスクの集合がスケジュール可能な第１のロボット（最小のロボットＩＤをもつ）に割り当てられることもあり、それによって、より小さいロボットＩＤをもつロボットに過負荷をかける。
【００５１】
ある実施形態において、先に論じられた問題を克服すべく、１つ以上のハードウェアプロセッサ１０４は、ノンプリエンプティブタスクの集合のマルチプロセッサシステム上におけるマルチロボット環境でのスケジューリングを最適化するために、区分化された複数のタスクの負荷バランシングを行い、負荷バランシングは、複数のタスクに対応する１つ以上の性能損失値に基づいて行われる。従って、スケジューリング技法は、第２のフェーズの終わりに、総合的な性能損失におけるトレードオフのない区分化された複数のタスクの複数のロボットの中での負荷バランシングを容易にする。最適化の詳細な例は、以下の段落００６２〜００７２で論じられた。
【００５２】
本開示のある実施形態によれば、最初に、負荷バランシングの間に、第１および第２のフェーズがわずかに微調整される。従って、負荷バランシングは、同一の性能損失値に基づく、１つ以上のスケジュール可能なタスクおよび１つ以上のスケジュール不可能なタスクの再配置を含み、同一の性能損失値は、１つ以上のスケジュール可能なタスクおよび１つ以上のスケジュール不可能なタスクに対応し、１つ以上のスケジュール可能なタスクおよび１つ以上のスケジュール不可能なタスクは、それぞれ、スケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合に対応する。負荷バランシングの間に、第１のフェーズでは、初期タスク集合Ｔのソーティングが１つ以上の性能損失値の非昇順で行われてよい。（ソートされたリスト下のタスクからの）１つ以上のソートされたリスト・タスクは、同一の性能損失値を有してよい。
【００５３】
ある実施形態において、同一の性能損失値を有する１つ以上のソートされたリスト・タスクは、１つ以上の昇順にソートされたリスト・タスクの各々のスラック時間に基づいて、それら自体の中で再配置され、スラック時間は、（ｄｉ−ｅｉ）によって定義される。ソートされたリストは、次に、１つ以上のハードウェアプロセッサ１０４によって圧縮メカニズムへ送られてよい。さらに、第２のフェーズでは、リスト・スケジューリング技法を実装することによる
【００５４】
【数７】
2020004370.tif 000009
におけるスケジューリングとは違って、スケジューリング技法が正しいタスクを正しい時間にスケジュールする原理で機能する。
【００５５】
ある実装例において、タスクｔａおよびｔｂがｔａ、ｔｂの順序でスケジュールされ、さらに性能損失Ｐを被ると想定すると、始めにａ（ｅａ）の実行時間が短いほど、より少ない遅延ｔｂをもたらし、それによって、より低い性能損失値をもたらす、すなわち、（Ｐ∝ｅ）である。遅延されるタスクｔｂのデッドラインｄがより大きい場合には、マルチロボットプラットフォーム（例えば、ＷＰＳ）上の性能損失値がより小さい。さらに、ｔａおよびｔｂの両方に対応する同一の実行時間および同一のデッドラインに対しては、単位時間ステップ遅延当たりの性能損失ｐが大きいタスクほど、実行の順序は、より高い優先順位を有する（Ｐ∝ｐ）。
【００５６】
従って、タスクの優先度は、以下の式（５）を用いて判定されてよい。
【００５７】
【数８】
2020004370.tif 000010
【００５８】
ここで、ｔは、ロボットが新しいタスクに着手する準備ができた時間を表す。
【００５９】
ある実施形態において、負荷バランシングは、スケジューリング技法を実装することによる、最大優先度値をもつ１つ以上のスケジュール不可能なタスクの、スケジュール不可能なタスクの集合からの識別を含む。最大優先度値をもつ１つ以上のスケジュール不可能なタスクが
【００６０】
【数９】
2020004370.tif 000011
から除去されて、アイドル状態にあるか、またはより早いタスクを時間ｔで終了する第１のロボットｒｊ，１≦ｊ≦ｍに割り当てられる。このプロセスは、複数のロボットの中のいずれかのロボットに割り当てることによって、スケジュール不可能なタスクの集合のうちの各々がマルチロボット環境でスケジュールされるまで、
【００６１】
【数１０】
2020004370.tif 000012
にわたって繰り返し行われる。
【００６２】
従って、スケジューリング技法を実装することによる、提案される開示は、いくらかの時間遅延がある場合に、最小の性能損失をもたらしうる（複数のタスクの中の）いずれかのタスクの識別に役立つ。第２のフェーズの終わりに、提案される方法論は、メイクスパンを改善して複数のロボットのいずれも消耗を回避するように、複数のロボットの中でタスクの負荷をバランスさせる。先に論じられたように、アイドル状態にあるロボットは、すでにスケジュールされたタスクの非違反の可能性を確かめた際にのみ、過負荷がかかったロボットからタスクｔｉをピックアップまたは選択する。従って、提案される方法論は、マルチプロセッサシステムのマルチロボット環境において総合的な性能損失における妥協なしにメイクスパンを改善する。
【００６３】
ある実施形態において、スケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合のソーティング、区分化、スケジューリング、ならびに性能損失の最小化を伴う最適化は、以下の例を利用して説明されてよい。
【００６４】
【表１】
2020004370.tif 000013
【００６５】
上の表１を参照して、４つのタスクの集合、すなわち、プロセッサＰ１およびＰ２上にスケジュールされることになる実行時間ｅｉ、デッドラインｄｉ、性能損失ｐｉで特徴付けられるＴ＝｛ｔ１，ｔ２，ｔ３，ｔ４｝があるとしよう。
【００６６】
ケース１−ある実施形態において、４つのタスクの集合をデッドラインに基づいて昇順にソートすると、スケジューリングについて考察されてよい、順序｛ｔ１，ｔ２，ｔ３，ｔ４｝のタスクリストをもたらす。可能なスケジュールは、以下を含んでよい。
【００６７】
【表２】
2020004370.tif 000014
【００６８】
ある実施形態において、最初にタスクｔ１がＰ１上にスケジュールされる。次に、タスクｔ２は、Ｐ１上でそのデッドライン内にスケジュール可能ではないので、Ｐ２上にスケジュールされる。タスクｔ３は、いずれのプロセッサ（Ｐ１またはＰ２）上でもそのデッドライン内にスケジュール可能ではなく、それゆえに、スケジュール不可能なタスクとしてカテゴリー化される。さらに、プロセッサＰ１がタスクｔ４をその対応するデッドライン内に調整するのに十分な空きスペースを有するので、タスクｔ４は、プロセッサＰ１上にスケジュールされる。より多くのタスクがあり、それらのタスクが（それらのすべてについて必ずしも１０ではない）それらのデッドライン内にスケジュール可能な場合には、このプロセスが続く。終わりに、スケジュール不可能なタスク（このケースではタスクｔ３のみ）の集合がリスト・スケジューリングを用いてスケジュールされる。リスト・スケジューリングは、従って、ソートされたリストを先着順を用いて処理するステップを含み、ソーティング基準は、（このケースではデッドラインを用いて）変化させることができる。さらに、与えられたスケジュールを用いると、タスクｔ３は、そのデッドラインの４単位後にその実行を終了し、２×４＝８単位の性能損失を被る。タスクｔ１、ｔ２およびｔ４は、定義されたそれらのデッドライン内に完了されて、性能損失を被らない。
【００６９】
ケース２−タスクの集合４を非昇順にソートすると、順序｛ｔ２，ｔ３，ｔ１，ｔ４｝のタスクリストをもたらす。
このシナリオでは、可能なスケジュールは、以下を含んでよい。
【００７０】
【表３】
2020004370.tif 000015
【００７１】
ここで、タスクｔ１およびｔ４がデッドラインをミスし、それぞれ、性能損失３×１＝３単位および１×１＝１単位を被り、総合的なシステム性能損失は、４単位である。タスクがそれらのデッドラインによって（昇順に）ソートされるケースでは、デッドラインをミスするタスクの数は、タスクが性能損失によって（非昇順に）ソートされるケースより少ないかもしれないが、総合的な性能損失がずっとより大きい。その理由は、性能損失に基づくタスクのソーティングが、性能損失値が大きいタスクほどより高い優先度でのスケジューリングをもたらし、それによって、総合的なシステム性能損失を最小化するためである。
【００７２】
最適化のための別のシナリオ例を考え、以下の表２を参照して、プロセッサＰ１およびＰ２上にスケジュールされることになる実行時間ｅｉ、デッドラインｄｉ、性能損失ｐｉで特徴付けられた３つのタスクの集合、すなわち、Ｔ＝｛ｔ１，ｔ２，ｔ３｝があるとしよう。
【００７３】
【表４】
2020004370.tif 000016
【００７４】
ケース１−プリエンプティブスケジューリングのケースでは、可能なスケジューリングシナリオは、以下を含んでよい。
【００７５】
【表５】
2020004370.tif 000017
【００７６】
ケース２−ノンプリエンプティブスケジューリングのケースでは、可能なスケジューリングシナリオは、以下を含んでよい。
【００７７】
【表６】
2020004370.tif 000018
【００７８】
ノンプリエンプティブスケジューリングについて先に示された両方のシナリオ（ａ）および（ｂ）においては、タスクｔ１が時間単位３の後にプリエンプトされる前にそれがプロセッサＰ１上で実行し、その後、実行をプロセッサＰ２上で再開して完了まで継続するプリエンプティブスケジューリングのケースにおけるのとは違って、各々のタスクは、タスクが割り当てられたプロセッサによって完了される。プリエンプティブスケジューリングのケースでは、いずれのタスクもそれらのデッドラインをミスせず、ゼロの性能損失を被る。反対に、タスクが本質にノンプリエンプティブである場合には、タスクｔ３およびｔ１が、それぞれ、シナリオ（ａ）および（ｂ）においてデッドラインをミスする。シナリオ（ａ）では、ｔ３がそのデッドラインの３単位後にその実行を終了し、２×３＝６単位の性能損失を被る。同様に、（ｂ）では、ｔ３がそのデッドラインの３単位後に実行を完了するが、３×１＝３単位の性能損失をもたらすに過ぎない。
【００７９】
本開示のある実施形態によれば、ロバストネス、結果、技術的利点、性能損失最小化、および提案される開示の従来のシステムおよび方法との比較が次に詳細に考察されてよい。
【００８０】
データ集合−先に論じられたように、複数のタスクの各々は、すべての１≦ｉ≦ｎについてｔｉ＝（ｅｉ，ｄｉ，ｐｉ）と形式的に表されてよく、ここで、ｅｉは、実行時間であり、ｄｉは、デッドラインであり、ｐｉは、性能損失である。さらに、複数のタスクの各々の実行時間は、ＷＰＳでは、タスク位置および梱包台からの前方および後方距離と等価である。タスク位置および梱包台に対応する座標セットは、標準的な容量制約付き配送計画問題（ＣＶＲＰ：ｃａｐａｃｉｔｙ−ｃｏｎｓｔｒａｉｎｔ  ｖｅｈｉｃｌｅ  ｒｏｕｔｉｎｇ  ｐｒｏｂｌｅｍ）のデータ集合から得られた。
【００８１】
ある実施形態では、それぞれ１００個および１０００個のタスクを含む、２つの異なる集合の結果が論じられてよい。２つの集合の各々について、１つ以上の擬似ランダム・デッドラインを含む５つの異なるデータ集合が生成された。１つ以上の擬似ランダム・デッドラインを関連付けるための方策は、リアルタイムスケジューリング・ドメインでデータを生成するための標準的な手順と同一である。
【００８２】
ｄｉ＝ｅｉ，タスクのデッドラインｄｉは、対応する実行時間ｅｉと同一に設定される。このケースでは、ｍ個（すなわち、ロボットの利用可能総数）のタスクのみがデッドラインを満たし、一方では多くのタスクがデッドラインをミスすることを避けられない。稀なシナリオであるとはいえ、提案される開示の効率を際立たせると考えられる；
ｄｉ＝２ｅｉ，タスクのデッドラインｄｉは、対応する実行時間ｅｉの２倍に設定される。デッドラインをミスするタスクの数は、依然として多いかもしれないが、提案される開示の効率を際立たせると考えられる；
ｄｉ∈［ｅｉ，１０ｅｉ］，デッドラインｄｉは、ｅｉ，１０ｅｉの範囲内のランダム値に設定され、ｅｉ，１０ｅｉは、ランダムに分布する；
ｄｉ∈［５ｅｉ，１０ｅｉ］，デッドラインｄｉは、５ｅｉ，１０ｅｉの範囲内の一様分布を用いて設定される。これは、（すべてではないにしても）多くのタスクがその多くのタスクの各々に対応するデッドライン内でスケジュール可能であるシナリオを表す；および
ｄ←ｍｉｘ，タスクスケジューラがデッドラインの特定の分布を選り好みしないことを確実にするために、等しい確率をもつ前の４つすべてのデータ集合の混合を含む。
【００８３】
ある実施形態において、生成された１０個（１００個および１０００個のタスクについて各々５個）のデータ集合の各々について、１つ以上のハードウェアプロセッサ１０４は、各々が異なる性能損失をもつ３つのデータ集合を生成する。ある実施形態において、関連付けられた性能損失がタスクｔｉについてｐｉであれば、被る性能損失（値）は、式（１）を用いて計算されてよい。
【００８４】
ｐ←［１，１０］，性能損失は、一様分布を用いて１および１０の範囲内で生成された１つ以上のランダム値に設定される；
ｐ←ｓａｍｅ，性能損失は、複数のタスクの各々について１つの同一値、例えば１０に設定される；および
ｐ←ｅｘｔｒｅｍｅ［１ｏｒ１０］，性能損失は、等しい確率をもつ２つの極値のいずれか、すなわち１または１０に設定される。
【００８５】
本開示のある実施形態によれば、提案される方法論と従来のシステムおよび方法、すなわち、需要バウンド関数（ＤＢＦ）との比較が次に詳細に考察されてよい。ＤＢＦの目標がデッドラインミスの数を最小化することなので、ＤＢＦは、スケジュール可能でないタスクを破棄する。一実施形態において、ＤＢＦを拡張する際に、ＤＢＦの下では最初にスケジュール可能でなかったタスクがリスト・スケジューリング技法の下でスケジュールされて、性能損失が計算された。
【００８６】
当技術分野で知られるように、ＤＢＦは、実行時間の非昇順をソーティング基準として選択し、一方ではタスクのスケジュール可能性を順次にチェックする。タスクのスケジュール可能性を順次にチェックすると、いくつかの環境では高いスケジュール可能性をもたらすかもしれないが、すべてのタスクを完了する一方で、性能損失の最小化をもたらさないことがある。従って、ＤＢＦの代替バージョン、すなわち、需要バウンド関数（代替）またはＤＢＦ（代替）を用いると、代替バージョンは、タスクを性能損失の非昇順に基づいてソートする。
【００８７】
ある実施形態では、負荷バランシングを含めて、提案されるスケジューリング技法のＤＢＦおよびＤＢＦ（代替）との比較が行われ、この比較は、各々のタスクを完了する間に被る総合的な性能損失、デッドラインミスの数、および波のメイクスパン、すなわち、最後のタスクが実行を終了する時間に基づいて、複数のロボットの各々が並列に働くと考えて行われた。被る性能損失は、波におけるタスクの数および利用可能なロボットの数に依存する。
【００８８】
ある実施形態では、１００個のタスクによるデータ集合について、ロボット数を１０個に固定し、一方では１０００個のタスクによるデータ集合について利用可能なロボット数を１０および１４０個のロボットの間で開始して変化させ、それによって、タスクスケジューラが、リソース数の変化に伴ってどのようにロバストであるか、および性能がリソース数の増加に伴ってどのように改善するかを判定した。
【００８９】
本開示のある実施形態によれば、図３Ａ〜図３Ｃを参照すると、１００個のタスクおよび１０個のロボットについて、被る総合的な性能損失、デッドラインミスの数、および波のメイクスパンに基づいて、提案される方法論（負荷バランシング有りおよび無し）、ＤＢＦおよびＤＢＦ（代替）を実装することによって得られた結果が考察されてよい。ある実施形態では、先に論じられたように、デッドラインが５つの異なる値に設定されてよく、性能損失が１と１０との間のランダム数に設定されてよい。図３Ａ〜図３Ｃを再び参照すると、提案される方法論は、被る総合的な性能損失の観点から、従来のシステムおよび方法、すなわち、ＤＢＦおよびＤＢＦ（代替）を著しく凌ぐことに気付くであろう。
【００９０】
図３Ａ〜図３Ｃをさらに再び参照すると、提案される方法論を実装することによって、タスクがより大きいデッドラインを有するときにはタスクスケジューラが性能損失をほとんど被らないことに気付くであろう。図３Ｂを参照すると、提案される方法論は、ＤＢＦと比較して、デッドラインをミスするタスクの数を最小化し、これは、タスクがより大きいデッドラインを有するときにはタスクスケジューラが性能損失をほとんど被らないことをさらに証明することに気付くであろう。その理由は、スケジュール不可能なタスクの集合の中で最大の実行時間をもつタスクのために十分なスペースがある場合に限り、タスクがロボット上にスケジュールされてよい、従来のシステムおよび方法、例えば、ＤＢＦおよび需要バウンド関数のバリエーションを実装するＤＢＦ（代替）と比較して、提案される方法論が、スケジュール可能なタスクを最大化する間に圧縮メカニズムを実装するからである。従って、従来のシステムおよび方法は、いくつかのタスクをスケジュールされないままにするが、提案される方法論によってそれらのタスクをスケジュールすることができる。
【００９１】
先に論じられたように、提案される方法論は、最も多忙なロボットに最大数のタスクを割り当てようと試み、それによって、複数のロボットの中のいくつかのロボットをほとんど占有されない状態に保ち、結果として、占有率がわずかなこれらのロボットには第２のフェーズから（すなわち、スケジュール可能でないタスクの集合から）のタスクの少数の集合が少しの時間内に割り当てられてよい。デッドラインをミスしたタスクの早い開始が被る総合的な性能損失を低減する。しかしながら、図３Ｃを参照すると、メイクスパンにおけるスパイクが参照されるかもしれず、これは、第２フェーズの終わりに、負荷バランシングを実装することによって克服される。さらに、図３Ｃを再び参照すると、負荷バランシングを行う一方で、提案される方法論によって実装されたソーティング・メカニズムがメイクスパンのさらなる改善をもたらすことに気付くであろう。先に論じた各々の理由に起因して、提案される開示は、性能損失を最小化する。
【００９２】
図４を参照すると、提案される方法論によって行われるソーティングは、実行時間の大きいものに優先度（すなわち、非増加Ｅ）およびデッドラインの最も早いものに優先度（非増加１÷Ｄ）と比較して、性能損失を最小化するだけでなく、さらにデッドラインミスの数を最小化することに気付くであろう。
【００９３】
本開示のある実施形態によれば、提案されるスケジューリング技法のロバストネスを判定するために、１００個のタスクおよび１０個のロボットを用いて１５個すべてのデータ集合の性能が評価された。以下の表３および表４を参照すると、評価の結果が参照されてよく、Ｐは、性能損失を表し、ＤＬ−Ｍは、デッドラインミスを表し、ＭＳは、メイクスパンを表す。表３および表４を再び参照すると、表３および表４に示される性能損失値は、蓄積された実際の性能損失の１００分の１であることに気付くであろう。
【００９４】
表３および表４をさらに再び参照すると、提案される方法論は、すべてのタスクが同一の性能損失値、またはさらに極端な性能損失値を有するときでさえ、提案されるスケジューリング技法を実装することによって、性能損失およびデッドラインミスに関して、従来のシステムおよび方法、例えば、ＤＢＦを常に凌ぐことに気付くであろう。提案される方法論は、性能損失値を最小化するために、スケジューリング技法を実装することによって、メイクスパンを犠牲にする。しかしながら、負荷バランシングを実装することによって、メイクスパンの問題を克服する。
【００９５】
【表７】
2020004370.tif 000019
【００９６】
【表８】
2020004370.tif 000020
【００９７】
本開示のある実施形態によれば、提案されるスケジューリング技法のスケーラビリティを判定するために、１０００個のタスクを用いて同様に性能が評価された。図５Ａ〜図６Ｃを参照すると、提案される方法論の性能は、従来のシステムおよび方法、例えば、ＤＢＦの性能における最低限度の向上と比較して、ロボット数の増加とともに何倍も向上または改善することに気付くであろう。図５Ｂを参照すると、デッドラインミス・カウントが１１０個のロボットでゼロに達するのに対して、ＤＢＦは、依然として著しい数のデッドラインミスを被ることに気付くであろう。
【００９８】
スケジューリング技法のメイクスパンは、ＤＢＦのメイクスパンと同等であるとはいえ、ロボット数がより少ないケースでは、ＤＢＦのメイクスパンより高くなることもある。しかしながら、図５Ｃを参照すると、ロボット数が増加するにつれて、提案されるスケジューリング技法は、（特に８０個のロボットでは）メイクスパンの観点からも従来のシステムおよび方法を凌駕することに気付くであろう。図６Ａ〜図６Ｃを参照すると、マルチロボット環境においてロボットが線形に増加するケースで、提案される方法論（負荷バランシング有りおよび無し）を用い、従来のシステムおよび方法（すなわち、ＤＢＦおよびＤＢＦ（代替））も用いて行われた、デッドラインが４つの異なる分布の混合を含み、性能損失が１と１０との間に一様に分布する、１０００個のプリエンプトされないタスクの集合の比較が参照されてよい。さらに、以下の表５および表６を参照すると、異なる性能損失設定および２つの性能損失集合ｄｉ∈［ｅｉ，１０ｅｉ］およびｄ←ｍｉｘをもつ１０００個のタスクおよび８０個のロボットによるデータ集合について包括的な性能解析結果が見られてよく、ここでＰは、性能損失を表し、ＤＬ−Ｍは、デッドラインミスを表し、ＭＳは、メイクスパンを表す。
【００９９】
【表９】
2020004370.tif 000021
【０１００】
【表１０】
2020004370.tif 000022
【０１０１】
ある実施形態において、メモリ１０２は、ノンプリエンプティブタスクの集合のマルチロボット環境でのスケジューリングと関連付けられた任意のデータを記憶するように構成できる。ある実施形態において、区分化された複数のタスク、スケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合のスケジューリング、デッドライン、および性能損失などに係わる情報は、メモリ１０２に記憶される。さらに、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするステップに係わるすべての情報（入力、出力など）も、履歴データとして、参照目的で、データベースに記憶されてよい。
【０１０２】
これらの実施形態を当業者が作成して用いることを可能にするために、書面による説明が本明細書における主題を記述する。本主題の実施形態の範囲は、請求項によって既定され、当業者が想起する他の変更を含んでよい。かかる他の変更は、それらが請求項の文言と異ならない同様の要素を有し、または請求項の文言と非実質的にしか相違しない同等の要素を含むならば、請求項の範囲内にあることが意図される。
【０１０３】
本明細書における本開示の実施形態は、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールすることの、またはノンプリエンプティブタスクの集合をマルチプロセッサシステム上にスケジュールすることの未解決の問題に取り組む。本実施形態は、従って、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするためのスケジューリング技法を提供し、スケジューリング技法は、ノンプリエンプティブタスクの集合のうちの各々の区分化を提供し、最後に、スケジュール可能なタスクの集合のうちの各々の実行の可能性および予め割り当てられたタスクの集合を複数のロボットの中でスケジュールする可能性を判定した際に、区分化された複数のタスク（ノンプリエンプティブタスクの集合）の各々のスケジューリングを提供する。そのうえ、本明細書における実施形態は、プリエンプティブタスクの集合のうちの各々と関連付けられた性能損失の最小化をさらに提供し、従来のシステムおよび方法とは違って、プリエンプティブタスクの集合のうちの各々が、スケジューリング技法を実装することによって、マルチロボット環境で実行されるようにスケジュールされる。
【０１０４】
理解されるべきは、保護の範囲がかかるプログラムへ、さらに加えてメッセージをその中に有するコンピュータ可読手段へ拡張され、プログラムがサーバもしくはモバイルデバイスまたは任意の適切なプログラマブルデバイス上で作動するときに、かかるコンピュータ可読記憶手段が方法の１つ以上のステップを実装するためのプログラムコード手段を含むことである。ハードウェアデバイスは、例えば、サーバもしくはパーソナルコンピュータのような任意の種類のコンピュータ、または同様のもの、あるいはそれらの任意の組み合わせを含めて、プログラムできる任意の種類のデバイスとすることができる。デバイスは、例えば、特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ：ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）などのような、ハードウェア手段、または、ＡＳＩＣおよびＦＰＧＡ、もしくは少なくとも１つのマイクロプロセッサならびにソフトウェア・モジュールがその中にある少なくとも１つのメモリなどの、ハードウェアならびにソフトウェア手段の組み合わせであってもよい手段を含んでもよい。従って、これらの手段は、ハードウェア手段およびソフトウェア手段の両方を含むことができる。本明細書に記載される方法の実施形態をハードウェアおよびソフトウェアで実装できるであろう。デバイスはソフトウェア手段を含んでもよい。代わりに、実施形態が異なるハードウェアデバイス上に、例えば、複数のＣＰＵを用いて実装されてもよい。
【０１０５】
本明細書における実施形態は、ハードウェアおよびソフトウェア要素を含むことができる。ソフトウェアで実装される実施形態は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むが、それらには限定されない。本明細書に記載される様々なモジュールによって行われる機能は、他のモジュールまたは他のモジュールの組み合わせで実装されてもよい。この記載の適用上、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって、またはそれらと接続して用いるためのプログラムを含む、記憶する、通信する、伝搬するかまたは輸送することができる任意の装置とすることができる。
【０１０６】
例示されるステップは、示される例示的な実施形態を説明するために提示され、予想されるべきは、進行する技術開発が、特定の機能が行われる仕方を変化させるであろうということである。これらの例が本明細書では限定ではなく説明のために提示される。さらに、記載の便宜上、本明細書では機能ビルディングブロックの境界が任意に定義された。指定される機能およびそれらの関係が適切に行われる限り、代わりの境界を定義できる。（本明細書に記載されるものの等価物、拡張、変形、逸脱などを含む）選択肢は、本明細書に含まれる教示に基づいて当業者に明らかであろう。かかる選択肢は、開示される実施形態の範囲および趣旨のうちにある。さらに、単語「含む（ｃｏｍｐｒｉｓｉｎｇ）」、「有する（ｈａｖｉｎｇ）」、「含む（ｃｏｎｔａｉｎｉｎｇ）」および「含む（ｉｎｃｌｕｄｉｎｇ）」ならびに他の同様の語形は、意味が等しいことが意図され、これらの単語のいずれかに続く単数または複数の項目が単数または複数のかかる項目の網羅的なリストであることを意味せず、リストされた単数または複数の項目のみに限定されることも意味しないという点で非限定的であることが意図される。同様に留意すべきは、本明細書および添付される特許請求の範囲において、文脈が明らかに別のことを指示しない限り、単数形「１つの（ａ）」、「１つの（ａｎ）」、および「前記（ｔｈｅ）」が複数の参照を含むことである。
【０１０７】
さらに、本開示に適合する実施形態を実装するときに１つ以上のコンピュータ可読記憶媒体が利用されてよい。コンピュータ可読記憶媒体は、プロセッサによって可読な情報またはデータが記憶されてよい任意のタイプの物理メモリを指す。従って、コンピュータ可読記憶媒体は、本明細書に記載される実施形態に適合するステップまたは段階をプロセッサ（単数または複数）に行わせるための命令を含めて、１つ以上のプロセッサによる実行のための命令を記憶してよい。用語「コンピュータ可読媒体」は、有形の品目を含み、搬送波および過渡信号を除く、すなわち、非一時的であると理解されるべきである。例は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、揮発性メモリ、不揮発性メモリ、ハードドライブ、ＣＤ  ＲＯＭ、ＤＶＤ、フラッシュドライブ、ディスクおよびその他の既知の物理記憶媒体を含む。
【０１０８】
本開示および例は、例示的であるに過ぎないと見なされることが意図され、開示される実施形態の真の範囲および趣旨は、添付の特許請求の範囲によって示される。
【図１】
2020004370.tif 000023
【図２Ａ】
2020004370.tif 000024
【図２Ｂ】
2020004370.tif 000025
【図３Ａ】
2020004370.tif 000026
【図３Ｂ】
2020004370.tif 000027
【図３Ｃ】
2020004370.tif 000028
【図４】
2020004370.tif 000029
【図５Ａ】
2020004370.tif 000030
【図５Ｂ】
2020004370.tif 000031
【図５Ｃ】
2020004370.tif 000032
【図６Ａ】
2020004370.tif 000033
【図６Ｂ】
2020004370.tif 000034
【図６Ｃ】
2020004370.tif 000035
【外国語明細書】
2020004370000001.pdf