(57)【要約】      （修正有）【課題】複数時点での最適化を１度に行って時間方向での大域的最適解を得る。【解決手段】割当て候補組検索機能部０３０は、各ＤＢ００５，０２０，０１０に基づき割当て可能な「時刻ＩＤ，ワーカ，タスク」のペアを求めてＤＢ０４０に格納させる。コスト計算機能部０５０は、ＤＢ０４０の割当てが可能な「時刻，ワーカ，タスク」のペアから取り出された「ワーカ，タスク」のうち、複数時点のタスク完了時刻の最小時刻を求める。この最小時刻とワーカとタスクと最小時刻の時刻ＩＤを対応させてＤＢ０６０に格納させる。制約式計算機能部０７０は、ＤＢ０４０に基づきワーカ対タスクの最大割当て問題を２部グラフの最大マッチング問題に置き換えたときに与えられる制約式を作成する。割当て最適化計算機能部０９０は、時刻ＩＤ毎にタスク完了までの時間が最小となる時刻・ワーカ・タスクのペアを算出し、ＤＢ１００に格納させる。【選択図】図２
2016091286.tif 000002
【特許請求の範囲】
【請求項１】
時刻ＩＤとワーカＩＤとタスクＩＤとが対応付けられた第１データベースと、
タスクが発生する位置情報が格納された第２データベースと、
第１データベースからワーカＩＤとタスクＩＤのペアと、該ペアの時刻ＩＤとを抽出する手段と、
抽出されたタスクＩＤをキーにして第２データベースからタスクの位置情報を検索する手段と、
抽出されたワーカＩＤをキーにしてワーカの時刻毎の位置情報が格納された第３データベースから時刻毎のワーカの位置情報を検索する手段と、
時刻ＩＤが示す時刻毎にワーカがタスクの発生する位置に移動した場合の時刻を算出する手段と、
算出された時刻のうち最も早い時刻と、該時刻に対応するワーカとタスクと該時刻の時刻ＩＤとを選択して出力する手段と、
を備えることを特徴とするタスク割当て装置。
【請求項２】
前記第３データベースには、さらにワーカＩＤ毎に移動手段が格納され、
前記移動手段を用いて時刻ＩＤの示す時間にワーカが、タスクの発生する位置に移動した場合の時刻を、
式（１）（２）により算出する手段を備えることを特徴とする請求項１記載のタスク割当て装置。
【数１】
2016091286.tif 000022
ｄｕｒａｔｉｏｎk：ある時刻τkにワーカがタスクの位置まで移動する所要時間，
ｄｉｓｔk：各時間におけるタスクの発生する位置までの距離，
ｖk：移動速度
【数２】
2016091286.tif 000023
【請求項３】
前記第３データベースには、ワーカＩＤ毎に最大移動距離が格納されているとともに、
前記２データベースおよび前記第３データベースに基づきワーカの最大移動距離内にタスクが存在するか否かを判定し、時刻ＩＤとワーカＩＤとタスクＩＤとを対応付けて前記第１データベースに格納する手段と、
前記選択された最も早い時刻とワーカとタスクと時刻ＩＤとを対応付けて格納する第４データベースと、
該第４データベースに基づきワーカ対タスクの最大割当て問題を２部グラフの最小コストフロー問題に置き換えたときに与えられる制約式を作成し、作成された制約式を第５データベースに格納させる手段と、
前記第４データベースおよび前記第５データベースに基づき時刻ＩＤ毎にタスク完了までの時間が最小となる時刻・ワーカ・タスクのペアを算出する手段と、
をさらに備えることを特徴とする請求項２記載のタスク割当て装置。
【請求項４】
コンピュータを用いて複数のタスクを複数のワーカに振り分けるタスク割当て方法であって、
時刻ＩＤとワーカＩＤとタスクＩＤとが対応付けられた第１データベースに基づきワーカＩＤとタスクＩＤのペアと、該ペアの時刻ＩＤとを抽出する第１ステップと、
抽出されたタスクＩＤをキーにしてタスクが発生する位置情報が格納された第２データベースからタスクの位置情報を検索する第２ステップと、
抽出されたワーカＩＤをキーにしてワーカの時刻毎の位置情報が格納された第３データベースから時刻毎のワーカの位置情報を検索する第３ステップと、
時刻ＩＤが示す時刻毎にワーカがタスクの発生する位置に移動した場合の時刻を算出する第４ステップと、
算出された時刻のうち最も早い時刻と、該時刻に対応するワーカとタスクと該時刻の時刻ＩＤとを選択して出力する第５ステップと、
を有することを特徴とするタスク割当て方法。
【請求項５】
前記第３データベースには、さらにワーカＩＤ毎に移動手段が格納されている場合において、
前記第４ステップは、前記移動手段を用いて時刻ＩＤの示す時刻にワーカがタスクの発生する位置に移動した場合の時刻を、
式（１）（２）により算出するステップを有することを特徴とする請求項４記載のタスク割当て方法。
【数１】
2016091286.tif 000024
ｄｕｒａｔｉｏｎk：ある時刻τkにワーカがタスクの位置まで移動する所要時間，
ｄｉｓｔk：各時間におけるタスクの発生する位置までの距離，
ｖk：移動速度
【数２】
2016091286.tif 000025
【請求項６】
前記第３データベースにはワーカＩＤ毎に最大移動距離が格納され、
前記選択された最も早い時刻とワーカとタスクと時刻ＩＤとが対応付けられて第４データベースに格納されている場合において、
前記第２データベースおよび前記第３データベースに基づきワーカの最大移動距離内にタスクが存在するか否かを判定し、時刻ＩＤとワーカＩＤとタスクＩＤとを対応付けて前記第１データベースに格納するステップと、
前記第４データベースに基づきワーカ対タスクの最大割当て問題を２部グラフの最小コストフロー問題に置き換えたときに与えられる制約式を作成し、作成された制約式を第５データベースに格納させるステップと、
前記第４データベースおよび前記第５データベースに基づき時刻ＩＤ毎にタスク完了までの時間が最小となる時刻・ワーカ・タスクのペアを算出するステップと、
をさらに有することを特徴とする請求項５記載のタスク割当て方法。
【請求項７】
請求項１〜３記載のタスク割当て装置として、コンピュータを機能させることを特徴とするタスク割当てプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータを用いて複数の仕事を複数人に振り分けるタスク割当て処理の技術に関する。
【背景技術】
【０００２】
現在、複数の仕事（以下，タスクという。）を複数の人（以下，ワーカという。）に割り振る際に1人あたりのタスク数の上下限や、1タスクあたりのワーカ数の上下限などの制約条件を満たしながらワーカ対タスクの割当て数を最大にする最適化計算を行うことで効率的な割当てを実現する取組みが行われている。
【０００３】
さらに、あるワーカ「ｉ」が、あるタスク「ｊ」を受け持つときにコスト「ｃij」が必要な場合、総コストが最小となる最適化計算を行うことで効率的な割当てを実現する取り組みが行われている。これらのワーカ対タスクの最適な割当て方法を見つける問題は、「割当て問題」と呼ばれる。
【０００４】
一般に、ワーカ対タスクの「最大割当て問題」は、２部グラフ（頂点集合が２分割され，辺がその部分集合の間を結ぶものに限られるグラフ）の２つの頂点集合にそれぞれワーカとタスクを対応させ、割当て可能なワーカとタスクの頂点間の辺を結ぶことで、「２部グラフの最大マッチング問題」に置き換えることができる。この「２部グラフの最大マッチング問題」とは、与えられた制約条件のもと２部グラフの割当て数を最大にするペアを選択するものである。
【０００５】
また、「２部グラフの最大マッチング問題」は、図１に示すように、ソース（ｓｒｃ）となる頂点を新たに加え、ワーカが対応した頂点集合に向かう辺を追加するとともに、シンク（ｓｉｎｋ）となる頂点を新たに加え、タスクが対応した頂点集合からの辺を追加することで、ソースからシンクへ流れる流量を最大化する「最大フロー問題」に変換することが可能となる。なお、ワーカ対タスクの「最大割当て最小コスト問題」は、先ほどと同様にグラフを変換してソースからシンクへ流れる流量を最大化したときに、コストが最小となる辺を選ぶ「最小コストフロー問題」に変換することができる。
【０００６】
「最大フロー問題」、「最小コストフロー問題」のいずれも線形計画法で解くことができ，特に「最大フロー問題」を解くための効率的なアルゴリズムが非特許文献１に複数提案されている。
【０００７】
以下、クラウドソーシングサービスにおけるワーカ対タスクの割当て問題を解く際の背景技術を説明する。ここでクラウドソーシングとは、不特定多数のワーカにタスクを委託する枠組みのことであり、例えば非特許文献２のランサーズのように既に商用サービスとして成立しているものもある。
【０００８】
その中でも特に、タスクに時空間条件が付与されており、ワーカが指定された場所に物理的に移動しなければタスクを完了できない場合が想定される。この場合については、ワーカがタスクを行うことができる最大許容数と最大許容半径を定義することで、ワーカ対タスクの「最大割当て問題」を「最大フロー問題」に変換して解いた非特許文献３の研究が存在する。
【０００９】
この技術は、１時点のワーカおよびタスクの情報を用いてグラフを作成し，最適化計算をおこなっているため，時刻によってワーカ集合やワーカによるタスク完了のコストが変化する場合を同時に扱うことができず、1時点ずつ順番にタスク割当てを行う貪欲法をとっている。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】Dinitz, Y., Garg, N., & Goemans, M. X. (1999). On the single-source unsplittable flow problem. Combinatorica, 19(1), 17-41.
【非特許文献２】“クラウドソーシングなら日本最大級の「ランサーズ」”  ［ｏｎｌｉｎｅ］，平成２６年１０月２１日検索，インターネットＵＲＬ<http://www.lancers.jp/>
【非特許文献３】Kazemi, L., & Shahabi, C. (2012). Geocrowd: enabling query answering with spatial crowdsourcing. In Proceedings of the 20th International Conference on Advances in Geographic Information Systems (pp. 189-198).
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、非特許文献３の技術を用いて複数時点のタスク割当てをタスク完了時刻が最速になるように行う際、タスク完了時刻をコストとして「最小コストフロー問題」を解いても1時点分の最適解しか得られない。
【００１２】
したがって、時刻によってワーカ集合やワーカによるタスク完了のコストが変化する場合を同時に扱うことができないおそれがある。また、1時点ずつ順番に最適化を行う貪欲法では、必ずしも時間的な大域的最適解は得られず，局所最適解しか求められていないおそれもある。
【００１３】
本発明は、このような従来の問題を解決するためになされ、複数時点での最適化を１度に行って時間方向での大域的最適解を得ることを解決課題としている。
【課題を解決するための手段】
【００１４】
本発明のタスク割当て装置は、時刻ＩＤとワーカＩＤとタスクＩＤとが対応付けられた第１データベースと、タスクが発生する位置情報が格納された第２データベースと、第１データベースからワーカＩＤとタスクＩＤのペアと、該ペアの時刻ＩＤとを抽出する手段と、抽出されたタスクＩＤをキーにして第２データベースからタスクの位置情報を検索する手段と、抽出されたワーカＩＤをキーにしてワーカの時刻毎の位置情報が格納された第３データベースから時刻毎のワーカの位置情報を検索する手段と、時刻ＩＤが示す時刻毎にワーカがタスクの発生する位置に移動した場合の時刻を算出する手段と、算出された時刻のうち最も早い時刻と、該時刻に対応するワーカとタスクと該時刻の時刻ＩＤとを選択して出力する手段と、を備える。
【００１５】
本発明のタスク割当て方法は、時刻ＩＤとワーカＩＤとタスクＩＤとが対応付けられた第１データベースに基づきワーカＩＤとタスクＩＤのペアと、該ペアの時刻ＩＤとを抽出する第１ステップと、抽出されたタスクＩＤをキーにしてタスクが発生する位置情報が格納された第２データベースからタスクの位置情報を検索する第２ステップと、抽出されたワーカＩＤをキーにしてワーカの時刻毎の位置情報が格納された第３データベースから時刻毎のワーカの位置情報を検索する第３ステップと、時刻ＩＤが示す時刻毎にワーカがタスクの発生する位置に移動した場合の時刻を算出する第４ステップと、算出された時刻のうち最も早い時刻と、該時刻に対応するワーカとタスクと該時刻の時刻ＩＤとを選択して出力する第５ステップと、を有する。
【００１６】
なお、本発明は、前記タスク割当て装置としてコンピュータを機能させるプログラムの態様としてもよい。このプログラムは、ネットワークや記録媒体などを通じて提供することができる。
【発明の効果】
【００１７】
本発明によれば、複数時点での最適化を１度に行って時間方向での大域的最適解を得ることができる。
【図面の簡単な説明】
【００１８】
【図１】２部グラフの変換例。
【図２】本発明の実施形態に係るタスク割当て装置の構成図。
【図３】割当て検索機能部の処理を示すフローチャート。
【図４】コスト計算機能部の処理を示すフローチャート。
【図５】制約式計算機能部の処理を示すフローチャート。
【図６】２部グラフにおける各辺の容量制約例。
【図７】「δ＋ν，δ−ν」の説明図。
【図８】割当て最適化機能部の処理を示すフローチャート。
【発明を実施するための形態】
【００１９】
≪装置構成例≫
図２に基づき本発明の実施形態に係るタスク割当て装置の構成例を説明する。このタスク割当て装置００１は、クラウドソーシングにおけるワーカ対タスクの割当て問題の解決を図っている。
【００２０】
具体的にはタスク割当て装置００１は、コンピュータにより構成され、ＣＰＵ，主記憶装置（ＲＡＭ，ＲＯＭ等），補助記憶装置（ハードディスクドライブ装置，ソリッドステートドライブ装置等）などのハードウェアリースを備える。
【００２１】
このハードウェアリソースとソフトウェアリソース（ＯＳ，アプリケーションなど）との協同の結果、タスク割当て装置００１は、時刻間隔ＤＢ００５，タスクＤＢ０１０，ワーカＤＢ０２０，割当て候補組検索機能部０３０，割当て候補組ＤＢ０４０，コスト計算機能部０５０，コストＤＢ０６０，制約式計算機能部０７０，制約式ＤＢ０８０，割当て最適化計算機能部０９０，割当て組ＤＢ１００を実装する。
【００２２】
この各ＤＢ００５，０１０，０２０，０４０，０６０，０８０，１００は、前記記憶装置に構築されているものとする。なお、タスク割当て装置００１は、単一のコンピュータに構成してもよく、あるいは複数のコンピュータに前記各部０１０〜１００を分散して構成してもよいものとする。以下、前記構成要素０１０〜１００の処理内容を説明する。
【００２３】
≪時刻間隔ＤＢ００５，タスクＤＢ０１０，ワーカＤＢ０２０≫
【００２４】
【表１】
2016091286.tif 000003
【００２５】
表１は、時刻間隔ＤＢ００５のデータ構造例を示している。この時刻間隔ＤＢ００５には、ワーカとタスクの割当て間隔の情報が「ＹＹＹ−ＭＭ−ＤＤ」の時刻形式で格納されている。例えば表１では、２０１４年２月２日の時刻情報が１時間おきに格納されている。なお、時刻間隔ＤＢ００５は、外部からレコードを指定するために、各レコードに時刻間隔ＩＤが付与されている。
【００２６】
【表２】
2016091286.tif 000004
【００２７】
表２は、タスクＤＢ０１０のデータ構造例を示している。このタスクＤＢ０１０には、タスクの緯度経度の情報が格納されている。なお、タスクＤＢ０１０も、外部からレコードを指定するために、各レコードにタスクＩＤが付与されている。
【００２８】
【表３】
2016091286.tif 000005
【００２９】
表３は、ワーカＤＢ０２０のデータ構造例を示している。このワーカＤＢ０２０には、ワーカの時刻毎に緯度経度情報と最大移動距離情報と最大受容タスク数の情報と移動手段情報とが格納されている。
【００３０】
表３中の最大移動距離は、ワーカがその時刻にタスクをするために移動できる最大距離を示している。また、最大受容タスク数は、ワーカが行うことができる最大のタスク数を示し、時刻毎に変化することなく一人のワーカには同一の値が付与されて格納されている。
【００３１】
さらに移動手段は、徒歩や車あるいはバスなどの移動手段情報を示している。ここではワーカの将来の場所や最大移動距離、移動手段がワーカによって既に入力され、それらの情報が既知であることを想定している。あるいはワーカの過去のログを利用して将来のスケジュールを推定していることを想定している。なお、ワーカＤＢ０２０も、外部からレコードを指定するために、それぞれのレコードにはワーカＩＤが付与されている。
【００３２】
≪割当て候補組検索機能部０３０，割当て候補組ＤＢ０４０≫
割当て候補組検索機能部０３０は、前記ＤＢ００５，０１０，０２０の格納データを入力とし、その処理情報を割当て候補組ＤＢ０４０に出力して格納させる。ここでは割当て候補組検索機能部０３０は、前記ＤＢ００５，０１０，０２０の格納データに基づき割当てが可能な「時刻，ワーカ，タスク」の組（ペア）を検索し、検索結果を割当て候補組とする。
【００３３】
以下、図３に基づき割当て候補組検索機能部０３０の処理内容を説明する。まず処理を開始すると集合Ｎを用意して空集合とする（Ｓ１−１）。その後に時刻間隔ＤＢ００５からレコード集合を検索して検索結果を集合「Ｈ」とし（Ｓ１−２）、集合Ｈから未処理の要素を取り出して取りだした要素を「ｈ」とし（Ｓ１−３）、タスクＤＢ０１０からレコード集合を検索して検索結果を集合「Ｔ」とする（Ｓ１−４）。
【００３４】
つぎにワーカＤＢ０２０から時刻が要素「ｈ」と一致するレコード集合を検索して検索結果を集合「Ｗ」とし（Ｓ１−５）、該集合「Ｗ」から未処理の要素を取り出して「ｗ」とする（Ｓ１−６）。
【００３５】
続いて要素「ｗ」の緯度経度を中心として、最大移動距離を半径とする円の内側にある座標を緯度経度とする「Ｔ」を検索する。これにより「時刻，ワーカ，タスク」の割当て候補組が特定され、特定された割当て候補組の各ＩＤ（時刻間隔ＩＤ，ワーカＩＤ，タスクＩＤ）を集合「Ｎ」に追加する（Ｓ１−７）。
【００３６】
この処理は、ワーカの指定する距離条件にタスクの位置が該当するか否かを確認するため、円の内外判定でもよく、あるいは最大移動距離を対角線とする矩形の内外判定などでもよい。
【００３７】
そして、未処理の要素「ｗ」が集合「Ｗ」に存在するか否かを確認し（Ｓ１−８）、存在すればＳ１−６に戻る一方、存在しなければＳ１−９に進む。このＳ１−９では、未処理の要素「ｈ」が集合「Ｈ」に存在するか否かを確認し、存在すればＳ１−３に戻る一方、存在しなければＳ１−１０に進む。このＳ１−１０では、集合Ｎの情報を割当て候補組ＤＢ０４０に出力して格納させ、処理を終了する。
【００３８】
【表４】
2016091286.tif 000006
【００３９】
表４は、割当て候補組ＤＢ０４０のデータ構造例を示している。この割当て候補ＤＢ０４０には、割当て候補組の時刻間隔ＩＤ，ワーカＩＤ，タスクＩＤが格納されている。
【００４０】
≪コスト計算機能部０５０，コストＤＢ０６０≫
コスト計算機能部０５０は、割当て候補組ＤＢ０４０の格納データを入力として、その処理データをコストＤＢ０６０に出力して格納させる。具体的にはコスト計算機能部０５０は、割当て候補組の「ワーカ，タスク」のペアのうち最小タスク完了時刻をとるものを複数時刻から選択して、コスト情報としてコストＤＢ０６０に出力する。以下、図４に基づきコスト計算機能部０５０の処理内容を説明する。
【００４１】
Ｓ２−１：まず、処理が開始されると集合Ｃを用意する。この段階の集合Ｃは空集合とする。
【００４２】
Ｓ２−２：つぎに割当て候補組ＤＢ０４０を読み込み、未処理の「ワーカ，タスク」のペアを取り出して複数時点分の集合「Ｐ」とする。すなわち、複数時刻分の未処理の「ワーカ，タスク」ペアを集めて集合Ｐとする。
【００４３】
この処理を表４のデータ例に基づき説明する。ここでは時刻を「τ」で表し、ワーカを「ｗ」で表し、タスクを「ｔ」で表し、添え字をそれぞれのＩＤで表し、割当て候補ＤＢ０４０において上の行から順に処理するものとする。
【００４４】
したがって、未処理の「ワーカ，タスク」ペアとして（ｗ1，ｔ1）が最初に選択され、複数時点分の集合「Ｐ」は「Ｐ＝｛（τ1，ｗ1，ｔ1），（τ2，ｗ1，ｔ1），（τ3，ｗ1，ｔ1）｝」となる。
【００４５】
Ｓ２−３：集合ＰのタスクＩＤに一致するレコードをタスクＤＢ０１０から検索し、集合ＰのワーカＩＤに一致するレコードをワーカＤＢ０２０から検索し、最速タスク完了時刻「ｍｉｎ＿ｔｉｍｅ」を計算する。
【００４６】
ここではタスクとして、指定された場所の写真を撮影するなどの少ない時間で終わらせられるものを想定している。したがって、タスクに指定された場所に到着することは、タスク完了と同義あるいは近似したものとする。
【００４７】
最速タスク完了時刻「ｍｉｎ＿ｔｉｍｅ」の計算を、「Ｐ＝｛（τ1，ｗ1，ｔ1），（τ2，ｗ1，ｔ1），（τ3，ｗ1，ｔ1）｝に基づき説明する。まずワーカとタスクの緯度経度情報を用いて各時刻「τ1，τ2，τ3」における距離「ｄｉｓｔ1，ｄｉｓｔ2，ｄｉｓｔ3」を計算する。
【００４８】
ここではワーカの移動手段は、ワーカによって既にタスク割当て装置００１に入力され、ワーカＤＢ０２０に格納されていることを前提とする。そこで、ある時刻「τk」にワーカがタスクの位置までに前記移動手段で移動するのに必要な所要時間「ｄｕｒａｔｉｏｎk」は、式（１）により求めることができる。
【００４９】
【数１】
2016091286.tif 000007
【００５０】
また、ある時刻「τk」にワーカがタスクの位置までに前記移動手段で移動した際の時刻「ｔｉｍｅi」は、所要時間「ｄｕｒａｔｉｏｎk」に移動開始時刻を加算すればよいので、式（２）で求められる。
【００５１】
【数２】
2016091286.tif 000008
【００５２】
その結果、ワーカがタスクを完了させる最も早い時刻「ｍｉｎ＿ｔｉｍｅ」は、式（３）に示すように、これらの最小値を取ることで求めることができる。
【００５３】
【数３】
2016091286.tif 000009
【００５４】
Ｓ２−４：時刻「ｍｉｎ＿ｔｉｍｅ」とワーカＩＤとタスクＩＤと時刻「ｍｉｎ＿ｔｉｍｅ」を取った時刻ＩＤとを集合Ｃに追加する。なお、時刻「ｍｉｎ＿ｔｉｍｅ」を取った時刻ＩＤが複数存在する場合は、一番早い時刻選択するなどのルールを設けることで集合Ｃに追加する時刻ＩＤを一意に定めることができる。
【００５５】
Ｓ２−５，Ｓ２−６：未処理の集合Ｐが存在するか否かを確認し（Ｓ２−５）、存在すればＳ２−２に戻る一方、存在しなければＳ２−６に進む。Ｓ２−６では、集合Ｃの情報をコストＤＢ０６０に出力して格納させ、処理を終了する。
【００５６】
このとき時刻「ｍｉｎ＿ｔｉｍｅ」は、コスト情報としてコストＤＢ０６０に格納される。なお、表５はコストＤＢ０６０のデータ構造例を示し、時刻ＩＤとワーカＩＤとタスクＩＤとコスト情報が格納されている。
【００５７】
【表５】
2016091286.tif 000010
【００５８】
≪制約式計算機能部０７０，制約式ＤＢ０８０≫
制約式計算機能部０７０は、割当て候補ＤＢ０４０の格納データを入力とし、その処理情報を制約式ＤＢ０８０に出力して格納させる。ここではワーカ対タスクの最大割当て問題を前述の最小コストフロー問題に置き換えるものとする。
【００５９】
具体的には制約式計算機能部０７０は、図１で表されたグラフにおける容量制約式と流量保存制約式とを計算して出力する。以下、図５に基づき制約式計算機能部０７０の処理内容を説明する。
【００６０】
Ｓ３−１：まず、処理が開始されると集合「Ｒ」を用意する。この段階の集合「Ｒ」は空集合とする。
【００６１】
Ｓ３−２：つぎに割当て候補組ＤＢ０４０を読み込んで未処理の「ワーカ，タスク」ペアを取り出し、取り出されたペアを「Ｐ´」とする。この処理を表４のデータ例に基づき説明する。
【００６２】
ここでは割当て候補組ＤＢ０４０の上の行から順に処理されるため、最初に処理される「ワーカ，タスク」のペアＰ´として「Ｐ´＝｛ｗ1，ｔ1｝」が取り出され、その後に「Ｐ´＝｛ｗ2，ｔ1｝」，「Ｐ´＝｛ｗ2，ｔ2｝」，「Ｐ´＝｛ｗ2，ｔ3｝」と順に取りだされる。
【００６３】
Ｓ３−３：図１のような２部グラフのソース（ｓｒｃ）から各ワーカを結ぶ辺について、ワーカの最大受容タスク数を上限とする容量制限制約式を作成し、作成した容量制限制約式をＲに追加する。
【００６４】
この際、最適化計算を行うための決定変数として、「ノードｍ」から「ノードｎ」に流れる水の流量を「ｘm,n」とする。ここで容量制約は、各辺の流量が容量を超えないという制約を意味する。
【００６５】
すなわち、ソースから各ワーカについて、ワーカの最大受容タスク数を上限とする容量制限制約式を作成するとは、「ワーカｗi」の最大受容タスク数を「ｍａｘＴi」とすると、式（４）を作成することとなる。
【００６６】
【数４】
2016091286.tif 000011
【００６７】
例えば図６の２部グラフでいえば、式（５）を作成することとなる。
【００６８】
【数５】
2016091286.tif 000012
【００６９】
なお、この処理は非特許文献１と同様な処理である。
【００７０】
Ｓ３−４：各タスクとシンク（ｓｉｎｋ）を結ぶ辺と各ワーカと各タスクを結ぶ辺について「１」を上限とする容量制約式を作成し、「Ｒ」に追加する。ここでＳ３−３と同様にして決定変数「ｘm,n」を用いると、各タスクとシンクを結ぶ辺と各ワーカと各タスクを結ぶ辺について「１」を上限とする容量制約式を作成するとは、式（６）を作成することとなる。
【００７１】
【数６】
2016091286.tif 000013
【００７２】
例えば図６の２部グラフでいえば、式（７）を作成することとなる。
【００７３】
【数７】
2016091286.tif 000014
【００７４】
なお、この処理は非特許文献３と同様な処理である。
【００７５】
Ｓ３−５：ワーカ頂点とタスク頂点について流量保存則の制約式を作成し、「Ｒ」に追加する。流量保存則は、その頂点に流入する流量が流出する流量に等しくなるという制約を意味する。
【００７６】
すなわち、ワーカ頂点とタスク頂点について流量保存則の制約式を作成するとは、図７に示すように「δ＋ν，δ−ν」をそれぞれ頂点νから流出する辺の終点集合・頂点νへ流入する辺の始点集合とすれば、式（８）を作成することとなる。
【００７７】
【数８】
2016091286.tif 000015
【００７８】
例えば図６の２部グラフでいれば、式（９）を作成することとなる。
【００７９】
【数９】
2016091286.tif 000016
【００８０】
なお、この処理は非特許文献３と同様な処理である。
【００８１】
Ｓ３−６：割当て候補組ＤＢ０４０に未処理のペア「Ｐ´」が存在するか否か確認する。確認の結果、存在すればＳ３−２に戻る一方、存在しなければＳ３−７に進む。
【００８２】
Ｓ３−７：集合Ｒの情報を制約式ＤＢ０８０に出力して格納させ（Ｓ３−８）、処理を終了する。なお、表６は、制約式ＤＢ０８０のデータ構造例を示し、最適化計算を行う際に利用する各制約式の情報がテキスト形式で格納されている。この各制約式には、レコード検索のため、制約式ＩＤが付与されている。
【００８３】
【表６】
2016091286.tif 000017
【００８４】
≪割当て最適化計算機能部０９０≫
割当て最適化計算機能部０９０は、コストＤＢ０６０および制約式ＤＢ０８０の格納データを入力として、その処理情報を割当て組ＤＢ１００に出力する。具体的には割当て最適化計算機能部０９０は、制約式ＤＢ０８０から与えられた制約式のなかで「最大フロー問題」を解き、その結果を利用して「最小コストフロー問題」を解く。図８に基づき割当て最適化計算機能部０９０の処理内容を説明する。
【００８５】
Ｓ４−１：制約式ＤＢ０８０からレコード集合を検索し、検索結果を集合「Ｒ´」とする。
【００８６】
Ｓ４−２：「Ｒ」の制約式による条件の元でソースから流出する最大流量を求め、「ｍａｘＦ」とする。この最大流量「ｍａｘＦ」は、前記決定変数より式（１０）のように求められる。
【００８７】
【数１０】
2016091286.tif 000018
【００８８】
この最大流量「ｍａｘＦ」を求める最適化計算は、線形計画法で解くことができるし、また効率的なアルゴリズムも複数提案されているため、これらを利用してもよい（例えば非特許文献１など）。
【００８９】
Ｓ４−３：ソースから流出する流量上限とシンクへ流入する流量上限とを「ｍａｘＦ」とする制約式を作成し、「Ｒ´」に追加する。ここでは式（１１）の制約式を作成すればよい。
【００９０】
【数１１】
2016091286.tif 000019
【００９１】
Ｓ４−４：コストＤＢ０６０からレコード集合を検索し、コスト関数を作成する。コスト関数とは、最適化の目的関数となる割当て（ワーカ，タスク）間のコストの和のことである。すなわち、コストＤＢ０６０に格納されたワーカ集合とタスク集合とをそれぞれ「ｗ」と「Ｔ」とし、ワーカ「ｗi」とタスク「ｔj」とのコストを「ｃij」とすれば、式（１２）を計算すればよい。
【００９２】
【数１２】
2016091286.tif 000020
【００９３】
ただし、Ｓ３−４の容量制約からワーカとタスク間の辺との容量は「１」以下とされる。また、コストＤＢ０６０には必ずしもすべてのワーカとタスクとのペアにおいてコストが計算されているわけではないが、コスト「ｃij＝∞」とみなして十分おおきい数を代入すれば、計算することができる。さらに存在しないペアの場合は計算を抜かせば計算することができる．
Ｓ４−５：「Ｒ´」の条件の元でコスト関数を最小化する。ここでコスト関数の最小化は、線形計画法で解くことができる。最小化した際に選択された「ワーカ，タスク」のペア集合、即ちワーカ・タスク間の決定変数「ｘm、n」が１以上の「ワーカ，タスク」のペア集合を「ｏｐｔ＿ｐ」とする。
【００９４】
Ｓ４−６：コストＤＢ０６０から「ｏｐｔ＿ｐ」を検索し、その時の時刻ＩＤを含めた「時刻，ワーカ，タスク」のペアの情報（時刻ＩＤ，ワーカＩＤ，タスクＩＤ）を割当て組ＤＢ１００・に出力して格納させ、処理を終了する．
【００９５】
【表７】
2016091286.tif 000021
【００９６】
表７は、割当て組ＤＢ１００のデータ構造例を示している。ここでは最適化計算の結果、タスク完了までの時間の和が最小となる「時刻，ワーカ，タスク」のペアについての「時刻ＩＤ，ワーカＩＤ，タスクＩＤ」が格納されている。
【００９７】
このようなタスク割当て装置００１によれば、コスト計算機能部０５０のＳ２−３において、割当て候補組ＤＢ０４０の割当て候補組「時刻，ワーカ，タスク」から取り出された「ワーカ，タスク」のペアのうち、複数時点のタスク完了時刻の最小時刻が計算されることから、最速タスク完了時刻をコストとするコスト関数を計算することが可能となる。
【００９８】
その結果、複数時点での最適化を１度に行うことが可能となり、時間方向での大局的最適解を得ることができる。したがって、タスクに時間空間条件が付与されたクラウドソーシングサービスのような時間によってワーカ集合やワーカによるタスク完了時間が変化する場合であっても、タスク完了時刻が最小となる「ワーカ，タスク」ペアを選択でき、タスク完了時刻の最速化を実現することが可能となる。
【００９９】
これにより少しでも早く仕事を終わらせたいと考えるタスク依頼者の満足度を向上させることができる。また、タスク割当て装置００１は、特にワーカの将来のスケジュール把握や予測ができる環境では有意義である。
【０１００】
≪プログラム≫
本発明は、上記実施形態に限定されるものではなく、各請求項に記載された範囲内で応用・変形して実施することができる。例えば本発明は、タスク割当て装置００１の各部００５〜１００の一部もしくは全部として、コンピュータを機能させる文書検索プログラムとして構成することもできる。
【０１０１】
このプログラムによれば、Ｓ１−１〜Ｓ１−１０，S２・１〜Ｓ２−６，Ｓ３−１〜Ｓ３−７，Ｓ４−１〜Ｓ４−６の一部あるいは全部をコンピュータに実行させることが可能となる。
【０１０２】
前記プログラムは、Ｗｅｂサイトや電子メールなどネットワークを通じて提供することができる。また、前記プログラムは、ＣＤ−ＲＯＭ，ＤＶＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，ＭＯ，ＨＤＤ，ＢＤ−ＲＯＭ，ＢＤ−Ｒ，ＢＤ−ＲＥなどの記録媒体に記録して、保存・配布することも可能である。この記録媒体は、記録媒体駆動装置を利用して読み出され、そのプログラムコード自体が前記実施形態の処理を実現するので、該記録媒体も本発明を構成する。
【符号の説明】
【０１０３】
００１…タスク割当て装置００１
００５…時刻間隔ＤＢ
０１０…タスクＤＢ（第２データベース）
０１０…ワーカＤＢ（第３データベース）
０３０…割当て候補組検索機能部
０４０…割当て候補組ＤＢ０４０（第１データベース）
０５０…コスト計算機能部０５０
０６０…コストＤＢ（第４データベース）
０７０…制約式計算機能部
０８０…制約式ＤＢ（第５データベース）
０９０…割当て最適化計算機能部
１００…割当て組ＤＢ
【図１】
2016091286.tif 000026
【図２】
2016091286.tif 000027
【図３】
2016091286.tif 000028
【図４】
2016091286.tif 000029
【図５】
2016091286.tif 000030
【図６】
2016091286.tif 000031
【図７】
2016091286.tif 000032
【図８】
2016091286.tif 000033