(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024035659
(43)【公開日】2024-03-14
(54)【発明の名称】稼働資源割当プログラム、稼働資源割当方法、および情報処理装置
(51)【国際特許分類】
G06Q 10/06 20230101AFI20240307BHJP
G06Q 10/04 20230101ALI20240307BHJP
【FI】
G06Q10/06
G06Q10/04
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022140256
(22)【出願日】2022-09-02
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】前田 潤
(72)【発明者】
【氏名】大塚 浩
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049AA04
5L049AA10
(57)【要約】
【課題】資源割当の制約条件の信頼性を向上させる。
【解決手段】情報処理装置10は、第1の修正指示3に応じて第1の期間の第1の日程表4を修正し、修正前の第1の日程表4には含まれ、かつ修正後の第1の日程表4には含まれない割当に基づいて、割当に関する制約条件5,6を生成する。次に情報処理装置10は、第2の修正指示7に応じて、第1の期間より後の第2の期間の第2の日程表8を修正し、制約条件5,6を適用することで第2の修正指示7に応じた修正が回避できるか否かに基づいて、制約条件5,6を適用するか否かを決定する。そして情報処理装置10は、適用すると決定した制約条件5を満たす範囲で、第2の期間より後の第3の期間の第3の日程表9を生成する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第1の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てた第1の日程表に示される割当を変更する第1の修正指示に応じて、前記第1の日程表を修正し、
修正前の前記第1の日程表には含まれ、かつ修正後の前記第1の日程表には含まれない割当に基づいて、割当に関する制約条件を生成し、
前記第1の期間より後の第2の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てた第2の日程表に示される割当を変更する第2の修正指示に応じて、前記第2の日程表を修正し、
前記制約条件を適用することで前記第2の修正指示に応じた修正が回避できるか否かに基づいて、前記制約条件を適用するか否かを決定し、
適用すると決定した前記制約条件を満たす範囲で、前記第2の期間より後の第3の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てることで、第3の日程表を生成する、
処理をコンピュータに実行させる稼働資源割当プログラム。
【請求項2】
前記制約条件を生成する処理では、第1の修正指示が、一の割当の第1の稼働資源から第2の稼働資源への変更指示の場合、前記第1の稼働資源を前記一の割当と同種の稼働時間帯に割り当てることを禁止する前記制約条件を生成する、
請求項1記載の稼働資源割当プログラム。
【請求項3】
前記制約条件を生成する処理では、第1の修正指示が、一の割当の第1の稼働資源から第2の稼働資源への変更指示であり、前記一の割当に示される第1の稼働時間帯に前記第1の稼働資源と前記第2の稼働資源とは別の第3の稼働資源が割り当てられている場合、前記第1の稼働資源と前記第3の稼働資源との同一稼働時間帯への割当を禁止する前記制約条件を生成する、
請求項1記載の稼働資源割当プログラム。
【請求項4】
前記制約条件を生成する処理では、稼働時間帯の種別を示す第1の変数と稼働資源を示す第2の変数とによって前記制約条件を定式化した制約条件パターンの前記第1の変数と前記第2の変数とに対して、修正前の前記第1の日程表には含まれ、かつ修正後の前記第1の日程表には含まれない割当に応じた値を設定することで、前記制約条件を生成する、
請求項1記載の稼働資源割当プログラム。
【請求項5】
前記制約条件を生成する処理では、前記制約条件パターンに基づいて生成可能な第1の制約条件それぞれについて、前記第1の制約条件を満たさない抵触割当が前記第2の日程表にあるか否かを判定し、前記抵触割当がない前記第1の制約条件を前記制約条件とする、
請求項4記載の稼働資源割当プログラム。
【請求項6】
前記制約条件を適用するか否かを決定する処理では、前記第2の修正指示に応じて、前記制約条件を満たさない割当から前記制約条件を満たす割当への修正が行われており、かつ修正後の前記第2の日程表に前記制約条件を満たさない割当が含まれない場合に、前記制約条件を適用すると決定する、
請求項1記載の稼働資源割当プログラム。
【請求項7】
前記制約条件を適用するか否かを決定する処理では、前記第2の期間を複数の単位期間に分割した場合に、一定の割合以上の単位期間において、前記制約条件を満たさない割当が前記制約条件を満たす割当への修正が行われている場合に、前記制約条件を適用すると決定する、
請求項1記載の稼働資源割当プログラム。
【請求項8】
第1の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てた第1の日程表に示される割当を変更する第1の修正指示に応じて、前記第1の日程表を修正し、
修正前の前記第1の日程表には含まれ、かつ修正後の前記第1の日程表には含まれない割当に基づいて、割当に関する制約条件を生成し、
前記第1の期間より後の第2の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てた第2の日程表に示される割当を変更する第2の修正指示に応じて、前記第2の日程表を修正し、
前記制約条件を適用することで前記第2の修正指示に応じた修正が回避できるか否かに基づいて、前記制約条件を適用するか否かを決定し、
適用すると決定した前記制約条件を満たす範囲で、前記第2の期間より後の第3の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てることで、第3の日程表を生成する、
処理をコンピュータが実行する稼働資源割当方法。
【請求項9】
第1の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てた第1の日程表に示される割当を変更する第1の修正指示に応じて、前記第1の日程表を修正し、修正前の前記第1の日程表には含まれ、かつ修正後の前記第1の日程表には含まれない割当に基づいて、割当に関する制約条件を生成し、前記第1の期間より後の第2の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てた第2の日程表に示される割当を変更する第2の修正指示に応じて、前記第2の日程表を修正し、前記制約条件を適用することで前記第2の修正指示に応じた修正が回避できるか否かに基づいて、前記制約条件を適用するか否かを決定し、適用すると決定した前記制約条件を満たす範囲で、前記第2の期間より後の第3の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てることで、第3の日程表を生成する処理部、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、稼働資源割当プログラム、稼働資源割当方法、および情報処理装置に関する。
【背景技術】
【0002】
大勢の人員または機械などの稼働資源を運用する場合、人が働く日程(稼働時間帯)または機械を動作させる日程のスケジュール生成が行われる。スケジュール生成は、割当問題として解くことができる。割当問題は、複数の人員に複数の仕事を割り当てる場合に、最も効率のよい割り当てを探索する問題である。
【0003】
稼働資源に稼働時間帯を割り当てた日程表の生成のような割当問題では、多くの制約条件が存在し、それらをできるだけ満たす解を得ることが求められる。例えば人員のシフト表生成では、個人の希望、業務上のルール、各人の能力、法令などを勘案して、シフト表が生成される。このような割当問題の解は、数理最適化の手法を用いてコンピュータによって計算することができる。
【0004】
スケジューリングなどの割当問題に関連する技術としては、例えば修正案を評価する制約条件修正支援装置が提案されている。また最適化された生産シーケンスおよび予定を作成するためのコンピュータプログラム製品も提案されている。さらに、暗黙知の制約条件を反映させた、精度良好で効率的な計画作成を可能とする計画作成支援装置も提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平6-223084号公報
【特許文献2】米国特許出願公開第2006/0101052号明細書
【特許文献3】特開2016-189079号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
割当問題においてそのまま運用可能な割当結果を確実に生成するには、満たすべきすべての制約条件が与えられていることが前提となる。ところが、実際の現場における制約条件はさまざまであり、制約条件のすべてについて事前に入力されているとは限らない。不足している制約条件が多いほど、自動生成された割当を人手によって修正する手間が大きくなる。そこで制約条件を自動生成する技術が求められている。しかし、従来技術では、過去の計画データが十分に蓄えられていない段階では、偶然に満足しただけの制約条件が導出される可能性がある。そのため、信頼性の低い制約条件が生成されてしまう。
【0007】
1つの側面では、本件は、稼働資源割当の制約条件の信頼性を向上させることを目的とする。
【課題を解決するための手段】
【0008】
1つの案では、以下の処理をコンピュータに実行させる稼働資源割当プログラムが提供される。
コンピュータは、第1の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てた第1の日程表に示される割当を変更する第1の修正指示に応じて、第1の日程表を修正する。コンピュータは、修正前の第1の日程表には含まれ、かつ修正後の第1の日程表には含まれない割当に基づいて、割当に関する制約条件を生成する。コンピュータは、第1の期間より後の第2の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てた第2の日程表に示される割当を変更する第2の修正指示に応じて、第2の日程表を修正する。コンピュータは、制約条件を適用することで第2の修正指示に応じた修正が回避できるか否かに基づいて、制約条件を適用するか否かを決定する。そしてコンピュータは、適用すると決定した制約条件を満たす範囲で、第2の期間より後の第3の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てることで、第3の日程表を生成する。
【発明の効果】
【0009】
1態様によれば、稼働資源割当の制約条件の信頼性を向上させることができる。
【図面の簡単な説明】
【0010】
【
図1】第1の実施の形態に係る稼働資源割当方法の一例を示す図である。
【
図2】第2の実施の形態のシステム構成の一例を示す図である。
【
図3】サーバのハードウェアの一例を示す図である。
【
図4】自動生成した制約条件を用いて仕事のシフト表を生成するためのサーバの機能を示すブロック図である。
【
図5】自動生成した制約条件を用いた仕事のシフト表生成処理の一例を示す図である。
【
図7】自動生成されたシフト表の修正例を示す図である。
【
図8】定期的に実行する割当生成および制約条件生成処理の手順を示すフローチャートである。
【
図9】制約条件の候補生成処理の手順の一例を示すフローチャートの前半である。
【
図10】制約条件リストに追加される制約条件の第1の例を示す図である。
【
図11】制約条件リストに追加される制約条件の第2の例を示す図である。
【
図12】制約条件リストに追加される制約条件の第3の例を示す図である。
【
図13】制約条件リストに追加される制約条件の第4の例を示す図である。
【
図14】制約条件の候補生成処理の手順の一例を示すフローチャートの後半である。
【
図15】支障を生じさせない制約条件の抽出処理の一例を示す図である。
【
図16】制約条件の候補評価処理の手順の一例を示すフローチャートである。
【
図17】修正回避判定処理の手順の一例を示すフローチャートである。
【
図18】抵触判定処理の手順の一例を示すフローチャートである。
【
図19】制約条件の候補の評価結果の第1の例を示す図である。
【
図20】制約条件の候補の評価結果の第2の例を示す図である。
【
図21】制約条件の候補の評価結果の第3の例を示す図である。
【
図22】制約条件の候補の評価結果の第4の例を示す図である。
【
図23】制約条件の候補の評価結果の第5の例を示す図である。
【
図24】認定済みの制約条件抵触判定処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
第1の実施の形態は、人または機械などの稼働資源を稼働時間帯に割り当てる際の制約条件の信頼性を向上させることができる稼働資源割当方法である。
【0012】
図1は、第1の実施の形態に係る稼働資源割当方法の一例を示す図である。
図1には、稼働資源割当方法を情報処理装置10によって実施した場合の例を示している。情報処理装置10は、例えば稼働資源割当プログラムを実行することにより、稼働資源割当方法を実施することができる。例えば情報処理装置10は、割当担当者2が使用する端末1からの稼働資源割当指示に応じて、稼働時間帯の稼働資源への割当を自動で行う。このとき割当担当者2は、割当結果を参照して、不都合があれば修正指示を端末1に入力する。端末1は、割当担当者2からの修正指示を情報処理装置10に送信する。
【0013】
情報処理装置10は、記憶部11と処理部12とを有する。記憶部11は、例えば情報処理装置10が有するメモリまたはストレージ装置である。処理部12は、例えば情報処理装置10が有するプロセッサまたは演算回路である。
【0014】
記憶部11は、生成された日程表を記憶する。例えば記憶部11は、第1の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てた第1の日程表4を記憶する。また記憶部11は、第1の期間より後の第2の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てた第2の日程表8を記憶する。さらに記憶部11は、第2の期間より後の第3の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てた第3の日程表9も記憶する。
【0015】
処理部12は、第1の日程表4に示される割当を変更する第1の修正指示3に応じて、第1の日程表4を修正する。そして処理部12は、修正前の第1の日程表4には含まれ、かつ修正後の第1の日程表4には含まれない割当に基づいて、割当に関する制約条件5,6を生成する。
【0016】
例えば処理部12は、第1の修正指示3が、一の割当の第1の稼働資源から第2の稼働資源への変更指示の場合、第1の稼働資源を一の割当と同種の稼働時間帯に割り当てることを禁止する制約条件を生成する。稼働時間帯が同種であるとは、例えば曜日が同一、または曜日と1日内の時間帯(昼、夜などの期間)が同一であることである。
【0017】
なお
図1に示す第1の修正指示3は、木曜夜の稼働時間帯に割り当てられた稼働資源「A」と金曜夜の稼働時間帯に割り当てられた稼働資源「B」との稼働時間帯の割当の交換指示である。このような交換指示は、2つの割当変更指示が含まれる。すなわち第1の修正指示3に応じて、第1の日程表4では、木曜夜の稼働時間帯の割当が稼働資源「A」から稼働資源「B」に変更される。この割当の変更に基づいて、「稼働資源Aを木曜夜の稼働時間帯に割り当てない」という制約条件5が生成される。また第1の修正指示3に応じて、第1の日程表4では、金曜夜の稼働時間帯の割当が稼働資源「B」から稼働資源「A」に変更される。この割当の変更に基づいて、「稼働資源Bを金曜夜の稼働時間帯に割り当てない」という制約条件6が生成される。
【0018】
制約条件5,6を生成後、処理部12は、第2の日程表8に示される割当を変更する第2の修正指示7に応じて、第2の日程表8を修正する。そして処理部12は、制約条件5,6を適用することで第2の修正指示7に応じた修正が回避できるか否かに基づいて、制約条件5,6を適用するか否かを決定する。
【0019】
例えば第2の修正指示7は、木曜夜の稼働時間帯に割り当てられた稼働資源「A」と土曜昼の稼働時間帯に割り当てられた稼働資源「C」との稼働時間帯の割当を交換することを示している。このとき、稼働資源を稼働時間帯に割り当てる際に制約条件5が適用されていた場合、木曜夜の稼働時間帯には稼働資源「A」は割り当てられない。そうすると、制約条件5を適用することで修正指示7に示される修正の発生は回避できる。そこで、処理部12は、制約条件5については適用すると決定する。
【0020】
他方、制約条件6は、適用したとしても第2の修正指示7に応じた修正の発生を回避することはできない。そのため制約条件6は、適用しないと決定される。
その後、処理部12は、適用すると決定した制約条件5を満たす範囲で、第3の期間内の複数の稼働時間帯それぞれに1以上の稼働資源を割り当てることで、第3の日程表9を生成する。
【0021】
このようにして、第1の期間の第1の日程表4に対する修正に基づいて生成した制約条件5,6の信頼性が、第1の期間より後の第2の期間の第2の日程表8に対する修正に基づいて検証される。そして、第2の日程表8に対する修正を回避可能な制約条件5のみが適用される。このように生成した制約条件5,6のうち、その後に発生した修正を回避可能な制約条件5のみを以後の稼働資源割当の際に適用することができる。その結果、稼働資源割当に適用する制約条件5の信頼性が向上する。
【0022】
なお処理部12は、適用するか否かの決定の際に、修正後の第2の日程表8において、制約条件5に抵触するような割当が行われていないことを確認してもよい。例えば複数の週において稼働資源「A」が木曜夜に割り当てられていた場合において、該当する複数の割当のうち、一部の割当だけが修正指示7で修正されていたものとする。その場合、修正後の第2の日程表8において、制約条件5に抵触するような割当(稼働資源「A」への木曜夜の稼働時間帯の割当)が残存する。処理部12は、制約条件5に抵触するような割当がある場合には、制約条件5を適用しないと判断する。このように抵触の有無を判断することで、適用する制約条件の信頼性がさらに向上する。
【0023】
なお、第1の修正指示3が、一の割当の第1の稼働資源から第2の稼働資源への変更であり、該一の割当に示される第1の稼働時間帯に、第1の稼働資源と第2の稼働資源とは別の第3の稼働資源が割り当てられている場合がある。この場合、処理部12は、第1の稼働資源と第3の稼働資源に対する同一稼働時間帯への割当を禁止する制約条件を生成してもよい。このような異なる割当間の関係に関する制約条件に関しても、第2の日程表8に対して行われた修正が回避できる場合に、第3の日程表9を生成する際の制約条件として適用される。その結果、異なる割当間の関係に関する制約条件の信頼性を向上させることができる。
【0024】
さらに処理部12は、制約条件パターンを用いることで、1つの修正指示から、様々なパターンの制約条件を生成することができる。例えば処理部12は、稼働時間帯の種別を示す第1の変数と稼働資源を示す第2の変数とによって制約条件を定式化した制約条件パターンを用意する。そして処理部12は、制約条件パターンの第1の変数と第2の変数とに対して、修正前の第1の日程表4には含まれ、かつ修正後の第1の日程表4には含まれない割当に応じた値を設定する。例えば処理部12は、第1の修正指示3が、ある割当の第1の稼働資源から第2の稼働資源への変更の場合、制約条件パターンに対して、その割当の稼働時間帯に対応する値を第1の変数に設定し、その割当の第1の稼働資源に対応する値を第2の変数に設定する。制約条件パターンの変数に値が設定されることで、制約条件が生成される。これにより、様々なパターンの制約条件の自動生成が容易となる。
【0025】
制約条件パターンに基づいて生成された制約条件に抵触する割当が、修正後の第1の日程表4に存在する場合もある。この場合、処理部12は、制約条件パターンに基づいて生成可能な第1の制約条件それぞれについて、第1の制約条件を満たさない抵触割当が第2の日程表にあるか否かを判定する。そして処理部12は、抵触割当がない第1の制約条件を、適用するか否かの判断対象の制約条件とする。これにより、不適切な制約条件の生成が抑止される。
【0026】
処理部12は、制約条件の適用の有無の決定を、例えば次の手順で行うことができる。処理部12は、第2の修正指示7に応じて、制約条件5,6を満たさない割当から制約条件5,6を満たす割当への修正が行われていることを確認する。さらに処理部12は、修正後の第2の日程表8に制約条件5,6を満たさない割当が含まれないことを確認する。これらの両方が確認できた場合、処理部12は、制約条件を適用すると決定する。これにより、修正を回避可能であり、かつ修正後の第2の日程表8に抵触しない制約条件を、適切に特定することができる。
【0027】
また処理部12は、第2の期間を複数の単位期間に分割した場合に、一定の割合以上の単位期間において、制約条件5,6を満たさない割当から制約条件5,6を満たす割当への修正が行われている場合に、制約条件5,6を適用すると決定してもよい。これにより、回避可能な修正が繰り返し発生することが見込まれる制約条件5,6について、適用するものと決定することができる。その結果、有効性の高い制約条件に限定した適用が可能となる。
【0028】
このような適用する制約条件の決定処理は、第1の期間の割当修正事例に基づいて制約条件の候補を選定し、第2の期間の割当修正事例において、その候補が制約条件として有効に機能することが示された場合、適用する制約条件として決定するものである。適用すると決定された制約条件は、少ない事例から推定した制約条件が、実際の運用で暗黙的に存在するとの裏付けが取れた制約条件であると考えることができる。このような実在の裏付けが取れた制約条件のみを自動での稼働資源割当に利用するようにすることで、制約条件の生成に人手を介さずに、信頼性を担保することができる。また以後の割当処理の確度を上げることができる。
【0029】
〔第2の実施の形態〕
第2の実施の形態は、シフト表の生成のように、時間帯で区切られた業務へのスタッフの割当を行う場合において、信頼性の高い制約条件を自動で生成可能なコンピュータシステムである。第2の実施の形態では、二交代制の職場での勤務のシフト表へのスタッフの割当を行うものとする。
【0030】
図2は、第2の実施の形態のシステム構成の一例を示す図である。例えばサーバ100と端末30がネットワーク20を介して接続されている。サーバ100は、例えばシフト表などの人員の割当を自動で生成するコンピュータである。端末30は、生成した割当の確認および修正を行う担当者が使用するコンピュータである。
【0031】
例えば担当者が端末30を介してサーバ100にシフト表の生成を指示する。サーバ100は、登録されている制約条件を満たすシフト表を生成する。担当者は、生成されたシフト表に不備があれば、修正指示をサーバ100に入力する。サーバ100は、修正指示に応じてシフト表を修正する。またサーバ100は、シフト表の修正内容に基づいて、制約条件を生成する。
【0032】
図3は、サーバのハードウェアの一例を示す図である。サーバ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
【0033】
メモリ102は、サーバ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
【0034】
バス109に接続されている周辺機器としては、ストレージ装置103、GPU(Graphics Processing Unit)104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
【0035】
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、サーバ100の補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
【0036】
GPU104は画像処理を行う演算装置であり、グラフィックコントローラとも呼ばれる。GPU104には、モニタ21が接続されている。GPU104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
【0037】
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0038】
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取り、または光ディスク24へのデータの書き込みを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
【0039】
機器接続インタフェース107は、サーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
【0040】
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。ネットワークインタフェース108は、例えばスイッチやルータなどの有線通信装置にケーブルで接続される有線通信インタフェースである。またネットワークインタフェース108は、基地局やアクセスポイントなどの無線通信装置に電波によって通信接続される無線通信インタフェースであってもよい。
【0041】
サーバ100は、以上のようなハードウェアによって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した情報処理装置10も、
図3に示したサーバ100と同様のハードウェアにより実現することができる。
【0042】
サーバ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。サーバ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、サーバ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またサーバ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0043】
ここで、シフト表のような仕事の割当の自動化の困難性について説明する。シフト表の生成のような割当問題では、多くの制約条件が存在し、それをできるだけ満たす解を得ることが求められる。解は既存の数理最適化の手法を用いて計算されるが、現場ではその入力となる制約条件のすべては明示されていない場合が多い。
【0044】
例えば現場では、シフト表生成の担当者が、明示されない制約条件を暗黙的に把握している場合がある。この場合、シフト表生成の担当者は、暗黙的に把握している制約条件を満たすシフト表を生成している。そこで、過去に生成されたシフト表の事例から、そのシフト表に潜む制約条件をプログラムで推測して抽出することが考えられる。
【0045】
例えば生成済み計画内容と利用情報の対応付けをグルーピングし、グループ間の関係性に基づいて新規制約条件を生成する方法がある。しかし、この方法では、生成済み計画の数が少ない場合は、抽出された制約条件は偶然に満足されたものである可能性が高くなる。その場合、抽出された制約条件が正しいか否かを、関係者に確認することとなる。例えば、抽出された制約条件をわざと満たさない割当結果を生成し、制約条件を満たすような修正の要望が関係者(割り当てられた人など)から出ることを確認することが考えられる。
【0046】
しかし、スタッフのシフト表を生成する場合、スタッフの個人的な事情が変わるごとに制約条件にも変更が生じ、その都度、人手による確認作業を行うのは非常に手間が大きい。そこで、少ない割当事例のみの場合でも、人手による確認の手間をかけずに、信頼性の高い制約条件を生成することが求められる。
【0047】
第2の実施の形態では、機械的に制約条件の裏付けを取る処理を制約条件の生成処理に組み込むことで、人手による確認処理を不要とする。具体的には、サーバ100が、以下の方法で制約条件の裏付けを取る。
【0048】
(1)サーバ100は、一度人またはプログラムにより生成され、割当結果を示すシフト表が、公開後に何らかの事情で担当者によって修正された事実(修正記録)を検出する。
【0049】
(2)サーバ100は、修正記録に基づいて、あらかじめ用意された制約条件パターンから「その制約条件パターンに当て嵌めれば、シフト表の修正の発生を回避できる」ものを探索する。サーバ100は、該当する制約条件パターンに、修正記録に示される修正内容を当て嵌め、制約条件の候補を生成する。これにより、修正された箇所の修正前のような割当を抑止可能な制約条件の候補が生成され、サーバ100で保持される。
【0050】
(3)サーバ100は、公開されたその他一定個数のシフト表において、一定の基準以上の割合で、保持された制約条件の候補が支持される事象が生じ、かつシフト表の他の部分に支障を生じないならば、その制約条件の候補を適用する制約条件として認定する。制約条件の候補が支持される事象とは、その制約条件があれば回避できるシフト表の修正である。すなわちサーバ100は、制約条件の候補について、その後のシフト表で有効に機能する裏付けが取れた場合に、正式な制約条件(割当生成に使用する制約条件)として認める。
【0051】
図4は、自動生成した制約条件を用いて仕事のシフト表を生成するためのサーバの機能を示すブロック図である。サーバ100は、記憶部110、割当部120、割当修正部130、制約条件生成部140、および制約条件評価部150を有する。
【0052】
記憶部110は、制約条件パターン群111、割当結果DB(Data Base)112、制約条件候補群113、および制約条件群114を記憶する。制約条件パターン群111は、制約条件を生成するためのひな形となる制約条件パターンの集合である。割当結果DB112は、過去に行われた仕事の割当結果を示すシフト表が格納されたDBである。割当結果DB112には、割当の修正内容を示す修正記録も含まれる。制約条件候補群113は、割当の修正内容に基づいて推定した制約条件を示す制約条件の候補の集合である。制約条件群114は、シフト表の自動生成時に満たすべき制約条件の集合である。
【0053】
割当部120は、制約条件群114に含まれる制約条件を満たす範囲で、人員に対して仕事の割り当てを行い、シフト表を生成する。例えば割当部120は、定期的に、数理最適化問題の解探索手法を用い、複数のスタッフのうちのいずれかを、業務時間帯を分割した複数の時間帯それぞれに割り当てる。割当部120は、生成したシフト表を記憶部110に格納する。
【0054】
割当修正部130は、勤務シフト割当の担当者31が使用する端末30からの指示に従って、シフト表を修正する。割当修正部130は、シフト表を修正すると、修正後のシフト表と修正内容を示す修正記録を記憶部110に格納する。
【0055】
制約条件生成部140は、修正後のシフト表とそのシフト表の修正記録に基づいて、制約条件の候補を生成する。制約条件生成部140は、生成した制約条件の候補を記憶部110に格納する。
【0056】
制約条件評価部150は、制約条件の候補の有効性を評価する。制約条件評価部150は、有効であると認定した制約条件の候補を、以後のシフト表の生成時に適用する制約条件として記憶部110に格納する。
【0057】
なお、
図4に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
図5は、自動生成した制約条件を用いた仕事のシフト表生成処理の一例を示す図である。割当結果DB112には、例えば自動生成されたシフト表112a、人手によって修正後のシフト表112b、および修正内容を示す修正記録112cが格納されている。
【0058】
生成時のシフト表112aは、割当部120で生成されたデータである。シフト表112aそれぞれは、生成時に担当者31によって内容が確認される。担当者31は、シフト表112aそれぞれについて、不都合がある場合、端末30を用いて修正内容を入力する。修正内容に応じて割当修正部130が修正後のシフト表112bを更新する。割当修正部130は、修正後のシフト表112bを割当結果DB112に格納する。また割当修正部130は、修正内容を示す修正記録112cを割当結果DB112に格納する。このような処理が、例えばシフト表112aに新たな割当が追加されるごとに行われる。
【0059】
シフト表112aが修正されると、制約条件生成部140は、複数の制約条件パターン111a,111b,・・・を含む制約条件パターン群111に基づいて制約条件の候補を生成する。例えば制約条件生成部140は、制約条件パターン111a,111b,・・・それぞれを、修正記録112cに示されている修正内容に基づいて具体化して、制約条件を生成する。さらに制約条件生成部140は、生成した制約条件により、修正記録112cに示されている修正が回避できるか否かを判断する。また制約条件生成部140は、生成した制約条件を適用すると支障が出る割当が、修正後のシフト表112bに含まれているか否かを判断する。制約条件生成部140は、生成した制約条件により修正が回避でき、その制約条件を適用することに支障もない場合、生成した制約条件を、適用する制約条件の候補として、制約条件候補群113に含める。
【0060】
制約条件候補群113には、複数の制約条件113a,113b,・・・が含まれる。制約条件113a,113b,・・・は、割当生成時に適用する制約条件の候補である。制約条件評価部150は、制約条件候補群113に含まれる制約条件113a,113b,・・・それぞれについて、割当生成時に適用する制約条件とするための条件を満たすか否かを評価する。例えば制約条件評価部150は、候補の制約条件113a,113b,・・・それぞれについて、修正記録112cに示される直近の所定期間内の修正内容に基づいて、修正が回避できるか否かを判定する。また制約条件評価部150は、修正後のシフト表112bの直近の所定期間内の割当に基づいて、制約条件を適用することについての支障の有無を判断する。制約条件評価部150は、適用することについて支障がなく、かつ所定の単位期間(例えば1週間)において一定の割合以上で修正が回避できている制約条件について、有効な制約条件として認定する。制約条件評価部150は、認定した制約条件を制約条件群114に含める。
【0061】
制約条件群114には、有効であると認定された制約条件114a,114b,・・・が含まれる。
割当部120は、定期的に、今後の単位期間の仕事の割当を生成し、シフト表112aに追加する。その際、割当部120は、制約条件群114に示される制約条件114a,114b,・・・を満足する割当を生成する。これにより一定の有効性が確認できた制約条件114a,114b,・・・を満たす割当が生成される。
【0062】
図5に示す処理を行うために、予め制約条件パターン群111が用意される。例えば勤務シフト割当の担当者31は、端末30から、用意された制約条件パターン群111に対して制約条件パターンを登録する。制約条件パターンは想定する制約条件を一般的な形で示したものである。制約条件パターン群111に含まれる制約条件パターンは、制約条件の生成処理を開始する前に登録される。
【0063】
図6は、制約条件パターン群の一例を示す図である。制約条件パターン群111には、3つの制約条件パターンが設定されている。
制約条件パターンは、「a(X,Y,Z)=1」(肯定条件式)または「a(X,Y,Z)=0」(否定条件式)の式の組合せで表される。式の右辺は、左辺で表される割当を許容する人数を示している。右辺が「0」であれば1人も許容しないことを示し、右辺が「1」であれば1人だけ許容することを示す。これらの式の左辺のXはスタッフを示す変数であり、Yは曜日を示す変数であり、Zは時間帯を示す変数である。「a(X,Y,Z)=1」は、スタッフXを曜日Yの時間帯Zに割り当てられることを示す。「a(X,Y,Z)=0」は、スタッフXを曜日Yの時間帯Zに割り当てられないことを示す。
【0064】
1つ目の制約条件パターン「a(X,Y,昼)+a(X,Y,夜)=0」は、「特定のスタッフXは特定の曜日Yに割り当てられない」という制約条件を示している。2つ目の制約条件パターン「a(X,Y,夜)=0」は、「特定のスタッフXは特定の曜日Yの夜間に割り当てられない」という制約条件を示している。3つ目の制約条件パターン「a(X1,Y,Z)+a(X2,Y,Z)≦1」は、「特定のスタッフX1とX2を同じ曜日Yの同じ時間帯Zに割り当てることはできない」という制約条件を示している。
【0065】
また割当部120による自動割当で得られた割当結果が、割当結果DB112内のシフト表112aに登録される。例えば、自動で生成した制約条件が未生成の場合、割当部120は、所定のアルゴリズム(例えば、すべてのスタッフに均等に仕事を割り振る)によって、シフト表の各時間帯へのスタッフの割当を行う。
【0066】
勤務シフト割当の担当者31は、自動で割り当てられた割当結果を確認し、不備がある場合には、端末30を用いて割当の修正を指示する。これにより、シフト表112aが修正され、修正後のシフト表112bが生成される。
【0067】
図7は、自動生成されたシフト表の修正例を示す図である。例えばシフト表112aには、スタッフの3週分の勤務のシフトが設定されている。シフト表112aの各行には、何週目かを示す数値(1,2,3)と勤務の時間帯(昼、夜)の組がラベルとして設定されている。シフト表112aの各列には曜日が設定されている。各行と各列との交差する位置に、対応する行に示される週における、対応する列に示される曜日の対応する行に示される時間帯に割り当てるスタッフの識別子が設定されている。例えば1週目の日曜日の昼の時間帯には、スタッフs1とスタッフs2が割り当てられている。また1週目の月曜日の夜の時間帯には、スタッフs7とスタッフs8が割り当てられている。
【0068】
このようなシフト表112aに対して修正が行われたものとする。例えば勤務シフト割当の担当者31は、シフト表112aをスタッフなどの関係者に公開する。担当者31は、関係者から変更要望を受け取ると、端末30に、変更要望に従った修正指示を入力する。入力された修正指示は端末30からサーバ100に送信され、割当修正部130で受信される。割当修正部130は、修正指示に応じてシフト表112aに設定されている割当を修正する。
【0069】
図7の例では、1週目の木曜日の夜への割当がスタッフs2からスタッフs6に変更され、1週目の金曜日の夜への割当がスタッフs6からスタッフs2に変更されている。2週目の日曜日の昼への割当がスタッフs3からスタッフs6に変更され、2週目の金曜日の夜への割当がスタッフs6からスタッフs3に変更されている。3週目の日曜日の昼への割当がスタッフs3からスタッフs7に変更され、3週目の月曜日の昼への割当がスタッフs7からスタッフs3に変更されている。3週目の金曜日の昼への割当がスタッフs6からスタッフs1に変更され、3週目の土曜日の昼への割当がスタッフs1からスタッフs6に変更されている。
【0070】
修正内容を示すデータは修正記録112cに格納される。例えば
図7に示す修正内容が、修正記録112cに「1-木夜 s2 ⇔ 1-金夜 s6」、「2-日昼 s3 ⇔ 2-金夜 s6」、「3-日昼 s3 ⇔ 3-月昼 s7」、「3-金昼 s6 ⇔ 3-土昼 s1」と記載される。
【0071】
修正後のシフト表112bと修正記録112cとは、割当結果DB112に格納される。修正後のシフト表112bの内容はスタッフに通知され、スタッフはシフト表112bに従って勤務する。修正後のシフト表112bと修正記録112cとが格納されたことにより、制約条件の生成が可能となる。例えば制約条件の生成処理は、次回のシフト表112aへのスタッフの自動割当前に実行される。その場合、シフト表112aへのスタッフの自動割当が1週間ごとに行われていれば、制約条件の生成処理も1週間ごとに定期的に行われることとなる。
【0072】
図8は、定期的に実行する割当生成および制約条件生成処理の手順を示すフローチャートである。以下、
図8に示す処理をステップ番号に沿って説明する。
[ステップS101]制約条件生成部140は、割当の自動生成に適用する制約条件の候補を生成する。制約条件の候補を生成する処理の詳細は後述する(
図9参照)。
【0073】
[ステップS102]制約条件生成部140は、割当の自動生成に適用する制約条件の候補と判定された制約条件を、制約条件候補群113の一部として記憶部110に格納する。
【0074】
[ステップS103]制約条件評価部150は、制約条件候補群113に含まれる制約条件を評価する。制約条件を評価する処理の詳細は後述する(
図10参照)。
[ステップS104]制約条件評価部150は、シフト表の生成時に適用するものと認定した制約条件を、制約条件群114の一部として記憶部110に格納する。
【0075】
[ステップS105]割当部120は、以後の単位期間について、制約条件群114に含まれる制約条件114a,114b,・・・のすべてを満足する割当を生成し、シフト表112aに追加する。
【0076】
[ステップS106]割当修正部130は、担当者31による割当の修正指示を端末30から受信すると、修正指示に従って割当を修正する。これにより、修正後のシフト表112bが更新される。また修正内容を示す情報が修正記録112cに追加される。
【0077】
次に、制約条件の候補生成処理について詳細に説明する。
図9は、制約条件の候補生成処理の手順の一例を示すフローチャートの前半である。以下、
図9に示す処理をステップ番号に沿って説明する。
【0078】
[ステップS111]制約条件生成部140は、制約条件パターン群111内のすべての制約条件パターンそれぞれを処理対象の制約条件パターンpとする。そして制約条件生成部140は、処理対象の制約条件パターンpごとに、ステップS112~S116の処理を実行する。
【0079】
[ステップS112]制約条件生成部140は、修正記録112cに示される修正内容それぞれを、処理対象の修正内容xとする。そして制約条件生成部140は、処理対象の修正内容xごとに、ステップS113~S115の処理を実行する。
【0080】
[ステップS113]制約条件生成部140は、制約条件パターンpと修正内容xとに矛盾があるか否かを判断する。例えば制約条件生成部140は、制約条件パターンpにおいて所定の変数にすでに設定されている値(例えば時間帯:昼)と、修正内容xに示される修正前の割当の該当変数の値(例えば時間帯:夜)とが異なる場合、矛盾すると判定する。制約条件生成部140は、矛盾する場合、処理をステップS116に進める。また制約条件生成部140は、矛盾しない場合、処理をステップS114に進める。
【0081】
[ステップS114]制約条件生成部140は、制約条件パターンpの未確定の変数に、修正内容xの修正前の割当の値を代入する。これによって、制約条件パターンpが、具体化された制約条件となる。
【0082】
[ステップS115]制約条件生成部140は、ステップS114で得られた制約条件を制約条件リストに追加する。
[ステップS116]制約条件生成部140は、修正後の修正内容xごとの処理が完了した場合、処理をステップS117に進める。
【0083】
[ステップS117]制約条件生成部140は、制約条件パターンpごとの処理が完了した場合、処理をステップS121(
図14参照)に進める。
これにより、修正内容と制約条件パターンとの組合せごとに生成可能なすべての制約条件が具体化され、具体化された制約条件が制約条件リスト141に追加される。以下、
図10~
図13を参照して、制約条件リスト141に設定される制約条件について具体的に説明する。
【0084】
図10は、制約条件リストに追加される制約条件の第1の例を示す図である。例えば
図6に示すように、制約条件パターン群111には3つの制約条件パターン111a~111cが含まれているものとする。また
図7に示すように、割当結果DB112内の修正記録112cには、4つの修正内容112c-1~112c-4が含まれているものとする。この場合、制約条件生成部140は、修正記録112cの修正内容112c-1~112c-4を用いて、制約条件パターン111a~111cを具体化する。
【0085】
図10には、1つ目の修正内容112c-1「1-木夜 s2 ⇔ 1-金夜 s6」(1週目木曜夜のスタッフs2と1週目金曜夜のスタッフs6を交替)に基づいて生成され、制約条件リスト141に追加される制約条件C1~C6が示されている。
【0086】
制約条件パターン111a「a(X,Y,昼)+a(X,Y,夜)=0」(特定のスタッフXは特定の曜日Yに割り当てられない)は、修正内容112c-1を用いて以下の2通りの具体化が試みられる。
【0087】
修正内容112c-1において修正により取り消された割当「1-木夜 s2」に基づいて、制約条件パターン111aの変数を「X=s2」、「Y=木」と具体化できる。その結果、「a(s2,木,昼)+a(s2,木,夜)=0」(スタッフs2は木曜日に割り当てられない)という制約条件C1が得られる。生成された制約条件C1は、制約条件リスト141に登録される。
【0088】
また、修正内容112c-1において修正により取り消された割当「1-金夜 s6」に基づいて、制約条件パターン111aの変数を「X=s6」、「Y=金」と具体化できる。その結果、「a(s6,金,昼)+a(s6,金,夜)=0」(スタッフs6は金曜日に割り当てられない)という制約条件C2が得られる。生成された制約条件C2は、制約条件リスト141に登録される。
【0089】
制約条件パターン111b「a(X,Y,夜)=0」(特定のスタッフXは特定の曜日Yの夜間に割り当てられない)は、修正内容112c-1を用いて、以下の2通りの具体化が試みられる。
【0090】
修正内容112c-1において修正により取り消された割当「1-木夜 s2」に基づいて、制約条件パターン111bの変数を「X=s2」、「Y=木」と具体化できる。その結果、「a(s2,木,夜)=0」(スタッフs2は木曜日の夜間に割り当てられない)という制約条件C3が得られる。生成された制約条件C3は、制約条件リスト141に登録される。
【0091】
また修正内容112c-1において修正により取り消された割当「1-金夜 s6」に基づいて、制約条件パターン111bの変数を「X=s6」、「Y=金」と具体化できる。その結果、「a(s6,金,夜)=0」(スタッフs6は金曜日の夜間に割り当てられない)という制約条件C4が得られる。生成された制約条件C4は、制約条件リスト141に登録される。
【0092】
制約条件パターン111c「a(X1,Y,Z)+a(X2,Y,Z)≦1」(特定のスタッフX1とX2は同じ曜日の同じ時間帯に割り当てられない)は、修正内容112c-1を用いて、以下の2通りの具体化が試みられる。
【0093】
修正内容112c-1の修正で取り消された割当「1-木夜 s2」と、シフト表112bで該当週の該当曜日の該当時間帯に割り当てられたスタッフs1の情報とに基づいて、制約条件パターン111cの変数は「X1=s2」、「X2=s1」と具体化できる。その結果、「a(s2,Y,Z)+a(s1,Y,Z)≦1」(スタッフs2とスタッフs1は同じ曜日の同じ時間帯に割り当てられない)という制約条件C5が得られる。生成された制約条件C5は、制約条件リスト141に登録される。
【0094】
また修正内容112c-1で取り消された割当「1-金夜 s6」と、シフト表112bで該当週の該当曜日の該当時間帯に割り当てられたスタッフs5の情報とに基づいて、制約条件パターン111cの変数は「X1=s6」、「X2=s5」と具体化できる。その結果、「a(s6,Y,Z)+a(s5,Y,Z)≦1」(スタッフs6とスタッフs5は同じ曜日の同じ時間帯に割り当てられない)という制約条件C6が得られる。生成された制約条件C6は、制約条件リスト141に登録される。
【0095】
図11は、制約条件リストに追加される制約条件の第2の例を示す図である。
図11には、2つ目の修正内容112c-2「2-日昼 s3 ⇔ 2-金夜 s6」(2週目日曜昼のs3と2週目金曜夜のs6を交替)に基づいて生成され、制約条件リスト141に追加される制約条件C7~C9が示されている。
【0096】
制約条件パターン111a「a(X,Y,昼)+a(X,Y,夜)=0」(特定のスタッフXは特定の曜日Yに割り当てられない)は、修正内容112c-2を用いて以下の2通りの具体化が試みられる。
【0097】
修正内容112c-2において修正により取り消された割当「2-日昼 s3」に基づいて、制約条件パターン111aの変数を「X=s3」、「Y=日」と具体化できる。その結果、「a(s3,日,昼)+a(s3,日,夜)=0」(スタッフs3は日曜日に割り当てられない)という制約条件C7が得られる。生成された制約条件C7は、制約条件リスト141に登録される。
【0098】
また、修正内容112c-2において修正により取り消された割当「2-金夜 s6」に基づいて、制約条件パターン111aの変数を「X=s6」、「Y=金」と具体化できる。その結果、「a(s6,金,昼)+a(s6,金,夜)=0」(スタッフs6は金曜日に割り当てられない)という制約条件C2と同一の制約条件が得られる。生成された制約条件C2はすでに制約条件リスト141に登録されているため、制約条件リスト141への制約条件の追加登録は行われない。
【0099】
制約条件パターン111b「a(X,Y,夜)=0」(特定のスタッフXは特定の曜日Yの夜間に割り当てられない)は、修正内容112c-2を用いて、以下の2通りの具体化が試みられる。
【0100】
修正内容112c-2において修正により取り消された割当「2-日昼 s3」を制約条件パターン111bと照合すると、変数を「X=s3」、「Y=日」とすることはできるが、変数Zの値について一方が「Z=昼」、他方が「Z=夜」と不一致となる。その結果、具体化することはできない。
【0101】
また修正内容112c-2において修正により取り消された割当「2-金夜 s6」に基づいて、制約条件パターン111bの変数を「X=s6」、「Y=金」と具体化できる。その結果、「a(s6,金,夜)=0」(スタッフs6は金曜日の夜間に割り当てられない)という制約条件C4と同一の制約条件が得られる。生成された制約条件C4はすでに制約条件リスト141に登録されているため、制約条件リスト141への制約条件の追加登録は行われない。
【0102】
制約条件パターン111c「a(X1,Y,Z)+a(X2,Y,Z)≦1」(特定のスタッフX1とX2は同じ曜日の同じ時間帯に割り当てられない)は、修正内容112c-2を用いて、以下の2通りの具体化が試みられる。
【0103】
修正内容112c-2で取り消された割当「2-日昼 s3」と、シフト表112bで該当週の該当曜日の該当時間帯に割り当てられたスタッフs2の情報とに基づいて、制約条件パターン111cの変数は「X1=s3」、「X2=s2」と具体化できる。その結果、「a(s3,Y,Z)+a(s2,Y,Z)≦1」(スタッフs3とスタッフs2は同じ曜日の同じ時間帯に割り当てられない)という制約条件C8が得られる。生成された制約条件C8は、制約条件リスト141に登録される。
【0104】
修正内容112c-2で取り消された割当「2-金夜 s6」と、シフト表112bで該当週の該当曜日の該当時間帯に割り当てられたスタッフs7の情報とに基づいて、制約条件パターン111cの変数は「X1=s6」、「X2=s7」と具体化できる。その結果、「a(s6,Y,Z)+a(s7,Y,Z)≦1」(スタッフs6とスタッフs7は同じ曜日の同じ時間帯に割り当てられない)という制約条件C9が得られる。生成された制約条件C9は、制約条件リスト141に登録される。
【0105】
図12は、制約条件リストに追加される制約条件の第3の例を示す図である。
図12には、3つ目の修正内容112c-3「3-日昼 s3 ⇔ 3-月昼 s7」(3週目日曜昼のs3と3週目月曜昼のs7を交替)に基づいて生成され、制約条件リスト141に追加される制約条件C10~C12が示されている。
【0106】
制約条件パターン111a「a(X,Y,昼)+a(X,Y,夜)=0」(特定のスタッフXは特定の曜日Yに割り当てられない)は、修正内容112c-3を用いて以下の2通りの具体化が試みられる。
【0107】
修正内容112c-3において修正により取り消された割当「3-日昼 s3」に基づいて、制約条件パターン111aの変数を「X=s3」、「Y=日」と具体化できる。その結果、「a(s3,日,昼)+a(s3,日,夜)=0」(スタッフs3は日曜日に割り当てられない)という制約条件C7と同一の制約条件が得られる。生成された制約条件C7はすでに制約条件リスト141に登録されているため、制約条件リスト141への制約条件の追加登録は行われない。
【0108】
また、修正内容112c-3において修正により取り消された割当「3-月昼 s7」に基づいて、制約条件パターン111aの変数を「X=s7」、「Y=月」と具体化できる。その結果、「a(s7,月,昼)+a(s7,月,夜)=0」(スタッフs7は月曜日に割り当てられない)という制約条件C10が得られる。生成された制約条件C10は、制約条件リスト141に登録される。
【0109】
制約条件パターン111b「a(X,Y,夜)=0」(特定のスタッフXは特定の曜日Yの夜間に割り当てられない)は、修正内容112c-3を用いて、以下の2通りの具体化が試みられる。
【0110】
修正内容112c-3において修正により取り消された割当「3-日昼 s3」を制約条件パターン111bと照合すると、変数を「X=s3」、「Y=日」とすることはできるが、変数Zの値について一方が「Z=昼」、他方が「Z=夜」と不一致となる。その結果、具体化することはできない。
【0111】
修正内容112c-3において修正により取り消された割当「3-月昼 s7」を制約条件パターン111bと照合すると、変数を「X=s7」、「Y=月」とすることはできるが、変数Zの値について一方が「Z=昼」、他方が「Z=夜」と不一致となる。その結果、具体化することはできない。
【0112】
制約条件パターン111c「a(X1,Y,Z)+a(X2,Y,Z)≦1」(特定のスタッフX1とX2は同じ曜日の同じ時間帯に割り当てられない)は、修正内容112c-3を用いて、以下の2通りの具体化が試みられる。
【0113】
修正内容112c-3で取り消された割当「3-日昼 s3」と、シフト表112bで該当週の該当曜日の該当時間帯に割り当てられたスタッフs4の情報とに基づいて、制約条件パターン111cの変数は「X1=s3」、「X2=s4」と具体化できる。その結果、「a(s3,Y,Z)+a(s4,Y,Z)≦1」(スタッフs3とスタッフs4は同じ曜日の同じ時間帯に割り当てられない)という制約条件C11が得られる。生成された制約条件C11は、制約条件リスト141に登録される。
【0114】
修正内容112c-3で取り消された割当「3-月昼 s7」と、シフト表112bで該当週の該当曜日の該当時間帯に割り当てられたスタッフs8の情報とに基づいて、制約条件パターン111cの変数は「X1=s7」、「X2=s8」と具体化できる。その結果、「a(s7,Y,Z)+a(s8,Y,Z)≦1」(スタッフs7とスタッフs8は同じ曜日の同じ時間帯に割り当てられない)という制約条件C12が得られる。生成された制約条件C12は、制約条件リスト141に登録される。
【0115】
図13は、制約条件リストに追加される制約条件の第4の例を示す図である。
図13には、4つ目の修正内容112c-4「3-金昼 s6 ⇔ 3-土昼 s1」(3週目金曜昼のs6と3週目土曜昼のs1を交替)に基づいて生成され、制約条件リスト141に追加される制約条件C13~C15が示されている。
【0116】
制約条件パターン111a「a(X,Y,昼)+a(X,Y,夜)=0」(特定のスタッフXは特定の曜日Yに割り当てられない)は、修正内容112c-4を用いて以下の2通りの具体化が試みられる。
【0117】
修正内容112c-4において修正により取り消された割当「3-金昼 s6」に基づいて、制約条件パターン111aの変数を「X=s6」、「Y=金」と具体化できる。その結果、「a(s6,金,昼)+a(s6,金,夜)=0」(スタッフs6は金曜日に割り当てられない)という制約条件C2と同一の制約条件が得られる。生成された制約条件C2はすでに制約条件リスト141に登録されているため、制約条件リスト141への制約条件の追加登録は行われない。
【0118】
また、修正内容112c-4において修正により取り消された割当「3-土昼 s1」に基づいて、制約条件パターン111aの変数を「X=s1」、「Y=土」と具体化できる。その結果、「a(s1,土,昼)+a(s1,土,夜)=0」(スタッフs1は土曜日に割り当てられない)という制約条件C13が得られる。生成された制約条件C13は、制約条件リスト141に登録される。
【0119】
制約条件パターン111b「a(X,Y,夜)=0」(特定のスタッフXは特定の曜日Yの夜間に割り当てられない)は、修正内容112c-4を用いて、以下の2通りの具体化が試みられる。
【0120】
修正内容112c-4において修正により取り消された割当「3-金昼 s6」を制約条件パターン111bと照合すると、変数を「X=s6」、「Y=金」とすることはできるが、変数Zの値について一方が「Z=昼」、他方が「Z=夜」と不一致となる。その結果、具体化することはできない。
【0121】
修正内容112c-4において修正により取り消された割当「3-土昼 s1」を制約条件パターン111bと照合すると、変数を「X=s1」、「Y=土」とすることはできるが、変数Zの値について一方が「Z=昼」、他方が「Z=夜」と不一致となる。その結果、具体化することはできない。
【0122】
制約条件パターン111c「a(X1,Y,Z)+a(X2,Y,Z)≦1」(特定のスタッフX1とX2は同じ曜日の同じ時間帯に割り当てられない)は、修正内容112c-4を用いて、以下の2通りの具体化が試みられる。
【0123】
修正内容112c-4で取り消された割当「3-金昼 s6」と、シフト表112bで該当週の該当曜日の該当時間帯に割り当てられたスタッフs5の情報とに基づいて、制約条件パターン111cの変数は「X1=s6」、「X2=s5」と具体化できる。その結果、「a(s6,Y,Z)+a(s5,Y,Z)≦1」(スタッフs6とスタッフs5は同じ曜日の同じ時間帯に割り当てられない)という制約条件C14が得られる。生成された制約条件C14は、制約条件リスト141に登録される。
【0124】
修正内容112c-4で取り消された割当「3-土昼 s1」と、シフト表112bで該当週の該当曜日の該当時間帯に割り当てられたスタッフs9の情報とに基づいて、制約条件パターン111cの変数は「X1=s1」、「X2=s9」と具体化できる。その結果、「a(s1,Y,Z)+a(s9,Y,Z)≦1」(スタッフs1とスタッフs9は同じ曜日の同じ時間帯に割り当てられない)という制約条件C15が得られる。生成された制約条件C15は、制約条件リスト141に登録される。
【0125】
このように、修正内容112c-1~112c-4を用いて制約条件パターン111a~111cを具体化することで、15個の制約条件C1~C15が生成される。その後、制約条件生成部140は、得られた制約条件C1~C15が、修正の発生回避のほかに支障を生じないかをチェックする。例えば制約条件生成部140は、修正後の割当事例の中の他の箇所が、この制約条件の候補に抵触していないかを調べることで、支障の有無をチェックする。
【0126】
図14は、制約条件の候補生成処理の手順の一例を示すフローチャートの後半である。以下、
図14に示す処理をステップ番号に沿って説明する。
[ステップS121]制約条件生成部140は、制約条件リスト141に登録されたすべての制約条件それぞれを、処理対象の制約条件cとする。そして制約条件生成部140は、処理対象の制約条件cごとにステップS122~S126の処理を行う。
【0127】
[ステップS122]制約条件生成部140は、修正後のシフト表112bに設定されているすべての割当それぞれを、処理対象の割当xとする。そして制約条件生成部140は、処理対象の割当xごとにステップS123~S124の処理を実行する。
【0128】
[ステップS123]制約条件生成部140は、処理対象の制約条件cが、処理対象の割当xに抵触するか否かを判断する。割当xに抵触する場合とは、制約条件cを適用した場合に割当xが設定できなくなる場合である。制約条件生成部140は、抵触する場合、処理をステップS124に進める。また制約条件生成部140は、抵触しなければ、処理をステップS125に進める。
【0129】
[ステップS124]制約条件生成部140は、処理対象の制約条件cについて抵触ありと判定し、処理をステップS127に進める。
[ステップS125]制約条件生成部140は、修正後のシフト表112bの割当ごとの処理が完了した場合、処理をステップS126に進める。
【0130】
[ステップS126]制約条件生成部140は、処理対象の制約条件cを、割当の自動生成に適用する制約条件の候補と判定する。
[ステップS127]制約条件生成部140は、制約条件ごとの処理が完了したら、制約条件の候補生成処理を終了する。
【0131】
このようにして、修正の発生を回避することができ、かつほかに支障を生じない制約条件が抽出される。
図15は、支障を生じさせない制約条件の抽出処理の一例を示す図である。
図15には、制約条件C1~C15それぞれに対して、シフト表112bにおける割当の有無を示している。
【0132】
「スタッフs2は木曜日に割り当てられない」という制約条件C1に対しては、シフト表112bの2週目木曜夜と3週目木曜昼におけるスタッフs2の割当が抵触する。「スタッフs6は金曜日に割り当てられない」という制約条件C2に対しては、シフト表112bには抵触する割当はない。「スタッフs2は木曜日の夜間に割り当てられない」という制約条件C3に対しては、シフト表112bの2週目木曜夜におけるスタッフs2の割当が抵触する。「スタッフs6は金曜日の夜間に割り当てられない」という制約条件C4に対しては、シフト表112bには抵触する割当はない。「スタッフs2とスタッフs1は同じ時間帯に割り当てられない」という制約条件C5に対しては、シフト表112bの1週目日曜昼の割当などが抵触する。「スタッフs6とスタッフs5は同じ時間帯に割り当てられない」という制約条件C6に対しては、シフト表112bの1週目月曜昼などが抵触する。「スタッフs3は日曜日に割り当てられない」という制約条件C7に対しては、1週目日曜夜のスタッフs3の割当が抵触する。「スタッフs3とスタッフs2は同じ時間帯に割り当てられない」という制約条件C8に対しては、1週目火曜夜の割当などが抵触する。
【0133】
「スタッフs6とスタッフs7は同じ時間帯に割り当てられない」という制約条件C9に対しては、1週目水曜夜の割当などが抵触する。「スタッフs7は月曜日に割り当てられない」という制約条件C10に対しては、1週目月曜夜と2週目月曜昼のスタッフs7に対する割当が抵触する。「スタッフs3とスタッフs4は同じ時間帯に割り当てられない」という制約条件C11に対しては、1週目日曜夜の割当などが抵触する。「スタッフs7とスタッフs8は同じ時間帯に割り当てられない」という制約条件C12に対しては、1週目月曜夜の割当などが抵触する。「スタッフs1は土曜日に割り当てられない」という制約条件C13に対しては、1週目土曜夜と2週目土曜夜のスタッフs1に対する割当が抵触する。「スタッフs6とスタッフs5は同じ時間帯に割り当てられない」という制約条件C14に対しては、1週目月曜昼の割当などが抵触する。「スタッフs1とスタッフs9は同じ時間帯に割り当てられない」という制約条件C15に対しては、1週目土曜夜の割当などが抵触する。
【0134】
図15に示した例では、2つの制約条件C2,C4が、適用する制約条件の候補として支障を生じないことがわかる。そこで制約条件C2,C4が候補として、制約条件候補群113に格納される。
【0135】
その後、保持されている制約条件の候補について、その有効性の裏付けを取るため、制約条件評価部150が、その他の一定数の割当結果(その後に生成される割当結果)において、一定の基準以上の割合で修正の発生を回避できたかを評価する。制約条件評価部150は、同時に制約条件の候補に抵触する割当結果がないかも評価する。
【0136】
図16は、制約条件の候補評価処理の手順の一例を示すフローチャートである。以下、
図16に示す処理をステップ番号に沿って説明する。
[ステップS201]制約条件評価部150は、制約条件の候補ごとに、ステップS202~S207の処理を実行する。
【0137】
[ステップS202]制約条件評価部150は、修正後のシフト表112bに、処理対象の制約条件の候補の生成後に登録された割当結果が一定数以上(例えば4週間分)あるか否かを判断する。制約条件評価部150は、該当する割当結果が一定数以上ある場合、処理をステップS203に進める。また制約条件評価部150は、該当する割当結果が一定数未満の場合、処理をステップS208に進める。
【0138】
[ステップS203]制約条件評価部150は、処理対象の制約条件の候補が生成された後に修正記録112cに登録された修正内容ごとの修正回避判定処理を行う。修正回避判定処理では、処理対象の制約条件の候補を適用すれば修正せずに済んだ修正内容について、その制約条件により修正の回避が可能であると判定される。修正回避判定処理の詳細は後述する(
図17参照)。
【0139】
[ステップS204]制約条件評価部150は、修正回避可能であると判定された修正内容が一定の基準以上の頻度で存在するか否かを判断する。例えば制約条件評価部150は、所定の割合以上の週において、制約条件の候補で修正回避可能であると判定した修正内容が少なくとも1つ存在する場合、修正回避可能と判定された修正内容が一定の基準以上の頻度で存在すると判定する。制約条件評価部150は、修正回避可能と判定された修正内容が一定の基準以上の頻度で存在する場合、処理をステップS205に進める。また制約条件評価部150は、修正回避可能と判定された修正内容が一定の基準未満の頻度でしか存在しない場合、処理をステップS208に進める。
【0140】
[ステップS205]制約条件評価部150は、処理対象の制約条件の候補の、その制約条件の生成後に登録された割当結果との抵触判定を行う。抵触判定処理の詳細は後述する(
図18参照)。
【0141】
[ステップS206]制約条件評価部150は、少なくとも1つの割当結果と抵触したか否かを判断する。制約条件評価部150は、抵触した場合、処理をステップS208に進める。また制約条件評価部150は、抵触していなければ、処理をステップS207に進める。
【0142】
[ステップS207]制約条件評価部150は、処理対象の制約条件の候補を、シフト表生成時に適用する制約条件として認定する。
[ステップS208]制約条件評価部150は、制約条件の候補ごとの処理が完了した場合、制約条件の候補評価処理を終了する。
【0143】
このようにして、修正回避が可能であり、かつ他の割当結果と抵触しない制約条件の候補が、シフト表の生成時に適用する制約条件に認定される。以下、修正回避判定処理と抵触判定処理について詳細に説明する。
【0144】
図17は、修正回避判定処理の手順の一例を示すフローチャートである。以下、
図17に示す処理をステップ番号に沿って説明する。
[ステップS211]制約条件評価部150は、処理対象の制約条件の候補生成後のシフト表112aに対する修正を示す修正内容ごとに、ステップS212~S214の処理を実行する。
【0145】
[ステップS212]制約条件評価部150は、処理対象の修正内容における修正前の割当に、制約条件の候補が抵触しているか否かを判断する。制約条件評価部150は、抵触していれば、処理をステップS213に進める。また制約条件評価部150は、抵触していなければ、処理をステップS215に進める。
【0146】
[ステップS213]制約条件評価部150は、処理対象の修正内容における修正後の割当に、制約条件の候補が抵触しないか否かを判断する。制約条件評価部150は、抵触しない場合、処理をステップS214に進める。また制約条件評価部150は、抵触する場合、処理をステップS215に進める。
【0147】
[ステップS214]制約条件評価部150は、処理対象の制約条件の候補により、割当の修正の回避が可能であると判定する。
[ステップS215]制約条件評価部150は、処理対象の制約条件の候補に対する修正内容ごとの処理が完了した場合、修正回避判定処理を終了する。
【0148】
このように、制約条件の候補を生成後の割当の修正内容ごとに、その修正が、制約条件の候補により回避可能か否かが判定される。
図18は、抵触判定処理の手順の一例を示すフローチャートである。以下、
図18に示す処理をステップ番号に沿って説明する。
【0149】
[ステップS221]制約条件評価部150は、修正後のシフト表112bにおける、処理対象の制約条件の候補生成後に登録された割当ごとに、ステップS222~S223の処理を実行する。
【0150】
[ステップS222]制約条件評価部150は、処理対象の制約条件の候補が、処理対象の割当に抵触するか否かを判断する。制約条件評価部150は、抵触する場合、処理をステップS223に進める。また制約条件評価部150は、抵触しない場合、処理をステップS224に進める。
【0151】
[ステップS223]制約条件評価部150は、処理対象の制約条件の候補について、割当との抵触ありと記録して、抵触判定処理を終了する。
[ステップS224]制約条件評価部150は、修正後のシフト表112bにおける、処理対象の制約条件の候補生成後に登録された割当ごとの処理が終了したら、抵触判定処理を終了する。
【0152】
このようにして、制約条件の候補のうち、以後の割当の修正の発生の回避に有効であり、かつその他の割当と抵触しない制約条件が、シフト表の生成時に適用する制約条件として認定される。以下
図19~
図23を参照し、制約条件の候補の評価例について説明する。なお以下の説明では、制約条件の候補を認定するための有効性に関する基準とは、週ごとに見て修正回避ができた週が20%以上あることとする。
【0153】
図19は、制約条件の候補の評価結果の第1の例を示す図である。
図19のシフト表112b-1には、
図7に示した修正後のシフト表112bに基づいて生成された制約条件C2,C4を制約条件候補群113に登録後に、シフト表112bに登録された4週間分の割当が示されている。該当期間内に行われた割当の修正内容112c-5は「3-木夜 s2 ⇔ 3-金夜 s6」である。この修正内容112c-5は、3週目木曜夜のスタッフs2と3週目金曜夜のスタッフs6の割当を交換したことを示す。修正内容112c-5に示される修正は、候補として設定されている制約条件C2,C4のいずれかがあれば、回避可能である。すなわちシフト表112b-1の生成時に制約条件C2,C4のいずれかが適用されていれば、修正前の段階でスタッフs6が金曜の夜に割り当てられることが回避され、修正の発生を避けることができる。
【0154】
さらに、制約条件C2または制約条件C4のいずれかがシフト表112a生成時に適用されていることで修正の発生を回避できる週は、4週のうち1の週である。すなわち回避可能な週の割合は25%であり、基準の割合20%を上回っている。
【0155】
また制約条件C2と制約条件C4とのいずれについても、シフト表112b-1に抵触する割当(金曜日あるいは金曜日夜にスタッフs6が割り当てられている)もない。そのため制約条件C2と制約条件C4とは、以後のシフト表112aの生成時に適用する制約条件として認定され、制約条件群114に含められる。以後の自動割当処理では、制約条件C2と制約条件C4を満たすような割当が行われる。
【0156】
なお制約条件C2は制約条件C4より制約の範囲が大きく、制約条件C2の制約には制約条件C4の制約も含まれる。このような場合においても制約条件C2と制約条件C4との両方を、適用する制約条件として認定しておくことで、その後の割当の修正によって制約条件C2が否定された場合にも、制約条件C4による制約を機能させることができる。
【0157】
図20は、制約条件の候補の評価結果の第2の例を示す図である。
図20のシフト表112b-2には、
図7に示した修正後のシフト表112bに基づいて生成された制約条件C2,C4を制約条件候補群113に登録後に、シフト表112bに登録された4週間分の割当が示されている。該当期間内に行われた割当の修正内容112c-6は、「3-金夜 s6 ⇔ 3-土夜 s1」である。この修正内容は、3週目金曜夜のスタッフs6と3週目土曜夜のスタッフs1の割当を交換したことを示す。修正内容112c-6は、候補として設定されている制約条件C2,C4のいずれかがあれば回避可能である。すなわちシフト表112b-2の生成時に制約条件C2,C4のいずれかが適用されていれば、修正前の段階でスタッフs6が金曜の夜に割り当てられることが回避され、修正の発生を避けることができる。
【0158】
しかしシフト表112b-2の4週目の金曜昼にスタッフs6が割り当てられている。この割当は、制約条件C2に抵触する。他方、制約条件C4については、シフト表112b-2に抵触する割当(金曜日夜にスタッフs6が割り当てられている)はない。そのため制約条件C4が、以後のシフト表112aの生成時に適用する制約条件として認定され、制約条件群114に含められる。以後の自動割当処理では、制約条件C4を満たすような割当が行われる。
【0159】
図21は、制約条件の候補の評価結果の第3の例を示す図である。
図21のシフト表112b-3には、
図7に示した修正後のシフト表112bに基づいて生成された制約条件C2,C4を制約条件候補群113に登録後に、シフト表112bに登録された4週間分の割当が示されている。該当期間内に行われた割当の修正内容112c-7は「1-金昼 s6 ⇔ 1-土昼 s1」である。この修正内容112c-7は、1週目金曜昼のスタッフs6と1週目土曜昼のスタッフs1の割当を交換したことを示す。
【0160】
修正内容112c-7は、候補として設定されている制約条件C2があれば回避可能である。すなわちシフト表112b-3の生成時に制約条件C2が適用されていれば、修正前の段階でスタッフs6が金曜の昼に割り当てられることが回避され、修正の発生を避けることができる。
【0161】
さらに、制約条件C2または制約条件C4のいずれかがシフト表112a生成時に適用されていることで修正の発生を回避できる週は、4週のうち1の週である。すなわち回避可能な週の割合は25%であり、基準の割合20%を上回っている。
【0162】
また制約条件C2について、シフト表112b-3に抵触する割当(金曜日にスタッフs6が割り当てられている)もない。そのため制約条件C2は、以後のシフト表112aの生成時に適用する制約条件として認定され、制約条件群114に含められる。以後の自動割当処理では、制約条件C2を満たすような割当が行われる。
【0163】
他方、制約条件C4があっても、修正記録112cに示されている修正を回避することはできない。すなわち4週のうち、制約条件C4で回避できる修正が存在する週は0週(0%)である。そのため、制約条件C4は、シフト表112aの生成時に適用する制約条件としては認定されない。
【0164】
図22は、制約条件の候補の評価結果の第4の例を示す図である。
図22のシフト表112b-4には、
図7に示した修正後のシフト表112bに基づいて生成された制約条件C2,C4を制約条件候補群113に登録後に、シフト表112bに登録された4週間分の割当が示されている。該当期間内に行われた割当の修正内容112c-8は「1-日昼 s5 ⇔ 1-月昼 s8」である。この修正内容112c-8は、1週目日曜昼のスタッフs5と1週目月曜昼のスタッフs8の割当を交換したことを示す。
【0165】
修正内容112c-8に示される修正は、制約条件C2,C4があっても回避することはできない。そのため、制約条件C2,C4は、シフト表112aの生成時に適用する制約条件としては認定されない。
【0166】
図23は、制約条件の候補の評価結果の第5の例を示す図である。
図23のシフト表112b-5には、
図7に示した修正後のシフト表112bに基づいて生成された制約条件C2,C4を制約条件候補群113に登録後に、シフト表112bに登録された4週間分の割当が示されている。該当期間内に行われた割当の修正内容112c-9は「1-日夜 s7 ⇔ 1-月夜 s1」である。この修正内容112c-9は、1週目日曜夜のスタッフs7と1週目月曜夜のスタッフs1の割当を交換したことを示す。また、修正内容112c-10は「4-水昼 s1 ⇔ 4-水夜 s3」である。この修正内容112c-10は、4週目水曜昼のスタッフs1と4週目水曜夜のスタッフs3の割当を交換したことを示す。
【0167】
修正内容112c-9,112c-10に示される修正はいずれも、制約条件C2,C4があっても回避することはできない。しかもシフト表112b-5の1週目の金曜昼にスタッフs6が割り当てられている。この割当は、制約条件C2に抵触する。そのため、制約条件C2,C4は、シフト表112aの生成時に適用する制約条件としては認定されない。
【0168】
以上の制約条件生成処理は、新しい割当結果(例えば1週間分の割当結果)が順次得られるごとに、最新の一定数の割当結果とその修正データを用いて繰り返し行われる。また、制約条件評価部150は、過去に認定した制約条件について、その後にその制約条件に抵触する修正が行われていないかチェックしてもよい。そして抵触する修正が行われた制約条件がある場合、制約条件評価部150は、該当する制約条件を制約条件群114から消去することで、自動割当時に適用する制約条件について常に最新の状態に維持することができる。
【0169】
図24は、認定済みの制約条件抵触判定処理の手順の一例を示すフローチャートである。以下、
図24に示す処理をステップ番号に沿って説明する。
[ステップS301]制約条件評価部150は、制約条件群114に含まれる制約条件ごとに、ステップS302~S305の処理を行う。
【0170】
[ステップS302]制約条件評価部150は、修正後のシフト表112bに設定されている割当ごとにステップS303~S304の処理を実行する。
[ステップS303]制約条件評価部150は、処理対象の制約条件が、処理対象の割当に抵触するか否かを判断する。制約条件評価部150は、抵触する場合、処理をステップS304に進める。また制約条件評価部150は、抵触しなければ、処理をステップS305に進める。
【0171】
[ステップS304]制約条件評価部150は、処理対象の制約条件を、制約条件群114から削除する。その後、制約条件評価部150は処理をステップS306に進める。
[ステップS305]制約条件評価部150は、修正後のシフト表112bの割当ごとの処理が完了した場合、処理をステップS306に進める。
【0172】
[ステップS306]制約条件評価部150は、制約条件ごとの処理が完了したら、認定済み制約条件抵触判定処理を終了する。
このようにして、適用するべき制約条件が時間とともに変化する場合においても、最新の状況に合わせた適切な制約条件を用いた自動割当を実施することが可能となる。
【0173】
このようにして適用する制約条件の信頼性が向上する。そのため認定された制約条件を用いて以後の割当処理を行うことで、割当結果の質が向上する。例えば
図19の例では、認定された制約条件C2(スタッフs6は金曜日に割り当てられない)、制約条件C4(スタッフs6は金曜日の夜間に割り当てられない)が機能して、スタッフs6は金曜日に割り当てられることがなくなる。その結果、金曜日に割り当てられたスタッフs6のシフトを変更してほしいという要求は生じなくなる。
【0174】
〔その他の実施の形態〕
第2の実施の形態ではスタッフ(人員)への勤務時間帯を割り当てる例を示したが、機械などの他の稼働資源に対して、その稼働資源を稼働させる時間帯を割り当てる場合にも同様の処理で日程表を生成することができる。
【0175】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【符号の説明】
【0176】
1 端末
2 割当担当者
3 第1の修正指示
4 第1の日程表
5,6 制約条件
7 第2の修正指示
8 第2の日程表
9 第3の日程表
10 情報処理装置
11 記憶部
12 処理部