<実施形態1>
<概要>
例えば鉄鋼製品の生産スケジュールにおいては、ガントチャートのタイル(ジョブ)間、言いかえれば、工程間の間隔には、一般に、少なくとも必要な搬送時間や、焼鈍後のコイルの冷却時間などの「最小時間」と、温度低下で品質が劣化する限界の時間や在庫管理上の滞留時間の上限などの「最大時間」の制約が存在する。従って、タイルの移動やタイルの長さの変更等を行うスケジュール修正時には、これらの制約の範囲であれば、すなわち、変更後のタイル間の時間間隔が最小時間と最大時間の間であれば、自由にタイルの変更を行うこととしても構わない。他のジョブや設備への影響は発生しないからである。しかし、これらの制約を超えるような変更が必要な場合には、他のジョブや設備への影響が発生することとなるため、その影響をできるだけ少なくすることが望まれる。
本実施形態1のスケジュール作成装置では、タイル間の時間間隔が制約の範囲内である場合は、変更したタイルの影響が他のタイルに伝播しないようにし、制約を超える場合であっても、極力他のタイルへの影響が小さくなるようにタイルを移動させる。
ここで、本実施形態1のスケジュール作成装置の機能ブロックの構成を説明する前に、スケジュール作成装置におけるスケジュール修正方法について、図5〜図16を用いて説明する。
<スケジュール修正方法>
図5〜図15は、5つの工程を経て製造される或る製品のガントチャートを示す図である。この製品は、工程1〜工程5までの5つの工程を経て生産され、工程1〜5それぞれで設備1〜5を用いる。ガントチャート上では、それぞれの設備でのジョブを「J1」〜「J5」と記載されたタイルで表す(以下、「J1タイル」等という。)。タイルは、ジョブを処理する時間帯、すなわち、ジョブの処理の開始時刻と終了時刻とを示す。従って、タイルの横幅は、設備の占有時間に応じた長さとなっている。また、両端が矢印の太線は、上述の「最大時間」を示し、両端が矢印の白抜き線は、「最小時間」を示す。また、破線で示すタイルは、タイルの修正を開始する時のタイルを示す。
図5は、初期スケジュールのガントチャートを示す。初期スケジュールは、各タイル間の時間間隔が、制約の範囲内、すなわち、最小時間以上、最大時間以下となるように作成される。以下、タイル間をリンクというものとし、J1タイルとJ2タイルとの間のリンクをリンクP1、J2タイルとJ3タイルとの間のリンクをリンクP2、J3タイルとJ4タイルとの間のリンクをリンクP3、J4タイルとJ5タイルとの間のリンクをリンクP4というものとする。このリンクの制約である最小時間及び最大時間は、各タイルが示すジョブの処理内容及び用いられる設備に応じて異なり、図5のガントチャートで、リンクP1の最小時間11及び最大時間12、リンクP2の最小時間13及び最大時間14、リンクP3の最小時間15及び最大時間16、リンクP4の最小時間17及び最大時間18を、それぞれ矢印で示す。
次に、図6で示すように、J4タイルを白抜き矢印10の方向、すなわち、将来方向に移動する修正を行う場合を、図6〜図13を用いて説明する。この場合は、リンクP3の時間T10が最大時間16を超えないで、且つ、リンクP4の時間T11が最小時間17より短くならない範囲での移動であれば、他のタイルへ影響は及ばない。
しかし、J4タイルを更に移動させて、図7に示す位置まで移動した場合には、リンクP3の時間T12が最大時間16を超えてしまい、リンクP3の制約の範囲外となる。このような場合には、図8で示すように、J3タイルへの影響が最も少ないように、すなわち、J3タイルの位置の変更量が最も少ないように、J3タイルの位置を変更する。リンクP3の時間が最大時間16となるような位置に、J3タイルを移動する。
また、このようにJ3タイルを移動したことにより、リンクP2が制約の範囲外となっていないかを確認する。すなわち、J3タイルの移動が、J2タイルに影響を及ぼしていないかを確認する。図8の場合、リンクP2の時間T13は最大時間14を超えていないため、J2タイルへの影響はないと判断してJ2タイルの移動は行わない。尚、仮に、図9に示すように、リンクP2の時間T13が、リンクP2の最大時間24を超えている場合は、図10に示すように、リンクP2の時間が最大時間24となるような位置に、J2タイルを移動し、更に、リンクP1の時間が最大時間12を超えていないか確認し、超えている場合はJ1タイルの移動も行う。すなわち、移動されたJ4タイルにつながっているタイルを順に、影響が及んでいるかを確認し、及んでいる場合は最小限度の影響となるようにタイルを移動することを繰り返す。このように、タイルを順に移動することで、J4タイルからより遠くのタイルほど、移動距離が短くなる。図9のJ3タイルの移動量より、図10のJ2タイルの移動量の方が小さいようにである。
次に、図11を用いて、図8に示す状態からJ4タイルを更に右方向(将来方向)に移動し、J5タイルに影響を及ぼした場合を説明する。白抜き矢印21の将来方向にJ4タイルの移動を続けると、リンクP4の時間T20が最小時間17を下回ってしまい、リンクP4の制約の範囲外となる。このような場合には、図12で示すように、J5タイルへの影響が最も少ないように、すなわち、J5タイルの位置の変更量が最も少ないように、J5タイルの位置を変更する。リンクP4の時間が最小時間17となるような位置に、J5タイルを移動する。J4タイルを更に移動させたことで、J3タイルにも影響を及ぼすことになり、図13に示すように、J3タイル及びJ2タイルは、リンクP3及びリンクP2がそれぞれ最大時間となるように、それぞれ移動する。リンクP1は、J2タイルの移動によっても最大時間を超えないので、移動は行わない。
次に、図14及び図15を用いて、J4タイルを図6の白抜き矢印10とは逆の方向、すなわち、画面に向かって左側の過去方向に移動させる場合を説明する。
図14に示すように、J4タイルを白抜き矢印30の方向に移動する。この場合は、リンクP4の時間T31が最大時間18を超えないで、且つ、リンクP3の時間T30が最小時間15より短くならない範囲での移動であれば、他のタイルへ影響は及ばない。
しかし、J4タイルを更に移動させて、図15に示すような、リンクP4の時間が最大時間18となるような位置まで移動した場合には、J3タイルは、リンクP3の時間が最小時間15になるような位置に移動し、J2タイルは、リンクP2の時間が最小時間13になるような位置に移動し、J1タイルは、リンクP1の時間が最小時間11になるような位置に移動する。
すなわち、J4タイルの移動方向とは逆の方向につながっているタイルは、最大時間を超えないように移動し、J4タイルの移動方向につながっているタイルは、最小時間を下回らないように移動する。
上述の図6〜図15を用いた例では、J4タイルを移動させる場合を説明したが、J4タイルの長さを変更する場合も同様に、長さを変更したことで影響が及ぶタイルとの間のリンクが制約の範囲に収まり、且つ、移動距離が最も短くなるように、影響が及んだタイルを移動する。
<タイルと確認リンク>
ここで、ユーザがタイルを変更するパターンと、その変更により制約の範囲にあるかを確認すべきリンクの選択方法について説明する。
以下、ユーザが位置や長さを変更したタイルを「変更タイル」といい、変更タイルの変更の影響が及んだか否かを判断するために、変更タイルとその隣のタイルとの間のリンク、すなわち、時間が制約の範囲にあるか否かを確認するリンクを「確認リンク」というものとする。また、確認リンクの時間が制約の範囲外であると判断されて、変更タイルと連動して連鎖的に移動する隣のタイルを「連鎖タイル」というものとする。尚、移動した連鎖タイルは、他のタイルに影響を及ぼすことから、移動した連鎖タイルを変更タイルとみなして、処理を繰り返す。従って、連鎖タイルが変更タイルとみなされると、更にその隣のタイルが連鎖タイルとなり、その間のリンクが確認リンクとなる。
図16に、変更タイルと確認リンクとの組み合わせを示す。前タイルは、変更タイルの1つ前の工程のタイルを示し、後タイルは、変更タイルの1つ後の工程のタイルを示す。
図16(a)は、変更タイルの終了時刻を早くした場合を示し、右辺(太線で示す)を白抜き矢印方向に移動する。この場合は、後タイルとの間のリンクP10が、確認リンクであり、最大時間を超えていないかを確認することとなる。リンクの時間が変わるのはリンクP10のみであり、間隔が広がる方向に変更されるからである。確認リンクP10の時間が最大時間を超えている場合は、後タイルが連鎖タイルとなる。
図16(b)は、変更タイルの開始時刻を遅くした場合を示す。この場合は、前タイルとの間のリンクP11が、確認リンクであり、最大時間を超えていないかを確認することとなる。リンクの時間が変わるのはリンクP11のみであり、間隔が広がる方向に変更されるからである。確認リンクP11の時間が最大時間を超えている場合は、前タイルが連鎖タイルとなる。
図16(c)は、変更タイルの終了時刻を遅くした場合を示す。この場合は、後タイルとの間のリンクP12が、確認リンクであり、最小時間を下回らないかを確認することとなる。リンクの時間が変わるのはリンクP12のみであり、間隔が狭まる方向に変更されるからである。確認リンクP12の時間が最小時間を下回っている場合は、後タイルが連鎖タイルとなる。
図16(d)は、変更タイルの開始時刻を早くした場合を示す。この場合は、前タイルとの間のリンクP13が、確認リンクであり、最小時間を下回らないかを確認することとなる。リンクの時間が変わるのはリンクP13のみであり、間隔が狭まる方向に変更されるからである。確認リンクP13の時間が最小時間を下回っている場合は、前タイルが連鎖タイルとなる。
図16(e)は、変更タイルの長さを変えずに将来方向に移動した場合を示す。この場合は、前タイルとの間のリンクP14、及び、後タイルとの間のリンクP15が、確認リンクであり、リンクP14が最大時間を超えていないかを確認し、リンクP15が最小時間を下回らないかを確認することとなる。確認リンクP14の時間が最大時間を超えている場合は、前タイルが連鎖タイルとなり、また、確認リンクP15の時間が最小時間を下回っている場合は、後タイルも連鎖タイルとなる。
図16(f)は、変更タイルの長さを変えずに過去方向に移動した場合を示す。この場合は、前タイルとの間のリンクP16、及び、後タイルとの間のリンクP17が、確認リンクであり、リンクP16が最小時間を下回らないかを確認し、リンクP17が最大時間を超えていないかを確認することとなる。確認リンクP16の時間が最小時間を下回る場合は、前タイルが連鎖タイルとなり、また、確認リンクP17の時間が最大時間を超えている場合は、後タイルも連鎖タイルとなる。
また、変更タイルの変更に伴って移動した連鎖タイルを変更タイルとみなした場合の確認リンクは、図16(e)、(f)と同様に選択する。ただし、移動方向と反対側のリンクは確認リンクとはしない。図16(e)の場合は、リンクP15のみを確認リンクとし、図16(f)の場合は、リンクP16のみを確認リンクとする。変更タイルとみなされた連鎖タイルは、移動方向と反対のリンクは制約の範囲となるように移動されているからである。
以下、本発明にかかる実施の一形態を図面に基づいて説明する。
<構成>
図1は、スケジュール作成装置1000の機能ブロック図である。
スケジュール作成装置1000は、例えば、マイクロプロセッサおよびその周辺回路等を備えて構成されたパソコン等であり、機能的に、スケジュール作成制御部1001、操作部1002、及び、ディスプレイ1003を備える。
操作部1002は、スケジュールを作成するプログラム等を起動するコマンド等の各種コマンド、スケジュールの作成を行う上で必要な各種データ、及び、ディスプレイ1003に表示されたガントチャート上のタイルの移動等の変更指示をスケジュール作成装置1000に入力する機器である。例えば、キーボード、マウス、タッチパネル等である。
ディスプレイ1003は、操作部1002から入力されたコマンドやデータ、及び、スケジュール作成装置1000において作成されたスケジュールをガントチャートとして出力(提示)する機器である。例えばCRT(Cathode Ray Tube)ディスプレイ、LCD(Liquid Crystal Display)、有機EL(Electro Luminescence)ディスプレイ、及び、プラズマディスプレイ等の表示装置である。
スケジュール作成制御部1001は、操作情報入力部1100、スケジュール表示部1200、変更タイル検出部1300、変更タイルスケジュール更新部1400、確認リンク選択部1500、工程間条件判定部1600、連鎖タイルスケジュール更新部1700、スケジュール作成部1800、スケジュール記憶部2000、工程間条件情報記憶部2100、及び、工程情報記憶部2200を備え、スケジュール作成装置1000が備える各機能部を制御し、スケジュール作成処理等を行わせる機能を有する。
操作情報入力部1100は、操作部1002から入力されたユーザ操作を、一定周期で監視し、画面上のガントチャートに対する操作を検出し、変更タイル検出部1300に通知する機能を有する。
変更タイル検出部1300は、操作情報入力部1100から通知されたガントチャート上への操作に基づいて、タイルに対する操作を識別し、変更指示されたタイル(変更タイル)と、変更内容とを検出する機能を有する。変更内容とは、例えば、変更タイルが移動された場合は、移動前のタイルの開始時刻と移動後の開始時刻、変更タイルの長さが変更された場合は、その変更前後のタイルの開始時刻及び終了時刻である。
変更タイルスケジュール更新部1400は、変更タイル検出部1300が検出した変更タイルの変更後の情報に、スケジュール記憶部2000に記憶されているスケジュールを更新する機能を有する。
確認リンク選択部1500は、上記<タイルと確認リンク>の項で説明したように、2種類のタイルについての確認リンクを選択する機能を有する。2種類のタイルとは、変更タイル検出部1300が検出した変更タイルと、変更タイルとみなされた連鎖タイルである。また、確認リンク選択部1500は、選択した確認リンクが制約の範囲内にあるか否かを工程間条件判定部1600に判定させ、制約の範囲内にない場合には、連鎖タイルを決定し、移動させる。その後、連鎖タイルを変更タイルとみなして確認リンクを選択し、確認リンクが制約の範囲となるまで繰り返す。
工程間条件判定部1600は、確認リンク選択部1500が選択した確認リンクが、工程間条件を満たしているか否かを判断する機能を有する。工程間条件とは、確認リンクの制約の範囲を示し、具体的には、リンクの時間として許容される最小時間と最大時間を示す。工程間条件判定部1600は、確認リンク選択部1500から、確認すべきリンクと、そのリンクの時間が最小時間以上であることの確認を行うか、または、最大時間以下であることの確認を行うかを指定される。
連鎖タイルスケジュール更新部1700は、確認リンク選択部1500が決定した連鎖タイルの移動後の情報に、スケジュール記憶部2000に記憶されているスケジュールを更新する機能を有する。
スケジュール作成部1800は、初期スケジュール(図5参照)を作成し、スケジュール記憶部2000に記憶させる機能を有する。スケジュール作成部1800は、工程間条件情報記憶部2100が記憶している工程間条件を満たした初期スケジュールを作成する。
スケジュール表示部1200は、スケジュール記憶部2000に記憶されているスケジュールから、ガントチャートの表示データを作成し、ディスプレイ1003に表示させる機能を有する。
スケジュール記憶部2000は、スケジュールを記憶する機能を有する。スケジュール記憶部2000は、最初はスケジュールとしてスケジュール作成部1800が作成した初期スケジュールを記憶しており、その後、ユーザによるガントチャートの修正に応じて、変更タイルスケジュール更新部1400、及び、連鎖タイルスケジュール更新部1700によってスケジュールが更新される。
工程間条件情報記憶部2100は、リンク毎の工程間条件を記憶しておく機能を有する。
工程情報記憶部2200は、スケジュール作成部1800が初期スケジュールを作成するために必要な情報を記憶しておく機能を有する。
実施形態1のスケジュール作成装置1000は、上述のように、例えば、パーソナルコンピュータ等のコンピュータを用いて構成可能であり、ハードディスク等の記憶部に格納されているスケジュール作成方法等をプログラムしたソフトウェアを実行することによって上述のスケジュール作成部1800等がコンピュータに機能的に構成される。
尚、各機能部は、複数の装置に分散していてもよい。例えば、スケジュール作成部1800、工程情報記憶部2200が、別の装置でスケジュールを作成し、スケジュール記憶部2000に送信するなどである。
<データ>
以下、スケジュール作成装置1000で用いるデータについて説明する。
図2は、工程情報テーブル2210の構成例及びその内容例を示す図である。工程情報テーブル2210は、実施形態1で製造する製品の製造工程、設備等を示すものであり、工程情報記憶部2200に記憶されている。工程情報記憶部2200には、工程情報テーブル2210の他にも、初期スケジュールを作成する際にスケジュール作成部1800によって参照されるデータが記憶されているものとする。
工程情報テーブル2210は、工程番号2211、設備ID2212、及び、処理時間2213を有する。
工程番号2211は、工程の処理を示す識別子である。詳細には、工程情報テーブル2210には、1工程につき1レコードが登録されており、1番目のレコードが最初に実行される第1工程のレコード、2番目のレコードが第1工程の次に実行される第2工程のレコードというようにレコードが登録されている。また、工程番号2211として、例えば、鋳造工程、圧延工程、梱包工程などの工程の処理を示す識別子が設定されている。図2では、「工程1」、「工程2」等と記載している。
設備ID2212は、工程番号2211が示す工程で用いられる設備を特定する識別子を示す。
処理時間2213は、工程番号2211で示す工程を、設備ID2212で示す設備で処理したときに要する基本時間(標準時間)を示す。基本時間は、初期スケジュールを作成する場合に用いられる。
図3は、スケジュール情報テーブル2010の構成例及びその内容例を示す図である。スケジュール情報テーブル2010は、工程1〜5での1回の処理を示す。通常は、時間差をつけて、並行して同じ工程の処理が行われるので、スケジュール情報テーブル2010が複数個、スケジュール記憶部2000に記憶されていることになる。スケジュール情報テーブル2010は、ユーザがガントチャート上で行うスケジュールの修正に応じて、適時更新される。また、スケジュール表示部1200は、このスケジュール情報テーブル2010を参照してガントチャートの表示データを作成する。
スケジュール情報テーブル2010は、工程番号2011、設備ID2012、処理時間2013、開始時刻2014、終了時刻2015、及び、タイルID2016を有する。
工程番号2011は、工程の処理を示す識別子である。スケジュール情報テーブル2010には工程情報テーブル2210と同様に、工程の順番に1工程につき1レコードが登録されており、工程番号2011として工程の処理を示す識別子が設定されている。1レコードの1工程につき、ガントチャート上に1タイルが表示される。
設備ID2012は、工程番号2211が示す工程で用いられる設備を特定する識別子を示す。
処理時間2013は、工程番号2011で示す工程を、設備ID2012で示す設備で処理する時間を示す。ユーザがタイルの長さを変更すると、そのタイルのレコードの処理時間2013として設定されている処理時間がユーザの指示に応じて変更される。
開始時刻2014は、工程番号2011で示される工程の処理を開始する時刻を示し、終了時刻2015は、工程番号2011で示される工程の処理を終了する時刻を示す。ユーザがタイルを移動、又は、タイルの長さを変更すると、そのタイルのレコードの開始時刻2014、又は、終了時刻2015として設定されている時刻がユーザの指示に応じて変更される。
タイルID2016は、ガントチャート上の複数のタイルから、工程番号2011で示される工程の処理(ジョブ)を示すタイルを特定するための識別子を示す。
尚、スケジュール情報テーブル2010が複数記憶されている場合、開始時刻2014〜タイルID2016は、テーブルごとに異なることになる。
図4は、工程間条件情報テーブル2110の構成例及びその内容例を示す図である。工程間条件情報テーブル2110には、工程間で守るべき条件が記憶されており、詳細には、工程間(リンク)毎の最小時間及び最大時間が記憶されており、その最小時間及び最大時間は、工程で用いられる設備によって異なる場合がある。この工程間条件情報テーブル2110は、工程間条件情報記憶部2100に記憶されており、スケジュール作成部1800が初期スケジュールを作成する際、及び、工程間条件判定部1600が、確認リンクが工程間条件を満たしているかを判定する際に参照される。
工程間条件情報テーブル2110は、マトリックス上のテーブル形式であり、縦方向の先工程2111、横方向の後工程2112とで構成される。
先工程2111は、先の工程で用いられる設備の識別子を示し、後工程2112は、後の工程で用いられる設備の識別子を示す。先工程2111の設備識別子と、後工程2112の設備識別子との交差箇所に、工程間条件として、最小時間及び最大時間が「‐」を挟んで記載されている。例えば、先工程2111「設備1」と後工程2112「設備2」との工程間条件として「30−180」が設定されているので、「設備1」で示される設備を用いて行う工程と、「設備2」で示される設備を用いて行う工程との間の最小時間は「30」分であり、最大時間は「180」分となる。尚、図4では、工程間の制約条件として工程間の最小時間と最大時間とを記憶することとしているが、他のデータであってもよい。例えば、現在の工程間から短くできる時間や割合、又は、長くできる時間や割合を記憶しておいてもよい。
<動作>
以下、スケジュール作成装置1000の動作について、図17を用いて説明する。
図17は、スケジュール作成装置1000のスケジュール修正処理のフローチャートである。
まず、ユーザは、操作部1002を操作して、初期スケジュール(図5参照)の作成及び表示を指示するコマンドを入力する。尚、事前に、工程間条件情報テーブル2110(図4参照)は工程間条件情報記憶部2100に記憶されており、また、工程情報テーブル2210(図2参照)及びスケジュールの作成に必要なデータは工程情報記憶部2200に記憶されているものとする。
スケジュール作成制御部1001は、操作部1002を介して初期スケジュールの作成及び表示を指示するコマンドが入力されたことを検出すると、スケジュール作成部1800に初期スケジュールの作成を依頼する。
依頼を受けたスケジュール作成部1800は、工程情報記憶部2200から工程情報テーブル2210及びスケジュール作成に必要なデータを読み出し、更に、工程間条件情報記憶部2100から工程間条件情報テーブル2110を読み出して、初期スケジュールを作成する。この際、スケジュール作成部1800は、各工程の処理時間として、工程情報テーブル2210の処理時間2213として記憶されている処理時間を用い、また、工程間条件情報テーブル2110に記憶されている工程間条件、すなわち、工程間の時間間隔がその工程間の最小時間以上で最大時間以下となるように、初期スケジュールを作成する。初期スケジュールを作成したスケジュール作成部1800は、作成した初期スケジュールのスケジュール情報テーブル2010(図3参照)をスケジュール記憶部2000に記憶させ、その旨をスケジュール作成制御部1001に通知する。通知を受けたスケジュール作成制御部1001は、スケジュール表示部1200にガントチャートを表示するよう依頼する。
依頼を受けたスケジュール表示部1200は、スケジュール記憶部2000に記憶されているスケジュール情報テーブル2010を読み出し、1工程(1レコード)を1タイルとしたガントチャートの表示データを作成してディスプレイ1003に表示させる(ステップS10、図5)。
ユーザは、ディスプレイ1003に表示されたガントチャートを見ながら、操作部1002を操作して、表示されたスケジュールを修正する。ユーザが、タイルを変更する操作、例えば、タイルの移動又はタイルの長さの変更を行う操作を行う(ステップS11)。具体的には、タイルをカーソル等で選択して時間軸上を左右に、すなわち、過去方向又は将来方向に移動させる。または、タイルの左辺又は右辺を選択して時間軸上を左右に移動させてタイルの長さを変更する。
操作情報入力部1100は、操作部1002を介して入力されたユーザ操作が、ガントチャートに対する操作であることを検出すると、検出した操作の情報を変更タイル検出部1300に通知する。例えば、マウスがクリックされた場合は、その座標値を変更タイル検出部1300に通知し、タイルが移動された場合は、ガントチャート上で移動されたタイルの図形識別番号と移動前後の座標値を変更タイル検出部1300に通知するなどである。
通知を受けた変更タイル検出部1300は、操作情報入力部1100から通知された操作情報に基づいて、タイルへの変更操作であるか否かを判断する(ステップS11:Yes)。
変更タイル検出部1300は、操作情報入力部1100から通知された操作情報が、タイルの変更操作ではないと判断すると(ステップS11:No)、その旨及び操作情報をスケジュール作成制御部1001に通知し、通知を受けたスケジュール作成制御部1001は、操作情報に応じた操作を行う。
一方、操作情報入力部1100から通知された操作情報が、タイルの変更操作であると判断すると(ステップS11:Yes)、変更タイル検出部1300は、操作情報入力部1100から通知された操作情報に基づいて、変更指示されたタイル(変更タイル)と、変更内容とを検出する。例えば、操作情報入力部1100から通知された図形の識別番号から、変更タイルが、例えば、図7の「J4タイル」であることを検出する。また、変更内容として、操作情報入力部1100から通知された移動前後の座標値から、「J4タイル」が破線で示す位置から実線で示す位置まで移動されたこと、詳細には、変更タイルの変更前後の開始時刻及び終了時刻を検出する。
変更タイル及び変更内容を検出した変更タイル検出部1300は、検出した変更タイルの識別子と、変更後の開始時刻及び終了時刻を変更タイルスケジュール更新部1400に渡して、変更タイルの時間(位置)の更新を依頼する。
依頼を受けた変更タイルスケジュール更新部1400は、渡された変更タイルの識別子が示すタイルの開始時刻と終了時刻を更新する(ステップS12)。具体的には、変更タイルスケジュール更新部1400は、スケジュール記憶部2000に記憶されているスケジュール情報テーブル2010(図3)の、変更タイルの識別子がタイルID2016として設定されているレコードに、渡された開始時刻を開始時刻2014として設定し、渡された終了時刻を終了時刻2015として設定する。また、渡された開始時刻と終了時刻とから処理時間を算出し、処理時間2013として設定する。
変更タイルスケジュール更新部1400に更新を依頼した変更タイル検出部1300は、次に、変更タイルの識別子と、変更前後の開始時刻及び終了時刻を、確認リンク選択部1500に渡して、確認リンクの選択及び確認を依頼する。
依頼を受けた確認リンク選択部1500は、渡された変更前後の開始時刻及び終了時刻から、変更タイルが移動されたのか、長さが変更されたのかを判断し、上述の<タイルと確認リンク>で図16を用いて説明したように、リンクの一方の端が変更タイルである確認リンクを選択し、確認事項を決定する(ステップS13)。具体的には、確認リンク選択部1500は、確認リンク毎に、確認事項として、そのリンクの時間が最小時間以上であることの確認を行うか、又は、最大時間以下であることの確認を行うかを決定する。例えば、「J4タイル」が変更タイルである図7においては、確認リンク選択部1500は、リンクP3及びリンクP4を確認リンクとして選択する。そして、確認リンクP3は、J3タイルとJ4タイル間のリンクであって最大時間の制約を確認することを確認事項として決定し、確認リンクP4は、J4タイルとJ5タイル間のリンクであって最小時間の制約を確認することを確認事項として決定する。
確認リンクを選択した確認リンク選択部1500は、確認リンク(両端のタイル識別子)と、その確認事項とを工程間条件判定部1600に渡して、判定を依頼する。例えば、確認リンクP3の両端のタイルはJ3タイルとJ4タイルであり、それぞれのタイル識別子「J3」、「J4」を渡す。
依頼を受けた工程間条件判定部1600は、まず、確認リンクの時間を算出する(ステップS14)。具体的には、工程間条件判定部1600は、スケジュール情報テーブル2010(図3参照)の、確認リンクの両端のタイル識別子がそれぞれタイルID2016として設定されている2つのレコードを読み出す。そして、レコード番号が小さいほうのレコード、すなわち、前の工程のレコードに終了時刻2015として設定されている終了時刻と、レコード番号が大きいほうのレコード、すなわち、後の工程のレコードに開始時刻2014として設定されている開始時刻との間の時間を算出し、確認リンクの時間とする。例えば、図7のリンクP3の時間T12は、タイルID2016として「J3」が設定されているレコードの終了時刻2015として設定されている「15:00」と、タイルID2016として「J4」が設定されているレコードの開始時刻2014として設定されている「17:30」との間の時間、すなわち、150分となる。
次に、工程間条件判定部1600は、読み出した2つのレコードそれぞれに、設備ID2012として設定されている設備識別子を読み出す。例えば、図7のリンクP3の場合は、タイルID2016として「J3」が設定されているレコードの設備ID2012として設定されている「設備3」と、タイルID2016として「J4」が設定されているレコードの設備ID2012として設定されている「設備4」が読み出される。
そして、工程間条件情報テーブル2110(図4参照)において、先の工程のレコードから読み出した設備識別子が先工程2111として設定されている行と、後のレコードから読み出した設備識別子が後工程2112として設定されている列とが交差している欄に記載されている工程間条件を読み出す。例えば、図7のリンクP3の工程間条件は、先工程2111として「設備3」が設定されている行と、後工程2112として「設備4」が設定されている列とが交差している欄に記載されている「60−120」であり、最小時間が60分、最大時間が120分となる。
次に、工程間条件判定部1600は、確認リンク選択部1500から渡された確認事項が、そのリンクの時間が最小時間以上であることの確認を行うことである場合(ステップS15:最小)、ステップS14で算出した確認リンクの時間が、工程間条件で示される最小時間以上であるかを判断する(ステップS16)。確認リンクの時間が最小時間を下回る場合、工程間条件判定部1600は、最小時間の制約を満たさない旨を確認リンク選択部1500に通知し、確認リンクの時間が最小時間以上の場合は、最小時間の制約を満たす旨を確認リンク選択部1500に通知する。
通知を受けた確認リンク選択部1500は、通知が最小時間の制約を満たさない旨の場合(ステップS16:No)には、確認リンクの両端のタイルのうち、変更タイルではない方のタイルを連鎖タイルとし、連鎖タイルと変更タイルの間が最小時間となるような位置に連鎖タイルを移動する。具体的には、連鎖タイルの識別子と、変更後の開始時刻及び終了時刻を連鎖タイルスケジュール更新部1700に渡して、連鎖タイルの時間(位置)の更新を依頼する。
依頼を受けた連鎖タイルスケジュール更新部1700は、渡された連鎖タイルの識別子が示すタイルの開始時刻と終了時刻を更新する(ステップS17)。具体的には、1700は、スケジュール記憶部2000に記憶されているスケジュール情報テーブル2010(図3)の、連鎖タイルの識別子がタイルID2016として設定されているレコードに、渡された開始時刻を開始時刻2014として設定し、渡された終了時刻を終了時刻2015として設定する。また、渡された開始時刻と終了時刻とから処理時間を算出し、処理時間2013として設定する。
連鎖タイルスケジュール更新部1700に連鎖タイルの時間の更新を依頼した確認リンク選択部1500は、次に、上述の<タイルと確認リンク>の項で説明したように連鎖タイルを変更タイルとみなして確認リンクを選択し、確認事項を決定し(ステップS18、ステップS22:Yes)、確認リンクと、その確認事項とを工程間条件判定部1600に渡して、ステップS14からの処理を行う。
一方、ステップS16において、工程間条件判定部1600からの通知が、最小時間の制約を満たす旨の通知である場合(ステップS16:Yes)、確認リンク選択部1500は、まだ処理していない確認リンクがある場合(ステップS22:Yes)は、その確認リンクと確認事項とを工程間条件判定部1600に渡して判定を依頼する(ステップS14)。
すなわち、工程間条件判定部1600が、確認リンクが制約条件を満たすと判断するまで、連鎖タイルを変更タイルとみなして処理を繰り返す。そして、制約条件を満たすと判断した場合であっても、まだ処理していない確認リンクがある場合とは、変更タイルが移動されて、前工程との間の確認リンクと後工程との間の確認リンクの2つが選択されて、一方の確認リンクの処理が終了した場合である。
ステップS15において、確認リンク選択部1500から渡された確認事項が、そのリンクの時間が最大時間以下であることの確認を行うことである場合(ステップS15:最大)、工程間条件判定部1600は、ステップS14で算出した確認リンクの時間が、工程間条件で示される最大時間以下であるかを判断する(ステップS19)。確認リンクの時間が最大時間を超える場合、工程間条件判定部1600は、最大時間の制約を満たさない旨を確認リンク選択部1500に通知し、確認リンクの時間が最大時間以下の場合は、最大時間の制約を満たす旨を確認リンク選択部1500に通知する。
通知を受けた確認リンク選択部1500は、通知が最大時間の制約を満たさない旨の場合(ステップS19:No)には、確認リンクの両端のタイルのうち、変更タイルではない方のタイルを連鎖タイルとし、連鎖タイルと変更タイルの間が最大時間となるような位置に連鎖タイルを移動する。具体的には、連鎖タイルの識別子と、変更後の開始時刻及び終了時刻を連鎖タイルスケジュール更新部1700に渡して、連鎖タイルの時間(位置)の更新を依頼する。
依頼を受けた連鎖タイルスケジュール更新部1700は、渡された連鎖タイルの識別子が示すタイルの開始時刻と終了時刻を更新する(ステップS20)。
連鎖タイルスケジュール更新部1700に連鎖タイルの時間の更新を依頼した確認リンク選択部1500は、次に、上述の<タイルと確認リンク>の項で説明したように連鎖タイルを変更タイルとみなして確認リンクを選択し、確認事項を決定し(ステップS21)、確認リンクと、その確認事項とを工程間条件判定部1600に渡して、ステップS14からの処理を行う(ステップS22:Yes)。
一方、ステップS19において、工程間条件判定部1600からの通知が、最大時間の制約を満たす旨の通知である場合(ステップS19:Yes)、確認リンク選択部1500は、まだ処理していない確認リンクがある場合(ステップS22:Yes)は、その確認リンクと確認事項とを工程間条件判定部1600に渡して判定を依頼する(ステップS14)。
ステップS22において、すべての確認リンクの処理を行ったと判断した場合(ステップS22:No)、確認リンク選択部1500は、確認リンクの選択処理が終了した旨をスケジュール作成制御部1001に通知する。通知を受けたスケジュール作成制御部1001は、スケジュール表示部1200にスケジュールを表示するよう依頼し、依頼を受けたスケジュール表示部1200は、スケジュール記憶部2000に記憶されているスケジュール情報テーブル2010(図3参照)を読み出し、ガントチャートの表示データを作成してディスプレイ1003に表示させる(ステップS23)。ここで表示されるガントチャートは、例えば、図7のようにJ4タイルを移動した場合に、連鎖タイルとしてJ3タイルとJ2タイルとが連鎖移動した図10で示すようなガントチャートである。
スケジュール表示部1200にスケジュールの表示依頼をしたスケジュール作成制御部1001は、ユーザが操作部1002を操作して終了指示を入力したこと検出すると(ステップS24:Yes)、スケジュール作成処理を終了し、ユーザが終了指示以外の指示を入力した場合(ステップS24:No)は、ステップS11からの処理を繰り返す。
<変形例>
実施形態1では、変更タイルの変更によって、工程間条件であるタイル間の時間的な制約を満たさなくなった場合に、連鎖タイルを時間軸上で移動することで工程間条件を満たした。変形例では、工程で用いる設備に代替設備がある場合には、連鎖タイルを時間軸上で移動する代わりに、連鎖タイルの工程で用いる設備を代替設備に代えることで、工程間条件を満たすものである。
変形例のスケジュール作成装置1000の機能ブロック構成を説明する前に、変形例のスケジュール修正方法を説明する。
<変形例のスケジュール修正方法>
変形例のスケジュール修正方法を、図21〜図27を用いて説明する。
図21は、初期スケジュールを示すガントチャートを示す。変形例の初期スケジュールは、図5で示したガントチャートと同様に、5つの工程を経て製造される或る製品のガントチャートである。この製品は、工程1〜工程5までの5つの工程を経て生産され、工程1〜5それぞれで設備1〜5を用いる点は、実施形態1と同様であるが、工程4で用いる設備として代替設備を有している点が異なる。初期スケジュール作成時に用いる設備として「設備4−1」を有し、代替設備として「設備4−2」を有する。また、代替設備で処理されるタイルも表示している。破線で表しているタイルは、工程に割り当てられていない設備のタイルである。従って、実線で表されているタイルの方の設備が、工程に割り当てられている。
次に、図22で示すように、J3タイルの右辺を白抜き矢印50の方向、すなわち、将来方向に移動してJ3のタイルの長さを伸ばす修正を行う場合を説明する。この場合は、J3タイルが変更タイルとなる。J3タイルの右辺を移動して、図23に示すような長さのJ3タイルとした場合、リンクP3の時間T50は最小時間15を下回ってしまう。しかし、J4タイルの設備4−1を設備4−2とした場合には、リンクP3の時間T50は、最小時間25以上となり、リンクP3の制約を満たすことになる。従って、図24で示すように、工程4で用いる設備を設備4−1から設備4−2に変更し、すなわち、J4タイルを設備4−2に移動することで、リンクP3の制約を満たすようにする。
また、図25で示すように、初期スケジュールのJ3タイルの左辺を白抜き矢印52の方向、すなわち、過去方向に移動してJ3のタイルの長さを短くする修正を行う場合を説明する。J3タイルの左辺を移動して、図26に示すような長さのJ3タイルとした場合、リンクP3の時間T50は最大時間16を超えてしまう。しかし、J4タイルの設備4−1を設備4−2とした場合には、リンクP3の時間T53は、最大時間26以下となり、リンクP3の制約を満たすことになる。従って、図27で示すように、工程4で用いる設備を設備4−1から設備4−2に変更し、すなわち、J4タイルを設備4−2に移動することで、リンクP3の制約を満たすようにする。
<構成>
変形例のスケジュール作成装置1000の機能ブロック図は、図1に示した実施形態1のスケジュール作成装置1000の機能ブロック図とほぼ同様であるが、主に、確認リンク選択部1500、及び、連鎖タイルスケジュール更新部1700の処理が異なる。
確認リンク選択部1500は、実施形態1では、確認リンクの時間が工程間条件を満たしていない場合に、工程間条件を満たすように連鎖タイルの開始時刻と終了時刻とを変更したが、変形例では、更に、工程間条件を満たすような代替設備を選択する。工程間条件を満たすような代替設備が無い場合は、実施形態1と同様に連鎖タイルを時間軸上で移動する。
連鎖タイルスケジュール更新部1700は、実施形態1では、連携タイルの開始時刻と終了時刻と処理期間とを更新したが、変形例では、更に、連携タイルの設備の変更を行う。
<データ>
図18は、工程情報テーブル2220の構成例及びその内容例を示す図である。実施形態1の工程情報テーブル2210(図2参照)と異なる点は、代替設備ID2224、処理時間2225を更に有する点である。
工程情報テーブル2220は、工程番号2211、設備ID2212、処理時間2213、代替設備ID2224、及び、処理時間2225を有する。
工程番号2211、設備ID2212、処理時間2213は、実施形態1の工程情報テーブル2210(図2参照)の工程番号2211等と同様であり、工程番号2211は、工程の処理を示す識別子を示し、設備ID2212は、工程番号2211が示す工程で用いられる設備を特定する識別子を示し、処理時間2213は、工程番号2211で示す工程を、設備ID2212で示す設備で処理したときに要する基本時間(標準時間)を示す。
代替設備ID2224は、設備ID2212で示される識別子の設備に代えて、工程番号2211で示される工程の処理を行うことができる設備の識別子を示す。いわゆる、代替設備の識別子である。代替設備ID2224として「‐」が設定されている場合は、代替設備はないものとする。尚、本変形例では、代替設備が1つである場合を説明するが、複数の代替設備があってもよい。
処理時間2225は、工程番号2211で示す工程を、代替設備ID2224で示す設備で処理したときに要する基本時間(標準時間)を示す。
図19は、スケジュール情報テーブル2020の構成例及びその内容例を示す図である。実施形態1のスケジュール情報テーブル2010(図3参照)と異なる点は、選択設備2027を更に備えて構成される点である。
注文情報テーブル2020は、工程番号2011、設備ID2012、処理時間2013、開始時刻2014、終了時刻2015、タイルID2016、及び、選択設備2027を有する。
工程番号2011、設備ID2012、処理時間2013、開始時刻2014、終了時刻2015、タイルID2016は、実施形態1のスケジュール情報テーブル2010の工程番号2011等と同様である。すなわち、工程番号2011は、工程の処理を示す識別子であり、設備ID2012は、工程番号2211が示す工程で用いられる設備を特定する識別子を示し、処理時間2013は、工程番号2011で示す工程を、設備ID2012で示す設備で処理する時間を示す。また、開始時刻2014は、工程番号2011で示される工程の処理を開始する時刻を示し、終了時刻2015は、工程番号2011で示される工程の処理を終了する時刻を示し、タイルID2016は、工程番号2011で示される工程の処理(ジョブ)を示すタイルを特定するための識別子を示す。
選択設備2027は、工程番号2011で示される工程が同じである設備ID2012で示される設備のうち、いずれの設備が選択されているかを示す。「○」が選択されていることを示し、「×」が選択されていないことを示す。具体的には、工程番号2011で示される工程処理の識別子が同じレコードが複数ある場合、設備ID2012として設定されている設備識別子のうち、いずれが採用されているかを示す。従って、ガントチャートでは、選択設備2027として「○」が設定されているレコードの、タイルID2016として設定されているタイル識別子が示すタイルが、実線で表示され、「×」が設定されているレコードの、タイルID2016として設定されているタイル識別子が示すタイルは破線で表示される。
図20は、工程間条件情報テーブル2120の構成例及びその内容例を示す図である。工程間条件情報テーブル2120は、実施形態1の工程間条件情報テーブル2110(図4参照)と構成は同様であるが、設定内容が異なるため図20を用いて説明する。
工程間条件情報テーブル2120では、先工程2111及び後工程2112として代替設備「設備4−2」が設定されている。「設備4−2」は「設備4−1」の代替設備であるので、先工程2111「設備3」と後工程2112「設備4−2」との工程間条件として「20−180」が設定され、先工程2111「設備4−2」と後工程2112「設備5」との工程間条件として「40−210」が設定されている。
尚、変形例におけるスケジュール情報テーブル2010は、実施形態1の図3で示すスケジュール情報テーブル2010と同様の構成である。
<動作>
変形例のスケジュール作成装置1000のスケジュール修正処理のフローチャートは、図17で示す実施形態1のフローチャートとほぼ同様である。異なる点は、図17のフローチャートのステップS17、及び、ステップS20の処理である。従って、ステップS17及びステップS20の変形例の処理を説明する。
まず、ステップS17の処理から説明する。
図17のステップS16において、工程間条件判定部1600は、確認リンクの時間が最小時間を下回る場合、最小時間の制約を満たさない旨を確認リンク選択部1500に通知し、確認リンクの時間が最小時間以上の場合は、最小時間の制約を満たす旨を確認リンク選択部1500に通知する。
通知を受けた1500は、通知が最小時間の制約を満たさない旨の場合(ステップS16:No)には、確認リンクの両端のタイルのうち、変更タイルではない方のタイルを連鎖タイルとし、連鎖タイルが示す工程で用いられる設備に代替設備がないかを確認する。具体的には、スケジュール情報テーブル2010の、連鎖タイルの識別子がタイルID2016として設定されているレコードに、工程番号2011として設定されている工程の識別子を読み出す。そして、読み出した工程の識別子が工程情報テーブル2220(図18参照)の工程番号2211として設定されているレコードに、代替設備ID2224として「‐」が設定されている場合は、代替設備はないと判断し、「‐」以外が設定されている場合は、代替設備はあると判断して代替設備の識別子を読み出す。
代替設備があると判断した場合、確認リンク選択部1500は、代替設備を選択することができるか、すなわち、代替設備によれば最小時間の制約を満たすかを判断する。具体的には、確認リンク選択部1500は、注文情報テーブル2020の設備ID2012として代替設備の識別子が設定されているレコードの、タイルID2016として設定されているタイル識別子を読み出す。代替設備のタイルの識別子を読み出した確認リンク選択部1500は、読み出した代替設備のタイル識別子と変更タイルの識別子とで示される確認リンクと、最小時間の制約を確認するという確認事項とを工程間条件判定部1600に渡して、判定を依頼する。工程間条件判定部1600から、最小時間の制約を満たす旨の通知を受けた場合、確認リンク選択部1500は、連鎖タイルの設備として代替設備を選択する。具体的には、連鎖タイルの識別子と代替設備のタイルの識別子とを連鎖タイルスケジュール更新部1700に渡して、設備の更新を依頼する。依頼を受けた連鎖タイルスケジュール更新部1700は、注文情報テーブル2020の、代替設備のタイルの識別子がタイルID2016として設定されているレコードに、選択設備2027として「○」を設定し、連鎖のタイルの識別子がタイルID2016として設定されているレコードに、選択設備2027として「×」を設定する。
一方、代替設備のタイル識別子と変更タイルの識別子とで示される確認リンクと、最小時間の制約を確認するという確認事項とを工程間条件判定部1600に渡して、判定を依頼し、工程間条件判定部1600から、最小時間の制約を満たさない旨の通知を受けた場合、確認リンク選択部1500は、連鎖タイルと変更タイルの間が最小時間となるような位置に連鎖タイルを移動する。具体的には、連鎖タイルの識別子と、変更後の開始時刻及び終了時刻を連鎖タイルスケジュール更新部1700に渡して、連鎖タイルの時間(位置)の更新を依頼する。依頼を受けた連鎖タイルスケジュール更新部1700は、渡された連鎖タイルの識別子が示すタイルの開始時刻と終了時刻を更新する(ステップS17)。
連鎖タイルスケジュール更新部1700に更新を依頼した確認リンク選択部1500は、次に、上述の<タイルと確認リンク>の項で説明したように連鎖タイルの確認リンクを選択し、確認事項を決定し(ステップS18、ステップS22:Yes)、確認リンクと、その確認事項とを工程間条件判定部1600に渡して、ステップS14からの処理を行う。
次に、ステップS20の処理を説明する。
図17のステップS19において、工程間条件判定部1600は、確認リンクの時間が最大時間を超える場合、最大時間の制約を満たさない旨を確認リンク選択部1500に通知し、確認リンクの時間が最大時間以下の場合は、最大時間の制約を満たす旨を確認リンク選択部1500に通知する。
通知を受けた1500は、通知が最大時間の制約を満たさない旨の場合(ステップS19:No)には、確認リンクの両端のタイルのうち、変更タイルではない方のタイルを連鎖タイルとし、連鎖タイルが示す工程で用いられる設備に代替設備がないかを確認し、する。具体的には、スケジュール情報テーブル2010の、連鎖タイルの識別子がタイルID2016として設定されているレコードに、工程番号2011として設定されている工程の識別子を読み出す。そして、読み出した工程の識別子が工程情報テーブル2220(図18参照)の工程番号2211として設定されているレコードに、代替設備ID2224として「‐」が設定されている場合は、代替設備はないと判断し、「‐」以外が設定されている場合は、代替設備はあると判断して代替設備の識別子を読み出す。
代替設備があると判断した場合、確認リンク選択部1500は、代替設備を選択することができるか、すなわち、代替設備によれば最大時間の制約を満たすかを判断する。具体的には、確認リンク選択部1500は、注文情報テーブル2020の設備ID2012として代替設備の識別子が設定されているレコードの、タイルID2016として設定されているタイル識別子を読み出す。代替設備のタイルの識別子を読み出した確認リンク選択部1500は、読み出した代替設備のタイル識別子と変更タイルの識別子とで示される確認リンクと最大時間の制約を確認するという確認事項とを工程間条件判定部1600に渡して、判定を依頼する。工程間条件判定部1600から、最大時間の制約を満たす旨の通知を受けた場合、確認リンク選択部1500は、連鎖タイルの設備として代替設備を選択する。具体的には、連鎖タイルの識別子と代替設備のタイルの識別子とを連鎖タイルスケジュール更新部1700に渡して、設備の更新を依頼する。依頼を受けた連鎖タイルスケジュール更新部1700は、注文情報テーブル2020の、代替設備のタイルの識別子がタイルID2016として設定されているレコードに、選択設備2027として「○」を設定し、連鎖のタイルの識別子がタイルID2016として設定されているレコードに、選択設備2027として「×」を設定する。
一方、代替設備のタイル識別子と変更タイルの識別子とで示される確認リンクと最大時間の制約を確認するという確認事項とを工程間条件判定部1600に渡して、判定を依頼し、工程間条件判定部1600から、最大時間の制約を満たさない旨の通知を受けた場合、確認リンク選択部1500は、連鎖タイルと変更タイルの間が最大時間となるような位置に連鎖タイルを移動する。具体的には、連鎖タイルの識別子と、変更後の開始時刻及び終了時刻を連鎖タイルスケジュール更新部1700に渡して、連鎖タイルの時間(位置)の更新を依頼する。依頼を受けた連鎖タイルスケジュール更新部1700は、渡された連鎖タイルの識別子が示すタイルの開始時刻と終了時刻を更新する(ステップS20)。
連鎖タイルスケジュール更新部1700に更新を依頼した確認リンク選択部1500は、次に、上述の<タイルと確認リンク>の項で説明したように連鎖タイを変更タイルとみなして確認リンクを選択し、確認事項を決定し(ステップS21、ステップS22:Yes)、確認リンクと、その確認事項とを工程間条件判定部1600に渡して、ステップS14からの処理を行う。
<実施形態2>
実施形態1では、変更タイルの変更によって、工程間条件であるタイル間の時間的な制約を満たさなくなった場合に、連鎖タイルを時間軸上で移動することで工程間条件を満たした。実施形態2では、連鎖タイルを時間軸上で移動するのではなく、連鎖タイルの開始時刻又は終了時刻を変更することで、工程間条件を満たすものである。
タイルの横幅は、そのタイルの工程の処理時間、より具体的には、その工程で用いられる設備の占有時間を表している。この工程の処理時間は、工程における処理の内容、工程で用いる設備の能力等によって、調整が可能である。すなわち、一定の範囲であれば、処理時間の短縮又は延長が可能である。
そこで、実施形態2では、変更タイルの変更によって工程間条件を満たさなくなった場合に、工程間条件を満たすように連鎖タイルの移動を行う前に、まず、連鎖タイルの処理時間を調整(短縮又は延長)することで工程間条件を満たす。そして、連鎖タイルの処理時間の短縮又は延長が限界に達したときに、連鎖タイルの移動を行って工程間条件を満たす。実施形態2では、連鎖タイルを移動する前に処理時間を調整することで、変更タイルの変更による他のタイルに及ぶ影響を少なくする。
実施形態2のスケジュール作成装置5000の機能ブロック構成を説明する前に、実施形態2のスケジュール修正方法を、図を用いて説明する。
<実施形態2のスケジュール修正方法>
実施形態2のスケジュール修正方法を、図31〜図35を用いて説明する。尚、図5等と同様に、両端が矢印の太線は、リンクの「最大時間」を示し、両端が矢印の白抜き線は、「最小時間」を示し、破線で示すタイルは、タイルの変更を開始する時のタイルを示す。
図31は、図6で示す初期スケジュールから、J4タイルを白抜き矢印10の方向、すなわち、将来方向に移動する修正を行い、図7に示す位置まで移動した場合に、J3タイルの終了時刻を延長する場合を示す図である。実施形態1では、図8に示すように、リンクP3の時間が最大時間16となるようにJ3タイルの位置を将来方向に移動するが、実施形態2では、図31に示すように、リンクP3の時間が最大時間16となるようにJ3タイルの横幅を変更する。具体的には、リンクP3の時間が最大時間16となるように、図31の黒塗り矢印62が示す方向に、J3タイルの終了時刻を時間T60だけ延長する。リンクP3の制約違反が発生したとしても、その違反した時間分をJ3タイルの処理時間を延長することで吸収するので、J2タイルへの影響は生じない。
更に、ユーザがJ4タイルを移動した場合を、図32に示す。J3タイルの処理時間が延長され(黒塗り矢印62参照)、J3タイルの処理時間の限界である最長処理時間T61となる。
更に、ユーザがJ4タイルを移動すると、図33に示すように、J3タイルは、リンクP3を最大時間16に保ったまま、J4タイルの移動に追従して移動が開始される。J3タイルは処理時間(横幅)が時間T61に保たれたまま、J4タイルの移動に伴って将来方向(黒塗り矢印63参照)に移動される。図33では、J4タイルの移動により、リンクP2の時間が最大時間14を超えており、リンクP4の時間が最小時間17を下回っている。
この場合、図34で示すように、リンクP2の時間が最大時間14となるように、J2タイルの処理時間が時間T64だけ延長される(黒塗り矢印65参照)。また、リンクP4の時間が最小時間17となるように、J5タイルの処理時間が時間T66だけ短縮される。
更に、J4タイルを移動した場合を、図35に示す。J5タイルは、J4タイルの移動に応じて処理時間が短縮されている。そして、J5タイルの処理時間が、J5タイルの処理時間の最短処理時間T68となった時から、最短処理時間T68が保たれたまま、リンクP4の時間が最小時間17を保つようにJ4タイルの移動に追従して移動される。また、J3タイルは、J3タイルの処理時間の最長処理時間T61が保たれたまま、リンクP3の時間が最大時間16を保つようJ4タイルの移動に追従して移動される。J2タイルは、J3タイルの移動に応じて処理時間が延長される。そして、J2タイルの処理時間が最長処理時間T69となった時から、最長処理時間T69が保たれたまま、リンクP2の時間が最大時間14を保つようにJ3タイルの移動、すなわち、J4タイルの移動に追従して移動される。J1タイルは、J2タイルが移動を開始してリンクP1の時間が最大時間12を超えた時から、J2タイルの移動に応じて処理時間が延長される。そして、J1タイルは、J1タイルの処理時間が最長処理時間T70となった時から、最長処理時間T70が保たれたまま、リンクP1の時間が最大時間12を保つようにJ2タイル(J4タイル)の移動に追従して移動される。
上述の図31〜図35を用いた例では、J4タイル(変更タイル)を将来方向に移動させる場合を説明したが、過去方向に移動させる場合は、移動方向のJ3タイルとの間のリンクP2の時間が最小時間13を下回ると、リンクP2の時間を最小時間13となるようにJ3タイルの処理時間を短縮していく。そして、J3タイルの処理時間が最短時間となった時に、リンクP2の時間を最小時間13に保ったまま、J4タイルの移動に追従して過去方向に移動を開始する。また、J4タイルの移動方向と反対側のJ5タイルとの間のリンクP4の時間が最大時間18を上回ると、リンクP4の時間を最大時間18となるようにJ5タイルの処理時間を延長していく。そして、J5タイルの処理時間が最長時間となった時に、リンクP4の時間を最大時間18に保ったまま、J4タイルの移動に追従して過去方向に移動を開始する。
なお、図31〜図35を用いた例では、J4タイルを移動させる場合を説明したが、J4タイルの長さを変更する場合も同様に、長さを変更したことで影響が及ぶ連鎖タイルとの間のリンクが制約の範囲に収まらなくなると、連鎖タイルの処理時間を調整し、調整が限界に達すると、連鎖タイルを移動する。
このように、変更タイルが将来方向に移動している場合は、変更タイルより下流の(将来の)連鎖タイルは処理時間が短縮され、上流の(過去の)連鎖タイルは処理時間が延長される。また、変更タイルが過去方向に移動している場合は、この逆に動作する。すなわち、変更タイルが移動する方向にある連鎖タイルは処理時間を短縮し、変更タイルの移動方向と反対方向の連鎖タイルは処理時間を延長することにより、処理時間の調整を行う。
そのため、変更タイルの移動による影響を、リンクの時間的な制約の範囲だけでなく、タイルの処理時間の調整範囲をも利用して吸収することができ、リンクの時間的な制約のみを利用するよりも、影響が伝搬しにくくなる。すなわち、変更タイルの移動によりリンクの時間的な制約が守られなくなったとしても、まず、連鎖タイルの処理時間を調整して、リンクの時間的な制約違反の影響が他のタイルに及ばないようにする。そして、連鎖タイルの処理時間の調整が限界に達したら、連鎖タイルの移動を開始するので、変更タイルの移動による影響が、他のタイルに及ぶのをできるだけ遅くすることが可能となる。
また、実施形態2では、連鎖タイルが変更タイルよりも上流工程のタイルである場合には、連鎖タイルの開始時刻を変更せずに終了時刻を変更して処理時間の調整(短縮又は延長)行う。例えば、図31に示すように、J4タイルが将来方向に移動した場合に、J3タイルの処理時間の終了時刻を時間T60だけ遅くする。J4タイルが過去方向に移動する場合には、J3タイルの処理時間の終了時刻を必要な時間だけ早くすることになる。
また、連鎖タイルが変更タイルよりも下流工程のタイルである場合には、連鎖タイルの終了時刻を変更せずに開始時刻を変更して処理時間の調整(短縮又は延長)行う。例えば、図34に示すように、J4タイルが将来方向に移動した場合に、J5タイルの処理時間の開始時刻を時間T66だけ遅くする。J4タイルが過去方向に移動する場合には、J5タイルの処理時間の開始時刻を必要な時間だけ早くすることになる。
このように、連鎖タイルが変更タイルよりも上流であるか下流であるかによって、連鎖タイルの処理時間の調整方法を変えることにより、連鎖タイルの移動を可能な限り遅らせることができ、変更タイルの移動等による影響が他のタイルに拡大することを一層強力に防止することができる。
尚、連鎖タイルの処理時間を調整する場合に、上述のように開始時刻又は終了時刻を固定せずに調整することとしてもよい。例えば、開始時刻と終了時刻とを均等に短縮又は延長する等である。
図36に、連鎖タイルの処理時間を調整する場合と、処理時間を調整しない場合の例を示す。図36(a)は、連鎖タイルの処理時間を調整する場合の例であり、J4タイルを将来方向に移動し、移動の影響がJ1タイル〜J3タイル、J5タイルに及んでいるガントチャートを示している。図36(b)は、連鎖タイルの処理時間を調整しない場合の例であり、図36(a)におけるJ4タイルの移動と同様の移動を行った場合の、J1タイル〜J3タイル、J5タイルを示している。
図36(a)のガントチャートの場合、J4タイルの移動量に対して、他のタイルの移動量が、J4タイルから離れるほど小さくなっていることが分る。さらに、図36(a)のガントチャートでは、図36(b)のガントチャートに比べて、J4タイルの移動量に対して、他のタイルの処理時刻への影響を小さくなっていることが分る。
<構成>
図28は、実施形態2のスケジュール作成装置5000の機能ブロック図である。
スケジュール作成装置5000の機能ブロック図は、図1に示した実施形態1のスケジュール作成装置1000の機能ブロック図とほぼ同様であるが、工程調整条件情報記憶部5100と処理時間調整部5700とが追加され、確認リンク選択部1500に換えて確認リンク選択部5500が備えられ、工程間条件判定部1600に換えて工程間条件判定部5600が備えられている点が異なる。
実施形態1の確認リンク選択部1500は、確認リンクの時間が工程間条件を満たしていない場合に、工程間条件を満たすように連鎖タイルの開始時刻と終了時刻とを決定したが、実施形態2の確認リンク選択部5500は、確認リンクの時間が工程間条件を満たしていない場合には、処理時間調整部5700に、連鎖タイルの処理時間を調整して調整後の連鎖タイルの開始時刻と終了時刻とを決定するよう依頼する点が異なる。
また、実施形態1の工程間条件判定部1600は、確認リンク選択部1500が選択した確認リンクが、工程間条件を満たしているか否かを判断し、制約条件を満たすか否かを確認リンク選択部1500に通知したが、実施形態2の工程間条件判定部5600は、更に、通知が制約条件を満たさない旨である場合には、その通知とともに、違反した時間(以下、「リンク違反時間」という。)も確認リンク選択部5500に通知する点が異なる。工程間条件判定部5600は、確認リンク選択部5500から、確認すべきリンクと、最小時間制約の確認(そのリンクの時間が最小時間以上であることの確認)を行うか、または、最大時間制約の確認(そのリンクの時間が最大時間以下であることの確認)を行うかを指定される。最小時間制約の確認が指定されている場合は、確認リンクの時間が最小時間を下回っている場合には、最小時間と確認リンクの時間との差の絶対値をリンク違反時間としてを通知し、最大時間制約の確認が指定されている場合は、確認リンクの時間が最大時間を上回っている場合には、最大時間と確認リンクの時間との差の絶対値をリンク違反時間としてを通知する。
処理時間調整部5700は、確認リンクの時間が工程間条件を満たすように、連鎖タイルの処理時間を調整(短縮又は延長)し、調整後の連鎖タイルの開始時刻と終了時刻とを決定する。また、処理時間調整部5700は、連鎖タイルの処理時間の調整だけでは、確認リンクの時間が工程間条件を満たすことができないと判断した場合には、更に、工程間条件を満たすように連鎖タイルを移動させて、連鎖タイルの開始時刻と終了時刻とを決定する。尚、処理時間調整部5600は、連鎖タイルの処理時間の調整を行う際に、工程調整条件情報記憶部5100に記憶されている工程調整条件を参照する。工程調整条件については、以下の<データ>の項で説明する。
<データ>
実施形態2では、実施形態1で用いたデータと同様の構成のデータを用い、更に、以下に説明する工程調整条件テーブル5110を用いる。
図29は、工程調整条件テーブル5110の構成例及びその内容例を示す図である。工程調整条件テーブル5110には、工程の処理時間について守るべき条件が記憶されており、詳細には、工程(タイル)毎の処理時間の最短処理時間及び最長処理時間が記憶されている。その最短処理時間及び最長処理時間は、工程で行われる処理が同じ内容であっても、工程で用いられる設備等によって異なる場合がある。この工程調整条件テーブル5110は、工程調整条件情報記憶部5100に記憶されており、処理時間調整部5600が、確認リンクが工程間条件を満たすように連鎖タイルの処理時間を調整する際に参照される。
工程調整条件テーブル5110は、工程番号5111、設備ID5112、処理最短時間5113、及び、処理最長時間5114を有する。
工程番号5111は、工程の処理を示す識別子である。工程調整条件テーブル5110には、1工程につき1レコードが登録されている。
設備ID5112は、工程番号5111が示す工程で用いられる設備を特定する識別子を示す。
処理最短時間5113は、工程番号5111で示す工程を、設備ID5112で示す設備で処理したときに要する最短処理時間を示す。
処理最長時間5114は、工程番号5111で示す工程を、設備ID5112で示す設備で処理したときに要する最長処理時間を示す。
例えば、工程番号5111が「工程1」で示される工程の処理は、設備ID5112が「設備1」であり、処理最短時間5113が「100」、処理最長時間5114が「140」であるので、識別子が「設備1」の設備で行われ、100分から140分の間で処理時間の調整が可能である。尚、初期スケジュールでは、工程情報テーブル2210(図2参照)の工程番号2211が「工程1」、設備ID2212が「設備1」であるレコードの処理時間2213として設定されている「120」を用いて、処理時間は120分として作成される。そして、タイルの移動等により、処理時間が100分から140分の間で変更される。
図30に、工程の処理時間が変更された場合のスケジュール情報テーブル2010(図3参照)の例を示す。図30(a)は、初期スケジュール(図5参照)のスケジュール情報テーブル2010−1を示し、図30(b)は、J3タイルの処理時間が延長されたスケジュールのスケジュール情報テーブル2010−2を示す。
図5の初期スケジュールのデータであるスケジュール情報テーブル2010−1では、工程番号2011が「工程3」のレコードに処理時間2013として「180」が設定されている(下線部参照)。この「180」は、工程情報テーブル2210(図2参照)の工程番号2211が「工程3」のレコードに処理時間2213として設定されている時間である。そして、J4タイルが将来方向に移動され、図31に示すようにJ3タイルの処理時間が延長され、スケジュール情報テーブル2010−2の工程番号2011が「工程3」のレコードに処理時間2013として「210」が設定される(下線部参照)。この処理時間の延長に伴い、開始時刻2014及び終了時刻2015が変更されている。
<動作>
図37は、実施形態2のスケジュール作成装置5000のスケジュール修正処理のフローチャートである。図37のフローチャートは、図17で示す実施形態1のフローチャートとほぼ同様である。異なる点は、図17のフローチャートのステップS17とステップS18との代わりにステップS50処理が追加され、また、フローチャートのステップS20とステップS21との代わりにステップS60が追加されている点である。尚、図37のフローチャートのステップS50、S60以外のステップは、ステップ番号が同じである図17のフローチャートのステップと、基本的に同様の処理を行う。
従って、ステップS50の「処理時間短縮処理」及びステップS60の「処理時間延長処理」の処理を主に説明する。図38は、ステップS50の「処理時間短縮処理」のフローチャートであり、図39は、ステップS60の「処理時間延長処理」のフローチャートである。
まず、ステップS50の処理から説明するが、説明の便宜上、図37のステップS13から説明を開始する。
図37のステップS13において、確認リンク選択部5500は、確認リンク(両端のタイル識別子)と、その確認事項(最大時間の制約/最小時間の制約)とを工程間条件判定部5600に渡して、判定を依頼する。例えば、図33において、確認リンクがリンクP4である場合、リンクP4の両端のタイルはJ4タイルとJ5タイルであるので、それぞれのタイル識別子「J4」、「J5」を渡し、確認事項として最小時間の制約を確認する旨を渡す。
依頼を受けた工程間条件判定部5600は、まず、確認リンクの時間を算出し(ステップS14)、確認リンク選択部5500から渡された確認事項が、最小時間制約の確認を行うことである場合(ステップS15:最小)、ステップS14で算出した確認リンクの時間が、工程間条件で示される最小時間以上であるかを判断する(ステップS16)。確認リンクの時間が最小時間を下回る場合、工程間条件判定部5600は、最小時間の制約を満たさない旨とリンク違反時間とを、確認リンク選択部5500に通知し、確認リンクの時間が最小時間以上の場合は、最小時間の制約を満たす旨を確認リンク選択部5500に通知する。例えば、リンクP4の時間が「10分」であり、最小時間が「30分」である場合、工程間条件判定部5600は、最小時間の制約を満たさない旨とリンク違反時間「20分」とを、確認リンク選択部5500に通知する。
通知を受けた確認リンク選択部5500は、通知が最小時間の制約を満たさない旨の場合(ステップS16:No)には、確認リンクの両端のタイルのうち、変更タイルではない方のタイルを連鎖タイルとし、変更タイルの識別子及び連鎖タイルの識別子、並びに、リンク違反時間とを処理時間調整部5700に渡して、連鎖タイルの処理時間の調整を依頼する。
依頼を受けた処理時間調整部5700は、連鎖タイルの処理時間を調整(短縮)して、連鎖タイルの開始時刻及び終了時刻を決定する(ステップS50)。
ここで、処理時間調整部5700が行う処理時間短縮処理について、図38のフローチャートを用いて説明する。
処理時間調整部5700は、連鎖タイルの処理時間を、リンク違反時間分だけ短縮できるかを判断する(ステップS51)。処理時間調整部5700は、連鎖タイルの現在の処理時間からリンク違反時間を引いた時間が、連鎖タイルの最短処理時間以上である場合、連鎖タイルの処理時間をリンク違反時間だけ短縮できると判断し、連鎖タイルの最短処理時間を下回る場合は、連鎖タイルの処理時間をリンク違反時間は短縮できないと判断する。例えば、連鎖タイルの現在の処理時間が「160分」であり、リンク違反時間が「20分」であり、連鎖タイルの最短処理時間が「150分」である場合は、連鎖タイルの現在の処理時間「160分」からリンク違反時間「20分」を引いた時間が「140分」となり、連鎖タイルの最短処理時間「150分」を下回る為、連鎖タイルの処理時間をリンク違反時間は短縮できないと判断する。詳細には、処理時間調整部5700は、連鎖タイルのレコードとして、スケジュール情報テーブル2010から、タイルID2016として連鎖タイルの識別子が設定されているレコードを読み出す。そして、処理時間調整部5700は、連鎖タイルの現在の処理時間として、連鎖タイルのレコードに処理時間2013として設定されている処理時間を読み出す。次に、処理時間調整部5700は、工程調整条件テーブル5110から、連鎖タイルの処理時間の取り得る最短処理時間として、連鎖タイルのレコードに工程番号2011として設定されている工程識別子が工程番号5111として設定され、連鎖タイルのレコードに設備ID2012として設定されている設備識別子が設備ID5112として設定されているレコードに、処理最短時間5113として設定されている時間を読み出す。処理時間調整部5700は、読み出した現在の処理時間及び最短処理時間と、確認リンク選択部5500から渡されたリンク違反時間とからステップS51の判断を行う。
連鎖タイルの処理時間をリンク違反時間分だけ短縮できると判断した場合(ステップS51:Yes)、処理時間調整部5700は、連鎖タイルの処理時間をリンク違反時間だけ短縮する(ステップS52)。具体的には、連鎖タイルが変更タイルよりも下流にある場合は、開始時刻をリンク違反時間だけ遅らせ、連鎖タイルが変更タイルよりも上流にある場合は、終了時刻をリンク違反時間だけ早める。処理時間調整部5700は、連鎖タイルの識別子と、開始時刻及び終了時刻とを連鎖タイルスケジュール更新部1700に渡して、連鎖タイルの時間(位置)の更新を依頼する。
依頼を受けた連鎖タイルスケジュール更新部1700は、渡された連鎖タイルの識別子が示すタイルの開始時刻と終了時刻を更新する(ステップS53)。具体的には、連鎖タイルスケジュール更新部1700は、スケジュール記憶部2000に記憶されているスケジュール情報テーブル2010(図3)の、連鎖タイルの識別子がタイルID2016として設定されているレコードに、渡された開始時刻を開始時刻2014として設定し、渡された終了時刻を終了時刻2015として設定する。また、渡された開始時刻と終了時刻とから処理時間を算出し、処理時間2013として設定する。
また、連鎖タイルの処理時間をリンク違反時間は短縮できないと判断した場合(ステップS51:No)、処理時間調整部5700は、連鎖タイルの処理時間を最短処理時間とする(ステップS54)。具体的には、連鎖タイルが変更タイルよりも下流にある場合は、連鎖タイルの処理時間が最短処理時間となるように開始時刻を遅らせ、連鎖タイルが変更タイルよりも上流にある場合は、連鎖タイルの処理時間が最短処理時間となるように終了時刻を早める。次に、処理時間調整部5700は、確認リンクが最小時間となるように連鎖タイルを移動する。具体的には、連鎖タイルの現在の処理時間からリンク違反時間を引いた時間を、連鎖タイルの最短処理時間から引いた時間分、連鎖タイルを変更タイルから離れる方向に移動する(ステップS55)。例えば、連鎖タイルの現在の処理時間が「160分」であり、リンク違反時間が「20分」であり、連鎖タイルの最短処理時間が「150分」である場合は、連鎖タイルの現在の処理時間「160分」からリンク違反時間「20分」を引いた時間である「140分」を、連鎖タイルの最短処理時間「150分」から引いた時間「10分」、連鎖タイルを移動する。連鎖タイルが変更タイルよりも下流にある場合は、開始時刻及び終了時刻をそれぞれ「10分」遅らせ、連鎖タイルが変更タイルよりも上流にある場合は、開始時刻及び終了時刻をそれぞれ「10分」早める。処理時間調整部5700は、連鎖タイルの識別子と、調整後の開始時刻及び終了時刻とを連鎖タイルスケジュール更新部1700に渡して、連鎖タイルの時間(位置)の更新を依頼する。
依頼を受けた連鎖タイルスケジュール更新部1700は、渡された連鎖タイルの識別子が示すタイルの開始時刻と終了時刻を更新する(ステップS56)。
連鎖タイルスケジュール更新部1700に連鎖タイルの時間の更新を依頼した処理時間調整部5700は、連鎖タイルの処理時間の調整が終了した旨を確認リンク選択部5500に通知し、確認リンクの選択を依頼する(ステップS57)。
これで、図38の「処理時間短縮処理」、すなわち、図37のステップS50の処理が終了する。
通知を受けた確認リンク選択部5500は、次に、上述の<タイルと確認リンク>の項で説明したように連鎖タイルを変更タイルとみなして確認リンクを選択し、確認事項を決定し(ステップS22:Yes)、確認リンクと、その確認事項とを工程間条件判定部5600に渡して、ステップS14からの処理を行う。
一方、ステップS16において、工程間条件判定部5600からの通知が、最小時間の制約を満たす旨の通知である場合(ステップS16:Yes)、確認リンク選択部5500は、まだ処理していない確認リンクがある場合(ステップS22:Yes)は、その確認リンクと確認事項とを工程間条件判定部5600に渡してステップS14からの処理を行う。
次に、ステップS60の処理を説明する。
図37のステップS13において、確認リンク選択部5500は、確認リンク(両端のタイル識別子)と、その確認事項(最大時間の制約/最小時間の制約)とを工程間条件判定部5600に渡して、判定を依頼する。例えば、図31において、確認リンクがリンクP3である場合、リンクP3の両端のタイルはJ3タイルとJ4タイルであるので、それぞれのタイル識別子「J3」、「J4」を渡し、確認事項として最大時間の制約を確認する旨を渡す。
依頼を受けた工程間条件判定部5600は、まず、確認リンクの時間を算出し(ステップS14)、確認リンク選択部5500から渡された確認事項が、最大時間制約の確認を行うことである場合(ステップS15:最大)、ステップS14で算出した確認リンクの時間が、工程間条件で示される最大時間以下であるかを判断する(ステップS19)。確認リンクの時間が最大時間を上回る場合、工程間条件判定部5600は、最大時間の制約を満たさない旨とリンク違反時間とを、確認リンク選択部5500に通知し、確認リンクの時間が最大時間以下の場合は、最大時間の制約を満たす旨を確認リンク選択部5500に通知する。例えば、リンクP3の時間が「120分」であり、最大時間が「90分」である場合、工程間条件判定部5600は、最大時間の制約を満たさない旨とリンク違反時間「30分」とを、確認リンク選択部5500に通知する。
通知を受けた5500は、通知が最大時間の制約を満たさない旨の場合(ステップS19:No)には、確認リンクの両端のタイルのうち、変更タイルではない方のタイルを連鎖タイルとし、変更タイルの識別子及び連鎖タイルの識別子、並びに、リンク違反時間とを処理時間調整部5700に渡して、連鎖タイルの処理時間の調整を依頼する。
依頼を受けた処理時間調整部5700は、連鎖タイルの処理時間を調整(延長)して、連鎖タイルの開始時刻及び終了時刻を決定する(ステップS60)。
ここで、処理時間調整部5700が行う処理時間延長処理について、図39のフローチャートを用いて説明する。
処理時間調整部5700は、連鎖タイルの処理時間を、リンク違反時間分だけ延長できるかを判断する(ステップS61)。詳細には、工程間条件判定部5600は、連鎖タイルのレコードとして、スケジュール情報テーブル2010から、タイルID2016として連鎖タイルの識別子が設定されているレコードを読み出す。そして、処理時間調整部5700は、連鎖タイルの現在の処理時間として、連鎖タイルのレコードに処理時間2013として設定されている処理時間を読み出す。次に、処理時間調整部5700は、工程調整条件テーブル5110から、連鎖タイルの処理時間の取り得る最長処理時間を読み出す。詳細には、連鎖タイルのレコードに工程番号2011として設定されている工程識別子が工程番号5111として設定され、連鎖タイルのレコードに設備ID2012として設定されている設備識別子が設備ID5112として設定されているレコードに、処理最長時間5114として設定されている時間を、連鎖タイルの最長処理時間として読み出す。
処理時間調整部5700は、連鎖タイルの現在の処理時間にリンク違反時間を加算した時間が、連鎖タイルの最長処理時間以下である場合、連鎖タイルの処理時間をリンク違反時間だけ延長できると判断し、連鎖タイルの最長処理時間を上回る場合は、連鎖タイルの処理時間をリンク違反時間は延長できないと判断する。例えば、連鎖タイルの現在の処理時間が「180分」であり、リンク違反時間が「30分」であり、連鎖タイルの最長処理時間が「200分」である場合は、連鎖タイルの現在の処理時間「180分」にリンク違反時間「30分」を加算した時間が「210分」となり、連鎖タイルの最長処理時間「200分」を上回る為、連鎖タイルの処理時間をリンク違反時間は延長できないと判断する。
連鎖タイルの処理時間をリンク違反時間分だけ延長できると判断した場合(ステップS61:Yes)、処理時間調整部5700は、連鎖タイルの処理時間をリンク違反時間だけ延長する(ステップS62)。具体的には、連鎖タイルが変更タイルよりも下流にある場合は、開始時刻をリンク違反時間だけ早め、連鎖タイルが変更タイルよりも上流にある場合は、終了時刻をリンク違反時間だけ遅くする。処理時間調整部5700は、連鎖タイルの識別子と、調整後の開始時刻及び終了時刻とを連鎖タイルスケジュール更新部1700に渡して、連鎖タイルの時間(位置)の更新を依頼する。依頼を受けた連鎖タイルスケジュール更新部1700は、渡された連鎖タイルの識別子が示すタイルの開始時刻と終了時刻を更新する(ステップS63)。
また、連鎖タイルの処理時間をリンク違反時間は延長できないと判断した場合(ステップS61:No)、処理時間調整部5700は、連鎖タイルの処理時間を最長処理時間とする(ステップS64)。具体的には、連鎖タイルが変更タイルよりも下流にある場合は、連鎖タイルの処理時間が最長処理時間となるように開始時刻を早め、連鎖タイルが変更タイルよりも上流にある場合は、連鎖タイルの処理時間が最長処理時間となるように終了時刻を遅くする。次に、処理時間調整部5700は、確認リンクが最大時間となるように連鎖タイルを移動する。具体的には、連鎖タイルの現在の処理時間にリンク違反時間を加算した時間から、連鎖タイルの最長処理時間を引いた時間分、連鎖タイルを変更タイルから離れる方向に移動する(ステップS65)。例えば、連鎖タイルの現在の処理時間が「180分」であり、リンク違反時間が「30分」であり、連鎖タイルの最長処理時間が「200分」である場合は、連鎖タイルの現在の処理時間「180分」にリンク違反時間「30分」を加算した時間である「210分」から、連鎖タイルの最短処理時間「200分」から引いた時間「10分」、連鎖タイルを移動する。連鎖タイルが変更タイルよりも下流にある場合は、開始時刻及び終了時刻をそれぞれ「10分」早め、連鎖タイルが変更タイルよりも上流にある場合は、開始時刻及び終了時刻をそれぞれ「10分」遅くする。
処理時間調整部5700は、連鎖タイルの識別子と、調整後の開始時刻及び終了時刻とを連鎖タイルスケジュール更新部1700に渡して、連鎖タイルの時間(位置)の更新を依頼し、依頼を受けた連鎖タイルスケジュール更新部1700は、渡された連鎖タイルの識別子が示すタイルの開始時刻と終了時刻を更新する(ステップS66)。
連鎖タイルスケジュール更新部1700に連鎖タイルの時間の更新を依頼した処理時間調整部5700は、連鎖タイルの処理時間が終了した旨を確認リンク選択部5500に通知し、確認リンクの選択を依頼する(ステップS67)。
これで、図39の「処理時間延長処理」、すなわち、図37のステップS60の処理が終了する。
通知を受けた確認リンク選択部5500は、次に、上述の<タイルと確認リンク>の項で説明したように連鎖タイルを変更タイルとみなして確認リンクを選択し、確認事項を決定し(ステップS18、ステップS22:Yes)、確認リンクと、その確認事項とを工程間条件判定部1600に渡して、ステップS14からの処理を行う。
一方、ステップS19において、工程間条件判定部5600からの通知が、最大時間の制約を満たす旨の通知である場合(ステップS19:Yes)、確認リンク選択部5500は、まだ処理していない確認リンクがある場合(ステップS22:Yes)は、その確認リンクと確認事項とを工程間条件判定部5600に渡してステップS14からの処理を行う。
ステップS22において、すべての確認リンクの処理を行ったと判断した場合(ステップS22:No)、確認リンク選択部5500は、確認リンクの選択処理が終了した旨をスケジュール作成制御部1001に通知する。通知を受けたスケジュール作成制御部1001は、スケジュール表示部1200にスケジュールを表示するよう依頼し、依頼を受けたスケジュール表示部1200は、スケジュール記憶部2000に記憶されているスケジュール情報テーブル2010(図3参照)を読み出し、ガントチャートの表示データを作成してディスプレイ1003に表示させる(ステップS23)。スケジュール表示部1200にスケジュールの表示依頼をしたスケジュール作成制御部1001は、ユーザが操作部1002を操作して終了指示を入力したこと検出すると(ステップS24:Yes)、スケジュール作成処理を終了し、ユーザが終了指示以外の指示を入力した場合(ステップS24:No)は、ステップS11からの処理を繰り返す。
このように、工程間時間の最小・最大の制約の範囲内では、タイルの移動等の影響を他のタイルに伝搬させず、工程間時間の制約に違反した場合には、まず、所定範囲での処理時間の変更で移動等の影響を吸収し、処理時間の変更で吸収できない場合に、変更タイルの移動等に連鎖させるように他のタイルを移動させることができる。そのため、他のタイルへの影響を最小限にできることになる。
尚、上記では、変更タイルを移動する場合を説明したが、変更タイルの処理時間を変更する場合、すなわち、開始時刻又は終了時刻を変更する場合には、処理時間が最短処理時間と最長処理時間の間にあるようにのみ変更できることとしてもよい。また、処理時間が最長処理時間を越えた場合には、変更タイルの処理時間を最長処理時間として移動させ、また、処理時間が最短処理時間を下回った場合には、変更タイルの処理時間を最短処理時間として移動させてもよい。
また、実施形態2においても、実施形態1の変形例のように連鎖タイルの工程で用いる設備を代替設備に代えてもよい。例えば、工程間条件を満たさなくなった場合に、代替設備に代えたとしても工程間条件を満たさない場合に、連鎖タイルの処理時間を調整することとしてもよい。
本発明を表現するために、上述において図面を参照しながら実施形態を通して本発明を適切且つ十分に説明したが、当業者であれば上述の実施形態を変更および/または改良することは容易に為し得ることであると認識すべきである。したがって、当業者が実施する変更形態または改良形態が、請求の範囲に記載された請求項の権利範囲を離脱するレベルのものでない限り、当該変更形態または当該改良形態は、当該請求項の権利範囲に包括されると解釈される。