(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023039757
(43)【公開日】2023-03-22
(54)【発明の名称】情報処理装置、情報処理方法及びコンピュータプログラム
(51)【国際特許分類】
G06Q 10/0631 20230101AFI20230314BHJP
【FI】
G06Q10/06 302
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2021147034
(22)【出願日】2021-09-09
(71)【出願人】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(71)【出願人】
【識別番号】598076591
【氏名又は名称】東芝インフラシステムズ株式会社
(74)【代理人】
【識別番号】100091487
【弁理士】
【氏名又は名称】中村 行孝
(74)【代理人】
【識別番号】100120031
【弁理士】
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【弁理士】
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100118876
【弁理士】
【氏名又は名称】鈴木 順生
(74)【代理人】
【識別番号】100103263
【弁理士】
【氏名又は名称】川崎 康
(72)【発明者】
【氏名】愛須 英之
(72)【発明者】
【氏名】山口 大輔
(72)【発明者】
【氏名】池田 克己
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049AA10
(57)【要約】 (修正有)
【課題】制約条件を含む制約情報を簡易な手順で更新する情報処理装置、方法及びプログラムを提供する。
【解決手段】計画システムにおいて、計画作成装置1は、作業員に割り当てる作業に関する少なくとも1つの制約条件を含む制約情報に基づき、作業員が行う作業の候補計画を生成し、生成した候補計画を計画管理装置2に提供する。計画管理装置2は、候補計画に制約違反があるかを判断し、制約違反が存在する場合に、制約違反の内容を含む制約違反情報を計画生成装置1にフィードバックする。計画生成装置1は、計画管理装置2からフィードバックされた制約違反情報を計画システムで解釈可能な制約条件に変換し、変換された制約条件に基づき、上述の制約情報を更新する。計画生成装置1は、候補計画の生成と、制約情報の更新とを繰り返すことにより、最終的な作業計画を生成する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数の作業員が行う作業の候補計画の制約違反のチェックをユーザに行わせるユーザインタフェース部と、
前記候補計画の制約違反に基づいて、前記作業に関する第1制約条件を含む制約情報を更新する更新部と、を備える、情報処理装置。
【請求項2】
前記作業に関する第1制約条件を含む制約情報に基づいて、複数の作業員が行う作業の候補計画を生成する計画生成部を備え、
前記ユーザインタフェース部は、前記計画生成部で生成された前記候補計画の制約違反のチェックをユーザに行わせる、請求項1に記載の情報処理装置。
【請求項3】
前記ユーザインタフェース部は、前記候補計画の制約違反が発生した作業員及び日時と、違反した制約の種類との少なくとも一方を含む制約違反情報を出力する、請求項1又は2に記載の情報処理装置。
【請求項4】
前記制約違反情報に基づいて、前記作業に関する第2制約条件を生成する違反情報変換部を備え、
前記更新部は、前記第2制約条件に基づいて、前記制約情報を更新する、請求項3に記載の情報処理装置。
【請求項5】
複数の前記第1制約条件を記憶する第1記憶部と、
複数の前記第2制約条件を記憶する第2記憶部と、
前記第1記憶部に記憶された前記複数の第1制約条件と、前記第2記憶部に記憶された前記複数の第2制約条件とを比較して、前記第1記憶部に記憶されていない前記第2制約条件を新たな前記第1制約条件として前記第1記憶部に記憶させる条件追加部と、を備える、請求項4に記載の情報処理装置。
【請求項6】
前記候補計画の制約違反が所定の条件を満たすか否かを判定する判定部を備え、
前記候補計画の制約違反が前記所定の条件を満たすまで、前記違反情報変換部による前記第2制約条件の生成、前記更新部による前記制約情報の更新、及び前記第1記憶部への前記新たな第1制約条件の記憶が繰り返し行われる、請求項5に記載の情報処理装置。
【請求項7】
前記ユーザインタフェース部は、前記複数の作業員が行う複数の前記作業の割当の交換と、前記交換による前記候補計画の新たな制約違反のチェックとをユーザに行わせ、
前記違反情報変換部は、前記複数の作業の割当の交換により発生された前記新たな制約違反に基づいて、前記作業に関する第3制約条件を生成する、請求項4乃至6のいずれか一項に記載の情報処理装置。
【請求項8】
前記交換は、未割当の作業と、割当済みの作業との交換を含む、請求項7に記載の情報処理装置。
【請求項9】
前記交換は、割当済みの作業同士の交換を含む、請求項7に記載の情報処理装置。
【請求項10】
前記交換は、3つ以上の作業の交換を含む、請求項7に記載の情報処理装置。
【請求項11】
前記交換を行う前の前記制約情報は、前記第1制約条件に含まれない新規の制約条件を含む、請求項7に記載の情報処理装置。
【請求項12】
前記交換を行う前の前記制約情報のすべては、前記第1制約条件に含まれる、請求項7に記載の情報処理装置。
【請求項13】
前記制約情報は、前記第1制約条件の重みを含み、
前記更新部は、前記第2制約条件と同じ第1制約条件が前記制約情報に含まれる場合は、前記第2制約条件と同じ前記第1制約条件の重みを変更するとともに、前記第3制約条件と同じ第1制約条件が前記制約情報に含まれる場合は、前記第3制約条件と同じ前記第1制約条件の重みを変更する、請求項7乃至12のいずれか一項に記載の情報処理装置。
【請求項14】
前記ユーザインタフェース部は、ユーザにより選択された、特定の日時範囲の作業と制約の種類とを含む前記制約違反情報を強調して表示させる、請求項3乃至13のいずれか一項に記載の情報処理装置。
【請求項15】
前記制約の種類は、作業条件の並びと作業の並びとの少なくとも一つを含む、請求項14に記載の情報処理装置。
【請求項16】
前記制約の種類は、作業者の運転資格、作業資格、及び作業経験の少なくとも一つを含む、請求項14に記載の情報処理装置。
【請求項17】
前記制約の種類は、勤務時間の総和、公休回数、及び深夜勤務回数の少なくとも一つを含む、請求項14に記載の情報処理装置。
【請求項18】
前記ユーザインタフェース部は、前記制約の種類の複数の候補のいずれかを選択可能である、請求項14乃至17のいずれか一項に記載の情報処理装置。
【請求項19】
複数の作業員が行う作業の候補計画の制約違反のチェックをユーザに行わせ、
前記ユーザによりチェックされた前記候補計画の制約違反に基づいて、前記作業に関する第1制約条件を含む制約情報を更新する、情報処理方法。
【請求項20】
複数の作業員が行う作業の候補計画の制約違反のチェックをユーザに行わせるステップと、
前記ユーザによりチェックされた前記候補計画の制約違反に基づいて、前記作業に関する第1制約条件を含む制約情報を更新するステップと、をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の一実施形態は、情報処理装置、情報処理方法及びコンピュータプログラムに関する。
【背景技術】
【0002】
現場における多種多様な制約条件を満たすように、各作業員に作業を割り当てる計画を勤務計画もしくはシフトスケジューリングと称する。非正規従業員の増加を背景として、交通、製造、医療、介護、店舗、教育等の各種分野において、人的リソースを対象とする勤務計画(シフトスケジューリング)の自動化ニーズが高まっている。例えば、鉄道や公共交通などの交通分野における例として、乗務員計画がある。乗務員計画とは、いわゆる交番計画と呼ばれる匿名の基本計画を各乗務員の個別条件(年休、資格など)を満足するように具体的な勤務計画(シフトスケジューリング)に落とし込む作業のことである。
【0003】
人的リソースを対象とする勤務計画では、現場ノウハウに相当する、「出来る限り守って欲しい」という制約条件(以降、ソフト制約条件と称する)が非常に多い。ソフト制約条件では、相互に矛盾の発生するソフト制約条件を同時に満たすことを求められる場合や、全てのソフト制約条件を充足する解が存在しない場合が頻繁に発生する。
【0004】
このようなソフト制約条件を設定された場合のスケジューリングの一般解法の代表例として、非特許文献1に示しているような方法が知られている。まず、各ソフト制約条件について、制約条件の違反度に応じたペナルティの計算式と、各制約条件の重要度に応じた重みとを定義する。その上で、ペナルティの加重和を最小化する重み付き制約充足問題という形式で計画問題を表現する。この計画問題を、組み合わせ最適化問題として解く。
【0005】
これらの方法では、各制約条件の優先度及び各制約条件の重みを事前にバランス良い値としてチューニングすることが非常に難しい。また、同一の会社でも職場ごとに特有の制約条件があるため、漏れなく条件を聞き出して制約条件として反映させることが難しい。また、運用開始後に不定期に就業規則が変更(すなわち制約条件が変更)されることが多いため、計画生成を行う計画モジュールのパラメータ設定データのメンテナンスも難しい。このため、優先度及び重みのチューニングは、従来は人手に頼っていた。
【0006】
このような課題を解決するための技術の一つとして、いわゆる事例ベースと呼ばれる古典的な人工知能分野の手法が存在する。この手法では、入力データと類似している過去の事例データを発見し、発見した事例データを、対象で使用すべき制約条件の選択や、計画の生成に利用する。他の技術として、教師となる過去の計画事例を蓄積し、教師データの特徴量に、自動提案した計画の特徴量が近づくように制約条件及び制約条件の重みを学習する方式なども存在する。しかし、上記で挙げた事例ベースによる方法や、過去の計画事例から制約条件や重みを学習する方法は、熟練者が作成した正しい計画の事例データを大量に準備する必要があり、実用化の障壁が高かった。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2018-120342号公報
【特許文献2】特開2019-028576号公報
【特許文献3】特許第6467264号公報
【特許文献4】特許第6502816号公報
【特許文献5】特許第6622592号公報
【非特許文献】
【0008】
【非特許文献1】野々部 宏司: 「メタヒューリスティックスによる汎用ソルバーの構築」,日本オペレーションズ・リサーチ学会誌, 2011年5月号,p257-262
【非特許文献2】池上敦子 他: 「我が国におけるナース・スケジューリング問題」,日本オペレーションズ・リサーチ学会誌, 1996年8月号,p436-442
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明の実施形態は、制約条件を含む制約情報を簡易な手順で更新可能な情報処理装置、情報処理方法及びコンピュータプログラムを提供する。
【課題を解決するための手段】
【0010】
上記の課題を解決するために、本発明の一実施形態によれば、 複数の作業員が行う作業の候補計画の制約違反のチェックをユーザに行わせるユーザインタフェース部と、
前記候補計画の制約違反に基づいて、前記作業に関する第1制約条件を含む制約情報を更新する更新部と、を備える、情報処理装置が提供される。
【図面の簡単な説明】
【0011】
【
図1】本発明の実施形態に係る計画システムを示すブロック図。
【
図4】複数の作業員の日ごとの作業の割当を示す図。
【
図5】制約の種類として作業条件の並びと作業の並びの2つの選択肢があり、作業の並びを選択した例を示す図。
【
図6】制約の種類として運転資格、作業資格、運転経験の3つの選択肢があり、運転資格を選択した例を示す図。
【
図7】制約の種類として勤務時間総和(上限)、勤務時間総和(下限)、公休回数(下限)、深夜勤務回数(上限)の4つの選択肢があり、勤務時間総和(上限)を選択した例を示す図。
【
図8】
図5~
図7に示す3種類の制約に違反する作業をまとめて着色して表示する例を示す図。
【
図9】着色箇所の作業(行路)を未割当の作業(行路)と交換する例を示す図。
【
図10】着色箇所の作業(行路)同士を交換する例を示す図。
【
図12】異なる作業員の作業を交換する例を示す図。
【
図13A】複数の作業の入れ替えを行う際に新たな制約の重みの初期値を設定する例を示す図。
【
図13B】複数の作業の入れ替えを行う際に学習済みの制約の重みを一括修正する例を示す図。
【
図14A】計画生成装置1から計画管理装置2に提供された候補計画の一例を示す図。
【
図14B】種別Aの制約に違反しているとして計画評価部31により検出された箇所を示す図。
【
図16A】計画生成装置1から計画管理装置2に提供された候補計画の一例を示す図。
【
図16B】
図16Aの候補計画において前記の種別Bの制約に違反しているとして計画評価部31により検出された箇所を示す図。
【
図18A】計画生成装置1から計画管理装置2に提供された候補計画の一例を示す図。
【
図18B】
図18Aの候補計画において前記の種別Cの制約に違反しているとして計画評価部31により検出された箇所を示す図。
【
図20A】計画生成装置1から計画管理装置2に提供された候補計画の一例を示す図。
【
図20B】
図20Aの候補計画において前記の種別Dの制約に違反しているとして計画評価部31により検出された箇所を示す図。
【
図22】本実施形態に係る計画システムの処理の一例のフローチャート。
【
図23】
図1の計画生成装置1又は計画管理装置2のハードウェア構成を示す図。
【発明を実施するための形態】
【0012】
以下、図面を参照して、情報処理装置、情報処理方法及びプログラムの実施形態について説明する。以下では、情報処理装置の主要な構成部分を中心に説明するが、情報処理装置には、図示又は説明されていない構成部分や機能が存在しうる。以下の説明は、図示又は説明されていない構成部分や機能を除外するものではない。
【0013】
以下、図面を参照しながら、本発明の実施形態について説明する。
【0014】
図1は、本発明の実施形態に係る計画システムを示すブロック図である。
図1の計画システムは、本実施形態に係る情報処理装置の一形態である計画生成装置1と、計画管理装置2とを備える。
【0015】
図1の計画システムの概要を説明する。計画生成装置1は、作業員に割り当てる作業に関する少なくとも1つの制約条件(第1制約条件)を含む制約情報に基づき、作業員が行う作業の候補計画を生成する。生成した候補計画を計画管理装置2に提供する。計画管理装置2では、候補計画に制約違反があるかを判断し、制約違反が存在する場合に、制約違反の内容を含む制約違反情報を計画生成装置1にフィードバックする。計画生成装置1は、計画管理装置2からフィードバックされた制約違反情報を計画システムで解釈可能な制約条件に変換し、変換された制約条件に基づき、上述の制約情報を更新(制約条件の学習)する。計画生成装置1は、候補計画の生成と、制約情報の更新(制約条件の学習)とを繰り返すことにより、最終的な作業計画を生成する。これにより、現場における制約の変更、追加、削除等があったり、現場における制約が多種多様であったりしたとしても、現場における制約をできるだけ満足する計画を簡単に生成する汎用的なシステムを実現できる。以下、
図1の計画システムについて詳細に説明する。
【0016】
計画生成装置1は、入力部10、作業データ記憶部11、予約データ記憶部12、初期計画記憶部13、初期制約条件記憶部14、制約条件記憶部(第1記憶部)15、計画記憶部16、計画生成部17、制約条件取得部25、制約条件比較部21、更新部26、を備えている。制約条件取得部25は、違反情報一次記憶部18、違反情報変換部19、第2制約条件一次記憶部(第2記憶部)20、第3制約条件一次記憶部(第3記憶部)27を備えている。更新部26は、制約条件追加部22、重み変更部23を備えている。
【0017】
計画生成部17は、作業データ記憶部11、予約データ記憶部12、初期計画記憶部13、初期制約条件記憶部14及び制約条件記憶部15に記憶されたデータに基づき、少なくとも1人の作業員(スタッフ)に1日又は複数の日(時間帯)における作業を割り当てることにより候補計画を生成する。生成する計画の例としては、前述した鉄道の乗務員の勤務計画がある。
【0018】
図2に乗務員の勤務計画の例を示す。勤務計画として、乗務員ごとに各日(時間帯)に作業を割り当てている。ここで、「行路」は、該当日における1シフトの乗務を示し、作業員に割り当てるべき作業に相当する。「年休」は有給休暇を示し、「休」は定休日を示す。休みの種類には、「公休」、「特別休暇」など他のものがあってもよい。
【0019】
作業データ記憶部11に記憶される各作業の定義データは、作業を一意に特定可能なID情報を含む、属性情報を備える。
図3は、行路の定義データの具体例を示す。休み扱い、勤務種別、勤務時間、勤務開始時刻、勤務終了時刻、休憩時間、乗車する列車の車種、列車の経由区間など、複数の属性の値を示す項目が含まれる。「休み扱い:NO」は、乗務員の休みの日でないことを表す。図示の属性の組は一例であり、その他の属性情報が含まれていてもよいし、
図3に示した属性情報の一部が存在しなくてもよい。
図2に示した複数の行路のうち同じ番号(ID )の行路は、
図3の各項目の値が同じであることを意味する。
【0020】
本実施形態で生成対象とする計画は、乗務員の勤務計画以外にも、各日(各時間帯)で処理しなければならない作業の組が与えられており、各作業員に作業を割り当てる、いわゆるシフトスケジューリングで生成する計画であれば特に限定されない。例えば、製造計画や建築工事の分野において、各時間帯に処理すべき作業に作業員を割当する計画でもよい。また、医療や介護の分野において、各時間帯に対応すべき作業(チェック、患者への処置など)が事前に決まっており、各作業員の資格や出勤予定に応じて、各作業を各作業員に割り当てる計画でもよい。また、店舗において複数種類の作業がありそれぞれに作業員を割り当てる計画でもよい。また、教育分野で、各時間帯(時間割)に対し対応可能な教師を割り当てる計画でもよい。属性情報の種類は、計画の生成対象とする作業の種類によって異なる。
【0021】
入力部10は、記憶部11~15の少なくとも1つに格納するデータを入力する入力装置である。入力部10は、一例として、本システムのユーザが操作する装置、例えばマウス、キーボード、タッチパネルでもよい。あるいは、入力部10は、ユーザが音声、ジェスチャ等により情報を入力する装置でもよい。あるいは、入力部10は、図示しない有線又は無線の通信ネットワークを介して、外部の装置(サーバ、端末、又はストレージ等)からデータを受信し、受信したデータを記憶部11~15の少なくとも1つに入力する通信装置でもよい。
【0022】
作業データ記憶部11は、各日(各時間帯)で処理すべき作業を含む作業データを記憶する。作業データ記憶部11は、一例としてデータベース(DB)又はリスト等により構成される。作業データ記憶部11は、計画の生成対象となる期間の各日(各時間帯)について、対応しなければならない複数の作業の組を記憶している。また、作業データ記憶部11は、各作業の定義データを記憶している。計画の生成対象となる期間の各時間帯について、対応しなければならない全ての作業に、それぞれ作業員(鉄道の場合は乗務員)を割り当てる必要がある。
【0023】
予約データ記憶部12は、予め各作業員に割り当てられた作業や休みを含む予約データを記憶する。予約データ記憶部12は、一例としてデータベース(DB)又はリスト等により構成される。計画を生成する際、予約データに示される割り当てを守る必要がある。なお、予約データを用いずに計画を生成することも可能である。この場合、予約データ記憶部12は不要である。
【0024】
初期計画記憶部13は、計画の生成対象となる期間の各時間帯について、対応しなければならない全ての作業に、作業員を割り当てた初期計画を記憶する。初期計画記憶部13は、一例としてデータベース(DB)又はリスト等により構成される。初期計画は、ユーザがマニュアルで生成した計画でもよいし、ランダムに各作業員に作業を割り当てた計画でもよいし、その他で生成した計画でもよい。初期計画を用いずに、ゼロベースで計画を生成することも可能である。
【0025】
初期制約条件記憶部14は、作業員(乗務員等)に割り当てる作業に関する予め決められた制約条件(初期制約条件)を記憶する。初期制約条件記憶部14は、一例としてデータベース(DB)又はリスト等により構成される。各制約条件には重みが設定されている。制約条件の簡単な例として、「年休」、「休」などの休暇の日には乗務員に行路を割り当てることを禁止する制約条件がある。制約条件には様々な種類がある。制約条件の詳細については後述する。
【0026】
制約条件記憶部(第1記憶部)15は、本システムによって学習された制約条件(第1制約条件)を記憶する。制約条件記憶部15は、一例としてデータベース(DB)又はリスト等により構成される。初期状態では、制約条件記憶部15にはまだ制約条件が記憶されていなくてもよい。制約条件には、重みが設定されている。制約条件記憶部15に記憶されている制約条件を格納したリストを第1制約条件リストと呼ぶ。
【0027】
制約条件記憶部15に記憶されている制約条件の集合は、第1制約条件に対応する。初期制約条件記憶部14に記憶されている初期制約条件も含むように制約情報を定義してもよい。
【0028】
計画生成部17は、作業データ記憶部11、予約データ記憶部12及び初期計画記憶部13に記憶されているデータと、初期制約条件記憶部14及び制約条件記憶部15に記憶されている制約条件とに基づき、複数の作業員に対し、各日(各時間帯)において対応すべき作業(行路等)を割り当てた候補計画を生成する。計画生成部17は、生成した候補計画を計画記憶部16に格納する。また、計画生成部17は、生成した候補計画を、計画管理装置2に提供する。
【0029】
計画生成部17が計画を生成するアルゴリズムは、先述のソフト制約条件を扱うことが可能な公知の方法を利用する。以下、最適化問題としての定義の一例について説明する。記憶部14,15に記憶されているそれぞれの制約条件の種類に応じて、制約条件の違反度に応じたペナルティと、制約条件の重要度に応じた重みとを定義する。ペナルティの加重和を最小化する重み付き制約充足問題として問題を定義し、この問題を組み合わせ最適化問題として解く。組み合わせ最適化問題の解法としては、構築法又は逐次改善法などがある。構築法は、制約を満足する作業(行路)を順次充当して行く方法である。逐次法は、逐次的に計画を微修正しては内部的に評価することを反復する方法(最急降下法、タブーサーチ、遺伝的アルゴリズム、シミュレーティド・アニーリングなど)である。解法には他にも様々あるが、ここでは特に限定しない。
【0030】
本実施形態における解法の具体例を示す。以下のように記号を定義する。
Ck:制約条件
pk(x):k番目の制約条件の違反度に応じたペナルティ(制約条件を満たすとき0となる)
Wk:制約条件の重要度に応じた重み(>=0)
x:変数、x=(x1,m1,j1,…, xd,m,j,…, xD,M,J)(∀d∈D, ∀j∈J(d)),xd,m,j∈{0,1}
D:日(時間帯)の集合
M:作業員の集合
J:割り当てるべき作業(行路等)の集合
J(d):日(時間帯)d∈Dの割り当て対象の作業の集合(⊆J)。割り当てるべき作業j(d)はd毎に異なる。
p(x):ペナルティの加重和、P(x)=Σwkpk(x)
【0031】
変数xd,m,jは0又は1の値をとる。日(時間帯)d∈Dの作業j∈J(d)を作業員m∈Mに割り当てた場合、変数xd,m,j=1、それ以外は、変数xd,m,j=0とする。
【0032】
P(x)を目的関数とし、目的関数を最小化する問題を以下のように定義する。
【数1】
【0033】
目的関数P(x)を最小化する問題を解くための基本的な制約条件を以下に示す。
【数2】
【数3】
【数4】
【0034】
式(2)は、各日(各時間帯)の割り当て対象の作業は、作業員の誰か1人に必ず割り当てる制約である。
【0035】
式(3)は、どの作業員も1日(時間帯)に1つの作業を割り当てるか、何も割り当てない(仕事がない日(時間帯)があり得る)との制約である。
【0036】
式(4)は、ある日(時間帯)にある作業員に必ず割り当てる作業を表す集合C1⊆D×M×J、ある日(時間帯)にある作業員に割り当ててはならない作業を表す集合C2⊆D×M×Jを定義し、集合C1及び集合C2を制約とする。集合C1及び集合C2のいずれか一方のみを定義してもよい。
【0037】
目的関数P(x)を、式(1)~(4)の基本的な制約条件の元、最小化又は準最小化することで、変数xd,m,jを求める。これにより、複数の作業員に対し、各日(各時間帯)の作業を割り当てる。目的関数を解く際、初期計画から開始し、初期計画を修正するように処理を行うことで、効率的な探索が可能となる。但し、初期計画が存在せず、ゼロベースで計画を作成することも可能である。この場合、初期計画記憶部13は不要である。探索に制限時間がある場合は、初期計画から開始することで、制限時間内に最小化又は準最小化する可能性を高めることができる。
【0038】
初期制約条件及び第1制約条件リストに含まれる制約条件(学習された制約条件)は目的関数P(x)に反映される。第1制約条件リストに制約条件が追加されるごとに、追加された制約条件が反映された目的関数P(x)を最小化又は準最小化するよう最適化を行う。目的関数に含まれるペナルティ(ペナルティ関数とも呼ぶ)pk(x)の詳細については後述する。
【0039】
計画管理装置2は計画評価部31、計画更新部32、及び入出力部(ユーザインタフェース部)33を備えている。入出力部33は、本システムのユーザが操作する入力装置(操作装置)と、本システムのユーザに情報を提示する出力装置とを含む。入力装置の例は、計画生成装置1の入力部10と同様である。出力装置は、一例として、液晶表示装置、有機EL表示装置、プラズマ表示装置、CRT表示装置などの表示装置である。あるいは、出力装置は、VR(Virtual Reality)ヘッドマウント又はAR(Augumented Reality)グラスなどでもよい。入出力部33は、候補計画の制約違反のチェックをユーザに行わせる。入出力部33は、候補計画の制約違反が発生した作業員及び日時と、違反した制約の種類との少なくとも一方を含む制約違反情報を出力する。
【0040】
計画評価部31は、計画生成部17から提供された候補計画について制約違反があるか否かのチェック(制約違反チェック)を行う。計画更新部32は、ユーザが作業員間の作業の交換などの操作により、与えられた候補計画を部分的に修正するためのユーザーインターフェース機能を有する。
【0041】
制約違反チェックの第1の方法としては、コンピュータプログラムの実行により、事前に与えられた各種制約を満たすか否かをチェックする方法がある。すなわち、計画評価部31は、制約を満たすか否かをチェックする機能を有する。この場合、制約の内容を含む複数のルール(制約ルール)に基づき各制約ルールを満たすか否かを判定するプログラムを計画評価部31に実行させてもよい。制約ルールは、ユーザが入出力部33を用いて記憶装置に設定し、設定した制約ルールを読み出すようにしてもよい。計画評価部31は、候補計画が違反している(満たしていない)制約を制約違反情報として特定し、計画生成装置1に提供(フィードバック)する。
【0042】
制約違反チェックの第2の方法としては、ユーザが候補計画を表示装置等でチェックし、制約を満たしていない箇所があるかを検出し、検出した箇所が満たしていない制約を制約違反情報として、入出力部33を用いて入力してもよい。この場合、計画評価部31は、ユーザにより入力された制約違反情報を計画生成装置1に提供(フィードバック)する。
【0043】
以下、制約違反チェックの第2の方法について、具体例を用いて詳細に説明する。
図4~
図11は、入出力部33に設けられる表示装置の画面表示例を示す図である。
図4~
図11は、作業員A~Lの日ごとの作業の割当を示す図である。
図4~
図11の作業は、例えば各作業員(具体的には各乗務員)が乗車する列車の行路である。
図4~
図11中の数値は、作業(行路)の識別情報である。
【0044】
まず
図4の画面の例のように、候補計画の中で、既に学習済みの制約条件(制約条件記憶部15に追加済の制約条件)に違反している作業(例えば、行路)を、着色するなどの手法でユーザの注意を喚起する。
図4では、着色する箇所(作業)を便宜上グレーで表示している。
【0045】
次に、
図5~
図7の画面の例のように、ユーザが選択した作業の種類と数に応じて、該当する制約の種類(種別)の選択肢を絞り込んで表示する。これら選択肢の中からいずれかの制約の種類をユーザが指定することで、最低限の操作で制約違反チェックを行うことができる。
【0046】
図5は、制約の種類として、作業条件の並びと作業の並びの2つの選択肢があり、作業の並びを選択した例を示している。
図5の例では、作業の並びが禁止されているためユーザが制約違反として選択した箇所を着色して表示している。
【0047】
図6は、制約の種類として、運転資格、作業資格、運転経験の3つの選択肢があり、運転資格を選択した例を示している。
図6の例では、運転資格が禁止されているためユーザが制約違反として選択した箇所を着色して表示している。
【0048】
図7は、制約の種類として、勤務時間総和(上限)、勤務時間総和(下限)、公休回数(下限)、深夜勤務回数(上限)の4つの選択肢があり、勤務時間総和(上限)を選択した例を示している。
図7の例では、勤務時間の総和が上限を超えている作業員の候補計画のすべてをユーザが制約違反として選択し、選択箇所を着色して表示している。
【0049】
図8は、
図5~
図7に示す3種類の制約に違反する作業をまとめて着色して表示する例を示している。
図8に示すように、複数種類の制約に違反する作業を同一画面にまとめて表示してもよいし、
図5~
図7に示すように、個々の種類の制約に違反する作業を別画面に表示してもよい。
【0050】
ユーザが制約違反のチェックを行う処理に加え、
図5~
図8に示す制約違反箇所の作業を別の作業に交換する操作を行って、候補計画を修正して制約違反を解消させてもよい。
【0051】
図9は制約違反箇所の作業(行路)を未割当の作業(行路)と交換する例を示す図である。
図9では、行路30と交換可能な該当日(11/5)の未割当の作業(行路)のリストを表示し、このリストからいずれか一つの作業(行路)を選択する。具体的には、
図9では、行路30をリスト中の行路47と交換する例を示している。
【0052】
図10は着色箇所の作業(行路)同士を交換することで制約違反を解消する例を示す図である。
図10では、作業員Bの行路15と作業員Lの行路30とを交換する例を示している。
【0053】
本実施形態による計画生成装置1は、上述した第1の方法と第2の方法による制約違反チェックを行うか、あるいは、第2の方法のみによる制約違反チェックを行う。
【0054】
制約違反チェックでチェックする制約の種類として、以下の4種類の一部もしくは全種類を含む。計画管理装置2は、制約違反情報として、違反している制約の種類と違反箇所(違反している日(時間枠)と作業員の組み合わせ)の情報を計画生成装置1に提供(フィードバック)する。また、ユーザが複数の作業の割当の交換により候補計画を更新した後に、前記の更新前の制約違反情報に加え、更新後の計画に対しても制約違反チェックを行い、新たな制約違反が発生している場合は、制約違反情報として、違反している制約の種類と違反箇所(違反している日(時間枠)と作業員の組み合わせ)の情報を計画生成装置1に提供(フィードバック)する。
【0055】
(A)同一の作業員に割り当てた作業の特定の並び方を禁止する制約
(B)作業員の資格・経験と、作業の特定の属性との組合せを禁止する制約
(C)同一の作業員に割り当てた作業の特定の属性値の期間内の総和の上限及び下限の少なくとも一方を規定する制約
(D)同一の作業員に割り当てた作業の属性の特定の並び方を禁止する制約
【0056】
種別Aの制約は、同一の作業員に割り当てた複数の作業(休み等も含む)の並び方自体の制約である。計画評価部31又はユーザは、在宅休養時間を一定時間以上取る必要がある、休みの前後の勤務開始時刻や勤務終了時刻の組み合わせの制限、長時間勤務を連続させてはならないなどの様々な複数作業間の接続条件を考慮した判定ロジックにより、候補計画の作業の並び方の違反箇所をチェックする。前記の複数作業間の接続条件そのものは計画生成装置1にはフィードバックされない。
【0057】
種別Bの制約に関して乗務員計画の例で説明する。例えば、乗務員は資格によって運転可能な車種が制限されている場合がある。また、乗車中に行う乗車券確認等の作業に必要な資格を乗務員が有していなければならない場合、及び、行路に含まれる路線の運転経験を乗務員が有していなければならない場合がある。
【0058】
種別Cの制約の具体例として、例えば一定期間内の総労働時間が所定の上限を超えないとの制約、例えば一定期間内の総労働時間が所定の下限以上となるとの制約、及び所定の期間内に法律で規定された数の休みを取っているかの制約などがある。上限値及び下限値は、制約を規定する境界値に相当する。種別Cの制約の場合、計画評価部31は、違反している制約の種類の情報として、上限及び下限のいずれを制限する制約かを識別する情報も計画生成装置1に提供(フィードバック)する。
【0059】
種別Dの制約の具体例として、勤務種別「深夜」が一定回数連続してはならないとの制約、及び、「深夜」と「早朝」とが連続してはならないとの制約などがある。
【0060】
制約条件取得部25は、計画管理装置2から候補計画が満たしていないと判断された制約違反情報を取得する。違反情報一次記憶部18は、取得された制約違反情報を記憶する。違反情報変換部19は、違反情報一次記憶部18に記憶された制約違反情報を読み出し、本計画システムで解釈可能な形式に変換して、変換後の情報を第2制約条件として第2制約条件一次記憶部20に格納する。違反情報変換部19に記憶されている制約違反情報は消去してもよいし、次回の違反情報一次記憶部18への書き込みの際に上書きされてもよい。第2制約条件一次記憶部20に記憶されている第2制約条件の集合を含むリストを、第2制約条件リストと呼ぶ。さらに、違反情報変換部19は、複数の作業の割当の交換により発生された新たな制約違反に基づいて、作業に関する第3制約条件を生成する。
【0061】
制約条件比較部21が、第2制約条件一次記憶部20から第2制約条件リストを読み出す。第2制約条件リストを読み出した後、制約条件比較部21は、第2制約条件一次記憶部20に記憶されている第2制約条件リストを消去してもよい。あるいは、次回の第2制約条件一次記憶部20への書き込みの際に第2制約条件リストが上書きされてもよい。
【0062】
制約条件比較部21は、第2制約条件リスト中の制約条件を、制約条件記憶部15内の第1制約条件リストに含まれる各制約条件と比較する。第2制約条件リスト中の制約条件と同じ制約条件が第1制約条件リストに含まれていない場合は、制約条件追加部22が、当該制約条件を新規制約条件として、第1制約条件リストに追加する。制約条件追加部22は、当該制約条件に初期の重みを設定し、設定した重みを制約条件に関連づけて第1制約条件リストに追加する。重みは予め決められた値でよいし、計画管理装置2が制約違反情報とともに重みをフィードバックするようにし、フィードバックされた重みを用いてもよい。その他の方法で重みを決定してもよい。重みは学習パラメータの一種であり、実際の事例を通して、事前にチューニングしておいてもよい。
【0063】
一方、第2制約条件リスト中の第2制約条件と同じ制約条件が、第1制約条件リストに含まれている場合には、重み変更部23が、第1制約条件リストに含まれている当該制約条件の重みを変更する。例えば一定の値を加算する、又は一定の値を乗じることにより重みを変更する。重みが更新される回数を用いて、重みの値を変更してもよい。例えば変更される回数が多くなるにつれ、加算する値を小さく又は大きくしてもよい。その他の方法で重みを変更してもよい。制約の種別がCであり、第2制約条件リスト中の制約条件と同じ属性値で同じ長さの期間内の属性値の総和に関する制約である場合で、かつ、境界値(上限または下限)のみ異なる場合は、第2制約条件リスト中の制約条件に含まれる境界値によって、第1制約条件リストに含まれる制約条件の境界値を更新し、さらに、当該制約条件の重みを更新する。境界値のみ更新する場合もあり得る。
【0064】
上述した
図9及び
図10に示すように、ユーザが作業を交換する操作により候補計画を部分的に修正することで、制約違反を解消する操作を行った場合は、ユーザの操作内容に基づいてソフト制約の「重み」の大小関係を学習することが可能である。
【0065】
例えば、ユーザが制約違反(行路30→行路13の連続)を解消するため、前述の
図9の交換操作を行ったとする。この交換操作後に、
図11のように“47→13“の並びによる制約違反が新たに発生したとすると、ユーザは“30→13“の制約違反の重みは“47→13“の制約違反の重みより大きいと認識していると解釈し、この情報を用いて“30→13“の重みを初期設定から修正することが可能である。例えば、“30→13“が新たに制約違反として指摘された箇所であり、“47→13“が既に学習済の制約だとすると、現時点の47→13“の重みに一定量を追加した値を、新たな制約“30→13“の初期重みとすることができる。
【0066】
また、交換前後の制約違反(
図11の例だと“30→13“、“47→13“)のどちらも学習済の制約の場合、交換前後の両制約の重みを、大小関係を満たすように同時修正してもよい。例えば、現時点の47→13“の重みに一定量を追加して“30→13“の重みを修正する、逆に現時点の“30→13“の重みから一定量を減じて“47→13“の重みに修正するなどの方法があり得るが、本実施形態では具体的な計算方法は限定しない。
【0067】
ユーザが制約違反(行路30→行路13の連続)を解消するため、前述の
図10の交換操作を行ったとする。交換操作後に、
図12に示すように、交換先で“41→30“の並びによる制約違反が新たに発生したとすると、ユーザは“30→13“の制約違反の重みは“41→30“の制約違反の重みより大きいと認識していると解釈し、この情報を用いて、先の例と同様に“30→13“の重みを初期設定や修正することが可能である。また、“30→13”と“41→30”がいずれも既に学習済みの制約の場合、両者の重みを、大小関係を満たすように同時に修正することが可能である。
【0068】
ユーザが作業を交換する操作により制約違反を解消する際に、割当済行路同士を交換する場合、複数個所(3か所以上)を同時に交換してもよい。この場合、交換箇所の交換操作前後の違反制約の重みの和の大小関係を比較することで、ユーザの認識する制約の重みの大小関係の情報を取得することが可能である。
【0069】
例えば、
図13Aの例では、複数の作業(行路)の入れ替えにより、交換前は2つだった制約違反が3つに増加したとする。この場合、新たな制約“30→13“の重みをxとして、他の4つの制約の重みにそれぞれ現状値が設定されているとすると、交換前の制約違反の重みの総和より交換後の制約違反の重みの総和の方が小さいとユーザは認識したと考えられ、本例だとX+2>2+2+3が成り立つと解釈し、xに5以上の初期値を設定できる。
【0070】
図13Bの例では、交換前後の制約違反が全て学習済の制約だったとすると、例えば補正係数kを導入し、不等式が成り立つように補正係数kを設定し、交換操作後に出現した制約違反の制約の重みを、(4+3)/(2+1+3)以下の値の補正係数kを乗ずることで按分して均等に更新する。
なお、本実施形態では、これらの重みの更新方法の具体的な計算方法は限定しない。
【0071】
以下、計画管理装置2からフィードバックされた制約違反情報に基づき、第1制約条件リスト内の制約条件を更新する具体例をいくつか説明する。
【0072】
[第1の例]
図14Aは、計画生成装置1から計画管理装置2に提供された候補計画の一例を示す図である。
図14Bは、
図14Aの候補計画において前記の種別Aの制約に違反しているとして計画評価部31により検出された箇所を示す図である。検出された箇所が、破線の枠で囲まれている。
【0073】
計画評価部31では
図14Aの候補計画に制約違反となる箇所(事例)があるかを判断する。本例では、
図14Bに示す「行路5→行路3」、「行路→公休→行路6」の2つの事例が制約に違反しているとして検出されている。
【0074】
計画生成装置1の制約条件取得部25は、当該2つの制約の違反に関する制約違反情報を計画管理装置2から取得する。制約条件取得部25は、制約違反情報を計画生成装置1で解釈可能な形式に変換し、2つの制約条件を含む第2制約条件リストを制約条件比較部21に提供する。
【0075】
制約条件比較部21は、第2制約条件リストに含まれる各制約条件を、第1制約条件リストに含まれる制約条件と比較し、同じか否かを判断する。第2制約条件リストに含まれる制約条件が第1制約条件リストに含まれる制約条件と異なる場合、当該制約条件を第1制約条件リストに追加する。追加する制約条件には初期の重みを設定する。第2制約条件リストに含まれる制約条件が第1制約条件リストに含まれる制約条件と同じ場合、第1制約条件リストにおける当該制約条件の重みを変更する。
【0076】
図15は第1制約条件リストの更新例を示す図である。
図15の右側に示すように、更新前の第1制約条件リストには「行路5→行路3」を禁止する制約条件と、「行路9→行路5」を禁止する制約条件とが格納されている。重みはいずれも0.5である。その他の制約条件も格納されているが、図示を省略している。
【0077】
図15の中央に示すように、計画管理装置2からフィードバックされた制約違反情報として、「行路5→行路3」を禁止する制約と、「行路4→公休→行路6」を禁止する制約が示されている。
【0078】
フィードバックされた「行路5→行路3」は、第1制約条件リストに含まれる「行路5→行路3」と同じである。このため、
図15の左側に示すように、第1制約条件リストにおける「行路5→行路3」の重みに0.1が加算されて、0.6となっている。
【0079】
フィードバックされた「行路4→公休→行路6」は、第1制約条件リストには含まれていない。このため、
図15の左側に示すように、「行路4→公休→行路6」が新規の制約条件として、初期の重み0.5に関連づけられて、第1制約条件リストに追加されている。
【0080】
[第2の例]
図16Aは計画生成装置1から計画管理装置2に提供された候補計画の一例を示す図である。
図16Bは、
図16Aの候補計画において前記の種別Bの制約に違反しているとして計画評価部31により検出された箇所を示す図である。検出された箇所が、破線の枠で囲まれている。
図16A及び
図16Bの車種は作業(行路)の属性の一つであるとする。
【0081】
本例では、乗務員2に汽車で乗務する行路3を割り当てた日と、乗務員2にディーゼル機関車(D車)で乗務する行路5を割り当てている日を制約違反箇所として検出されている。
【0082】
図17は第1制約条件リストの更新例を示す図である。
図17の右上に示すように、更新前の第1制約条件リストには「乗務員1&汽車(乗務員2が汽車で乗務すること)」を禁止する制約条件と、「乗務員2&D車(乗務員2がディーゼル機関車(D車)で乗務すること)」を禁止する制約条件とが格納されている。重みはいずれも0.5である。その他の制約条件も格納されているが、図示を省略している。
【0083】
図17の中央に示すように、計画管理装置2からフィードバックされた制約違反情報として、「乗務員2&汽車」を禁止する制約と、「乗務員2&D車」を禁止する制約が示されている。
【0084】
フィードバックされた「乗務員2&D車」は、第1制約条件リストに含まれる「乗務員2&D車」と同じである。このため、
図17の左側に示すように、第1制約条件リストにおける「乗務員2&D車」の重みは0.1加算されて、0.6となっている。
【0085】
フィードバックされた「乗務員1&汽車」は、第1制約条件リストには含まれていない。このため、
図17の左側に示すように、「乗務員1&汽車」が新規の制約条件として、第1制約条件リストに追加されている。「乗務員1&汽車」の初期の重みは0.5とされている。
【0086】
[第3の例]
図18Aは、計画生成装置1から計画管理装置2に提供された候補計画の一例を示す図である。
図18Bは、
図18Aの候補計画において前記の種別Cの制約に違反しているとして計画評価部31により検出された箇所を示す図である。検出された箇所が、破線の枠で囲まれている。
図18において、勤務(勤務時間)は作業(行路)の属性の一つであるとする。
【0087】
計画評価部31は、制約を満たさないとして、
図16Bに点線の枠線で示す箇所を検出している。
【0088】
図19は、第1制約条件リストの更新例を示す図である。
図19の右上に示すように、更新前の第1制約条件リストには「Σ
8
d=1勤務時間d<60」を要求する制約条件と、「Σ
8
d=1公休>1」を要求する制約条件が格納されている。「Σ
8
d=1勤務時間d<60」は8日間の勤務時間の合計が60時間未満となることを要求する。換言すれば、8日間の勤務時間の合計が60時間以上となることを禁止する。「Σ
8
d=1公休>1」は、8日間のうち公休の回数が1回を超えることを要求する。換言すれば、8日間のうち公休の回数が1回以下となることを禁止する。その他の制約条件も格納されているが、図示を省略している。
【0089】
図19の右下に示すように、計画管理装置2からフィードバックされた制約違反情報として、「Σ
8
d=1勤務時間d<56」が示されている。境界値(この例では56)は、候補計画において種別Cの制約に違反するとされた箇所の対象の属性値の和であり、
図18(B)の乗務員2の勤務時間の8日間の総和56に相当する。
【0090】
フィードバックされた「Σ
8
d=1勤務時間d<56」は、第1制約条件リストに含まれる「Σ
8
d=1勤務時間d<60」と同様に8日間の勤務時間の総和の上限を制限する制約条件であり、境界値(この例では60)のみが異なる。このため、
図19の左に示すように、第1制約条件リストにおける「Σ
8
d=1勤務時間d<60」の境界値60を、56に変更している。また、重みに0.1を加算して、0.6としている。この例では、制約条件の境界値を変更したが、境界値が異なる制約条件を新たな制約条件として追加する構成も可能である。この場合、新たな制約条件には初期の重み(例えば0.5)を設定する。また、境界値のみを変更して重みを変更しない方法もあり得る。
【0091】
[第4の例]
図20Aは計画生成装置1から計画管理装置2に提供された候補計画の一例を示す図である。
図20Bは
図20Aの候補計画において前記の種別Dの制約に違反しているとして計画評価部31により検出された箇所を示す図である。検出された箇所が、破線の枠で囲まれている。
図20において、日勤、深夜、早朝などの勤務種別は作業(行路)の属性の一つであるとする。
【0092】
図21は第1制約条件リストの更新例を示す図である。
図21の右上に示すように、更新前の第1制約条件リストには「深夜→深夜」を禁止する制約条件が格納されている。重みは0.5である。その他の制約条件も格納されているが、図示を省略している。
【0093】
図21の右下に示すように、計画管理装置2からフィードバックされた制約条件として、「深夜→深夜」を禁止する制約条件と、「深夜→早朝」を禁止する制約条件が示されている。
【0094】
フィードバックされた「深夜→深夜」は、第1制約条件リストに含まれる「深夜→深夜」と同じである。このため、
図21の左に示すように、第1制約条件リストにおける「深夜→深夜」の重みが0.1加算されて、0.6となっている。
【0095】
フィードバックされた「深夜→早朝」は、第1制約条件リストには含まれていない。このため、
図21の左に示すように「深夜→早朝」が新規の制約条件として、第1制約条件リストに追加されている。「深夜→早朝」の初期の重みは0.5とされている。
【0096】
ここで第1制約条件リストに含まれる制約条件に基づき前記の式(1)のペナルティ関数を定式化する例を具体的に示す。
【0097】
【0098】
k番目の制約条件(k∈K1)により、どの作業員にも、(Tk+1)個の作業を特定の順序(jk(0), jk(1), …, jk(Tk))で割り当てるのを禁止する。K1は同種の制約条件の数、kは制約条件のIDであり、Tkは制約条件kが禁止する並びの数を示す。
【0099】
【0100】
特定の属性の仕事jを集合Mkに含まれる作業員に割り当てるのを禁止する。フラグ(α1j, α2j, …, αKj)は、作業jが制約条件kで対象とする属性に該当するか否かを示す。αkj=1の場合は該当、αkj=0なら非該当を表す。K2は同種の制約条件の数、kは制約条件のIDである。
【0101】
【0102】
式(7)及び式(7’)の一方を用いる。作業員に開始日d∈Dkから割り当てたTk+1個の作業で、それらの属性αkjの合計がある値bkを超えることを禁止する制約条件である。αkjは作業jにおける制約条件kで対象とする属性の値である。K3は同種の制約条件の数、kは制約条件のIDである。
【0103】
[例4]
[種別C制約(下限値を制限する場合)]
【数8】
【0104】
式(8)及び式(8’)の一方を用いる。作業員に開始日d∈Dkから割り当てたTk+1個の仕事で、それらの属性αkjの合計がある値bkを下回ることを禁止する。αkjは仕事jにおける制約条件kで対象とする属性の値である。K4は同種の制約条件の数であり、kは制約条件のIDである。
【0105】
【0106】
どの作業員にも、Tk+1個の作業をフラグαkj(t)で定義される特定の属性の順序で割り当ててはならない。フラグ(α1j(0), α1j(1),…, α1j(T1),…, αKj(0), αKj(1),…, αKj(TK))は、作業jが制約条件kの禁止する属性の並びのt番目の属性に該当するか否かを示す。αkj(t)=1の場合は該当、αKj(t)=0なら非該当である。K5は同種の制約条件の数、kは制約条件のIDであり、Tkは制約条件kが禁止する並びの数を示す。
【0107】
図22は本実施形態に係る計画システムの処理の一例のフローチャートである。計画生成部17が、作業データ記憶部11から各日に割り当てるべき作業のリスト(作業データ)を読み出し、予約データ記憶部12から年休等の休みや既に割り当ての決まっている作業の予約情報を読み出す(ステップS1)。また、初期計画記憶部13から初期計画を読み出し、初期制約条件記憶部14から、事前に設定された制約条件(初期制約条件)を読み出す。ステップS1で読み出されるデータは総称して初期データと呼ばれる。
【0108】
続いて、計画生成部17は、制約条件記憶部15から学習済の制約条件(第1制約条件)を含む第1制約条件リストを読み出す(ステップS2)。
【0109】
次に、計画生成部17は、初期制約条件と第1制約条件リスト中の制約条件と、ステップS1で読み出したデータとに基づき、候補計画を生成する(ステップS3)。計画生成部17は、候補計画データと、候補計画データに制約違反があるか否かのチェック要求を計画管理装置2に送る。
【0110】
計画管理装置2は、当該チェック要求に基づき、候補計画に対して制約違反チェックを行う(ステップS4)。一例として、前述の方法などで、ユーザが入出力部33にて表示された候補計画を確認し、制約を満たしていない違反箇所をチェックし、違反箇所が違反した制約の種類を入力する。この場合、計画評価部31は、ユーザから入力された新たな制約を含む制約違反情報を計画生成装置1にフィードバックする。さらに、ユーザが前述の交換操作により作業を部分的に修正した場合は、修正操作後に出現した制約違反情報をも計画生成装置1にフィードバックする。
【0111】
違反情報変換部19は、計画管理装置2からフィードバックされた候補計画に対する制約違反情報を、計画生成装置1が解釈できる形式の第2制約条件に変換し、第2制約条件を含む第2制約条件リストを生成する(ステップS5)。
【0112】
ユーザが前述の交換操作により作業を部分的に修正したか否かを判定する(ステップS6)。ユーザが部分的に修正した場合は(ステップS6のYES)、修正操作後に出現した制約違反情報を、計画生成装置1が解釈できる形式の第3制約条件に変換し、第3制約条件を含む第3制約条件リストを生成する(ステップS7)。
【0113】
次に、制約条件比較部21が、第2制約条件リスト中の第2制約条件を、第1制約条件リスト中の第1制約条件と順次比較する(ステップS8)。第2制約条件リスト中の第2制約条件が、第1制約条件リストに含まれる第1制約条件と同じか否か、つまり、既に制約違反チェックで検出されたことがある制約条件か、あるいは新規の制約条件か否かを判定する(ステップS9)。
【0114】
第2制約条件リスト中の第2制約条件が第1制約条件リストに含まれる第1制約条件と同じでない場合、すなわち新規制約条件の場合は、新規制約条件に初期重みを設定する(ステップS10)。この場合、初期重みを設定した新規成約条件を第1制約条件リストに追加する。初期重みの設定の際に、第3制約条件リストが存在する場合は、第2制約条件リストと第3制約条件リストの比較演算により求めた初期重みで追加する。
【0115】
第2制約条件リスト中の制約条件が、第1制約条件リストに含まれる制約条件と同じである場合、第1制約条件リストに含まれる当該制約条件の重みを増加させる。これにより、次回の計画生成部17の候補計画の生成時に、当該制約条件をより強く反映させることができる。また、第3制約条件リストが存在する場合は、第2制約条件リストと第3制約条件リストの比較演算により求めた重みに修正する(ステップS11)。また、第2制約条件リスト中の制約条件が種別Cであり、第1制約条件リストに含まれる制約条件と同じ期間の同じ属性値の和に関する制約であり、境界値のみが両者で異なる場合は、境界値を更新し、さらに重みを更新する。具体的には、総和の上限値(境界値)を超える違反が発生した場合は、当該制約条件の上限値を現状より小さくする(制約を厳しく)。逆に、総和の下限値(境界値)を下回る違反が発生した場合は、当該制約条件の下限値を現状より大きく修正する(制約を厳しくする)。
【0116】
第2制約条件リスト中の第2制約条件の全てについてステップS8~ステップS11の処理を行ったか否かを判定する(ステップS12)。まだ行っていない第2制約条件があれば、ステップS8~S11の処理を繰り返す。全ての第2制約条件についての処理を行った場合は、終了条件を満たしたかを判断する(ステップS13)。終了条件を満たさない場合は、ステップS3に戻る。戻ったステップS3では、更新済みの第1制約条件リストを用いて新たな候補計画を生成し、制約違反チェックする(ステップS3~ステップS12)。終了条件が満たされるまで、ステップS3~ステップS12を反復する。
【0117】
終了条件が満たされたら、最後に生成された候補計画を最終的な計画として計画管理装置2に出力する(ステップS14)。あるいは、計画記憶部16に記憶されている候補計画のうち最も目的関数の値が小さい候補計画、又は目的関数の値が閾値より小さい候補計画を、最終的な計画として出力してもよい。
【0118】
計画管理装置2の入出力部33は、最終的な計画を表示装置に表示する。最終的な計画を計画管理装置2内の記憶装置又は外部の記憶装置に格納してもよい。
【0119】
ここで、終了条件の判定方法の例を示す。計画評価部31がプログラム動作により制約違反チェックをする場合は、ステップS3~ステップS12を所定の回数繰り返したら、終了条件が満たされたと判断してもよい。また、ステップS3~ステップS12を予め定めた制限時間に達するまで反復し、制限時間に達したら、終了条件が満たされたと判断してもよい。また、ステップS3~ステップS12を制約違反がなくなるまで、もしくは、目的関数(ペナルティ総和)の値が閾値以下になるまでループを反復し続けてもよい。その他の方法で終了条件の成否を判定してもよい。ユーザが入出力部33(GUI)を用いて制約違反チェックする場合は、ユーザ自身がステップS3~ステップS12の繰り返しを終了するタイミングを判断してもよい。ユーザが繰り返しを終了する指示データを入力し、指示データに基づき、繰り返しを終了してもよい。
【0120】
以上、本実施形態によれば、計画生成装置1により生成した候補計画が違反している制約を、計画管理装置もしくはユーザが、制約違反情報として検出し、フィードバックする。計画生成装置が、制約違反情報に基づく制約条件を第1制約条件リストに蓄積する。具体的には、制約条件と同じ制約条件が第1制約条件リストに存在しない場合は、当該制約条件に重みを設定して第1制約条件リストに追加する。制約条件と同じ制約条件が第1制約条件リストに存在する場合は、第1制約条件リストに存在する当該同じ制約条件の重みを更新する。このように、候補計画の生成、制約条件の蓄積、及び制約条件の重みの変更を反復することで、現場における制約の変更及び追加等にも容易に対応可能な汎用的な計画システムを実現できる。
【0121】
例えば、システムの初期導入時又は就業規則変更時は、計画管理装置2の評価アルゴリズム又はルールを書き換えることで、計画生成装置で扱うことが可能な形式で新たな又は変更された制約条件を反映させることが可能となり、メンテナンス性が向上する。また、各々の現場のユーザのフィードバックにより、現場毎の細かい制約の違いに段階的に適応することが可能となる。
【0122】
(ハードウェア構成)
図23は
図1の計画生成装置1又は計画管理装置2のハードウェア構成を示す図である。
図1の計画生成装置1又は計画管理装置2は、コンピュータ装置600により構成される。コンピュータ装置600は、CPU601と、入力インタフェース602と、表示装置603と、通信装置604と、主記憶装置605と、外部記憶装置606とを備え、これらはバス607により相互に接続されている。
【0123】
CPU(中央演算装置)601は、主記憶装置605上で、コンピュータプログラムである情報処理プログラムを実行する。情報処理プログラムは、本装置の上述の各機能構成を実現するプログラムのことである。情報処理プログラムは、1つのプログラムではなく、複数のプログラムやスクリプトの組み合わせにより実現されていてもよい。CPU601が、情報処理プログラムを実行することにより、各機能構成は実現される。
【0124】
入力インタフェース602は、キーボード、マウス、およびタッチパネルなどの入力装置からの操作信号を、本装置に入力するための回路である。入力インタフェース602は入力部又は入出力部に対応する。
【0125】
表示装置603は、本装置から出力されるデータを表示する。表示装置603は、例えば、LCD(液晶ディスプレイ)、有機エレクトロルミネッセンスディスプレイ、CRT(ブラウン管)、またはPDP(プラズマディスプレイ)であるが、これに限られない。コンピュータ装置600から出力されたデータは、この表示装置603に表示することができる。表示装置603は入出力部に対応する。
【0126】
通信装置604は、本装置が外部装置と無線または有線で通信するための回路である。データは、通信装置604を介して外部装置から入力することができる。外部装置から入力したデータを、主記憶装置605や外部記憶装置606に格納することができる。
【0127】
主記憶装置605は、情報処理プログラム、情報処理プログラムの実行に必要なデータ、および情報処理プログラムの実行により生成されたデータなどを記憶する。情報処理プログラムは、主記憶装置605上で展開され、実行される。主記憶装置605は、例えば、RAM、DRAM、SRAMであるが、これに限られない。
図1の各記憶部又はデータベースは、主記憶装置605上に構築されてもよい。
【0128】
外部記憶装置606は、情報処理プログラム、情報処理プログラムの実行に必要なデータ、および情報処理プログラムの実行により生成されたデータなどを記憶する。これらの情報処理プログラムやデータは、情報処理プログラムの実行の際に、主記憶装置605に読み出される。外部記憶装置606は、例えば、ハードディスク、光ディスク、フラッシュメモリ、及び磁気テープであるが、これに限られない。
図1の各記憶部又はデータベースは、外部記憶装置606上に構築されてもよい。
【0129】
なお、情報処理プログラムは、コンピュータ装置600に予めインストールされていてもよいし、CD-ROMなどの記憶媒体に記憶されていてもよい。また、情報処理プログラムは、インターネット上にアップロードされていてもよい。
【0130】
また、本装置は、単一のコンピュータ装置600により構成されてもよいし、相互に接続された複数のコンピュータ装置600からなるシステムとして構成されてもよい。
【0131】
なお、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素を適宜組み合わせることによって種々の発明を形成できる。また例えば、各実施形態に示される全構成要素からいくつかの構成要素を削除した構成も考えられる。さらに、異なる実施形態に記載した構成要素を適宜組み合わせてもよい。
【符号の説明】
【0132】
1 計画生成装置、2 計画管理装置、10 入力部、11 作業データ記憶部、12 予約データ記憶部、13 初期計画記憶部、14 初期制約条件記憶部、15 制約条件記憶部、16 計画記憶部、17 計画生成部、18 違反情報一次記憶部、19 違反情報変換部、20 第2制約条件一次記憶部、21 制約条件比較部、22 制約条件追加部、23 変更部、25 制約条件取得部、26 更新部、27 第3制約条件一次記憶部、31 計画評価部、32 計画更新部、33 入出力部、600 コンピュータ装置、602 入力インタフェース、603 表示装置、604 通信装置、605 主記憶装置、606 外部記憶装置、607 バス