(57)【要約】【課題】処理のスケジューリングの精度を高められるようにする。【解決手段】処理計画装置が、複数の処理要求の各々について、前記処理要求における処理対象データ量に基づいて、処理の繰り返し回数及び１回あたりの処理時間を推定する処理時間要素推定部と、前記複数の処理要求の各々について、前記処理の繰り返し回数及び前記１回あたりの処理時間に基づいて、要求される処理の実行時間を推定する処理時間推定部と、前記処理要求毎に設定されている処理結果出力期限と、前記処理要求毎に推定された前記実行時間とに基づいて、前記複数の処理要求の実行のスケジューリングを行うスケジューリング部とを備える。【選択図】図２
2019003568.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理要求の各々について、前記処理要求における処理対象データ量に基づいて、処理の繰り返し回数及び１回あたりの処理時間を推定する処理時間要素推定部と、
前記複数の処理要求の各々について、前記処理の繰り返し回数及び前記１回あたりの処理時間に基づいて、要求される処理の実行時間を推定する処理時間推定部と、
前記処理要求毎に設定されている処理結果出力期限と、前記処理要求毎に推定された前記実行時間とに基づいて、前記複数の処理要求の実行のスケジューリングを行うスケジューリング部と
を備える処理計画装置。
【請求項２】
前記複数の処理要求の各々について、処理要求期限を示す処理要求期限時情報、及び、処理結果出力期限を示す処理結果出力期限情報を取得する期限情報取得部を備え、
前記スケジューリング部は、各処理の実行時間の推定値、処理結果出力期限、処理要求期限、及び、処理を行うリソースの各条件を制約条件として、制約条件を満たすスケジュールを決定する、
請求項１に記載の処理計画装置。
【請求項３】
前記スケジューリング部は、前記処理を行うリソースを提供するサーバの稼働時間を纏めるようにスケジューリングを行う、
請求項１又は請求項２に記載の処理計画装置。
【請求項４】
前記スケジューリング部は、前記処理を行うリソースが不足しているか否かを判定する、
請求項１から３の何れか一項に記載の処理計画装置。
【請求項５】
前記スケジューリング部は、前記スケジューリングの結果に基づいて、処理要求毎に処理開始期限を決定する、
請求項１から４の何れか一項に記載の処理計画装置。
【請求項６】
複数の処理要求の各々について、前記処理要求における処理対象データ量に基づいて、処理の繰り返し回数及び１回あたりの処理時間を推定し、
前記複数の処理要求の各々について、前記処理の繰り返し回数及び前記１回あたりの処理時間に基づいて、要求される処理の実行時間を推定し、
前記処理要求毎に設定されている処理結果出力期限と、前記処理要求毎に推定された前記実行時間に基づいて、前記複数の処理要求の実行のスケジューリングを行う
ことを含む処理計画方法。
【請求項７】
コンピュータに、
複数の処理要求の各々について、前記処理要求における処理対象データ量に基づいて、処理の繰り返し回数及び１回あたりの処理時間を推定させ、
前記複数の処理要求の各々について、前記処理の繰り返し回数及び前記１回あたりの処理時間に基づいて、要求される処理の実行時間を推定させ、
前記処理要求毎に設定されている処理結果出力期限と、前記処理要求毎に推定された前記実行時間に基づいて、前記複数の処理要求の実行のスケジューリングを行わせる、
ためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理計画装置、処理計画方法及びプログラムに関する。
【背景技術】
【０００２】
複数のプロセスを実行する情報処理装置や、複数の通信信号を送信する通信装置など、複数の処理を行う装置において、期限までに処理を完了するため、あるいは、処理効率を向上させるためなどの理由で、処理のスケジューリングを行う場合がある。
例えば、特許文献１には、通信のスケジューリングを行う通信制御装置が記載されている。この通信制御装置では、非定周期送信部が、任意の時刻で送信要求を発生し、定周期送信部が、定周期で送信要求を発生する。そして、スケジュール部は、送信要求のある非定周期送信部の通信処理（通信のための処理）に要する時間である通信処理時間を演算し、定周期送信部の定周期の残り時間を求め、通信処理時間と定周期の残り時間とを比較して、通信のスケジューリングを行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１７００３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のように複数の処理を行う装置における処理のスケジューリングを行う場合、高精度にスケジューリングを行えることが好ましい。例えば、実行不可能な処理時間を見積もってスケジューリングを行った場合、得られたスケジュールに従うと期限までに処理を完了できない可能性がある。
【０００５】
本発明は、上述の課題を解決することのできる処理計画装置、処理計画方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
本発明の第１の態様によれば、処理計画装置は、複数の処理要求の各々について、前記処理要求における処理対象データ量に基づいて、処理の繰り返し回数及び１回あたりの処理時間を推定する処理時間要素推定部と、前記複数の処理要求の各々について、前記処理の繰り返し回数及び前記１回あたりの処理時間に基づいて、要求される処理の実行時間を推定する処理時間推定部と、前記処理要求毎に設定されている処理結果出力期限と、前記処理要求毎に推定された前記実行時間とに基づいて、前記複数の処理要求の実行のスケジューリングを行うスケジューリング部とを備える。
【０００７】
本発明の第２の態様によれば、処理計画方法は、複数の処理要求の各々について、前記処理要求における処理対象データ量に基づいて、処理の繰り返し回数及び１回あたりの処理時間を推定し、前記複数の処理要求の各々について、前記処理の繰り返し回数及び前記１回あたりの処理時間に基づいて、要求される処理の実行時間を推定し、前記処理要求毎に設定されている処理結果出力期限と、前記処理要求毎に推定された前記実行時間に基づいて、前記複数の処理要求の実行のスケジューリングを行うことを含む。
【０００８】
本発明の第３の態様によれば、プログラムは、コンピュータに、複数の処理要求の各々について、前記処理要求における処理対象データ量に基づいて、処理の繰り返し回数及び１回あたりの処理時間を推定させ、前記複数の処理要求の各々について、前記処理の繰り返し回数及び前記１回あたりの処理時間に基づいて、要求される処理の実行時間を推定させ、前記処理要求毎に設定されている処理結果出力期限と、前記処理要求毎に推定された前記実行時間に基づいて、前記複数の処理要求の実行のスケジューリングを行わせるためのプログラムである。
【発明の効果】
【０００９】
この発明によれば、処理のスケジューリングの精度が高まることが期待される。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係るサービス提供システムの機能構成を示す概略ブロック図である。
【図２】同実施形態に係る処理計画装置の機能構成を示す概略ブロック図である。
【図３】同実施形態にて処理を行うリソースを提供するサーバの稼働時間を纏めるスケジューリングの例を示す図である。
【図４】同実施形態にて特定のリソースに優先的に処理を割り当てたスケジューリングの例を示す図である。
【図５】同実施形態に係るクライアントシステムが処理開始期限を表示する表示画面の例を示す図である。
【図６】同実施形態に係る処理サーバ装置がデータ処理要求に対して行う処理の手順の例を示すフローチャートである。
【図７】同実施形態に係る処理サーバ装置がデータ処理を行う手順の例を示すフローチャートである。
【図８】同実施形態に係る処理計画装置がデータ処理の予約登録要求に対して行う処理の例を示すフローチャートである。
【図９】本発明に係る処理計画装置の最小構成の例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図１は、本発明の一実施形態に係るサービス提供システムの機能構成を示す概略ブロック図である。図１に示すように、サービス提供システム１は、処理計画装置１００と、処理サーバ装置２００と、第一通信ネットワーク３００とを備える。
【００１２】
また、処理サーバ装置２００と処理計画装置１００とは、第一通信ネットワーク３００を介して通信接続する。処理計画装置１００とクライアントシステム９１０とは、第二通信ネットワーク９２０を介して通信接続する。
サービス提供システム１が備える処理サーバ装置２００の数は、１つ以上であればよい。処理計画装置１００に通信接続するクライアントシステム９１０の数も１つ以上であればよい。
【００１３】
サービス提供システム１は、データ処理サービスを提供するシステムである。
処理計画装置１００は、サービス提供システム１における窓口として機能する。具体的には、処理計画装置１００は、クライアントシステム９１０からサービス提供要求及び処理対象のデータを受信し、処理サーバ装置２００に処理を振り分ける。
また、処理計画装置１００は、データ処理サービスの予約を受けて処理のスケジューリングを行う。処理計画装置１００が決定したスケジュールに従ってクライアントシステム９１０がデータ処理を要求することで、処理が輻輳する可能性を低減させることができる。
【００１４】
ここでいう処理の輻輳は、処理を実行するリソースに対して処理をダブルブッキングすることである。処理の輻輳が生じた場合、先の処理の完了を待って行われる後の処理のレスポンスタイム（Response Time）が長くなり、処理結果の回答期限までに回答できなくなる場合がある。
本実施形態では、処理を実行するリソースは、例えば処理サーバ装置２００、又は、処理サーバ装置２００が実行する仮想マシンである。
【００１５】
また、処理の輻輳が生じた場合、処理を実行するリソースが、先の処理を実行する間、後の処理について処理対象データを含む処理要求を記憶しておくか、或いは処理要求元であるクライアントシステム９１０が処理要求を再送する必要が生じる。
リソースが処理要求を記憶する場合、そのための記憶容量が必要であり、記憶容量が不足する場合は処理要求の再送が必要となる。
クライアントシステム９１０が処理要求を再送する場合、処理要求の送受信を繰り返す点でクライアントシステム９１０及びリソースの負荷が大きくなり、また、通信帯域を消費する。
【００１６】
これに対し、処理計画装置１００が決定したスケジュールに従ってクライアントシステム９１０がデータ処理を要求して処理の輻輳を回避することで、リソースが後の処理要求の記憶容量を備える必要無しに、処理要求の再送によるクライアントシステム９１０及びリソースの負荷の増大及び通信帯域の消費を回避することができる。
処理計画装置１００は、例えばワークステーション（Workstation）等のコンピュータを用いて構成される。
【００１７】
図２は、処理計画装置１００の機能構成を示す概略ブロック図である。図２に示すように、処理計画装置１００は、通信部１１０と、表示部１２０と、操作入力部１３０と、記憶部１８０と、制御部１９０とを備える。制御部１９０は、期限情報取得部１９１と、データ内容係数取得部１９２と、処理アルゴリズム係数取得部１９３と、処理時間要素推定部１９４と、処理時間推定部１９５と、スケジューリング部１９６と、処理予約受付部１９７とを備える。
【００１８】
通信部１１０は、他の機器と通信を行う。特に通信部１１０は、第二通信ネットワーク９２０を介してクライアントシステム９１０と通信接続する。通信部１１０は、クライアントシステム９１０からデータ処理要求を受信し、要求に対する回答として処理結果を送信する。また、通信部１１０は、クライアントシステム９１０との通信にて、データ処理サービスの予約を受ける。予約に際し、通信部１１０は、データ処理のスケジューリングを行う。
【００１９】
また、通信部１１０は、第一通信ネットワーク３００を介して処理サーバ装置２００と通信接続する。通信部１１０は、処理サーバ装置２００へデータ処理要求を送信し、要求に対する回答として処理結果を受信する。処理サーバ装置２００が複数ある場合、通信部１１０は、処理計画装置１００が決定した送信先の処理サーバ装置２００へデータ処理要求を送信して処理結果を受信する。
【００２０】
表示部１２０は、例えば液晶パネル又はＬＥＤ（Light Emitting Diode、発光ダイオード）パネル等の表示画面を備え、各種画像を表示する。
操作入力部１３０は、例えばキーボード及びマウス等の入力デバイスを備え、ユーザ操作を受ける。
記憶部１８０は、各種データを記憶する。記憶部１８０は、処理計画装置１００が備える記憶デバイスを用いて構成される。
【００２１】
制御部１９０は、処理計画装置１００の各部を制御して各種処理を行う。制御部１９０は、処理計画装置１００が備えるＣＰＵ（Central Processing Unit、中央処理装置）が記憶部１８０からプログラムを読み出して実行することで構成される。
期限情報取得部１９１は、通信部１１０が受信した複数のデータ処理要求の予約登録要求（データ処理の予約登録要求）の各々について、処理要求期限を示す処理要求期限情報、及び、処理結果出力期限を示す処理結果出力期限情報を取得する。以下では、データ処理要求を単に処理要求とも称する。
【００２２】
通信部１１０がクライアントシステム９１０から処理要求期限情報を受信し、期限情報取得部１９１がクライアントシステム９１０からの受信データから処理要求期限情報を抽出するようにしてもよい。この場合、クライアントシステム９１０が、処理要求期限情報をデータ処理サービスの予約の情報に含めて送信するようにしてもよいし、別々に送信するようにしてもよい。
あるいは、処理要求期限が毎月同じ日時に定められている場合、記憶部１８０が処理要求期限の日時を記憶しておき、期限情報取得部１９１が記憶部１８０からその日時を読み出すようにしてもよい。
【００２３】
処理結果出力期限についても、通信部１１０がクライアントシステム９１０から処理結果出力期限情報を受信し、期限情報取得部１９１がクライアントシステム９１０からの受信データから処理結果出力期限情報を抽出するようにしてもよい。この場合、クライアントシステム９１０が、処理結果出力期限情報をデータ処理サービスの予約の情報に含めて送信するようにしてもよいし、別々に送信するようにしてもよい。
あるいは、処理結果出力期限が毎月同じ日時に定められている場合、記憶部１８０が処理結果出力期限の日時を記憶しておき、期限情報取得部１９１が記憶部１８０からその日時を読み出すようにしてもよい。
【００２４】
データ内容係数取得部１９２は、データ内容係数を取得する。ここでいうデータ内容係数は、処理要求における処理対象データの内容に応じた係数である。データ内容係数として、処理の難易度に基づく指標値を用いるようにしてもよい。例えば、データ内容係数として、データの内容から推定される処理の難易度に応じて決定される、標準の難易度の場合に対する処理時間の比の推定値を用いることができる。
【００２５】
例えば、クライアントシステム９１０のユーザであるサービス利用者が、予測される処理の難易度に基づいてデータ内容係数の値を決定し、決定された値をクライアントシステム９１０が処理時間推定装置１００へ送信するようにしてもよい。データ内容係数取得部１９２は、クライアントシステム９１０からの受信データから、データ内容係数（の値）を抽出する。
【００２６】
また、予約段階で処理対象データが得られている場合、通信部１１０が処理対象データを受信すると、処理計画装置１００の管理者が処理対象データを参照してデータ内容係数を決定し、記憶部１８０が処理対象データ毎にデータ内容係数を記憶しておくようにしてもよい。そして、処理計画装置１００が処理時間を算出する際に、データ内容係数取得部１９２が処理時間算出対象のデータに応じたデータ内容係数を記憶部１８０から読み出すようにしてもよい。
あるいはデータ内容係数取得部１９２が、処理対象データの分散又は標準偏差など予め定められた指標値に基づいて、データ内容係数を自動的に算出するようにしてもよい。あるいは処理時間推定装置１００又は他の装置が、機械学習を行ってデータ内容係数値を算出し、データ内容係数取得部１９２が、機械学習の結果得られたデータ内容係数値を取得するようにしてもよい。この場合、処理時間推定装置１００又は他の装置が、例えば
［処理時間］＝［係数１］＊データ１＋［係数２］＊データ２＋…
のような回帰式を、重回帰分析のように機械学習で生成するようにしてもよい。
【００２７】
処理アルゴリズム係数取得部１９３は、処理アルゴリズム係数を取得する。ここでいう処理アルゴリズム係数は、処理要求に対する処理アルゴリズムに応じた係数である。
例えば、処理アルゴリズム毎に処理アルゴリズム係数が予め定められ、記憶部１８０が予め処理アルゴリズム毎に処理アルゴリズム係数を記憶しておくようにしてもよい。そして、処理計画装置１００が処理時間を算出する際に、処理アルゴリズム係数取得部１９３が、適用予定の処理アルゴリズムに応じた処理アルゴリズム係数を記憶部１８０から読み出すようにしてもよい。あるいは処理時間推定装置１００又は他の装置が、機械学習を行って処理アルゴリズム係数値を算出し、処理アルゴリズム係数取得部１９３が、機械学習の結果得られた処理アルゴリズム係数値を取得するようにしてもよい。
適用予定の処理アルゴリズムは、例えば処理計画装置１００の管理者が操作入力部１３０からのユーザ操作にて指定する。あるいは、処理アルゴリズム係数取得部１９３が、処理対象データに基づいて自動的に、適用予定の処理アルゴリズムを決定するようにしてもよい。
【００２８】
処理時間要素推定部１９４は、通信部１１０が受信した複数の処理要求の予約登録要求の各々について、処理要求における処理対象データ量に基づいて、処理の繰り返し回数及び１回あたりの処理時間を推定する。ここでいう処理対象データ量は、処理対象データのデータ量である。ここでいう１回あたりの処理は、機械学習にて１つの解を求める処理である。ここでいう処理の繰り返しは、機械学習にて１つの解を求める処理を、判定基準を満たす解を得られるまで繰り返すことである。以下では、処理の繰り返し回数と１回あたりの処理時間とを総称して処理時間要素と表記する。
【００２９】
例えば処理時間要素推定部１９４は、過去のデータ処理それぞれにおける処理対象データ量、処理の繰り返し回数、及び、１回あたりの処理時間を示すデータを学習用データとして取得する。そして、処理時間要素推定部１９４は、通信部１１０が受信した処理要求（予約登録を要求されている処理要求）それぞれについて、処理サーバ装置２００が機械学習でデータ処理を行う場合の、処理の繰り返し回数及び１回あたりの処理時間を、機械学習で算出する。
【００３０】
例えば処理時間要素推定部１９４は、機械学習にて、処理対象データ量の入力を受けて処理の繰り返し回数を出力する関数、及び、処理対象データ量の入力を受けて１回あたりの処理時間を出力する関数を算出する。そして、処理時間要素推定部１９４は、予約登録を要求されている処理要求の各々における処理対象データ量を、得られた関数に入力して、処理の繰り返し回数及び１回あたりの処理時間を処理要求毎に算出する。
例えば記憶部１８０が、過去のデータ処理におけるデータを学習用データとして予め記憶しておく。そして、処理時間要素推定部１９４は、記憶部１８０から学習用データを読み出して使用する。
【００３１】
処理時間要素推定部１９４が、処理対象データ量に加えてデータ内容係数に基づいて、処理の繰り返し回数及び１回あたりの処理時間のうち少なくともいずれか一方を推定するようにしてもよい。
例えば処理時間要素推定部１９４は、過去のデータ処理それぞれにおける処理対象データ量、データ内容係数、処理の繰り返し回数、及び、１回あたりの処理時間を示すデータを学習用データとして取得する。
【００３２】
この場合、例えば処理時間要素推定部１９４は、機械学習にて、処理対象データ量及びデータ内容係数の入力を受けて処理の繰り返し回数を出力する関数、及び、処理対象データ量及びデータ内容係数の入力を受けて１回あたりの処理時間を出力する関数を算出する。処理時間要素推定部１９４は、予約登録対象となっている処理要求それぞれにおける処理対象データ量、及び、予約登録対象となっている処理要求それぞれに対してデータ内容係数取得部１９２が取得したデータ内容係数を、得られた各関数に入力して、処理の繰り返し回数及び１回あたりの処理時間を処理要求毎に算出する。
【００３３】
処理時間要素推定部１９４が、処理対象データ量に加えて処理アルゴリズム係数に基づいて、処理の繰り返し回数及び１回あたりの処理時間のうち少なくともいずれか一方を推定するようにしてもよい。
例えば処理時間要素推定部１９４は、過去のデータ処理それぞれにおける処理対象データ量、処理アルゴリズム係数、処理の繰り返し回数、及び、１回あたりの処理時間を示すデータを学習用データとして取得する。
【００３４】
この場合、例えば処理時間要素推定部１９４は、機械学習にて、処理対象データ量及び処理アルゴリズム係数の入力を受けて処理の繰り返し回数を出力する関数、及び、処理対象データ量及び処理アルゴリズム係数の入力を受けて１回あたりの処理時間を出力する関数を算出する。処理時間要素推定部１９４は、予約登録対象となっている処理要求それぞれにおける処理対象データ量、及び、予約登録対象となっている処理要求それぞれに対して処理アルゴリズム係数取得部１９３が取得した処理アルゴリズム係数を、得られた各関数に入力して、処理の繰り返し回数及び１回あたりの処理時間を処理要求毎に算出する。
【００３５】
処理時間要素推定部１９４が、処理対象データ量に加えてデータ内容係数及び処理アルゴリズム係数に基づいて、処理の繰り返し回数及び１回あたりの処理時間のうち少なくともいずれか一方を推定するようにしてもよい。
例えば処理時間要素推定部１９４は、過去のデータ処理それぞれにおける処理対象データ量、データ内容係数、処理アルゴリズム係数、処理の繰り返し回数、及び、１回あたりの処理時間を示すデータを学習用データとして取得する。
【００３６】
この場合、例えば処理時間要素推定部１９４は、機械学習にて、処理対象データ量、データ内容係数及び処理アルゴリズム係数の入力を受けて処理の繰り返し回数を出力する関数、及び、処理対象データ量、データ内容係数及び処理アルゴリズム係数の入力を受けて１回あたりの処理時間を出力する関数を算出する。処理時間要素推定部１９４は、予約登録対象となっている処理要求における処理対象データ量、予約登録対象となっている処理要求それぞれに対してデータ内容係数取得部１９２が取得したデータ内容係数、及び、予約登録対象となっている処理要求それぞれに対して処理アルゴリズム係数取得部１９３が取得した処理アルゴリズム係数を、得られた各関数に入力して、処理の繰り返し回数及び１回あたりの処理時間を処理要求毎に算出する。
【００３７】
処理時間要素推定部１９４が機械学習に用いるアルゴリズムは、特定のアルゴリズムに限定されない。例えば、処理時間要素推定部１９４が、ニューラルネットワーク、又は、一般化線形回帰のアルゴリズムを用いて機械学習を行うようにしてもよいが、これらに限らない。
【００３８】
処理時間推定部１９５は、通信部１１０が受信した複数の処理要求の各々について、処理の繰り返し回数及び１回あたりの処理時間に基づいて、要求される処理の実行時間を推定する。
例えば処理時間推定部１９５は、処理の繰り返し回数と１回あたりの処理時間とを乗算した積に、データ転送時間及びデータ変換時間など機械学習の実行以外の時間を加算した時間を実行時間として算出する。
機械学習の実行以外の時間は、例えば処理時間推定部１９５が、処理対象データ量に所定の係数を乗算して算出する。
【００３９】
スケジューリング部１９６は、処理要求毎に設定されている処理結果出力期限、及び、複数の処理要求の各々について推定された実行時間に基づいて、複数の処理要求の実行のスケジューリングを行う。
このスケジューリングにてスケジューリング部１９６は、予約登録対象となっている処理要求を、リソースに対するダブルブッキングが生じず、かつ、処理結果出力期限に処理を終了するようにリソースに割り当てる。
【００４０】
さらには、スケジューリング部１９６は、各処理の実行時間の推定値、処理結果出力期限、処理要求期限、及び、処理を行うリソースの各条件を制約条件として、制約条件を満たすスケジュールを決定する。
スケジューリング部１９６が、処理を行うリソースを提供するサーバの稼働時間を纏めるようにスケジューリングを行うようにしてもよい。
【００４１】
図３は、処理を行うリソースを提供するサーバの稼働時間を纏めるスケジューリングの例を示す図である。図３の横軸は日時を示す。
図３の例では、スケジューリング部１９６は、処理Ａ及び処理Ｂの２つの処理を１つのリソースに割り当てる。処理Ａは、日時Ｔ１１１から実行可能であり、日時Ｔ１１４が処理結果の回答期限である。処理Ｂは、日時Ｔ１２１から実行可能であり、日時Ｔ１２４が処理結果の回答期限である。また、図３の例では処理時間推定部１９５が処理Ａ、処理Ｂそれぞれに要する処理時間を推定済みである。
【００４２】
スケジューリング部１９６は、処理Ａの終了予定日時と処理Ｂの開始予定日時が同じになるようにスケジューリングを行う。例えば、スケジューリング部１９６は、処理Ａを実行可能な期間である日時Ｔ１１１〜Ｔ１１４と、処理Ｂを実行可能な期間である日時Ｔ１２１〜Ｔ１２４とに共通の期間である日時Ｔ１２１〜Ｔ１１４の期間内の日時Ｔ１３１を、処理Ａの終了予定日時かつ処理Ｂの開始予定日時に決定する。
【００４３】
そして、スケジューリング部１９６は、日時Ｔ１３１から処理Ａの実行時間推定値だけ遡った日時Ｔ１１３を処理Ａの開始予定日時に決定する。また、スケジューリング部１９６は、日時Ｔ１３１から処理Ｂの実行時間だけ後の日時Ｔ１２２を処理Ｂの終了予定日時に決定する。これにより、スケジューリング部１９６は、処理Ａと処理Ｂとを、日時Ｔ１１３〜Ｔ１２２の期間に纏めてリソースＡに割り振っており、これによってリソースＡを提供する処理サーバ装置２００の稼働時間を纏めている。
スケジューリング部１９６が、処理Ａの終了予定日時と処理Ｂの開始予定日時が同じになるようにスケジューリングを行うことで、処理Ｂの実行時にリソースへのログイン及び初期化処理（イニシャライズ）を行う必要がない。この点でリソースの使用時間を短くすることができ、リソースの使用が有償の場合には課金を低減させることができる。
【００４４】
スケジューリング部１９６がさらに、日時Ｔ１１１から処理Ａの実行時間推定値だけ後の日時Ｔ１１２以降、かつ、日時Ｔ１２４から処理Ｂの実行時間推定低だけ遡った日時Ｔ１２３以前の期間内の日時を処理Ａの終了予定日時かつ処理Ｂの開始予定日時に決定することで、処理Ａ、Ｂとも実行可能期間内に実行されるようにスケジューリングを行うことができる。図３の例では、日時Ｔ１１２〜Ｔ１２３の期間と日時Ｔ１２１〜Ｔ１１４の期間とに共通の期間は日時Ｔ１２１〜Ｔ１１４の期間であり、スケジューリング部１９６は、この期間内に処理Ａの終了予定日時かつ処理Ｂの開始予定日時を決定している。
【００４５】
スケジューリング部１９６が、日時Ｔ１２１〜Ｔ１１４の期間内でランダムに処理Ａの終了予定日時かつ処理Ｂの開始予定日時を決定するようにしてもよい。あるいはスケジューリング部１９６が、日時Ｔ１２１〜Ｔ１１４の中間の日時など、ある特定の日時を処理Ａの終了予定日時かつ処理Ｂの開始予定日時に決定するようにしてもよい。
【００４６】
また、スケジューリング部１９６が、料金の比較的安いリソースなど特定のリソースに優先的に処理を割り当てるようにしてもよい。
ここで、サービス提供者（サービス提供システム１の管理者）が、サービス利用者からの処理要求に対し、クラウドで仮想マシンを提供している事業者から仮想マシンを借りて処理を行う場合を考える。
例えばクラウドで仮想マシンを提供している事業者が複数ある場合、事業者毎に料金が異なることが考えられる。このような場合、スケジュールに余裕がないと、料金の安い事業者の仮想マシンが使用中で借りられず、料金の高い事業者の仮想マシンを借りる必要が生じることが考えられる。これに対し、スケジュールに余裕を持って仮想マシンを借りることができれば、料金の安い事業者の仮想マシンを予約するか、あるいは、料金の安い事業者の仮想マシンに空きがあるときに、その仮想マシンを借りて処理を行うことができる。サービス提供者は、このような仮想マシンの利用料金の違いを、サービス利用者に対する料金に反映させることができる。
サービス提供者が、事業者にバッチ処理でサービス提供を依頼する場合も同様である。
【００４７】
図４は、特定のリソースに優先的に処理を割り当てたスケジューリングの例を示す図である。図４の横軸は日時を示す。
図４の例では、スケジューリング部１９６は、処理Ｃ〜Ｇを、リソースＡ、Ｂの２つのリソースに割り当てる。その際、リソースＡに処理を実行させる方がリソースＢに処理を実行させるよりも料金が安価であるため、スケジューリング部１９６は、できるだけ多くの処理をリソースＡに割り当て、リソースＡに割り当てられない処理をリソースＢに割り当てる。
【００４８】
具体的には、スケジューリング部１９６は、処理Ｃ、Ｅ、Ｆ及びＧをリソースＡに割り当て、処理Ｃ及びＥとの実行可能期間の重なりによってリソースＡに割り当てられなかった処理ＤをリソースＢに割り当てている。
このように、スケジューリング部１９６が可能な限り処理をリソースＡに割り当てるスケジューリングを行うことで、リソース使用料金を比較的安く抑えることができる。
【００４９】
スケジューリング部１９６が、処理を行うリソースが不足しているか否かを判定するようにしてもよい。処理を行うリソースが不足していることをスケジューリング部１９６がスケジューリング段階で検出することで、処理計画装置１００の管理者は、早めにリソースを手配することができる。処理計画装置１００の管理者は、時間に余裕を持ってリソースを手配できることで、料金が比較的安いリソースを探して手配することができ、この点で処理コストを抑制することができる。
【００５０】
スケジューリング部１９６が、スケジューリングの結果に基づいて、処理要求毎に処理開始期限を決定する。具体的には、スケジューリング部１９６は、スケジュールにおける各処理の開始予定日時を各処理の開始期限に決定する。クライアントシステム９１０は、処理開始期限を表示することで、期限内に処理を要求するようクライアントシステム９１０のユーザであるサービス利用者に促す。
図５は、クライアントシステム９１０が処理開始期限を表示する表示画面の例を示す図である。図５の例で、クライアントシステム９１０は、処理開始期限欄と、納品期限欄と、閉じるボタンとを含む処理スケジュール画面を表示している。
【００５１】
処理開始期限は、スケジューリング部１９６が決定した処理開始期限の表示欄である。
納品期限欄は、データ処理要求に対する処理結果の回答期限の表示欄である。この回答期限を納品期限とも称する。
閉じるボタンは、処理スケジュール画面を閉じるよう指示するユーザ操作を受けるためのボタンアイコンである。サービス利用者が閉じるボタンを操作（例えばマウスクリック）すると、クライアントシステム９１０は、処理スケジュール画面の表示を終了して前画面へ戻る。
クライアントシステム９１０が表示する処理開始期限に従ってサービス利用者がデータ処理を要求することで、処理が輻輳する可能性を低減させることができる。
【００５２】
処理サーバ装置２００は、サービス提供システム１が提供するデータ処理サービスにおけるデータ処理を実行する。処理サーバ装置２００は、例えばメインフレーム（Mainframe）又はワークステーション等のコンピュータを用いて構成される。
処理サーバ装置２００が実行するデータ処理の分野及び内容は特定の分野及び内容に限定されない。
例えば、医療分野において、処理サーバ装置２００がカルテ又はレセプト情報から薬剤の使用状況を抽出して薬剤の消費量あるいは在庫状況を予測するようにしてもよい。あるいは、製造分野において、処理サーバ装置２００が工場の生産管理情報から材料の使用量を抽出して在庫状況を予測する、あるいは、発注タイミングを提案するようにしてもよい。
【００５３】
クライアントシステム９１０は、サービス提供システム１に対してサービス提供を要求する。具体的には、クライアントシステム９１０はデータ処理要求を処理計画装置１００に送信し、要求に対する応答にて処理結果を受信する。クライアントシステム９１０は、例えばパソコン（Personal Computer；ＰＣ）又はワークステーション等のコンピュータを用いて構成される。
【００５４】
第一通信ネットワーク３００は、処理計画装置１００と処理サーバ装置２００との通信を仲介する通信ネットワークである。
第二通信ネットワーク９２０は、処理計画装置１００とクライアントシステム９１０との通信を仲介する通信ネットワークである。
第一通信ネットワーク３００、第二通信ネットワーク９２０の種類はいずれも特定の種類に限定されない。一例として、第一通信ネットワーク３００はサービス提供システム１専用のＬＡＮ（Local Area Network）であってもよく、第二通信ネットワーク９２０はインターネット（Internet）であってもよいが、これらに限定されない。
また、第一通信ネットワーク３００及び第二通信ネットワーク９２０が１つの通信ネットワークとして構成されていてもよい。
【００５５】
次に、図６〜図８を参照してサービス提供システム１の動作について説明する。
図６は、処理サーバ装置２００がデータ処理要求に対して行う処理の手順の例を示すフローチャートである。処理サーバ装置２００は、処理計画装置１００からデータ処理要求を受信すると図６の処理を開始する。
【００５６】
（ステップＳ１１１）
処理サーバ装置２００は、処理対象データを取得する。具体的には、処理サーバ装置２００は、処理対象データを含むデータ処理要求を処理計画装置１００から受信する。そして、処理サーバ装置２００は、受信したデータ処理要求から処理対象データを読み出す。
ステップＳ１１１の後、ステップＳ１１２へ進む。
【００５７】
（ステップＳ１１２）
処理サーバ装置２００は、処理対象データに対して前処理を行う。例えば、処理サーバ装置２００は、処理対象データを処理し易いデータ形式に変換する。
ステップＳ１１２の後、ステップＳ１１３へ進む。
【００５８】
（ステップＳ１１３）
処理サーバ装置２００は、機械学習にてデータ処理を行う。
ステップＳ１１３の後、ステップＳ１１４へ進む。
（ステップＳ１１４）
処理サーバ装置２００は、ステップＳ１１３でのデータ処理の結果を処理計画装置１００へ通知（送信）する。
ステップＳ１１４の後、図６の処理を終了する。
【００５９】
図７は、処理サーバ装置２００がデータ処理を行う手順の例を示すフローチャートである。図７の処理で、処理サーバ装置２００は、機械学習にてデータ処理を行う。
処理サーバ装置２００は、図６のステップＳ１１３で図７の処理を行う。
（ステップＳ１２１）
処理サーバ装置２００は、モデル構築用データセット、及び、モデル検証用データセットを決定する。具体的には、処理サーバ装置２００は、処理対象データをモデル構築用データセットとモデル検証用データセットとに分割する。
【００６０】
例えば、処理サーバ装置２００は、処理対象データとして、説明変数値及び目的変数値を示す複数の学習用データ（学習用データセット）を取得する。そして、処理サーバ装置２００は、取得した学習用データセットのうち、例えば１割のデータなど幾つかのデータを検証用データセットに決定し、残りのデータをモデル構築用データセットに決定する。
ここでいう目的変数は、データ処理における取得対象の値を示す変数、すなわち、データ処理結果を示す変数である。ここでいう説明変数は、データ処理結果を算出する元となる値を示す変数である。
ステップＳ１２１の後、ステップＳ１２２へ進む。
【００６１】
（ステップＳ１２２）
処理サーバ装置２００は、解探索のステップ幅など機械学習における各種パラメータの値を初期設置する。ここでのパラメータ値の初期設定方法は、特定の方法に限定されない。例えば、処理サーバ装置２００が、パラメータの初期設定値をランダムに決定するようにしてもよいし、予め定められている値に決定するようにしてもよいし、前回の学習結果に基づいて決定するようにしてもよい。
ステップＳ１２２の後、ステップＳ１２３へ進む。
【００６２】
（ステップＳ１２３）
処理サーバ装置２００は、モデル構築用データセットを用いて機械学習アルゴリズムを実行し、学習結果を取得する。例えば、処理サーバ装置２００は、説明変数値の入力を受けて目的変数値を出力する関数を学習結果として算出する。
ステップＳ１２３の後、ステップＳ１２４へ進む。
【００６３】
（ステップＳ１２４）
処理サーバ装置２００は、ステップＳ１２３で得られた学習結果を、モデル検証用データセットを用いて評価する。
例えば、処理サーバ装置２００は、学習結果として得られた関数にモデル検証用データに含まれる説明変数値を入力し、得られた目的変数値とモデル検証用データに含まれる説明変数値との差の大きさ（差の絶対値）を算出する。処理サーバ装置２００は、モデル検証用データセットに含まれるモデルデータの各々について、かかる差の大きさを算出し、得られた差の大きさ平均値を、学習結果の評価値として算出する。
【００６４】
（ステップＳ１２５）
処理サーバ装置２００は、ステップＳ１２４で得られた評価値に基づいて合否の判定を行う。具体的には、処理サーバ装置２００は、ステップＳ１２４で得られた評価値と閾値とを比較する。評価値が閾値以下である場合、処理サーバ装置２００は、学習結果を合格と評価する。一方、評価値が閾値より大きい場合、処理サーバ装置２００は、学習結果を不合格と評価する。
【００６５】
ステップＳ１２５で学習結果を合格と評価した場合（ステップＳ１２５：ＹＥＳ）、図７の処理を終了し、図６の処理へ戻る。
一方、ステップＳ１２５で学習結果を不合格と評価した場合（ステップＳ１２５：ＮＯ）、ステップＳ１３１へ進む。
【００６６】
（ステップＳ１３１）
処理サーバ装置２００は、機械学習における各種パラメータの値を更新する。
ステップＳ１３１の後、ステップＳ１２３へ戻る。
ステップＳ１２１からＳ１２５までの一連の処理、ステップＳ１３１からＳ１２５までの一連の処理は、それぞれ機械学習における一回の処理の例に該当する。
処理サーバ装置２００が図７の処理に用いる学習アルゴリズムは特定のアルゴリズムに限定されず、図７のように学習結果を評価して処理を繰り返すことが可能なものであればよい。
【００６７】
図８は、処理計画装置１００がデータ処理の予約登録要求に対して行う処理の例を示すフローチャートである。処理計画装置１００は、データ処理の予約登録要求を複数受けて処理計画装置１００の処理を行う。例えば、処理計画装置１００が、所定期間の間クライアントシステム９１０からの予約登録要求を記憶しておき、所定期間経過後に纏めてスケジューリングを行うようにしてもよい。
（ステップＳ２１１）
期限情報取得部１９１が、通信部１１０が受信した複数のデータ処理要求の各々について、処理要求期限情報及び処理結果出力期限情報を取得する。
ステップＳ２１１の後、ステップＳ２１２へ進む。
【００６８】
（ステップＳ２１２）
処理時間要素推定部１９４及び処理時間推定部１９５が、データ処理に要する処理時間を上記のように機械学習にて算出する。
通信部１１０が予約登録要求毎に、予約対象のデータ処理におけるデータ量の情報を含む時期情報予約を受信し、処理時間要素推定部１９４がこのデータ量の情報に基づいて処理時間要素を算出するようにしてもよい。あるいは、処理時間要素推定部１９４が、過去のデータ処理におけるデータ量に基づいて、予約登録要求毎に予約対象のデータ処理におけるデータ量を推定するようにしてもよい。
ステップＳ２１２の後、ステップＳ２１３へ進む。
【００６９】
（ステップＳ２１３）
スケジューリング部１９６は、リソースが不足しているか否かを判定する。具体的には、スケジューリング部１９６は、データ処理に要する処理時間の合計値と、利用可能なリソースが処理可能な処理時間の合計値とを比較する。データ処理に要する処理時間の合計値が、利用可能なリソースが処理可能な処理時間の合計値以下である、サービス提供システム１は、リソースが足りていると判定する。一方、データ処理に要する処理時間の合計値が、利用可能なリソースが処理可能な処理時間の合計値より大きい場合、サービス提供システム１は、リソースが不足していると判定する。一方、リソースが足りていると判定した場合（ステップＳ２１３：ＮＯ）、ステップＳ２２１へ進む。一方、リソースが不足していると判定した場合（ステップＳ２１３：ＹＥＳ）、ステップＳ２３１へ進む。
【００７０】
（ステップＳ２２１）
スケジューリング部１９６は、予約対象となっているデータ処理のスケジューリングを行う。予約対象となっている全てのデータ処理のスケジューリングを完了すると、スケジューリング部１９６は、スケジューリングの結果に基づいてデータ処理の予約を行う。具体的には、スケジューリング部１９６は、予約対象となっているデータ処理毎に、データ処理の開始予定日時情報及びデータ処理結果の出力予定日時情報とを含む予約情報を記憶部１８０に記憶させることで、予約の登録を行う。
ステップＳ２２１の後、ステップＳ２２２へ進む。
【００７１】
（ステップＳ２２２）
スケジューリング部１９６は、通信部１１０を介して予約登録要求元のクライアントシステム９１０へ、スケジュールを通知する。例えば、スケジューリング部１９６は、処理開始期限情報と結果出力期限情報とを含む予約完了通知を、通信部１１０を介して予約登録要求元のクライアントシステム９１０へ送信する。予約完了通知を受けたクライアントシステム９１０は、図５の例のように、処理開始期限及び結果出力期限など、データ処理のスケジュールの情報を表示する。
ステップＳ２２２の後、図８の処理を終了する。
【００７２】
（ステップＳ２３１）
スケジューリング部１９６は、リソースが不足していることを示す警報を表示部１２０に表示させる。この警報にて表示部１２０は、近い将来、リソースが不足しそうなことをサービス提供者（サービス提供装置１の管理者）に通知して事前に対策を促すことができる。また、リソースが不足した場合に、サービス提供システム１が自動的にリソースの追加割り当てを行うようにしてもよい。
ステップＳ２３１の後、図８の処理を終了する。この場合、データ処理の予約登録は行われていない。例えば、サービス提供システム１の管理者が不足分のリソースの追加を行った後、処理計画装置１００に対して図８の処理を再度行うよう指示する。
【００７３】
以上のように、処理時間要素推定部１９４は、予約登録を要求されている複数の処理要求の各々について、処理要求における処理対象データ量に基づいて、処理の繰り返し回数及び１回あたりの処理時間を推定する。処理時間推定部１９５は、これら複数の処理要求の各々について、処理の繰り返し回数及び１回あたりの処理時間に基づいて、要求される処理の実行時間を推定する。スケジューリング部１９６は、これら処理要求毎に設定されている処理結果出力期限と、これら処理要求毎に推定された実行時間とに基づいて、これら複数の処理要求の実行のスケジューリングを行う。
【００７４】
これにより、処理計画装置１００では、処理時間（要求される処理の実行時間）の推定精度が高まることが期待され、処理時間の推定精度が高まることで処理のスケジューリングの精度が高まることが期待される。特に、処理時間推定部１９５が、処理の繰り返し回数及び１回あたりの処理時間に基づくことで、処理の繰り返し回数及び１回あたりの処理時間の傾向を反映させて処理時間を推定することができる。この点で、処理計画装置１００によれば、単に処理対象データに基づく場合と比較して処理時間の推定精度が高まり、処理のスケジューリングの精度が高まることが期待される。
【００７５】
また、期限情報取得部１９１は、予約登録を要求されている複数の処理要求の各々について、処理要求期限を示す処理要求期限時情報、及び、処理結果出力期限を示す処理結果出力期限情報を取得する。スケジューリング部１９６は、各処理の実行時間の推定値、処理結果出力期限、処理要求期限、及び、処理を行うリソースの各条件を制約条件として、制約条件を満たすスケジュールを決定する。
クライアントシステム９１０が、得られたスケジュールに従ってデータ処理を要求することで、処理計画装置１００は、処理結果出力期限までに処理結果をクライアントシステム９１０へ出力できるように、処理サーバ装置２００へ処理を割り振ることができる。
【００７６】
また、スケジューリング部１９６は、処理を行うリソースを提供する処理サーバ装置２００の稼働時間を纏めるようにスケジューリングを行う。これにより、処理サーバ装置２００が纏めて実行する処理のうち、後から実行する処理については、例えばクラウド上で借りている仮想マシンなど、処理に利用するマシンに対するログイン処理及び初期化処理をやり直す必要がない。この点で、処理計画装置１００によれば処理サーバ装置２００を効率よく利用することができ、その分だけ処理サーバ装置２００の利用料金を低減させることができる。
【００７７】
また、スケジューリング部１９６は、処理を行うリソースが不足しているか否かを判定する。
処理を行うリソースが不足していることをスケジューリング部１９６がスケジューリング段階で検出することで、処理計画装置１００の管理者は、早めにリソースを手配することができる。処理計画装置１００の管理者は、時間に余裕を持ってリソースを手配できることで、料金が比較的安いリソースを探して手配することができ、この点で処理コストを抑制することができる。
【００７８】
また、スケジューリング部１９６は、スケジューリングの結果に基づいて、処理要求毎に処理開始期限を決定する。
スケジューリング部１９６が決定した処理開始期限に従ってサービス利用者がデータ処理を要求することで、処理が輻輳する可能性を低減させることができる。
【００７９】
次に、図９を参照して本発明の最小構成について説明する。
図９は、本発明に係る処理計画装置の最小構成の例を示す図である。図９に示す処理計画装置１０は、処理時間要素推定部１１と、処理時間推定部１２と、スケジューリング部１３とを備える。
かかる構成にて、処理時間要素推定部１１は、複数の処理要求の各々について、処理要求における処理対象データ量に基づいて、処理の繰り返し回数及び１回あたりの処理時間を推定する。処理時間推定部１２は、複数の処理要求の各々について、処理の繰り返し回数及び１回あたりの処理時間に基づいて、要求される処理の実行時間を推定する。スケジューリング部１３は、処理要求毎に設定されている処理結果出力期限と、処理要求毎に推定された実行時間とに基づいて、複数の処理要求の実行のスケジューリングを行う。
【００８０】
これにより、処理計画装置１０では、処理時間（要求される処理の実行時間）の推定精度が高まることが期待され、処理時間の推定精度が高まることで処理のスケジューリングの精度が高まることが期待される。特に、処理時間推定部１２が、処理の繰り返し回数及び１回あたりの処理時間に基づくことで、処理の繰り返し回数及び１回あたりの処理時間の傾向を反映させて処理時間を推定することができる。この点で、処理計画装置１０によれば、単に処理対象データに基づく場合と比較して処理時間の推定精度が高まり、処理のスケジューリングの精度が高まることが期待される。
【００８１】
なお、処理計画装置１００の全部または一部を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００８２】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００８３】
１  サービス提供システム
１０、１００  処理計画装置
１１、１９４  処理時間要素推定部
１２、１９５  処理時間推定部
１３、１９６  スケジューリング部
１１０  通信部
１２０  表示部
１３０  操作入力部
１８０  記憶部
１９０  制御部
１９１  期限情報取得部
１９２  データ内容係数取得部
１９３  処理アルゴリズム係数取得部
１９７  処理予約受付部
２００  処理サーバ装置
３００  第一通信ネットワーク
９１０  クライアントシステム
９２０  第二通信ネットワーク
【図１】
2019003568.tif 000003
【図２】
2019003568.tif 000004
【図３】
2019003568.tif 000005
【図４】
2019003568.tif 000006
【図５】
2019003568.tif 000007
【図６】
2019003568.tif 000008
【図７】
2019003568.tif 000009
【図８】
2019003568.tif 000010
【図９】
2019003568.tif 000011