以下、本発明の実施形態について図面を参照して説明する。
図1は、本発明の実施形態の作業実行条件策定支援装置1000の構成を示すブロック図である。
作業実行条件策定支援装置1000は、メモリ1001、記憶部1100、表示部1200、入力部1201、中央演算処理装置(CPU)1202及び通信部1203を備え、各部はデータバス1204を介して接続される。
表示部1200は、例えば、ディスプレイ等の表示装置であり、作業実行条件策定支援装置1000の処理の実行状況、作業結果等の情報を利用者へ表示する。入力部1201は、例えば、キーボード、マウス等の入力装置であり、利用者からの入力を受け付け、コンピュータに処理を指示する。CPU1202は、メモリ1001に格納される各種プログラム1002を実行する。
通信部1203は、LAN(Local Area Network)等を介して、他の装置との間で、各種データ及びコマンドを送受信する。記憶部1100は、作業実行条件策定支援装置1000が処理を実行するための各種データを格納する。メモリ1001は、作業実行条件策定支援装置1000が処理を実行する各種のプログラム1002及び一時的なデータを格納する。
記憶部1100は、リンククラス情報3(図3参照)、作業者クラスの属性情報4(図4参照)、作業クラスの属性情報5(図5参照)、リンククラスの制限情報6(図6参照)、補足条件情報15(図7参照)リンク情報7(図8参照)、作業者情報8(図9参照)、作業情報9(図10参照)、リンクの制限情報10(図11参照)、及び、履歴情報11(図12参照)を格納する。前述した各情報の詳細については図3から図12を用いて後述する。
メモリ1001は、プログラム1002として、ネットワーク表現クラス作成部1003、分類名受付部1004、入力画面作成部1005、条件クラス受付部1006、条件クラス作成部1007、パラメータ受付部1008、条件展開部1009及び作業結果算出部1010を格納する。
ネットワーク表現クラス作成部1003は、記憶部1100に格納された作業者クラスの属性情報4及び作業クラスの属性情報5に基づいて、リンククラス情報3を作成する。分類名受付部1004は、利用者が入力部1201を介して選択した「作業実行条件の分類名」を受け付ける。なお、「作業者クラス」「作業クラス」については、図2のネットワーク表現クラスの説明において後述する。また、「作業実行条件の分類名」については、図6の条件の分類602の説明において後述する。
入力画面作成部1005は、条件入力画面(図13A参照)及び作業者の組合せの内訳入力画面(図13B参照)を作成する。条件クラス受付部1006は、リンククラスの制限情報6を作成し、作成されたリンククラスの制限情報6を記憶部1100に格納する。
条件クラス作成部1007は、リンククラスの制限情報6のリンククラス数の制限からリンクの制限情報10のリンク数の制限を作成するために必要な補足条件を作成し、作成された補足条件をリンククラスの制限情報6に格納する。
パラメータ受付部1008は、利用者が入力したパラメータに基づいて、作業者情報8及び作業情報9を作成し、作成された各情報を記憶部1100に格納する。条件展開部1009は、リンク情報7及びリンクの制限情報10を作成し、作成された各情報を記憶部1100に格納する。なお、パラメータについては図2のステップS207において後述する。
作業結果算出部1010は、リンクの制限情報10を満たす作業計画を作成する。作業計画はステップS209の詳細説明において後述する。また、作業結果算出部1010は、作業実行の履歴を表す履歴情報11を作成し、作成された履歴情報11を記憶部1100に格納する。
図2は、本発明の実施形態の作業実行条件策定支援装置1000の基本的な処理を示すフローチャートである。
まず、図2に示すフローチャートについて説明する。なお、各ステップの処理の詳細については、図3から図12に示す各情報を説明した後に説明する
本実施形態の作業実行条件策定支援装置1000は、まず、作業者クラスと作業クラスとの間のリンククラスの集合の条件を策定し、その後、作業者クラスの属する各作業者ノードと作業クラスに属する各作業ノードとの間のリンクの集合の条件を作成する。
はじめに、作業実行条件策定支援装置1000は、作業者クラスと作業クラスとを作業の割当関係に基づいてリンククラスで結合し、作業者クラスと作業クラスとがリンククラスによって結合されたネットワーク表現クラスの情報を作成する。ここで、作業者クラスとは、同じ特徴(例えば、資格、勤務形態等)によってまとめられた作業者のグループであり、例えば、「正社員」「パートタイム従業員(資格A)」等である。
また、作業クラスとは、同じ内容、種類等によってまとめられた作業グループであり、例えば、「品質チェック」「運搬」等である。ここで、リンククラスとは、ネットワーク表現クラスにおいて、作業者クラスと作業クラスとを結合するリンクである。
そして、作業実行条件策定支援装置1000は、作成されたネットワーク表現クラスの条件(リンククラス数の制限等)を作成する。
まず、ステップS201において、ネットワーク表現クラス作成部1003は、記憶部1100に格納された作業者クラスの属性情報4及び作業クラスの属性情報5に基づいて、作業者クラスと作業者クラスが実行できる作業クラスとをリンクで結合したネットワーク表現クラスの情報(リンククラス情報3)を作成する。
次に、ステップS202において、分類名受付部1004は、記憶部1100に格納された「作業実行条件の分類名」(図示省略)を表示部1200を介して利用者に表示し、利用者が入力部1201を介して選択した分類名を受け付ける。
次に、ステップS203において、入力画面作成部1005は、S202において分類名受付部1004が受け付けた分類名に基づいて、後述する図13Aの条件入力画面及び後述する図13Bの作業者の組合せの内訳入力画面を作成する。
次に、ステップS204において、条件クラス受付部1006は、S203において入力画面作成部1005が作成した条件入力画面を表示部1200を介して利用者に表示し、利用者が入力部1201を介して入力した初期条件を受け付け、受け付けた初期条件に基づいて、リンククラスの制限情報6を作成し、作成されたリンククラスの制限情報6を記憶部1100に格納する。
次に、ステップS205において、条件クラス作成部1007は、S204において条件クラス受付部1006が受け付けた初期条件に基づいて、必要に応じて補足条件を作成し、作成された補足条件をリンククラスの制限情報6に格納する。
次に、ステップS206において、条件クラス作成部1007は、利用者から入力を終了する指示を受けたか否かを判定する。ステップS206において、入力を終了する指示を受けていないと判定された場合、条件クラス作成部1007は、入力を終了する指示を受けるまで、条件クラスの受付(ステップS204)及び条件クラスの作成(ステップS205)の処理を繰り返す。一方、ステップS206において、入力を終了する指示を受けたと判定された場合、条件クラス作成部1007は、ステップS207へ進む。
ステップS201からS206の処理によって、リンククラスの制限情報6が作成される。
次に、本実施形態の作業実行条件策定支援装置1000は、作業者クラスに属する各作業者ノードと作業クラスに属する各作業ノードとを作業の割当関係に基づいてリンクで結合し、作業者ノードと作業ノードとがリンクによって結合されたネットワーク表現インスタンスを作成する。そして、作業実行条件策定支援装置1000は、作成されたネットワーク表現インスタンスのリンク数の制限等を作成する。
まず、ステップS207において、パラメータ受付部1008は、記憶部1100から作業者クラスの属性情報4及び作業クラスの属性情報5を取得し、すべての作業者クラス及び作業クラスを利用者に表示し、利用者が入力した作業者クラスのパラメータ、及び、作業クラスのパラメータを受け付ける。ここで、作業者クラスのパラメータとは、例えば、作業者クラスに属する作業者の人数、作業者勤務時間帯等である。また、作業クラスのパラメータとは、例えば、作業クラスに属する作業の個数、作業の開始時刻等である。
次に、パラメータ受付部1008は、利用者が入力部1201を介して入力した作業者クラスのパラメータに基づいて、作業者情報8を作成し、作成された作業者情報8を記憶部1100に格納する。また、利用者が入力部1201を介して入力した作業クラスのパラメータに基づいて、作業情報9を作成し、作成された作業情報9を記憶部1100に格納する。
次に、ステップS208において、条件展開部1009は、リンククラス情報3、作業者情報8及び作業情報9に基づいて、各作業者ノードと各作業ノードとの対応関係を表すネットワーク表現インスタンスの情報(リンク情報7)を作成する。
また、条件展開部1009は、ステップS204、S205において、条件クラス受付部1006及び条件クラス作成部1007が作成したリンククラスの制限情報6に基づいて、ネットワーク表現インスタンスの条件(リンクの制限情報10)を作成し、作成されたリンクの制限情報10を記憶部1100に格納する。ステップS207からS208の処理によって、リンクの制限情報10が作成される。
次に、ステップS209において、作業結果算出部1010は、条件展開部1009によって作成されたリンクの制限情報10を満たす作業計画を作成し、作成された作業計画に基づいて作業が実行された場合の作業結果を作成し、作成された作業結果を表示部1200を介して利用者に表示する。なお、リンクの制限情報とは、作業ノードと作業者ノードを結ぶリンクの本数の制約条件である。作業計画の作成では、リンクの本数の制約条件を満たす解の候補及び最適解を割り当て候補から決定し得る任意の解法、例えば、線形計画法や制約論理プログラム(Constraint logic Programming)などを採用することができる。
次に、ステップS210において、作業結果算出部1010は、作成された作業結果、作業者情報8及び作業情報9に基づいて、作業実行の履歴を表す履歴情報11を作成し、作成された履歴情報11を記憶部1100に格納する。
以上の処理によって、作業実行条件策定支援装置1000は、利用者によって入力された初期条件を受け付け、リンククラス数の制限情報6を作成し、次に、リンク数の制限情報10を作成し、作成されたリンク数の制限情報10に基づいて、作業計画を作成し、作業計画に基づいて作業が実行された場合の作業結果を算出する。利用者(作業計画の設計者)は、算出された作業結果を参照することによって、初期条件を変更し、作業実行に必要な作業者数及び作業数を適切に設定することができる。
以下に、本実施形態の作業実行条件策定支援装置1000の記憶部1100に格納される各情報の詳細について、図3から図12を用いて説明する。
図3は、本発明の実施形態のリンククラス情報3の構成の例を示す説明図である。
リンククラス情報3は、作業者クラスと作業クラスとの対応関係を表したネットワーク表現クラスの情報であり、ネットワーク表現クラス作成部1003によって作成される。
リンククラス情報3は、リンククラスID31、作業者クラスID32及び作業クラスID33を含む。リンククラスID31は、リンクを一意に識別するための識別子である。作業者クラスID32及び作業クラスID33は、リンククラスID31によって識別されるリンククラスを形成する作業者クラスと作業クラスとの対応関係を示す。
作業者クラスID32は、作業者クラスを一意に識別するための識別子であり、作業者クラスの属性情報4の作業者クラスID41(図4参照)である。作業クラスID33は、作業クラスを一意に識別するための識別子であり、作業クラスの属性情報5の作業クラスID51(図5参照)である。
図4は、本発明の実施形態の作業者クラスの属性情報4の構成の例を示す説明図である
作業者クラスの属性情報4は、各作業者クラスの属性を示す情報であり、作業者クラスID41、名称42、資格43及び実行可能作業種類44を含む。
作業者クラスID41は、作業者クラスを一意に識別するための識別子である。名称42は、作業者クラスID41によって識別される作業者クラスの名称である。資格43は、作業者クラスID41によって識別される作業者クラスの資格である。ここで、資格とは、特定の団体及び国によって与えられる資格だけでなく、スキル及び能力(例えば、職位、実務経験年数等)を含んでもよい。
実行可能作業種類44は、作業者クラスID41によって識別される作業者クラスが実行できる作業クラスを識別するための識別子であり、作業クラスの属性情報5の作業クラスID51(図5参照)である。
図5は、本発明の実施形態の作業クラスの属性情報5の構成の例を示す説明図である。
作業クラスの属性情報5は、作業クラスの属性を示す情報であり、作業クラスID51及び作業種類52を含む。
作業クラスID51は、作業クラスを一意に識別するための識別子である。作業種類52は、作業クラスID51によって識別される作業クラスの作業内容である。
図6は、本発明の実施形態のリンククラスの制限情報6の構成の例を示す説明図である。
リンククラスの制限情報6は、ネットワーク表現クラスの条件に関する情報であり、例えば、リンククラス数の制限、リンククラス流量の制限等が含まれる。ネットワーク表現クラスの条件は、利用者から入力された初期条件に基づき、条件クラス受付部1006によって作成される。
リンククラスの制限情報6は、条件ID601、条件の分類602、対象リンククラスID603、リンククラス数の制限604、リンククラス流量の制限605、条件の種類606及び補足条件ID607を含む。条件ID601は、ネットワーク表現クラスの条件を一意に識別するための識別子である。条件の分類602は、図2のS202において利用者によって選択された「作業実行条件の分類名」である。なお、「作業実行条件の分類名」については、図6の条件の分類602の説明において後述する。
対象リンククラスID603は、リンククラス数の制限の対象となるリンククラスを一意に識別するための識別子であり、リンククラス情報3のリンククラスID31(図3参照)である。
リンククラス数の制限604は、対象リンククラスID603によって識別されるリンククラスの集合のリンククラス数の制限である。なお、リンククラス数の制限は、各レコードにおける対象リンククラスID603に格納されたリンククラスIDによって識別されるリンククラスの集合を対象とする。例えば、第1レコード608では、リンククラス数の制限の対象は、リンククラスID「4」「12」の合計2個のリンククラスの集合である。
リンククラス流量の制限605は、対象リンククラスID603によって識別されるリンククラスのリンククラス流量の制限である。ここで、リンククラス流量の制限とは、各リンククラスに対応する作業者クラスに属する作業者数の条件である。
なお、リンククラス流量の制限605には、条件の分類が「作業者の組合せ」の場合のみ、利用者によって必要に応じて指定されたリンククラス流量が格納される。条件の分類が「作業者の組合せ」以外の場合、リンククラス流量は指定されない。この場合、リンククラス流量の制限605には、リンククラス流量が指定されていないことを示す情報(例えば、「−」)が記録される。
リンククラス流量の制限605では、リンククラスIDとリンククラス流量とが、例えば、「(4,1以上)」のように表される。「(4,1以上)」内の「,」で区切られた左側の第1項は、流量の制限の対象となるリンククラスID「4」である。「,」で区切られた右側の第2項は、第1項で指定されたリンククラスの流量である。
これは、リンククラスID「4」に対応する作業者クラスID「1」から作業者を「1以上」指定するという条件である。なお、リンククラスIDによって識別されるリンククラスは、リンククラス情報3のリンククラスID31(図3参照)によって識別されるリンククラスIDである。
条件の種類606は、リンククラス数の制限の強さを示す情報(例えば、「制約」又は「評価」)である。作成された条件を必ず満足するように作業計画を作成する場合、条件は、例えば「制約」と設定される。一方、作成された条件を必ずしも満足しなくてもよい場合、条件は、例えば「評価」と設定される。
なお、作業結果算出部1010は、図2のS210において、設定された「制約」及び「評価」の情報を用い、作業計画を作成する。
補足条件ID607は、補足条件を識別するための識別子であり、補足条件情報15の補足条件ID151(図7参照)である。
ここで、条件の分類602に格納された値(「作業実行条件の分類名」)について説明する。作業実行条件は、リンク数の制限の対象とするリンク集合(作業者ノードと作業ノードとの割当関係)の作り方に基づいて分類される。本実施形態では、「作業実行条件の分類名」には、例えば、「作業者の組合せ」、「作業の組合せ」、「割当数(作業者/作業)」及び「連続作業数」がある。
第1に、「作業者の組合せ」(すなわち、必要な資格の組合せ)の条件は、複数の異なる作業者クラスと一つの作業クラスとの間のリンククラスの集合のリンククラス数の制限であり、換言すると、複数の異なる作業者クラスに属する作業者を一つの作業クラスに属する作業に割り当てる条件である。なお、「作業者の組合せ」の場合、各作業者クラスに属する作業者の数を指定してもよい。この場合、各作業クラスの作業者数を指定するため、リンククラス流量の制限を作成する。
例えば、第1レコード608のリンククラスID「4」「12」によって特定される作業者クラスは、図3を参照すると、「1」と「4」とである。一方、リンククラスID「4」「12」によって特定される作業クラスは「8」である。対象リンククラスID「4」「12」のリンククラス数の制限は「2に等しい」である。つまり、リンククラスID「4」「12」の各々は1本と設定される。
さらに、リンククラス流量の制限605によって、リンククラスID「4」については、流量が「1以上」であり、リンククラスID「12」については、流量が「2以上」であると制限されている。また、作業者クラスの属性情報4によると、作業者クラスID「1」は「正社員」であり、作業者クラスID「4」は「パートタイム従業員(資格なし)」である。
また、作業クラスの属性情報5によると、作業クラスID「8」は「特注品出荷」である。したがって、第1レコード608は、「正社員とパートタイム従業員(資格なし)とを特注品出荷に割り当てる。」かつ「正社員は1名以上、パートタイム従業員(資格なし)は2名以上を指定する。」という条件を表す。
第2に、「作業の組合せ」の条件は、一つの作業者クラスと複数の異なる作業クラスとの間のリンククラスの集合のリンククラス数の制限であり、すなわち、一つの作業者クラスに属する作業者を異なる各作業クラスの作業に割り当てる条件である
例えば、第2レコード609のリンククラスID「2」「3」によって特定される作業者クラスは、図3を参照すると、「1」である。一方、リンククラスID「2」「3」によって特定される作業クラスは「6」と「7」とである。対象リンククラスID「2」「3」のリンククラス数の制限は「2に等しい」である。また、作業クラスの属性情報5によると、作業クラスID「6」は「フォークリフト運搬」であり、作業クラスID「7」は「運搬」である。したがって、第2レコード609は、「同じ正社員をフォークリフト運搬と運搬との両方に割り当てる。」という条件を表す。
また、第3レコード610のリンククラスID「1」「4」によって特定される作業者クラスは、図3を参照すると、「1」である。一方、リンククラスID「1」「4」によって特定される作業クラスは「5」と「8」とである。対象リンククラスID「1」「4」のリンククラス数の制限は「1以下」である。作業クラスの属性情報5によると、作業クラスID「5」は「品質チェック」であり、作業クラスID「8」は「特注品出荷」である。したがって、第3レコード610は、「同じ正社員を品質チェックと特注品出荷とのどちらか一方の作業に割り当てる。」という条件を表す。
第3に、「割当数(作業)」の条件は、複数の異なる作業者クラスと一つの作業クラスとの間のリンククラスの集合のリンククラス数の制限であり、すなわち、複数の異なる作業者クラスに属する各作業者を一つの作業に割り当てる条件である。ただし、「割当数(作業)」の条件は、「作業者の組合せ」の条件とは異なり、作業者の資格を考慮しなくてよい。
例えば、第4レコード611のリンククラスID「4」「7」「10」「12」によって特定される作業者クラスは、図3を参照すると、「1」「2」「3」「4」である。一方、リンククラスID「4」「7」「10」「12」によって特定される作業クラスは「8」である。対象リンククラスID「4」「7」「10」「12」のリンククラス数の制限は「2以上」である。したがって、第4レコード611は、「正社員、パートタイム従業員(資格A)、パートタイム従業員(資格B)、パートタイム従業員(資格なし)から合わせて2人以上の作業者を指定し、指定された作業者を特注品出荷に割り当てる。」という条件を表す。
また、「割当数(作業者)」の条件は、一つの作業者クラスと複数の異なる作業クラスとの間のリンククラスの集合のリンククラス数の制限であり、すなわち、一つの作業者を複数の作業に割り当てる条件である。
第4に、「連続作業数」の条件は、一つの作業者クラスと一つの作業クラスとの間のリンククラスの集合のリンククラス数の制限であり、すなわち、一つの作業者を連続して実行できる作業に割り当てる条件である。
例えば、第5レコード612のリンククラスID「12」によって特定される作業者クラスは、図3を参照すると、「4」であり、作業クラスは「8」である。対象リンククラスID「12」のリンククラス数の制限は「1以下」である。したがって、第5レコード612は、「パートタイム従業員(資格なし)が実行する特注品出荷の連続作業数は1以下である。」という条件を表す。
図7は、本発明の実施形態の補足条件情報15の構成の例を示す説明図である
補足条件情報15は、図6に示したリンククラスの制限情報6に格納された補足条件の情報であり、ステップS205において条件クラス作成部1007によって作成される。補足条件の情報とは、リンククラス数の制限を、リンク数の制限に変換しやすくするための情報である。補足条件情報15は、補足条件ID151、対象リンククラスID152及び補足条件153を含む。
補足条件ID151は、補足条件を一意に識別するための識別子である。対象リンククラスID152は、補足条件ID151によって特定される補足条件の対象となる対象リンククラスを識別するための識別子であり、リンククラス情報3のリンククラスID31(図3参照)である。補足条件153は、対象リンククラスID152によって識別されるリンククラスの補足条件である。
図8は、本発明の実施形態のリンク情報7の構成の例を示す説明図である。
リンク情報7は、各作業者と各作業との対応関係を表したネットワーク表現インスタンスの情報であり、図2のステップS208において条件展開部1009によって作成される。
リンク情報7は、リンクID71、作業者ノードID72及び作業ノードID73を含む。なお、リンク情報7は、状態確定74を含んでもよい。リンクID71は、作業者ノードと作業ノードとの間のリンクを一意に識別するための識別子である。作業者ノードID72及び作業ノードID73は、リンクID71によって識別されるリンクを形成する作業者ノードと作業ノードとの対応関係を示す。作業者ノードID72は、作業者ノードを一意に識別するための識別子であり、作業者情報8の作業者ノードID81(図9参照)である。
作業ノードID73は、作業ノードを一意に識別するための識別子であり、作業情報9の作業ノードID91(図10参照)である。状態確定74は、作業結果算出部がリンクの制限情報10を用いて作業計画を作成する場合(図2のS209)、既に条件として使われた対象リンクであるのか否かを示す情報である。
図9は、本発明の実施形態の作業者情報8の構成の例を示す説明図である
作業者情報8は、各作業者ノードの情報であり、図2のステップS207において、利用者から受け付けたパラメータに基づき、パラメータ受付部1008によって作成される。作業者情報8は、作業者ノードID81、作業者クラスID82、名称83及び作業資格84を含む。また、必要に応じて、作業結果の評価値を算出するために必要な情報を含んでもよい。本実施形態では、作業者情報8は、労働開始時刻85、労働終了時刻86及び時間単位コスト87を含む。
作業者ノードID81は、作業者ノードを一意に識別するための識別子である。作業者クラスID82は、作業者ノードID81によって識別される作業者が属する作業者クラスを識別するための識別子であり、リンククラス情報3の作業者クラスID32(図3参照)である。
名称83は、作業者ノードID81によって識別される作業者の名称である。作業資格84は、作業者ノードID81によって識別される作業者の作業資格である。労働開始時刻85及び労働終了時刻86は、作業者ノードID81によって識別される作業者の労働の時間帯である。労働開始時刻85は、労働の開始時刻である。労働終了時刻86は、労働の終了時刻である。時間単位コスト87は、作業者ノードID81によって識別される作業者が作業を実行する場合の時間単位のコストである。
図10は、本発明の実施形態の作業情報9の構成の例を示す説明図である
作業情報9は、各作業ノードの情報であり、図2のステップS207において、利用者から受け付けたパラメータに基づき、パラメータ受付部1008によって作成される。作業情報9は、作業ノードID91、作業クラスID92、名称93、作業開始時刻94、作業終了予定時刻95及び関連作業ID96を含む。
作業ノードID91は、作業ノードを一意に識別するための識別子である。作業クラスID92は、作業ノードID91によって識別される作業が属する作業クラスを識別するための識別子であり、リンククラス情報3の作業クラスID33(図3参照)である。名称93は、作業ノードID91によって識別される作業の名称である。作業開始時刻94は、作業ノードID91によって識別される作業の開始時刻である。作業終了予定時刻95は、作業ノードID91によって識別される作業が他の作業によって中断されることなく連続して実行された場合の作業終了予定時刻である。
関連作業ID96は、作業ノードID91によって識別される作業と関連付けられている作業を識別するための識別子である。ここで、関連付けられている作業とは、例えば、同じ荷物(製品)に設定される作業である。具体的には、例えば、第2レコード97の「特注品出荷1」は「運搬2」に関連付けられている。
図11は、本発明の実施形態のリンクの制限情報10の構成の例を示す説明図である。
リンクの制限情報10は、リンク数の制限等を示す情報であり、図2のステップS208において条件展開部1009によって作成される。リンクの制限情報10は、条件ID101、対象リンクID102、リンク数の制限103、接続104及び条件の種類105を含む。
条件ID101は、リンクの制限情報10に格納された条件を一意に識別するための識別子である。対象リンクID102は、リンク数の制限対象となるリンクを一意に識別するための識別子であり、リンク情報7のリンクID71(図8参照)である。リンク数の制限103は、対象リンクID102によって一意に識別されるリンクの集合のリンク数の制限である。
ここで、リンク数の制限103は、各レコードにおける対象リンクID102に格納されたリンクIDによって識別されるリンクの集合を対象とする。接続104は、各条件を接続するための情報であり、接続される他の条件と、接続される条件を組み合せるための論理演算子とによって示される接続の情報である。例えば、第1レコード201の接続104には「(AND,2)」が格納されているので、条件「1」と条件「2」とは、「AND」によって接続された一つの条件である。
条件の種類105は、作成されたリンク数の制限の強さを示す情報(例えば、「制約」又は「評価」)である。作成されたリンク数の制限を必ず満足するように作業計画を作成する場合、条件は、例えば「制約」と設定される。一方、作成されたリンク数の制限を必ずしも満足しなくてもよい場合、条件は、例えば「評価」と設定される。
図12は、本発明の実施形態の履歴情報11の構成の例を示す説明図である。
履歴情報11は、作業結果に関する情報であり、図2のステップS210において作業結果算出部1010によって作成される。履歴情報11は、履歴ID111、作業者情報ID112、作業情報ID113、合計作業時間114、合計作業者数115及び合計作業数116を含む。また、必要に応じて、作業結果算出部1010において算出された作業結果の項目を含んでもよい。本実施形態では、履歴情報11は、合計コスト117を含む。
履歴ID111は、履歴情報11に格納された履歴情報を一意に識別するための識別子である。作業者情報ID112は、履歴ID111によって識別される履歴情報を作成するための基礎とした作業者情報を識別するための識別子である。例えば、作業実行条件策定支援装置1000に設定されている作業者情報8がファイルに書き込まれた場合、作業者情報IDは該ファイルに付与された識別子である。
作業情報ID113は、履歴ID111によって識別される履歴情報を作成するための基礎とした作業情報を識別するための識別子である。例えば、作業実行条件策定支援装置1000に設定されている作業情報9がファイルに書き込まれた場合、作業情報IDは該ファイルに付与された識別子である。
合計作業時間114は、作業結果算出部1010において作成された作業計画に基づいて算出された各作業に要した作業時間の合計(「合計作業時間」)である。合計作業者数115は、パラメータ受付部1008が受け付けた作業者数の合計(「合計作業者数」)である。合計作業数116は、パラメータ受付部1008が受け付けた作業数の合計である。合計コスト117は、作業結果算出部1010によって算出された、作業の実行に要するコストの合計値である。
<作業実行条件策定支援装置1000の処理の詳細>
ここで、再び、図2に戻り、本実施形態の作業実行条件策定支援装置1000が実行する各ステップの処理の詳細について説明する。
まず、ステップS201において、ネットワーク表現クラス作成部1003は、記憶部1100に格納された作業者クラスの属性情報4及び作業クラスの属性情報5に基づいて、リンククラス情報3を作成する。具体的には、作業者クラスの属性情報4の実行可能作業種類44に格納された作業クラスIDに基づいて、作業者クラスIDと作業者クラスが実行できる作業クラスIDとをリンククラスで結合することによって、リンククラス情報3を作成する。
次に、ステップS202において、分類名受付部1004は、「作業実行条件の分類名」を表示部1200を介して利用者に表示する。そして、分類名受付部1004は、入力部1201を介して、利用者によって選択された分類名を受け付ける。
ここで、「作業実行条件の分類」とは、作業と作業者との割当関係に応じて作業実行条件を分類したものである。「作業実行条件の分類」には、ネットワークの構造によって分類された次の五つがある。
第1は、作業者ノードの特定の集合と各作業ノードとの関係、である。
第2は、作業ノードの特定の集合と各作業者ノードとの関係、である。
第3は、特定の一つの作業者ノードと全作業ノードとの関係、である。
第4は、特定の一つの作業ノードと全作業者ノードとの関係、である。
第5は、特定の一つの作業者ノードと特定の一つの作業ノードの関係、である。
前述した五つの分類は、作業者ノードと作業ノードとの関係である。これらを、作業者クラスと作業クラスとの関係に書き換えると、次のとおりとなる。
第1は、作業を実行するための資格の組合せの条件である(例えば、一緒に作業を実行する作業者グループ、一緒に作業を実行しない作業者グループ等)。
第2は、特定の作業者が実行する作業の組合せの条件である(例えば、同じ作業者が実行する作業、同じ作業者が実行してはいけない作業等)。
第3は、特定の一人の作業者が実行できる作業数の条件である。
第4は、特定の一つの作業に必要な作業者数の条件である。
第5は、特定の一人の作業者が連続して実行する作業数の条件である。
本実施形態では、前述した五つの分類に対応する分類名(「作業実行条件の分類名」)は、それぞれ、「作業者の組合せ」、「作業の組合せ」、「割当数(作業者)」、「割当数(作業)」及び「連続作業数」である。分類名受付部1004は、これらの「作業実行条件の分類名」を利用者に表示し、利用者によって選択された「分類名」を受け付ける。
なお、リンククラスの制限情報6のリンククラス数の制限604は、作業者クラスと作業クラスとの間のリンククラスの集合のリンククラス数の制限である。このため「作業者の組合せ」の条件は、作業者クラス(資格)の組合せの条件を表すものであり、個々の作業者の組合せを指定する条件ではない。同様に、「作業の組合せ」の条件は、作業クラス(作業種類)の組合せの条件を表すものであり、個々の作業の組合せを指定する条件ではない。個々の作業者の組合せの条件、及び、個々の作業の組合せの条件は、ステップS208においてリンクの制限情報10が作成された後、作成されたリンクの制限情報10を満たす解(作業計画)を算出する過程において求めることができる。
次に、ステップS203において、入力画面作成部1005は、ステップS202において受け付けた分類名に基づいて、条件入力画面を作成する。なお、入力画面作成部1005は、まず、分類名受付部1004が受け付けた「作業実行条件の分類名」に関わらず、以下に説明する図13Aに示す条件入力画面を表示し、受け付けた分類名が「作業者の組合せ」である場合、さらに、後述する図13Bに示す内訳入力画面を表示する。
図13Aは、本発明の実施形態の条件入力画面の例を示す説明図である。
条件入力画面(又は、ウィンドウ)1211は、初期条件を受け付けるための画面である。条件入力画面1211は、作業者クラスの指定を受け付ける選択欄1212、作業クラスの指定を受け付ける選択欄1213、リンク数の制限を受け付ける入力欄1214、条件の種類の選択を受け付ける選択欄1215、及び、入力した条件を記憶部1100に格納するための登録ボタン1216を含む。
作業者クラスの選択欄1212には、作業者クラスの属性情報4に格納されている作業者クラスの名称42のすべてが表示され、利用者によって選択された作業者クラスが入力される。作業クラスの選択欄1213には、作業クラスの属性情報5に格納されている作業種類52のすべてが表示され、利用者によって選択された作業クラスが入力される。
リンク数の制限の入力欄1214は、制限の境界値入力欄1217及び制限を構成する演算子選択欄1218を含む。境界値入力欄1217には、作業者クラスの選択欄1212において選択された作業者クラスと作業クラスの選択欄1213において選択された作業クラスとの間のリンク数の制限が入力される。演算子選択欄1218には、制限の演算子(「以上」「等しい」「以下」)が表示され、利用者によって選択された演算子が入力される。
条件の種類の選択欄1215には、条件の強さを表す「制約」及び「評価」が表示され、利用者によって選択された「制約」又は「評価」が入力される。登録ボタン1216は、入力された初期条件を記憶部1100へ格納する指示を受け付けるボタンである。
図13Bは、本発明の実施形態の作業者の組合せの内訳入力画面の例を示す説明図である。
作業者の組合せの内訳入力画面は、作業者の組合せの内訳を入力するための画面である。作業者の組合せの内訳入力画面(又はウィンドウ)1221は、作業者の組合せの内訳の入力を受け付ける入力表1222及び登録ボタン1223を含む。
作業者の組合せの内訳の入力表1222の作業者クラスの名称1224には、図13Aの作業者クラスの選択欄1212で指定された作業者クラスの名称が表示される。作業者数の条件1225には、作業に割り当てられる各作業者クラスに属する作業者の数が利用者から入力される。登録ボタン1223は、入力された作業者数の条件を記憶部1100への格納する指示を受け付ける。
ここで、図2のステップS204に戻る。
ステップS204において、条件クラス受付部1006は、利用者によって入力された初期条件を受け付ける。具体的には、条件クラス受付部1006は、条件入力画面1211を介して利用者が入力した作業者クラス及び作業クラス、及び、作業者クラスと作業クラスとの間のリンク数の制限を受け付ける。また、リンク数の制限が必ず守らなければならない条件であるか、必ずしも守らなくてもよい条件であるかを示す条件の種類を受け付ける。また、条件クラス受付部1006は、作業者の組合せの内訳入力画面1221を介して利用者が入力した作業者の組合せの内訳を受け付ける。
次に、条件クラス受付部1006は、初期条件を受け付けると、受け付けた初期条件に基づいて、リンククラスの制限情報6を作成し、作成されたリンククラスの制限情報6を記憶部1100に格納する。
ここで、図13A及び図13Bを用いて、条件クラス受付部1006が利用者から受け付けた初期条件を図6に示したリンククラスの制限情報6に格納する処理の詳細について説明する。なお、ここでは、利用者によって選択された「分類名」は「作業者の組合せ」である。また、利用者から受け付けた初期条件は、「特注品出荷は、正社員及びパートタイム従業員(資格なし)で実行する。」かつ「正社員は1名以上、パートタイム従業員(資格なし)は2名以上で行う。」である。これらの条件は、ステップS204の処理によって、図6に示したリンククラスの制限情報6の第1レコード608に格納される。
例えば、条件クラス受付部1006は、リンククラスの制限情報6の第1レコード608を次のように作成する。まず、条件クラス受付部1006は、図13Aの登録ボタン1216が利用者によって操作されると、条件を一意に識別するための識別子を作成し、作成された条件ID(例えば、「1」)を図6の第1レコード608の条件ID601に格納する。次に、ステップS202において分類名受付部1004が受け付けた「作業実行条件の分類名」(例えば、「作業者の組合せ」)を図6の第1レコード608の条件の分類602に格納する。
次に、条件クラス受付部1006は、作業者クラスの選択欄1212において選択された作業者クラスの名称(例えば、「正社員」「パートタイム従業員(資格なし)」)を検索キーとして、記憶部1100に格納された作業者クラスの属性情報4のレコードを検索し、選択された作業者クラスに対応する作業者クラスID(例えば、「1」「4」)を取得する。次に、作業クラスの選択欄1213において選択された作業クラス(例えば、「特注品出荷」)を検索キーとして、記憶部1100に格納された作業クラスの属性情報5のレコードを検索し、選択された作業クラスに対応する作業クラスID(例えば、「8」)を取得する。
次に、条件クラス受付部1006は、取得した作業者クラスIDと作業クラスIDとの組み(例えば、「1」と「8」)を検索キーとして、記憶部1100に格納されたリンククラス情報3のレコードを検索し、これらの作業者クラスと作業クラスとを結合したリンククラスID(例えば、「4」)を取得する。条件クラス受付部1006は、作業者クラスの選択欄1212において選択された作業者クラスと作業クラスの選択欄1213において選択された作業クラスとのすべての組みに対して、前述したリンククラスIDを取得する処理を実行し、取得したリンククラスID(例えば、「12」)を6の第1レコード608の対象リンククラスID603に格納する。
次に、条件クラス受付部1006は、リンク数(割当数)の制限の入力欄1214の境界値入力欄1217及び制限の演算子選択欄1218に入力された値(例えば、「2」「等しい」)を図6の第1レコード608のリンククラス数の制限604に格納する。
また、分類名受付部1004が受け付けた分類名が「作業者の組合せ」であるので、条件クラス受付部1006は、図13Bの登録ボタン1223が利用者によって操作されると、「作業者の組合せ」の内訳を図6の第1レコード608のリンククラス流量の制限605に格納する。具体的には、条件クラス受付部1006は、作業者の組合せの内訳入力画面の作業者クラスの名称1224に入力された作業者クラスの名称(例えば、「正社員」)を検索キーとして、作業者クラスの属性情報4のレコードを検索し、入力された作業者クラスに対応する作業者クラスID(例えば、「1」)を取得する。
そして、取得した作業者クラスID(例えば、「1」)と、作業クラスの選択欄1213において選択された作業クラスID(例えば、「8」)との組みを検索キーとして、記憶部1100に格納されたリンククラス情報3のレコードを検索し、これらの作業者クラスと作業クラスとを結合したリンククラスID(例えば、「4」)を取得する。
次に、条件クラス受付部1006は、取得したリンクIDと、作業者の組合せの内訳入力画面の作業者数の条件1225に入力された条件との組みを図6の第1レコード608のリンククラス流量の制限605に格納する。最後に、条件クラス受付部1006は、図13Aの条件の種類の選択欄1215において選択された条件の種類(例えば、「制約」)を、図6の第1レコード608の条件の種類606に格納する。
次に、ステップS205において、条件クラス作成部1007は、ステップS202において分類名受付部1004によって受け付けられた分類名が「作業者の組合せ」である場合、補足条件を作成し、作成された補足条件を図6の第1レコード608の補足条件ID607に格納する。条件クラス作成部1007は、リンククラスの制限情報6を記憶部1100に格納する。なお、ステップS205における補足条件の作成の処理の詳細については図14を用いて後述する。
次に、ステップS206において、条件クラス作成部1007は、初期条件の入力を続ける指示、又は、初期条件の入力を終了する指示のいずれを受け付けたのか判定する。ステップS206において、初期条件の入力を続ける指示を受け付けたと判定された場合、条件クラス作成部1007は、ステップS204に戻り、初期条件を受け付ける。一方、ステップS206において、初期条件の入力を終了する指示を受け付けたと判定された場合、ステップS207へ進む。
ステップS202からS206によって、リンククラスの制限情報6が作成される。
次に、ステップS207において、パラメータ受付部1008は、リンククラス情報3に含まれる作業者クラス及び作業クラスのパラメータを受け付ける。ここで、パラメータとは、作業者クラス及び作業クラスの特徴であって、作業結果を算出するために必要な特徴である。具体的には、作業者クラスのパラメータには、作業者数がある。また、作業クラスのパラメータには、作業数、作業の開始時刻、終了予定時刻及び関連作業がある。また、パラメータには、このほかにも、コストを計算するための作業者の勤務時間帯、作業コスト等を含んでもよい。
本実施形態では、パラメータ受付部1008は、作業者クラスのパラメータとして、作業者数、労働開始時刻、労働終了時刻、及び時間単位コストを受け付ける。また、作業クラスのパラメータとして、作業数、開始時刻、終了予定時刻及び関連作業IDを受け付ける。
パラメータ受付部1008は、各種パラメータを受け付けると、作業者情報8及び作業情報9を作成する。例えば、利用者から、作業者クラスのパラメータとして、作業者クラスID「1」に属する作業者の人数(例えば、「正社員1」「正社員2」の2人)と作業者の属性(名称、作業資格等)が入力されると、図8の第1レコード88及び第2レコード89が作成される。また、作業クラスのパラメータとして、作業クラスID「8」に属する作業の数(例えば、「特注品出荷1」「特注品出荷2」の2件)と作業の属性(開始時刻、終了予定時刻等)が入力されると、図9の第2レコード97、第6レコード98が作成される。
次に、ステップS208において、条件展開部1009は、ステップS201において作成されたネットワーク表現クラス、及び、ステップS207において作成された作業者情報8及び作業情報9に基づいて、リンク情報7を作成する。そして、条件展開部1009は、ステップS204及びステップS205において作成されたリンククラスの制限情報6から、リンクの制限情報10を作成する。なお、ステップS208における条件の展開の処理の詳細については図15を用いて後述する。
ステップS207からS208によって、リンク情報7及びリンクの制限情報10が作成される。
次に、ステップS209において、作業結果算出部1010は、ステップS208において作成されたリンクの制限情報10を満たす解を算出し、算出された解に基づいて作業が実行された場合の作業結果を算出し、算出された作業結果を表示部1200を介して利用者へ表示する。ここで、算出された解とは、設定された条件を考慮した作業計画であり、割り当て候補から解の候補及び最適解を決定し得る任意の解法、例えば、線形計画法や制約論理プログラム(Constraint logic Programming)などを用いて算出する。また、作業結果算出部1010は、ステップS207において受け付けたパラメータ及び作業計画に基づいて、作業者の作業時間合計及び作業コスト合計を算出する。
例えば、本実施形態では、ステップS207において作業者クラスのパラメータとして作業者の時間単位コストを受け付けているので、作業結果算出部1010は、作成された作業計画から作業者の割当数及び作業所要時間の合計を算出し、作業所要時間に作業に割当てられた作業者の単位時間当たりのコストをかけることによって、作業コストを算出する。
最後に、ステップS210において、作業結果算出部1010は、ステップS209において作成された作業結果に基づいて履歴情報11を作成し、作成された履歴情報11を記憶部1100に格納する。そして、作業実行条件策定支援装置1000は、一連の処理を終了する。ステップS209からS210によって、作業計画及び履歴情報11が作成される。
<補足条件を作成する処理の詳細>
次に、条件クラス作成部1007が補足条件を作成する処理(図2のステップS205)の詳細について説明する。図2のステップS205において、条件クラス作成部1007は、条件クラス受付部1006において受け付けた条件に基づいて、補足条件を作成する。補足条件とは、「作業者の組合せ」の条件を作成する場合において、リンククラスの制限情報6を、リンクの制限情報10に展開しやすくするための条件である。
リンククラス情報3で表されるネットワーク表現クラス上の作業者クラスID「1」「2」「3」「4」のそれぞれと作業クラスID「8」とを結合したリンククラスの「4」「7」「10」「12」のリンククラス数の制限が「3以上」である場合、このリンククラス数の制限は、「正社員、パートタイム従業員(資格A)、パートタイム従業員(資格B)、パートタイム従業員(資格なし)の作業者クラスのうち、3つ以上の作業者クラスから作業者を選択して、選択された作業者が特注品出荷を実行する。」である。
ここで、利用者が、パラメータとして、それぞれの作業者クラスに複数の作業者が含まれると設定すると、各作業者の組合せの数が多くなる。よって、各作業者の組合せのすべてを列挙し、それらのいずれかを選択するという条件を作成すると、考慮すべき条件が多く、解の算出が難しくなる。このため、本実施形態では、各作業者クラスの組合せを作成し、各作業者クラスの組合せの補足条件を作成する。
例えば、前述した例では、考えられる作業者クラスの組合せは、作業者クラスID「1」「2」「3」、「1」「2」「4」、「1」「3」「4」又は「2」「3」「4」の4通りである。このため、これら4通りの作業者クラスの組合せそれぞれに含まれる作業者クラスの集合のリンククラス数の制限を「1以上」と設定した次の四つの補足条件を作成する。
第1は、作業者クラスID「1」「2」「3」それぞれの作業者クラスと作業クラスID「8」とを結合したそれぞれのリンククラスのリンククラス数を「1以上」とする補足条件である。
第2は、作業者クラスID「1」「2」「4」それぞれの作業者クラスと作業クラスID「8」とを結合したそれぞれのリンククラスのリンククラス数を「1以上」とする補足条件である。
第3は、作業者クラスID「1」「3」「4」それぞれの作業者クラスと作業クラスID「8」とを結合したそれぞれのリンククラスのリンククラス数を「1以上」とする補足条件である。
第4は、作業者クラスID「2」「3」「4」それぞれの作業者クラスと作業クラスID「8」とを結合したそれぞれのリンククラスのリンククラス数を「1以上」とする補足条件である。
そして、作成された第1から第4の各補足条件を演算子「OR」で結合する。結合された条件が最終的な補足条件である。
図14は、本発明の実施形態の条件クラスの作成(ステップS205)の処理の詳細を示すフローチャートである。
まず、ステップS131において、条件クラス作成部1007は、記憶部1100に格納されたリンククラスの制限情報6から、一つの条件(例えば、第1レコード608)を選択する。
次に、ステップS132において、条件クラス作成部1007は、S131において選択された条件(レコード)の条件の分類602が「作業者の組合せ」であるか否かを判定する。ステップS132において、条件の分類602が「作業者の組合せ」であると判定された場合、対象リンククラスの補足条件を作成しなければならないので、条件クラス作成部1007は、補足条件を作成するステップS133以降の処理に進む。一方、ステップS132において、条件の分類602が「作業者の組合せ」でないと判定された場合、条件クラス作成部1007は、ステップS138に進む。
ステップS133において、条件クラス作成部1007は、S131において選択された条件の対象リンククラスID603及びリンククラス数の制限604を参照し、対象リンククラスID603に含まれる対象リンククラスの数が、リンククラス数の制限604の境界値と等しいか否かを判定する。
S133において、対象リンククラスの数がリンククラス数の制限604の境界値と等しいと判定された場合、対象リンククラスを一意に組み合わせることができるので、条件クラス作成部1007は、ステップS134に進む。一方、S133において、対象リンククラスの数がリンククラス数の制限604の境界値と等しくないと判定された場合、対象リンククラスの組み合わせが何通りかできるので、条件クラス作成部1007は、ステップS135に進む。
例えば、図6の第1レコード608は、対象リンククラスID603に含まれるリンククラスの数が2個、リンククラス数の制限604の境界値が「2」であるので、ステップS134が実行される。一方、図6の第6レコード613は、対象リンククラスID603に含まれるリンククラスの数が4個、リンククラス数の制限604の境界値が「3」であるので、ステップS135が実行される。
次に、ステップS134において、条件クラス作成部1007は、S131において選択された条件の対象リンククラスID603に含まれる各リンククラスの補足条件を作成する。なお、リンククラス数の制限604に格納されている演算子が「以上」又は「等しい」である場合、条件クラス作成部1007は、補足条件を「1以上」と設定する。そして、各リンククラスの各補足条件を演算子「AND」で結合する。一方、リンククラス数の制限604に格納されている演算子が「以下」である場合、補足条件を「1以下」と設定する。
例えば、図6の第1レコード608は、対象リンククラスID603に含まれるリンククラスは「4」「12」であり、リンククラス数の制限604が「2に等しい」ので、リンククラスID「4」の補足条件を「1以上」と設定し、リンククラスID「12」の補足条件を「1以上」と設定する。
ステップS135において、条件クラス作成部1007は、S131において選択された条件の対象リンククラスID603に含まれるリンククラスの組合せを作成する。なお、リンククラス数の制限604に格納された演算子が「以上」又は「等しい」である場合、条件クラス作成部1007は、組合せに含まれるリンククラスの数が、リンククラス数の制限604に格納された境界値と同じとなる組合せをすべて作成する。
例えば、図6の第6レコード613は、対象リンククラスID603に含まれるリンククラスは「4」「7」「10」であり、リンククラス数の制限604が「2以上」であるので、リンククラスID「4」「7」「10」から2本を選ぶ組合せが3通り作成される。つまり、リンククラスID「4」「7」を含む「組合せ1」、リンククラスID「4」「10」を含む「組合せ2」、リンククラスID「7」「10」を含む「組合せ3」である。
一方、リンククラス数の制限604に格納された演算子が「以下」である場合は、条件クラス作成部1007は、組合せに含まれるリンククラスの数が、対象リンククラスID603に格納されたリンククラス数からクラス数の制限604に格納された境界値を減じた数と同じとなる組合せをすべて作成する。
例えば、リンククラスID「4」「7」「10」のリンククラス数の制限が「2以下」となる場合、条件クラス作成部1007は、リンククラスID「4」を含む「組合せ1」、リンククラスID「7」を含む「組合せ2」、リンククラスID「10」を含む「組合せ3」の3通りの組合せを作成する。
このような処理を行う目的は、作成する条件数を抑えるためである。例えば、上記例である「リンククラスID「4」「7」「10」のリンククラス数を2以下とする」条件を個々のリンククラスに対する制限で表すためには、いずれか二つのリンククラスの数をそれぞれ1以下とするだけでなく、残った一つのリンククラスの数を0とする必要がある。
これは単に、リンククラスID「4」「7」「10」のいずれか一つのリンククラス数を0とする条件と等しい。このため、演算子が「以下」の条件の場合は、リンククラス数を0とするリンククラスのパターンを作成し、以降で示すように、それらのリンククラス数を0とする条件を作成する。
次に、ステップS136において、条件クラス作成部1007は、ステップS135において作成された一つの組合せに含まれる各リンククラスの補足条件を作成し、作成された各補足条件を演算子「AND」で結合する。また、作成された他の組合せについても同様に補足条件を作成する。そして、条件クラス作成部1007は、異なる組合せから作成された補足条件を演算子「OR」で結合する。
ここで、条件クラス作成部1007は、リンククラス数の制限604に格納されている演算子が「以上」の場合、組合せに含まれる各リンククラスの補足条件を「1以上」と設定する。また、演算子が「等しい」の場合、組合せに含まれる各リンククラスの補足条件を「1に等しい」、かつ、組合せに含まれない各リンククラスの補足条件を「0に等しい」と設定する。また、演算子が「以下」の場合、補足条件を「0に等しい」と設定する。
例えば、図6の第6レコード613では、リンククラス数の制限604の演算子は「以上」であるので、条件クラス作成部1007は、ステップS135において作成された3通りの組合せに含まれる各リンククラスの補足条件を「1以上」と設定し、設定された各リンククラスの各補足条件を「AND」で結合する。
つまり、リンククラスID「4」「7」を含む「組合せ1」においては、「リンククラスID「4」のリンククラス数は1以上」かつ「リンククラスID「7」のリンククラスの数は1以上」とする補足条件が作成される。同様に、リンククラスID「4」「10」を含む「組合せ2」、リンククラスID「7」「10」を含む「組合せ3」に含まれる各リンククラスの補足条件を設定し、設定された各リンククラスの各補足条件を「AND」で結合する。そして、「組合せ1」「組合せ2」「組合せ3」に設定された各補足条件の組みを「OR」で結合する。
ステップS137において、条件クラス作成部1007は、ステップS134又はステップS136において設定された補足条件を記憶部1100の補足条件情報15に格納する。
具体的には、条件クラス作成部1007は、補足条件を一意に識別するための識別子を作成し、作成された補足条件IDを補足条件情報15の補足条件ID151に格納する。次に、条件クラス作成部1007は、補足条件の対象となるリンククラスすべてを対象リンククラスID152に格納する。次に、条件クラス作成部1007は、ステップS134又はステップS136において設定された各補足条件を補足条件153に格納する。
この場合、補足条件153の値は、対象リンククラスIDとリンククラス数の制限とが、例えば、「(4,1以上)」のように表される。「(4,1以上)」内の「,」で区切られた左側の第1項は、対象リンククラスIDである。「,」で区切られた右側の第2項は、対象リンククラスのリンククラス数の制限である。なお、一つのレコードに複数の補足条件が格納されている場合、各補足条件は「AND」で結合されていることを示す。
例えば、図7の第1レコード154の補足条件153に示されるとおり、対象リンククラスID「4」「12」の各補足条件は「AND」で結合される。そして、図7の第1レコード154の補足条件ID「1」は、図6の第1レコード608の補足条件ID607に格納される。
また、図6の第6レコード613の対象リンククラスID「4」「7」を含む「組合せ1」、リンククラスID「4」「10」を含む「組合せ2」、リンククラスID「7」「10」を含む「組合せ3」の各補足条件は、それぞれ、図7の第2レコード155、第3レコード156、第4レコード157に格納される。「組み合せ1」に含まれる各リンククラス(「4」「7」)の補足条件は「AND」で結合される。「組み合せ2」「組み合せ3」についても同じである。
そして、図7の第2レコード155、第3レコード156、第4レコード157に格納された各補足条件(補足条件「2」「3」「4」)は、図6の第6レコード613の補足条件ID607に格納される。なお、格納された補足条件「2」「3」「4」は、「OR」で結合される。
ステップS138において、条件クラス作成部1007は、リンククラスの制限情報6に含まれるすべての条件に対して処理を実行したか否かを判定する。
ステップS138において、すべての条件に対して処理を実行していないと判定された場合、条件クラス作成部1007は、S131を実行する。一方、ステップS138において、すべての条件に対して処理を実行したと判定された場合、条件クラス作成部1007は、処理を終了する。
<条件の展開の処理の詳細>
図15は、本発明の実施形態の条件の展開(ステップS208)の処理の詳細を示すフローチャートである。
ステップS208(図2)において、条件展開部1009は、条件クラス受付部1006及び条件クラス作成部1007が作成したリンククラスの制限情報6及び補足条件情報15と、パラメータ受付部1008が作成した作業者情報8及び作業情報9に基づいて、リンクの制限情報10を作成する。ステップS208の詳細な処理については次のとおりである。
まず、ステップS141において、条件展開部1009は、リンククラス情報3、作業者情報8及び作業情報9に基づいて、各作業者ノードと各作業者ノードが実行できる各作業ノードとがリンクで結合されたリンク情報7を作成する。
例えば、条件展開部1009は、作業者クラスID「1」と作業クラスID「8」とを検索キーとして、リンククラス情報3のレコードを検索する。検索キーに対応するリンククラスIDが取得された場合、作業者クラスID「1」に属する作業者は、作業クラスID「8」に属する作業を実行できるので、条件展開部1009は、作業者クラスID「1」に属する各作業者と作業クラスID「8」に属する各作業との間にリンクを作成する。
具体的には、図9から作業者クラスID「1」に属する作業者ノードID「1」「2」を選択し、図10から作業クラスID「8」に属する作業ノードID「11」「15」を選択し、選択された各作業者ノードIDと各作業ノードIDとの間にリンクを作成し、作成されたリンクを図8のリンク情報7に格納する。ステップS141において作成されたリンク情報7は、記憶部1100に格納される。
ステップS142において、条件展開部1009は、記憶部1100に格納されたリンククラスの制限情報6から条件を一つ選択する。
ステップS143において、条件展開部1009は、ステップS142において選択されたリンククラス数の制限及び補足条件に基づいて、リンクの制限情報10を作成し、作成されたリンクの制限情報10を記憶部1100に格納する。
ステップS144において、条件展開部1009は、リンククラスの制限情報6に格納されたすべての条件に対して処理を実行したか否かを判定する。ステップS144において、すべての条件に対して処理を実行したと判定された場合、条件展開部1009は処理を終了する。一方、ステップS144において、すべての条件に対して処理を実行していないと判定された場合、条件展開部1009は、ステップS142を実行する。
ステップS143において、条件展開部1009が実行するリンク数の制限を作成する各処理は、ステップS142において選択されたレコードの条件の分類602によって異なる。以下に、条件の分類602の値が「作業者の組合せ」、「作業の組合せ」、「割当数(作業者)」、「割当数(作業)」及び「連続作業数」である場合のステップS143の処理の詳細について説明する。
<1 作業者の組合せの場合>
作業者の組合せの条件は、各作業者クラスに属する作業者と特定の一つの作業クラスに属する一つの作業との間のリンクの集合のリンク数の制限である。作業者の組合せの条件には、作業者クラスの種類(資格)の組合せの条件と、各作業者クラスから所定の作業者数を割り当てる条件との二つがある
条件展開部1009は、補足条件に基づいて、「作業者クラスの種類の組合せ」の条件を作成し、必要に応じ、リンククラス流量の制限に基づいて、「作業者クラスの作業者数」の条件を作成する。「作業者クラスの作業者数」の条件を作成する場合、条件展開部1009は、取得したリンクのリンク数の制限をリンククラス流量の制限と同じ値に設定する。
<1−1 作業者クラスの種類の組合せ>
条件展開部1009は、特定の一つの作業クラスから取得した作業ノードIDのうちの一つを選択し、選択された作業ノードIDと取得した作業者ノードIDとのすべての組みを作成し、作成された各組みを検索キーとして、リンク情報7からリンクIDを取得する。
ステップS142においてリンククラスの制限情報6から選択された条件の分類が「作業者の組合せ」である場合、条件展開部1009は、まず、補足条件IDを検索キーとして、補足条件情報15から対象リンククラスID152及び補足条件153を取得する。
次に、条件展開部1009は、補足条件153に格納された各補足条件に基づいて、リンク数の制限を作成する。具体的には、補足条件153に格納された補足条件を一つ選択し、選択された補足条件の第1項目に記載されたリンククラスIDを検索キーとして、リンククラス情報3のレコードを検索し、検索キーとしたリンククラスIDに対応する作業者クラスIDと作業クラスIDとの組みを取得する。次に、取得した作業者クラスID及び作業クラスIDのそれぞれを検索キーとして、作業者情報8及び作業情報9のレコードを検索し、検索キーとした作業者クラスID及び作業クラスIDに対応する作業者ノードID及び作業ノードIDを取得する。
具体的には、例えば、ステップS142において図6の第1レコード608が選択された場合、条件展開部1009は、第1レコード608に格納された補足条件「1」を検索キーとして、補足条件情報15から、対象リンククラスID「4」「12」、及び、補足条件「(4,1以上)」「(12,1以上)」を取得する。
次に、二つの補足条件「(4,1以上)」「(12,1以上)」の第1項に示されたリンククラスID「4」「12」を検索キーとして、リンククラス情報3から、作業者クラスID「1」「4」、作業クラスID「8」を取得する。
次に、条件展開部1009は、作業クラスID「8」を検索キーとして、作業情報9から、作業ノードID「11」「15」を取得し、取得した作業ノードIDのうち一つを選択し、選択された作業ノードIDと取得した作業者クラスID「1」に属する作業者ノードとの間のリンクの集合、及び、選択された作業ノードIDと取得した作業者クラスID「4」に属する作業者ノードとの間のリンクの集合のリンク数の制限を作成する。ここでは、作業ノードID「11」が選択された場合について説明する。
まず、条件展開部1009は、作業者クラスID「1」を検索キーとして作業者情報8から、作業者ノードID「1」「2」を取得する。作業ノードID「11」が選択されているので、次に、取得した作業者ノードID「1」と選択された作業ノードID「11」とを検索キーとして、リンク情報7からリンクID「6」を取得する。また、取得した作業者ノードID「2」と選択された作業ノードID「11」とを検索キーとして、リンク情報7からリンクID「13」を取得する。次に、条件展開部1009は、リンクID「6」「13」のリンク数の制限を作成する。
例えば、条件展開部1009は、リンクの制限情報10の第1レコード201を次のように作成する。まず、条件展開部1009は、リンク数の制限を一意に識別する条件IDを作成して、作成された条件ID(例えば、「1」)を条件ID101に格納する。次に、取得したリンクID「6」「13」を対象リンクID102に格納する。また、リンククラスID「4」の補足条件が「(4,1以上)」であるので、取得したリンクID「6」「13」のリンク数の制限を「1以上」と設定し、「1以上」をリンク数の制限103に格納する。また、図6の第1レコード608の条件の種類606と同じ値(「制約」)を条件の種類105に格納する。
次に、条件展開部1009は、作業者クラスID「4」を検索キーとして、作業者情報8から、作業者ノードID「7」「8」「9」を取得する。作業ノードID「11」が選択されているので、次に、取得した作業者ノードID「7」と選択された作業ノードID「11」とを検索キーとして、リンク情報7からリンクID「23」を取得する。また、取得した作業者ノードID「8」と選択された作業ノードID「11」とを検索キーとして、リンク情報7から、リンクID「25」を取得する。また、取得した作業者ノードID「9」と選択された作業ノードID「11」とを検索キーとして、リンク情報7からリンクID「27」を取得する。次に、条件展開部1009は、取得したリンクID「23」「25」「27」のリンク数の制限を作成する。
例えば、条件展開部1009は、リンクの制限情報10の第2レコード202を次のように作成する。まず、条件ID(例えば、「2」)を条件ID101に格納し、取得したリンクID「23」「25」「27」を対象リンクID102に格納する。また、リンククラスID「12」の補足条件が「(12,1以上)」であるので、取得したリンクID「23」「25」「27」のリンク数の制限を「1以上」と設定し、「1以上」をリンク数の制限103に格納する。
なお、リンククラスID「4」「12」のリンククラス数の制限が「2に等しい」であるので、リンククラスID「4」の条件「1」とリンククラスID「12」の条件「2」は同時に満たされなければならない。したがって、条件展開部1009は、これら二つの条件を「AND」で結合する。この場合、条件展開部1009は、例えば、第1レコード201の接続104に(AND,2)を格納する。これによって、条件「1」と「2」とが「AND」で結合される。
以上によって、一つの作業ノード(作業ノードID「11」)の作業者の組合せの条件が作成される。前述した例では、図6の第1レコード608の補足条件「1」に基づいて、図11に示した第1レコード201及び第2レコード202が作成される。
同様にして、条件展開部1009は、特定の一つの作業クラスに属する他の作業ノードを選択し、選択された他の作業ノードと作業者ノードとのリンクのリンク数の制限を作成する。具体的には、作業クラスID「8」に属する他の作業ノードID「15」を選択し、選択された作業ノードID「15」と作業者ノードID「1」「2」とのリンク、及び、選択された作業ノードID「15」と「7」「8」「9」とのリンクのリンク数の制限を、前述した処理によって作成する。なお、作業ノードID「15」が選択された場合、リンクID「7」「14」のリンク数の制限が図11の第3レコード203に示される。また、リンクID「24」「26」「28」のリンク数の制限が図11の第4レコード204に示される。
また、次に、条件展開部1009が、リンククラスの制限情報6の第6レコード613に格納された補足条件に基づいて、リンク数の制限を作成する処理について説明する。リンク数の制限を作成する処理は、前述した処理と同じである。ただし、第6レコード613では、リンククラスの組合せが複数あるので、リンククラスの組合せは一意に決まらない。このため、考えられるすべての組合せの補足条件ID(例えば、「2」「3」「4」)がある。各補足条件に基づいて作成されるリンク数の制限は「OR」で結合される。
なお、第6レコード613の補足条件「2」「3」「4」から、補足条件の対象となる作業クラスID「8」が取得される。作業クラスID「8」に属する各作業ノードには作業ノードID「11」「15」があるが、このうち、作業ノードID「11」が選択された場合について説明する。
条件展開部1009は、図7の第2レコード155(補足条件「2」)に格納されたリンククラスID「4」「7」を含む「組合せ1」の補足条件に基づいて、図11の第13レコード213から第14レコード214を作成する。なお、第13レコード213と第14レコード214とは、「AND」によって結合される。
また、条件展開部1009は、図7の第3レコード156(補足条件「3」)に格納されたリンククラスID「4」「10」を含む「組合せ2」の補足条件に基づいて、図11の第15レコード215から第16レコード216を作成する。なお、第15レコード215と第16レコード216とは、「AND」によって結合される。
また、条件展開部1009は、図7の第4レコード157(補足条件「4」)に格納されたリンククラスID「7」「10」を含む「組合せ3」の補足条件に基づいて、図11の第17レコード217から第18レコード218を作成する。第17レコード217と第18レコード218とは、「AND」によって結合される。
最後に、条件展開部1009は、第13レコード213と第15レコード215と第17レコード217とを「OR」で結合し、これらが結合されていることを示す情報を第19レコード219に格納する。第19レコード219に格納された条件が補足条件「2」「3」「4」に基づいて作成された最終的な条件である。
<1−2 各作業者クラスの作業者数>
作業者の組合せの条件のうちの各作業者クラスの作業者数の条件を作成する処理について説明する。各作業者クラスの作業者数の条件は、リンククラスの制限情報6のリンククラス流量の制限605に基づいて作成される。
条件展開部1009は、リンククラス流量の制限605に格納された条件に基づいて、リンク数の制限(一つの作業クラスから指定される作業者の数)を作成する。リンククラス流量の制限605に格納されたリンククラスIDを検索キーとして、リンククラス情報3から作業者クラスID及び作業クラスIDを取得する。
次に、条件展開部1009は、取得した作業者クラスID及び作業クラスIDを検索キーとして、作業者情報8及び作業情報9から作業者クラスに属する各作業者ノードIDと作業クラスに属する各作業ノードIDとを取得する。
次に、条件展開部1009は、取得した作業ノードIDから作業ノードIDを一つ選択し、選択された作業ノードIDと作業者ノードIDとのすべての組みを作成し、作成された各組みを検索キーとして、リンク情報7からリンクIDを取得する。
次に、条件展開部1009は、取得したリンクIDの集合のリンク数の制限を、リンククラス流量の制限605に格納されたリンククラス流量と同じ値に設定する。
具体的には、例えば、ステップS142において図6の第1レコード608が選択された場合、第1レコード608には、リンククラス流量の制限が格納されているので、条件展開部1009は、リンククラス流量の制限「(4,1以上)(12,2以上)」に基づいて、リンク数の制限を作成する。
まず、条件展開部1009は、リンククラスID「4」を検索キーとして、リンククラス情報3から作業者クラスID「1」と作業クラスID「8」を取得する。次に、条件展開部1009は、作業者クラスID「1」と作業クラスID「8」とをそれぞれ検索キーとして、作業者情報8及び作業情報9から、作業者ノードID「1」「2」、作業ノードID「11」「15」を取得する。
次に、条件展開部1009は、取得した作業ノードIDのうち、一つを選択する。ここでは、作業ノードID「11」が選択された場合を説明する。条件展開部1009は、取得した作業者ノードID「1」「2」と選択された作業ノードI「11」とを検索キーとして、リンク情報7からリンクID「6」「13」を取得する。条件展開部1009は、取得したリンクID「6」「13」のリンク数の制限を作成する。
例えば、条件展開部1009は、リンクの制限情報10の第20レコード220を次のように作成する。まず、条件展開部1009は、条件(リンク数の制限)を一意に識別する条件IDを作成して、作成された条件ID(例えば、「20」)を条件ID101に格納する。次に、取得した対象リンクID「6」「13」を対象リンクID102に格納する。
また、リンククラスID「4」のリンククラス流量の制限が「(4,1以上)」であるので、取得したリンクID「6」「13」の作業者数の条件を「1以上」と設定し、「1以上」をリンク数の制限103に格納する。また、図6の第1レコード608の条件の種類606と同じ値(「制約」)を条件の種類105に格納する。また、他の条件と接続されないことを示す情報(例えば、「−」)を接続104に格納する。リンククラス流量の制限は各作業者クラスの作業者の割当数(人数)を指定する条件であるため、各作業者クラスのそれぞれの条件は演算子で結合されない。
さらに、第1レコード608に格納された2番目のリンククラス流量の制限「(12,2以上)」に基づいて、リンク数の制限(作業者数)を作成する。リンククラスは「12」であるので、条件展開部1009は、前述した処理によって取得したリンクID「23」「25」「27」の作業者数の条件を作成する。リンクID「23」「25」「27」の作業者数の条件は、「2以上」である。例えば、条件展開部1009は、リンクの制限情報10の第21レコード221を前述した処理によって作成する。
ただし、前述したリンククラス流量の制限に基づいて作成された「各作業者クラスの作業者数の条件」と補足条件ID607に基づいて作成された「作業者クラスの種類の組合せの条件」とを関連付けるため、条件展開部1009は、リンクの制限情報10の第1レコード201の接続104に、「(AND,20)」「(AND,21)」を格納する。これによって、条件「1」「2」「20」「21」は「AND」によって結合される。
以上の処理によって、各作業者クラスに属する作業者を特定の一つの作業ノードに割り当てる場合の割当数の条件を作成する。前述した処理を、他の作業ノードID(ここでは、作業ノードID「15」)に対しても実行し、すべての各作業ノードの作業者の割当数の条件を作成する。
<2 作業の組合せの場合>
作業の組合せの条件は、特定の一つの作業者クラスに属する一つの作業者と各作業クラスに属する各作業との間のリンクの集合のリンク数の制限である。ステップS142においてリンククラスの制限情報6から選択された条件の分類が「作業の組合せ」である場合、条件展開部1009は、ステップS143において、特定の一つの作業者クラスから取得した作業者ノードIDのうちの一つ選択し、選択された作業者ノードIDと取得した作業ノードIDとを結合したリンクのリンク数の制限を作成する。
なお、作業の組合せの条件には、同一の作業者が実行する作業の組合せ(「同一の作業者の作業」)の条件と、同一の作業者が実行してはいけない作業の組合せ(「同一の作業者の禁止作業」)の条件との二つがある。ステップS142において選択された条件のリンククラス数の制限604に格納された境界値が、対象リンククラスID603に格納されたリンク数に等しい場合は「同一の作業者の作業」である。一方、リンククラス数の制限604に格納された条件が、「1以下」の場合は「同一の作業者の禁止作業」である。
<2−1 同一の作業者の作業>
まず、条件展開部1009は、図15のステップS142において選択された条件の対象リンククラスID603を検索キーとして、リンククラス情報3から、対象となる作業者クラスID及び作業クラスIDを取得する。
次に、条件展開部1009は、取得した作業者クラスID及び作業IDをそれぞれ検索キーとして、作業者情報8及び作業情報9から、作業者ノードID及び作業ノードIDを取得する。
次に、条件展開部1009は、特定の一つの作業者クラスに属する作業者ノードのうち一つの作業者ノードを選択し、選択された一つの作業者ノードIDと取得した一つの作業クラスに属する各作業ノードIDとを検索キーとして、リンク情報7からリンクIDを取得する。次に、条件展開部1009は、取得したリンクIDによって識別されるリンクの集合のリンク数の制限を「1以上」と設定する。
条件展開部1009は、同様の処理によって、選択された一つの作業者ノードと取得した他の作業クラスに属する作業ノードとの間のリンクの集合のリンク数の制限を作成する。同一の作業者の作業の場合、各作業者ノードと各作業クラスに属する作業との間のすべてのリンクの集合のリンク数を制限する必要がある。このため、条件展開部1009は、前述した処理によって作成された各条件を演算子「AND」で結合する。結合された条件が最終的な条件である。
具体的には、例えば、ステップS142において図6の第2レコード609が選択された場合、条件展開部1009は、第2レコード609に格納された対象リンククラスID「2」「3」を検索キーとして、作業者クラスID「1」と、作業クラスID「6」「7」を取得する。なお、第2レコード609のリンククラス数の制限は「2に等しい」ので、「作業の組合せの条件」は「同一の作業者の作業の条件」である。
次に、条件展開部1009は、取得した作業者クラスID「1」を検索キーとして、作業者情報8から作業者ノードID「1」「2」を取得する。次に、条件展開部1009は、取得した作業クラスID「6」を検索キーとして、作業情報9から、作業ノードID「16」を取得する。
次に、条件展開部1009は、取得した作業者ノードID「1」「2」のうち一つの作業者ノードを選択する。ここでは、取得した作業者ノードのうち、作業者ノードID「1」が選択された場合について説明する。
作業者ノードID「1」が選択されているので、条件展開部1009は、選択された作業者ノードID「1」と取得した作業ノードID「16」を検索キーとして、リンク情報7からリンクID「3」を取得し、取得したリンクID「3」のリンク数の制限を「1以上」と設定する。
例えば、条件展開部1009は、リンクの制限情報10の第5レコード205を次のように作成する。まず、条件展開部1009は、条件を一意に識別するための識別子を作成し、作成された識別子(例えば、条件ID「5」)を条件ID101に格納する。次に、取得したリンクID「3」を対象リンクID102に格納する。次に、条件展開部1009は、「1以上」をリンク数の制限103に格納する。また、図6の第2レコード609の条件の種類606と同じ値「制約」を条件の種類105に格納する。
さらに、条件展開部1009は、取得したもう一方の作業クラスID「7」を検索キーとして、作業情報9から、作業ノードID「12」「13」を取得する。
作業者ノードID「1」が選択されているので、条件展開部1009は、選択された作業者ノードID「1」と取得した作業ノードID「12」「13」とを検索キーとして、リンク情報7からリンクID「4」「5」を取得し、取得したリンクID「4」「5」のリンク数の制限を「1以上」と設定する。
条件展開部1009は、前述した処理によって、リンクID「4」「5」のリンク数の制限を作成する。リンクID「4」「5」の同一の作業者の作業の条件は、リンクの制限情報10の第6レコード206である。
最後に、条件展開部1009は、作成された第5レコード205の条件「5」と第6レコード206の条件「6」とを「AND」で結合する。この場合、条件展開部1009は、作成された第5レコード205の接続104に「(AND,6)」を格納する。図11の第5レコード205及び第6レコード206の条件は、作業者ノードID「1」が作業ノードID「16」と、作業ノードID「12」「13」のうちの少なくとも一以上と、の作業を実行することを示す。
前述した処理を、取得したすべての作業者ノードに対して実行することによって、特定の一つの作業者クラスの作業の組合せを条件が作成される。
<2−2 同一の作業者の禁止作業>
条件展開部1009は、特定の一つの作業者クラスに属する作業者ノードのうち一つの作業者ノードを選択し、選択された一つの作業者ノードDと取得した一つの作業クラスに属する各作業ノードIDとを検索キーとして、リンク情報7からリンクIDを取得する。そして、取得したリンクIDによって識別されるリンクの集合のリンク数の制限を「0に等しい」と設定する。同一の作業者の禁止作業である場合、各作業クラスに属する作業ノードのいずれか一方と作業者ノードとの間をリンクによって結合すればよい。このため、前述した処理によって作成された各条件を演算子「OR」で結合する。
具体的には、例えば、条件展開部1009は、図6の第3レコード610に基づいて、図11の第7レコード207及び第8レコード208を作成する。図6の第3レコード610のリンク数の制限は「1以下」であるので、第3レコード610の「作業の組合せ」は「同一の作業者の禁止作業」である。なお、図11の第7レコード207及び第8レコード208は、リンクID「1」「2」のリンク数の制限が「0に等しい」、又は、リンクID「6」「7」のリンク数の制限が「0に等しい」ので、作業者「1」が作業「10」「14」と作業「11」「15」とのいずれか一方を実行する条件である。
<3 割当数(作業又は作業者)の場合>
<3−1 割当数(作業)>
割当数の条件(作業)は、一つの作業ノードと各作業者ノードの集合との間のリンクの集合のリンク数の制限である。
ステップS142においてリンククラスの制限情報6から選択された条件の分類が「割当数の条件(作業)」である場合、条件展開部1009は、ステップS143において、一つの特定の作業ノードと作業者ノードとの間のすべてのリンクの集合のリンク数の制限を作成する。
まず、条件展開部1009は、ステップS142において選択された条件の対象リンククラスID603を検索キーとして、リンククラス情報3から、条件の対象となる作業者クラスID及び作業クラスIDを取得する。次に、条件展開部1009は、取得した作業者クラスIDと作業IDとをそれぞれ検索キーとして、作業者情報8及び作業情報9から作業者ノードID及び作業ノードIDを取得する。
次に、条件展開部1009は、取得した作業ノードIDのうち一つの作業ノードを選択し、選択された作業ノードと取得した作業者ノードとの間のすべてのリンクをリンク情報7から取得し、取得したすべてのリンクの集合のリンク数の制限を作成する。
前述した処理によって、一つの作業の作業者の割当数の条件が作成される。割当数の条件(作業)の場合、条件展開部1009は、取得したすべての作業ノードに対して前述した処理を実行することによって、各作業者を一つの作業に割り当てる場合の割当数の条件を作成する。
具体的には、例えば、ステップS142において、図6の第4レコード611が選択された場合、条件展開部1009は、第4レコード611の対象リンクID「4」「7」「10」「12」を検索キーとして、リンククラス情報3から、作業者クラスID「1」「2」「3」「4」、及び、作業クラスID「8」を取得する。
次に、条件展開部1009は、取得した作業者クラスID「1」「2」「3」「4」を検索キーとして、作業者情報8から、作業者ノードID「1」「2」「3」「4」「5」「6」「7」「8」「9」を取得する。また、作業クラスID「8」を検索キーとして作業情報9から作業ノードID「11」「15」を取得する。
第4レコード611の条件の分類は「割当数(作業)」であるので、条件展開部1009は、取得した作業ノードIDのうちの一つを選択する。ここでは、作業ノードID「11」が選択された場合について説明する。
作業ノードID「11」が選択されているので、条件展開部1009は、取得した作業者ノードID「1」「2」「3」「4」「5」「6」「7」「8」「9」と選択された作業ノードID「11」とを検索キーとして、リンク情報7からリンクID「6」「13」「15」「17」「19」「21」「23」「25」「27」を取得する。
図6の第4レコード611のリンク数の制限は「2以上」であるので、取得したすべてのリンクの集合のリンク数の制限を「2以上」と設定し、「2以上」と設定したリンク数の制限をリンクの制限情報10に格納する。
例えば、条件展開部1009は、リンクの制限情報10の第9レコード209を次のように作成する。まず、条件展開部1009は、条件を一意に識別する条件ID(例えば、「9」)を作成し、作成された条件「9」を条件ID101に格納する。次に、取得したリンクID「6」「13」「15」「17」「19」「21」「23」「25」「27」を対象リンクID102に格納する。
また、第4レコード611のリンク数の制限は「2以上」であるので、「2以上」をリンク数の制限103に格納する。また、図6の第4レコード611の条件の種類606と同じ値「制約」を条件の種類105に格納する。また、他の条件と接続されないことを示す情報(例えば、「−」)を接続104に格納する。割当数の条件(作業)は、一つの作業ノードに対して作業者の割り当てる条件であり、他の作業ノードとの関わりがないので、他の条件とは接続されない。なお、図11の第9レコード209は、作業者「1」「2」「3」「4」「5」「6」「7」「8」「9」のうちの少なくとも2人以上によって、作業「11」を実行するという条件である。
<3−2 割当数の条件(作業者)>
一方、割当数の条件(作業者)は、一つの作業者ノードと各作業ノードの集合との間のリンクの集合のリンク数の制限である。このため、条件展開部1009は、取得した作業者ノードIDのうち一つを選択し、選択された作業者ノードと取得した作業ノードとの間のすべてのリンクをリンク情報7から取得し、取得したすべてのリンクの集合のリンク数の制限を作成し、作成されたリンク数の制限をリンクの制限情報10に格納する。
前述した処理によって、一つの作業者を複数の作業に割り当てる場合の割当数の条件が作成される。条件展開部1009は、取得したすべての作業者ノードに対して前述した処理を実行することによって、割当数の条件(作業者)を作成する。
<4 連続作業数の場合>
連続作業数の条件は、一つの作業者ノードと一つの作業クラスに属する各作業ノードとの間の集合のリンク数の制限であり、一つの作業者が連続して実行できる作業数を表す条件である。ステップS142においてリンククラスの制限情報6から選択された条件の分類が「連続作業数」である場合、条件展開部1009は、ステップS143において、一つの特定の作業者ノードと一つの作業クラスに属するすべての作業ノードとの間のリンクの集合のリンク数の制限を作成する。
まず、条件展開部1009は、ステップS142において選択された条件の対象リンククラスID603を検索キーとして、リンククラス情報3から、条件の対象となる作業者クラスID及び作業クラスIDを取得する。
次に、条件展開部1009は、取得した作業者クラスIDと作業IDとを検索キーとして作業者情報8及び作業情報9から作業者ノードID及び作業ノードIDを取得する。
次に、条件展開部1009は、取得した作業者ノードIDのうちの一つを選択し、選択された作業者ノードと取得した一つの作業クラスに属する作業ノードとの間のすべてのリンクをリンク情報7から取得し、取得したリンクの集合のリンク数の制限を作成し、作成されたリンク数の制限をリンクの制限情報10に格納する。
前述した処理によって、一つの作業者の作業の連続条件が作成される。条件展開部1009は、取得したすべての作業者ノードに対して前述した処理を実行することによって、一つの作業者クラスの作業の連続条件を作成する。
具体的には、例えば、ステップS142において、図6の第5レコード612が選択された場合、条件展開部1009は、第5レコード612の対象リンクID「12」を検索キーとして、リンククラス情報3から、作業者クラスID「4」及び作業クラスID「8」を取得する。
次に、条件展開部1009は、取得した作業者クラスID「4」を検索キーとして、作業者情報8から、作業者ノードID「7」「8」「9」を取得する。また、作業クラスID「8」を検索キーとして、作業情報9から作業ノードID「11」「15」を取得する。
次に、条件展開部1009は、取得した作業ノードIDのうち一つの作業者ノードIDを選択する。ここでは、作業者ノードID「7」が選択された場合について説明する。
作業者ノードID「7」が選択されているので、条件展開部1009は、選択された作業者ノードID「7」と作業ノードID「11」「15」とを検索キーとして、リンク情報7からリンクID「23」「24」を取得する。
図6の第5レコード612のリンク数の制限は「1以下」であるので、取得したすべてのリンクID「23」「24」のリンク数の制限を「1以下」と設定し、「1以下」と設定されたリンク数の制限をリンクの制限情報10に格納する。
例えば、条件展開部1009は、リンクの制限情報10の第10レコード210を次のように作成する。まず、条件展開部1009は、条件を一意に識別するための識別子(例えば、「11」)を作成し、作成された条件「11」を条件ID101に格納する。次に、取得したリンクID「23」「24」を対象リンクID102に格納する。次に、「1以下」をリンク数の制限103に格納する。また、図6の第5レコード612の条件の種類606と同じ値「制約」を条件の種類105に格納する。また、他の条件とは接続されないことを示す情報(例えば、「−」)を接続104に格納する。連続作業数の条件は、一つの作業者ノードへ連続する複数の作業を割り当てる条件であり、他の作業者ノードとの関わりがないので、他の条件とは接続されない。
さらに、他の作業者ノードID「8」「9」が選択された場合も、条件展開部1009は、前述した処理によって、作業者ノードID「8」「9」のそれぞれへ連続する複数の作業を割り当てる条件を作成する。作業者ノードID「8」の連続作業条件は、リンクの制限情報10の第11レコード211である。作業者ノードID「9」の連続作業条件は、リンクの制限情報10の第12レコード212である。なお、第11レコード211は、各作業者「7」「8」「9」が作業「11」「15」のどちらか一方を1回のみ実行することを示す条件である。
以上説明したように、本実施形態によれば、作業実行条件策定装置は、ネットワーク表現クラスのリンククラス数の制限を作成し、利用者(作業計画の設計者)によって入力されたパラメータに応じて、作成されたリンククラス数の制限から、各資源ノードと各作業ノードとの間のリンクの集合のリンク数の制限を作成することができる。これによって、実行に無理のない作業実行条件を取得することができる。また、作業計画の設計者は、作業者数及び作業数を変更した場合の作業計画への影響を確認しながら、作業者の割当条件を設定することができる。これによって、作業計画の設計者は、実行に無理のない作業実行条件を取得することができる。