(57)【要約】      （修正有）【課題】スケジューリングの計算時間の短縮を図ったスケジューリング装置を提供する。【解決手段】スケジューリング装置１００のスケジュール探索部は、生成部および選択部を備える。生成部は、スケジュールを一部組み替える組み替え方を定義した複数の近傍オペレータをグループ単位で基準解に対して適用し、スケジュール候補を生成する。選択部は、スケジュール候補の中から、基準解よりも評価が良いスケジュール候補を新たな基準解として選択する。生成部は、第１のグループに属する近傍オペレータにより生成されたスケジュール候補の中に基準解よりも評価が良いものが存在しない場合に、順序関係において第１のグループの次に位置する第２のグループに属する近傍オペレータを適用してスケジュール候補を新たに生成し、評価が良いものが存在する場合に、第２のグループを適用しない。【選択図】図１
2019057075.tif 000002
【特許請求の範囲】
【請求項１】
スケジュールを一部組み替える組み替え方を定義した複数の近傍オペレータであって、順序関係を有する複数のグループにグループ化された複数の近傍オペレータを、前記順序関係に従ってグループ単位で基準解に対して適用し、予め設定された制約を満たすスケジュール候補を生成する生成部と、
前記スケジュール候補の中から、前記基準解よりも評価が良いスケジュール候補を新たな基準解として選択する選択部と、
を備え、
前記生成部は、前記複数のグループのうちの第１のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在しない場合に、前記複数のグループのうちの、前記順序関係において前記第１のグループの次に位置する第２のグループに属する近傍オペレータを前記基準解に適用することにより前記スケジュール候補を新たに生成し、前記第１のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在する場合に、前記第２のグループを適用しない、スケジューリング装置。
【請求項２】
前記基準解は、割当て対象のタスクをリソースおよび時間を指定せずに仮に割当てた複数の第１割当て部、および前記割当て対象のタスクをリソースおよび時間を指定して割当てた複数の第２割当て部を含み、
前記複数の近傍オペレータは、
ある第１割当て部に存在するタスクを、前記ある第１割当て部に対応する第２割当て部に移動させる組み替えを行う第１の近傍オペレータと、
ある第１割当て部に存在するタスクを、他の第１割当て部に移動させる組み替えを行う第２の近傍オペレータと、
を含む、請求項１に記載のスケジューリング装置。
【請求項３】
前記複数の近傍オペレータは、ある第１割当て部に存在するタスクを、前記ある第１割当てフィールドに対応する第２割当て部に存在するタスクを前記第２割当て部内で移動させた上で、前記第２割当て部に移動させる組み替えを行う第３の近傍オペレータをさらに含み、
前記第３の近傍オペレータは、前記第１の近傍オペレータが属するグループおよび前記第２の近傍オペレータが属するグループよりも前記順序関係において後に位置するグループに属する、請求項２に記載のスケジューリング装置。
【請求項４】
前記制約は、
作業員の勤務可能日および勤務可能時間を含む勤務シフト情報と、
割当て対象のタスクが存在する物件と前記作業員が駐在する拠点とを含む複数のサイト間の移動時間に関する移動時間情報と、
割当て対象のタスクに関する制約を含むタスク情報と、
を含む、請求項１乃至３のいずれか一項に記載のスケジューリング装置。
【請求項５】
前記スケジュール候補ごとに、予め定められた複数の評価関数を前記複数の評価関数それぞれについて予め定められた重みで線形結合することによって評価値を算出する評価部をさらに備え、
前記選択部は、前記評価値と閾値との比較に基づいて、前記スケジュール候補の評価が前記基準解よりも高いか否かを判定する、請求項１乃至４のいずれか一項に記載のスケジューリング装置。
【請求項６】
前記複数の評価関数は、
作業員の移動時間の総和を評価する距離評価関数と、
仮割当て状態のタスクに関する量を評価する仮割当て評価関数と、
を含む、請求項５に記載のスケジューリング装置。
【請求項７】
前記複数の評価関数は、仮割当て状態のタスクの物件と割当て済みのタスクの物件との位置関係に基づき近接度を評価する近接度評価関数を含む、請求項５または６に記載のスケジューリング装置。
【請求項８】
コンピュータが実行するスケジューリング方法であって、
スケジュールを一部組み替える組み替え方を定義した複数の近傍オペレータであって、順序関係を有する複数のグループにグループ化された複数の近傍オペレータを、前記順序関係に従ってグループ単位で基準解に対して適用し、予め設定された制約を満たすスケジュール候補を生成することと、
前記スケジュール候補の中から、前記基準解よりも評価が良いスケジュール候補を新たな基準解として選択することと、
を備え、
前記スケジュール候補を生成することは、前記複数のグループのうちの第１のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在しない場合に、前記複数のグループのうちの、前記順序関係において前記第１のグループの次に位置する第２のグループに属する近傍オペレータを前記基準解に適用することにより前記スケジュール候補を新たに生成し、前記第１のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在する場合に、前記第２のグループを適用しない、スケジューリング方法。
【請求項９】
スケジュールを一部組み替える組み替え方を定義した複数の近傍オペレータであって、順序関係を有する複数のグループにグループ化された複数の近傍オペレータを、前記順序関係に従ってグループ単位で基準解に対して適用し、予め設定された制約を満たすスケジュール候補を生成する手段、および
前記スケジュール候補の中から、前記基準解よりも評価が良いスケジュール候補を新たな基準解として選択する手段
としてコンピュータを機能させるためのプログラムであって、
前記スケジュール候補を生成する手段は、前記複数のグループのうちの第１のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在しない場合に、前記複数のグループのうちの、前記順序関係において前記第１のグループの次に位置する第２のグループに属する近傍オペレータを前記基準解に適用することにより前記スケジュール候補を新たに生成し、前記第１のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在する場合に、前記第２のグループを適用しない、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、スケジューリング装置およびスケジューリング方法に関する。
【背景技術】
【０００２】
様々な制約を考慮した巡回スケジュールを自動作成する組み合わせ最適化方式には、線形計画法などの厳密解を高速にもとめる厳密最適化方式と、近傍探索法など限られた計算時間の範囲でより良い解を求める近似最適化方式が知られている。近傍探索法は、近傍オペレータによって初期解（初期スケジュール）を少しずつ変更し改善していくもので、タブー探索法や遺伝的アルゴリズムのようなメタヒューリスティクスと呼ばれる様々な近傍探索法が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−１９５０６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
大規模な巡回スケジュールの近似最適化では、解に対して様々な近傍オペレータを適用することによって多数の解候補を生成し、解候補の中から評価値が最大となるものを新たな解として採用する探索処理を繰り返すことで解の改善を進める。各探索処理において多数の解候補が生成されるため、解候補が制約を満たすか否かを判定したり、解候補の評価値を算出するために、計算時間がかかる。したがって、より良い解を得るために多大な時間がかかる。
【０００５】
本発明が解決しようとする課題は、スケジューリングの計算時間の短縮を図ったスケジューリング装置およびスケジューリング方法を提供することである。
【課題を解決するための手段】
【０００６】
一実施形態に係るスケジューリング装置は、生成部および選択部を備える。前記生成部は、スケジュールを一部組み替える組み替え方を定義した複数の近傍オペレータであって、順序関係を有する複数のグループにグループ化された複数の近傍オペレータを、前記順序関係に従ってグループ単位で基準解に対して適用し、予め設定された制約を満たすスケジュール候補を生成する。前記選択部は、前記スケジュール候補の中から、前記基準解よりも評価が良いスケジュール候補を新たな基準解として選択する。前記生成部は、前記複数のグループのうちの第１のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在しない場合に、前記複数のグループのうちの、前記順序関係において前記第１のグループの次に位置する第２のグループに属する近傍オペレータを前記基準解に適用することにより前記スケジュール候補を新たに生成し、前記第１のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在する場合に、前記第２のグループを適用しない。
【図面の簡単な説明】
【０００７】
【図１】実施形態に係るスケジューリング装置を示すブロック図。
【図２】図１に示したスケジューリング装置のスケジューリング処理手順の一例を示すフローチャート。
【図３】比較例に係る、近傍探索を用いたスケジュール探索過程を説明する図。
【図４】実施形態に係る、近傍探索を用いたスケジュール探索過程を説明する図。
【図５】適用例に係るサイト間の位置関係を示す図。
【図６】適用例に係る制約の一部である、図５に示したサイト間の移動時間に関する情報を示す図。
【図７】適用例に係る制約の一部である、作業員の勤務シフトに関する情報を示す図。
【図８】適用例に係る制約の一部である、タスクに関する情報を示す図。
【図９】適用例に係る評価規則に対応する評価関数のリストを示す図。
【図１０】適用例に係る近傍オペレータのリストを示す図。
【図１１】適用例に係るスケジュールフォーマットの一例を示す図。
【図１２】図７から図１０に示される条件に従って行われる探索の過程を説明する図。
【図１３】図７から図１０に示される条件に従って行われる探索の過程を説明する図。
【図１４】図７から図１０に示される条件に従って行われる探索の過程を説明する図。
【図１５】図７から図１０に示される条件に従って行われる探索の過程を説明する図。
【図１６】図７から図１０に示される条件に従って行われる探索の過程を説明する図。
【図１７】図７から図１０に示される条件に従って行われる探索の過程を説明する図。
【図１８】図７から図１０に示される条件に従って行われる探索の過程を説明する図。
【図１９】図７から図１０に示される条件に従って行われる探索の過程を説明する図。
【図２０】図１に示したスケジューリング装置を実現するハードウェア構成の一例を示すブロック図。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら実施形態を説明する。
【０００９】
図１は、一実施形態に係るスケジューリング装置１００を概略的に示している。図１に示されるように、スケジューリング装置１００は、スケジュール探索部１０１、制約充足判定部１０４、スケジュール評価部１０５、スケジュール出力部１０６、スケジュール格納部１１１、近傍オペレータ格納部１１４、制約格納部１１５、およびスケジュール候補格納部１１６を備える。
【００１０】
スケジュール格納部１１１は、作成中のスケジュールに関する情報を格納する。このスケジュールは、後述する探索処理において基準解として使用される。スケジュール格納部１１１は、１つまたは複数の仮割当て部１１２および１つまたは複数の詳細割当て部１１３を含む。仮割当て部１１２の数および詳細割当て部１１３の数は、作成すべきスケジュールの内容に応じて変化する。例えば、複数日にわたるスケジューリングの場合、スケジュール格納部１１１は、日数分の仮割当て部１１２および日数分の詳細割当て部１１３を含む。
【００１１】
仮割当て部１１２は、リソースを指定せずに仮に割当てたタスク（作業）、すなわち、仮割当て状態のタスクに関する情報を格納する。詳細割当て部１１３は、リソースを指定して割当てたタスクに関する情報を格納する。タスクは、リソースだけでなく時間も指定して、割当てられていてもよい。リソースは、タスクを行う対象（主体）を指す。リソースは、例えば、人間（例えば作業員）である。なお、リソースは、機械であってもよい。
【００１２】
近傍オペレータ格納部１１４は、スケジュールを一部組み替える組み替え方を定義した複数の近傍オペレータを格納する。近傍オペレータは、順序関係を有する複数のグループにグループ化されている。各グループは、１つまたは複数の近傍オペレータを含む。本実施形態では、近傍オペレータは、グループ化された状態でスケジューリング装置１００に予め組み込まれている。なお、近傍オペレータは、スケジューリング装置１００に追加または更新されてもよい。例えば、スケジューリング装置１００は、インターネットなどの通信ネットワークを通じて外部装置から追加の近傍オペレータを受け取る。
【００１３】
近傍オペレータ格納部１１４に格納されている近傍オペレータの一部がスケジューリングに使用されてもよい。例えば、ユーザがスケジューリングに使用する近傍オペレータを複数選択すると、スケジューリング装置１００が選択された近傍オペレータをグループ化する。スケジューリング装置１００は、グループ化のために、近傍オペレータごとの計算コストを表す情報を保持していてもよい。例えば、計算コストが低い近傍オペレータは、若い（順序関係で先に位置する）グループに属するようにグループ化される。なお、ユーザがグループ化を行ってもよい。
【００１４】
制約格納部１１５は、スケジュールを作成する上で満たすべき条件である制約を表す情報を格納する。制約は、例えば、リソースに関する制約条件およびタスクに関する制約条件を含む。制約は、例えば、ユーザによって設定される。
【００１５】
スケジュール探索部１０１は、近傍オペレータ格納部１１４に格納されている近傍オペレータを用いた近傍探索を行う。スケジュール探索部１０１は、スケジュール候補生成部１０２およびスケジュール選択部１０３を備える。
【００１６】
スケジュール候補生成部１０２は、基準解に対して上記の順序関係に従ってグループ単位で近傍オペレータを適用し、制約格納部１１５に格納されている制約を満たすスケジュール候補を生成する。スケジュール候補生成部１０２は、生成したスケジュール候補を表す情報をスケジュール候補格納部１１６に格納する。
【００１７】
具体的には、スケジュール候補生成部１０２は、基準解に対してあるグループに属する近傍オペレータを適用し、スケジュールの組み替え候補を生成する。制約充足判定部１０４は、制約格納部１１５を参照し、スケジュール候補生成部１０２によって生成された組み替え候補が制約を満たすか否かを判定し、判定結果をスケジュール候補生成部１０２に与える。スケジュール候補生成部１０２は、スケジュール候補生成部１０２から判定結果を受け取り、生成した組み替え候補から制約を満たさない組み替え候補を除去し、残った組み替え候補をスケジュール候補とする。このようにして、スケジュール候補生成部１０２は、制約を満たすスケジュール候補を生成する。なお、制約の一部が組み替え候補の生成において考慮されてもよい。
【００１８】
スケジュール選択部１０３は、スケジュール候補生成部１０２によって生成されたスケジュール候補の中から、基準解よりも評価が良いスケジュール候補を選択する。
【００１９】
スケジュール評価部１０５は、予め設定された評価規則に基づいて、スケジュール候補格納部１１６に格納されているスケジュール候補を評価する。具体的には、スケジュール評価部１０５は、スケジュール候補格納部１１６からスケジュール候補を順次に読み出し、スケジュール候補それぞれに評価規則を適用することによりスケジュール候補それぞれの評価値を算出する。評価規則は、例えば、複数の評価関数と、複数の評価関数それぞれに対応する重みと、を含む。評価関数の例は、作業員の移動時間の総和を評価する距離評価関数、仮割当て状態のタスクに関する量を評価する仮割当て評価関数、および仮割当て状態のタスクの物件と割当て済みのタスクの物件との位置関係に基づき近接度を評価する近接度評価関数を含む。スケジュール評価部１０５は、スケジュール候補ごとに、複数の評価関数をそれぞれの重みで線形結合することによって評価値を算出する。スケジュール評価部１０５は、算出したスケジュール候補の評価値を表すスケジュール候補評価情報をスケジュール選択部１０３に与える。本実施形態では、評価値は、評価が良い（高い）ほど値が小さくなるように定義される。なお、評価値は、評価が良いほど値が大きくなるように定義されてもよい。
【００２０】
スケジュール選択部１０３は、スケジュール評価部１０５からスケジュール候補評価情報を受け取り、さらに、スケジュール格納部１１１から基準解の評価値である基準評価値を表す基準評価情報を受け取る。スケジュール選択部１０３は、評価値が基準評価値を下回るスケジュール候補を近傍解として選択する。スケジュール選択部１０３は、近傍解であるスケジュール候補をスケジュール格納部１１１に格納する。このスケジュール候補は、次の基準解として採用される。評価値が基準評価値を下回るスケジュール候補が複数ある場合には、スケジュール選択部１０３は、それらのうちの任意の１つを選択する。例えば、スケジュール選択部１０３は、評価値が基準評価値を下回り、かつ、評価値が最も大きいスケジュール候補を選択する。
【００２１】
評価値が基準評価値を下回るスケジュール候補が存在しない場合には、スケジュール選択部１０３は、選択を行わず、選択を行わなかったことをスケジュール候補生成部１０２に通知する。スケジュール候補生成部１０２は、スケジュール選択部１０３から通知を受けると、次のグループに属する探索オペレータを用いて探索を続ける。
【００２２】
スケジュール出力部１０６は、スケジュール探索部１０１による探索が終了した後に、スケジュール格納部１１１に格納されているスケジュールを出力する。出力されるスケジュールは、詳細割当て部１１３に格納されている情報に対応する。
【００２３】
次に、スケジューリング装置１００の動作について説明する。  
図２は、スケジューリング装置１００のスケジューリング処理手順の一例を示している。図２のステップＳ２０１では、まず、初期解（初期スケジュール）が生成され、初期解の評価値が算出され、探索回数を表すカウンタｉが初期化される。例えば、スケジュール探索部１０１は、割当て対象のタスクをすべて仮割当て部のいずれかに格納したスケジュールを初期解として生成する。初期解は、基準解としてスケジュール格納部１１１に格納される。スケジュール評価部１０５は、初期解の評価値を算出する。初期解の評価値は、基準評価値としてスケジュール格納部１１１に格納される。カウンタｉはゼロに戻される。
【００２４】
ステップＳ２０２では、グループを識別するカウンタｇが初期化される。例えば、カウンタｇはゼロに戻される。
【００２５】
ステップＳ２０３では、スケジュール探索部１０１のスケジュール候補生成部１０２は、近傍オペレータ格納部１１４から、現在のカウンタｇにより識別されるグループに属する近傍オペレータを抽出する。
【００２６】
ステップＳ２０４では、スケジュール候補生成部１０２は、近傍解候補としてのスケジュール候補を生成する。例えば、スケジュール候補生成部１０２は、抽出した近傍オペレータを基準解であるスケジュールに適用してスケジュールの組み替え候補を生成する。制約充足判定部１０４は、組み替え候補のうち制約格納部１１５に格納されている制約を満たす組み替え候補をスケジュール候補としてスケジュール候補格納部１１６に格納する。
【００２７】
ステップＳ２０５では、スケジュール評価部１０５は、スケジュール候補格納部１１６に格納されている近傍解候補としてのスケジュール候補を評価する。例えば、スケジュール評価部１０５は、所定の評価規則を適用してスケジュール候補それぞれの評価値を算出する。
【００２８】
ステップＳ２０６では、解の改善が見られたか否かが判定される。例えば、スケジュール選択部１０３は、評価値が基準評価値を下回るスケジュール候補が存在するか否かを確認する。スケジュール選択部１０３は、評価値が基準評価値を下回るスケジュール候補が存在する場合に解の改善が見られたと判定し、評価値が基準評価値を下回るスケジュール候補が存在しない場合に解の改善が見られないと判定する。解の改善が見られない場合は、ステップＳ２１０に進む。
【００２９】
ステップＳ２１０では、カウンタｇが１だけ増加される。ステップＳ２１１では、カウンタｇがパラメータｇ＿ｍａｘに等しいか否かが判定される。パラメータｇ＿ｍａｘは、グループの数である。カウンタｇがパラメータｇ＿ｍａｘに等しくない場合、ステップＳ２０３に戻る。ステップＳ２０３〜Ｓ２０５の処理が繰り返される。
【００３０】
ステップＳ２０６において解の改善が見られた場合は、ステップＳ２０７に進む。ステップＳ２０７では、スケジュール選択部１０３は、評価が最も良いスケジュール候補を選択する。例えば、スケジュール選択部１０３は、評価値が最も低いスケジュール候補を選択する。
【００３１】
また、ステップＳ２１１においてカウンタｇがパラメータｇ＿ｍａｘに等しい場合は、ステップＳ２０７に進む。ステップＳ２０７では、スケジュール選択部１０３は、評価が最も良いスケジュール候補を選択する。ステップＳ２１１からステップＳ２０７に進むのは、すべての近傍オペレータを用いても評価が基準解よりも良いスケジュール候補が得られなかった場合である。このため、選択されたスケジュール候補は、基準解よりも評価が悪い（低い）。
【００３２】
ステップＳ２０８では、カウンタｉが１だけ増加される。ステップＳ２０９では、カウンタｉがパラメータｉ＿ｍａｘに等しいか否かが判定される。パラメータｉ＿ｍａｘは、実行する探索の回数である。カウンタｉがパラメータｉ＿ｍａｘに等しくない場合は、ステップＳ２０２に戻る。ステップＳ２０７において選択されたスケジュール候補が基準解として採用され、上述した処理が繰り返される。
【００３３】
ステップＳ２０９においてカウンタｉがパラメータｉ＿ｍａｘに等しい場合は、ステップＳ２１２に進む。ステップＳ２１２では、スケジュール出力部１０６は、現在得られている解をスケジュールとして出力する。
【００３４】
なお、上述した処理手順は、一例に過ぎず、各ステップの内容の変更、いずれかのステップの削除、またはステップの追加が適宜可能である。例えば、ステップＳ２１１においてカウンタｇがパラメータｇ＿ｍａｘに等しい場合は、ステップＳ２０２に戻って、近傍オペレータに設定されている乱数を変更したうえで、同じ基準解を用いて再度探索を行ってもよい。また、例えば、ステップＳ２０７とステップＳ２０８との間に、選択されたスケジュール候補の評価値が閾値を下回るか否かを判定する処理が追加されてもよい。選択されたスケジュール候補の評価値が閾値を下回った場合、ステップＳ２１２に進んで探索を終了するようにしてもよい。
【００３５】
図３を参照して、比較例に係る、近傍探索を用いたスケジュール探索過程について説明する。比較例では、４つの近傍オペレータ｛Ｏ１，Ｏ２，Ｏ３，Ｏ４｝が用意されており、これらはグループ化されていない。基準解３０１の評価値は１００とする。
【００３６】
４つの近傍オペレータを用いて基準解３０１であるスケジュールの組み替えを行うと、組み替え候補３０２〜３０５が生成される。組み替え候補３０２、３０３は、基準解３０１に近傍オペレータＯ１を適用することにより生成されたものであり、組み替え候補３０８、３０９は、基準解３０１に近傍オペレータＯ４を適用することにより生成されたものである。基準解３０１に近傍オペレータＯ２を適用することにより生成された組み替え候補、および基準解３０１に近傍オペレータＯ３を適用することにより生成された組み替え候補も生成されるが、図３ではこれらは省略されている。
【００３７】
次に、組み替え候補３０２〜３０５に対して制約チェックが行われる。組み替え候補３０２、３０５のみが制約をすべて満たすと判定される。これらの組み替え候補３０２、３０５がスケジュール候補３０６、３０７となる。続いて、スケジュール候補３０６、３０７が評価される。スケジュール候補３０６の評価値が９６と算出され、スケジュール候補３０７の評価値が９２と算出される。評価が最も良い（評価値が最も低い）スケジュール候補３０７が、近傍解として選択され、次の基準解に採用される。
【００３８】
上述した探索処理が所定回数だけ繰り返される。大規模問題では、４つの近傍オペレータすべてを用いてしまうと、多くの組み替え候補について制約チェックおよび評価を行うことになり、多くの計算時間がかかる。
【００３９】
図４を参照して、本実施形態に係る、近傍探索を用いたスケジュール探索過程を説明する。本実施形態では、４つの近傍オペレータ｛Ｏ１，Ｏ２，Ｏ３，Ｏ４｝が２つのグループ４０１、４０２に分けられている。具体的には、近傍オペレータＯ１、Ｏ２が第１のグループ４０１に属し、近傍オペレータＯ３、Ｏ４が第２のグループ４０２に属する。第２のグループ４０２は、順序関係において第１のグループ４０１の次に位置する。基準解４０３の評価値は１００とする。
【００４０】
まず、第１のグループ４０１に属する近傍オペレータＯ１、Ｏ２を用いて基準解４０３であるスケジュールの組み替えが行われる。すると、組み替え候補４０４〜４０７が生成される。組み替え候補４０４、４０５は、基準解４０３に近傍オペレータＯ１を適用することにより生成されたものであり、組み替え候補３４０６、４０７は、基準解４０３に近傍オペレータＯ２を適用することにより生成されたものである。
【００４１】
次に、組み替え候補４０４〜４０７に対して制約チェックが行われる。組み替え候補４０４、４０７のみが制約をすべて満たすと判定される。これらの組み替え候補４０４、４０７がスケジュール候補４０８、４０９となる。続いて、スケジュール候補４０８、４０９が評価される。スケジュール候補４０８の評価値が９６と算出され、スケジュール候補４０９の評価値が１０３と算出される。評価が最も良いスケジュール候補４０８が、近傍解として選択され、次の基準解として採用される。
【００４２】
基準解４０１に対して近傍オペレータＯ３、Ｏ４を適用することで生成されるスケジュール候補は、スケジュール候補４０８よりも評価が高い可能性がある。すなわち、スケジュール候補４０８が最善ではない可能性がある。しかし、スケジュール候補４０８は、第１のグループ４０１を用いて生成されたスケジュール候補の中で評価が最も良いものであり、さらに、基準解４０３よりも評価が良い。このため、第２のグループ４０２を試すことなく、妥協してスケジュール候補４０８を次の基準解として採用する。
【００４３】
仮にスケジュール候補４０８、４０９の両方ともが基準解よりも評価が悪い場合には、第２のグループ４０２を用いて探索が続けられる。
【００４４】
比較例における組み替え候補の生成処理（図３）は、４つすべての近傍オペレータを使用しており、一方、本実施形態における組み替え候補の生成処理（図４）は、２つの近傍オペレータを使用している。このため、本実施形態において生成される組み替え候補の数は、比較例において生成される組み替え候補の数よりも少なくなる。したがって、組み替え候補の生成、制約チェック、および評価を含む本実施形態における処理は、比較例のものよりも短い時間で実行することができる。本実施形態では、一回の探索でなされる改善は比較例に比べて小さいものの、着実な改善を積み重ねることによって、解の質を落とすことなく、最終的には比較例よりも短い計算時間で解を得ることができる。したがって、本実施形態によれば、計算時間に関して効率良く、スケジュールを得ることができる。さらに、ＣＰＵやメモリなどのハードウェア資源を節約することができる。
【００４５】
次に、上述したスケジューリング装置１００の適用例を説明する。適用例は、設備保守作業を対象にする。具体的には、複数の作業員が複数の物件に設置された設備（例えばエレベータ）を保守する場合における作業員へのタスクの割当てについて説明する。
【００４６】
図５は、設備保守作業に関連する５つのサイト５０２〜５０６の位置関係５０１を示している。サイト５０２は、作業員が駐在する拠点であり、サイト５０３〜５０６は、割当て対象のタスクが存在する物件１〜４である。作業員は、物件１〜４でのタスクを担当する。作業員は、拠点から出発し、割当てられたタスクを終えた後に拠点に帰還する。
【００４７】
図６は、図５に示したサイト間の移動時間を表すＯＤ（origin-destination）表６０１である。図６に示される表６０１において、最も左の列は起点（origin）を表し、最も上の行は終点（destination）を表す。例えば、物件１から物件２への移動に要する時間は２０分となっている。なお、ここでは、逆方向の移動時間、すなわち、物件２から物件１への移動時間も同じ２０分とする。サイト間の移動時間に関する移動時間情報は、制約格納部１１５に格納される。
【００４８】
図７は、作業員の勤務シフトを表す勤務シフト情報７０１である。ここでは、簡単化のために、４月１日と４月２日の２日分だけの勤務シフトが示されているが、実際には、１月以上などのより多くの日を対象とすることが可能である。勤務シフト情報７０１は、Ａ、Ｂ、Ｃという３名の作業員の勤務シフトを含む。勤務シフト情報７０１は、作業員の勤務可能日および勤務可能時間を含む。例えば、作業員Ａは、４月１日に１３：００〜１６：００まで勤務し、４月２日に９：００〜１２：００まで勤務することになっている。勤務シフト情報７０１は、制約格納部１１５に格納される。
【００４９】
図８は、割当て対象のタスクに関する制約条件に対応するタスク情報８０１を示している。タスク情報８０１は、タスクの識別情報、物件の識別情報、作業時間の情報、作業人数の情報、実施可能日の情報、実施可能時間の情報、および実施可能者の情報を含む。タスク情報８０１は、８つのタスクＴ１〜Ｔ８に関する情報を含む。例えば、タスクＴ１は、物件１で行うタスクであり、９０分の作業時間が必要であり、１名で実施することができる。さらに、タスクＴ１は、４月１日の９：００〜１２：００の範囲で実施しなくてはならない。作業員Ａ、Ｂ、ＣがタスクＴ１を実施することができる。スケジュールを探索する際は、これらの条件をすべて満たす必要がある。タスク情報８０１は、制約格納部１１５に格納される。
【００５０】
図９は、評価規則に対応する評価関数のリスト９０１を示している。図９のリスト９０１は、４つの評価関数を有する。スケジュール候補は、これら４つの評価関数を用いて評価される。具体的には、スケジュール候補の評価値ＥＶは、下記の式１のように、評価関数を重み付き線形結合することにより算出される。  
ＥＶ＝Ｆ１×１０＋Ｆ２×１＋Ｆ３×６０＋Ｆ４×１    ・・・（式１）
ここで、評価関数Ｆ１は、仮割当て状態にあるタスクの作業時間を足し合わせた値である。評価関数Ｆ１は小さい方がよく、評価関数Ｆ１に対する重みは大きな値に設定される。評価関数Ｆ２は、すべての作業員の移動時間の総和である。評価関数Ｆ２も少ない方がよいので、評価関数Ｆ２に対する重みは正の値に設定される。評価関数Ｆ３は、動員する作業員の数である。評価関数Ｆ３も少ない方がよいので、評価関数Ｆ３に対する重みは正の値に設定される。評価関数Ｆ４は、仮割当て状態のタスクの物件と最も近い物件（例えば同じ位置の物件）が同じ日に割当てられているタスクの物件に含まれる仮割当て状態のタスクの数である。評価関数Ｆ４も少ない方がよいので、評価関数Ｆ４に対する重みは正の値に設定される。評価関数Ｆ１は、仮割当て評価関数に対応し、評価関数Ｆ２は、距離評価関数に対応し、評価関数Ｆ４は、近接度評価関数に対応する。本実施形態では、上述したように、評価値は、評価がより良いほど値が小さくなるように定義されている。
【００５１】
図１０は、近傍オペレータのリスト１００１を示している。図１０のリスト１００１は、３つの近傍オペレータを有する。３つの近傍オペレータが２つのグループにグループ化されている。具体的には、近傍オペレータＯ１、Ｏ２は、グループ０（第１のグループ）に属し、近傍オペレータＯ３は、グループ１（第２のグループ）に属する。近傍オペレータＯ１はassignという名前を付けられ、近傍オペレータＯ２はmove_dayという名前を付けられ、近傍オペレータＯ３はshift_assignという名前を付けられている。近傍オペレータＯ１、Ｏ２、Ｏ３については後述する。
【００５２】
図１１は、作成中のスケジュールのフォーマットの一例を示している。本例では、４月１日と４月２日の２日間を扱うため、スケジュールは、２つの仮割当て部および２つの詳細割当て部を有する。仮割当て部は、仮割当て状態のタスクを格納する。例えば、４月１日の仮割当て部は、４月１日に割当てを行いたいタスクを格納する。詳細割当て部は、移動時間を考慮に入れて誰がどの時間にタスクを実施するかまで決定された情報を格納する。本例では、４月１日に作業員Ａ、Ｂが作業可能であり、４月２日に作業員Ａ、Ｃが作業可能である。４月１日の詳細割当て部は、作業員Ａ、Ｂの割当てフィールドを有し、４月２日の詳細割当て部は、作業員Ａ、Ｃの割当てフィールドを有する。
【００５３】
図１２から図１９を参照して、図７から図１０に示される条件に従って行われる探索の過程を説明する。  
図１２は、第Ｎステップ（ｉ＝Ｎ）の基準解であるスケジュールを示している。図１２に示されるスケジュール１２０１では、タスクＴ１、Ｔ４が４月１日に仮割当てされ、タスクＴ２が４月１日における作業員Ｂに詳細割当てらされ、タスクＴ３が４月１日における作業員Ａ、Ｂに詳細割当てされている。そして、タスクＴ６が４月２日に仮割当てされ、タスクＴ５が４月２日における作業員Ａ、Ｃに詳細割当てされ、タスクＴ７が４月２日における作業員Ａに詳細割当てされ、タスクＴ８が４月２日における作業員Ｃに詳細割当てされている。例えば、４月１日には、作業員Ｂは、拠点から物件１に移動し、タスクＴ２を１３：００〜１４：３０まで９０分間実施し、１４：３０〜１５：００の間に２０分かけて物件１から物件２まで移動し、タスクＴ３を作業員Ａとともに１５：００〜１６：００まで６０分間実施し、物件２から拠点まで帰還する。なお、実際には、タスクＴ３は、１４：５０〜１５：５０の範囲で実施することが可能であるが、ここでは、簡単のため３０分刻みでタスクを行うものとする。
【００５４】
図１２に示されるスケジュールについて、上記の式１を用いて評価値が算出される。評価値は、図１８に示されるように３０９６と算出される。図１２に示されるスケジュールでは、仮割当て状態のタスクはタスクＴ１、Ｔ４、Ｔ６であり、評価関数Ｆ１はタスクＴ１、Ｔ４、Ｔ６の作業時間を足し合わせた２４０となる。４月１日における作業員Ｂの移動時間は、拠点から物件１までの移動時間（４５分）と物件１から物件２までの移動時間（２０分）と物件２から拠点までの移動時間（５０分）とを足した１１５分である。また、４月１日における作業員Ａの移動時間は１００分であり、４月２日における作業員Ａの移動時間は１２０分であり、４月１日における作業員Ｃの移動時間は１２０分である。したがって、評価関数Ｆ２はこれらを足し合わせた４５５（分）となる。４月１日と４月２日にそれぞれ２名が動員されるので、評価関数Ｆ３は４となる。仮割当て状態のタスクＴ１は物件１に関連し、同じ物件１に関連するタスクＴ２が４月１日に詳細割当てされている。仮割当て状態のタスクＴ４は物件３に関連し、同じ物件３に関連するタスクは４月２日に詳細割当てされていない。また、仮割当て状態のタスクＴ６は物件４に関連し、同じ物件１に関連するタスクＴ７、Ｔ８が４月２日に詳細割当てされている。したがって、評価関数Ｆ４は１となる。
【００５５】
図１２のスケジュールをｉ＝Ｎの基準解として探索を進める場合について以下に説明する。
【００５６】
図１９の１行目から６行目は、第１のグループ｛Ｏ１，Ｏ２｝によるなし得る組み替えを示している。１行目から３行目が近傍オペレータＯ１による組み替えに対応する。近傍オペレータＯ１（assign）は、仮割当てのタスクをその日に詳細割当てする組み替えを行うオペレータである。１行目の組み替えは、近傍オペレータＯ１によるタスクＴ１の詳細割当てである。この組み替えにより得られたスケジュール候補は、制約を満たす。このスケジュール候補は図１３に示されている。図１３に示されるように、タスクＴ１は、１０：３０〜１２：００の範囲で作業員Ｂに割当てられている。また、２行目の組み替えは、近傍オペレータＯ１によるタスクＴ４の詳細割当てである。図８に示されるように、４月１日では、タスクＴ４は、１３：００〜１７：００の範囲で作業員Ｂに割当てるしかない。しかしながら、タスクＴ２、Ｔ３がすでに詳細割当てされているので、制約は満たされない。したがって、２行目の組み替えでは、スケジュール候補は生成されない。３行目の組み替えは、近傍オペレータＯ１によるタスクＴ６の詳細割当てである。タスクＴ６は４月１日に実施することができないので、制約は満たされない。したがって、３行目の組み替えでは、スケジュール候補は生成されない。
【００５７】
４行目から６行目が近傍オペレータＯ２による組み替えに対応する。近傍オペレータＯ２（move_day）は、仮割当て状態のタスクの日を移動させる組み替えを行うオペレータである。４行目の組み替えは、近傍オペレータＯ２によるタスクＴ１の日にち移動である。具体的には、この組み替えは、タスクＴ１を４月１日の仮割当て部から４月２日の仮割当て部へ移動する処理である。タスクＴ１は作業実施可能日が４月１日のみであるので、この組み替えは制約違反となり、スケジュール候補は生成されない。５行目の組み替えは、近傍オペレータＯ２によるタスクＴ１の日にち移動である。具体的には、この組み替えは、タスクＴ４を４月１日の仮割当て部から４月２日の仮割当て部へ移動する処理である。この組み替えは制約を満たし、その結果、図１４に示すスケジュール候補が生成される。６行目の組み替えは、近傍オペレータＯ２によるタスクＴ６の日にち移動である。具体的には、この組み替えは、タスクＴ６を４月２日の仮割当て部から４月１日の仮割当て部へ移動する処理である。タスクＴ６は作業実施可能日が４月２日のみであるので、この組み替えは制約違反となり、スケジュール候補は生成されない。
【００５８】
このようにして第Ｎステップでは、第１のグループを適用することにより、図１３および図１４に示される２つのスケジュール候補が生成される。これらのスケジュール候補の評価値はそれぞれ、図１８に示されるように、２１９６および３０９５と算出される。これらの評価値は基準評価値（３０９６）よりも小さいので、改善が見られたということで第２のグループを試すことなく、次の基準解が決定される。ここでは、評価値がより低い図１３に示されるスケジュール候補が次の基準解として採用される。
【００５９】
第Ｎ＋１ステップでは、図１３に示されるスケジュール候補が基準解として採用され、第１のグループを適用することにより図１５に示されるスケジュール候補が生成される。図１５に示されるスケジュール候補の評価値は、２１９５と算出される。これは基準解の評価値よりも低いので、図１５に示されるスケジュール候補が第Ｎ＋２ステップの基準解として採用される。第Ｎ＋２ステップでは、第１のグループを適用することにより図１３および図１６に示される２つのスケジュール候補が生成される。図１３に示されるスケジュール候補の評価値は２１９６と算出され、図１６に示されるスケジュール候補の評価値は１６０５と算出される。図１６に示されるスケジュール候補の評価値は基準解の評価値よりも低いので、図１６に示されるスケジュール候補が第Ｎ＋３ステップの基準解として採用される。
【００６０】
第Ｎ＋３ステップでは、第１のグループの適用は、基準解の評価値を下回るスケジュール候補を生成しない。このため、次に、第２のグループ｛Ｏ３｝が適用される。近傍オペレータＯ３は、ある作業員に割当済みのタスクを同じ日の他の作業員に移動させた上で、当該ある作業員に仮割当て状態のタスクを割当てる組み替えを行うオペレータである。仮割当て状態のタスクは、４月２日の仮割当て部に格納されているタスクＴ６のみである。このため、近傍オペレータＯ３によるなし得る組み替えは、タスクＴ５を他の作業員に移動させてタスクＴ６を割当てること、タスクＴ７を他の作業員に移動させてタスクＴ６を割当てること、およびタスクＴ８を他の作業員に移動させてタスクＴ６を割当てることという３つある。このように１つのタスクＴ６を割当てるのに３つの組み替えを試す必要があり、近傍オペレータＯ３による組み替えは、近傍オペレータＯ１、Ｏ２による組み替えと比べると計算コストの大きな処理となる。上記の３つの組み替えのうち最後のものだけが制約を充足する。すなわち、タスクＴ８を作業員Ａから作業員Ｃに移動させ、その上でタスクＴ６を作業員Ａに割当てる処理が有効となる。この結果、図１７に示されるスケジュール候補が得られる。図１７に示されるスケジュール候補の評価値は７０５と算出される。この評価値は基準解の評価値より小さい。
【００６１】
上述した適用例では、作業員の移動を伴う巡回スケジュールの近似最適化を扱ったが、本実施形態は、ジョブショップスケジューリングなどの他のスケジューリング問題にも適用することが可能である。
【００６２】
以上のように、本実施形態に係るスケジューリング装置１００では、近傍オペレータは、順序関係を有する複数のグループにグループ化される。スケジューリング装置１００は、複数のグループのうちの第１のグループに属する近傍オペレータを基準解に適用することにより生成されたスケジュール候補の中に基準解よりも評価が良いものが存在しない場合には、複数のグループのうちの、順序関係において第１のグループの次に位置する第２のグループに属する近傍オペレータを基準解に適用することによりスケジュール候補を新たに生成し、第１のグループに属する近傍オペレータを基準解に適用することにより生成されたスケジュール候補の中に基準解よりも評価が良いものが存在する場合には、第２のグループを適用しない。これにより、近傍オペレータの適用により生成される組み替え候補の数が低減し、解を得るまでの計算時間を削減することができる。さらに、生成する候補の数が少ない（計算コストの低い）シンプルな近傍オペレータ（例えばＯ１、Ｏ２）を先のグループに設定し、生成する候補の数が多い近傍オペレータ（例えばＯ３）を後のグループに設定することで、計算時間をより削減することができる。
【００６３】
図２０は、スケジューリング装置１００を実現するハードウェア構成の一例であるコンピュータ装置２０００を示している。図２０に示されるように、コンピュータ装置２０００は、ＣＰＵ（central processing unit）２００１、主記憶装置２００２、外部記憶装置２００３、入力装置２００４、および表示装置２００５を備え、これらはバス２００６を介して互いに接続されている。
【００６４】
主記憶装置２００２は、ＲＡＭ（random access memory）およびＲＯＭ（read only memory）を含む。外部記憶装置２００３は、例えば、ＨＤＤ（hard disk drive）またはＳＳＤ（solid state drive）である。ＣＰＵ２００１は、一時的でないコンピュータ読み取り可能な記憶媒体（例えばＲＯＭおよび／または外部記憶装置２００３）に記憶されているプログラムを実行し、それにより、ここに説明されたスケジューリング装置１００の機能を実現する。なお、ここに説明されたスケジューリング装置１００の機能の一部または全部は、ＡＳＩＣ（application specific integrated circuit）やＦＰＧＡ（field programmable gate array）などのハードウェア回路によって実現されてもよい。
【００６５】
入力装置２００４は、ユーザからの指示（例えば、制約を指定する入力）を受け取る入力インタフェースである。入力装置２００４は、キーボードおよびマウスを備えるが、これに限らない。表示装置２００５は、出力スケジュールなどの各種情報を表示する。表示装置２００５は、液晶表示装置またはＯＬＥＤ（organic light emitting diode）ディスプレイであるが、これに限らない。入力装置２００４および表示装置２００５として、タッチスクリーンが使用されてもよい。
【００６６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６７】
１００…スケジューリング装置、
１０１…スケジュール探索部、１０２…スケジュール候補生成部、
１０３…スケジュール選択部、１０４…制約充足判定部、
１０５…スケジュール評価部、１０６…スケジュール出力部、
１１１…スケジュール格納部、１１２…仮割当て部、
１１３…詳細割当て部、１１４…近傍オペレータ格納部、
１１５…制約格納部、１１６…スケジュール候補格納部、
２０００…コンピュータ装置、
２００１…ＣＰＵ、２００２…主記憶装置、２００３…外部記憶装置、
２００４…入力装置、２００５…表示装置、２００６…バス。
【図１】
2019057075.tif 000003
【図２】
2019057075.tif 000004
【図３】
2019057075.tif 000005
【図４】
2019057075.tif 000006
【図５】
2019057075.tif 000007
【図６】
2019057075.tif 000008
【図７】
2019057075.tif 000009
【図８】
2019057075.tif 000010
【図９】
2019057075.tif 000011
【図１０】
2019057075.tif 000012
【図１１】
2019057075.tif 000013
【図１２】
2019057075.tif 000014
【図１３】
2019057075.tif 000015
【図１４】
2019057075.tif 000016
【図１５】
2019057075.tif 000017
【図１６】
2019057075.tif 000018
【図１７】
2019057075.tif 000019
【図１８】
2019057075.tif 000020
【図１９】
2019057075.tif 000021
【図２０】
2019057075.tif 000022