(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023132559
(43)【公開日】2023-09-22
(54)【発明の名称】制御システム、制御方法及びプログラム
(51)【国際特許分類】
G06F 9/50 20060101AFI20230914BHJP
【FI】
G06F9/50 150C
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022037944
(22)【出願日】2022-03-11
【新規性喪失の例外の表示】特許法第30条第2項適用申請有り 令和4年3月9日 ウェブサイトの予稿集にて公開 https://drops.dagstuhl.de/opus/frontdoor.php?source_opus=15842 https://drops.dagstuhl.de/opus/volltexte/2022/15842/pdf/LIPIcs-STACS-2022-32.pdf
(71)【出願人】
【識別番号】504132272
【氏名又は名称】国立大学法人京都大学
(71)【出願人】
【識別番号】304021417
【氏名又は名称】国立大学法人東京工業大学
(71)【出願人】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】牧野 和久
(72)【発明者】
【氏名】河村 彰星
(72)【発明者】
【氏名】河瀬 康志
(72)【発明者】
【氏名】河瀬(澄田) 範奈
(72)【発明者】
【氏名】郷古 浩道
(57)【要約】
【課題】タスク全体の処理を効率的に実行することを可能とする制御システムを提供する。
【解決手段】タスク割り当て部120は、空間に分布する複数のタスクを、それぞれ1つ以上のタスクを含む複数のグループに分割して、複数のグループそれぞれを、空間上で状態を変化させることが可能な複数のオブジェクトそれぞれに割り当てる。タスク処理実行部130は、複数の前記オブジェクトそれぞれに対して、割り当てられたグループのタスクを処理させるように制御を行う。再割り当て部150は、タスクの処理状況が予め定められた条件を満たす場合に、割り当てられたグループの全てのタスクの処理を完了したオブジェクトに対して、他のグループにおける処理が終了していないタスクを割り当てる。
【選択図】
図3
【特許請求の範囲】
【請求項1】
空間に分布する複数のタスクを、それぞれ1つ以上のタスクを含む複数のグループに分割して、前記複数のグループそれぞれを、前記空間上で状態を変化させることが可能な複数のオブジェクトそれぞれに割り当てるタスク割り当て部と、
複数の前記オブジェクトそれぞれに対して、割り当てられた前記グループの前記タスクを処理させるように制御を行うタスク処理実行部と、
タスクの処理状況が予め定められた条件を満たす場合に、割り当てられたグループの全てのタスクの処理を完了した前記オブジェクトに対して、他のグループにおける処理が終了していないタスクを割り当てる再割り当て部と、
を有する制御システム。
【請求項2】
前記タスク割り当て部は、前記オブジェクトが前記タスクの処理を開始する前に、前記複数のタスクを複数のグループに分割して前記複数のグループそれぞれを前記複数のオブジェクトそれぞれに割り当てる処理を行う、
請求項1に記載の制御システム。
【請求項3】
前記再割り当て部は、割り当てられたグループの全てのタスクの処理を完了した前記オブジェクトの数が所定数以上の場合に、他のグループにおける処理が終了していないタスクを割り当てる、
請求項1又は2に記載の制御システム。
【請求項4】
前記タスク処理実行部は、割り当てられたグループの全てのタスクの処理を完了した前記オブジェクトが、タスクが再割り当てされるまで所定の状態で待機するように、制御を行う、
請求項3に記載の制御システム。
【請求項5】
前記タスク割り当て部は、前記タスクの予想される所要時間に応じて、前記複数のタスクを前記グループに分割する、
請求項1から4のいずれか1項に記載の制御システム。
【請求項6】
空間に分布する複数のタスクを、それぞれ1つ以上のタスクを含む複数のグループに分割して、前記複数のグループそれぞれを、前記空間上で状態を変化させることが可能な複数のオブジェクトそれぞれに割り当て、
複数の前記オブジェクトそれぞれに対して、割り当てられた前記グループの前記タスクを処理させるように制御を行い、
タスクの処理状況が予め定められた条件を満たす場合に、割り当てられたグループの全てのタスクの処理を完了した前記オブジェクトに対して、他のグループにおける処理が終了していないタスクを割り当てる、
制御方法。
【請求項7】
空間に分布する複数のタスクを、それぞれ1つ以上のタスクを含む複数のグループに分割して、前記複数のグループそれぞれを、前記空間上で状態を変化させることが可能な複数のオブジェクトそれぞれに割り当てるステップと、
複数の前記オブジェクトそれぞれに対して、割り当てられた前記グループの前記タスクを処理させるように制御を行うステップと、
タスクの処理状況が予め定められた条件を満たす場合に、割り当てられたグループの全てのタスクの処理を完了した前記オブジェクトに対して、他のグループにおける処理が終了していないタスクを割り当てるステップと、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御システム、制御方法及びプログラムに関する。
【背景技術】
【0002】
複数のオブジェクトが複数のタスクを処理するように制御を行う技術がある。この技術に関連し、特許文献1は、領域探索におけるロボットビークルのミッション再計画のためのシステムを開示する。特許文献1においては、複数のビークルそれぞれが、割り当てられたタスクを処理する。ビークルはリアルタイムで監視されており、ビークルの中から機能不全に陥り不完全なタスクを実施しているビークルが検出される。システムは、機能不全に陥った不完全なタスクを完了するため、残存ビークルがタスク処理(探索)に参加できるよう、所定のタスクを適宜リアルタイムで再計画し、残存ビークルに再分配する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1にかかる技術では、機能不全に陥った不完全なタスクを完了するため、所定のタスクを適宜リアルタイムで再計画している。このような技術では、タスク全体の処理を効率的に実行することができないおそれがある。
【0005】
本発明は、タスク全体の処理を効率的に実行することを可能とする制御システム、制御方法及びプログラムを提供するものである。
【課題を解決するための手段】
【0006】
本発明にかかる制御システムは、空間に分布する複数のタスクを、それぞれ1つ以上のタスクを含む複数のグループに分割して、前記複数のグループそれぞれを、前記空間上で状態を変化させることが可能な複数のオブジェクトそれぞれに割り当てるタスク割り当て部と、複数の前記オブジェクトそれぞれに対して、割り当てられた前記グループの前記タスクを処理させるように制御を行うタスク処理実行部と、タスクの処理状況が予め定められた条件を満たす場合に、割り当てられたグループの全てのタスクの処理を完了した前記オブジェクトに対して、他のグループにおける処理が終了していないタスクを割り当てる再割り当て部と、を有する。
【0007】
また、本発明にかかる制御方法は、空間に分布する複数のタスクを、それぞれ1つ以上のタスクを含む複数のグループに分割して、前記複数のグループそれぞれを、前記空間上で状態を変化させることが可能な複数のオブジェクトそれぞれに割り当て、複数の前記オブジェクトそれぞれに対して、割り当てられた前記グループの前記タスクを処理させるように制御を行い、タスクの処理状況が予め定められた条件を満たす場合に、割り当てられたグループの全てのタスクの処理を完了した前記オブジェクトに対して、他のグループにおける処理が終了していないタスクを割り当てる。
【0008】
また、本発明にかかるプログラムは、空間に分布する複数のタスクを、それぞれ1つ以上のタスクを含む複数のグループに分割して、前記複数のグループそれぞれを、前記空間上で状態を変化させることが可能な複数のオブジェクトそれぞれに割り当てるステップと、複数の前記オブジェクトそれぞれに対して、割り当てられた前記グループの前記タスクを処理させるように制御を行うステップと、タスクの処理状況が予め定められた条件を満たす場合に、割り当てられたグループの全てのタスクの処理を完了した前記オブジェクトに対して、他のグループにおける処理が終了していないタスクを割り当てるステップと、をコンピュータに実行させる。
【0009】
本発明は、上記のように構成されていることによって、全てのタスクを完了したオブジェクトが、支援すべきグループに再配置される可能性が高くなる。したがって、本発明は、タスク全体の処理を効率的に実行することを可能とすることができる。
【0010】
また、好ましくは、前記タスク割り当て部は、前記オブジェクトが前記タスクの処理を開始する前に、前記複数のタスクを複数のグループに分割して前記複数のグループそれぞれを前記複数のオブジェクトそれぞれに割り当てる処理を行う。
本発明は、このように構成されていることによって、オブジェクトがタスクの処理を開始したら、グループの構成が変更されない。したがって、本発明は、計算負荷を抑制し、計算時間の増大を抑制することが可能となる。
【0011】
また、好ましくは、前記再割り当て部は、割り当てられたグループの全てのタスクの処理を完了した前記オブジェクトの数が所定数以上の場合に、他のグループにおける処理が終了していないタスクを割り当てる。
本発明は、このように構成されていることによって、オブジェクトの移動時間(移動距離)の増大を抑制し、タスクの処理時間の増大を抑制することが可能となる。したがって、本発明は、効率的に全てのタスクを処理することができる。
【0012】
また、好ましくは、前記タスク処理実行部は、割り当てられたグループの全てのタスクの処理を完了した前記オブジェクトが、タスクが再割り当てされるまで所定の状態で待機するように、制御を行う。
本発明は、このように構成されていることによって、そのオブジェクトが余計な移動を行うことが抑制される。したがって、本発明は、そのオブジェクトの移動時間及び移動距離の増大を抑制することが可能となる。
【0013】
また、好ましくは、前記タスク割り当て部は、前記タスクの予想される所要時間に応じて、前記複数のタスクを前記グループに分割する。
本発明は、このように構成されていることによって、グループ間で、予想される所要時間の偏りを抑制することが可能となる。したがって、本発明は、全体として、タスクの処理時間が増大することを、さらに抑制することが可能となる。
【発明の効果】
【0014】
本発明によれば、タスク全体の処理を効率的に実行することを可能とする制御システム、制御方法及びプログラムを提供できる。
【図面の簡単な説明】
【0015】
【
図1】実施の形態1にかかる制御システムを示す図である。
【
図2】実施の形態1にかかる、空間上に分布するタスクを例示する図である。
【
図3】実施の形態1にかかる制御装置の構成を示す図である。
【
図4】実施の形態1にかかる制御システムによって実行される制御方法を示すフローチャートである。
【
図5】実施の形態1にかかるタスク割り当て部のタスク割り当て処理の一例を示すフローチャートである。
【
図16】実施の形態2にかかる制御システムによって実行される制御方法を示すフローチャートである。
【
図17】変形例にかかる、タスクが分布する仮想空間を例示する図である。
【発明を実施するための形態】
【0016】
(実施の形態1)
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【0017】
図1は、実施の形態1にかかる制御システム1を示す図である。制御システム1は、複数のオブジェクト10それぞれに対応する通信装置12と、制御装置100とを有する。通信装置12と制御装置100とは、有線又は無線のネットワーク2を介して、通信可能に接続されている。
【0018】
オブジェクト10は、空間に分布する複数のタスクそれぞれを処理する。タスクについては後述する。オブジェクト10は、例えば、自律移動可能なロボット等の機械である。なお、オブジェクト10は、人間であってもよいし、ロボットアームであってもよい。オブジェクト10は、空間に分布するタスクを処理可能な任意のオブジェクトであってもよい。以下の説明では、オブジェクト10がロボットであるとする。なお、オブジェクト10がロボット又はロボットアーム等の機械である場合、通信装置12は、オブジェクト10に内蔵されていてもよい。また、オブジェクト10が人間である場合、通信装置12は、スマートフォン又はタブレット端末等の、人間が携帯可能な通信端末であってもよい。
【0019】
オブジェクト10は、タスクが分布している空間上を移動する。オブジェクト10は、空間上を移動してタスクの位置に到達してから、そのタスクを処理する。つまり、オブジェクト10は、空間上の位置を変化させる(空間上を移動する)ことができる。言い換えると、オブジェクト10は、その状態を変化させることができる。ここでいう「状態」とは、空間上の物理的な位置である。つまり、オブジェクト10は、空間上で状態を変化させることが可能なオブジェクトである。なお、本実施の形態では、1つのオブジェクト10が、1つのタスクを処理し得る。言い換えると、複数のオブジェクト10が1つのタスクを処理しなくてもよい。
【0020】
図2は、実施の形態1にかかる、空間上に分布するタスクを例示する図である。
図2の例では、実空間である空間70に、タスク#1~#14が配置されている。また、空間70には、4つのオブジェクト10A~10Dが存在する。オブジェクト10A~10Dのそれぞれが、タスク#1~#14の1つ以上を処理する。例えば、オブジェクト10Aは、タスク#4が配置された場所に移動して、タスク#4を処理する。また、例えば、オブジェクト10Aは、タスク#4の処理が終了すると、タスク#3が配置された場所に移動して、タスク#3を処理する。同様に、例えば、オブジェクト10Bは、タスク#8が配置された場所に移動して、タスク#8を処理する。
【0021】
タスクは、空間に分布し、オブジェクト10によって処理を終了することが可能な、任意のものが考えられる。例えば、タスクは、空間上の各地点で何らかの作業を行うことであってもよい。例えば、タスクは、空間に配置された故障物品(故障した機械又は破損した家具等)を修理することであってもよい。また、例えば、タスクは、空間上の各地点の清掃を行うことであってもよい。また、例えば、タスクは、空間に位置する店舗の顧客の人数(店舗の混み具合)をチェックすることであってもよい。
【0022】
通信装置12は、制御装置100と信号を送受信するように構成された装置である。通信装置12は、後述する通信部106と実質的に同様の機能を有し得る。通信装置12は、制御装置100から、対応するオブジェクト10に対する指示を受信する。オブジェクト10は、制御装置100からの指示に従って、タスクを処理する。詳しくは後述する。
【0023】
制御装置100は、例えばサーバ等のコンピュータである。制御装置100は、例えばクラウドコンピューティングによって実現されてもよい。制御装置100(制御システム1)は、オブジェクト10に対してタスクを処理させるように、制御を行う。制御装置100は、オブジェクト10にタスクを処理させるための指示を、そのオブジェクト10に対応する通信装置12に送信する。
【0024】
制御装置100は、空間に分布する複数のタスクを、それぞれ1つ以上のタスクを含む複数のグループに分割して、複数のグループそれぞれを、複数のオブジェクト10それぞれに割り当てる。制御装置100は、複数のオブジェクトそれぞれに対して、割り当てられたグループのタスクを処理させるように制御を行う。そして、制御装置100は、タスクの処理状況が予め定められた条件を満たす場合に、割り当てられたグループの全てのタスクの処理を終了したオブジェクトに対して、他のグループにおける処理が終了していないタスクを割り当てる。詳しくは後述する。
【0025】
図2の例では、例えば、制御装置100は、タスク#1~#4を、グループAにグループ分けする。また、例えば、制御装置100は、タスク#5~#8を、グループBにグループ分けする。また、例えば、制御装置100は、タスク#9~#11を、グループCにグループ分けする。また、例えば、制御装置100は、タスク#12~#14を、グループDにグループ分けする。そして、制御装置100は、グループAをオブジェクト10Aに割り当てる。同様に、制御装置100は、グループB~Dを、それぞれ、オブジェクト10B~10Dに割り当てる。
【0026】
また、制御装置100は、オブジェクト10Aに対してグループAのタスク#1~#4を処理させるように制御を行う。制御装置100は、オブジェクト10Bに対してグループBのタスク#5~#8を処理させるように制御を行う。制御装置100は、オブジェクト10Cに対してグループCのタスク#9~#11を処理させるように制御を行う。制御装置100は、オブジェクト10Dに対してグループDのタスク#12~#14を処理させるように制御を行う。
【0027】
そして、例えば、オブジェクト10A及びオブジェクト10Bが、割り当てられた全てのタスクの処理を終了したとする。この場合において、制御装置100は、タスクの処理状況が予め定められた条件を満たす場合に、オブジェクト10A,10Bに対して、他のグループC,Dにおける処理が終了していないタスクを割り当てる。これにより、オブジェクト10A,10Bは、グループC,Dにおける未処理のタスクを処理する。
【0028】
図3は、実施の形態1にかかる制御装置100の構成を示す図である。
図3に示すように、制御装置100は、主要なハードウェア構成として、制御部102と、記憶部104と、通信部106と、インタフェース部108(IF;Interface)とを有する。制御部102、記憶部104、通信部106及びインタフェース部108は、データバスなどを介して相互に接続されている。なお、機械であるオブジェクト10も、
図3に示した制御装置100のハードウェア構成を有し得る。
【0029】
制御部102は、例えばCPU(Central Processing Unit)等のプロセッサである。制御部102は、制御処理及び演算処理等を行う演算装置としての機能を有する。なお、制御部102は、複数のプロセッサを有してもよい。記憶部104は、例えばメモリ又はハードディスク等の記憶デバイスである。記憶部104は、例えばROM(Read Only Memory)又はRAM(Random Access Memory)等である。記憶部104は、制御部102によって実行される制御プログラム及び演算プログラム等を記憶するための機能を有する。つまり、記憶部104(メモリ)は、1つ以上の命令を格納する。また、記憶部104は、処理データ等を一時的に記憶するための機能を有する。記憶部104は、データベースを含み得る。また、記憶部104は、複数のメモリを有してもよい。
【0030】
通信部106は、通信装置12(オブジェクト10)等の他の装置とネットワークを介して通信を行うために必要な処理を行う。通信部106は、通信ポート、ルータ、ファイアウォール等を含み得る。インタフェース部108は、例えばユーザインタフェース(UI)である。インタフェース部108は、キーボード、タッチパネル又はマウス等の入力装置と、ディスプレイ又はスピーカ等の出力装置とを有する。インタフェース部108は、例えばタッチスクリーン(タッチパネル)のように、入力装置と出力装置とが一体となるように構成されていてもよい。インタフェース部108は、ユーザ(オペレータ)によるデータの入力の操作を受け付け、ユーザに対して情報を出力する。インタフェース部108は、例えば、タスクの割り当て結果を表示してもよい。
【0031】
実施の形態1にかかる制御装置100は、構成要素として、事前情報取得部112と、タスク割り当て部120と、タスク処理実行部130と、タスク処理状況取得部140と、再割り当て部150とを有する。上述した各構成要素は、例えば、制御部102の制御によって、プログラムを実行させることによって実現できる。より具体的には、各構成要素は、記憶部104に格納されたプログラム(命令)を、制御部102が実行することによって実現され得る。また、必要なプログラムを任意の不揮発性記録媒体に記録しておき、必要に応じてインストールすることで、各構成要素を実現するようにしてもよい。また、各構成要素は、プログラムによるソフトウェアで実現することに限ることなく、ハードウェア、ファームウェア、及びソフトウェアのうちのいずれかの組み合わせ等により実現してもよい。また、各構成要素は、例えばFPGA(field-programmable gate array)又はマイコン等の、ユーザがプログラミング可能な集積回路を用いて実現してもよい。この場合、この集積回路を用いて、上記の各構成要素から構成されるプログラムを実現してもよい。これらのことは、後述する他の実施の形態においても同様である。
【0032】
事前情報取得部112は、事前情報を取得する。事前情報取得部112は、取得した事前情報を、記憶部104に格納する。事前情報は、後述するタスク割り当て部120においてタスクの割り当てを行う際に使用される情報である。さらに、事前情報は、後述するタスク割り当て部120においてタスクの割り当てを行う際に使用される予想タスク所要時間を取得するために使用される情報である。予想タスク所要時間については後述する。
【0033】
事前情報は、少なくとも、タスク情報と、オブジェクト情報とを含む。タスク情報は、例えば、空間に分布する複数のタスクそれぞれの位置を示し得る。オブジェクト情報は、オブジェクト10の数、及び、複数のオブジェクト10それぞれに関する情報を示し得る。オブジェクト情報は、オブジェクト10それぞれについて、オブジェクト10の現在位置、及び、性能を示し得る。
【0034】
オブジェクト10の性能は、予想タスク所要時間を取得するために利用可能な任意の要素であり得る。例えば、オブジェクト10の性能は、空間におけるオブジェクト10の移動速度を含む。また、例えば、オブジェクト10の性能は、オブジェクト10の相対的な性能レベルを含む。この場合、例えば、オブジェクト10Aの性能レベルを「高」、オブジェクト10Bの性能レベルを「中」、オブジェクト10Cの性能レベルを「低」としてもよい。また、例えば、オブジェクト10の性能は、空間に分布する各タスクの処理レベルを示し得る。処理レベルは、オブジェクト10が各タスクを処理したときに予想される処理時間(予想タスク処理時間)であってもよい。また、処理レベルは、各オブジェクト10の各タスクに対する習熟度(得手/不得手の度合い)であってもよい。
【0035】
なお、予想タスク処理時間は、オブジェクト10の性能に依存しなくてもよい。言い換えると、予想タスク処理時間は、オブジェクト10の性能の違いを考慮されなくてもよい。この場合、タスク情報は、オブジェクト10によらない、タスクごとの予想タスク処理時間を示してもよい。また、この場合、タスク情報は、処理の難易度を示してもよい。
【0036】
タスク割り当て部120は、空間に分布する複数のタスクを、それぞれ1つ以上のタスクを含む複数のグループに分割して、複数のグループそれぞれを、複数のオブジェクト10それぞれに割り当てる。つまり、タスク割り当て部120は、各オブジェクト10が担当するタスク(グループ)を決定する。ここで、タスク割り当て部120は、オブジェクトがタスクの処理を開始する前に、割り当て処理を行ってもよい。つまり、タスク割り当て部120は、オブジェクト10がタスクの処理を開始した後は、割り当て処理を再度行わないようにしてもよい。これにより、オブジェクト10がタスクの処理を開始したら、タスクのグループの構成は変更されない。
【0037】
また、タスク割り当て部120は、各タスクの予想される所要時間(予想タスク所要時間)に応じて、複数のタスクをグループに分割するようにしてもよい。この場合、タスク割り当て部120は、各グループにおける予想タスク所要時間の合計について、グループ間でできるだけ差がないようにするような処理によって、タスクのグループ分け(タスクの割り当て)を行ってもよい。つまり、タスク割り当て部120は、各グループにおける予想タスク所要時間の合計がグループ間でできるだけ偏らないようにするような処理によって、タスクのグループ分け(タスクの割り当て)を行ってもよい。タスクの割り当て処理の具体例については後述する。
【0038】
ここで、予想タスク所要時間は、予想される各タスクの所要時間(タスク所要時間)である。タスク所要時間は、オブジェクト10のタスクへの移動時間と、オブジェクト10がタスクを処理する時間(タスク処理時間)との合計時間に対応する。したがって、予想タスク所要時間は、予想される移動時間(予想移動時間)と、予想されるタスク処理時間(予想タスク処理時間)との合計時間に対応する。また、あるタスクを処理した後の次のタスクの予想タスク所要時間は、現在位置(処理したタスクの位置)から次のタスクまでの予想移動時間と、次のタスクの予想タスク処理時間との合計時間に対応する。つまり、予想タスク所要時間は、直前に処理したタスク(前回のタスク)の位置からの予想移動時間と、移動先のタスクの予想タスク処理時間との合計に対応する。
【0039】
予想タスク所要時間は、事前情報を用いて取得され得る。例えば、予想移動時間は、オブジェクト10の現在位置からタスクの位置までの距離と、オブジェクト10の移動速度とから取得され得る。また、予想タスク処理時間は、オブジェクト10の性能等から取得され得る。あるいは、タスクの処理時間がオブジェクト10の性能に依存しない場合、又は、オブジェクト10の性能の違いを考慮しない場合、予想タスク処理時間は、タスク情報から取得され得る。また、予想タスク処理時間を取得できない場合、全てのタスクの予想タスク処理時間を同じ時間としてもよい。
【0040】
タスク処理実行部130は、複数のオブジェクト10それぞれに対して、割り当てられたグループのタスクを処理させるように制御を行う。具体的には、タスク処理実行部130は、各オブジェクト10に割り当てられたグループのタスクを処理することを示す指示(オブジェクト指示)を生成する。そして、タスク処理実行部130は、各オブジェクト10に対応する通信装置12に対して、そのオブジェクト10に対応するオブジェクト指示を送信する。
【0041】
オブジェクト指示は、各オブジェクト10に割り当てられたタスクに移動する旨を示す指示(移動指示)を含む。移動指示は、対応するオブジェクト10に割り当てられたグループに含まれる複数のタスクを処理する順序、つまりオブジェクト10の移動経路を示し得る。タスクを処理する順序は、例えば、以下のように決定されてもよい。まず、オブジェクト10の現在位置からタスク所要時間(又は移動時間)が最も短くなるようなタスクに移動すると決定される。次に、そのタスクから、未処理のタスクのうちタスク所要時間(又は移動時間)が最も短くなるようなタスクに移動すると決定される。以下同様にして、次の移動先のタスクが決定される。例えば、
図2の例でオブジェクト10Aにタスク#1~#4からなるグループAが割り当てられた場合、移動指示は、まずタスク#4に移動し、次にタスク#3に移動し、次にタスク#2に移動し、次にタスク#1に移動することを示し得る。
【0042】
また、オブジェクト指示は、割り当てられたグループのタスクを処理する旨を示す指示(タスク処理指示)を含む。また、オブジェクト指示は、割り当てられたグループの全てのタスクの処理を完了後、所定の位置(状態)で待機する旨を示す指示(待機指示)を含む。例えば、待機指示は、最後に処理したタスクの位置の近傍で待機する旨を示してもよい。あるいは、待機指示は、初期位置で待機する旨を示してもよい。
【0043】
タスク処理状況取得部140は、タスク処理状況を示すタスク処理状況情報を取得する。具体的には、タスク処理状況取得部140は、例えば、各オブジェクト10によって処理が終了したタスクの情報、現在処理されているタスクの情報、未処理のタスクの情報、及び、各オブジェクト10の現在位置を示す位置情報を、タスク処理状況情報として取得する。そして、タスク処理状況取得部140は、取得したタスク処理状況情報を、記憶部104に格納する。
【0044】
再割り当て部150は、未処理のタスクの再割り当てを行う。再割り当て部150は、タスクの処理状況が予め定められた条件(トリガ条件)を満たす場合に、割り当てられたグループの全てのタスクの処理を完了したオブジェクト10に対して、他のグループにおける処理が終了していないタスクを割り当てる。つまり、再割り当て部150は、タスクの処理状況がトリガ条件を満たす場合に、タスクの再割り当てを行うと決定する。なお、再割り当てを行う場合であっても、タスク割り当て部120によって決定されたグループの構成は、変更されない。
【0045】
ここで、実施の形態1においては、「予め定められた条件(トリガ条件)」は、割り当てられたグループの全てのタスクの処理を完了したオブジェクト10(タスク完了オブジェクト)の数が、所定数以上であることである。つまり、再割り当て部150は、割り当てられたグループの全てのタスクの処理を完了したオブジェクト10の数が所定数以上の場合に、他のグループにおける処理が終了していないタスクを、全てのタスクの処理が完了したオブジェクト10に割り当てる。言い換えると、再割り当て部150は、タスク完了オブジェクトの数が所定数以上の場合に、未処理のタスクを含むグループ(未処理グループ)における処理が終了していないタスク(未処理タスク)を、タスク完了オブジェクトに割り当てる。
【0046】
なお、「所定数」は、例えば、オブジェクト10の総数に対する割合から決定され得る。例えば、所定数は、オブジェクト10の総数の50%であってもよい。この場合、
図2の例では、オブジェクト10の総数は4であるので、「所定数」は2である。したがって、2つのオブジェクト10が、割り当てられたグループの全てのタスクの処理を完了した場合に、タスクの再割り当て処理が実行される。なお、所定数は、オブジェクト10の総数によらない数であってもよい。例えば、オブジェクト10の総数によらないで、所定数を2と設定してもよい。つまり、実施の形態1では、再割り当て部150は、複数のオブジェクト10が、割り当てられたグループの全てのタスクの処理を完了した場合に、再割り当て処理を行う。
【0047】
また、再割り当て部150は、タスク完了オブジェクトに未処理タスクの再割り当てを行った場合に、未処理グループの全タスクの処理終了時間が、未処理グループ間でできるだけ偏らないように、再割り当てを行ってもよい。例えば、再割り当て部150は、タスク完了オブジェクトに未処理タスクの再割り当てを行った場合に、未処理グループの予想タスク所要時間の合計が、未処理グループ間でできるだけ偏らないようにするような処理によって、再割り当てを行ってもよい。また、再割り当て部150は、所定数のタスク完了オブジェクトが、互いに異なる未処理グループを支援するように、再割り当てを行ってもよい。つまり、再割り当て部150は、所定数のタスク完了オブジェクトを、互いに異なる未処理グループに再配置する。詳しくは後述する。
【0048】
図4は、実施の形態1にかかる制御システム1によって実行される制御方法を示すフローチャートである。事前情報取得部112は、上述したように、事前情報を取得する(ステップS102)。タスク割り当て部120は、事前情報を用いて、タスク割り当て処理を行う(ステップS110)。具体的には、タスク割り当て部120は、事前情報から、予想タスク所要時間を取得する。そして、タスク割り当て部120は、予想タスク所要時間に応じて、各タスクを、各オブジェクト10に割り当てて、オブジェクト10ごとにグループ分けを行う。タスクの割り当て方法(グループ分け方法)については、様々な手法を採用することができる。例えば、一例として、貪欲法(greedy algorithm)を応用してタスクの割り当て(グループ分け)を行う方法がある。以下、フローチャートを用いて説明する。
【0049】
図5は、実施の形態1にかかるタスク割り当て部120のタスク割り当て処理の一例を示すフローチャートである。タスク割り当て部120は、予想タスク所要時間を取得する(ステップS112)。具体的には、タスク割り当て部120は、事前情報を用いて、各オブジェクト10について、各タスクの予想タスク所要時間を取得する。ここで、上述したように、予想タスク所要時間は、各オブジェクト10の現在位置から各タスクまでの予想移動時間と、そのタスクの予想タスク処理時間との合計である。例えば、
図2の例で、オブジェクト10Aについてのタスク#4の予想タスク所要時間は、オブジェクト10Aの現在位置からタスク#4までの予想移動時間と、オブジェクト10がタスク#4を処理するのに要すると予想される予想タスク処理時間との合計である。
【0050】
上述したように、予想移動時間は、オブジェクト10の現在位置からタスクの位置までの距離と、オブジェクト10の移動速度とから取得され得る。また、予想タスク処理時間は、オブジェクト10の性能等から取得され得る。あるいは、タスクの処理時間がオブジェクト10の性能に依存しない場合、又は、オブジェクト10の性能の違いを考慮しない場合、予想タスク処理時間は、タスク情報から取得され得る。この場合、タスク情報には、各タスクの予想タスク処理時間が示されていてもよい。また、予想タスク処理時間を取得できない場合、タスク割り当て部120は、全てのタスクの予想タスク処理時間を同じ時間として、予想タスク処理時間を取得してもよい。
【0051】
タスク割り当て部120は、全てのオブジェクト10に対して、現在位置から最も予想タスク所要時間が短いタスクを割り当てる(ステップS114)。例えば、
図2の例で、オブジェクト10Aについて、現在位置から最も予想タスク所要時間が短いタスクがタスク#4であるとする。また、オブジェクト10Bについて、現在位置から最も予想タスク所要時間が短いタスクがタスク#8であるとする。また、オブジェクト10Cについて、現在位置から最も予想タスク所要時間が短いタスクがタスク#11であるとする。また、オブジェクト10Dについて、現在位置から最も予想タスク所要時間が短いタスクがタスク#14であるとする。この場合、タスク割り当て部120は、オブジェクト10Aにタスク#4を割り当てる。同様に、タスク割り当て部120は、オブジェクト10Bにタスク#8を割り当て、オブジェクト10Cにタスク#11を割り当て、オブジェクト10Dにタスク#14を割り当てる。
【0052】
なお、このとき、タスク割り当て部120は、各オブジェクト10に割り当てられるタスクが互いに異なるようにする。つまり、ある2つのオブジェクト10の、最も予想タスク所要時間が短いタスクが同じである場合、タスク割り当て部120は、任意の一方のオブジェクト10A(例えば現在位置がタスクに近い方のオブジェクト10)にそのタスクを割り当ててもよい。そして、タスク割り当て部120は、他方のオブジェクト10に、次に予想タスク所要時間が短いタスクを割り当ててもよい。
【0053】
なお、S114の処理で、タスク割り当て部120は、各オブジェクト10に対して、現在位置から最も予想タスク所要時間が短いタスクを割り当てるとしたが、このような構成に限られない。タスク割り当て部120は、各オブジェクト10に対して、現在位置から最も予想移動時間が短いタスクを割り当てるようにしてもよい。
【0054】
次に、タスク割り当て部120は、割り当てられたタスクの予想タスク所要時間の合計が最も短いオブジェクト10を判定する(ステップS116)。具体的には、タスク割り当て部120は、各オブジェクト10について、割り当てられたタスクの予想タスク所要時間の合計時間を算出する。そして、タスク割り当て部120は、予想タスク所要時間の合計時間が最も短いオブジェクト10を判定する。
【0055】
タスク割り当て部120は、S116で判定されたオブジェクト10に対し、直近に割り当てられたタスクの位置から最も予想タスク所要時間が短いタスクを割り当てる(ステップS118)。このように、予想タスク所要時間の合計時間が最も短いオブジェクト10に次のタスクが割り当てられるので、オブジェクト10間の予想タスク所要時間の合計時間の偏りが抑制され得る。また、割り当てられる次のタスクは、予想タスク所要時間が最も短いタスクであるから、そのタスクが割り当てられたとしても、オブジェクト10についての予想タスク所要時間の合計時間が急に増大することが抑制される。したがって、オブジェクト10間の予想タスク所要時間の合計時間の偏りが抑制され得る。
【0056】
なお、S118の処理で、タスク割り当て部120は、割り当てられたタスクの予想タスク所要時間の合計が最も短いオブジェクト10に対し、直近に割り当てられたタスクの位置から最も予想タスク所要時間が短いタスクを割り当てるとした。しかしながら、タスク割り当て部120は、割り当てられたタスクの予想タスク処理時間の合計が最も短いオブジェクト10に対し、直近に割り当てられたタスクの位置から最も予想移動時間が短いタスクを割り当てるとしてもよい。
【0057】
タスク割り当て部120は、全てのタスクの割り当てが終了したか否かを判定する(ステップS120)。全てのタスクの割り当てが終了した場合(S120のYES)、全てのタスクが、オブジェクト10ごとにグループ分けされたこととなる。したがって、タスク割り当て部120は、処理を終了する。一方、全てのタスクの割り当てが終了していない場合(S120のNO)、未だにグループ分けされていないタスクが存在する。したがって、処理フローはS116に戻り、S116~S120の処理が繰り返される。
【0058】
上述した
図2の例において、S114の処理で、オブジェクト10A,10B,10C,10Dに、それぞれ、タスク#4,タスク#8,タスク#11,タスク#14が割り当てられている。このとき、オブジェクト10Aについての予想タスク所要時間の合計時間(タスク#4の予想タスク所要時間)が1.0時間であるとする。また、オブジェクト10Bについての予想タスク所要時間の合計時間(タスク#8の予想タスク所要時間)が2.0時間であるとする。また、オブジェクト10Cについての予想タスク所要時間の合計時間(タスク#11の予想タスク所要時間)が3.0時間であるとする。また、オブジェクト10Dについての予想タスク所要時間の合計時間(タスク#14の予想タスク所要時間)が4.0時間であるとする。この場合、S116の処理で、タスク割り当て部120は、オブジェクト10Aを、予想タスク所要時間の合計時間が最も短いオブジェクト10と判定する。したがって、タスク割り当て部120は、オブジェクト10Aに対し、予想タスク所要時間の最も短いタスクを割り当てる(S118)。
【0059】
ここで、タスク#3がオブジェクト10Aに割り当てられたとする。そして、その予想タスク所要時間(タスク#4からタスク#3までの予想移動時間と、タスク#3の予想タスク処理時間との合計時間)が、0.5時間であるとする。この場合、オブジェクト10Aについての予想タスク所要時間の合計時間(タスク#4及びタスク#3の予想タスク所要時間の合計時間)は、1.5時間となる。したがって、次のS116の処理で、タスク割り当て部120は、再度、オブジェクト10Aを、予想タスク所要時間の合計時間が最も短いオブジェクト10と判定する。したがって、タスク割り当て部120は、オブジェクト10Aに対し、予想タスク所要時間の最も短いタスクを割り当てる(S118)。
【0060】
ここで、タスク#2がオブジェクト10Aに割り当てられたとする。そして、その予想タスク所要時間(タスク#3からタスク#2までの予想移動時間と、タスク#2の予想タスク処理時間との合計時間)が、2.0時間であるとする。この場合、オブジェクト10Aについての予想タスク所要時間の合計時間(タスク#4、タスク#3及びタスク#2の予想タスク所要時間の合計時間)は、3.5時間となる。したがって、次のS116の処理で、タスク割り当て部120は、オブジェクト10Bを、予想タスク所要時間の合計時間が最も短いオブジェクト10と判定する。したがって、タスク割り当て部120は、オブジェクト10Bに対し、予想タスク所要時間の最も短いタスクを割り当てる(S118)。
【0061】
ここで、タスク#7がオブジェクト10Bに割り当てられたとする。そして、その予想タスク所要時間(タスク#8からタスク#7までの予想移動時間と、タスク#7の予想タスク処理時間との合計時間)が、2.0時間であるとする。この場合、オブジェクト10Bについての予想タスク所要時間の合計時間(タスク#8及びタスク#7の予想タスク所要時間の合計時間)は、4.0時間となる。したがって、次のS116の処理で、タスク割り当て部120は、オブジェクト10Cを、予想タスク所要時間の合計時間が最も短いオブジェクト10と判定する。したがって、タスク割り当て部120は、オブジェクト10Cに対し、予想タスク所要時間の最も短いタスクを割り当てる(S118)。以降、同様の処理を行うことによって、タスク#1~#14が、オブジェクト10A~10Dに割り当てられることとなる。
【0062】
上記のようにして、例えば、タスク#1~#4が、オブジェクト10Aに割り当てられる。つまり、タスク#1~#4は、オブジェクト10Aに対応するグループAにグループ分けされる。また、タスク#5~#8が、オブジェクト10Bに割り当てられる。つまり、タスク#5~#8は、オブジェクト10Bに対応するグループBにグループ分けされる。また、タスク#9~#11が、オブジェクト10Cに割り当てられる。つまり、タスク#9~#11は、オブジェクト10Cに対応するグループCにグループ分けされる。また、タスク#12~#14が、オブジェクト10Dに割り当てられる。つまり、タスク#12~#14は、オブジェクト10Dに対応するグループDにグループ分けされる。
【0063】
図4の説明に戻る。タスク処理実行部130は、上述したように、複数のオブジェクト10それぞれに対して、割り当てられたグループのタスクの処理を実行させるように制御を行う(ステップS130)。具体的には、タスク処理実行部130は、各オブジェクト10に対応する通信装置12に対して、そのオブジェクト10に対応するオブジェクト指示を送信する。これにより、各オブジェクト10は、割り当てられたグループのタスクの処理を開始する。
【0064】
タスク処理状況取得部140は、上述したように、タスク処理状況情報を取得する(ステップS132)。再割り当て部150は、タスク処理状況情報を用いて、全てのタスクの処理が終了したか否かを判定する(ステップS134)。全てのタスクの処理が終了した場合(S134のYES)、処理フローは終了する。
【0065】
一方、全てのタスクの処理が終了していない場合(S134のNO)、再割り当て部150は、担当する全てのタスクの処理を完了したオブジェクト(タスク完了オブジェクト)の数が所定数以上であるか否かを判定する(ステップS140)。具体的には、再割り当て部150は、タスク処理状況情報を用いて、タスク完了オブジェクトを判定する。さらに具体的には、再割り当て部150は、タスク処理状況情報を用いて、各オブジェクト10について、割り当てられた全てのタスクの処理が完了しているかを判定することにより、タスク完了オブジェクトを判定する。そして、再割り当て部150は、判定されたタスク完了オブジェクトの数が、所定数以上であるか否かを判定する。例えば、上述したように、所定数は、オブジェクト10の総数の50%であってもよい。
【0066】
タスク完了オブジェクトの数が所定数以上でない場合(S140のNO)、処理フローはS132に戻る。そして、S132~S140の処理が繰り返される。一方、タスク完了オブジェクトの数が所定数以上である場合(S140のYES)、上述した再割り当てのトリガ条件が満たされる。この場合、再割り当て部150は、再割り当て処理を実行する(ステップS150)。
【0067】
具体的には、再割り当て部150は、タスク完了オブジェクトに、未処理グループを割り当て、その未処理グループにおける未処理のタスク(未処理タスク)を割り当てる。再割り当て部150は、タスク完了オブジェクトに未処理タスクの再割り当てを行った場合に、未処理グループの全タスクの処理終了時間が、未処理グループ間でできるだけ偏らないように、再割り当てを行ってもよい。例えば、再割り当て部150は、未処理グループでタスクの処理を行っているオブジェクトの数が、未処理グループ間でできるだけ偏らないように、タスク完了オブジェクトに未処理グループを割り当ててもよい。
【0068】
例えば、再割り当て部150は、各タスク完了オブジェクトを、そのタスク完了オブジェクトの位置からの予想移動時間(あるいは予想タスク所要時間)が最も短い未処理タスクを含む未処理グループに再配置する。つまり、再割り当て部150は、各タスク完了オブジェクトに、予想移動時間が最も短い未処理タスクを割り当て、その未処理タスクを含む未処理グループを割り当てる。この際に、再割り当て部150は、各タスク完了オブジェクトが、互いに異なる未処理グループに再配置されるようにしてもよい。
【0069】
ここで、複数のタスク完了オブジェクトについて、予想移動時間が最も短い未処理タスクを含む未処理グループが互いに同じとなった場合、再割り当て部150は、そのうちの1つのタスク完了オブジェクトのみを、その未処理グループに再配置するようにしてもよい。そして、再割り当て部150は、他のタスク完了オブジェクトを、別の未処理グループに再配置するようにしてもよい。
【0070】
例えば、再割り当て部150は、その未処理グループXに属する未処理タスクまでの予想移動時間が最も短いタスク完了オブジェクトを、その未処理グループXに再配置してもよい。そして、再割り当て部150は、他のタスク完了オブジェクトについて、その未処理グループ以外の未処理グループYにおいて、予想移動時間が最も短い未処理タスクを再割り当てするようにしてもよい。これにより、各タスク完了オブジェクトは、互いに異なる未処理グループに再配置され得る。また、このようにタスク完了オブジェクトを再配置することにより、未処理グループXの未処理タスクの処理を早く開始することができる。
【0071】
あるいは、再割り当て部150は、上記の複数のタスク完了オブジェクトについて、その未処理グループX以外の他の未処理グループYに含まれる未処理タスクまでの予想移動時間が短いタスク完了オブジェクトを、当該他の未処理グループYに再配置してもよい。そして、再割り当て部150は、上記の複数のタスク完了オブジェクトについて、その未処理グループX以外の他の未処理グループYに含まれる未処理タスクまでの予想移動時間が最も長いタスク完了オブジェクトを、未処理グループXに再配置してもよい。これにより、各タスク完了オブジェクトは、互いに異なる未処理グループに再配置され得る。また、このようにタスク完了オブジェクトを再配置することにより、各タスク完了オブジェクトの移動時間の偏りを抑制することができる。
【0072】
例えば、上記の
図2の例において、タスク#1~#4、タスク#5~#8、タスク#9~#11、及びタスク#12~#14が、それぞれグループA,B,C,Dにグループ分けされたとする。そして、オブジェクト10CがグループCの全てのタスクの処理を完了してタスク#9の位置で待機し、オブジェクト10DがグループDの全てのタスクの処理を完了してタスク#12の位置で待機しているとする。このとき、グループAのタスク#1,#2が未処理であり、グループBのタスク#5,#6が未処理であるとする。この場合、タスク完了オブジェクトであるオブジェクト10C,10Dからの予想移動時間が最も短い未処理タスクは、グループBに含まれるタスク#5である。このままではオブジェクト10C,10Dが同じグループBに再配置されてしまう。一方、オブジェクト10Cの位置からグループAの未処理タスク#2までの予想移動時間は、オブジェクト10Dの位置からグループAの未処理タスク#2までの予想移動時間よりも短い。したがって、再割り当て部150は、オブジェクト10CをグループAに再配置し、オブジェクト10DをグループBに再配置してもよい。
【0073】
但し、未処理グループにおいて、オブジェクト10が最後のタスクの処理を開始している場合、あるいは、オブジェクト10が最後のタスクに向けて移動を開始している場合は、その未処理グループにはタスク完了オブジェクトを再配置しないようにしてもよい。このような未処理グループにタスク完了オブジェクトを再配置することは、無駄となり得るからである。すなわち、そのような未処理グループにタスク完了オブジェクトを再配置しても、タスク完了オブジェクトが到着したときには、元々配置されていたオブジェクト10が、既に最後のタスクの処理を行っている可能性が高い。この場合、再配置された未処理グループにおいて、タスク完了オブジェクトが処理するタスクがない。したがって、このような未処理グループにタスク完了オブジェクトを再配置することは、無駄となり得る。
【0074】
したがって、再割り当て部150は、このような未処理グループを除外して、タスク完了オブジェクトを未処理グループに再配置する。なお、タスク完了オブジェクトを再配置する対象の未処理グループの数が、タスク完了オブジェクトの数よりも少ない場合、再割り当て部150は、1つの未処理グループに2つ以上のタスク完了オブジェクトを再配置してもよい。なお、再割り当て部150は、2つ以上のタスク完了オブジェクトを再配置する未処理グループには、そのタスク完了オブジェクトの数以上の未処理タスクが含まれているように、再割り当てを行う。
【0075】
なお、再割り当て処理を実行すると、処理フローは、S130に戻る。そして、タスク処理実行部130は、タスク完了オブジェクトに対して、再割り当てされたグループのタスクの処理を実行させるように制御を行う(S130)。
【0076】
図6~
図8は、第1の具体例を説明するための図である。
図6は、第1の具体例にかかるタスクの配置を示す図である。
図7は、第1の具体例において、実施の形態1にかかる方法を用いた場合について説明するための図である。
図8は、第1の具体例において、比較例にかかる方法を用いた場合について説明するための図である。
【0077】
図6に示すように、第1の具体例では、タスク#1~#8が直線状に配置されている。そして、4個のオブジェクト10A~10Dが、タスクの処理を行う。第1の具体例では、各タスクは等間隔に配置されており、隣接するタスク間の移動時間は、T=0.5である。なお、タスクは、例えば、8階建てのビルの各階の清掃作業であってもよい。あるいは、タスクは、例えば、直線状に並べられた8個の故障機械それぞれの修理であってもよい。
【0078】
また、各タスクの予想タスク処理時間は、
図6に示すように、事前に分かっている。すなわち、タスク#1の予想タスク処理時間は、T=1である。タスク#2の予想タスク処理時間は、T=1である。タスク#3の予想タスク処理時間は、T=1である。タスク#4の予想タスク処理時間は、T=3である。タスク#5の予想タスク処理時間は、T=3である。タスク#6の予想タスク処理時間は、T=1である。タスク#7の予想タスク処理時間は、T=1である。タスク#8の予想タスク処理時間は、T=1である。
【0079】
なお、
図6に示すように、実際のタスク処理時間は、以下の通りである。この、実際のタスク処理時間は、オブジェクト10がタスクを処理して初めて判明するものである。タスク#1の実際のタスク処理時間は、T=3である。タスク#2の実際のタスク処理時間は、T=1である。タスク#3の実際のタスク処理時間は、T=1である。タスク#4の実際のタスク処理時間は、T=3である。タスク#5の実際のタスク処理時間は、T=2である。タスク#6の実際のタスク処理時間は、T=2である。タスク#7の実際のタスク処理時間は、T=3である。タスク#8の実際のタスク処理時間は、T=1である。
【0080】
また、第1の具体例において、実施の形態1にかかる再割り当てを行うトリガ条件を、「オブジェクト10の総数の50%のオブジェクト10が、割り当てられた全てのタスクの処理を完了する」とする。オブジェクト10の数は4個なので、2個のオブジェクト10が自身に割り当てられた全てのタスクの処理を完了した場合に、これらの2個のオブジェクト10が、他の2個のオブジェクト10に関するグループに再配置される。つまり、2個のオブジェクト10が自身に割り当てられたタスクの処理を完了した場合に、これらの2個のオブジェクト10が、他の2個のオブジェクト10を支援する。なお、もう1個のオブジェクト10が全てのタスクの処理を完了した場合であって、未処理タスクが存在する場合に、そのオブジェクト10の再配置が行われてもよい。
【0081】
また、
図7に示すように、初期状態(時刻t=0)では、オブジェクト10Aは、タスク#1の位置に配置されている。また、オブジェクト10Bは、タスク#4の位置に配置されている。また、オブジェクト10Cは、タスク#5の位置に配置されている。また、オブジェクト10Dは、タスク#8の位置に配置されている。
【0082】
タスク割り当て部120は、移動時間及び予想タスク処理時間から、以下のように、各タスクを各オブジェクト10に割り当てる。タスク割り当て部120は、タスク#1,#2,#3を、オブジェクト10Aに割り当てる。よって、タスク#1,#2,#3は、グループAに属する。また、タスク割り当て部120は、タスク#4を、オブジェクト10Bに割り当てる。よって、タスク#4は、グループBに属する。また、タスク割り当て部120は、タスク#5を、オブジェクト10Cに割り当てる。よって、タスク#5は、グループCに属する。タスク割り当て部120は、タスク#6,#7,#8を、オブジェクト10Dに割り当てる。よって、タスク#6,#7,#8は、グループDに属する。
【0083】
時刻t=3において、オブジェクト10Aは、タスク#1の処理を終了する。オブジェクト10Aは、その後、次のタスク#2の位置に移動して、タスク#2を処理する。つまり、時刻t=3では、グループAのタスクのうち、タスク#2,#3が未処理タスクであり、タスク#2,#3のいずれも処理が開始されていない。
【0084】
また、時刻t=3において、オブジェクト10Dは、タスク#7を処理している。すなわち、オブジェクト10Dは、時刻t=1においてタスク#8の処理を終了する。そして、オブジェクト10Dは、時刻t=1.5に、次のタスク#7の位置に到着して、タスク#7の処理を開始する。したがって、時刻t=3では、タスク#7の処理を開始してから時間T=1.5が経過している。時刻t=3では、グループDのタスクのうち、タスク#7,#6が未処理タスクであり、タスク#7については処理が開始されているが、タスク#6については処理が開始されていない。
【0085】
一方、時刻t=3において、オブジェクト10Cは、タスク#5の処理を既に終了している。つまり、オブジェクト10Cは、時刻t=2においてタスク#5の処理を終了する。したがって、オブジェクト10Cは、自身に割り当てられた全てのタスクの処理を完了する。しかしながら、他のオブジェクト10が、自身に割り当てられた全てのタスクの処理を完了していないので、オブジェクト10Cは待機する。
【0086】
そして、時刻t=3において、オブジェクト10Bは、タスク#4の処理を終了する。したがって、オブジェクト10Bは、自身に割り当てられた全てのタスクの処理を完了する。これにより、2個のオブジェクト10B,10Cが、自身に割り当てられた全てのタスクの処理を完了したので、再割り当て部150は、再割り当て処理を行う。具体的には、再割り当て部150は、オブジェクト10B,10Cに対して、未処理グループであるグループA,Dのタスクを割り当てる。つまり、再割り当て部150は、オブジェクト10B,10Cに対して、オブジェクト10A,10Dに割り当てられたタスクを割り当てる。
【0087】
再割り当て部150は、時刻t=3におけるオブジェクト10Bの位置(タスク#4の位置)から、未処理グループの未処理タスクのうち、最も移動時間の短い(つまり最も近い)タスクであるタスク#3を、オブジェクト10Bに割り当てる。これにより、オブジェクト10Bは、グループAに再配置され、オブジェクト10Aを支援することとなる。その後、オブジェクト10Bは、タスク#3の位置に向かって移動する。そして、オブジェクト10Bは、時刻t=3.5に、タスク#3の位置に到着して、タスク#3の処理を開始する。
【0088】
また、再割り当て部150は、時刻t=3におけるオブジェクト10Cの位置(タスク#5の位置)から、未処理グループの未処理タスクのうち、最も移動時間の短い(つまり最も近い)タスクであるタスク#6を、オブジェクト10Cに割り当てる。これにより、オブジェクト10Cは、グループDに再配置され、オブジェクト10Dを支援することとなる。その後、オブジェクト10Cは、タスク#6の位置に向かって移動する。そして、オブジェクト10Cは、時刻t=3.5に、タスク#6の位置に到着して、タスク#6の処理を開始する。
【0089】
時刻t=4.5において、オブジェクト10Aは、タスク#2の処理を終了する。つまり、オブジェクト10Aは、時刻t=3.5にタスク#2の位置に到着して、タスク#2の処理を開始する。そして、それから時間T=1が経過した時刻t=4.5に、オブジェクト10Aは、タスク#2の処理を終了する。
【0090】
また、時刻t=4.5において、オブジェクト10Bは、タスク#3の処理を終了する。つまり、上述したように、オブジェクト10Bは、時刻t=3.5に、タスク#3の位置に到着して、タスク#3の処理を開始する。そして、それから時間T=1が経過した時刻t=4.5に、オブジェクト10Bは、タスク#3の処理を終了する。
【0091】
また、時刻t=4.5において、オブジェクト10Cは、タスク#6を処理している。つまり、上述したように、オブジェクト10Cは、時刻t=3.5に、タスク#6の位置に到着して、タスク#6の処理を開始する。そして時刻t=4.5では、タスク#6の処理を開始してから、時間T=1が経過している。
【0092】
また、時刻t=4.5において、オブジェクト10Dは、タスク#7の処理を終了する。つまり、上述したように、オブジェクト10Dは、時刻t=1.5に、タスク#7の位置に到着して、タスク#7の処理を開始する。したがって、それから時間T=3が経過した時刻t=4.5に、オブジェクト10Dは、タスク#7の処理を終了する。
【0093】
そして、時刻t=3.5から時間T=2が経過した時刻t=5.5に、オブジェクト10Cは、タスク#6の処理を終了する。これにより、時刻t=5.5において、タスク#1~#8の全ての処理が終了する。また、各オブジェクト10の移動は、全て、「隣のタスクの位置への1回の移動」である。つまり、各オブジェクト10の移動時間(移動距離)が、最低限に抑制されている。
【0094】
一方、
図8に示す比較例にかかる再割り当ての条件を、「オブジェクト10が担当する全てのタスクの処理を完了したら、直ぐに、そのオブジェクト10を、タスクの処理に最も時間を要すると予想されるグループに再配置する」とする。初期状態(時刻t=0)及びタスクの割り当ては、
図7の場合と同じとする。
【0095】
時刻t=2において、オブジェクト10Aは、タスク#1を処理している。また、時刻t=2において、オブジェクト10Bは、タスク#4を処理している。また、時刻t=2において、オブジェクト10Dは、タスク#7を処理している。すなわち、オブジェクト10Dは、時刻t=1においてタスク#8の処理を終了する。そして、オブジェクト10Dは、時刻t=1.5に、次のタスク#7の位置に到着して、タスク#7の処理を開始する。したがって、時刻t=2では、タスク#7の処理を開始してから時間T=0.5が経過している。このように、オブジェクト10A,10B,10Dは、自身の担当する全てのタスクの処理を未だに完了していない。
【0096】
一方、時刻t=2において、オブジェクト10Cは、タスク#5の処理を終了する。したがって、オブジェクト10Cは、自身に割り当てられた全てのタスクの処理を完了する。したがって、オブジェクト10Cは、時刻t=2において、他のグループに再配置されることとなる。ここで、タスクの処理が完了していないグループAにおいて、残りのタスクの予想タスク処理時間の合計は、T=2である。また、タスクの処理が完了していないグループDにおいて、残りの予想タスク処理時間の合計は、T=1.5である。なお、タスクの処理が完了していないグループBにおいて、処理が開始されていない未処理タスクはない。したがって、オブジェクト10Cは、残りの予想タスク処理時間の合計が最も多いグループAに、再配置される。なお、未処理グループであるグループA,B,Dのうち、処理が開始されていない未処理タスクの数が最も多い未処理グループがグループAであるため、オブジェクト10Cは、グループAに再配置されるとしてもよい。したがって、オブジェクト10Cは、グループAの、オブジェクト10Cの現在位置から最も近いタスク#3に向かって移動する。
【0097】
時刻t=3において、オブジェクト10Aは、タスク#1の処理を終了する。そして、オブジェクト10Aは、次のタスク#2に向かって移動する。また、時刻t=3において、グループAに再配置されたオブジェクト10Cは、タスク#3の処理を開始する。つまり、オブジェクト10Cは、タスク#5から、タスク2つ分の距離を移動してタスク#3に到着する。したがって、オブジェクト10Cは、時刻t=2から時間T=1(=0.5×2)が経過した時刻t=3に、タスク#3に到着する。したがって、時刻t=3において、オブジェクト10Cは、タスク#3の処理を開始する。また、時刻t=3において、オブジェクト10Dは、タスク#7を処理している。すなわち、時刻t=3では、タスク#7の処理を開始してから時間T=1.5が経過している。
【0098】
一方、時刻t=3において、オブジェクト10Bは、タスク#4の処理を終了する。したがって、オブジェクト10Bは、自身に割り当てられた全てのタスクの処理を完了する。したがって、オブジェクト10Bは、時刻t=3において、他のグループに再配置されることとなる。ここで、未処理グループであるグループA,Dのうち、グループAでは、最後のタスク#2に、オブジェクト10Aが向かっている。したがって、オブジェクト10Bは、グループAには再配置されない。よって、オブジェクト10Bは、グループDに再配置される。したがって、オブジェクト10Bは、グループDのうちで最も近い未処理タスクであるタスク#6に向かう。
【0099】
その後、時刻t=4.5において、オブジェクト10Aは、タスク#2の処理を終了する。また、時刻t=4において、オブジェクトCは、タスク#3の処理を終了する。また、オブジェクト10Bは、時刻t=3から時間T=1(=0.5×2)が経過した時刻t=4に、タスク#6に到着する。したがって、時刻t=4において、オブジェクト10Bは、タスク#6の処理を開始する。そして、時刻t=6において、オブジェクト10Bは、タスク#6の処理を終了する。また、時刻t=4.5において、オブジェクト10Dは、タスク#7の処理を終了する。
【0100】
以上のようにして、比較例においては、時刻t=6において、タスク#1~#8の全ての処理が終了する。したがって、比較例においては、実施の形態1の場合よりも、全てのタスクが終了するまでの時間が長くなっている。また、比較例においては、オブジェクト10B,10Cの移動が、「タスク2つ分離れた位置への1回の移動」となっている。したがって、比較例においては、実施の形態1にかかる方法と比較して、オブジェクト10の移動時間(移動距離)が、長くなっている。
【0101】
図7に示すように、オブジェクト10B,10Cの両方が、担当するタスクの処理を完了する時刻t=3まで、再割り当て処理を行わないようにすることで、オブジェクト10B,10Cが、それぞれに近いタスクを処理することができるようになる。しかしながら、時刻t=3まで再割り当て処理を行わない方がよいことは、時刻t=3になるまで分からない。したがって、
図8に示すように、オブジェクト10が担当するタスクの処理を終了したら直ぐに再割り当て処理を行うようにすると、オブジェクト10は、比較的遠いタスクを処理することになってしまうおそれがある。これにより、全体の処理時間が増大し、移動時間及び移動距離が増大することになるおそれがある。
【0102】
これに対し、実施の形態1にかかる制御システム1は、タスク完了オブジェクトの数が所定数以上の場合に、割り当てられたグループの全てのタスクの処理を完了したオブジェクトに対して、他のグループにおける処理が終了していないタスクを割り当てるように構成されている。これにより、タスク完了オブジェクトに対して、それに近い位置のタスクを再割り当てすることができる可能性が高くなる。したがって、実施の形態1にかかる制御システム1は、タスク全体の処理を効率的に行うことが可能となる。
【0103】
図9~
図15は、第2の具体例を説明するための図である。
図9及び
図10は、第2の具体例にかかるタスクの配置を示す図である。
図11~
図15は、第2の具体例において、実施の形態1にかかる方法を用いた場合について説明するための図である。
【0104】
図9に示すように、第2の具体例では、タスク#1~#8が平面上に配置されている。そして、4個のオブジェクト10A~10Dが、タスクの処理を行う。タスクは、例えば、平面上に配置された8個の故障機械それぞれの修理であってもよい。あるいは、タスクは、例えば、平面上に配置された8個の場所の清掃作業であってもよい。
【0105】
図9に示すように、タスク間の移動時間は、タスク間を結ぶ矢印の近傍に示されている。
図9に示すように、第2の具体例では、タスク間の移動時間は互いに異なっている。タスク#1の位置からタスク#2の位置までの移動時間は0.5時間であり、タスク#2の位置からタスク#3の位置までの移動時間は0.5時間である。また、タスク#4の位置からタスク#7の位置までの移動時間は1時間であり、タスク#5の位置からタスク#3の位置までの移動時間は0.5時間であり、タスク#5の位置からタスク#8の位置までの移動時間は1時間である。なお、矢印が描かれていないタスク間の移動時間は、1.5時間以上であるとする。
【0106】
また、第2の具体例では、各オブジェクト10の初期位置は、タスクの近傍ではない。したがって、各オブジェクト10の初期位置から各オブジェクト10に最も近いタスクまでの移動時間を考慮する必要がある。オブジェクト10Aの初期位置からタスク#4の位置までの移動時間は1時間である。オブジェクト10Bの初期位置からタスク#5の位置までの移動時間は1時間である。オブジェクト10Cの初期位置からタスク#1の位置までの移動時間は1時間である。オブジェクト10Dの初期位置からタスク#6の位置までの移動時間は1時間である。
【0107】
また、各タスクの予想タスク処理時間は、
図9に示すように、事前に分かっている。すなわち、タスク#1の予想タスク処理時間は、1時間である。タスク#2の予想タスク処理時間は、1時間である。タスク#3の予想タスク処理時間は、1時間である。タスク#4の予想タスク処理時間は、3時間である。タスク#5の予想タスク処理時間は、3時間である。タスク#6の予想タスク処理時間は、1時間である。タスク#7の予想タスク処理時間は、1時間である。タスク#8の予想タスク処理時間は、1時間である。
【0108】
図10は、各タスクの実際のタスク処理時間を示している。この、実際のタスク処理時間は、オブジェクト10がタスクを処理して初めて判明するものである。タスク#1の実際のタスク処理時間は、1時間である。タスク#2の実際のタスク処理時間は、1時間である。タスク#3の実際のタスク処理時間は、4時間である。タスク#4の実際のタスク処理時間は、2.5時間である。タスク#5の実際のタスク処理時間は、0.5時間である。タスク#6の実際のタスク処理時間は、5時間である。タスク#7の実際のタスク処理時間は、5時間である。タスク#8の実際のタスク処理時間は、5時間である。
【0109】
また、第2の具体例において、実施の形態1にかかる再割り当てを行うトリガ条件を、「オブジェクト10の総数の50%のオブジェクト10が、割り当てられた全てのタスクの処理を完了する」とする。オブジェクト10の数は4個なので、2個のオブジェクト10が自身に割り当てられた全てのタスクの処理を完了した場合に、これらの2個のオブジェクト10が、他の2個のオブジェクト10に関するグループに再配置される。つまり、2個のオブジェクト10が自身に割り当てられた全てのタスクの処理を完了した場合に、これらの2個のオブジェクト10が、他の2個のオブジェクト10を支援する。なお、もう1個のオブジェクト10が全てのタスクの処理を完了した場合であって、未処理タスクが存在する場合に、再配置が行われてもよい。
【0110】
タスク割り当て部120は、移動時間及び予想タスク処理時間から、以下のように、各タスクを各オブジェクト10に割り当てる。タスク割り当て部120は、タスク#1,#2,#3を、オブジェクト10Cに割り当てる。よって、タスク#1,#2,#3は、グループGrCに属する。また、タスク割り当て部120は、タスク#4を、オブジェクト10Aに割り当てる。よって、タスク#4は、グループGrAに属する。また、タスク割り当て部120は、タスク#5を、オブジェクト10Bに割り当てる。よって、タスク#5は、グループGrBに属する。タスク割り当て部120は、タスク#6,#7,#8を、オブジェクト10Dに割り当てる。よって、タスク#6,#7,#8は、グループGrDに属する。
【0111】
図11は、第2の具体例において、1時間後の状態を示している。オブジェクト10A~10Dは、それぞれ、最初に処理するタスクの位置に移動して、タスクの処理を開始する。具体的には、オブジェクト10Aは、タスク#4の処理を開始する。オブジェクト10Bは、タスク#5の処理を開始する。オブジェクト10Cは、タスク#1の処理を開始する。オブジェクト10Dは、タスク#6の処理を開始する。
【0112】
図12は、第2の具体例において、1.5時間後の状態を示している。オブジェクト10Bは、予想タスク処理時間よりもかなり早く、タスク#5の処理を終了する。これにより、オブジェクト10Bは、グループGrBの全てのタスクの処理を完了する。なお、この時点では、オブジェクト10Bのみが、自身のグループのタスクを完了しているので、トリガ条件は満たされていない。したがって、オブジェクト10Bは、他のグループの支援を行わず、待機する。また、オブジェクト10Aは、タスク#4を処理している。オブジェクト10Cは、タスク#1を処理している。オブジェクト10Dは、タスク#6を処理している。
【0113】
図13は、第2の具体例において、3.5時間後の状態を示している。オブジェクト10Dは、タスク#6を処理している。オブジェクト10Cは、タスク#1,#2の処理を終了し、最後のタスク#3へ移動を開始している。すなわち、オブジェクト10Cは、2時間後にタスク#1の処理を終了し、2.5時間後に次のタスク#2の位置に移動し、3.5時間後にタスク#2の処理を終了する。そして、オブジェクト10Cは、最後のタスク#3へ移動を開始する。
【0114】
また、オブジェクト10Bは、グループGrBのタスクの処理を完了してから2時間待機している。また、オブジェクト10Aは、タスク#4の処理を終了する。これにより、オブジェクト10Aは、グループGrAの全てのタスクの処理を完了する。これにより、タスク完了オブジェクトの数が2個となったので、トリガ条件が満たされることとなる。したがって、再割り当て部150は、再割り当て処理を行う。これにより、オブジェクト10A,10Bが、他のグループに再配置される。具体的には、再割り当て部150は、オブジェクト10A,10Bに対して、未処理グループであるグループGrC,GrDのタスクを割り当てる。つまり、再割り当て部150は、オブジェクト10A,10Bに対して、オブジェクト10C,10Dに割り当てられたタスクを割り当てる。このとき、再割り当て部150は、タスクまでの移動時間と、予想タスク処理時間とを考慮して、オブジェクト10A,10Bを再配置する。
【0115】
ここで、この時点において、上述したように、オブジェクト10Cは、タスク#1,#2の処理を終了し、最後のタスク#3へ移動を開始している。したがって、グループGrCにタスク完了オブジェクトを再配置しても、そのタスク完了オブジェクトが処理するタスクがなくなる可能性が高いので、再配置が無駄となり得る。したがって、再割り当て部150は、グループGrCにタスク完了オブジェクトを再配置しないと決定する。したがって、再割り当て部150は、オブジェクト10A,10Bを、グループGrDに再配置すると決定する。
【0116】
そして、再割り当て部150は、オブジェクト10Aを、グループGrDの未処理タスクのうちでオブジェクト10Aの位置から最も移動時間の短い(つまり最も近い)タスク#7に再配置すると決定する。言い換えると、再割り当て部150は、タスク#7をオブジェクト10Aに割り当てる。また、再割り当て部150は、オブジェクト10Bを、グループGrDの未処理タスクのうちでオブジェクト10Bの位置から最も移動時間の短い(つまり最も近い)タスク#8に再配置すると決定する。言い換えると、再割り当て部150は、タスク#8をオブジェクト10Bに割り当てる。これにより、オブジェクト10Aは、タスク#7に向けて移動を開始する。また、オブジェクト10Bは、タスク#8に向けて移動を開始する。
【0117】
図14は、第2の具体例において、6時間後の状態を示している。オブジェクト10Cは、グループGrCのタスク#3を処理している。また、オブジェクト10Aは、グループGrDのタスク#7を処理している。オブジェクト10Bは、グループGrDのタスク#8を処理している。また、オブジェクト10Dは、タスク#6の処理を終了する。ここで、この時点において、未処理タスクのうち、処理を開始していないものはない。したがって、再割り当て部150は、オブジェクト10Dについて再割り当て処理を行わない。よって、オブジェクト10Dは、タスク#6の位置で待機する。
【0118】
図15は、第2の具体例において、9.5時間後の状態を示している。オブジェクト10Cは、8時間後にタスク#3の処理を終了したので、この時点では、タスク#3の位置で待機している。また、オブジェクト10Aは、グループGrDのタスク#7の処理を終了する。また、オブジェクト10Bは、グループGrDのタスク#8の処理を終了する。したがって、全てのタスクの処理が完了する。
【0119】
なお、第2の具体例において、比較例にかかる再割り当ての条件を、「オブジェクト10が担当する全てのタスクの処理を終了したら、直ぐに、そのオブジェクト10を、タスクの処理に最も時間を要すると予想されるグループに再配置する」とする。この場合、1.5時間後(
図12)に、オブジェクト10Bがタスク#5の処理を終了すると、オブジェクト10Bは、その位置からの移動時間の最も短いタスク#3に再配置され得る。この場合、3.5時間後(
図13)に、オブジェクト10Aがタスク#4の処理を終了して、グループGrAのタスクの処理を完了する。また、オブジェクト10Cが、タスク#1,#2の処理を終了する。ここで、グループGrCの残りのタスク#3については、オブジェクト10Bが処理しているので、グループGrCにおいてオブジェクト10Cが処理すべきタスクはなくなる。したがって、オブジェクト10A,10Cについて再割り当て処理が行われる。この場合、オブジェクト10AはグループGrDのタスク#7に再配置され、オブジェクト10CはグループGrDのタスク#8に再配置され得る。この場合、オブジェクト10Cの、タスク#2の位置からタスク#8の位置までの移動時間は、1.5時間以上を要する。したがって、比較例におけるタスク#8の処理の開始は、実施の形態1の場合と比較して、遅くなる。したがって、実施の形態1の場合と比較して、比較例では、全てのタスクの処理が完了するのが遅くなる。そして、比較例においては、オブジェクト10Cの移動時間が増大する。つまり、比較例では、全体の処理時間が増大し、移動時間及び移動距離が増大することになるおそれがある。
【0120】
これに対し、実施の形態1にかかる制御システム1は、タスク完了オブジェクトの数が所定数以上の場合に、割り当てられたグループの全てのタスクの処理を完了したオブジェクトに対して、他のグループにおける処理が終了していないタスクを割り当てるように構成されている。これにより、タスク完了オブジェクトに対して、それに近いタスクを再割り当てすることができる可能性が高くなる。したがって、実施の形態1にかかる制御システム1は、タスク全体の処理を効率的に行うことが可能となる。
【0121】
上述したように、実施の形態1にかかる制御システム1は、タスクの処理状況が予め定められた条件を満たす場合に、割り当てられたグループの全てのタスクの処理を完了したオブジェクトに対して、他のグループにおける処理が終了していないタスクを割り当てるように構成されている。これにより、全てのタスクを完了したオブジェクトが、支援すべきグループに再配置される可能性が高くなる。したがって、実施の形態1にかかる制御システム1は、タスク全体の処理を効率的に実行することを可能とすることができる。
【0122】
また、実施の形態1にかかる制御システム1は、タスク完了オブジェクトの数が所定数以上の場合に、割り当てられたグループの全てのタスクの処理を完了したオブジェクトに対して、他のグループにおける処理が終了していないタスクを割り当てるように構成されている。この所定数は、例えば、オブジェクト10の総数に対する割合に応じて決定され得る。このような構成により、上述した比較例のように、「オブジェクト10が担当する全てのタスクの処理を完了したら、直ぐに、そのオブジェクト10を、タスクの処理に最も時間を要すると予想されるグループに再配置する」場合と比較して、効率的に全てのタスクを処理することができる。すなわち、実施の形態1では、所定数以上のタスク完了オブジェクトが、一斉に、未処理グループに再配置される。これにより、オブジェクト10の移動時間(移動距離)の増大を抑制し、タスク処理時間の増大を抑制することが可能となる。
【0123】
特に、所定数を、オブジェクト10の総数の50%とした場合、タスク完了オブジェクトの数は、未処理グループの数と略同じとなる。したがって、未処理グループに、タスク完了オブジェクトが、1つずつ、再配置され得る。これにより、未処理グループそれぞれのタスクの処理時間を短縮することができるので、全体として、タスクの処理時間を短縮することができる。
【0124】
また、実施の形態1にかかる制御システム1は、割り当てられたグループの全てのタスクの処理を完了したオブジェクト10が、タスクが再割り当てされるまで所定の状態で待機するように、制御を行うように構成されている。これにより、そのオブジェクト10(タスク完了オブジェクト)が余計な移動を行うことが、抑制される。したがって、そのオブジェクトの移動時間及び移動距離の増大を抑制することが可能となる。
【0125】
また、実施の形態1にかかる制御システム1は、オブジェクト10がタスクの処理を開始する前に、複数のタスクを複数のグループに分割して複数のグループそれぞれを複数のオブジェクトそれぞれに割り当てる処理を行うように構成されている。これにより、タスクの割り当て処理は、初期時点で1回のみ行われることとなり得る。言い換えると、オブジェクト10がタスクの処理を開始したら、グループの構成が変更されない。ここで、タスクの割り当てを複数回行って、グループの構成を変更する場合、S110の処理が何度も実行されることとなるので、計算負荷が増大し、計算時間が増大するおそれがある。これに対し、上述した実施の形態1にかかる構成により、タスクの割り当てを複数回行って、グループの構成を変更する場合と比較して、計算負荷を抑制し、制御装置100における計算時間の増大を抑制することが可能となる。
【0126】
また、実施の形態1にかかる制御システム1は、タスクの予想される所要時間に応じて、複数のタスクをグループに分割するように構成されている。これにより、グループ間で、予想される所要時間の偏りを抑制することが可能となる。したがって、全体として、タスクの処理時間が増大することを、さらに抑制することが可能となる。
【0127】
(実施の形態2)
次に、実施の形態2について説明する。なお、実施の形態2にかかる制御システム1の構成については、
図1に示した実施の形態1にかかる制御システム1の構成と実質的に同様であるので、説明を省略する。また、実施の形態2にかかる制御装置100の構成については、
図3に示した実施の形態1にかかる制御装置100の構成と実質的に同様であるので、説明を省略する。実施の形態2は、上述したトリガ条件が、実施の形態1の場合と異なる。実施の形態2では、トリガ条件は、「タスク完了オブジェクトが担当のタスクの処理を完了してから、一定時間が経過する」である。
【0128】
図16は、実施の形態2にかかる制御システム1によって実行される制御方法を示すフローチャートである。事前情報取得部112は、S102と同様に、事前情報を取得する(ステップS202)。タスク割り当て部120は、S110と同様に、事前情報を用いて、タスク割り当て処理を行う(ステップS210)。タスク処理実行部130は、S130と同様に、複数のオブジェクト10それぞれに対して、割り当てられたグループのタスクの処理を実行させるように制御を行う(ステップS230)。
【0129】
タスク処理状況取得部140は、S132と同様に、タスク処理状況情報を取得する(ステップS232)。再割り当て部150は、S134と同様に、タスク処理状況情報を用いて、全てのタスクの処理が終了したか否かを判定する(ステップS234)。全てのタスクの処理が終了した場合(S234のYES)、処理フローは終了する。
【0130】
一方、全てのタスクの処理が終了していない場合(S234のNO)、再割り当て部150は、タスク完了オブジェクトが、割り当てられたタスクの処理を完了してから、一定時間が経過したか否かを判定する(ステップS240)。なお、「一定時間」は、タスクの処理時間の特性から決定され得る。例えば、実際のタスク処理時間が、所定の短時間(例えば「10分」及び所定の長時間(例えば「1時間」)のいずれかである場合、一定時間は、短時間の長さに応じて設定され得る。実際のタスク処理時間が、「10分」又は「1時間」である場合、一定時間は、10分と設定されてもよい。
【0131】
タスク完了オブジェクトが担当したタスクの処理を完了してから一定時間が経過していない場合(S240のNO)、処理フローはS232に戻る。そして、S232~S240の処理が繰り返される。一方、タスク完了オブジェクトが担当したタスクの処理を完了してから一定時間が経過した場合(S240のYES)、上述した再割り当てのトリガ条件が満たされる。この場合、再割り当て部150は、再割り当て処理を実行する(ステップS250)。
【0132】
具体的には、再割り当て部150は、再割り当て部150は、タスク完了オブジェクトに、未処理グループを割り当て、その未処理グループにおける未処理タスクを割り当てる。このとき、再割り当て部150は、未処理グループのうち、未処理タスクの数が多い未処理グループに、タスク完了オブジェクトを再配置するようにしてもよい。言い換えると、再割り当て部150は、未処理タスクの数が多い未処理グループの未処理タスクを、タスク完了オブジェクトに割り当てるようにしてもよい。あるいは、再割り当て部150は、実際のタスク処理時間が長時間であったタスクが多く含まれている未処理グループに、タスク完了オブジェクトを再配置するようにしてもよい。
【0133】
なお、再割り当て処理を実行すると、処理フローは、S230に戻る。そして、タスク処理実行部130は、タスク完了オブジェクトに対して、再割り当てされたグループのタスクの処理を実行させるように制御を行う(S230)。
【0134】
例えば、
図2の例において、タスク#1~#4、タスク#5~#8、タスク#9~#11、及びタスク#12~#14が、それぞれグループA,B,C,Dにグループ分けされたとする。そして、時刻t=t1で、オブジェクト10CがグループCの全てのタスクの処理を完了したとする。また、オブジェクト10Bは、タスク#8,#7の順で処理を終了し、時刻t=t1で、タスク#6の処理を行っているとする。また、オブジェクト10Dは、タスク#14の処理を終了し、時刻t=t1で、タスク#13の処理を行っているとする。
【0135】
そして、実際のタスク処理時間は、「10分」又は「1時間」であるとする。この場合、オブジェクト10Cは、時刻t=t1から10分間待機する。ここで、タスク#6の実際のタスク処理時間が「10分」であり、タスク#13の実際のタスク処理時間が「1時間」であるとする。この場合、オブジェクト10Cが時刻t=t1から10分間待機した時点では、オブジェクト10Bは、タスク#6の処理を終了し、最後のタスク#5に向かって移動している。一方、その時点で、オブジェクト10Dは、タスク#13の処理を継続して行っている。したがって、オブジェクト10Cは、グループDのタスク#12に再配置される。
【0136】
これに対し、上記のケースにおいて、オブジェクト10Cが一定時間(10分間)待機せずに、時刻t=t1で直ぐに他のグループに再配置されるとすると、オブジェクト10Cは、グループBのタスク#5に再配置される可能性がある。この場合、オブジェクト10Cがタスク#5に到着したときには、オブジェクト10Bは、既にタスク#6の処理を終了して、タスク#5の処理を行っている可能性がある。この場合、オブジェクト10Cの再配置は無駄となってしまう。したがって、タスク完了オブジェクトが担当したタスクの処理を完了してから一定時間が経過した後で、再割り当て処理を行うことにより、このような再配置の無駄を抑制することができる。したがって、効率的にタスクの処理を行うことでができる。
【0137】
実施の形態2においても、制御システム1は、タスクの処理状況が予め定められた条件を満たす場合に、タスク完了オブジェクトに対して、他のグループにおける処理が終了していないタスクを割り当てるように構成されている。これにより、全てのタスクを完了したオブジェクトが、支援すべきグループに再配置される可能性が高くなる。したがって、実施の形態2にかかる制御システム1は、タスク全体の処理を効率的に実行することを可能とすることができる。
【0138】
(変形例)
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述したフローチャートの各ステップ(処理)の順序は、適宜、変更可能である。また、上述したフローチャートの各ステップ(処理)の1つ以上は、省略可能である。
【0139】
また、タスクは、仮想空間に分布していてもよい。この場合、タスクは、例えば、旋盤等の加工機械によって金属等のワークを加工することに対応してもよい。この場合、仮想空間は、物理的な位置を示す座標空間ではなく、加工機械の状態を示す空間であってもよい。つまり、仮想空間は、加工機械の1つ以上の状態(例えば旋盤角度、ネジの締め具合等)をそれぞれ座標軸とするような空間であってもよい。この場合、オブジェクト自身は、その実空間上の位置を移動しないようなものであってもよい。この場合、オブジェクトは、例えば旋盤等の加工機械であってもよい。この場合において、オブジェクトの「空間上で変化させることが可能な状態」とは、加工機械の加工の際に調整される状態である。そして、この状態は、処理されるタスクごとに異なり得る。したがって、各タスクは、オブジェクトの各状態に対応する。
【0140】
図17は、変形例にかかる、タスクが分布する仮想空間を例示する図である。あるオブジェクト(加工機械等)がワークを加工する際、オブジェクトの状態x及び状態yが調整され、その状態(x,y)で、ワークの加工に関するタスクを実行する。例えば、状態xは、旋盤角度であり、状態yは、ネジの締め具合であってもよい。また、オブジェクトは、状態を変化させて、別のタスクを処理する。なお、状態を変化させるのに要する時間は、仮想空間内で状態を移動させるのに要する移動時間に対応する。また、ある状態でタスクを処理する時間は、タスク処理時間に対応する。
【0141】
そして、オブジェクトAに対し、状態(x1,y1)で処理可能なタスク#1と、状態(x2,y2)で処理可能なタスク#2と、状態(x3,y3)で処理可能なタスク#3とが、割り当てられたとする。この場合、オブジェクトAは、状態(x1,y1)で、タスク#1を処理する。タスク#1の処理を終了すると、オブジェクトAは、状態を変化させて、状態(x2,y2)で、タスク#2を処理する。タスク#2の処理を終了すると、オブジェクトAは、状態を変化させて、状態(x3,y3)で、タスク#3を処理する。これにより、オブジェクトAは、割り当てられたタスクの処理を完了する。
【0142】
このとき、別のオブジェクトBに割り当てられていたタスク#4が、未処理タスクであるとする。この場合、オブジェクトAは、上述したトリガ条件が満たされた場合に、タスク#4に対応する状態(x4,y4)にその状態を変化させ、タスク#4を処理することができる。
【0143】
また、上述した実施の形態では、タスク割り当て部120は、オブジェクトがタスクの処理を開始する前に、複数のタスクを複数のグループに分割して複数のグループそれぞれを複数のオブジェクトそれぞれに割り当てる処理を行うとした。つまり、上述した実施の形態では、タスク割り当て部120がタスクをグループ分けしたら、オブジェクトがタスクの処理を行っている間に、グループの構成を変更しないとした。しかしながら、本実施の形態にかかる制御システム1は、このような構成に限られない。オブジェクトがタスクの処理を行っている間に、再度、グループ分けを行って、グループの構成を変更してもよい。例えば、あるグループのタスクについて、オブジェクトがタスクを処理している間に、そのグループの未処理タスクの実際の処理時間が予想処理時間よりも長い(又は短い)と考えることが適切な場合には、それに応じて、グループ分けを再度行ってもよい。但し、この場合は、グループ分け(タスク割り当て処理)に要する計算コスト(計算負荷及び計算時間)と、グループ分けを再度行うことによる利益とを比較して、グループ分けを再度行うか否かを決定する必要がある。
【0144】
また、上述した実施の形態では、各タスクについて予め取得された予想タスク処理時間に基づいて、タスク割り当て処理を行うとしたが、このような構成に限られない。各タスクの予想タスク処理時間が分かっていない場合でも、本発明は適用可能である。各タスクの予想タスク処理時間が分かっていない場合、全てのタスクの予想タスク処理時間を、所定の同一の処理時間と仮定して、タスク割り当て処理を行ってもよい。
【0145】
また、上述した実施の形態では、予想移動時間と実際の移動時間との相違については考慮していない。しかしながら、予想移動時間と実際の移動時間とが異なる場合でも、予想タスク処理時間と実際のタスク処理時間との違いの場合と同様に、本発明は適用可能である。また、上述した実施の形態では、オブジェクトがタスクを処理している間にオブジェクトの位置が変化することを記載していない。しかしながら、本実施の形態にかかるシステムでは、オブジェクトがタスクを処理している間に、オブジェクトの位置(状態)が変化してもよい。例えば、オブジェクトがタクシーであり、タスクがタクシーの乗客である場合、オブジェクトは、乗客を輸送した後、輸送先から、次のタスクを処理してもよい。
【0146】
上述したプログラムは、コンピュータに読み込まれた場合に、実施形態で説明された1又はそれ以上の機能をコンピュータに行わせるための命令群(又はソフトウェアコード)を含む。プログラムは、非一時的なコンピュータ可読媒体又は実体のある記憶媒体に格納されてもよい。限定ではなく例として、コンピュータ可読媒体又は実体のある記憶媒体は、random-access memory(RAM)、read-only memory(ROM)、フラッシュメモリ、solid-state drive(SSD)又はその他のメモリ技術、CD-ROM、digital versatile disk(DVD)、Blu-ray(登録商標)ディスク又はその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又はその他の磁気ストレージデバイスを含む。プログラムは、一時的なコンピュータ可読媒体又は通信媒体上で送信されてもよい。限定ではなく例として、一時的なコンピュータ可読媒体又は通信媒体は、電気的、光学的、音響的、またはその他の形式の伝搬信号を含む。
【符号の説明】
【0147】
1 制御システム
10 オブジェクト
12 通信装置
100 制御装置
112 事前情報取得部
120 タスク割り当て部
130 タスク処理実行部
140 タスク処理状況取得部
150 再割り当て部