特許第6805103号(P6805103)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社東芝の特許一覧

特許6805103スケジューリング装置、スケジューリング方法、およびプログラム
<>
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000002
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000003
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000004
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000005
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000006
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000007
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000008
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000009
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000010
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000011
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000012
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000013
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000014
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000015
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000016
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000017
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000018
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000019
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000020
  • 特許6805103-スケジューリング装置、スケジューリング方法、およびプログラム 図000021
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6805103
(24)【登録日】2020年12月7日
(45)【発行日】2020年12月23日
(54)【発明の名称】スケジューリング装置、スケジューリング方法、およびプログラム
(51)【国際特許分類】
   G06Q 10/06 20120101AFI20201214BHJP
   G06Q 10/04 20120101ALI20201214BHJP
【FI】
   G06Q10/06 302
   G06Q10/04 310
【請求項の数】9
【全頁数】18
(21)【出願番号】特願2017-180495(P2017-180495)
(22)【出願日】2017年9月20日
(65)【公開番号】特開2019-57075(P2019-57075A)
(43)【公開日】2019年4月11日
【審査請求日】2019年11月29日
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】100108855
【弁理士】
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100103034
【弁理士】
【氏名又は名称】野河 信久
(74)【代理人】
【識別番号】100075672
【弁理士】
【氏名又は名称】峰 隆司
(74)【代理人】
【識別番号】100153051
【弁理士】
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100179062
【弁理士】
【氏名又は名称】井上 正
(74)【代理人】
【識別番号】100189913
【弁理士】
【氏名又は名称】鵜飼 健
(72)【発明者】
【氏名】佐藤 誠
(72)【発明者】
【氏名】木下 英治
【審査官】 田上 隆一
(56)【参考文献】
【文献】 特開2004−151790(JP,A)
【文献】 特開2002−304501(JP,A)
【文献】 特開2004−361991(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00−99/00
(57)【特許請求の範囲】
【請求項1】
スケジュールを一部組み替える組み替え方を定義した複数の近傍オペレータであって、順序関係を有する複数のグループにグループ化された複数の近傍オペレータを、前記順序関係に従ってグループ単位で基準解に対して適用し、予め設定された制約を満たすスケジュール候補を生成する生成部と、
前記スケジュール候補の中から、前記基準解よりも評価が良いスケジュール候補を新たな基準解として選択する選択部と、
を備え、
前記生成部は、前記複数のグループのうちの第1のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在しない場合に、前記複数のグループのうちの、前記順序関係において前記第1のグループの次に位置する第2のグループに属する近傍オペレータを前記基準解に適用することにより前記スケジュール候補を新たに生成し、前記第1のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在する場合に、前記第2のグループを適用しない、スケジューリング装置。
【請求項2】
前記基準解は、割当て対象のタスクをリソースおよび時間を指定せずに仮に割当てた複数の第1割当て部、および前記割当て対象のタスクをリソースおよび時間を指定して割当てた複数の第2割当て部を含み、
前記複数の近傍オペレータは、
ある第1割当て部に存在するタスクを、前記ある第1割当て部に対応する第2割当て部に移動させる組み替えを行う第1の近傍オペレータと、
ある第1割当て部に存在するタスクを、他の第1割当て部に移動させる組み替えを行う第2の近傍オペレータと、
を含む、請求項1に記載のスケジューリング装置。
【請求項3】
前記複数の近傍オペレータは、ある第1割当て部に存在するタスクを、前記ある第1割当てフィールドに対応する第2割当て部に存在するタスクを前記第2割当て部内で移動させた上で、前記第2割当て部に移動させる組み替えを行う第3の近傍オペレータをさらに含み、
前記第3の近傍オペレータは、前記第1の近傍オペレータが属するグループおよび前記第2の近傍オペレータが属するグループよりも前記順序関係において後に位置するグループに属する、請求項2に記載のスケジューリング装置。
【請求項4】
前記制約は、
作業員の勤務可能日および勤務可能時間を含む勤務シフト情報と、
割当て対象のタスクが存在する物件と前記作業員が駐在する拠点とを含む複数のサイト間の移動時間に関する移動時間情報と、
割当て対象のタスクに関する制約を含むタスク情報と、
を含む、請求項1乃至3のいずれか一項に記載のスケジューリング装置。
【請求項5】
前記スケジュール候補ごとに、予め定められた複数の評価関数を前記複数の評価関数それぞれについて予め定められた重みで線形結合することによって評価値を算出する評価部をさらに備え、
前記選択部は、前記評価値と閾値との比較に基づいて、前記スケジュール候補の評価が前記基準解よりも高いか否かを判定する、請求項1乃至4のいずれか一項に記載のスケジューリング装置。
【請求項6】
前記複数の評価関数は、
作業員の移動時間の総和を評価する距離評価関数と、
仮割当て状態のタスクに関する量を評価する仮割当て評価関数と、
を含む、請求項5に記載のスケジューリング装置。
【請求項7】
前記複数の評価関数は、仮割当て状態のタスクの物件と割当て済みのタスクの物件との位置関係に基づき近接度を評価する近接度評価関数を含む、請求項5または6に記載のスケジューリング装置。
【請求項8】
コンピュータが実行するスケジューリング方法であって、
スケジュールを一部組み替える組み替え方を定義した複数の近傍オペレータであって、順序関係を有する複数のグループにグループ化された複数の近傍オペレータを、前記順序関係に従ってグループ単位で基準解に対して適用し、予め設定された制約を満たすスケジュール候補を生成することと、
前記スケジュール候補の中から、前記基準解よりも評価が良いスケジュール候補を新たな基準解として選択することと、
を備え、
前記スケジュール候補を生成することは、前記複数のグループのうちの第1のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在しない場合に、前記複数のグループのうちの、前記順序関係において前記第1のグループの次に位置する第2のグループに属する近傍オペレータを前記基準解に適用することにより前記スケジュール候補を新たに生成し、前記第1のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在する場合に、前記第2のグループを適用しない、スケジューリング方法。
【請求項9】
スケジュールを一部組み替える組み替え方を定義した複数の近傍オペレータであって、順序関係を有する複数のグループにグループ化された複数の近傍オペレータを、前記順序関係に従ってグループ単位で基準解に対して適用し、予め設定された制約を満たすスケジュール候補を生成する手段、および
前記スケジュール候補の中から、前記基準解よりも評価が良いスケジュール候補を新たな基準解として選択する手段
としてコンピュータを機能させるためのプログラムであって、
前記スケジュール候補を生成する手段は、前記複数のグループのうちの第1のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在しない場合に、前記複数のグループのうちの、前記順序関係において前記第1のグループの次に位置する第2のグループに属する近傍オペレータを前記基準解に適用することにより前記スケジュール候補を新たに生成し、前記第1のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在する場合に、前記第2のグループを適用しない、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、スケジューリング装置およびスケジューリング方法に関する。
【背景技術】
【0002】
様々な制約を考慮した巡回スケジュールを自動作成する組み合わせ最適化方式には、線形計画法などの厳密解を高速にもとめる厳密最適化方式と、近傍探索法など限られた計算時間の範囲でより良い解を求める近似最適化方式が知られている。近傍探索法は、近傍オペレータによって初期解(初期スケジュール)を少しずつ変更し改善していくもので、タブー探索法や遺伝的アルゴリズムのようなメタヒューリスティクスと呼ばれる様々な近傍探索法が提案されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平11−195066号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
大規模な巡回スケジュールの近似最適化では、解に対して様々な近傍オペレータを適用することによって多数の解候補を生成し、解候補の中から評価値が最大となるものを新たな解として採用する探索処理を繰り返すことで解の改善を進める。各探索処理において多数の解候補が生成されるため、解候補が制約を満たすか否かを判定したり、解候補の評価値を算出するために、計算時間がかかる。したがって、より良い解を得るために多大な時間がかかる。
【0005】
本発明が解決しようとする課題は、スケジューリングの計算時間の短縮を図ったスケジューリング装置およびスケジューリング方法を提供することである。
【課題を解決するための手段】
【0006】
一実施形態に係るスケジューリング装置は、生成部および選択部を備える。前記生成部は、スケジュールを一部組み替える組み替え方を定義した複数の近傍オペレータであって、順序関係を有する複数のグループにグループ化された複数の近傍オペレータを、前記順序関係に従ってグループ単位で基準解に対して適用し、予め設定された制約を満たすスケジュール候補を生成する。前記選択部は、前記スケジュール候補の中から、前記基準解よりも評価が良いスケジュール候補を新たな基準解として選択する。前記生成部は、前記複数のグループのうちの第1のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在しない場合に、前記複数のグループのうちの、前記順序関係において前記第1のグループの次に位置する第2のグループに属する近傍オペレータを前記基準解に適用することにより前記スケジュール候補を新たに生成し、前記第1のグループに属する近傍オペレータを前記基準解に適用することにより生成されたスケジュール候補の中に前記基準解よりも評価が良いものが存在する場合に、前記第2のグループを適用しない。
【図面の簡単な説明】
【0007】
図1】実施形態に係るスケジューリング装置を示すブロック図。
図2図1に示したスケジューリング装置のスケジューリング処理手順の一例を示すフローチャート。
図3】比較例に係る、近傍探索を用いたスケジュール探索過程を説明する図。
図4】実施形態に係る、近傍探索を用いたスケジュール探索過程を説明する図。
図5】適用例に係るサイト間の位置関係を示す図。
図6】適用例に係る制約の一部である、図5に示したサイト間の移動時間に関する情報を示す図。
図7】適用例に係る制約の一部である、作業員の勤務シフトに関する情報を示す図。
図8】適用例に係る制約の一部である、タスクに関する情報を示す図。
図9】適用例に係る評価規則に対応する評価関数のリストを示す図。
図10】適用例に係る近傍オペレータのリストを示す図。
図11】適用例に係るスケジュールフォーマットの一例を示す図。
図12図7から図10に示される条件に従って行われる探索の過程を説明する図。
図13図7から図10に示される条件に従って行われる探索の過程を説明する図。
図14図7から図10に示される条件に従って行われる探索の過程を説明する図。
図15図7から図10に示される条件に従って行われる探索の過程を説明する図。
図16図7から図10に示される条件に従って行われる探索の過程を説明する図。
図17図7から図10に示される条件に従って行われる探索の過程を説明する図。
図18図7から図10に示される条件に従って行われる探索の過程を説明する図。
図19図7から図10に示される条件に従って行われる探索の過程を説明する図。
図20図1に示したスケジューリング装置を実現するハードウェア構成の一例を示すブロック図。
【発明を実施するための形態】
【0008】
以下、図面を参照しながら実施形態を説明する。
【0009】
図1は、一実施形態に係るスケジューリング装置100を概略的に示している。図1に示されるように、スケジューリング装置100は、スケジュール探索部101、制約充足判定部104、スケジュール評価部105、スケジュール出力部106、スケジュール格納部111、近傍オペレータ格納部114、制約格納部115、およびスケジュール候補格納部116を備える。
【0010】
スケジュール格納部111は、作成中のスケジュールに関する情報を格納する。このスケジュールは、後述する探索処理において基準解として使用される。スケジュール格納部111は、1つまたは複数の仮割当て部112および1つまたは複数の詳細割当て部113を含む。仮割当て部112の数および詳細割当て部113の数は、作成すべきスケジュールの内容に応じて変化する。例えば、複数日にわたるスケジューリングの場合、スケジュール格納部111は、日数分の仮割当て部112および日数分の詳細割当て部113を含む。
【0011】
仮割当て部112は、リソースを指定せずに仮に割当てたタスク(作業)、すなわち、仮割当て状態のタスクに関する情報を格納する。詳細割当て部113は、リソースを指定して割当てたタスクに関する情報を格納する。タスクは、リソースだけでなく時間も指定して、割当てられていてもよい。リソースは、タスクを行う対象(主体)を指す。リソースは、例えば、人間(例えば作業員)である。なお、リソースは、機械であってもよい。
【0012】
近傍オペレータ格納部114は、スケジュールを一部組み替える組み替え方を定義した複数の近傍オペレータを格納する。近傍オペレータは、順序関係を有する複数のグループにグループ化されている。各グループは、1つまたは複数の近傍オペレータを含む。本実施形態では、近傍オペレータは、グループ化された状態でスケジューリング装置100に予め組み込まれている。なお、近傍オペレータは、スケジューリング装置100に追加または更新されてもよい。例えば、スケジューリング装置100は、インターネットなどの通信ネットワークを通じて外部装置から追加の近傍オペレータを受け取る。
【0013】
近傍オペレータ格納部114に格納されている近傍オペレータの一部がスケジューリングに使用されてもよい。例えば、ユーザがスケジューリングに使用する近傍オペレータを複数選択すると、スケジューリング装置100が選択された近傍オペレータをグループ化する。スケジューリング装置100は、グループ化のために、近傍オペレータごとの計算コストを表す情報を保持していてもよい。例えば、計算コストが低い近傍オペレータは、若い(順序関係で先に位置する)グループに属するようにグループ化される。なお、ユーザがグループ化を行ってもよい。
【0014】
制約格納部115は、スケジュールを作成する上で満たすべき条件である制約を表す情報を格納する。制約は、例えば、リソースに関する制約条件およびタスクに関する制約条件を含む。制約は、例えば、ユーザによって設定される。
【0015】
スケジュール探索部101は、近傍オペレータ格納部114に格納されている近傍オペレータを用いた近傍探索を行う。スケジュール探索部101は、スケジュール候補生成部102およびスケジュール選択部103を備える。
【0016】
スケジュール候補生成部102は、基準解に対して上記の順序関係に従ってグループ単位で近傍オペレータを適用し、制約格納部115に格納されている制約を満たすスケジュール候補を生成する。スケジュール候補生成部102は、生成したスケジュール候補を表す情報をスケジュール候補格納部116に格納する。
【0017】
具体的には、スケジュール候補生成部102は、基準解に対してあるグループに属する近傍オペレータを適用し、スケジュールの組み替え候補を生成する。制約充足判定部104は、制約格納部115を参照し、スケジュール候補生成部102によって生成された組み替え候補が制約を満たすか否かを判定し、判定結果をスケジュール候補生成部102に与える。スケジュール候補生成部102は、スケジュール候補生成部102から判定結果を受け取り、生成した組み替え候補から制約を満たさない組み替え候補を除去し、残った組み替え候補をスケジュール候補とする。このようにして、スケジュール候補生成部102は、制約を満たすスケジュール候補を生成する。なお、制約の一部が組み替え候補の生成において考慮されてもよい。
【0018】
スケジュール選択部103は、スケジュール候補生成部102によって生成されたスケジュール候補の中から、基準解よりも評価が良いスケジュール候補を選択する。
【0019】
スケジュール評価部105は、予め設定された評価規則に基づいて、スケジュール候補格納部116に格納されているスケジュール候補を評価する。具体的には、スケジュール評価部105は、スケジュール候補格納部116からスケジュール候補を順次に読み出し、スケジュール候補それぞれに評価規則を適用することによりスケジュール候補それぞれの評価値を算出する。評価規則は、例えば、複数の評価関数と、複数の評価関数それぞれに対応する重みと、を含む。評価関数の例は、作業員の移動時間の総和を評価する距離評価関数、仮割当て状態のタスクに関する量を評価する仮割当て評価関数、および仮割当て状態のタスクの物件と割当て済みのタスクの物件との位置関係に基づき近接度を評価する近接度評価関数を含む。スケジュール評価部105は、スケジュール候補ごとに、複数の評価関数をそれぞれの重みで線形結合することによって評価値を算出する。スケジュール評価部105は、算出したスケジュール候補の評価値を表すスケジュール候補評価情報をスケジュール選択部103に与える。本実施形態では、評価値は、評価が良い(高い)ほど値が小さくなるように定義される。なお、評価値は、評価が良いほど値が大きくなるように定義されてもよい。
【0020】
スケジュール選択部103は、スケジュール評価部105からスケジュール候補評価情報を受け取り、さらに、スケジュール格納部111から基準解の評価値である基準評価値を表す基準評価情報を受け取る。スケジュール選択部103は、評価値が基準評価値を下回るスケジュール候補を近傍解として選択する。スケジュール選択部103は、近傍解であるスケジュール候補をスケジュール格納部111に格納する。このスケジュール候補は、次の基準解として採用される。評価値が基準評価値を下回るスケジュール候補が複数ある場合には、スケジュール選択部103は、それらのうちの任意の1つを選択する。例えば、スケジュール選択部103は、評価値が基準評価値を下回り、かつ、評価値が最も大きいスケジュール候補を選択する。
【0021】
評価値が基準評価値を下回るスケジュール候補が存在しない場合には、スケジュール選択部103は、選択を行わず、選択を行わなかったことをスケジュール候補生成部102に通知する。スケジュール候補生成部102は、スケジュール選択部103から通知を受けると、次のグループに属する探索オペレータを用いて探索を続ける。
【0022】
スケジュール出力部106は、スケジュール探索部101による探索が終了した後に、スケジュール格納部111に格納されているスケジュールを出力する。出力されるスケジュールは、詳細割当て部113に格納されている情報に対応する。
【0023】
次に、スケジューリング装置100の動作について説明する。
図2は、スケジューリング装置100のスケジューリング処理手順の一例を示している。図2のステップS201では、まず、初期解(初期スケジュール)が生成され、初期解の評価値が算出され、探索回数を表すカウンタiが初期化される。例えば、スケジュール探索部101は、割当て対象のタスクをすべて仮割当て部のいずれかに格納したスケジュールを初期解として生成する。初期解は、基準解としてスケジュール格納部111に格納される。スケジュール評価部105は、初期解の評価値を算出する。初期解の評価値は、基準評価値としてスケジュール格納部111に格納される。カウンタiはゼロに戻される。
【0024】
ステップS202では、グループを識別するカウンタgが初期化される。例えば、カウンタgはゼロに戻される。
【0025】
ステップS203では、スケジュール探索部101のスケジュール候補生成部102は、近傍オペレータ格納部114から、現在のカウンタgにより識別されるグループに属する近傍オペレータを抽出する。
【0026】
ステップS204では、スケジュール候補生成部102は、近傍解候補としてのスケジュール候補を生成する。例えば、スケジュール候補生成部102は、抽出した近傍オペレータを基準解であるスケジュールに適用してスケジュールの組み替え候補を生成する。制約充足判定部104は、組み替え候補のうち制約格納部115に格納されている制約を満たす組み替え候補をスケジュール候補としてスケジュール候補格納部116に格納する。
【0027】
ステップS205では、スケジュール評価部105は、スケジュール候補格納部116に格納されている近傍解候補としてのスケジュール候補を評価する。例えば、スケジュール評価部105は、所定の評価規則を適用してスケジュール候補それぞれの評価値を算出する。
【0028】
ステップS206では、解の改善が見られたか否かが判定される。例えば、スケジュール選択部103は、評価値が基準評価値を下回るスケジュール候補が存在するか否かを確認する。スケジュール選択部103は、評価値が基準評価値を下回るスケジュール候補が存在する場合に解の改善が見られたと判定し、評価値が基準評価値を下回るスケジュール候補が存在しない場合に解の改善が見られないと判定する。解の改善が見られない場合は、ステップS210に進む。
【0029】
ステップS210では、カウンタgが1だけ増加される。ステップS211では、カウンタgがパラメータg_maxに等しいか否かが判定される。パラメータg_maxは、グループの数である。カウンタgがパラメータg_maxに等しくない場合、ステップS203に戻る。ステップS203〜S205の処理が繰り返される。
【0030】
ステップS206において解の改善が見られた場合は、ステップS207に進む。ステップS207では、スケジュール選択部103は、評価が最も良いスケジュール候補を選択する。例えば、スケジュール選択部103は、評価値が最も低いスケジュール候補を選択する。
【0031】
また、ステップS211においてカウンタgがパラメータg_maxに等しい場合は、ステップS207に進む。ステップS207では、スケジュール選択部103は、評価が最も良いスケジュール候補を選択する。ステップS211からステップS207に進むのは、すべての近傍オペレータを用いても評価が基準解よりも良いスケジュール候補が得られなかった場合である。このため、選択されたスケジュール候補は、基準解よりも評価が悪い(低い)。
【0032】
ステップS208では、カウンタiが1だけ増加される。ステップS209では、カウンタiがパラメータi_maxに等しいか否かが判定される。パラメータi_maxは、実行する探索の回数である。カウンタiがパラメータi_maxに等しくない場合は、ステップS202に戻る。ステップS207において選択されたスケジュール候補が基準解として採用され、上述した処理が繰り返される。
【0033】
ステップS209においてカウンタiがパラメータi_maxに等しい場合は、ステップS212に進む。ステップS212では、スケジュール出力部106は、現在得られている解をスケジュールとして出力する。
【0034】
なお、上述した処理手順は、一例に過ぎず、各ステップの内容の変更、いずれかのステップの削除、またはステップの追加が適宜可能である。例えば、ステップS211においてカウンタgがパラメータg_maxに等しい場合は、ステップS202に戻って、近傍オペレータに設定されている乱数を変更したうえで、同じ基準解を用いて再度探索を行ってもよい。また、例えば、ステップS207とステップS208との間に、選択されたスケジュール候補の評価値が閾値を下回るか否かを判定する処理が追加されてもよい。選択されたスケジュール候補の評価値が閾値を下回った場合、ステップS212に進んで探索を終了するようにしてもよい。
【0035】
図3を参照して、比較例に係る、近傍探索を用いたスケジュール探索過程について説明する。比較例では、4つの近傍オペレータ{O1,O2,O3,O4}が用意されており、これらはグループ化されていない。基準解301の評価値は100とする。
【0036】
4つの近傍オペレータを用いて基準解301であるスケジュールの組み替えを行うと、組み替え候補302〜305が生成される。組み替え候補302、303は、基準解301に近傍オペレータO1を適用することにより生成されたものであり、組み替え候補308、309は、基準解301に近傍オペレータO4を適用することにより生成されたものである。基準解301に近傍オペレータO2を適用することにより生成された組み替え候補、および基準解301に近傍オペレータO3を適用することにより生成された組み替え候補も生成されるが、図3ではこれらは省略されている。
【0037】
次に、組み替え候補302〜305に対して制約チェックが行われる。組み替え候補302、305のみが制約をすべて満たすと判定される。これらの組み替え候補302、305がスケジュール候補306、307となる。続いて、スケジュール候補306、307が評価される。スケジュール候補306の評価値が96と算出され、スケジュール候補307の評価値が92と算出される。評価が最も良い(評価値が最も低い)スケジュール候補307が、近傍解として選択され、次の基準解に採用される。
【0038】
上述した探索処理が所定回数だけ繰り返される。大規模問題では、4つの近傍オペレータすべてを用いてしまうと、多くの組み替え候補について制約チェックおよび評価を行うことになり、多くの計算時間がかかる。
【0039】
図4を参照して、本実施形態に係る、近傍探索を用いたスケジュール探索過程を説明する。本実施形態では、4つの近傍オペレータ{O1,O2,O3,O4}が2つのグループ401、402に分けられている。具体的には、近傍オペレータO1、O2が第1のグループ401に属し、近傍オペレータO3、O4が第2のグループ402に属する。第2のグループ402は、順序関係において第1のグループ401の次に位置する。基準解403の評価値は100とする。
【0040】
まず、第1のグループ401に属する近傍オペレータO1、O2を用いて基準解403であるスケジュールの組み替えが行われる。すると、組み替え候補404〜407が生成される。組み替え候補404、405は、基準解403に近傍オペレータO1を適用することにより生成されたものであり、組み替え候補3406、407は、基準解403に近傍オペレータO2を適用することにより生成されたものである。
【0041】
次に、組み替え候補404〜407に対して制約チェックが行われる。組み替え候補404、407のみが制約をすべて満たすと判定される。これらの組み替え候補404、407がスケジュール候補408、409となる。続いて、スケジュール候補408、409が評価される。スケジュール候補408の評価値が96と算出され、スケジュール候補409の評価値が103と算出される。評価が最も良いスケジュール候補408が、近傍解として選択され、次の基準解として採用される。
【0042】
基準解401に対して近傍オペレータO3、O4を適用することで生成されるスケジュール候補は、スケジュール候補408よりも評価が高い可能性がある。すなわち、スケジュール候補408が最善ではない可能性がある。しかし、スケジュール候補408は、第1のグループ401を用いて生成されたスケジュール候補の中で評価が最も良いものであり、さらに、基準解403よりも評価が良い。このため、第2のグループ402を試すことなく、妥協してスケジュール候補408を次の基準解として採用する。
【0043】
仮にスケジュール候補408、409の両方ともが基準解よりも評価が悪い場合には、第2のグループ402を用いて探索が続けられる。
【0044】
比較例における組み替え候補の生成処理(図3)は、4つすべての近傍オペレータを使用しており、一方、本実施形態における組み替え候補の生成処理(図4)は、2つの近傍オペレータを使用している。このため、本実施形態において生成される組み替え候補の数は、比較例において生成される組み替え候補の数よりも少なくなる。したがって、組み替え候補の生成、制約チェック、および評価を含む本実施形態における処理は、比較例のものよりも短い時間で実行することができる。本実施形態では、一回の探索でなされる改善は比較例に比べて小さいものの、着実な改善を積み重ねることによって、解の質を落とすことなく、最終的には比較例よりも短い計算時間で解を得ることができる。したがって、本実施形態によれば、計算時間に関して効率良く、スケジュールを得ることができる。さらに、CPUやメモリなどのハードウェア資源を節約することができる。
【0045】
次に、上述したスケジューリング装置100の適用例を説明する。適用例は、設備保守作業を対象にする。具体的には、複数の作業員が複数の物件に設置された設備(例えばエレベータ)を保守する場合における作業員へのタスクの割当てについて説明する。
【0046】
図5は、設備保守作業に関連する5つのサイト502〜506の位置関係501を示している。サイト502は、作業員が駐在する拠点であり、サイト503〜506は、割当て対象のタスクが存在する物件1〜4である。作業員は、物件1〜4でのタスクを担当する。作業員は、拠点から出発し、割当てられたタスクを終えた後に拠点に帰還する。
【0047】
図6は、図5に示したサイト間の移動時間を表すOD(origin-destination)表601である。図6に示される表601において、最も左の列は起点(origin)を表し、最も上の行は終点(destination)を表す。例えば、物件1から物件2への移動に要する時間は20分となっている。なお、ここでは、逆方向の移動時間、すなわち、物件2から物件1への移動時間も同じ20分とする。サイト間の移動時間に関する移動時間情報は、制約格納部115に格納される。
【0048】
図7は、作業員の勤務シフトを表す勤務シフト情報701である。ここでは、簡単化のために、4月1日と4月2日の2日分だけの勤務シフトが示されているが、実際には、1月以上などのより多くの日を対象とすることが可能である。勤務シフト情報701は、A、B、Cという3名の作業員の勤務シフトを含む。勤務シフト情報701は、作業員の勤務可能日および勤務可能時間を含む。例えば、作業員Aは、4月1日に13:00〜16:00まで勤務し、4月2日に9:00〜12:00まで勤務することになっている。勤務シフト情報701は、制約格納部115に格納される。
【0049】
図8は、割当て対象のタスクに関する制約条件に対応するタスク情報801を示している。タスク情報801は、タスクの識別情報、物件の識別情報、作業時間の情報、作業人数の情報、実施可能日の情報、実施可能時間の情報、および実施可能者の情報を含む。タスク情報801は、8つのタスクT1〜T8に関する情報を含む。例えば、タスクT1は、物件1で行うタスクであり、90分の作業時間が必要であり、1名で実施することができる。さらに、タスクT1は、4月1日の9:00〜12:00の範囲で実施しなくてはならない。作業員A、B、CがタスクT1を実施することができる。スケジュールを探索する際は、これらの条件をすべて満たす必要がある。タスク情報801は、制約格納部115に格納される。
【0050】
図9は、評価規則に対応する評価関数のリスト901を示している。図9のリスト901は、4つの評価関数を有する。スケジュール候補は、これら4つの評価関数を用いて評価される。具体的には、スケジュール候補の評価値EVは、下記の式1のように、評価関数を重み付き線形結合することにより算出される。
EV=F1×10+F2×1+F3×60+F4×1 ・・・(式1)
ここで、評価関数F1は、仮割当て状態にあるタスクの作業時間を足し合わせた値である。評価関数F1は小さい方がよく、評価関数F1に対する重みは大きな値に設定される。評価関数F2は、すべての作業員の移動時間の総和である。評価関数F2も少ない方がよいので、評価関数F2に対する重みは正の値に設定される。評価関数F3は、動員する作業員の数である。評価関数F3も少ない方がよいので、評価関数F3に対する重みは正の値に設定される。評価関数F4は、仮割当て状態のタスクの物件と最も近い物件(例えば同じ位置の物件)が同じ日に割当てられているタスクの物件に含まれる仮割当て状態のタスクの数である。評価関数F4も少ない方がよいので、評価関数F4に対する重みは正の値に設定される。評価関数F1は、仮割当て評価関数に対応し、評価関数F2は、距離評価関数に対応し、評価関数F4は、近接度評価関数に対応する。本実施形態では、上述したように、評価値は、評価がより良いほど値が小さくなるように定義されている。
【0051】
図10は、近傍オペレータのリスト1001を示している。図10のリスト1001は、3つの近傍オペレータを有する。3つの近傍オペレータが2つのグループにグループ化されている。具体的には、近傍オペレータO1、O2は、グループ0(第1のグループ)に属し、近傍オペレータO3は、グループ1(第2のグループ)に属する。近傍オペレータO1はassignという名前を付けられ、近傍オペレータO2はmove_dayという名前を付けられ、近傍オペレータO3はshift_assignという名前を付けられている。近傍オペレータO1、O2、O3については後述する。
【0052】
図11は、作成中のスケジュールのフォーマットの一例を示している。本例では、4月1日と4月2日の2日間を扱うため、スケジュールは、2つの仮割当て部および2つの詳細割当て部を有する。仮割当て部は、仮割当て状態のタスクを格納する。例えば、4月1日の仮割当て部は、4月1日に割当てを行いたいタスクを格納する。詳細割当て部は、移動時間を考慮に入れて誰がどの時間にタスクを実施するかまで決定された情報を格納する。本例では、4月1日に作業員A、Bが作業可能であり、4月2日に作業員A、Cが作業可能である。4月1日の詳細割当て部は、作業員A、Bの割当てフィールドを有し、4月2日の詳細割当て部は、作業員A、Cの割当てフィールドを有する。
【0053】
図12から図19を参照して、図7から図10に示される条件に従って行われる探索の過程を説明する。
図12は、第Nステップ(i=N)の基準解であるスケジュールを示している。図12に示されるスケジュール1201では、タスクT1、T4が4月1日に仮割当てされ、タスクT2が4月1日における作業員Bに詳細割当てらされ、タスクT3が4月1日における作業員A、Bに詳細割当てされている。そして、タスクT6が4月2日に仮割当てされ、タスクT5が4月2日における作業員A、Cに詳細割当てされ、タスクT7が4月2日における作業員Aに詳細割当てされ、タスクT8が4月2日における作業員Cに詳細割当てされている。例えば、4月1日には、作業員Bは、拠点から物件1に移動し、タスクT2を13:00〜14:30まで90分間実施し、14:30〜15:00の間に20分かけて物件1から物件2まで移動し、タスクT3を作業員Aとともに15:00〜16:00まで60分間実施し、物件2から拠点まで帰還する。なお、実際には、タスクT3は、14:50〜15:50の範囲で実施することが可能であるが、ここでは、簡単のため30分刻みでタスクを行うものとする。
【0054】
図12に示されるスケジュールについて、上記の式1を用いて評価値が算出される。評価値は、図18に示されるように3096と算出される。図12に示されるスケジュールでは、仮割当て状態のタスクはタスクT1、T4、T6であり、評価関数F1はタスクT1、T4、T6の作業時間を足し合わせた240となる。4月1日における作業員Bの移動時間は、拠点から物件1までの移動時間(45分)と物件1から物件2までの移動時間(20分)と物件2から拠点までの移動時間(50分)とを足した115分である。また、4月1日における作業員Aの移動時間は100分であり、4月2日における作業員Aの移動時間は120分であり、4月1日における作業員Cの移動時間は120分である。したがって、評価関数F2はこれらを足し合わせた455(分)となる。4月1日と4月2日にそれぞれ2名が動員されるので、評価関数F3は4となる。仮割当て状態のタスクT1は物件1に関連し、同じ物件1に関連するタスクT2が4月1日に詳細割当てされている。仮割当て状態のタスクT4は物件3に関連し、同じ物件3に関連するタスクは4月2日に詳細割当てされていない。また、仮割当て状態のタスクT6は物件4に関連し、同じ物件1に関連するタスクT7、T8が4月2日に詳細割当てされている。したがって、評価関数F4は1となる。
【0055】
図12のスケジュールをi=Nの基準解として探索を進める場合について以下に説明する。
【0056】
図19の1行目から6行目は、第1のグループ{O1,O2}によるなし得る組み替えを示している。1行目から3行目が近傍オペレータO1による組み替えに対応する。近傍オペレータO1(assign)は、仮割当てのタスクをその日に詳細割当てする組み替えを行うオペレータである。1行目の組み替えは、近傍オペレータO1によるタスクT1の詳細割当てである。この組み替えにより得られたスケジュール候補は、制約を満たす。このスケジュール候補は図13に示されている。図13に示されるように、タスクT1は、10:30〜12:00の範囲で作業員Bに割当てられている。また、2行目の組み替えは、近傍オペレータO1によるタスクT4の詳細割当てである。図8に示されるように、4月1日では、タスクT4は、13:00〜17:00の範囲で作業員Bに割当てるしかない。しかしながら、タスクT2、T3がすでに詳細割当てされているので、制約は満たされない。したがって、2行目の組み替えでは、スケジュール候補は生成されない。3行目の組み替えは、近傍オペレータO1によるタスクT6の詳細割当てである。タスクT6は4月1日に実施することができないので、制約は満たされない。したがって、3行目の組み替えでは、スケジュール候補は生成されない。
【0057】
4行目から6行目が近傍オペレータO2による組み替えに対応する。近傍オペレータO2(move_day)は、仮割当て状態のタスクの日を移動させる組み替えを行うオペレータである。4行目の組み替えは、近傍オペレータO2によるタスクT1の日にち移動である。具体的には、この組み替えは、タスクT1を4月1日の仮割当て部から4月2日の仮割当て部へ移動する処理である。タスクT1は作業実施可能日が4月1日のみであるので、この組み替えは制約違反となり、スケジュール候補は生成されない。5行目の組み替えは、近傍オペレータO2によるタスクT1の日にち移動である。具体的には、この組み替えは、タスクT4を4月1日の仮割当て部から4月2日の仮割当て部へ移動する処理である。この組み替えは制約を満たし、その結果、図14に示すスケジュール候補が生成される。6行目の組み替えは、近傍オペレータO2によるタスクT6の日にち移動である。具体的には、この組み替えは、タスクT6を4月2日の仮割当て部から4月1日の仮割当て部へ移動する処理である。タスクT6は作業実施可能日が4月2日のみであるので、この組み替えは制約違反となり、スケジュール候補は生成されない。
【0058】
このようにして第Nステップでは、第1のグループを適用することにより、図13および図14に示される2つのスケジュール候補が生成される。これらのスケジュール候補の評価値はそれぞれ、図18に示されるように、2196および3095と算出される。これらの評価値は基準評価値(3096)よりも小さいので、改善が見られたということで第2のグループを試すことなく、次の基準解が決定される。ここでは、評価値がより低い図13に示されるスケジュール候補が次の基準解として採用される。
【0059】
第N+1ステップでは、図13に示されるスケジュール候補が基準解として採用され、第1のグループを適用することにより図15に示されるスケジュール候補が生成される。図15に示されるスケジュール候補の評価値は、2195と算出される。これは基準解の評価値よりも低いので、図15に示されるスケジュール候補が第N+2ステップの基準解として採用される。第N+2ステップでは、第1のグループを適用することにより図13および図16に示される2つのスケジュール候補が生成される。図13に示されるスケジュール候補の評価値は2196と算出され、図16に示されるスケジュール候補の評価値は1605と算出される。図16に示されるスケジュール候補の評価値は基準解の評価値よりも低いので、図16に示されるスケジュール候補が第N+3ステップの基準解として採用される。
【0060】
第N+3ステップでは、第1のグループの適用は、基準解の評価値を下回るスケジュール候補を生成しない。このため、次に、第2のグループ{O3}が適用される。近傍オペレータO3は、ある作業員に割当済みのタスクを同じ日の他の作業員に移動させた上で、当該ある作業員に仮割当て状態のタスクを割当てる組み替えを行うオペレータである。仮割当て状態のタスクは、4月2日の仮割当て部に格納されているタスクT6のみである。このため、近傍オペレータO3によるなし得る組み替えは、タスクT5を他の作業員に移動させてタスクT6を割当てること、タスクT7を他の作業員に移動させてタスクT6を割当てること、およびタスクT8を他の作業員に移動させてタスクT6を割当てることという3つある。このように1つのタスクT6を割当てるのに3つの組み替えを試す必要があり、近傍オペレータO3による組み替えは、近傍オペレータO1、O2による組み替えと比べると計算コストの大きな処理となる。上記の3つの組み替えのうち最後のものだけが制約を充足する。すなわち、タスクT8を作業員Aから作業員Cに移動させ、その上でタスクT6を作業員Aに割当てる処理が有効となる。この結果、図17に示されるスケジュール候補が得られる。図17に示されるスケジュール候補の評価値は705と算出される。この評価値は基準解の評価値より小さい。
【0061】
上述した適用例では、作業員の移動を伴う巡回スケジュールの近似最適化を扱ったが、本実施形態は、ジョブショップスケジューリングなどの他のスケジューリング問題にも適用することが可能である。
【0062】
以上のように、本実施形態に係るスケジューリング装置100では、近傍オペレータは、順序関係を有する複数のグループにグループ化される。スケジューリング装置100は、複数のグループのうちの第1のグループに属する近傍オペレータを基準解に適用することにより生成されたスケジュール候補の中に基準解よりも評価が良いものが存在しない場合には、複数のグループのうちの、順序関係において第1のグループの次に位置する第2のグループに属する近傍オペレータを基準解に適用することによりスケジュール候補を新たに生成し、第1のグループに属する近傍オペレータを基準解に適用することにより生成されたスケジュール候補の中に基準解よりも評価が良いものが存在する場合には、第2のグループを適用しない。これにより、近傍オペレータの適用により生成される組み替え候補の数が低減し、解を得るまでの計算時間を削減することができる。さらに、生成する候補の数が少ない(計算コストの低い)シンプルな近傍オペレータ(例えばO1、O2)を先のグループに設定し、生成する候補の数が多い近傍オペレータ(例えばO3)を後のグループに設定することで、計算時間をより削減することができる。
【0063】
図20は、スケジューリング装置100を実現するハードウェア構成の一例であるコンピュータ装置2000を示している。図20に示されるように、コンピュータ装置2000は、CPU(central processing unit)2001、主記憶装置2002、外部記憶装置2003、入力装置2004、および表示装置2005を備え、これらはバス2006を介して互いに接続されている。
【0064】
主記憶装置2002は、RAM(random access memory)およびROM(read only memory)を含む。外部記憶装置2003は、例えば、HDD(hard disk drive)またはSSD(solid state drive)である。CPU2001は、一時的でないコンピュータ読み取り可能な記憶媒体(例えばROMおよび/または外部記憶装置2003)に記憶されているプログラムを実行し、それにより、ここに説明されたスケジューリング装置100の機能を実現する。なお、ここに説明されたスケジューリング装置100の機能の一部または全部は、ASIC(application specific integrated circuit)やFPGA(field programmable gate array)などのハードウェア回路によって実現されてもよい。
【0065】
入力装置2004は、ユーザからの指示(例えば、制約を指定する入力)を受け取る入力インタフェースである。入力装置2004は、キーボードおよびマウスを備えるが、これに限らない。表示装置2005は、出力スケジュールなどの各種情報を表示する。表示装置2005は、液晶表示装置またはOLED(organic light emitting diode)ディスプレイであるが、これに限らない。入力装置2004および表示装置2005として、タッチスクリーンが使用されてもよい。
【0066】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0067】
100…スケジューリング装置、
101…スケジュール探索部、102…スケジュール候補生成部、
103…スケジュール選択部、104…制約充足判定部、
105…スケジュール評価部、106…スケジュール出力部、
111…スケジュール格納部、112…仮割当て部、
113…詳細割当て部、114…近傍オペレータ格納部、
115…制約格納部、116…スケジュール候補格納部、
2000…コンピュータ装置、
2001…CPU、2002…主記憶装置、2003…外部記憶装置、
2004…入力装置、2005…表示装置、2006…バス。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20