(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-18
(45)【発行日】2024-06-26
(54)【発明の名称】計算機システム及び作業に対する作業員の割当て案の算出方法
(51)【国際特許分類】
G06Q 10/0631 20230101AFI20240619BHJP
【FI】
G06Q10/0631
(21)【出願番号】P 2020116749
(22)【出願日】2020-07-07
【審査請求日】2023-02-02
(73)【特許権者】
【識別番号】000233044
【氏名又は名称】株式会社日立パワーソリューションズ
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】牧 秀行
(72)【発明者】
【氏名】石橋 雅義
(72)【発明者】
【氏名】藤平 健二
(72)【発明者】
【氏名】高木 孝幸
(72)【発明者】
【氏名】伊藤 美空
(72)【発明者】
【氏名】佐々木 康彦
【審査官】松野 広一
(56)【参考文献】
【文献】特開平11-143938(JP,A)
【文献】特開2006-313486(JP,A)
【文献】特開2013-097625(JP,A)
【文献】特開2011-028436(JP,A)
【文献】特開2011-227717(JP,A)
【文献】特開2019-109648(JP,A)
【文献】特開平10-289104(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
演算装置及び記憶装置を有する少なくとも一つの計算機を備える計算機システムであって、
複数の条件に基づいて、作業に対する作業員の割当て案を算出するための割当て案算出処理を実行し、利用者に前記割当て案を提示する割当て案算出部と、
前記割当て案算出処理において使用される、前記複数の条件の重要度を表す重みを更新する重み更新部と、を備え、
前記割当て案算出部は、任意の割当て案における前記複数の条件の適合性を評価する評価関数と、前記複数の条件の重みとを用いて定義される目的関数を用いた数理計画法に基づいて、少なくとも一つの前記割当て案を算出し、
前記重み更新部は、
前記割当て案算出部によって提示された前記割当て案を参照した前記利用者から、推奨割当て案を受け付け、
前記割当て案算出部によって提示された前記割当て案の前記目的関数の値と、前記推奨割当て案
の前記目的関数の値とに基づいて前記複数の条件の重みを更新することを特徴とする計算機システム。
【請求項2】
請求項1に記載の計算機システムであって、
前記重み更新部は、
前記目的関数が最小の前記割当て案の前記目的関数の値に対して、前記推奨割当て案の前記目的関数の値が小さくなる方向に、前記複数の条件の重みを更新することを特徴とする計算機システム。
【請求項3】
請求項2に記載の計算機システムであって、
前記重み更新部は、
前記目的関数が最小の前記割当て案の前記目的関数から前記推奨割当て案の前記目的関数を減算して算出された関数の前記複数の条件の微分係数を算出し、
前記複数の条件の現在の重みと、前記複数の条件の微分係数とを用いて、前記複数の条件の重みを更新することを特徴とする計算機システム。
【請求項4】
請求項1に記載の計算機システムであって、
前記重み更新部は、
前記利用者に提示した前記割当て案の中から選択された前記割当て案、又は、前記利用者に提示した前記割当て案を修正して生成された新たな割当て案を、前記推奨割当て案として受け付けることを特徴とする計算機システム。
【請求項5】
計算機システムが実行する、作業に対する作業員の割当て案の算出方法であって、
前記計算機システムは、
演算装置及び記憶装置を有する少なくとも一つの計算機を含み、
複数の条件に基づいて、作業に対する作業員の割当て案を算出するための割当て案算出処理を実行し、利用者に前記割当て案を提示する割当て案算出部と、前記割当て案算出処理において使用される、前記複数の条件の重要度を表す重みを更新する重み更新部と、を有し、
前記割当て案の算出方法は、
前記割当て案算出部が、任意の割当て案における前記複数の条件の適合性を評価する評価関数と、前記複数の条件の重みとを用いて定義される目的関数を用いた数理計画法に基づいて、少なくとも一つの前記割当て案を算出する第1のステップと、
前記重み更新部が、前記割当て案算出部によって提示された前記割当て案を参照した前記利用者から、推奨割当て案を受け付ける第2のステップと、
前記重み更新部が、
前記割当て案算出部によって提示された前記割当て案の前記目的関数の値と、前記推奨割当て案
の前記目的関数の値とに基づいて前記複数の条件の重みを更新する第3のステップと、を含むことを特徴とする作業に対する作業員の割当て案の算出方法。
【請求項6】
請求項5に記載の作業に対する作業員の割当て案の算出方法であって、
前記第3のステップは、前記重み更新部が、前記目的関数が最小の前記割当て案の前記目的関数の値に対して、前記推奨割当て案の前記目的関数の値が小さくなる方向に、前記複数の条件の重みを更新するステップを含むことを特徴とする作業に対する作業員の割当て案の算出方法。
【請求項7】
請求項6に記載の作業に対する作業員の割当て案の算出方法であって、
前記第3のステップは、
前記重み更新部が、前記目的関数が最小の前記割当て案の前記目的関数から前記推奨割当て案の前記目的関数を減算して算出された関数の前記複数の条件の微分係数を算出するステップと、
前記重み更新部が、前記複数の条件の現在の重みと、前記複数の条件の微分係数とを用いて、前記複数の条件の重みを更新するステップと、を含むことを特徴とする作業に対する作業員の割当て案の算出方法。
【請求項8】
請求項5に記載の作業に対する作業員の割当て案の算出方法であって、
前記第2のステップは、前記重み更新部が、前記利用者に提示した前記割当て案の中から選択された前記割当て案、又は、前記利用者に提示した前記割当て案を修正して生成された新たな割当て案を、前記推奨割当て案として受け付けるステップを含むことを特徴とする作業に対する作業員の割当て案の算出方法。
【発明の詳細な説明】
【技術分野】
【0001】
作業員等の資源の割当てを最適化する技術に関する。
【背景技術】
【0002】
作業に対して作業員を割り当てる技術として、特許文献1、特許文献2に記載の技術が知られている。
【0003】
特許文献1には、「制御部11は、保守対象の保守作業に関する案件の難易度及び重要度を含む案件情報と、保守対象の保守作業を行う作業員の難易度対応スキル及び重要度対応スキルを含む作業員情報を取得し、案件情報に含まれる案件の難易度及び重要度と、作業員情報に含まれる作業員の難易度対応スキル及び重要度対応スキルに基づいて、案件に対して対応可能な作業員を割り当て、その割当結果に基づいて、作業員の作業スケジュールを作成する。」ことが記載されている。
【0004】
特許文献2には、「スケジューリング方法は、人員による各タスクの処理時間を人員ごとに示す人別タスク処理時間情報を用いて、先行制約がある複数のタスクを処理する処理時間が最も短いクリティカルパスを取得するクリティカルパス取得処理(ステップS2)と、人別タスク処理時間情報を基に、処理時間が最も短いクリティカルパスに従って複数のタスクを割り当てる人員の数が最小となるスケジュールを取得する最少人数取得処理(ステップS3)と、人別タスク処理時間情報を基に、人員の数が最小となるスケジュールであって、各人員の総タスク処理時間の分散が最小となるスケジュールを取得する最小分散取得処理(ステップS4)と、を含む。」ことが記載されている。
【0005】
特許文献1及び特許文献2に記載の技術は、作業に適した作業員を選択するための複数の条件を扱うものである。複数の条件の間には優先順位があり、優先順位の高い方から順に、その条件にしたがって割り当てる作業員の候補が絞り込まれる。
【0006】
また、複数の条件を扱う最適化手法として、非特許文献1には「多目的計画法」が示されている。トレードオフの関係にある複数の条件に対し、非劣解の集合を求め、その中で、どの解が好ましいかは利用者が決めるというものである。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2020-003895号公報
【文献】特開2017-211921号公報
【非特許文献】
【0008】
【文献】清水良明著、「最適化工学のすすめ」、コロナ社、2010年2月22日
【発明の概要】
【発明が解決しようとする課題】
【0009】
従来技術では、考慮すべき条件が複数存在する場合、予め、各条件の重要度を表す重みが設定されていた。各条件の重みを適切に設定しないと、利用者が望むような割当て案が出力されない。しかし、各条件をどの程度重視すればよいかを事前に決めることが困難という課題がある。
【課題を解決するための手段】
【0010】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、演算装置及び記憶装置を有する少なくとも一つの計算機を備える計算機システムであって、複数の条件に基づいて、作業に対する作業員の割当て案を算出するための割当て案算出処理を実行し、利用者に前記割当て案を提示する割当て案算出部と、前記割当て案算出処理において使用される、前記複数の条件の重要度を表す重みを更新する重み更新部と、を備え、前記割当て案算出部は、任意の割当て案における前記複数の条件の適合性を評価する評価関数と、前記複数の条件の重みとを用いて定義される目的関数を用いた数理計画法に基づいて、少なくとも一つの前記割当て案を算出し、前記重み更新部は、前記割当て案算出部によって提示された前記割当て案を参照した前記利用者から、推奨割当て案を受け付け、前記割当て案算出部によって提示された前記割当て案の前記目的関数の値と、前記推奨割当て案の前記目的関数の値とに基づいて前記複数の条件の重みを更新する。
【発明の効果】
【0011】
本発明によれば、計算機システムは利用者のフィードバック(推奨割当て案)に基づいて複数の条件の重みを更新する。これによって、利用者が望む割当て案を算出できる。上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【0012】
【
図1】実施例1の計算機システムの構成の一例を示す図である。
【
図2】実施例1の計算機システムが扱う作業案件を説明する図である。
【
図3】実施例1の計算機システムに作業員要件を設定する場合の画面の一例を示す図である。
【
図4】実施例1の計算機システムに作業員要件を設定する場合の画面の一例を示す図である。
【
図5A】実施例1の計算機システムに作業員要件を設定する場合の画面の一例を示す図である。
【
図5B】実施例1の作業員要件の入力のイメージを示すグラフである。
【
図6】実施例1の作業員管理情報に格納されるデータの一例を示す図である。
【
図7】実施例1の作業員管理情報に格納されるデータの一例を示す図である。
【
図8】実施例1の作業案件管理情報に格納されるデータの一例を示す図である。
【
図9】実施例1の作業案件管理情報に格納されるデータの一例を示す図である。
【
図10】実施例1の条件管理情報に格納されるデータの一例を示す図である。
【
図11】実施例1の条件管理情報に格納されるデータの一例を示す図である。
【
図12】実施例1の計算機システムが実行する割当て案算出処理の一例を説明するフローチャートである。
【
図13】実施例1の作業案件選択画面の一例を示す図である。
【
図14】実施例1の条件選択画面の一例を示す図である。
【
図15】実施例1の作業員への作業の割当ての一例を示す図である。
【
図16】実施例1の計算機システムが提示する割当て案の一例を示す図である。
【
図17A】実施例1の計算機システムに入力されるフィードバックの一例を示す図である。
【
図17B】実施例1の計算機システムに入力されるフィードバックの一例を示す図である。
【
図18】実施例1の計算機システムが重みの推移を提示するための画面の一例を示す図である。
【発明を実施するための形態】
【0013】
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。図面等において示す各構成の位置、大きさ、形状、及び範囲等は、発明の理解を容易にするため、実際の位置、大きさ、形状、及び範囲等を表していない場合がある。したがって、本発明では、図面等に開示された位置、大きさ、形状、及び範囲等に限定されない。
【実施例1】
【0014】
図1は、実施例1の計算機システムの構成の一例を示す図である。
【0015】
計算機システム101は、作業に対する作業員の割当ての案を算出するシステムであり、少なくとも一つの計算機(図示省略)から構成される。以下の説明では、作業員を割り当てる作業を作業案件と記載し、作業に対する作業員の割当ての案を単に割当て案と記載する。
【0016】
計算機は、CPU(図示省略)、主記憶装置(図示省略)、副記憶装置(図示省略)、及びネットワークインタフェース(図示省略)を有する。CPUが主記憶装置に格納されるプログラムにしたがって処理を実行することによって、特定の機能を実現する機能部(モジュール)として動作する。以下の説明では、機能部を主語に処理を説明する場合、CPUが当該機能部を実現するプログラムを実行していることを示す。
【0017】
計算機システム101は、データベースとして、作業員管理情報102、作業案件管理情報103、及び条件管理情報104を保持する。また、計算機システム101は、機能部として、割当て案算出部105、利用者入出力部106、及び重み更新部107を有する。
【0018】
作業員管理情報102は、外部の作業員管理システム110から取得したデータを格納する。データは、作業員の勤務状況、技量、及び知識等に関する情報を含む。
【0019】
作業案件管理情報103は、外部の作業案件管理システム111から取得したデータを格納する。データは、作業の場所、内容、及び期間等に関する情報を含む。
【0020】
条件管理情報104は、利用者によって入力されたデータを格納する。データは、作業案件に作業員を割り当てる場合に考慮すべき条件に関する情報を含む。
【0021】
利用者入出力部106は、計算機システム101の利用者からのデータの入力を受け付け、また、利用者に対するデータの出力を行う。
【0022】
割当て案算出部105は、作業員管理情報102、作業案件管理情報103、及び条件管理情報104を用いて、対象となる作業案件の割当て案を算出する。算出された割当て案は利用者入出力部106を介して利用者に提示される。
【0023】
利用者は、利用者入出力部106を介して、提示された割当て案の中から採用する割当て案を選択し、又は、提示された割当て案を修正する。利用者入出力部106は、割当て案の選択結果又は修正結果を重み更新部107に出力する。
【0024】
重み更新部107は、割当て案の選択結果又は修正結果に基づいて、条件の重要度を表す重みを更新し、更新結果を条件管理情報104に反映する。
【0025】
なお、計算機システム101が有する各機能部については、複数の機能部を一つの機能部にまとめてもよいし、一つの機能部を機能毎に複数の機能部に分けてもよい。また、各機能部は、複数の計算機に分散して配置してもよいし、一つの計算機に集約してもよい。
【0026】
図2は、実施例1の計算機システム101が扱う作業案件を説明する図である。
【0027】
本実施例で扱う作業案件は、作業期間が一定の長さ(例えば、二日以上)の作業案件であり、各作業案件の開始日、終了日、及び作業期間(開始日から終了日までの長さ)は一律ではない。
【0028】
各作業案件には割り当てる作業員に求められる条件(作業員要件)が存在する。本実施例では、各作業案件の作業員要件は予め決定されており、利用者が利用者入出力部106を介して設定するものとする。ここで、図を用いて作業員要件の設定方法について説明する。
【0029】
図3、
図4、及び
図5Aは、実施例1の計算機システム101に条件を設定する場合の画面の一例を示す図である。
図5Bは、実施例1の条件の入力のイメージを示すグラフである。
【0030】
図3及び
図4に示す画面300、400は各作業案件の作業員要件のうち作業員の技量に関する条件を設定するための画面である。利用者は、画面300、400を用いて、作業員に求められる「電気系技能」の技能レベルの要件を設定する。
【0031】
画面300では、I、II、III、IVの4段階の技能レベルのうち、どの技能レベルが求められているかを示す値が「ペナルティ」の欄に設定される。「ペナルティ」の欄の値が大きいほど「望ましくない」ことを意味する。例えば、技能レベル「I」のペナルティは「0」であり、技能レベル「III」のペナルティは「90」であることから、技能レベル「III」の作業員より技能レベル「I」の作業員が望ましいことを示す。「不可」の欄は該当する技能レベルの作業員は割当て作業員から除外することを示す。この例では、技能レベル「IV」の作業員をこの作業案件には割り当てないことを意味する。利用者は、「ペナルティ」及び「不可」の欄を操作することによって、作業案件を割り当てる作業員に望ましい技量を設定できる。
【0032】
画面400のように、ペナルティの値を直接入力する代わりに、「最適」、「適」、「良」、「可」等の選択肢を設けてもよい。この場合、各選択肢に応じたペナルティの値が計算機システム101に予め設定される。例えば、「最適」のペナルティの値は0、「可」のペナルティの値は90に設定される。
【0033】
なお、必ずしも、「I」、「II」、「III」、「IV」の順にペナルティが小さくなくてもよい。例えば、レベル「II」のペナルティが最も小さいという入力も可能である。
【0034】
なお、レベルの段階は4段階に限定されない。例えば、特定の資格の取得を条件とする場合、「資格あり」及び「資格なし」の2段階を設ければよい。
【0035】
図5Aに示す画面500は作業員の技能評価点に関する条件を設定するための画面である。
図3、4と異なる点は、区分がレベルのような離散的な値ではなく連続的な値であることである。
【0036】
利用者は、画面500を用いて、0から20の範囲である技能評価点に関する要件を設定する。評価点が大きいほど望ましい作業員であることを示す。すなわち、評価点が大きいほどペナルティは小さい。「重要度」に入力された値は、評価点が0の作業員を割り当てた場合のペナルティを意味する。「重要度」を70と設定した場合、計算機システム101は、
図5Bに示すように「評価点」が20の作業員を割り当てた場合のペナルティが0となり、その中間の評価点に対しては、評価点が高いほど、ペナルティが減少するように、直線的に補間する。また、「不可しきい値」は、評価点がしきい値よりも小さい作業員を割り当ててはいけないことを意味する。
【0037】
次に、作業員管理情報102、作業案件管理情報103、及び条件管理情報104に格納されるデータについて説明する。
【0038】
図6及び
図7は、実施例1の作業員管理情報102に格納されるデータの一例を示す図である。
【0039】
テーブル600は、作業員の勤務状況を管理するデータである。テーブル600には、一人の作業員に対して一つのレコードが格納される。レコードには、作業員の識別情報、所属、所属する組織の所在地、及び超過時間実績等が含まれる。
【0040】
テーブル700は、作業員の技能を管理するデータである。テーブル700には、一人の作業員に対して一つのレコードが格納される。レコードには、作業員の識別情報、技能のレベル及び評価値、知識、並びに、企業評価等が含まれる。
【0041】
「装置X-1」等は、装置に関する知識の理解レベルを表す。「技術力評点」及び「指導力評点」は企業による評価を表す。
【0042】
なお、テーブル600、700のレコードに含まれる項目は一例であってこれに限定されない。
【0043】
図8及び
図9は、実施例1の作業案件管理情報103に格納されるデータの一例を示す図である。
【0044】
テーブル800は、割当て対象の作業案件を管理するデータである。テーブル900は、過去の作業案件を管理するデータである。テーブル800、900は、いずれも同一のデータ形式であり、一つの作業案件に対して一つのレコードが格納される。レコードには、作業案件の識別情報、作業場所、作業内容、作業期間、及び割り当てられる作業員等が含まれる。作業員が割り当てられていない場合、レコードの作業員のフィールドには「未定」が格納される。
【0045】
図10及び
図11は、実施例1の条件管理情報104に格納されるデータの一例を示す図である。
【0046】
テーブル1000は、離散的な区分で設定される条件を管理するデータである。作業案件、条件種別(技能種別)、及び区分(レベル)の組合せに対して一つのレコードが格納される。テーブル1000には、例えば、画面300、400を用いて入力された各条件の情報が格納される。
【0047】
テーブル1100は、連続的な区分で設定される条件を管理するデータである。作業案件、条件種別(評価種別)、及びパラメータ項目の組合せに対して一つのレコードが格納される。テーブル1100には、例えば、画面500を用いて入力された各条件の情報が格納される。
【0048】
なお、条件管理情報104には、図示していない条件の重みを管理するデータも含まれる。例えば、条件の種別及び重みを対応付けたレコードを格納するテーブルが考えられる。
【0049】
次に計算機システム101が実行する処理について説明する。
【0050】
図12は、実施例1の計算機システム101が実行する処理の一例を説明するフローチャートである。
図13は、実施例1の作業案件選択画面の一例を示す図である。
図14は、実施例1の条件選択画面の一例を示す図である。
図15は、実施例1の作業員への作業の割当ての一例を示す図である。
図16は、実施例1の計算機システム101が提示する割当て案の一例を示す図である。
図17A及び
図17Bは、実施例1の計算機システム101に入力されるフィードバックの一例を示す図である。
【0051】
処理の実行にあたって、まず、利用者は、対象となる作業案件を選択し、考慮する条件及び当該条件の重みを設定する。
【0052】
利用者は、作業案件選択画面1300を参照して対象の作業案件を選択する。作業案件選択画面1300には、開始日が現時点以降である作業案件が表示される。利用者入出力部106は、例えば、テーブル800に基づいて作業案件選択画面1300を表示する。
【0053】
作業案件の期間を示すアイコンには作業員の割当て結果が重畳して表示される。
図13では、作業案件「T002」には作業員「W003」が割り当てられている。
【0054】
利用者は、作業案件選択画面1300の「対象」のフィールドにチェックを入れることによって、対象となる作業案件を選択する。作業員が割り当てられている作業案件を対象から除外する場合、利用者は「対象」のフィールドのチェックを外す。一方、利用者は、作業員が割り当てられている作業案件の「対象」のフィールドにチェックを入れることによって、当該作業案件に対する作業員の割当てをやり直すこともできる。
【0055】
なお、
図13のように作業案件を直接選択する方法の他に、期間を指定することによって対象の作業案件を選択する方法も考えられる。この場合、利用者は期間を入力する。計算機システム101は、作業案件管理情報103(例えば、テーブル800)を参照し、開始日時及び終了日時によって規定される作業期間が指定された期間に含まれる作業案件を対象の作業案件として特定する。なお、対象のフィールドはそのまま残してもよい。これによって、利用者が、特定された作業案件を適宜除外することができる。
【0056】
利用者は、条件選択画面1400を参照して、対象の条件及び重みを設定する。条件選択画面1400には、選択可能な全ての条件がレコードとして表示される。レコードにはチェックボックス及び重み入力欄が含まれる。利用者は、チェックボックスを操作することによって、考慮する条件を選択し、重み入力欄に重み(数値)を入力する。条件選択画面1400を介して入力された重みは条件管理情報104に格納される。
【0057】
計算機システム101は、各条件の重みの合計値が100となるように重み入力欄の値を自動的に更新してもよいし、又は、内部処理で各条件の重みの合計値が100となるように換算してもよい。なお、チェックボックスのチェックが外された条件の重みは0に固定される。
【0058】
なお、重みの初期値は予め設定されていてもよい。この場合、条件選択画面1400は表示されなくてもよい。
【0059】
計算機システム101の割当て案算出部105は、作業員管理情報102から各作業員のデータを読み出す(ステップS1201)。
【0060】
計算機システム101の割当て案算出部105は、作業案件管理情報103から対象の作業案件のデータを読み出す(ステップS1202)。
【0061】
計算機システム101の割当て案算出部105は、条件管理情報104から選択された条件のデータを読み出す(ステップS1203)。
【0062】
計算機システム101の割当て案算出部105は、割当て案算出処理を実行する(ステップS1204)。
【0063】
割当て案算出処理では、例えば、公知の数理計画法のアルゴリズムを用いた処理が実行される。
【0064】
ここで、割当て案算出処理の一例を説明する。
【0065】
対象の作業案件の集合の元(一つの作業案件)をtと定義し、作業員の集合の元(一人の作業員)をwと定義し、決定変数x(t,w)を式(1)のように定義する。
【0066】
【0067】
ここで、決定変数x(t,w)は、作業案件tに作業員wを割り当てた場合、決定変数x(t,w)は1となり、それ以外は0となる。
【0068】
一つの作業案件に一人の作業員を割り当てるために、式(2)に示す制約式を設定する。
【0069】
【0070】
また、時期が重なる作業案件に、同じ作業員が割り当てられないようにするために、式(3)に示す制約式を設定する。
【0071】
【0072】
ここで、C(t1,t2)は作業案件t1、t2の時期が重なっている場合1となり、それ以外は0となる定数である。
【0073】
割当てを固定する指示にしたがうために、式(4)に示す制約式を設定する。
【0074】
【0075】
ここで、F(t,w)は作業案件tに作業員wを割り当てる指示がある場合1となり、それ以外は0となる定数である。
【0076】
作業員の技量(技能レベル)について割当て不可の指定について、式(5)に示す制約式を設定する。
【0077】
【0078】
ここで、N(t,i,j)は作業案件tについて、技量項目iの技量レベルjの不可フラグを表す。S(w,i,j)は、作業員wの、技量項目iの技量レベルがjの場合1となり、それ以外は0となる定数である。
【0079】
作業員の技量(評点)について割当て不可の指定について、式(6)に示す制約式を設定する。
【0080】
【0081】
ここで、T(t,i)は作業案件tについて、技量項目iのしきい値を表し、V(w,i)は、作業員wの、技量項目iの評点を表す。
【0082】
本実施例では、割当て案算出部105は、制約条件を満たし、かつ、式(7)に示す目的関数f(x)が最小となる、決定変数xの組合せを算出する。決定変数xの組合せが割当て案となる。
【0083】
【0084】
ここで、ekは条件kの評価関数を表し、Wkは条件kの重みを表す。評価関数ekは、割当て案における条件kの適合性を評価する関数である。
【0085】
本実施例では「技量レベル」、「評点」、「勤務状況」、「所在地の距離」、「過去の割当て履歴」、及び「割当て済み案件の変更数」の評価関数を以下のように設定する。
【0086】
「技量レベル」の評価関数は、作業員が作業案件に要求される技能を有していることを評価するための関数であり、式(8)で与える。
【0087】
【0088】
ここで、P(t、i、j)は作業案件tに、技量項目iに技能レベルがjである作業員を割り当てた場合のペナルティを表す。
【0089】
「評点」の評価関数は、作業員が作業案件に要求される技能を有していることを評価するための関数であり、式(9)で与える。
【0090】
【0091】
ここで、A
t,i及びB
t,iは、作業案件tにおける評価項目iの重要度から算出される傾き及び切片を表す。例えば、
図5Aの場合、A
t,iは式(10)のように表され、B
t,iは式(11)のように表される。
【0092】
【0093】
【0094】
「勤務状況」の評価関数は、作業員の勤務時間の短さを評価するための関数であり、式(12)で与える。
【0095】
【0096】
ここで、L(w)は作業員wの超過時間実績を表す。
【0097】
「所在地の距離」の評価関数は、作業員の移動負担の低さを評価するための関数であり、式(13)で与える。
【0098】
【0099】
ここで、D(t,w)は作業案件tの所在地と作業員wの所在地との間の距離を表す。
【0100】
なお、作業員が、ある作業案件を終えてから、自身の所在に戻ることなく次の作業案件に移動することを想定した場合、式(14)のような評価関数を設定できる。
【0101】
【0102】
ここで、t1<t2は、作業案件t1の後に作業案件t2が開始されることを表す。Dist(t1,t2)は作業案件t1、t2の所在地間の距離を表す。c(w,t1,t2)は、任意の二つの作業案件t1,t2(t1<t2)が一人の作業員wに割り当てられ、かつ、作業員wには作業案件t1,t2の間に他の作業案件が割り当てられていない場合、すなわち、二つの連続する作業案件t1,t2が割り当てられた場合1となり、それ以外は0となる。
【0103】
例えば、
図15に示すように作業員A、B、Cに作業案件が割り当てられている場合、c(A,1,2)は作業1、2が連続するため1となり、c(A,1,3)は作業1、3が連続しないため0となり、c(A,3,6)は作業3、6が連続するため1となる。
【0104】
c(w,t1,t2)は、決定変数x(t,w)に依存するため変数であり、式(15)、(16)、(17)の制約にしたがう。
【0105】
【0106】
【0107】
【0108】
ここで、Tは作業案件の総数を表す。式(15)に示す制約は、c(w,t1,t2)が1の場合、決定変数x(t1,w)、x(t2,w)がともに1である必要があり、c(w,t1,t2)が0の場合、決定変数x(t1,w)、x(t2,w)の少なくともいずれかが0でもよいことを表す。式(16)に示す制約は、c(w,t1,t2)が1の場合、二つの作業案件の間の割当ての総和(左辺)は0である必要があり、c(w,t1,t2)が0の場合、左辺は0以上でよいことを表す。式(17)に示す制約は、一人の作業員について、c(w,t1,t2)の総和が(割り当てられた作業案件の総数)-1以上でなければならないことを表す。
【0109】
「過去の割当て履歴」の評価関数は、作業経験を評価するための関数であり、式(18)で与える。
【0110】
【0111】
ここで、H(t,w)は、作業員wが、作業案件tの作業対象及び作業内容と同じ作業対象及び作業内容の作業案件の過去の実施回数を表す。HmaxはH(t,w)が取り得る値の最大値を表す。
【0112】
「割当て済み案件の変更数」の評価関数は、既に割り当て済みだった作業案件の作業員が、再割当てによって変更された程度を評価するための関数であり、式(19)で与える。「割当て済み案件の変更数」に関する重みは、割り当て済みの作業員を変更して、現状で最も望ましい割当て案を算出するか否かを調整するためのパラメータである。作業員の作業案件の割当てが頻繁に変わることを望まない場合、当該評価関数の重みは大きい値となる。
【0113】
【0114】
ここで、E(t,w)は作業案件tに作業員wが割当て済みの場合1となり、それ以外は0となる。
【0115】
割当て案算出部105は、目的関数f(x)が最小となる割当て案を一つだけ算出してもよいし、目的関数f(x)の値が小さい順に所定の数の割当て案を算出してもよい。なお、目的関数f(x)が最小となる割当て案を一つだけ算出できる計算方法を用いる場合でも、算出された割当て案を保存するとともに、当該割当て案を不可の制約に加えて、新たな割当て案を算出することによって、複数の割当て案を取得できる。
【0116】
図12の説明に戻る。計算機システム101の割当て案算出部105は、割当て案算出処理を実行した結果、提示可能な割当て案が存在するか否かを判定する(ステップS1205)。
【0117】
提示可能な割当て案が存在しない場合、計算機システム101の割当て案算出部105は、利用者入出力部106を介して、割当て案が存在しない旨を通知するメッセージを送信し(ステップS1206)、処理を終了する。
【0118】
提示可能な割当て案が存在する場合、計算機システム101の割当て案算出部105は、利用者入出力部106を介して、
図16に示すような割当て案を提示する(ステップS1207)。その後、計算機システム101は利用者からのフィードバックの待ち状態に移行する。
図16では、左から順に、目的関数の値が小さい割当て案が表示される。
【0119】
ここで、
図17A及び
図17Bを用いて、利用者からのフィードバックについて説明する。
【0120】
図17Aに示すように、利用者は、複数の割当て案の中から好ましい割当て案を選択することによって、当該割当て案を推奨割当て案として計算機システム101にフィードバックを行う。
図17Aでは、「案2」が推奨割当て案として選択される。
【0121】
図17Bに示すように、利用者は、割当て案を修正することによって推奨割当て案を作成し、推奨割当て案を計算機システム101にフィードバックを行う。なお、利用者は、自ら作成した推奨割当て案を入力してもよい。
図17Bでは、「案1」の作業案件「T003」の作業員が「W001」から「W006」に修正された推奨割当て案が作成される。
【0122】
利用者からのフィードバックを受け付けた場合(ステップS1208)、計算機システム101の重み更新部107は、各条件の重みを更新する(ステップS1209)。その後、計算機システム101は処理を終了する。
【0123】
具体的には、重み更新部107は、目的関数が最小の割当て案(案1)の決定変数の値と推奨割当て案の決定変数の値とを式(20)に代入することによって微分係数を算出する。さらに、重み更新部107は式(21)に基づいて重みを更新する。
【0124】
【0125】
【0126】
ここで、f(x1)は案1の目的関数を表し、f(xm)は推奨割当て案の目的関数を表す。係数αは0より大きい定数である。
【0127】
このように、推奨割当て案の目的関数が相対的に小さくなるように重みが更新される。言い換えると、(f(x1)-f(xm))が増加する方向に重みWkが更新される。なお、更新方法は一例であってこれに限定されない。推奨割当て案の目的関数が最小となる方向に重みを更新できる方法であればよい。
【0128】
なお、計算機システム101は、終了指示を受け付けるまで、利用者からのフィードバックを待ち続けてもよい。
【0129】
利用者からのフィードバックに基づいて重みを更新することによって、利用者の思想、意図を反映した割当て案が出力されることが期待される。
【0130】
計算機システム101は、各条件の重みの更新履歴を記録し、更新履歴に基づいて重みの推移を示す情報を提示してもよい。
図18は、実施例1の計算機システム101が重みの推移を提示するための画面の一例を示す図である。
【0131】
利用者は、画面1800を参照することによって、どの条件をより重視する傾向にあるかを把握することができる。
【0132】
なお、重みの更新は、作業案件の種別毎に行われてもよい。例えば、発電設備であれば、火力発電及び原子力発電等の種別である。計算機システム101は、重みの設定値を作業の種類別に保存し、種類別に割当て案算出処理を実行する。また、計算機システム101は、種類別に重みを更新する。これによって、作業の種類別に重みの推移を把握できる。複数の種類について、
図18に示すような画面を提示することによって、利用者は作業の種類毎に重視する条件の違いを把握できる。
【0133】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【0134】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
【0135】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Python、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
【0136】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【0137】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【0138】
101 計算機システム
102 作業員管理情報
103 作業案件管理情報
104 条件管理情報
105 案算出部
106 利用者入出力部
107 重み更新部
110 作業員管理システム
111 作業案件管理システム