(57)【要約】【課題】複数作業の同時着手を考慮して作業計画を作成する。【解決手段】本発明の一態様は、着手時刻の同期が必要である一群のリソースのうちの何れか一つである割付対象リソースに割付対象ジョブを割り付ける際に、当該一群のリソースに係る最新割付時刻に、当該一群のリソースに係る最新割付時刻に、他のリソースに割り付けられた他のジョブの着手時刻が記録されていない場合、割付対象リソースに割付対象ジョブを割り付けるとともに、最新割付時刻として、当該割付対象ジョブの着手時刻を記録する記録部と、最新割付時刻に、他のリソースに割り付けられた他のジョブの着手時刻が記録されている場合、割付対象ジョブの着手時刻が最新割付時刻に一致するときに、割付対象リソースに割付対象ジョブを割り付ける割付部と、を有するスケジューリング装置である。【選択図】図１
2019212198.tif 000002
【特許請求の範囲】
【請求項１】
着手時刻の同期が必要である一群のリソースのうちの何れか一つである割付対象リソースに割付対象ジョブを割り付ける際に、当該一群のリソースに係る最新割付時刻に、前記一群のリソースのうちの他のリソースに割り付けられた他のジョブの着手時刻が既に記録されているか否かを判定する判定部と、
当該一群のリソースに係る最新割付時刻に、前記他のリソースに割り付けられた他のジョブの着手時刻が記録されていないと判定された場合、前記割付対象リソースに前記割付対象ジョブを割り付けるとともに、前記最新割付時刻として、当該割付対象ジョブの着手時刻を記録する記録部と、
当該一群のリソースに係る最新割付時刻に、前記他のリソースに割り付けられた他のジョブの着手時刻が記録されていると判定された場合、前記割付対象ジョブの着手時刻が前記最新割付時刻として記録されている時刻に一致するか否かを判定し、一致する場合に、前記割付対象リソースに前記割付対象ジョブを割り付ける割付部と、
を有するスケジューリング装置。
【請求項２】
前記最新割付時刻として前記割付対象ジョブの着手時刻を記録する際に、前記割付対象ジョブの完了時刻である第１の完了時刻が算出され、算出された前記第１の完了時刻が、前記一群のリソースに係る最遅解放予定時刻より遅い場合に、前記記録部が、前記第１の完了時刻を最遅解放予定時刻として更新し、
前記割付部が、前記一群のリソースに割り付けるべき前記割付対象ジョブの次のジョブの着手時刻を更新された前記最遅解放予定時刻に設定する
請求項１に記載のスケジューリング装置。
【請求項３】
前記判定部が、作業シフト内のジョブ着手である場合に前記判定を行う
請求項１または２に記載のスケジューリング装置。
【請求項４】
前記判定部が、前に行うべきジョブがすべて完了している場合に前記判定を行う
請求項１または２に記載のスケジューリング装置。
【請求項５】
前記判定部が、所定の作業時間制約が満たされる場合に前記判定を行う
請求項１または２に記載のスケジューリング装置。
【請求項６】
前記作業時間制約が、（１）前のジョブ着手から後のジョブ着手までの差が、一定時間以内、一定時間以上または一定時間以下であること、（２）前のジョブの着手から後のジョブの完了予定までの差が、一定時間以内、一定時間以上または一定時間以下であること、（３）前のジョブの完了から後のジョブ着手までの差が、一定時間以内、一定時間以上または一定時間以下であること、（４）前のジョブの完了から後のジョブの完了予定までの差が、一定時間以内、一定時間以上または一定時間以下であること、のいずれかである
請求項５に記載のスケジューリング装置。
【請求項７】
着手時刻の同期が必要である一群のリソースのうちの何れか一つである割付対象リソースに割付対象ジョブを割り付ける際に、当該一群のリソースに係る最新割付時刻に、前記一群のリソースのうちの他のリソースに割り付けられた他のジョブの着手時刻が既に記録されているか否かを判定するステップと、
当該一群のリソースに係る最新割付時刻に、前記他のリソースに割り付けられた他のジョブの着手時刻が記録されていない場合、前記割付対象リソースに前記割付対象ジョブを割り付けるとともに、前記最新割付時刻として、当該割付対象ジョブの着手時刻を記録するステップと、
当該一群のリソースに係る最新割付時刻に、前記他のリソースに割り付けられた他のジョブの着手時刻が記録されている場合、前記割付対象ジョブの着手時刻が前記最新割付時刻として記録されている時刻に一致するか否かを判定し、一致する場合に、前記割付対象リソースに前記割付対象ジョブを割り付けるステップと、
を有するスケジューリング方法。
【請求項８】
着手時刻の同期が必要である一群のリソースのうちの何れか一つである割付対象リソースに割付対象ジョブを割り付ける際に、当該一群のリソースに係る最新割付時刻に、前記一群のリソースのうちの他のリソースに割り付けられた他のジョブの着手時刻が既に記録されているか否かを判定するステップと、
当該一群のリソースに係る最新割付時刻に、前記他のリソースに割り付けられた他のジョブの着手時刻が記録されていない場合、前記割付対象リソースに前記割付対象ジョブを割り付けるとともに、前記最新割付時刻として、当該割付対象ジョブの着手時刻を記録するステップと、
当該一群のリソースに係る最新割付時刻に、前記他のリソースに割り付けられた他のジョブの着手時刻が記録されている場合、前記割付対象ジョブの着手時刻が前記最新割付時刻として記録されている時刻に一致するか否かを判定し、一致する場合に、前記割付対象リソースに前記割付対象ジョブを割り付けるステップと、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スケジューリング装置、スケジューリング方法およびプログラムに関する。
【背景技術】
【０００２】
例えば、特許文献１には、複数の処理ユニットで並列的かつ個別のタイミングで作業がなされた複数の基板を所定の搬送先へ搬送する作業のスケジュールを含む、基板処理装置の作業スケジュールを作成するスケジューリング装置が開示されている。特許文献１に記載されている装置では、洗浄処理後の搬出時に、複数の基板を順次に搬出する順次搬出フローまたは複数の基板を一括して搬出する一括搬出フローが選択される。特許文献１に記載されている装置によれば、順次搬送フローよりも一括搬送フローの方が複数の基板の搬出が早く完了すると判断される場合に、一括搬送フローを採用することで基板処理装置のスループットの向上が図られる。
【０００３】
また、特許文献２には、所定の回数または所定の計算時間が満了するまで複数の工程の何れかの着手可能時刻をずらして得られた複数のスケジュール情報のうち、最も工程完了時刻の早いスケジュール情報を最適スケジュール情報として決定するスケジューリング装置が開示されている。特許文献２に記載されている装置によれば、複数のスケジュール情報を比較して、最も早く製品が完成するスケジュールを作成することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第６１０５９８２号公報
【特許文献２】特許第５３４４９３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
熱処理や表面処理などのバッチ処理、および、ロボット等を用いて無人で複数の部品を自動で加工する工程においては、作業計画を立てる上で、以下の点を考慮しなければならない場合がある。すなわち、バッチ処理では、例えば、多数の部品を同時投入可能な炉などにおいて、一度の処理で複数の部品が同時に処理される。そのため、バッチ処理では、処理の着手時刻が全部品で同じであり、また、完了時刻も全部品で同じになる。一方、無人加工では、例えば、作業時間が異なる複数の部品が同時に加工されるが、加工中は作業者が加工設備周辺に立ち入ることができず、全部品の加工が完了するまで部品を設備から取り出すことができない場合がある。この場合、作業の着手時刻は全部品で同じであり、また、完了時刻も全部品で同じである。すなわち、バッチ処理や無人加工について作業計画を立てる場合、複数の作業について着手時刻と完了時刻の同期を考慮しなければならないことがある。
【０００６】
しかしながら、従来のスケジューリング装置では、例えば、部品毎に各部品に対する作業を着手できるか否かが判断され、着手できる場合にはそのタイミングでその作業が着手されるようスケジュールが作成される。すなわち、このようなスケジューリング装置では、作業の着手時刻や完了時刻を同一としなければならない場合を考慮することができない。したがって、このようなスケジューリング装置は、バッチ処理や無人加工の工程には適用することができない。そのため、このようなスケジューリング装置を用いる場合、スケジューリング装置で作成されたスケジュールを手作業で修正するか、もしくは、このようなスケジューリング装置を使用せずに、表計算ソフト等のツールで、手動でスケジュールを作成せざるを得ない。
【０００７】
本発明は、上記の事情に鑑みてなされたものであり、複数の作業の同時着手を考慮してスケジュールを作成することができるスケジューリング装置、スケジューリング方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明の一態様は、着手時刻の同期が必要である一群のリソースのうちの何れか一つである割付対象リソースに割付対象ジョブを割り付ける際に、当該一群のリソースに係る最新割付時刻に、前記一群のリソースのうちの他のリソースに割り付けられた他のジョブの着手時刻が既に記録されているか否かを判定する判定部と、当該一群のリソースに係る最新割付時刻に、前記他のリソースに割り付けられた他のジョブの着手時刻が記録されていないと判定された場合、前記割付対象リソースに前記割付対象ジョブを割り付けるとともに、前記最新割付時刻として、当該割付対象ジョブの着手時刻を記録する記録部と、当該一群のリソースに係る最新割付時刻に、前記他のリソースに割り付けられた他のジョブの着手時刻が記録されていると判定された場合、前記割付対象ジョブの着手時刻が前記最新割付時刻として記録されている時刻に一致するか否かを判定し、一致する場合に、前記割付対象リソースに前記割付対象ジョブを割り付ける割付部と、を有するスケジューリング装置である。
【０００９】
また、本発明の一態様は、上記スケジューリング装置であって、前記最新割付時刻として前記割付対象ジョブの着手時刻を記録する際に、前記割付対象ジョブの完了時刻である第１の完了時刻が算出され、算出された前記第１の完了時刻が、前記一群のリソースに係る最遅解放予定時刻より遅い場合に、前記記録部が、前記第１の完了時刻を最遅解放予定時刻として更新し、前記割付部が、前記一群のリソースに割り付けるべき前記割付対象ジョブの次のジョブの着手時刻を更新された前記最遅解放予定時刻に設定する。
【００１０】
また、本発明の一態様は、上記スケジューリング装置であって、前記判定部が、作業シフト内のジョブ着手である場合に前記判定を行う。
【００１１】
また、本発明の一態様は、上記スケジューリング装置であって、前記判定部が、前に行うべきジョブがすべて完了している場合に前記判定を行う。
【００１２】
また、本発明の一態様は、上記スケジューリング装置であって、前記判定部が、所定の作業時間制約が満たされる場合に前記判定を行う。
【００１３】
また、本発明の一態様は、上記スケジューリング装置であって、前記作業時間制約が、（１）前のジョブ着手から後のジョブ着手までの差が、一定時間以内、一定時間以上または一定時間以下であること、（２）前のジョブの着手から後のジョブの完了予定までの差が、一定時間以内、一定時間以上または一定時間以下であること、（３）前のジョブの完了から後のジョブ着手までの差が、一定時間以内、一定時間以上または一定時間以下であること、（４）前のジョブの完了から後のジョブの完了予定までの差が、一定時間以内、一定時間以上または一定時間以下であること、のいずれかである。
【００１４】
また、本発明の一態様は、着手時刻の同期が必要である一群のリソースのうちの何れか一つである割付対象リソースに割付対象ジョブを割り付ける際に、当該一群のリソースに係る最新割付時刻に、前記一群のリソースのうちの他のリソースに割り付けられた他のジョブの着手時刻が既に記録されているか否かを判定するステップと、当該一群のリソースに係る最新割付時刻に、前記他のリソースに割り付けられた他のジョブの着手時刻が記録されていない場合、前記割付対象リソースに前記割付対象ジョブを割り付けるとともに、前記最新割付時刻として、当該割付対象ジョブの着手時刻を記録するステップと、当該一群のリソースに係る最新割付時刻に、前記他のリソースに割り付けられた他のジョブの着手時刻が記録されている場合、前記割付対象ジョブの着手時刻が前記最新割付時刻として記録されている時刻に一致するか否かを判定し、一致する場合に、前記割付対象リソースに前記割付対象ジョブを割り付けるステップと、を有するスケジューリング方法である。
【００１５】
また、本発明の一態様は、着手時刻の同期が必要である一群のリソースのうちの何れか一つである割付対象リソースに割付対象ジョブを割り付ける際に、当該一群のリソースに係る最新割付時刻に、前記一群のリソースのうちの他のリソースに割り付けられた他のジョブの着手時刻が既に記録されているか否かを判定するステップと、当該一群のリソースに係る最新割付時刻に、前記他のリソースに割り付けられた他のジョブの着手時刻が記録されていない場合、前記割付対象リソースに前記割付対象ジョブを割り付けるとともに、前記最新割付時刻として、当該割付対象ジョブの着手時刻を記録するステップと、当該一群のリソースに係る最新割付時刻に、前記他のリソースに割り付けられた他のジョブの着手時刻が記録されている場合、前記割付対象ジョブの着手時刻が前記最新割付時刻として記録されている時刻に一致するか否かを判定し、一致する場合に、前記割付対象リソースに前記割付対象ジョブを割り付けるステップと、をコンピュータに実行させるプログラムである。
【発明の効果】
【００１６】
本発明の各態様によれば、同時着手を考慮してスケジュールを作成することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態に係るスケジューリング装置の構成例を示すブロック図である。
【図２】図１に示すジョブテーブル３１の構成例の一部を示す図である。
【図３】図１に示すリソースマスタ３２の構成例の一部を示す図である。
【図４】図１に示す制約条件テーブル３３の構成例を説明するための図である。
【図５】図１に示す制約条件テーブル３３の構成例を説明するための図である。
【図６】図１に示すスケジューリング装置１の動作例を示すフローチャートである。
【図７】図１に示すスケジューリング装置１の動作例を示すフローチャートである。
【図８】図１に示すスケジューリング装置１の動作例を示すフローチャートである。
【図９】図１に示すスケジューリング装置１の動作例を示すフローチャートである。
【図１０】図１に示すスケジューリング装置１の動作例を説明するためのガンチャートである。
【図１１】図１に示すスケジューリング装置１の動作例を説明するためのガンチャートである。
【図１２】本発明の一実施形態に係るコンピュータの構成例を示す概略ブロック図である。
【発明を実施するための形態】
【００１８】
＜実施形態＞
以下、図１〜図１２を参照して本発明の実施形態について説明する。
【００１９】
図１は、本発明の一実施形態に係るスケジューリング装置１の構成例を示すブロック図である。図１に示すスケジューリング装置１は、例えば、サーバー、パーソナルコンピュータ等のコンピュータを用いて構成されていて、ハードウェアとソフトウェアとの組み合わせによって構成されたスケジューリング部２とデータベース３を備えている。スケジューリング部２は、判定部２１と記録部２２と割付部２３を備える。データベース３は、ジョブテーブル３１とリソースマスタ３２と制約条件テーブル３３とスケジュールデータ３４を含む。
【００２０】
なお、本実施形態では次の各語を以下の意味で用いる。「ジョブ」（ｊｏｂ）は「作業」の意味と「工程」の意味を含む。「作業」は「仕事」を意味する。「工程」は「作業の区切り（段階）」を意味する。「リソース」は「ジョブ」に供される「資源」であり、例えば、設備、治工具、場所、作業者等に対応する。
【００２１】
図１に示すスケジューリング部２は、データベース３に格納されているジョブテーブル３１とリソースマスタ３２と制約条件テーブル３３とを参照し、所定の作業計画を作成し、スケジュールデータ３４としてデータベース３に格納する。スケジュールデータ３４は、作成した作業計画を示す情報であり、オーダ（発注）毎に、各オーダに対応する複数の工程について、各工程の着手時刻と完了時刻を定義する情報を少なくとも含む。ここで、図２〜図５を参照して、図１に示すジョブテーブル３１とリソースマスタ３２と制約条件テーブル３３の構成例について説明する。図２は、図１に示すジョブテーブル３１の構成例の一部（レコード３１１）を示す図である。図１に示すジョブテーブル３１は、複数のレコード３１１を含んで構成されている。
【００２２】
図２に示すレコード３１１は、１つのジョブを定義する複数項目（複数フィールド）のデータから構成され、「ジョブＩＤ」、「ジョブ内容」、「次ジョブＩＤ」、「割付リソース」、「作業時間」等の各項目のデータを含む。「ジョブＩＤ」は、ジョブのＩＤ（識別符号）を示す。「ジョブ内容」は、作業の内容を示し、部品等の作業対象とその作業対象に対する組立、加工等の作業内容を示すデータ、試運転、出荷等の作業の種別を示すデータ等で構成される。「次ジョブＩＤ」は、当該ジョブの次のジョブのＩＤを表す。「割付リソース」は、当該ジョブに割り付けるリソースＩＤ（リソースのＩＤ）と数量を表す。「作業時間」は、当該ジョブの作業の時間を表す。
【００２３】
図３は、図１に示すリソースマスタ３２の構成例の一部（レコード３２１）を示す図である。図１に示すリソースマスタ３２は、複数のレコード３２１を含んで構成される。図３に示すレコード３２１は、１つのリソースを定義する複数項目（複数フィールド）のデータから構成され、「リソースＩＤ」、「リソース種別」、「リソース名称」、「数量」、「稼働カレンダ」、「同期要否フラグ」、「最新割付時刻」、「最遅解放予定時刻」等の複数項目（複数フィールド）のデータを含む。「リソースＩＤ」は、リソースのＩＤを示し、例えば「Ａ００００１」というデータを含む。「リソース種別」は、リソースの種別（設備、治工具、場所、作業者）等を示し、例えば「設備」というデータを含む。「リソース名称」は、リソースの名称を示し、例えば「熱処理炉」というデータを含む。「数量」は、リソースの数量（容量）を示し、例えば「１０」（熱処理炉に同時投入可能な部品数）というデータを含む。「稼働カレンダ」は、稼働時間帯を表すカレンダの情報を示し、例えば「２０１８／０３／０１  ０８：００：００〜１７：００：００」（年／月／日  時：分：秒〜時：分：秒）というデータを含む。「同期要否フラグ」は、着手時刻と完了時刻を同期する必要があるか否かを示すフラグであり、例えば「１」というデータを含む。「最新割付時刻」は、当該リソースを使用する工程のうち、最初に作業が着手された時刻を示し、例えば「２０１８／０３／０１  １０：００：００」というデータを含む。「最新割付時刻」は、当該リソースの着手時刻を同期するために記録および使用される。「最遅解放予定時刻」は、当該リソースを使用する工程のうち、最後に作業が完了する予定の時刻を示し、例えば「２０１８／０３／０１  １５：００：００」というデータを含む。「最遅解放予定時刻」は、当該リソースの完了時刻を同期するために記録および使用される。なお、「最新割付時刻」の初期値は空（ＮＵＬＬ）であり、「最遅解放予定時刻」の初期値は「０」（最も早い時刻）である。
【００２４】
図４および図５は、図１に示す制約条件テーブル３３を構成するデータの例を２つの図に分けて示す図である。図４および図５は、「１」から「１０」までの番号と制約条件とその制約条件の判断手法、判断で用いるデータ等を対応づけて示す。制約条件は作業計画を作成する際に判断が必要となる条件である。例えば、制約条件が満たされる場合にジョブに対してリソースの割り付けが許され、制約条件が満たされない場合にはジョブに対してリソースの割り付けを行うことができない。制約条件は、例えばジョブ毎あるいはリソース毎に任意に追加または削除することができる。図１に示す制約条件テーブル３３は、作業計画を作成する際の１または複数の制約条件の内容を表すデータと、各制約条件を判断する際に使用されるデータを含んで構成されている。
【００２５】
番号１の制約条件の内容は、「作業シフト内の着手」である。「作業シフト内の着手」とは、作業を着手しようとする時刻が、作業シフト時間内に入っているか否かをチェックすることで判断される。ここで、「作業シフト」とは、一定の時間帯毎に交代制で作業を行う場合に作業を実際に行う時間帯である。「作業シフト内の着手」とは、例えば休憩時間や引き継ぎ時間等の作業シフト外ではなく、作業シフト内で作業に着手（＝開始）することである。制約条件テーブル３３は、番号１の制約条件に対応するため、例えば、その制約条件を表すデータ、リソース毎に作業シフトを表すデータを含む。制約条件を表すデータは、例えば、予め用意した判断式による判断を行うか否かを示すフラグ、判断式そのもの等から構成される。
【００２６】
番号２の制約条件の内容は、「着手シフトに従った着手タイミング」である。「着手シフトに従った着手タイミング」とは、着手する時刻が、着手シフト内に入っているか否かをチェックすることで判断される。ここで、「着手シフト」とは、作業を着手することができる時間帯である。制約条件テーブル３３は、番号２の制約条件に対応するため、例えば、その制約条件を表すデータ、リソース毎の着手シフトを表すデータを含む。
【００２７】
番号３の制約条件の内容は、「作業シフト時間内に作業が完了するように着手している」である。完了時刻を計算し、それが、当該リソースに紐づいている作業シフトの時間内であるかをチェックすることで判断される。制約条件テーブル３３は、番号３の制約条件に対応するため、例えば、その制約条件を表すデータ、リソース毎に作業シフトを表すデータを含む。
【００２８】
番号４の制約条件の内容は、「１日の投入量上限内」である。先頭工程に着手したオーダ数を記録する配列（１データ／１日）を持たせ、先頭工程に着手するたびに記録し、上限に達した時点で、先頭工程の着手をやめる。制約条件テーブル３３は、番号４の制約条件に対応するため、例えば、その制約条件を表すデータ、リソース毎に、投入量を記録するための格納領域と、１日の上限値を表すデータを含む。
【００２９】
番号５の制約条件の内容は、「残業時間が上限時間内」である。作業者毎に、月単位残業時間のデータを記録する変数を持たせ、作業計画上の残業時間を記録する。残業時間上限に達するまで、定時後／休日に作業可とする計算を行う。制約条件テーブル３３は、番号５の制約条件に対応するため、例えば、その制約条件を表すデータ、作業者毎に、月単位で残業時間を記録するための格納領域と、残業時間の上限値を表すデータを含む。
【００３０】
番号６の制約条件の内容は、「担当する作業者に、当該工程を行う力量がある」である。工程毎に、その工程を行うのに必要な力量を定義するとともに、作業者と力量とを紐づける２次元配列を用意する。担当する作業者が、必要な力量を持っているかをチェックすることで判断される。制約条件テーブル３３は、番号６の制約条件に対応するため、例えば、その制約条件を表すデータ、作業者毎に各工程を行う際の力量を記録するための格納領域と、各工程を行うのに必要な力量を表すデータを含む。
【００３１】
番号７の制約条件の内容は、「当該工程に必要な子部品がそろっている」である。工程ごとに、その工程を行うのに必要な部品と必要量の一覧を定義するとともに、部品の在庫量と、将来の納入予定のデータを用意する。着手したいタイミングで、当該工程に必要な部品の在庫が必要量以上かをチェックすることで判断される。また、着手にともない、納入予定のデータに基づき、在庫数の増減管理を行う。制約条件テーブル３３は、番号７の制約条件に対応するため、例えば、その制約条件を表すデータ、工程毎に必要な部品と必要量の一覧を定義するデータ、部品の在庫量を格納する格納領域、将来の納入予定のデータ等を含む。
【００３２】
番号８の制約条件の内容は、「クレーンを使用する工程の場合、干渉は起きない」である。クレーン毎に、守備範囲と現在位置のデータを持たせるとともに、クレーン使用工程に、移動元と移動先のデータを持たせる。着手するタイミングで、近くのクレーンを移動元に呼ぶことができるか、移動元から移動先に動かすことができるかをチェックすることで判断される。制約条件テーブル３３は、番号８の制約条件に対応するため、例えば、その制約条件を表すデータ、工程毎にクレーンを使用するか否かを示すデータ、クレーン毎の守備範囲と現在位置のデータを格納する格納領域、クレーン使用工程毎に移動元と移動先のデータを格納する格納領域等を含む。
【００３３】
番号９の制約条件の内容は、「前工程はすべて完了している」である。工程間の前後関係を示すデータを持たせとともに、スケジューリング計算中に、各工程のスケジュール計算が完了しているか否かのフラグを持たせる。着手のタイミングで、前工程がすべて完了していることをチェックすることで判断される。制約条件テーブル３３は、番号９の制約条件に対応するため、例えば、その制約条件を表すデータ、工程間の前後関係を示すデータ、各工程のスケジュール計算が完了しているか否かを示すフラグの格納領域等を含む。
【００３４】
番号１０の制約条件の内容は、「作業時間制約（前工程着手／完了から、一定時間以内／以上／以下に着手）は満たしている」である。定義に応じて、以下をチェックすることで判断される。すなわち、（１）前工程着手時刻と後工程着手時刻の差が、一定時間以内／以上／以下か否か、（２）前工程着手時刻と後工程完了予定時刻の差が、一定時間以内／以上／以下か否か、（３）前工程完了時刻と後工程着手時刻の差が、一定時間以内／以上／以下か否か、（４）前工程完了時刻と後工程完了予定時刻の差が、一定時間以内／以上／以下か否かが判断される。制約条件テーブル３３は、番号１０の制約条件に対応するため、例えば、その制約条件を表すデータ等を含む。
【００３５】
次に、図６〜図１１を参照して、図１に示すスケジューリング装置１の動作例について説明する。図６は、図１に示すスケジューリング装置１の動作例を示すフローチャートである。図７は、図６に示すステップＳ１１およびステップＳ１２でスケジューリング部２がスケジュールを作成する処理を示すフローチャートである。図８は、図７に示すステップＳ２６でスケジューリング部２が着手イベントを処理する際の処理の流れを示すフローチャートである。図９は、図７に示すステップＳ２５でスケジューリング部２が完了イベントを処理する際の処理の流れを示すフローチャートである。図１０および図１１は、図１に示すスケジューリング装置１の動作例を説明するためのガンチャートである。
【００３６】
図１に示すスケジューリング装置１は、図６に示すようにしてスケジュール（作業計画）の探索処理を行う。まず、スケジューリング装置１は、スケジューリング部２によって、初期条件でスケジュールを作成する（ステップＳ１１）。ステップＳ１１において、スケジューリング部２は、図７に示すようにして、スケジュールを作成する。
【００３７】
図７に示す処理では、スケジューリング部２が、まず、シミュレーション時刻をシミュレーション着手時刻に進める（ステップＳ２１）。本実施形態において、スケジューリング部２は、スケジューリング対象である各オーダにおける各部品の各工程の着手および完了をイベント（事象）として捉え、各着手イベントおよび各完了イベントが所定の制約に基づき時間軸に沿って実行される様子を、シミュレーション時刻を進めながらシミュレーションする。イベントには、着手イベントと完了イベントがあり、各工程は、着手イベントと完了イベントで定義される。なお、本実施形態では、着手イベントに対して着手時刻を仮に設定することを、着手イベントを生成することといい、仮に設定した着手時刻をずらすこと（遅らせること）を、着手イベントを再生成することという。
【００３８】
次に、スケジューリング部２は、全イベントが完了したか否かを判断する（ステップＳ２２）。全イベントに対する処理が完了した場合（ステップＳ２２で「Ｙｅｓ」の場合）、スケジューリング部２は図７に示す処理を終了する。
【００３９】
一方、全イベントに対する処理が完了していない場合（ステップＳ２２で「Ｎｏ」の場合）、スケジューリング部２は、シミュレーション時刻を、最も近い、着手イベント、もしくは、完了イベントの時刻に合わせる（ステップＳ２３）。次に、スケジューリング部２は、現在のシミュレーション時刻に完了時刻が設定された完了イベントが存在するか否かを判断する（ステップＳ２４）。
【００４０】
完了イベントが存在する場合（ステップＳ２４で「Ｙｅｓ」の場合）スケジューリング部２は、完了イベントを一つ選択し、処理を行う（ステップＳ２５）。一方、完了イベントが存在しない場合（ステップＳ２４で「Ｎｏ」の場合）、スケジューリング部２は、着手イベントを一つ選択し、処理を行う（ステップＳ２６）。ステップＳ２４〜ステップＳ６の処理では、当該シミュレーション時刻に完了イベントが存在している場合、まず、すべての完了イベントに対する処理が実行され、完了イベントが存在しなくなった後に着手イベントに対する処理が実行される。
【００４１】
ステップＳ２６において、スケジューリング部２は、図８に示す処理を行う。図８に示す処理では、スケジューリング部２が、まず、当該工程（図７のステップＳ２６で選択された着手イベントを含む工程）に必要なリソースがあいているか否かを判断する（ステップＳ３１）。
【００４２】
必要なリソースがあいている場合（ステップＳ３１で「Ｙｅｓ」の場合）、スケジューリング部２は、その他制約条件が満たされているか否かを判断する（ステップＳ３２）。その他制約条件とは、図１に示す制約条件テーブル３３で定義された図４および図５を参照して説明した制約条件である。
【００４３】
その他制約条件が満たされている場合（ステップＳ３２で「Ｙｅｓ」の場合）、スケジューリング部２は、当該工程に必要なリソースが、着手または完了の同期が必要か否かを判断する（ステップＳ３３）。ステップＳ３３においてスケジューリング部２は、着手または完了の同期が必要か否かについて、リソースマスタ３２の「同期要否フラグ」の値で確認することができる。
【００４４】
着手または完了の同期が必要な場合（ステップＳ３３で「Ｙｅｓ」の場合）、スケジューリング部２は、着手しようとしている時刻（シミュレーション時刻）が、当該工程で使用するリソースの最新割付時刻に一致するか、または、最新割付時刻が空（未設定）であるか、否かを判断する（ステップＳ３４）。ここで、ステップＳ３４においてスケジューリング部２は、リソースマスタ３２（レコード３２１）の「最新割付時刻」を参照する。
【００４５】
着手しようとしている時刻が当該工程で使用するリソースの最新割付時刻に一致するか、または、最新割付時刻が空の場合（ステップＳ３４で「Ｙｅｓ」の場合）、スケジューリング部２は、当該工程を着手可能と判断し、必要なリソースを占有する（ステップＳ３５）。すなわち、ステップＳ３５でスケジューリング部２は、当該リソースの最新割付時刻に当該工程の着手時刻を記録する。また、ステップＳ３５でスケジューリング部２は、当該工程の完了時刻を計算し、最遅解放予定時刻に記録（更新）する。ステップＳ３５でスケジューリング部２は、リソースマスタ３２（レコード３２１）の「最新割付時刻」に着手時刻（シミュレーション時刻）を記録し、着手時刻にジョブテーブル３１に記憶されている「作業時間」を加えることで完了時刻を計算し、リソースマスタ３２（レコード３２１）の「最遅解放予定時刻」に、値が設定されていない場合には計算した完了時刻を記録し、値が設定されている場合には計算した完了時刻が設定値より遅いとき、計算した完了時刻で更新する。ここで、スケジューリング部２は、図８に示す処理を終了する。
【００４６】
一方、必要なリソースがあいていない場合（ステップＳ３１で「Ｎｏ」の場合）、その他制約条件が満たされていない場合（ステップＳ３２で「Ｎｏ」の場合）、または、着手しようとしている時刻が当該工程で使用するリソースの最新割付時刻に一致せず、かつ、最新割付時刻が空でない場合（ステップＳ３４で「Ｎｏ」の場合）、スケジューリング部２は、その作業（工程）は着手せず、シミュレーション時刻を先延ばしにして、着手イベントを再生成する（ステップＳ３６）。すなわち、ステップＳ３６において、スケジューリング部２は、選択した着手イベントの時刻を後にずらした後、図８に示す処理を終了する。
【００４７】
また、着手および完了の同期が必要でない場合（ステップＳ３３で「Ｎｏ」の場合）、スケジューリング部２は、当該工程を着手可能と判断し、必要なリソースを占有する（ステップＳ３７）。すなわち、ステップＳ３７でスケジューリング部２は、当該工程の着手時刻を記録するとともに、必要なリソースの割り当てを記録した後、図８に示す処理を終了する。
【００４８】
一方、図７のステップＳ２５において、スケジューリング部２は、図９に示す処理を行う。図９に示す処理では、スケジューリング部２が、まず、当該工程（図７のステップＳ２５で選択された完了イベントを含む工程）の作業完了時刻を記録する（ステップＳ４１）。次に、スケジューリング部２は、当該工程に割り付けられていたリソースの「最新割付時刻」をリセット（空に）する（ステップＳ４２）。次に、スケジューリング部２は、次工程が存在するか否かを判断する（ステップＳ４３）。次工程が存在する場合（ステップＳ４３で「Ｙｅｓ」の場合）、スケジューリング部２は、現在のシミュレーション時刻で、次工程の着手イベントを生成する（ステップＳ４４）。
【００４９】
次に、シミュレーション部２は、現在のシミュレーション時刻が、ステップＳ４４で生成された着手イベントを含む次工程で割り当てが必要なリソースの「最遅解放予定時刻」と一致するか否かを判断する（ステップＳ４５）。一方、現在のシミュレーション時刻が「最遅解放予定時刻」と一致する場合あるいは「最遅解放予定時刻」が「０」の場合（ステップＳ４５で「Ｙｅｓ」の場合）、シミュレーション部２は、次工程の着手イベントの着手時刻を現在のシミュレーション時刻に設定し（ステップＳ４６）、図１０に示す処理を終了する。他方、現在のシミュレーション時刻が「最遅解放予定時刻」と一致せず、かつ、「最遅解放予定時刻」が「０」でない場合（ステップＳ４５で「Ｎｏ」の場合）、シミュレーション部２は、次工程の着手イベントの着手時刻を「最遅解放予定時刻」に設定し（ステップＳ４７）、図１０に示す処理を終了する。
【００５０】
図６に示すステップＳ１１では、スケジューリング部２は、図７、図８および図９を参照して説明した処理によってスケジュールを作成し、最適解として記録する。次に、スケジューリング部２は、ジョブの着手順を変更して、ステップＳ１１と同様にしてスケジュールを作成し、改善されれば（従来よりも短時間で完了するスケジュールが作成されれば）、当該スケジュールで最適解を置き換える（ステップＳ１２）。次に、スケジューリング部２は、改善解が見つかったか否かを判断する（ステップＳ１３）。改善解が見つかった場合（ステップＳ１３で「Ｙｅｓ」の場合）、スケジューリング部２は、ステップＳ１２の処理を再度実行する。一方、改善解が見つからなかった場合（ステップＳ１３で「Ｎｏ」の場合）、スケジューリング部２は、計算を終了する（ステップＳ１４）。
【００５１】
次に、図１０および図１１を参照して、本実施形態が奏する効果について説明する。図１０（ａ）は、バッチ処理において、作業の着手と完了の同期を考慮せず、９つのジョブＪｏｂ１〜Ｊｏｂ９をスケジューリングした例を示し、図１０（ｂ）は本実施形態によるスケジューリングの例を示す。横軸は時間軸であり、図１０に示す例では、各リソースＭａｃｈｉｎｅ  Ａ１〜Ａ３は、例えば３つのジョブを並行して処理することができる同一の設備（例えば熱処理炉）である。この場合、リソースＭａｃｈｉｎｅ  Ａ１〜Ａ３を用いて行われるジョブについては、着手時刻と完了時刻が同期していなければならない。しかし、同期を考慮していない図１０（ａ）に示す例では、ジョブＪｏｂ１〜Ｊｏｂ３の着手時刻が同一でないにもかかわらず、最初に着手したジョブＪｏｂ１が完了する前にジョブＪｏｂ２〜Ｊｏｂ３が着手されてしまっている。そのため、図１０（ａ）に示すスケジュールは、実行することができない。一方、本実施形態において同期を考慮して作成した図１０（ｂ）に示すスケジュールでは、ジョブＪｏｂ１の着手時刻が「最新割付時刻」に設定されるので、着手時刻が「最新割付時刻」より遅いジョブＪｏｂ２〜Ｊｏｂ３が、ジョブＪｏｂ１が完了する前に着手されることはない。また、ジョブＪｏｂ１が完了した後は、ジョブＪｏｂ１に関する「最新割付時刻」の設定に伴って設定された「最遅解放予定時刻」で、ジョブＪｏｂ４〜Ｊｏｂ６が同時に着手され、また、ジョブＪｏｂ４〜Ｊｏｂ６のうち最長の作業時間経過後にジョブＪｏｂ４〜Ｊｏｂ６が同時に完了している。
【００５２】
一方、図１１（ａ）は、無人加工において、作業の着手と完了の同期を考慮せず、８つのジョブＪｏｂ１〜Ｊｏｂ８をスケジューリングした例を示し、図１１（ｂ）は本実施形態によるスケジューリングの例を示す。横軸は時間軸であり、図１１に示す例では、各リソースＭａｃｈｉｎｅ  Ａ１〜Ａ３は、例えば３つのジョブを並行または連続して処理することができる同一の設備である。この場合、リソースＭａｃｈｉｎｅ  Ａ１〜Ａ３を用いて行われるジョブについては、着手時刻と完了時刻が同期していなければならない。しかし、同期を考慮していない図１１（ａ）に示す例では、同時に着手したジョブＪｏｂ１〜Ｊｏｂ３のうち、ジョブＪｏｂ２とジョブＪｏｂ３が完了していないのにもかかわらず、ジョブＪｏｂ１が完了するとジョブＪｏｂ４が着手されてしまっている。そのため、図１１（ａ）に示すスケジュールは、実行することができない。一方、本実施形態において同期を考慮して作成した図１１（ｂ）に示すスケジュールでは、最も作業時間が長いジョブＪｏｂ２の完了時刻が「最遅解放予定時刻」に設定されるので、リソースＭａｃｈｉｎｅ  Ａ１〜Ａ３の次の着手時刻は、「最遅解放予定時刻」以降に設定される。したがって、ジョブＪｏｂ２とジョブＪｏｂ３が完了していないのに、ジョブＪｏｂ４が着手されることはない。
【００５３】
以上のように、本実施形態では、定義する各リソースに対して、着手時刻と完了時刻を同期する必要があるかのフラグ、最新割付時刻、および最遅解放予定時刻を定義している。また、リソースへの最初の作業割付時には、最新割付時刻に着手時刻を記録し、それ以降の作業割付時には、着手時刻が最新割付時刻と同一か否かを判定し、同一なら割付可、同一でないなら割付不可とすることで、全部品の同時着手を実現している。また、作業着手時に、その作業の作業時間と、稼働シフトから、完了予定時刻を計算し、最遅解放予定時刻を記録している。作業完了時には、完了時刻が最遅解放予定時刻と同一か否かを判定し、同一なら次工程は即座に着手可、同一でないなら、次工程の着手可能時刻を最遅解放予定時刻に設定することで、全部品が同時完了しているとみなされるようにするスケジュールの作成を実現している（みなし同時完了を実現している）。一方で、さらに短い時間で完了するスケジュールを求めるため、ジョブの着手タイミングを変更した条件で、スケジュールを複数作成し、より良いスケジュールを探索する処理を組み込んでいる。探索処理では、ジョブの着手タイミングを変更することで、例えば、同一バッチだったある部品が別バッチに組み込まれることで、スケジュールが変化する。
【００５４】
本実施形態によれば、同時着手／みなし同時完了制約を考慮したスケジューリングが可能となり、熱処理や表面処理などのバッチ処理、および、無人で複数の部品を自動で加工する工程において、実行不可能な作業計画を回避し、実際にスケジューリングが計算したとおりに作業を行うことが可能になる。
【００５５】
また、探索処理を組み込むことで、同時着手／みなし同時完了制約を順守しつつ、より短期間で完了するスケジュールを得ることもできる。
【００５６】
また、本実施形態では、以下の制約条件を考慮することができる。１つの制約条件は、作業シフト内の着手であるか否かということである。この場合、制約条件を考慮する手法として、リソースに作業シフトのデータを持たせ、着手しようとしている時刻が、作業シフト時間内に入っているかをチェックすることができる。この構成によれば、作業シフトを考慮した、より正確なスケジュールを計算することができる。
【００５７】
また、本実施形態では、以下の制約条件を考慮することができる。１つの制約条件は、前工程はすべて完了しているか否かということである。制約条件を考慮する手法として、工程間の前後関係データを持たせとともに、スケジューリング計算中に、各工程のスケジュール計算が完了しているか否かのフラグを持たせる。着手のタイミングで、前工程がすべて完了していることをチェックすることができる。この構成によれば、前後関係を考慮し、前後工程と着手／終了のタイミングが逆転しないスケジュールを計算することができる。
【００５８】
また、本実施形態では、以下の制約条件を考慮することができる。１つの制約条件は、作業時間制約（前工程着手／完了から、一定時間以内／以上／以下に着手）は満たしているか否かということである。制約条件を考慮する手法としては、時間的制約を考慮するということであり、具体的には、定義に応じて、以下をチェックするということである。（１）前工程着手から後工程着手の差が、一定時間以内／以上／以下であるということをチェックする。（２）前工程着手から後工程完了予定の差が、一定時間以内／以上／以下であるということをチェックする。（３）前工程完了から後工程着手の差が、一定時間以内／以上／以下であるということをチェックする。（４）前工程完了から後工程完了予定の差が、一定時間以内／以上／以下であるということをチェックする。この構成によれば、前後工程間の作業時間制約を考慮し、より実作業に近いスケジュールを計算することができる。
【００５９】
以上のように本実施形態によれば、同時着手／みなし同時完了制約を考慮したスケジューリングが可能となり、熱処理や表面処理などのバッチ処理、および、無人で複数の部品を自動で加工する工程において、実行不可能な作業計画を回避し、実際にスケジューリングが計算したとおりに作業を行うことが可能になる。また、探索処理を組み込むことで、同時着手／みなし同時完了制約を順守しつつ、より短期間で完了するスケジュールを得ることもできる。
【００６０】
なお、図１に示すスケジューリング装置１において、スケジューリング部２は、判定部２１と記録部２２と割付部２３を備えるが、各部の機能は次の通りである。すなわち、判定部２１は、着手時刻の同期が必要である一群のリソースのうちの何れか一つである割付対象リソースに割付対象ジョブを割り付ける際に、当該一群のリソースに係る最新割付時刻に、一群のリソースのうちの他のリソースに割り付けられた他のジョブの着手時刻が既に記録されているか否かを判定する（図８のステップＳ３４で最新割付時刻が空であるか否かを判断する処理に対応）。また、記録部２２は、当該一群のリソースに係る最新割付時刻に、他のリソースに割り付けられた他のジョブの着手時刻が記録されていないと判定された場合（図８のステップＳ３４で最新割付時刻が空であると判断した場合に対応）、割付対象リソースに割付対象ジョブを割り付けるとともに、最新割付時刻として、当該割付対象ジョブの着手時刻を記録する（図８のステップＳ３５の処理に対応）。また、割付部２３は、当該一群のリソースに係る最新割付時刻に、他のリソースに割り付けられた他のジョブの着手時刻が記録されていると判定された場合（図８のステップＳ３４で最新割付時刻が空でないと判断した場合に対応）、割付対象ジョブの着手時刻が最新割付時刻として記録されている時刻に一致するか否かを判定し（図８のステップＳ３４で最新割付時刻に一致するか否かを判断する処理に対応）、一致する場合に、割付対象リソースに割付対象ジョブを割り付ける（図８のステップＳ３５の処理に対応）。
【００６１】
また、最新割付時刻として割付対象ジョブの着手時刻を記録する際に、割付対象ジョブの完了時刻である第１の完了時刻が算出され、算出された第１の完了時刻が、一群のリソースに係る最遅解放予定時刻より遅い場合に、記録部２２が、第１の完了時刻を最遅解放予定時刻として更新する（図８のステップＳ３５の処理に対応）。また、割付部２３は、一群のリソースに割り付けるべき割付対象ジョブの次のジョブの着手時刻を更新された最遅解放予定時刻に設定する（図９のステップＳ４７の処理に対応）。
【００６２】
（コンピュータの構成例）
図１２は、上述の実施形態に係るコンピュータの構成例を示す概略ブロック図である。コンピュータ９は、ＣＰＵ９１、主記憶装置９２、補助記憶装置９３、インタフェース９４を備える。上述のスケジューリング装置１は、コンピュータ９を備える。そして、上述した各処理部の動作は、プログラムの形式で補助記憶装置９３に記憶されている。ＣＰＵ９１は、プログラムを補助記憶装置９３から読み出して主記憶装置９２に展開し、当該プログラムに従って上記処理を実行する。例えば、上述したスケジューリング部２、判定部２１、記録部２２、および割付部２３は、ＣＰＵ９１であってよい。また、ＣＰＵ９１は、プログラムに従って、上述したデータベース３に対応する記憶領域を主記憶装置９２または補助記憶装置９３に確保してもよい。
なお、スケジューリング装置１を構成するプログラムやデータは、その一部または全部をコンピュータ読取可能な記録媒体あるいは通信回線を介して頒布することができる。また、自然言語処理装置１を複数のコンピュータで構成する場合、複数のコンピュータは、ネットワークを介して分散して配置されていてもよい。
【００６３】
以上のとおり、本発明に係るいくつかの実施形態を説明したが、これら全ての実施形態は、例として提示したものであり、発明の範囲を限定することを意図していない。これらの実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これらの実施形態及びその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６４】
１  スケジューリング装置
２  スケジューリング部
３  データベース
２１  判定部
２２  記録部
２３  割付部
３１  ジョブテーブル
３２  リソースマスタ
３３  制約条件テーブル
３４  スケジュールデータ
【図１】
2019212198.tif 000003
【図２】
2019212198.tif 000004
【図３】
2019212198.tif 000005
【図４】
2019212198.tif 000006
【図５】
2019212198.tif 000007
【図６】
2019212198.tif 000008
【図７】
2019212198.tif 000009
【図８】
2019212198.tif 000010
【図９】
2019212198.tif 000011
【図１０】
2019212198.tif 000012
【図１１】
2019212198.tif 000013
【図１２】
2019212198.tif 000014