(58)【調査した分野】(Int.Cl.,DB名)
前記同一の性能損失値は、前記1つ以上のスケジュール可能なタスクおよび前記1つ以上のスケジュール不可能なタスクの各々に対応し、前記1つ以上のスケジュール可能なタスクおよび前記1つ以上のスケジュール不可能なタスクは、それぞれ、スケジュール可能なタスクの前記集合およびスケジュール不可能なタスクの前記集合に対応する、請求項2に記載の方法。
前記1つ以上のスケジュール不可能なタスクの識別の前記ステップは、スケジュール不可能なタスクの前記集合のうちの各々が前記マルチロボット環境でスケジュールされるまで、前記スケジューリング技法を実施することによって反復して行われる、請求項2に記載の方法。
前記同一の性能損失値は、前記1つ以上のスケジュール可能なタスクおよび前記1つ以上のスケジュール不可能なタスクの各々に対応し、前記1つ以上のスケジュール可能なタスクおよび前記1つ以上のスケジュール不可能なタスクは、それぞれ、スケジュール可能なタスクの前記集合およびスケジュール不可能なタスクの前記集合に対応する、請求項6に記載のシステム(100)。
前記1つ以上のハードウェアプロセッサ(104)は、スケジュール不可能なタスクの前記集合のうちの各々が前記マルチロボット環境でスケジュールされるまで、前記1つ以上のスケジュール不可能なタスクの識別の前記ステップを、前記スケジューリング技法を実施することによって反復して行うように構成された、請求項6に記載のシステム(100)。
【発明を実施するための形態】
【0012】
例示的な実施形態が添付図面を参照して記載される。図中で、参照番号の最上位桁(単数または複数)は、その参照番号が最初に現われる図を特定する。便利であればどこでも、同じかまたは同様の部分を指すために同じ参照番号が複数の図面を通じて用いられる。開示される原理の例および特徴が本明細書に記載されるが、開示される実施形態の趣旨および範囲から逸脱することなく変更、適合、および他の実施が可能である。以下の詳細な記載は、例示的に過ぎないと見なされることが意図され、真の範囲および趣旨は、添付の特許請求の範囲によって示される。
【0013】
本開示の実施形態は、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするためのシステムおよび方法を提供する。一般に、マルチロボット・タスク配分は、タスクスケジューリングまたはタスク配分を最適化するためにタスクをロボットの中で効率的に割り当てるステップを含む。例えば、対象物を顧客が発注するときにそれが配送されるようにスケジュールされる、倉庫におけるタスク配分は、対象物を保管ラックから梱包台へ引き出すステップを含む。これらのタスクは、本質的に均質であってよいとはいえ、品目の保管位置および重さに基づいて異なってもよい。一般に、タスクは、波のように扱われ、波は、数百から数千のタスクを含むことができる。これらのタスクが一旦完了されると、前の波の実行中に蓄積した、次の波が実行のために選ばれる。
【0014】
ノンプリエンプティブまたは原子タスクの集合を複数の均質かつ自律的なロボットに対してスマート環境、特にスマート倉庫環境でスケジュールする問題は、均質なマルチプロセッサシステム上のノンプリエンプティブスケジューリングまたは散発的プロセススケジューリングに極めて類似する。目標は、ノンプリエンプティブまたは原子タスクの集合のうちの各々に対応するデッドライン内にノンプリエンプティブまたは原子タスクの集合の最大数を最適にスケジュールすることである。さらに、ノンプリエンプティブまたは原子タスクの集合のうちの各々は、デッドラインと、ノンプリエンプティブタスクの集合のうちのいずれかがその対応するデッドライン内に完了されなければマルチロボットシステムが被りかねない、それに帰される性能損失とを有するので、タスクスケジューリング・システムの目標は、デッドラインミス数の削減および性能損失の最小化である。
【0015】
さらにまた、利用可能なリソース(特に、ロボット)の数が固定され、タスク流入数は、1日の特定の時間および1年のある期間中に非常に大きくなりうるので、多くのタスクは、これらの高需要期間中にそれらのデッドラインをミスすることが避けられない。例えば、スマート倉庫環境のシナリオを考慮すると、スマート倉庫環境内およびそれからの商品または対象物の移動が(商品の移動に関する)タスクのスケジューリングの観点から主要な課題を提起する。タスクの波でインポートされたすべてのタスクが限られた数のリソース(ロボット)を用いてできるだけ速やかに終了されることが要求され、その後、次の波がインポートされる。
【0016】
特にロボットまたは関連技術を実装した倉庫における、従来のシステムおよび方法は、ノンプリエンプティブまたは原子タスクの集合のうちの各々と関連付けられたデッドラインおよび性能損失を考慮せず、従って、かかるノンプリエンプティブタスクがそれらのデッドラインをミスすることを避けられない場合にはノンプリエンプティブまたは原子タスクの集合の中の多くのタスクを破棄する。しかしながら、一般に、対応するデッドラインをたとえ過ぎたとしても、スマート倉庫環境における各タスクが完了される必要がある。ノンプリエンプティブまたは原子タスクの集合を区分化するステップおよびそれらをマルチプロセッサシステム(またはマルチコアシステム)上にスケジュールするステップが主要なタスクスケジューリング問題を含む。
【0017】
さらに、従来のシステムおよび方法の大部分は、プリエンプションが許可されて、すなわち、タスクが1つのプロセッサ上でプリエンプトされてよく、その後、同じかまたはさらに別のプロセッサ上で再開されてよい解決法(単数または複数)を提供する。しかしながら、ノンプリエンプティブスケジューリング環境のケースでは、かかるタスクスケジューリング技法を実装できない。従来のシステムおよび方法のいくつかは、提案されるノンプリエンプティブスケジューリング環境のためのノンプリエンプティブスケジューリング技法を有するが、しかしながら、かかる技法をマルチプロセッサシステム上に実装することはできず、先に論じられたように、かかる技法は、性能損失およびデッドラインに関する態様を考慮しない。
【0018】
それゆえに、ノンプリエンプティブタスクの各々が対応するデッドラインまたはそれと関連付けられた性能損失を有する、ノンプリエンプティブタスクをマルチプロセッサシステム上にスケジュールするステップを提供する技術が必要である。
【0019】
次に、複数の図にわたって同様の参照文字が対応する特徴を一貫して表す、図面、より詳しくは
図1〜
図6Cを参照すると、好ましい実施形態が示され、これらの実施形態が以下の例示的なシステムおよび/または方法に照らして説明される。
【0020】
図1は、本開示のある実施形態による、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするためのシステム100の例示的なブロック図を示す。ある実施形態において、システム100は、1つ以上のプロセッサ104、通信インターフェースデバイス(単数または複数)もしくは入力/出力(I/O)インターフェース(単数または複数)106、および1つ以上のプロセッサ104に作動的に結合された1つ以上のデータ記憶デバイスまたはメモリ102を含む。ハードウェアプロセッサである1つ以上のプロセッサ104を1つ以上のマイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、中央処理装置、ステートマシン、論理回路、および/または動作命令に基づいて信号を操作する任意のデバイスとして実装できる。他の能力の中でも、プロセッサ(単数または複数)は、メモリ102に記憶されたコンピュータ可読命令をフェッチして実行するように構成される。ある実施形態では、システム100を様々なコンピューティングシステム、例えば、ラップトップコンピュータ、ノートブック、ハンドへルドデバイス、ワークステーション、メインフレームコンピュータ、サーバ、ネットワーククラウドおよび同様のものに実装できる。
【0021】
I/Oインターフェースデバイス(単数または複数)106は、様々なソフトウェアおよびハードウェアインターフェース、例えば、ウェブインターフェース、グラフィカルユーザインターフェース、および同様のものを含むことができて、有線ネットワーク、例えば、LAN、ケーブルなど、およびWLAN、セルラ、または衛星のような無線ネットワークを含めて、多種多様なネットワークN/Wおよびプロトコルタイプ内の複数の通信を容易にすることができる。ある実施形態において、I/Oインターフェースデバイス(単数または複数)は、いくつかのデバイスを互いにまたは別のサーバへ接続するための1つ以上のポートを含むことができる。
【0022】
メモリ102は、例えば、スタティックランダムアクセスメモリ(SRAM:static random access memory)およびダイナミックランダムアクセスメモリ(DRAM:dynamic random access memory)のような揮発性メモリ、および/またはリードオンリメモリ(ROM:read only memory)、消去可能プログラマブルROM、フラッシュメモリのような不揮発性メモリ、ハードディスク、光ディスク、ならびに磁気テープを含めて、当技術分野で知られた任意のコンピュータ可読媒体を含んでもよい。
【0023】
図2A〜
図2Bは、
図1を参照して、本開示のいくつかの実施形態による、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするための方法の例示的なフロー図を示す。ある実施形態において、システム100は、1つ以上のハードウェアプロセッサ104に作動的に結合されたメモリ102の1つ以上のデータ記憶デバイスを含み、1つ以上のプロセッサ104による方法のステップの実行のための命令を記憶するように構成される。次に、本開示の方法のステップが
図1に示されるシステム100の構成要素およびフロー図を参照して説明される。本開示の実施形態において、ハードウェアプロセッサ104は、命令が構成されたときに本明細書に記載される1つ以上の方法論を行う。
【0024】
本開示のある実施形態によれば、ステップ201では、1つ以上のハードウェアプロセッサ104は、複数のタスクを定義し、複数のタスクの各々が実行時間(またはタスク実行時間)、ノンプリエンプティブタスクを完了するための指定された時間間隔および時間単位当たりの性能損失関数で特徴付けられるノンプリエンプティブタスクを含む。用語「性能損失」は、本明細書では、倉庫タスクスケジューリングでよく用いられる用語である用語「ペナルティ」と同様であると理解されてよく、タスクスケジューリングは、一般に、対応する「デッドライン」および「ペナルティ」を含む。さらに、提案される方法論が倉庫システムを参照して説明されたとはいえ、倉庫システム(単数または複数)のみにそれが限定されると理解されてはならない。提案される方法論は、スケジューリングまたはタスクスケジューリングがロボットまたは関係する技術を用いて行われる、すべてのかかる環境/用途/技術もしくは関係するシナリオに実施されるか、または拡張されてよい。
【0025】
複数のタスクを定義するステップが以下の一組の仮定を考慮に入れて論じられてよい。
【0026】
一組の仮定
(i)タスクの波がマルチロボットプラットフォーム、例えば、倉庫管理システム(WMS:warehouse management system)にインポートされる;
(ii)マルチロボットプラットフォームまたはWMSではm個の均質なロボットが利用可能であり、均質なロボットは、対象物を1つずつ運び、押して良い;
(iii)各波の始めにはタスクの波の中の複数のタスクT(タスクの集合を形成する)が利用可能であり、次の波またはさらなる波は、現在の波におけるすべてのタスクの完了後にのみ、利用可能なリソースを実装することによって利用可能である;
(iv)マルチロボットプラットフォームまたはWMSは、すべての必要とされる情報、例えば、タスクID、タスク実行時間、デッドライン、波の内の複数のタスクについての性能損失(またはペナルティ)をタスクスケジューラへ通信する;
(v)顧客が複数の商品を発注する場合、ピックアップされる各商品は、個別のタスクとして取り扱われる。このシナリオでは、複数のタスクの各々が異なる実行時間を有してよい。しかし、それらのタスクは、同一のデッドラインおよび同一の性能損失値と関連付けられる;
(vi)作動時間は、複数のタスクの各々について同一であり、タスク実行時間に含まれず、従って、タスク実行時間は、ロボットについての完全走行時間のみを含む;
(vii)複数のタスクの各々は、原子的かつノンプリエンプティブである。いずれかのタスクが一旦開始されて、ロボットに割り当てられると、そのタスクが完了されなければならない;
(viii)マルチロボット環境は、複数のロボットを含み、複数のロボットの各々は、波の間にそれに割り当てられたすべてのタスクを終えるのに十分なエネルギーを有し、対応する倉庫環境(例えば、WMS)に必須の知識を有する;
(ix)実行を待つキューに入ったタスクがあれば、ロボットは、決してアイドル状態にない。
【0027】
先に論じられたように、タスクを複数のロボットに配分する技術的問題は、(図に示されない)マルチプロセッサシステム上のタスクスケジューリングへマッピングされてよい。波における複数のタスクは、m個の同一のロボットの中で区分化されることになり、性能損失を最小化するように複数のタスクが引き受けられることになる。
【0028】
本開示のある実施形態によれば、マルチロボットプラットフォームにインポートされた波の集合の中の各波の始めに複数のタスク(すなわち、タスクの集合)(T={t
1,t
2,…,t
n})が利用可能である。ある実施形態では、複数のタスクの各々がすべての1≦i≦nについてt
i=(e
i,d
i,p
i)と形式的に表されてよく、e
iは、実行時間であり、d
iは、デッドラインであり、p
iは、性能損失である。さらにm個の倉庫同一ロボットのチームR={r
1,r
2,…,r
m}がある。(複数のタスクからの)様々な処理時間のタスクが、性能損失を最小化しながら、m個の同一のロボットの中でスケジュールされることになる。先述のように、複数のタスクの中のいずれかのタスクが対応するデッドラインをミスした(または対応するデッドライン内に実行できなかった)場合には、遅れに比例した性能損失が課されてよい。
【0029】
ある実施形態において、性能損失関数は、
P(t
i)=max(0,(c
i−d
i)×p
i) 式(1)
と定義されてよく、c
iは、タスクt
iについての完了時間を表し、t
iは、複数のタスクに対応する。式(1)を参照すると、タスクがデッドライン内に実行された場合には、性能損失がないが、タスクが一旦デッドライン内に実行できない(またはデッドラインをミスする)と、性能損失は、時間に比例して増加することに気付くであろう。提案される開示は、従って、複数のタスク、すなわち、n個のタスクをm個のロボットの中で区分化するステップと、ロボットに割り当てられたタスクの部分集合を実行する命令とを提供し、T(r
j)は、ロボットr
jに割り当てられたタスクの部分集合を表し、タスクの部分集合は、複数のタスクに対応する。従って、タスクスケジューラの目的関数は、以下の式(2)によって表されてよい。
【0031】
本開示のある実施形態によれば、ステップ202では、1つ以上のハードウェアプロセッサ104は、マルチプロセッサシステム上で複数のタスクをスケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合に、スケジューリング技法によって、区分化し、スケジュール可能なタスクの集合は、所定の時間間隔内に実行されることになり最大性能損失値を有するタスクの部分集合を含み、スケジュール不可能なタスクの集合は、所定の時間間隔内に実行できず低性能損失値をもつタスクの部分集合を含む。
【0032】
スケジューリング技法
提案される開示は、ノンプリエンプティブタスク(または散発的タスク)の集合のマルチプロセッサシステム上におけるマルチロボット環境での区分化およびスケジューリングを容易にし、ノンプリエンプティブタスクの集合のうちの各々は、本明細書に開示されるスケジューリング技法を実装することによってデッドラインを有する。従って、スケジューリング技法は、さらに、様々な処理時間のタスクが複数のロボットの各々にどのように割り当てられることになるかを、かかるタスク(すなわち、様々な処理時間のタスク)の各々の実行の順序と併せて、決定するために、タスクスケジューリングの技術的問題をマルチプロセッサシステム上で定式化して解決することを容易にする。マルチロボットプラットフォームにインポートされたタスクの波が、従って、スケジューリング技法への入力としての役割を果たす。
【0033】
本開示のある実施形態によれば、スケジューリング技法は、2つのフェーズを含む。第1のフェーズでは、(1つ以上のハードウェアプロセッサ104を介して実装された)スケジューリング技法がスケジュール可能なタスクの集合の割り当てを試みる、すなわち、スケジューリング技法は、ある1つのロボットに(複数のタスクの中の)最大数のタスクを割り当て、1つ以上の高性能損失タスクが高い優先順位でスケジュールされる。第2のフェーズでは、スケジューリング技法は、第1のフェーズで蓄積されたスケジュール不可能なタスクの集合を対応する蓄積された性能損失も最小化されうるように割り当てようと試みる。デッドラインを有するノンプリエンプティブタスクまたは散発的タスクの集合をマルチプロセッサシステム上で区分化し、スケジュールするためのスケジューリング技法の実装が次に詳細に考察されてよい。
【0034】
本開示のある実施形態によれば、スケジューリング技法を実装することにより、複数のタスクがスケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合に、1つ以上のハードウェアプロセッサ104によって、最初に区分化されてよい。従って、n個のタスクの集合は、m+1個の素集合、すなわち、T(r
1),T(r
2),…,T(m),
【0035】
【数2】
に区分化または分割され、ここで、T(r
j)は、ロボットr
j上にスケジュールされてよいタスクの部分集合を表し、
【0036】
【数3】
は、スケジュール可能なタスクの集合のデッドラインに違反することなしには複数のロボットのいずれにもスケジュール可能でないタスクの部分集合である。
【0037】
ある実施形態において、区分化は、1つ以上のロボットが全速力で移動を始める前に、スケジュール可能なタスクの集合を(複数のロボットの中の)1つ以上のロボットに割り当てることを容易にする。言い換えれば、ゼロの性能損失値で達成されてよい複数のタスクの中の1つ以上のタスクがスケジュール可能なタスクの集合を実行するのに最も適した1つ以上のロボットに割り当てられる。ソーティングの例は、以下の段落0062〜0068で詳細に論じられ、そこではスケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合がプロセッサP1およびP2上に区分化される。
【0038】
本開示のある実施形態によれば、ステップ203では、1つ以上のハードウェアプロセッサ104は、区分化された複数のタスクを複数のステップを行うことによって、予め定義された順序で、スケジュールする。ステップ203(i)では、1つ以上のハードウェアプロセッサ104は、スケジューリング技法を実装することによって、区分化された複数のタスクを区分化された複数のタスクに対応する1つ以上の性能損失値の非昇順でソートする。
【0039】
区分化は、最大数のタスクを割り当てることを容易にするとはいえ、性能損失が依然として最小化されないことがある。ある実施形態において、スケジューリング技法は、区分化された複数のタスクを1つ以上の性能損失値の非昇順でこのように初めにソートし、ソーティングに基づいて、区分化された複数のタスクを圧縮メカニズム(ロボットの中でのタスクスケジューリングのために実装された既知の技法)を用いてスケジュールすることを考慮する。性能損失最小化の例は、以下の段落0062〜0097で詳細に論じられた。さらに、上述のように、ソーティングの例は、以下の段落0062〜0068で詳細に論じられた。
【0040】
本開示のある実施形態によれば、ステップ203(ii)では、1つ以上のハードウェアプロセッサ104は、圧縮メカニズムを実装することにより、スケジュール可能なタスクの集合のうちの少なくとも1つをマルチロボット環境で動作している複数のロボットの中の各ロボットに割り当てることによってスケジュール可能なタスクの集合をマルチロボット環境でスケジュールする。スケジュールするステップが次に詳細に考察されてよい。ある実施形態において、ステップ203(ii)(a)では、1つ以上のハードウェアプロセッサ104は、スケジュール可能なタスクの集合のうちの各々のマルチロボット環境での実行の可能性を、スケジューリング技法によって、判定する。従って、タスクt
lを(m個のロボットの中の)ロボットr
k上にスケジュールできるかどうかをチェックするために、両方の式(3)および(4)(以下に論じられる)が満たされるべきである。
【0042】
ここで、式(3)は、ロボットr
k上にスケジュールされてt
lより小さいデッドラインを有するすべてのタスクを実行した後にタスクt
lを実行するのに十分なスペースをもたらすのを助ける。
【0043】
ある実施形態において、ステップ203(ii)(b)では、1つ以上のハードウェアプロセッサ104は、予め割り当てられたタスクの集合を複数のロボットの中でスケジュールする可能性を、スケジューリング技法によって、判定し、予め割り当てられたタスクの集合は、スケジュール可能なタスクの集合以外の1つ以上のタスクおよびスケジュール不可能なタスクの集合を含む。従って、式(4)は、t
lもスケジュールされる場合には、ロボットr
k上にスケジュールされ、t
lより大きいデッドラインを有するすべてのタスク(すなわち、予め割り当てられたタスクの集合)がやはりスケジュールされうることを容易にする。
【0044】
ある実施形態において、スケジュール可能なタスクの集合をスケジュールするステップは、スケジュール可能なタスクの集合のうちの各々をスケジュールする最小の可能性および/または予め割り当てられたタスクの集合をスケジュールする最小の可能性のいずれかを判定した際に、スケジュール可能なタスクの集合の中の1つ以上のスケジュール可能なタスクをスケジュール不可能なタスクとして、スケジューリング技法によって、カテゴリー化するステップを含む。従って、いずれの判定基準にも不合格な場合、すなわち、複数のロボットの各々について式(3)または式(4)がいずれも満たされない場合には、t
lが
【0046】
【数6】
は、スケジュール可能なタスクの集合のデッドラインに違反することなしには複数のロボットのいずれにもスケジュール可能でないタスクの部分集合である。
【0047】
本開示のある実施形態によれば、ステップ203(ii)(c)では、1つ以上のハードウェアプロセッサ104は、スケジュール可能なタスクの集合のうちの各々をスケジュールする可能性および予め割り当てられたタスクの集合をマルチロボット環境でスケジュールする可能性を判定した際に、スケジュール可能なタスクの集合をマルチロボット環境で(マルチプロセッサシステム上に)スケジュールする。
【0048】
本開示のある実施形態によれば、ステップ203(iii)では、1つ以上のハードウェアプロセッサ104は、スケジュール不可能なタスクの集合を複数のロボットの中で、リスト・スケジューリング技法によって、スケジュールし、スケジューリングは、マルチプロセッサシステム上で行われる。ある実施形態において、n個のタスク(すなわち、n個の独立したタスク)の集合とシーケンスに依存する時間設定のm個のロボットとを所与として、複数のジョブの中のある1つのジョブの実行時間に等しい、非負時間中に複数のジョブをm個のロボットの中の1つだけのロボット上でプリエンプションなしに処理するために、リスト・スケジューリング技法が実装されてよい。
【0049】
ある実施形態において、複数のロボットのいずれかが次のタスクを実行するために利用可能になるとすぐに、利用可能なロボットがキューの先頭にあるタスクを選んでよい。m個のロボットの各々が同一なので、m個のロボットの各々は、特定のタスクを実行するために同じ時間を要する。それゆえに、1つより多いロボットがキューの先頭にあるタスクを選ぶために利用可能なケースでは、より低いロボットIDをもつロボットがタスクに割り当てられてよい。複数のタスクの各々が完了するまでm個のロボットのいずれもアイドル状態のままではない。
【0050】
スケジューリング技法は、ノンプリエンプティブタスク(または散発的タスク)の集合をマルチプロセッサシステム上においてマルチロボット環境で区分化し、スケジュールして、性能損失を最小化するとはいえ、さらに、いくつかのケースでは、メイクスパン(段落0086〜0097で後に論じられる)が増加しかねず、第1のフェーズにおけるように、スケジュール可能なタスクの集合は、スケジュール可能なタスクの集合がスケジュール可能な第1のロボット(最小のロボットIDをもつ)に割り当てられることもあり、それによって、より小さいロボットIDをもつロボットに過負荷をかける。
【0051】
ある実施形態において、先に論じられた問題を克服すべく、1つ以上のハードウェアプロセッサ104は、ノンプリエンプティブタスクの集合のマルチプロセッサシステム上におけるマルチロボット環境でのスケジューリングを最適化するために、区分化された複数のタスクの負荷バランシングを行い、負荷バランシングは、複数のタスクに対応する1つ以上の性能損失値に基づいて行われる。従って、スケジューリング技法は、第2のフェーズの終わりに、総合的な性能損失におけるトレードオフのない区分化された複数のタスクの複数のロボットの中での負荷バランシングを容易にする。最適化の詳細な例は、以下の段落0062〜0072で論じられた。
【0052】
本開示のある実施形態によれば、最初に、負荷バランシングの間に、第1および第2のフェーズがわずかに微調整される。従って、負荷バランシングは、同一の性能損失値に基づく、1つ以上のスケジュール可能なタスクおよび1つ以上のスケジュール不可能なタスクの再配置を含み、同一の性能損失値は、1つ以上のスケジュール可能なタスクおよび1つ以上のスケジュール不可能なタスクに対応し、1つ以上のスケジュール可能なタスクおよび1つ以上のスケジュール不可能なタスクは、それぞれ、スケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合に対応する。負荷バランシングの間に、第1のフェーズでは、初期タスク集合Tのソーティングが1つ以上の性能損失値の非昇順で行われてよい。(ソートされたリスト下のタスクからの)1つ以上のソートされたリスト・タスクは、同一の性能損失値を有してよい。
【0053】
ある実施形態において、同一の性能損失値を有する1つ以上のソートされたリスト・タスクは、1つ以上の昇順にソートされたリスト・タスクの各々のスラック時間に基づいて、それら自体の中で再配置され、スラック時間は、(d
i−e
i)によって定義される。ソートされたリストは、次に、1つ以上のハードウェアプロセッサ104によって圧縮メカニズムへ送られてよい。さらに、第2のフェーズでは、リスト・スケジューリング技法を実装することによる
【0054】
【数7】
におけるスケジューリングとは違って、スケジューリング技法が正しいタスクを正しい時間にスケジュールする原理で機能する。
【0055】
ある実装例において、タスクt
aおよびt
bがt
a、t
bの順序でスケジュールされ、さらに性能損失Pを被ると想定すると、始めにa(e
a)の実行時間が短いほど、より少ない遅延t
bをもたらし、それによって、より低い性能損失値をもたらす、すなわち、(P∝e)である。遅延されるタスクt
bのデッドラインdがより大きい場合には、マルチロボットプラットフォーム(例えば、WPS)上の性能損失値がより小さい。さらに、t
aおよびt
bの両方に対応する同一の実行時間および同一のデッドラインに対しては、単位時間ステップ遅延当たりの性能損失pが大きいタスクほど、実行の順序は、より高い優先順位を有する(P∝p)。
【0056】
従って、タスクの優先度は、以下の式(5)を用いて判定されてよい。
【0058】
ここで、tは、ロボットが新しいタスクに着手する準備ができた時間を表す。
【0059】
ある実施形態において、負荷バランシングは、スケジューリング技法を実装することによる、最大優先度値をもつ1つ以上のスケジュール不可能なタスクの、スケジュール不可能なタスクの集合からの識別を含む。最大優先度値をもつ1つ以上のスケジュール不可能なタスクが
【0060】
【数9】
から除去されて、アイドル状態にあるか、またはより早いタスクを時間tで終了する第1のロボットr
j,1≦j≦mに割り当てられる。このプロセスは、複数のロボットの中のいずれかのロボットに割り当てることによって、スケジュール不可能なタスクの集合のうちの各々がマルチロボット環境でスケジュールされるまで、
【0061】
【数10】
にわたって繰り返し行われる。
【0062】
従って、スケジューリング技法を実装することによる、提案される開示は、いくらかの時間遅延がある場合に、最小の性能損失をもたらしうる(複数のタスクの中の)いずれかのタスクの識別に役立つ。第2のフェーズの終わりに、提案される方法論は、メイクスパンを改善して複数のロボットのいずれも消耗を回避するように、複数のロボットの中でタスクの負荷をバランスさせる。先に論じられたように、アイドル状態にあるロボットは、すでにスケジュールされたタスクの非違反の可能性を確かめた際にのみ、過負荷がかかったロボットからタスクt
iをピックアップまたは選択する。従って、提案される方法論は、マルチプロセッサシステムのマルチロボット環境において総合的な性能損失における妥協なしにメイクスパンを改善する。
【0063】
ある実施形態において、スケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合のソーティング、区分化、スケジューリング、ならびに性能損失の最小化を伴う最適化は、以下の例を利用して説明されてよい。
【0065】
上の表1を参照して、4つのタスクの集合、すなわち、プロセッサP1およびP2上にスケジュールされることになる実行時間e
i、デッドラインd
i、性能損失p
iで特徴付けられるT={t1,t2,t3,t4}があるとしよう。
【0066】
ケース1−ある実施形態において、4つのタスクの集合をデッドラインに基づいて昇順にソートすると、スケジューリングについて考察されてよい、順序{t1,t2,t3,t4}のタスクリストをもたらす。可能なスケジュールは、以下を含んでよい。
【0068】
ある実施形態において、最初にタスクt
1がP1上にスケジュールされる。次に、タスクt2は、P1上でそのデッドライン内にスケジュール可能ではないので、P2上にスケジュールされる。タスクt
3は、いずれのプロセッサ(P1またはP2)上でもそのデッドライン内にスケジュール可能ではなく、それゆえに、スケジュール不可能なタスクとしてカテゴリー化される。さらに、プロセッサP1がタスクt4をその対応するデッドライン内に調整するのに十分な空きスペースを有するので、タスクt4は、プロセッサP1上にスケジュールされる。より多くのタスクがあり、それらのタスクが(それらのすべてについて必ずしも10ではない)それらのデッドライン内にスケジュール可能な場合には、このプロセスが続く。終わりに、スケジュール不可能なタスク(このケースではタスクt3のみ)の集合がリスト・スケジューリングを用いてスケジュールされる。リスト・スケジューリングは、従って、ソートされたリストを先着順を用いて処理するステップを含み、ソーティング基準は、(このケースではデッドラインを用いて)変化させることができる。さらに、与えられたスケジュールを用いると、タスクt3は、そのデッドラインの4単位後にその実行を終了し、2×4=8単位の性能損失を被る。タスクt1、t2およびt4は、定義されたそれらのデッドライン内に完了されて、性能損失を被らない。
【0069】
ケース2−タスクの集合4を非昇順にソートすると、順序{t2,t3,t1,t4}のタスクリストをもたらす。
このシナリオでは、可能なスケジュールは、以下を含んでよい。
【0071】
ここで、タスクt1およびt4がデッドラインをミスし、それぞれ、性能損失3×1=3単位および1×1=1単位を被り、総合的なシステム性能損失は、4単位である。タスクがそれらのデッドラインによって(昇順に)ソートされるケースでは、デッドラインをミスするタスクの数は、タスクが性能損失によって(非昇順に)ソートされるケースより少ないかもしれないが、総合的な性能損失がずっとより大きい。その理由は、性能損失に基づくタスクのソーティングが、性能損失値が大きいタスクほどより高い優先度でのスケジューリングをもたらし、それによって、総合的なシステム性能損失を最小化するためである。
【0072】
最適化のための別のシナリオ例を考え、以下の表2を参照して、プロセッサP1およびP2上にスケジュールされることになる実行時間e
i、デッドラインd
i、性能損失p
iで特徴付けられた3つのタスクの集合、すなわち、T={t1,t2,t3}があるとしよう。
【0074】
ケース1−プリエンプティブスケジューリングのケースでは、可能なスケジューリングシナリオは、以下を含んでよい。
【0076】
ケース2−ノンプリエンプティブスケジューリングのケースでは、可能なスケジューリングシナリオは、以下を含んでよい。
【0078】
ノンプリエンプティブスケジューリングについて先に示された両方のシナリオ(a)および(b)においては、タスクt1が時間単位3の後にプリエンプトされる前にそれがプロセッサP1上で実行し、その後、実行をプロセッサP2上で再開して完了まで継続するプリエンプティブスケジューリングのケースにおけるのとは違って、各々のタスクは、タスクが割り当てられたプロセッサによって完了される。プリエンプティブスケジューリングのケースでは、いずれのタスクもそれらのデッドラインをミスせず、ゼロの性能損失を被る。反対に、タスクが本質にノンプリエンプティブである場合には、タスクt3およびt1が、それぞれ、シナリオ(a)および(b)においてデッドラインをミスする。シナリオ(a)では、t3がそのデッドラインの3単位後にその実行を終了し、2×3=6単位の性能損失を被る。同様に、(b)では、t3がそのデッドラインの3単位後に実行を完了するが、3×1=3単位の性能損失をもたらすに過ぎない。
【0079】
本開示のある実施形態によれば、ロバストネス、結果、技術的利点、性能損失最小化、および提案される開示の従来のシステムおよび方法との比較が次に詳細に考察されてよい。
【0080】
データ集合−先に論じられたように、複数のタスクの各々は、すべての1≦i≦nについてt
i=(e
i,d
i,p
i)と形式的に表されてよく、ここで、e
iは、実行時間であり、diは、デッドラインであり、p
iは、性能損失である。さらに、複数のタスクの各々の実行時間は、WPSでは、タスク位置および梱包台からの前方および後方距離と等価である。タスク位置および梱包台に対応する座標セットは、標準的な容量制約付き配送計画問題(CVRP:capacity−constraint vehicle routing problem)のデータ集合から得られた。
【0081】
ある実施形態では、それぞれ100個および1000個のタスクを含む、2つの異なる集合の結果が論じられてよい。2つの集合の各々について、1つ以上の擬似ランダム・デッドラインを含む5つの異なるデータ集合が生成された。1つ以上の擬似ランダム・デッドラインを関連付けるための方策は、リアルタイムスケジューリング・ドメインでデータを生成するための標準的な手順と同一である。
【0082】
d
i=e
i,タスクのデッドラインd
iは、対応する実行時間e
iと同一に設定される。このケースでは、m個(すなわち、ロボットの利用可能総数)のタスクのみがデッドラインを満たし、一方では多くのタスクがデッドラインをミスすることを避けられない。稀なシナリオであるとはいえ、提案される開示の効率を際立たせると考えられる;
d
i=2e
i,タスクのデッドラインd
iは、対応する実行時間e
iの2倍に設定される。デッドラインをミスするタスクの数は、依然として多いかもしれないが、提案される開示の効率を際立たせると考えられる;
d
i∈[e
i,10e
i],デッドラインd
iは、e
i,10e
iの範囲内のランダム値に設定され、e
i,10e
iは、ランダムに分布する;
d
i∈[5e
i,10e
i],デッドラインd
iは、5e
i,10e
iの範囲内の一様分布を用いて設定される。これは、(すべてではないにしても)多くのタスクがその多くのタスクの各々に対応するデッドライン内でスケジュール可能であるシナリオを表す;および
d←mix,タスクスケジューラがデッドラインの特定の分布を選り好みしないことを確実にするために、等しい確率をもつ前の4つすべてのデータ集合の混合を含む。
【0083】
ある実施形態において、生成された10個(100個および1000個のタスクについて各々5個)のデータ集合の各々について、1つ以上のハードウェアプロセッサ104は、各々が異なる性能損失をもつ3つのデータ集合を生成する。ある実施形態において、関連付けられた性能損失がタスクt
iについてp
iであれば、被る性能損失(値)は、式(1)を用いて計算されてよい。
【0084】
p←[1,10],性能損失は、一様分布を用いて1および10の範囲内で生成された1つ以上のランダム値に設定される;
p←same,性能損失は、複数のタスクの各々について1つの同一値、例えば10に設定される;および
p←extreme[1or10],性能損失は、等しい確率をもつ2つの極値のいずれか、すなわち1または10に設定される。
【0085】
本開示のある実施形態によれば、提案される方法論と従来のシステムおよび方法、すなわち、需要バウンド関数(DBF)との比較が次に詳細に考察されてよい。DBFの目標がデッドラインミスの数を最小化することなので、DBFは、スケジュール可能でないタスクを破棄する。一実施形態において、DBFを拡張する際に、DBFの下では最初にスケジュール可能でなかったタスクがリスト・スケジューリング技法の下でスケジュールされて、性能損失が計算された。
【0086】
当技術分野で知られるように、DBFは、実行時間の非昇順をソーティング基準として選択し、一方ではタスクのスケジュール可能性を順次にチェックする。タスクのスケジュール可能性を順次にチェックすると、いくつかの環境では高いスケジュール可能性をもたらすかもしれないが、すべてのタスクを完了する一方で、性能損失の最小化をもたらさないことがある。従って、DBFの代替バージョン、すなわち、需要バウンド関数(代替)またはDBF(代替)を用いると、代替バージョンは、タスクを性能損失の非昇順に基づいてソートする。
【0087】
ある実施形態では、負荷バランシングを含めて、提案されるスケジューリング技法のDBFおよびDBF(代替)との比較が行われ、この比較は、各々のタスクを完了する間に被る総合的な性能損失、デッドラインミスの数、および波のメイクスパン、すなわち、最後のタスクが実行を終了する時間に基づいて、複数のロボットの各々が並列に働くと考えて行われた。被る性能損失は、波におけるタスクの数および利用可能なロボットの数に依存する。
【0088】
ある実施形態では、100個のタスクによるデータ集合について、ロボット数を10個に固定し、一方では1000個のタスクによるデータ集合について利用可能なロボット数を10および140個のロボットの間で開始して変化させ、それによって、タスクスケジューラが、リソース数の変化に伴ってどのようにロバストであるか、および性能がリソース数の増加に伴ってどのように改善するかを判定した。
【0089】
本開示のある実施形態によれば、
図3A〜
図3Cを参照すると、100個のタスクおよび10個のロボットについて、被る総合的な性能損失、デッドラインミスの数、および波のメイクスパンに基づいて、提案される方法論(負荷バランシング有りおよび無し)、DBFおよびDBF(代替)を実装することによって得られた結果が考察されてよい。ある実施形態では、先に論じられたように、デッドラインが5つの異なる値に設定されてよく、性能損失が1と10との間のランダム数に設定されてよい。
図3A〜
図3Cを再び参照すると、提案される方法論は、被る総合的な性能損失の観点から、従来のシステムおよび方法、すなわち、DBFおよびDBF(代替)を著しく凌ぐことに気付くであろう。
【0090】
図3A〜
図3Cをさらに再び参照すると、提案される方法論を実装することによって、タスクがより大きいデッドラインを有するときにはタスクスケジューラが性能損失をほとんど被らないことに気付くであろう。
図3Bを参照すると、提案される方法論は、DBFと比較して、デッドラインをミスするタスクの数を最小化し、これは、タスクがより大きいデッドラインを有するときにはタスクスケジューラが性能損失をほとんど被らないことをさらに証明することに気付くであろう。その理由は、スケジュール不可能なタスクの集合の中で最大の実行時間をもつタスクのために十分なスペースがある場合に限り、タスクがロボット上にスケジュールされてよい、従来のシステムおよび方法、例えば、DBFおよび需要バウンド関数のバリエーションを実装するDBF(代替)と比較して、提案される方法論が、スケジュール可能なタスクを最大化する間に圧縮メカニズムを実装するからである。従って、従来のシステムおよび方法は、いくつかのタスクをスケジュールされないままにするが、提案される方法論によってそれらのタスクをスケジュールすることができる。
【0091】
先に論じられたように、提案される方法論は、最も多忙なロボットに最大数のタスクを割り当てようと試み、それによって、複数のロボットの中のいくつかのロボットをほとんど占有されない状態に保ち、結果として、占有率がわずかなこれらのロボットには第2のフェーズから(すなわち、スケジュール可能でないタスクの集合から)のタスクの少数の集合が少しの時間内に割り当てられてよい。デッドラインをミスしたタスクの早い開始が被る総合的な性能損失を低減する。しかしながら、
図3Cを参照すると、メイクスパンにおけるスパイクが参照されるかもしれず、これは、第2フェーズの終わりに、負荷バランシングを実装することによって克服される。さらに、
図3Cを再び参照すると、負荷バランシングを行う一方で、提案される方法論によって実装されたソーティング・メカニズムがメイクスパンのさらなる改善をもたらすことに気付くであろう。先に論じた各々の理由に起因して、提案される開示は、性能損失を最小化する。
【0092】
図4を参照すると、提案される方法論によって行われるソーティングは、実行時間の大きいものに優先度(すなわち、非増加E)およびデッドラインの最も早いものに優先度(非増加1÷D)と比較して、性能損失を最小化するだけでなく、さらにデッドラインミスの数を最小化することに気付くであろう。
【0093】
本開示のある実施形態によれば、提案されるスケジューリング技法のロバストネスを判定するために、100個のタスクおよび10個のロボットを用いて15個すべてのデータ集合の性能が評価された。以下の表3および表4を参照すると、評価の結果が参照されてよく、Pは、性能損失を表し、DL−Mは、デッドラインミスを表し、MSは、メイクスパンを表す。表3および表4を再び参照すると、表3および表4に示される性能損失値は、蓄積された実際の性能損失の100分の1であることに気付くであろう。
【0094】
表3および表4をさらに再び参照すると、提案される方法論は、すべてのタスクが同一の性能損失値、またはさらに極端な性能損失値を有するときでさえ、提案されるスケジューリング技法を実装することによって、性能損失およびデッドラインミスに関して、従来のシステムおよび方法、例えば、DBFを常に凌ぐことに気付くであろう。提案される方法論は、性能損失値を最小化するために、スケジューリング技法を実装することによって、メイクスパンを犠牲にする。しかしながら、負荷バランシングを実装することによって、メイクスパンの問題を克服する。
【0097】
本開示のある実施形態によれば、提案されるスケジューリング技法のスケーラビリティを判定するために、1000個のタスクを用いて同様に性能が評価された。
図5A〜
図6Cを参照すると、提案される方法論の性能は、従来のシステムおよび方法、例えば、DBFの性能における最低限度の向上と比較して、ロボット数の増加とともに何倍も向上または改善することに気付くであろう。
図5Bを参照すると、デッドラインミス・カウントが110個のロボットでゼロに達するのに対して、DBFは、依然として著しい数のデッドラインミスを被ることに気付くであろう。
【0098】
スケジューリング技法のメイクスパンは、DBFのメイクスパンと同等であるとはいえ、ロボット数がより少ないケースでは、DBFのメイクスパンより高くなることもある。しかしながら、
図5Cを参照すると、ロボット数が増加するにつれて、提案されるスケジューリング技法は、(特に80個のロボットでは)メイクスパンの観点からも従来のシステムおよび方法を凌駕することに気付くであろう。
図6A〜
図6Cを参照すると、マルチロボット環境においてロボットが線形に増加するケースで、提案される方法論(負荷バランシング有りおよび無し)を用い、従来のシステムおよび方法(すなわち、DBFおよびDBF(代替))も用いて行われた、デッドラインが4つの異なる分布の混合を含み、性能損失が1と10との間に一様に分布する、1000個のプリエンプトされないタスクの集合の比較が参照されてよい。さらに、以下の表5および表6を参照すると、異なる性能損失設定および2つの性能損失集合d
i∈[e
i,10e
i]およびd←mixをもつ1000個のタスクおよび80個のロボットによるデータ集合について包括的な性能解析結果が見られてよく、ここでPは、性能損失を表し、DL−Mは、デッドラインミスを表し、MSは、メイクスパンを表す。
【0101】
ある実施形態において、メモリ102は、ノンプリエンプティブタスクの集合のマルチロボット環境でのスケジューリングと関連付けられた任意のデータを記憶するように構成できる。ある実施形態において、区分化された複数のタスク、スケジュール可能なタスクの集合およびスケジュール不可能なタスクの集合のスケジューリング、デッドライン、および性能損失などに係わる情報は、メモリ102に記憶される。さらに、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするステップに係わるすべての情報(入力、出力など)も、履歴データとして、参照目的で、データベースに記憶されてよい。
【0102】
これらの実施形態を当業者が作成して用いることを可能にするために、書面による説明が本明細書における主題を記述する。本主題の実施形態の範囲は、請求項によって既定され、当業者が想起する他の変更を含んでよい。かかる他の変更は、それらが請求項の文言と異ならない同様の要素を有し、または請求項の文言と非実質的にしか相違しない同等の要素を含むならば、請求項の範囲内にあることが意図される。
【0103】
本明細書における本開示の実施形態は、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールすることの、またはノンプリエンプティブタスクの集合をマルチプロセッサシステム上にスケジュールすることの未解決の問題に取り組む。本実施形態は、従って、ノンプリエンプティブタスクの集合をマルチロボット環境でスケジュールするためのスケジューリング技法を提供し、スケジューリング技法は、ノンプリエンプティブタスクの集合のうちの各々の区分化を提供し、最後に、スケジュール可能なタスクの集合のうちの各々の実行の可能性および予め割り当てられたタスクの集合を複数のロボットの中でスケジュールする可能性を判定した際に、区分化された複数のタスク(ノンプリエンプティブタスクの集合)の各々のスケジューリングを提供する。そのうえ、本明細書における実施形態は、プリエンプティブタスクの集合のうちの各々と関連付けられた性能損失の最小化をさらに提供し、従来のシステムおよび方法とは違って、プリエンプティブタスクの集合のうちの各々が、スケジューリング技法を実装することによって、マルチロボット環境で実行されるようにスケジュールされる。
【0104】
理解されるべきは、保護の範囲がかかるプログラムへ、さらに加えてメッセージをその中に有するコンピュータ可読手段へ拡張され、プログラムがサーバもしくはモバイルデバイスまたは任意の適切なプログラマブルデバイス上で作動するときに、かかるコンピュータ可読記憶手段が方法の1つ以上のステップを実装するためのプログラムコード手段を含むことである。ハードウェアデバイスは、例えば、サーバもしくはパーソナルコンピュータのような任意の種類のコンピュータ、または同様のもの、あるいはそれらの任意の組み合わせを含めて、プログラムできる任意の種類のデバイスとすることができる。デバイスは、例えば、特定用途向け集積回路(ASIC:application−specific integrated circuit)、フィールドプログラマブルゲートアレイ(FPGA:field−programmable gate array)などのような、ハードウェア手段、または、ASICおよびFPGA、もしくは少なくとも1つのマイクロプロセッサならびにソフトウェア・モジュールがその中にある少なくとも1つのメモリなどの、ハードウェアならびにソフトウェア手段の組み合わせであってもよい手段を含んでもよい。従って、これらの手段は、ハードウェア手段およびソフトウェア手段の両方を含むことができる。本明細書に記載される方法の実施形態をハードウェアおよびソフトウェアで実装できるであろう。デバイスはソフトウェア手段を含んでもよい。代わりに、実施形態が異なるハードウェアデバイス上に、例えば、複数のCPUを用いて実装されてもよい。
【0105】
本明細書における実施形態は、ハードウェアおよびソフトウェア要素を含むことができる。ソフトウェアで実装される実施形態は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むが、それらには限定されない。本明細書に記載される様々なモジュールによって行われる機能は、他のモジュールまたは他のモジュールの組み合わせで実装されてもよい。この記載の適用上、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって、またはそれらと接続して用いるためのプログラムを含む、記憶する、通信する、伝搬するかまたは輸送することができる任意の装置とすることができる。
【0106】
例示されるステップは、示される例示的な実施形態を説明するために提示され、予想されるべきは、進行する技術開発が、特定の機能が行われる仕方を変化させるであろうということである。これらの例が本明細書では限定ではなく説明のために提示される。さらに、記載の便宜上、本明細書では機能ビルディングブロックの境界が任意に定義された。指定される機能およびそれらの関係が適切に行われる限り、代わりの境界を定義できる。(本明細書に記載されるものの等価物、拡張、変形、逸脱などを含む)選択肢は、本明細書に含まれる教示に基づいて当業者に明らかであろう。かかる選択肢は、開示される実施形態の範囲および趣旨のうちにある。さらに、単語「含む(comprising)」、「有する(having)」、「含む(containing)」および「含む(including)」ならびに他の同様の語形は、意味が等しいことが意図され、これらの単語のいずれかに続く単数または複数の項目が単数または複数のかかる項目の網羅的なリストであることを意味せず、リストされた単数または複数の項目のみに限定されることも意味しないという点で非限定的であることが意図される。同様に留意すべきは、本明細書および添付される特許請求の範囲において、文脈が明らかに別のことを指示しない限り、単数形「1つの(a)」、「1つの(an)」、および「前記(the)」が複数の参照を含むことである。
【0107】
さらに、本開示に適合する実施形態を実装するときに1つ以上のコンピュータ可読記憶媒体が利用されてよい。コンピュータ可読記憶媒体は、プロセッサによって可読な情報またはデータが記憶されてよい任意のタイプの物理メモリを指す。従って、コンピュータ可読記憶媒体は、本明細書に記載される実施形態に適合するステップまたは段階をプロセッサ(単数または複数)に行わせるための命令を含めて、1つ以上のプロセッサによる実行のための命令を記憶してよい。用語「コンピュータ可読媒体」は、有形の品目を含み、搬送波および過渡信号を除く、すなわち、非一時的であると理解されるべきである。例は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、揮発性メモリ、不揮発性メモリ、ハードドライブ、CD ROM、DVD、フラッシュドライブ、ディスクおよびその他の既知の物理記憶媒体を含む。
【0108】
本開示および例は、例示的であるに過ぎないと見なされることが意図され、開示される実施形態の真の範囲および趣旨は、添付の特許請求の範囲によって示される。