(57)【要約】【課題】効率よく資源を割り付ける。【解決手段】オーダごとに任意資源数工程において最小必要資源数から最大必要資源数の間のそれぞれの資源数でフォワードパスおよびバックワードパスを算出するＰＥＲＴ計算を実行するＰＥＲＴ計算手段５２と、オーダごとにバックワードパスで最大必要資源数で計算されたＰＥＲＴ計算結果を抽出し、抽出されたＰＥＲＴ計算結果に基づいて単位時間ごとに最大必要資源数を越えない様に負荷山積を行うとともに、スケジューリングの対象となる期間における単位時間あたりの平均必要資源数を算出する負荷山積処理手段５３と、ＰＥＲＴ計算結果におけるオーダごとの最小必要資源数および最大必要資源数に基づいて過去の方向に平均必要資源数を越えないように負荷山崩を行う負荷山崩処理手段３４を備える。【選択図】      図１
2006106829.tif 000002
【特許請求の範囲】
【請求項１】
製品品目を製造するために、最小必要資源数と最大必要資源数との間の所定の資源数で作業が実行される任意資源数工程において、単位時間ごとに必要な資源数を平準化し、最適な資源数を算出する生産スケジューリング装置において、
製品品目、製造数量、開始可能日および納期を含むオーダ情報と、この製品品目を製造する任意資源数工程で利用される資源名、最小必要資源数、最大必要資源数、前記単位時間に基づく作業効率が関連づけられた作業工程情報とが記憶される記憶手段と、
前記記憶手段から前記オーダ情報および前記作業工程情報とを読み出して、スケジューリングの対象となるオーダのオーダ情報、およびこのオーダ情報に含まれる製品品目に関連づけられた作業工程情報を抽出して、スケジュールデータとして前記記憶手段に記憶するスケジュールデータ取込手段と、
前記記憶手段から前記スケジュールデータを読み出し、前記オーダごとに前記任意資源数工程において最小必要資源数から最大必要資源数の間のそれぞれの資源数でフォワードパスおよびバックワードパスを算出するＰＥＲＴ計算を実行し、前記オーダごとに、前記任意資源数工程における、納期を守る最小必要資源数と前記最小必要資源数における余裕日数、納期を守る最大必要資源数と前記最大必要資源数における余裕日数、および最早開始可能日と最遅開始可能日と最遅完了日を算出して、ＰＥＲＴ計算結果として前記記憶手段に記憶するＰＥＲＴ計算手段と、
前記記憶手段からＰＥＲＴ計算結果を読み出して、前記オーダごとにバックワードパスで最大必要資源数で計算されたＰＥＲＴ計算結果を抽出し、抽出された前記ＰＥＲＴ計算結果に基づいて前記単位時間ごとに前記最大必要資源数を越えない様に負荷山積を行って負荷山積結果として前記記憶手段に記憶するとともに、スケジューリングの対象となる期間における前記単位時間あたりの平均必要資源数を算出し、前記負荷山積結果として前記記憶手段に記憶する負荷山積処理手段と、
前記記憶手段から前記ＰＥＲＴ計算結果および前記負荷山積結果を読み出し、前記ＰＥＲＴ計算結果における前記オーダごとの前記最小必要資源数および前記最大必要資源数に基づいて過去の方向に前記平均必要資源数を越えないように負荷山崩を行って、負荷山崩結果として前記記憶手段に記憶する負荷山崩処理手段
とを備えることを特徴とする生産スケジューリング装置。
【請求項２】
前記記憶手段から前記負荷山崩結果を読み出して、前記資源ごとおよび前記単位時間ごとに前記資源に割り当てられた前記オーダが関連づけた資源別スケジュール結果と、前記オーダごとに割り当てられた前記資源と納期予定とが関連づけられたオーダ別スケジュール結果とを前記記憶手段に記憶するスケジュール結果出力手段
を更に備えることを特徴とする請求項１記載の生産スケジューリング装置。
【請求項３】
前記負荷山積処理手段は、前記記憶手段から前記ＰＥＲＴ計算結果を読み出して、前記オーダごとにバックワードパスで最大必要資源数で計算されたＰＥＲＴ計算結果を抽出し、前記最遅開始可能日から前記最遅完了日の間で、前記単位時間ごとに、前記最大必要資源数を越えない様に負荷山積を行って負荷山積結果として前記記憶手段に記憶するとともに、スケジューリングの対象となる期間における平均必要資源数を算出し、前記負荷山積結果として前記記憶手段に記憶し、
前記負荷山崩処理手段は、前記記憶手段から前記ＰＥＲＴ計算結果および前記負荷山積結果を読み出し、前記ＰＥＲＴ計算結果に含まれる前記最遅完了日から前記最早開始可能日に過去の方向に前記平均必要資源数を越えない様に負荷山崩を行って、負荷山崩結果として前記記憶手段に記憶する
ことを特徴とする請求項１または２記載の生産スケジューリング装置。
【請求項４】
前記負荷山崩処理手段は、前記オーダごとのＰＥＲＴ計算結果について割付優先順位の高いオーダから順に抽出して、
前記最大必要資源数の負荷量で空き負荷を探索し、前記最大必要資源数と前記必要平均資源数とを比較するとともに、
前記必要平均資源数で割付可能であって既に割付済みのオーダの負荷を過去方向に移動可能である場合、前記割付済みのオーダを過去方向に移動させて抽出されたオーダの負荷を移動後の空き負荷に割り当て、前記既に割付済みのオーダの負荷を過去方向に移動可能でない場合、抽出されたオーダの負荷を空き負荷に割り当てるとともに、
前記必要平均資源数で割付不可能であって前記平均必要資源数を越えた負荷を前記最遅完了日から前記最早開始日の過去方向へ移動可能である場合、前記平均必要資源数を越えた負荷を前記最遅完了日から前記最早開始日の範囲で過去方向へ移動し、前記平均必要資源数を越えた負荷を前記最遅完了日から前記最早開始日の範囲で過去方向へ移動可能でない場合、前記最大必要資源数にて割付を行う
ことを特徴とする請求項３記載の生産スケジューリング装置。
【請求項５】
コンピュータに、製品品目を製造するために、最小必要資源数と最大必要資源数との間の所定の資源数で作業が実行される任意資源数工程において、単位時間ごとに必要な資源数を平準化し、最適な資源数を算出させる生産スケジューリングプログラムにおいて、
記憶手段から、製品品目、製造数量、開始可能日および納期を含むオーダ情報と、この製品品目を製造する任意資源数工程で利用される資源名、最小必要資源数、最大必要資源数、前記単位時間に基づく作業効率が関連づけられた作業工程情報とを読み出し、スケジューリングの対象となるオーダが記憶されたオーダ情報、およびこのオーダ情報に含まれる製品品目に関連づけられた作業工程情報とを抽出して、スケジュールデータとして前記記憶手段に記憶するスケジュールデータ取込手段と、
前記記憶手段から前記スケジュールデータを読み出し、前記オーダごとに前記任意資源数工程において最小必要資源数から最大必要資源数の間のそれぞれの資源数でフォワードパスおよびバックワードパスを算出するＰＥＲＴ計算を実行し、前記オーダごとに、前記任意資源数工程における、納期を守ることのできる最小必要資源数と前記最小必要資源数における余裕日数、納期を守ることのできる最大必要資源数と前記最大必要資源数における余裕日数、および最早開始可能日と最遅開始可能日と最遅完了日を算出して、ＰＥＲＴ計算結果として前記記憶手段に記憶するＰＥＲＴ計算手段と、
前記記憶手段からＰＥＲＴ計算結果を読み出して、前記オーダごとにバックワードパスで最大必要資源数で計算されたＰＥＲＴ計算結果を抽出し、抽出された前記ＰＥＲＴ計算結果に基づいて前記単位時間ごとに前記最大必要資源数を越えない様に負荷山積を行って負荷山積結果として前記記憶手段に記憶するとともに、スケジューリングの対象となる期間における前記単位時間あたりの平均必要資源数を算出し、前記負荷山積結果として前記記憶手段に記憶する負荷山積処理手段と、
前記記憶手段から前記ＰＥＲＴ計算結果および前記負荷山積結果とを読み出し、前記ＰＥＲＴ計算結果における前記オーダごとの前記最小必要資源数および前記最大必要資源数に基づいて過去の方向に前記平均必要資源数を越えないように負荷山崩を行って、負荷山崩結果として前記記憶手段に記憶する負荷山崩処理手段
とをコンピュータに実行させることを特徴とする生産スケジューリングプログラム。
【請求項６】
前記記憶手段から前記負荷山崩結果を読み出して、前記資源ごとおよび前記単位時間ごとに前記資源に割り当てられた前記オーダが関連づけた資源別スケジュール結果と、前記オーダごとに割り当てられた前記資源と納期予定とが関連づけられたオーダ別スケジュール結果とを前記記憶手段に記憶するスケジュール結果出力手段
を更にコンピュータに実行させることを特徴とする請求項５記載の生産スケジューリングプログラム。
【請求項７】
前記負荷山積処理手段は、前記記憶手段から前記ＰＥＲＴ計算結果を読み出して、前記オーダごとにバックワードパスで最大必要資源数で計算されたＰＥＲＴ計算結果を抽出し、前記最遅開始可能日から前記最遅完了日の間で、前記単位時間ごとに、前記最大必要資源数を越えない様に負荷山積を行って負荷山積結果として前記記憶手段に記憶するとともに、スケジューリングの対象となる期間における平均必要資源数を算出し、前記負荷山積結果として前記記憶手段に記憶し、
前記負荷山崩処理手段は、前記記憶手段から前記ＰＥＲＴ計算結果および前記負荷山積結果を読み出し、前記ＰＥＲＴ計算結果に含まれる前記最遅完了日から前記最早開始可能日に過去の方向に前記平均必要資源数を越えない様に負荷山崩を行って、負荷山崩結果として前記記憶手段に記憶する
ことを特徴とする請求項５または６記載の生産スケジューリングプログラム。
【請求項８】
前記負荷山崩処理手段は、前記オーダごとのＰＥＲＴ計算結果について割付優先順位の高いオーダから順に抽出して、
前記最大必要資源数の負荷量で空き負荷を探索し、前記最大必要資源数と前記必要平均資源数とを比較するとともに、
前記必要平均資源数で割付可能であって既に割付済みのオーダの負荷を過去方向に移動可能である場合、前記割付済みのオーダを過去方向に移動させて移動後の空き負荷に抽出されたオーダの負荷を割り当て、前記既に割付済みのオーダの負荷を過去方向に移動可能でない場合、空き負荷に抽出されたオーダの負荷を割り当てるとともに、
前記必要平均資源数で割付不可能であって前記平均必要資源数を越えた負荷を前記最遅完了日から前記最早開始日の過去方向へ移動可能である場合、前記平均必要資源数を越えた負荷を前記最遅完了日から前記最早開始日の範囲で過去方向へ移動し、前記平均必要資源数を越えた負荷を前記最遅完了日から前記最早開始日の範囲で過去方向へ移動可能でない場合、前記最大必要資源数にて割付を行う
ことを特徴とする請求項７記載の生産スケジューリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、製品を製造するために、最小必要資源数と最大必要資源数との間の所定の資源数で作業が実行される任意資源数工程において、単位時間ごとに必要な資源数を平準化し、最適な資源数を算出する生産スケジューリング装置および生産スケジューリングプログラムに関する。
【背景技術】
【０００２】
昨今、工場のライン作業などにおける製品の製造において、製造される製品品目や、その製品品目に利用する資源の割付が、コンピュータによって行われている。ここで「資源」とは、穴明機、研磨機などの製造機器はもちろんのこと、作業員なども含まれる。オーダ（製造製品の注文）が入力されると、コンピュータは、オーダされた製品を納期内に納められるように、資源の作業時間および製造対象の製品品目を割り付け、いつ、何を製造するかを決定する。
【０００３】
この資源の割付は、アクティビティと呼ばれる時間単位ごとに行われる。このアクティビティは、製造装置の稼働時間や作業員のシフト時間などに応じて、例えば、１時間または１日などの時間が予め設定される。資源の割付においては、このアクティビティと、製造装置または作業員などの資源と、そのアクティビティにその資源を利用する負荷が関連づけられる。ここで負荷とは、このアクティビティにその資源を利用する製品品目（あるいはオーダ）である。
【０００４】
このとき、例えば作業員などは、その調達人数に応じて資源数を任意に変更しやすい。しかし、作業員の雇用状況を考慮すると、なるべく同じ人数を継続して調達することが人員配置の手続上の便宜等の観点から好ましい。また、製造装置などにおいても、その資源数を任意に変更できる場合でも、なるべく同じ数で継続して調達することが好ましい。
【０００５】
従って、資源の割付においては、アクティビティにおける負荷を平準化することにより、必要となる資源数を平準化することが求められている。
【０００６】
例えば、操業制約の多い他品種工程においても実用的な精算計画を作成する工程負荷調整装置がある（例えば、特許文献１参照）。この特許文献１記載の装置においては、工程情報メモリ、製品情報メモリに格納させた数量を用いて、工程ごとに山積を行い、結果を作業割付テーブルに登録する。負荷山崩は、最も負荷の大きいセグメントを山崩対象とし、セグメントが作業割付可能機関の端に、該当する製品の作業を移動する。作業割付テーブルの全セグメントの負荷が登録された工程能力以下になるまで繰り返す。
【０００７】
また、資源の一括調達の時間間隔等に合わせて必要資源の山積値をなるだけ一定に保つ工程計画の自動作成を行う工程計画作成支援方法がある（例えば、特許文献２参照）。この特許文献２においては、作業に要する全期間を複数に区分する区分期間を入力し、作業工程データを用い演算処理によって区分期間に対して資源の量を平準化する。
【特許文献１】特開２００４−４６３０８号公報
【特許文献２】特開平８−２５５１９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、これらの特許文献１においては、スケジューリングの開始時点から全ての製品を生産開始したとして、負荷の山積を行い、最も負荷の大きいセグメントを山崩の対象として納期の余裕などを考慮してセグメントを移動させる。この特許文献１に記載の方法においては、山積の開始地点は全て同じになっており、セグメントを移動させる場合に、未来方向に移動させることになる。この場合、納期を遵守できない場合も発生してしまうおそれがある。
【０００９】
また、特許文献２に記載の方法においては、１つのオーダに対する負荷の平準化を可能としているが、複数のオーダに対して負荷を平準化することはできない。
【００１０】
このような状況を鑑み、例えば複数のオーダに対してアクティビティにおける負荷を平準化することにより、効率よく資源を割り付ける方法が求められている。
【００１１】
本発明の目的は、効率よく資源を割り付けることのできる生産スケジューリング装置および生産スケジューリングプログラムを提供することである。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明の第１の特徴は、製品品目を製造するために、最小必要資源数と最大必要資源数との間の所定の資源数で作業が実行される任意資源数工程において、単位時間ごとに必要な資源数を平準化し、最適な資源数を算出する生産スケジューリング装置に関する。即ち本発明の第１の特徴に係る生産スケジューリング装置は、製品品目、製造数量、開始可能日および納期を含むオーダ情報と、この製品品目を製造する任意資源数工程で利用される資源名、最小必要資源数、最大必要資源数、単位時間に基づく作業効率が関連づけられた作業工程情報とが記憶される記憶手段と、記憶手段からオーダ情報および作業工程情報とを読み出して、スケジューリングの対象となるオーダのオーダ情報、およびこのオーダ情報に含まれる製品品目に関連づけられた作業工程情報を抽出して、スケジュールデータとして記憶手段に記憶するスケジュールデータ取込手段と、記憶手段からスケジュールデータを読み出し、オーダごとに任意資源数工程において最小必要資源数から最大必要資源数の間のそれぞれの資源数でフォワードパスおよびバックワードパスを算出するＰＥＲＴ計算を実行し、オーダごとに、任意資源数工程における、納期を守る最小必要資源数と最小必要資源数における余裕日数、納期を守る最大必要資源数と最大必要資源数における余裕日数、および最早開始可能日と最遅開始可能日と最遅完了日を算出して、ＰＥＲＴ計算結果として記憶手段に記憶するＰＥＲＴ計算手段と、記憶手段からＰＥＲＴ計算結果を読み出して、オーダごとにバックワードパスで最大必要資源数で計算されたＰＥＲＴ計算結果を抽出し、抽出されたＰＥＲＴ計算結果に基づいて単位時間ごとに最大必要資源数を越えない様に負荷山積を行って負荷山積結果として記憶手段に記憶するとともに、スケジューリングの対象となる期間における単位時間あたりの平均必要資源数を算出し、負荷山積結果として記憶手段に記憶する負荷山積処理手段と、記憶手段からＰＥＲＴ計算結果および負荷山積結果を読み出し、ＰＥＲＴ計算結果におけるオーダごとの最小必要資源数および最大必要資源数に基づいて過去の方向に平均必要資源数を越えないように負荷山崩を行って、負荷山崩結果として記憶手段に記憶する負荷山崩処理手段とを備える。  
ここで、「記憶手段」とは、ハードディスクなどの記憶装置や、ＲＡＭなどである。
【００１３】
このような本発明によれば、まず最も厳しい後ろ倒しの条件で負荷山積を行い、平均必要資源数を越えないように過去方向に負荷山崩を行うを行うことにより、納期を遵守しつつ、資源数を平準化することができる。
【００１４】
本発明の第２の特徴は、コンピュータに、製品品目を製造するために、最小必要資源数と最大必要資源数との間の所定の資源数で作業が実行される任意資源数工程において、単位時間ごとに必要な資源数を平準化し、最適な資源数を算出させる生産スケジューリングプログラムに関する。即ち本発明の第２の特徴に係る生産スケジューリングプログラムは、  記憶手段から、製品品目、製造数量、開始可能日および納期を含むオーダ情報と、この製品品目を製造する任意資源数工程で利用される資源名、最小必要資源数、最大必要資源数、単位時間に基づく作業効率が関連づけられた作業工程情報とを読み出し、スケジューリングの対象となるオーダが記憶されたオーダ情報、およびこのオーダ情報に含まれる製品品目に関連づけられた作業工程情報とを抽出して、スケジュールデータとして記憶手段に記憶するスケジュールデータ取込手段と、記憶手段からスケジュールデータを読み出し、オーダごとに任意資源数工程において最小必要資源数から最大必要資源数の間のそれぞれの資源数でフォワードパスおよびバックワードパスを算出するＰＥＲＴ計算を実行し、オーダごとに、任意資源数工程における、納期を守ることのできる最小必要資源数と最小必要資源数における余裕日数、納期を守ることのできる最大必要資源数と最大必要資源数における余裕日数、および最早開始可能日と最遅開始可能日と最遅完了日を算出して、ＰＥＲＴ計算結果として記憶手段に記憶するＰＥＲＴ計算手段と、記憶手段からＰＥＲＴ計算結果を読み出して、オーダごとにバックワードパスで最大必要資源数で計算されたＰＥＲＴ計算結果を抽出し、抽出されたＰＥＲＴ計算結果に基づいて単位時間ごとに最大必要資源数を越えない様に負荷山積を行って負荷山積結果として記憶手段に記憶するとともに、スケジューリングの対象となる期間における単位時間あたりの平均必要資源数を算出し、負荷山積結果として記憶手段に記憶する負荷山積処理手段と、記憶手段からＰＥＲＴ計算結果および負荷山積結果とを読み出し、ＰＥＲＴ計算結果におけるオーダごとの最小必要資源数および最大必要資源数に基づいて過去の方向に平均必要資源数を越えないように負荷山崩を行って、負荷山崩結果として記憶手段に記憶する負荷山崩処理手段とをコンピュータに実行させる。
【発明の効果】
【００１５】
本発明によれば、効率よく資源を割り付けることのできる生産スケジューリング装置および生産スケジューリングプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１６】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一または類似の部分には同一または類似の符号を付している。
【００１７】
（最良の実施の形態）
図１に示すように、本発明の最良の実施の形態に係る生産スケジューリング装置１は、中央処理制御装置１０１および記憶装置１０７を備えているコンピュータに所定のソフトウェアプログラムが実行されることによって実現される。本発明の最良の実施の形態に係る生産スケジューリング装置１は、製品品目を製造するために、最小必要資源数と最大必要資源数との間の所定の資源数で作業が実行される任意資源数工程において、アクティビティ（単位時間）ごとに必要な資源数を平準化し、最適な資源数を算出する。本発明の最良の実施の形態においては、１アクティビティを１日として説明する。ここで本発明の最良の実施の形態において任意資源数工程とは、所定の製品を製造するための作業工程フローにおいて、作業員などの資源数を任意に決定できる工程のことである。例えば、１人でも３人でも作業可能である工程を任意資源数工程と呼ぶ。この任意資源数工程において、１人で作業した場合と３人で作業した場合とでは、製品の製造に必要な日数が異なる。本発明の最良の実施の形態においては、例えば顧客からの注文（オーダ）に応じて製品を生産する受注生産方式において、顧客から入力されたオーダ情報に基づいて、製品品目を製造するための資源を割り当てる。このオーダ情報は、例えば、顧客からの注文単位で採番されたオーダ識別子に、顧客名、注文する製品品目、数量、納期などが関連づけられる。本発明の最良の実施の形態においては、特に複数のオーダについて、納期を守りつつ、任意資源数工程における資源数を平準化することのできる生産スケジューリング装置１を説明する。
【００１８】
（生産スケジューリング装置のハードウェア構成図）
図２に示すように、本発明の最良の実施の形態に係る生産スケジューリング装置１は、中央処理制御装置１０１、ＲＯＭ（Read Only Memory）１０２、ＲＡＭ（Random Access Memory）１０３および入出力インタフェース１０９が、バス１１０を介して接続されている。入出力インタフェース１０９には、入力装置１０４、表示装置１０５、通信制御装置１０６、記憶装置１０７およびリムーバブルディスク１０８が接続されている。
【００１９】
中央処理制御装置１０１は、入力装置１０４からの入力信号に基づいてＲＯＭ１０２から生産スケジューリング装置１を起動するためのブートプログラムを読み出して実行し、更に記憶装置１０７に記憶されたオペレーティングシステムを読み出す。更に中央処理制御装置１０１は、入力装置１０４や通信制御装置１０６などの入力信号に基づいて、各種装置の制御を行ったり、ＲＡＭ１０３や記憶装置１０７などに記憶されたプログラムおよびデータを読み出してＲＡＭ１０３にロードするとともに、ＲＡＭ１０３から読み出されたプログラムのコマンドに基づいて、データの計算または加工など、後述する一連の処理を実現する処理装置である。
【００２０】
入力装置１０４は、操作者が各種の操作を入力するキーボード、マウスなどの入力デバイスにより構成されており、操作者の操作に基づいて入力信号を作成し、入出力インタフェース１０９およびバス１１０を介して中央処理制御装置１０１に送信される。表示装置１０５は、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどであり、中央処理制御装置１０１からバス１１０および入出力インタフェース１０９を介して表示装置１０５において表示させる出力信号を受信し、例えば中央処理制御装置１０１の処理結果などを表示する装置である。通信制御装置１０６は、ＬＡＮカードやモデムなどの装置であり、生産スケジューリング装置１をインターネットやＬＡＮなどの通信ネットワークに接続する装置である。通信制御装置１０６を介して通信ネットワークと送受信したデータは入力信号または出力信号として、入出力インタフェースおよびバス１１０を介して中央処理制御装置１０１に送受信される。
【００２１】
記憶装置１０７は半導体記憶装置や磁気ディスク装置であって、中央処理制御装置１０１で実行されるプログラムやデータが記憶されている。リムーバブルディスク１０８は、光ディスクやフレキシブルディスクのことであり、ディスクドライブによって読み書きされた信号は、入出力インタフェース１０９およびバス１１０を介して中央処理制御装置１０１に送受信される。
【００２２】
本発明の最良の実施の形態に係る生産スケジューリング装置１の記憶装置１０７には、オーダ情報記憶部２１、作業工程フロー情報記憶部２２、作業工程情報記憶部２３、資源グループ情報記憶部２４、資源情報記憶部２５、スケジュールデータ記憶部３１、ＰＥＲＴ計算結果記憶部３２、負荷山積結果記憶部３３、負荷山崩結果記憶部３４、資源別スケジュール結果記憶部４１、オーダ別スケジュール結果記憶部４２が記憶されるとともに、生産スケジューリングプログラムが記憶される。この生産スケジューリングプログラムが生産スケジューリング装置１の中央処理制御装置１０１に読み込まれ実行されることによって、図１に示すようなスケジュールデータ取込手段５１、ＰＥＲＴ計算手段５２、負荷山積処理手段５３、負荷山崩処理手段５４、スケジュール結果出力手段５５が生産スケジューリング装置１に実装される。
【００２３】
図１および図２において、本発明の最良の実施の形態に係る生産スケジューリング装置１を説明したが、１つのハードウェア上に実装される必要はない。例えば、オーダ情報記憶部２１、作業工程フロー情報記憶部２２、作業工程情報記憶部２３、資源グループ情報記憶部２４、資源情報記憶部２５は、生産スケジューリング装置１に内蔵された記憶装置１０７に記憶されている必要はなく、例えば生産管理システムなどの異なるハードウェアに実装された記憶装置に記憶され、通信制御装置などを介して生産スケジューリング装置１に読み出されても良い。また、記憶装置１０７に記憶された各データは、ＲＡＭ１０３などの記憶装置に記憶されても良い。具体的には、スケジュールデータ記憶部３１、ＰＥＲＴ計算結果記憶部３２、負荷山積結果記憶部３３、負荷山崩結果記憶部３４などの、中央処理制御装置１０１において実現された各手段によって出力される一時ファイルは、ＲＡＭ１０３に記憶されても良い。
【００２４】
（生産スケジューリング装置の概説）
次に、図１および図３を参照して、本発明の最良の実施の形態に係る生産スケジューリング装置１の概略を説明する。
【００２５】
まず、ステップＳ１０１において、スケジュールデータ取込手段５１は、スケジュールデータの作成処理を行う。ここでは、オーダ情報記憶部２１などからスケジューリングの対象となるオーダと、そのオーダに含まれる製品品目に関する作業工程フロー情報、作業工程情報、資源グループ情報、資源情報などを抽出し、スケジュールデータ記憶部３１に記憶する。ステップＳ１０２において、全てのスケジュールデータが読み込まれたことが確認されると、ステップＳ１０３に進む。
【００２６】
ステップＳ１０３において、ＰＥＲＴ（Program Evaluation and Review Technique）計算手段５２は、オーダごとに任意資源数工程において最小必要資源数から最大必要資源数の間のそれぞれの資源数でフォワードパスおよびバックワードパスを算出するＰＥＲＴ計算を実行し、オーダごとに、任意資源数工程における、納期を守ることのできる最小必要資源数と最小必要資源数における余裕日数、納期を守ることのできる最大必要資源数と最大必要資源数における余裕日数、および最早開始可能日と最早完了日と最遅開始可能日と最遅完了日などを算出して、ＰＥＲＴ計算結果記憶部３２に記憶する。ステップＳ１０４において全てのオーダについてＰＥＲＴ計算が行われたことが確認されると、ステップＳ１０５に進む。
【００２７】
ここで、ＰＥＲＴ計算とは、例えば複数の製造工程を経て製品を生産するための生産計画において、アクティビティごとに日程管理や工程管理を行う手法である。ＰＥＲＴ計算では、例えば１アクティビティを１日にした場合、所定の生産計画について予め定められた着手日と完了日（納期）に基づいて、その生産計画における製品を製造するための個々の製造工程について着手日や完了日などの工程計画を決定する。このとき、完了日を基準として個々の製造工程の完了日を逆算して決められた工程計画はバックワードパスと呼ばれ、生産計画の完了日を厳守するためにはこれより遅れることが許されない最遅の工程計画である。一方、着手日を基準として個々の製造工程の着手日を計算して求められた工程計画はフォワードパスと呼ばれ、これ以上早く製造することが許されない最早の工程計画である。また、バックワードパスにおける最初の製造工程の着手日が、生産計画において予め定められた着手日と同じ場合、或いはフォワードパスにおける最終の製造工程の完了日が、生産計画において予め定められた完了日と同じ場合、その工程計画はクリティカルパスと呼ばれ、余裕日がないことを示す。本発明の最良の実施の形態においては、任意資源数工程においては、資源数に応じてその工程に必要なアクティビティ数が異なるので、任意資源数のそれぞれに応じてＰＥＲＴ計算される。
【００２８】
ステップＳ１０５において、負荷山積処理手段５３は、記憶装置１０７からＰＥＲＴ計算結果記憶部３２を読み出して、オーダごとにバックワードパスで最大必要資源数で計算されたＰＥＲＴ計算結果を抽出し、抽出されたＰＥＲＴ計算結果に基づいてアクティビティごとに最大必要資源数を越えない様に負荷山積を行って負荷山積結果記憶部３３に記憶するとともに、スケジューリングの対象となる期間におけるアクティビティあたりの平均必要資源数を算出し、負荷山積結果記憶部３３に記憶する。ステップＳ１０６において全てのオーダについて負荷山積処理が行われたことが確認されると、ステップＳ１０７に進む。
【００２９】
ステップＳ１０７において、負荷山崩処理手段５４は、記憶装置１０７からＰＥＲＴ計算結果記憶部３２および負荷山積結果記憶部３３とを読み出し、ＰＥＲＴ計算結果におけるオーダごとの最小必要資源数および最大必要資源数に基づいて過去の方向に平均必要資源数を越えないように負荷山崩を行って、負荷山崩結果記憶部３４に記憶する。ステップＳ１０８において全てのオーダについて負荷山崩処理が行われたことが確認されると、ステップＳ１０９に進む。
【００３０】
ステップＳ１０９において、スケジュール結果出力手段５５は、記憶装置１０７から負荷山崩結果記憶部３４を読み出して、資源ごとおよびアクティビティごとに資源に割り当てられたオーダを関連づけて資源別スケジュール結果記憶部４１に記憶し、オーダごとに割り当てられた資源と納期予定とを関連づけてオーダ別スケジュール結果記憶部４２に記憶する。
【００３１】
このように、本発明の最良の実施の形態に係る生産スケジューリング装置１は、予め、各オーダについてバックワードパスおよびフォワードパスを算出し、納期を守ることのできる最早開始可能日、最遅開始可能日および最遅完了日を算出する。
【００３２】
次に、納期を守るための最も厳しい後ろ倒しの条件で負荷山積を実行するとともに、平均必要資源数を算出する。更に、ＰＥＲＴ計算で計算された情報に基づいて、平均必要資源数を越えない様に過去方向に負荷山崩を行う。
【００３３】
これにより、本発明の最良の実施の形態に係る生産スケジューリング装置１は、まず最も厳しい後ろ倒しの条件で負荷山積を行い、平均必要資源数を越えないように過去方向に負荷山崩を行うことにより、納期を遵守しつつ、資源数を平均必要資源数以内に収まるように平準化することができる。
【００３４】
（生産スケジューリング装置の詳説）
次に、図１を参照して、本発明の最良の実施の形態に係る生産スケジューリング装置１の各データおよび各手段について詳述する。
【００３５】
オーダ情報記憶部２１は、図４に示すように、オーダ識別子ごとに、オーダされた製品品目、製造数量、着手可能日、納期などが関連づけられて記憶されている。このオーダ情報記憶部２１は、顧客から入力されたオーダに基づいて、生産計画の対象となる製品品目および製造数量についてのみが記載されても良い。ここで、着手可能日は、製造するための部品の調達日や資源の納入日などによって、製品の製造に関する全ての情報を扱う生産管理システムにおいて決定され、本発明の最良の実施の形態に係る生産スケジューリング装置によって資源の割付可能な日である。また納期は、客先への製品の納入リードタイムなどを考慮した納期であって、本発明の最良の実施の形態に係る生産スケジューリング装置が目標とする納期である。
【００３６】
作業工程フロー情報記憶部２２は、図５に示すように、製品品目ごとに、この製品目を製造するために必要な工程が順番に関連づけられている。
【００３７】
作業工程情報記憶部２３は、図６に示すように、製品品目および当該製品品目を製造するために必要な工程ごとに、使用する資源名、資源数（例；機械の台数、人員数）、所定時間あたりの作業効率が関連づけられて記憶されている。この作業効率は、アクティビティあたりの作業個数で表されることが好ましい。ここで、「包装工程」の様に、資源数が「１〜５人」と設定されている工程を、本発明の最良の実施の形態において任意資源数工程と定義する。ここで、最小の資源数である「１人」が最小必要資源数であり、「５人」が最大必要資源数である。この任意資源数工程においては、資源数に応じてこの工程に必要とするアクティビティが異なる。具体的には、図６に示した例では、作業効率が「２００個／１人日」である。この条件において１０００個の製品を製造する場合、包装人員１人および１アクティビティ（１日）あたり２００個を作業することができるので、包装人員を１人にするとこの包装工程には５日を要し、包装人員を５人にすると、この包装工程には１日を要す。このような任意資源数工程においては、納期や他の資源と考慮して、任意の資源数を指定して作業することができる。
【００３８】
資源グループ情報記憶部２４は、図７に示すように、工程ごとに使用可能な資源の保有数と、その資源名が関連づけられている。
【００３９】
資源情報記憶部２５には、図８に示すように、資源名ごとおよびアクティビティごとにそのスケジュールが記憶されている。図８に示す例においては、包装人員それぞれについて、一日ごとにその包装人員の稼働状況（出勤状況）が関連づけられている。包装人員が出勤しない日は、オーダを割り当てることができない制約条件となる。
【００４０】
スケジュールデータ取込手段５１は、記憶装置１０７からオーダ情報記憶部２１、作業工程フロー情報記憶部２２、作業工程情報記憶部２３、資源グループ情報記憶部２４、資源情報記憶部２５などを読み出して、スケジューリングの対象となるオーダのオーダ情報と、オーダ情報に含まれる製品品目に関連づけられた作業工程フロー情報、作業工程情報、資源グループ情報、資源情報などを抽出して、スケジュールデータ記憶部３１に記憶する。オーダ情報記憶部２１、作業工程フロー情報記憶部２２、作業工程情報記憶部２３、資源グループ情報記憶部２４、資源情報記憶部２５などの情報は、生産管理システムなどの上位システムから、インタフェースを経由して提示されたり、管理者端末などの端末の入力手段から情報が設定されても良い。これらの情報は、外部から記憶装置１０７に格納され、スケジューリングの対象となるオーダに関するデータが抽出され、そのデータ全てをスケジュールデータ記憶部３１として記憶装置１０７等のメモリに全て取り込み、本処理全てが終了するまで保持される。このスケジュールデータ記憶部３１は、ＲＡＭ１０３に備えられても良い。
【００４１】
ＰＥＲＴ計算手段５２は、記憶装置１０７からスケジュールデータ記憶部３１を読み出し、オーダごとに任意資源数工程において最小必要資源数から最大必要資源数の間のそれぞれの資源数でフォワードパスおよびバックワードパスを算出するＰＥＲＴ計算を実行し、オーダごとに、任意資源数工程における、納期を守ることのできる最小必要資源数と最小必要資源数における余裕日数、および納期を守ることのできる最大必要資源数と最大必要資源数における余裕日数、および最早開始可能日、最早完了日、最遅開始可能日および最遅完了日などを算出して、ＰＥＲＴ計算結果記憶部３２に記憶する。
【００４２】
このＰＥＲＴ計算手段５２は、例えば図９に示すような処理を行う。  
ステップＳ２０１において、ＰＥＲＴ計算手段は、記憶装置１０７に展開されたスケジュールデータ記憶部３１から、オーダごとに取り出す。ここで、ステップＳ２０２において既にスケジュールデータ記憶部３１の全てのオーダが取り込まれていた（ＥＯＦ：End of File）と判断された場合、ステップＳ２０８に進む。
【００４３】
ステップＳ２０３において、ステップＳ２０１で抽出されたオーダに関連づけられた作業工程フロー情報および資源情報を抽出する。ここで、この作業工程フロー情報において、複数の資源数が関連づけられた任意資源数工程が含まれている場合、ステップＳ２０４において、変数「Ｒ」を最小必要資源数として設定し、ステップＳ２０５において、このＲにおけるフォワードパスおよびバックワードパスによるＰＥＲＴ計算を実行する。
【００４４】
次に、ステップＳ２０６において「Ｒ」をインクリメントし、ステップＳ２０７において「Ｒ」と最大必要資源数を比較する。「Ｒ」が最大必要資源数以下の場合、再びステップＳ２０５に戻りＰＥＲＴ計算を実行する。
【００４５】
ステップＳ２０７において「Ｒ」が最大必要資源数を越える場合、ステップＳ２０１に戻り、新たにオーダを抽出する。
【００４６】
このＰＥＲＴ計算が終了した後、ステップＳ２０８においてＰＥＲＴ計算手段５２は、納期を守れなかった計算パターンを削除する。
【００４７】
このように、ＰＥＲＴ計算手段５２は、オーダごとに、最小必要資源数から最大必要資源数のそれぞれについてＰＥＲＴ計算を実行して、納期を守ることのできる最小必要資源数と最小必要資源数における余裕日数、および納期を守ることのできる最大必要資源数と最大必要資源数における余裕日数、および最早開始可能日、最早完了日、最遅開始可能日および最遅完了日を算出し、その結果をＰＥＲＴ計算結果記憶部３２として記憶装置１０７等の記憶手段に全て取り込み、本処理全てが終了するまで保持される。例えば、このＰＥＲＴ計算結果記憶部３２は、ＲＡＭ１０３に備えられても良い。
【００４８】
次に、図１０ないし図１３を参照して、本発明の最良の実施の形態に係る生産スケジューリング装置１のＰＥＲＴ計算手段５２の処理について説明する。この図１０ないし図１３は、図６に示した作業工程に従ってＰＥＲＴ計算されている。
【００４９】
図１０および図１１においては、フォワードパスによりＰＥＲＴ計算を行っている。フォワードパスによるＰＥＲＴ計算においては、納期を守れる最小必要資源数および最大必要資源数、最早開始可能日、最早完了日、余裕日数が算出される。ここで、穴明工程、研磨工程のそれぞれの作業効率は、図６に示した例によれば１０００個／１日であるので、製品を１０００個製造する場合、それぞれ一日の作業日数を要する。  
図１０においては、３月１日が開始可能日であって３月１０日が納期である場合で、包装工程を開始できる最早開始可能日は穴明工程、研磨工程を考慮して３月３日になる。最小必要資源数である１人で作業した場合、３月７日に作業は完了し、納期である３月１０日までの余裕日数は３日となる。最大必要資源数である５人で作業した場合、３月３日に作業は完了し、納期である３月１０日までの余裕日数は７日となる。図１０に示した例においては、任意資源数工程において、指定されたいずれの資源数においても納期を守ることができるので、最小必要資源数は１人でこのときの余裕日数は３日となり、最大必要資源数は５人でこのときの余裕日数は７日となる。また、最大必要資源数の最早開始可能日は３月３日、最早完了日は３月３日となり、最小必要資源数の最早開始可能日は３月３日、最早完了日は３月７日になる。  
図１１においては、３月１日が開始可能日であって３月５日が納期である場合で、包装工程を開始できる最早開始可能日は穴明工程、研磨工程を考慮して３月３日になる。最小必要資源数である１人で作業した場合、３月７日に作業は完了することになり、納期である３月５日を過ぎてしまう。資源数を２で作業した場合、３月５日に作業は完了し、納期である３月５日までの余裕日数は０日（クリティカルパス）となる。最大必要資源数である５人で作業した場合、３月３日に作業は完了し、納期である３月５日までの余裕日数は２日となる。最大必要資源数である５人で作業した場合、３月３日に作業は完了し、納期である３月５日までの余裕日数は２日となる。図１１に示した例においては、任意資源数工程において、指定された資源数のうち２人以上であるときに納期を守ることができるので、最小必要資源数は２人でこのときの余裕日数は０日となり、最大必要資源数は５人でこのときの余裕日数は２日となる。また、最大必要資源数の最早開始可能日は３月３日、最早完了日は３月３日となり、最小必要資源数の最早開始可能日は３月３日、最早完了日は３月５日になる。
【００５０】
図１２および図１３においては、バックワードパスによりＰＥＲＴ計算を行っている。バックワードパスによるＰＥＲＴ計算においては、納期を守れる最小必要資源数および最大必要資源数、最遅開始可能日、最遅完了日、余裕日数が算出される。ここで、穴明工程、研磨工程のそれぞれの作業効率は、図６に示した例によれば１０００個／１日であるので、製品を１０００個製造する場合、それぞれ一日の作業日数を要する。  
図１２においては、３月１日が開始可能日であって３月１０日が納期である場合で、包装工程を終了する最遅完了日は３月１０日になる。最小必要資源数である１人で作業した場合、３月６日に作業を開始することになるので、穴明工程、研磨工程を考慮したこの作業フローの開始可能日である３月１日までの余裕日数は３日となる。最大必要資源数である５人で作業した場合、３月１０日に作業を開始することになるので、穴明工程、研磨工程を考慮したこの作業フローの開始可能日である３月１日までの余裕日数は７日となる。図１２に示した例においては、任意資源数工程において、指定されたいずれの資源数においても納期を守ることができるので、最小必要資源数は１人でこのときの余裕日数は３日となり、最大必要資源数は５人でこのときの余裕日数は７日となる。また、最大必要資源数の最遅開始可能日は３月１０日、最遅完了日は３月１０日となり、最小必要資源数の最遅開始可能日は３月６日、最遅完了日は３月１０日になる。  
図１３においては、３月１日が開始可能日であって３月５日が納期である場合で、包装工程を終了する最遅完了日は３月５日になる。最小必要資源数である１人で作業した場合、２月２７日（閏年ではない場合であり、閏年の場合には２月２８日）に作業を開始することになるので、穴明工程、研磨工程を考慮したこの作業フローの開始可能日である３月１日より過去になってしまう。資源数を２で作業した場合、３月３日に作業を開始することになるので、穴明工程、研磨工程を考慮したこの作業フローの開始可能日である３月１日までの余裕日数は０日（クリティカルパス）となる。最大必要資源数である５人で作業した場合、３月５日に作業を開始することになるので、穴明工程、研磨工程を考慮したこの作業フローの開始可能日である３月１日までの余裕日数は２日となる。図１３に示した例においては、任意資源数工程において、指定されたいずれの資源数のうち２人以上であるときに納期を守ることができるので、最小必要資源数は２人でこのときの余裕日数は０日（クリティカルパス）となり、最大必要資源数は５人でこのときの余裕日数は２日となる。また、最大必要資源数の最遅開始可能日は３月３日、最遅完了日は３月５日となり、最小必要資源数の最遅開始可能日は３月３日、最遅完了日は３月５日になる。
【００５１】
これらのＰＥＲＴ計算結果に基づいて、図１４に示すようなデータがＰＥＲＴ計算結果記憶部３２に記憶される。ＰＥＲＴ計算結果記憶部３２には、所定の資源（ここでは作業員）について、オーダごとにＰＥＲＴの計算結果が記憶される。図１４（ａ）には、オーダごとのフォワードパスによるＰＥＲＴ計算結果である、納期を守れる最小必要資源数および最大必要資源数、最早開始可能日、最早完了日、余裕日数がＰＥＲＴ計算結果記憶部３２ａに記憶されている。図１４（ｂ）には、オーダごとのバックワードパスによるＰＥＲＴ計算によるＰＥＲＴ計算結果である、納期を守れる最小必要資源数および最大必要資源数、最遅開始可能日、最遅完了日、余裕日数がに記憶される。そのほか、最小必要資源数から最大必要資源数までのそれぞれの計算パターンもＰＥＲＴ計算結果記憶部３２に記憶される。図１４（ａ）に示す例において最早開始可能日と最早完了日が、図１４（ｂ）に示す例において最遅開始可能日と最遅完了日が同一であるが、これは、調達可能な資源数を最大限に利用した場合に一日で各オーダの作業が完了するためである。例えば、調達可能な資源数を最大限利用しても複数日要する場合、最早開始可能日から最早完了日の日数は複数日となり、最遅開始可能日から最遅完了日の日数は複数日となる。
【００５２】
負荷山積処理手段５３は、記憶装置１０７からＰＥＲＴ計算結果記憶部３２を読み出して、オーダごとにバックワードパスで最大必要資源数で計算されたＰＥＲＴ計算結果を抽出し、最遅開始可能日から最遅完了日の間で、アクティビティごとに、最大必要資源数を越えない様に負荷山積を行って負荷山積結果記憶部３３に記憶するとともに、スケジューリングの対象となる期間における平均必要資源数を算出し、負荷山積結果記憶部３３に記憶する。
【００５３】
この負荷山積処理手段５３は、例えば図１５に示すような処理を行う。  
まず、ステップＳ３０１において、ＰＥＲＴ計算結果記憶部３２を読み出し、オーダごとにバックワードパスで最大必要資源数で計算された計算結果を抽出する。次に、ステップＳ３０２においてステップＳ３０１で抽出されたオーダを１件取り出す。このとき、取り出すべきオーダがない場合、ステップＳ３０５に進む。
【００５４】
ステップＳ３０３においてオーダを取り出すと、ステップＳ３０４において、最遅開始可能日から最遅完了日の範囲で、負荷山積を行う。これにより、オーダごとに許される最も遅いスケジュールを設定することができる。この結果は、逐次、負荷山積結果記憶部３３に記憶される。
【００５５】
ステップＳ３０４において負荷山積が行われると、ステップＳ３０２に戻り次のオーダを抽出する。
【００５６】
このように、ステップＳ３０１で抽出された全てのオーダについて、負荷山積されると、ステップＳ３０５において、平均必要資源数を算出する。具体的には、アクティビティが日単位である場合、スケジュールの対象となるスケジュール終了日（最も遅い日に割り付けられたオーダの最遅完了日）からスケジュール開始日（或いは現在日）を減算して、アクティビティ数（日数）を算出する。一方、オーダ単位での最大必要資源数を積算し、総負荷量を算出する。このように算出された総負荷量をアクティビティ数で除算して、アクティビティ単位の平均必要資源数を算出する。算出された平均必要資源数は、負荷山積結果記憶部３３に記憶される。
【００５７】
ここで、図１６を参照して、負荷山積結果の一例を説明する。図１６は、図１４（ｂ）に示した結果を参照して作成される。具体的には、オーダＡは最遅完了日が３月４日であるので、３月４日に最大必要資源数である３の負荷を山積する。オーダＢは最遅完了日が３月５日であるので、３月５日に最大必要資源数である１の負荷を山積する。オーダＣは最遅完了日が３月６日であるので、３月６日に最大必要資源数である２の負荷を山積する。オーダＤは最遅完了日が３月７日であるので、３月７日に最大必要資源数である５の負荷を山積する。オーダＥは最遅完了日が３月８日であるので、３月８日に最大必要資源数である３の負荷を山積する。図１６に示す様な負荷山積された結果が、負荷山積結果記憶部３３に記憶される。
【００５８】
負荷山崩処理手段５４は、記憶装置１０７からＰＥＲＴ計算結果記憶部３２および負荷山積結果記憶部３３を読み出し、ＰＥＲＴ計算結果に含まれる最遅完了日から最早開始可能日に過去の方向に平均必要資源数を越えないように負荷山崩を行って、負荷山崩結果記憶部３４に記憶する。
【００５９】
具体的には、負荷山崩処理手段５４は、オーダごとのＰＥＲＴ計算結果について割付優先順位の高いオーダから順に抽出して、最大必要資源数の負荷量で空き負荷を探索し、最大必要資源数と必要平均資源数とを比較する。ここで、必要平均資源数で割付可能であって既に割付済みのオーダの負荷を過去方向に移動可能である場合、割付済みのオーダを過去方向に移動させて移動後の空き負荷に抽出されたオーダの負荷を割り当て、既に割付済みのオーダの負荷を過去方向に移動可能でない場合、空き負荷に抽出されたオーダの負荷を割り当てる。一方、必要平均資源数で割付不可能であって平均必要資源数を越えた負荷を最遅完了日から最早開始日の過去方向へ移動可能である場合、平均必要資源数を越えた負荷を最遅完了日から最早開始日の範囲で過去方向へ移動し、平均必要資源数を越えた負荷を最遅完了日から最早開始日の範囲で過去方向へ移動可能でない場合、最大必要資源数にて割付を行う。
【００６０】
この負荷山崩処理手段５４は、例えば図１７に示すような処理を行う。  
まず、ステップＳ４０１において、余裕日数の少ない順など、優先的に資源を割り付けるオーダ順にソートする。図１７に示す例では余裕日数の少ない順に山崩を行うが、顧客の優先順位など外部から与えられたそのほかのパラメータに従って、優先的に資源を割り付けるオーダ順にソートされても良い。
【００６１】
次に、ステップＳ４０２においてステップＳ４０１でソートされたオーダから優先順位の高い順にオーダを１件取り出す。オーダを取り出すことができなければ、全てのオーダについて山崩を行ったとして処理を終了する。
【００６２】
一方、ステップＳ４０２においてオーダを１件取り出すと、最遅完了日から最早開始日の範囲で最大必要資源数にて空き負荷を探索する。ここでは、最大必要資源数にて空き負荷を探索することにより、そのオーダが最短（縦軸：能力最大、横軸：期間最小）の期間で作業を完了できるかを評価する。
【００６３】
ステップＳ４０５において、最大必要資源数で算出された最遅完了日に、負荷山積処理手段５３で算出された平均必要資源数以下で、負荷が割り付けられているか否かを判定する。
【００６４】
ステップＳ４０５において、平均必要資源数以下で割付られていない場合、ステップＳ４０６において、最遅完了日から最早開始日の範囲で、平均必要資源数を越えた負荷を移動させることが可能であるか否かを判定する。負荷を移動できない場合、ステップＳ４０７において、最遅完了日を基点に最早開始日の方向へ最大必要資源数の負荷で配置を行う。この場合、最大必要資源数が平均必要資源数を越えることになるが、最大必要資源数を割り付けることにより、納期を守ることができる。一方、負荷を移動できる場合、ステップＳ４０８において、平均必要資源数を越えた負荷を、最遅完了日から最早開始日の範囲で過去方向へ山崩を行い、探索された空き負荷にステップＳ４０２で取り出されたオーダの負荷を割り当てる。このとき、平均必要資源数を越えないように負荷は移動される。このとき、平均必要資源数を越えた負荷を連続したアクティビティに割り付けるか、連続しないアクティビティに割り付けても良いかなどの割付条件が、外部からパラメータとして入力されても良い。
【００６５】
ステップＳ４０５において平均必要資源数以下で割り付けられた場合、ステップＳ４０９において、既に割り付けられたオーダの負荷は、そのオーダの割付可能範囲で過去方向に負荷を移動できるか否かを判定する。負荷を移動できる場合、ステップＳ４１０において、既に割り付けられたオーダの負荷を過去方向に移動させ、移動によって発生した空き負荷に、ステップＳ４０２で取り出されたオーダの負荷を割り当てる。一方、負荷を移動できない場合、最遅完了日の空き負荷に、ステップＳ４０２で取り出されたオーダの負荷を割り当てる。
【００６６】
図１６に示した具体的な負荷山積の処理結果に基づいて、負荷山崩を説明する。図１６に示した例で負荷山崩処理手段５４は、余裕日数に基づいて、オーダＢおよびオーダＣ、オーダＡ、オーダＤ、オーダＥの順にソートする。
【００６７】
まず、オーダＢおよびオーダＣについては、余裕日数が０日なので、負荷山積処理手段５３によって山積された状態で、図１８に示すようにそれぞれの最遅完了日に負荷が山積される。
【００６８】
次に、オーダＤについては、負荷山積処理手段５３によって最遅完了日である３月７日に５つの負荷が山積されているが、山積された負荷が平均必要資源数である３を越えるため、負荷山崩処理手段５４は、図１９に示すように過去の方向に負荷を移動させる。このとき、負荷山崩処理手段５４は、最遅完了日から最早開始可能日まで過去の方向に遡って空き負荷を探索する。具体的には、このオーダＤは、図１６に示すように、最早開始可能日が３月５日であるので、３月５日から３月７日までの間で負荷を割り当てることができる。平均必要資源数を越える２つの負荷について、まず、一日過去に遡った３月６日に空き負荷があるか否かを探索する。この３月６日には、オーダＣによって２つの負荷が割り付けられているが、平均必要資源数までに１つの空き負荷があるので、３月６日の１つの空き負荷に、オーダＤを割り当てる。更に一日過去に遡った３月５日に空き負荷があるか否かを探索する。この３月５日には、オーダＢによって１つの負荷が割り付けられているが、平均必要資源数までに２つの空き負荷があるので、３月５日の１つの空き負荷に、オーダＤを割り当てる。このように処理することにより、オーダＤの負荷が、平均必要資源数を越えない様に、最遅完了日から最早開始可能日までに割り付けられる。
【００６９】
次に、オーダＡについては、負荷山積処理手段５３によって最遅完了日である３月４日に３つの負荷が山積されているが、山積された負荷が平均必要資源数である「３」を越えないため、図２０に示すように最遅完了日に負荷が山積される。
【００７０】
次に、オーダＥについては、負荷山積処理手段５３によって最遅完了日である３月８日に３つの負荷が山積されているが、山積された負荷が平均必要資源数である「３」を越えないため、最遅完了日に負荷が山積される。ここで負荷山崩処理手段５４は、既に割付済みの負荷を割付可能範囲で過去方向に移動可能であるか否かを検証する。ここで、オーダＡの最早開始可能日が３月１日であり、オーダＥよりオーダＡの方が納期に余裕がないので、図２１に示すように、オーダＡに関する負荷を３月３日に移動させ、オーダＡの負荷の移動で空き負荷になった３月４日にオーダＥの負荷を移動させる。
【００７１】
このような負荷山崩処理を行うことにより、平均必要資源数を越えないように過去方向に負荷山崩を行うことにより、納期を遵守しつつ、資源数を平準化することができる。
【００７２】
スケジュール結果出力手段５５は、記憶装置１０７から負荷山崩結果記憶部３４を読み出して、資源ごとおよび単位時間ごとに資源に割り当てられたオーダを関連づけて資源別スケジュール結果記憶部４１に記憶し、オーダごとに割り当てられた資源と納期予定とを関連づけてオーダ別スケジュール結果記憶部４２に記憶する。
【００７３】
このスケジュール結果出力手段５５においては、オーダ順、工程順、納期順、余裕日数の少ない順といった条件をパラメータ等で指定して出力しても良い。この資源別スケジュール結果記憶部４１およびオーダ別スケジュール結果記憶部４２は、生産管理システム等の上位システムへデータ送信されて生産管理システムで保存されても良いし、生産管理システムなどで任意のフォーマットで提示されても良い。このとき、スケジュール結果は、ガントチャート等を用いて提示されても良い。
【００７４】
上述したように、本発明の最良の実施の形態に係る生産スケジューリング装置１は、まず最も厳しい後ろ倒しの条件で負荷山積を行い、平均必要資源数を越えないように過去方向に負荷山崩を行うことにより、納期を遵守しつつ、資源数を平準化することができる。資源数を平準化することにより、例えば作業員を同じメンバーで長期的に雇用することができるので、新たな雇用が発生しないので、作業員の教育や雇用に関する余計なコストが発生しない。また、同じ作業員に継続して作業させることにより、この作業員の習熟度を高めることができ、不良品の減少や歩留まりの向上などの品質に関わる効果が期待される。
【００７５】
（その他の実施の形態）
上記のように、本発明の最良の実施の形態によって記載したが、この開示の一部をなす論述および図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例および運用技術が明らかとなる。
【００７６】
本発明はここでは記載していない様々な実施の形態等を含んでも構わない。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められる。
【図面の簡単な説明】
【００７７】
【図１】本発明の最良の実施の形態に係る生産スケジューリング装置の機能ブロック図。
【図２】本発明の最良の実施の形態に係る生産スケジューリング装置のハードウェア構成図。
【図３】本発明の最良の実施の形態に係る生産スケジューリング装置の主な処理を説明するフローチャート。
【図４】本発明の最良の実施の形態に係るオーダ情報記憶部のデータ構造とデータの一例を説明する図。
【図５】本発明の最良の実施の形態に係る作業工程フロー情報記憶部のデータ構造とデータの一例を説明する図。
【図６】本発明の最良の実施の形態に係る作業工程情報記憶部のデータ構造とデータの一例を説明する図。
【図７】本発明の最良の実施の形態に係る資源グループ情報記憶部のデータ構造とデータの一例を説明する図。
【図８】本発明の最良の実施の形態に係る資源情報記憶部のデータ構造とデータの一例を説明する図。
【図９】本発明の最良の実施の形態に係るＰＥＲＴ計算手段のフローチャートの一例。
【図１０】本発明の最良の実施の形態に係るＰＥＲＴ計算処理手段において、フォワードパスにより行われるＰＥＲＴ計算を説明する図。（その１）
【図１１】本発明の最良の実施の形態に係るＰＥＲＴ計算処理手段において、フォワードパスにより行われるＰＥＲＴ計算を説明する図。（その２）
【図１２】本発明の最良の実施の形態に係るＰＥＲＴ計算処理手段において、バックワードパスにより行われるＰＥＲＴ計算を説明する図。（その１）
【図１３】本発明の最良の実施の形態に係るＰＥＲＴ計算処理手段において、バックワードパスにより行われるＰＥＲＴ計算を説明する図。（その２）
【図１４】本発明の最良の実施の形態に係るＰＥＲＴ計算結果記憶部のデータ構造とデータの一例を説明する図。
【図１５】本発明の最良の実施の形態に係る負荷山積処理手段のフローチャートの一例。
【図１６】本発明の最良の実施の形態に係る負荷山積処理手段による処理結果の一例。
【図１７】本発明の最良の実施の形態に係る負荷山崩処理手段のフローチャートの一例。
【図１８】本発明の最良の実施の形態に係る負荷山崩処理手段による処理結果の一例。（その１）
【図１９】本発明の最良の実施の形態に係る負荷山崩処理手段による処理結果の一例。（その２）
【図２０】本発明の最良の実施の形態に係る負荷山崩処理手段による処理結果の一例。（その３）
【図２１】本発明の最良の実施の形態に係る負荷山崩処理手段による処理結果の一例。（その４）
【符号の説明】
【００７８】
１…生産スケジューリング装置
２１…オーダ情報記憶部
２２…作業工程フロー情報記憶部
２３…作業工程情報記憶部
２４…資源グループ情報記憶部
２５…資源情報記憶部
３１…スケジュールデータ記憶部
３２…ＰＥＲＴ計算結果記憶部
３３…負荷山積結果記憶部
３４…負荷山崩結果記憶部
４１…資源別スケジュール結果記憶部
４２…オーダ別スケジュール結果記憶部
５１…スケジュールデータ取込手段
５２…ＰＥＲＴ計算手段
５３…負荷山積処理手段
５４…負荷山崩処理手段
５５…スケジュール結果出力手段
１０１…中央処理制御装置
１０２…ＲＯＭ
１０３…ＲＡＭ
１０４…入力装置
１０５…表示装置
１０６…通信制御装置
１０７…記憶装置
１０８…リムーバブルディスク
１０９…入出力インタフェース
１１０…バス
【図１】
2006106829.tif 000003
【図２】
2006106829.tif 000004
【図３】
2006106829.tif 000005
【図４】
2006106829.tif 000006
【図５】
2006106829.tif 000007
【図６】
2006106829.tif 000008
【図７】
2006106829.tif 000009
【図８】
2006106829.tif 000010
【図９】
2006106829.tif 000011
【図１０】
2006106829.tif 000012
【図１１】
2006106829.tif 000013
【図１２】
2006106829.tif 000014
【図１３】
2006106829.tif 000015
【図１４】
2006106829.tif 000016
【図１５】
2006106829.tif 000017
【図１６】
2006106829.tif 000018
【図１７】
2006106829.tif 000019
【図１８】
2006106829.tif 000020
【図１９】
2006106829.tif 000021
【図２０】
2006106829.tif 000022
【図２１】
2006106829.tif 000023