(57)【要約】【課題】製造現場の実情により適合した生産計画を得る。【解決手段】仕掛情報に基づき、二次元配列である複数の遺伝子コードからなる初期世代集団を生成するが、二次元配列には、物品の複数のロットそれぞれを識別する各ロット情報が格納され、且つ各ロット情報に対応して複数の工程に関する工程情報が格納される。工程情報は、複数の工程それぞれに対応して、乱数、当該乱数に従い選択された投入装置の装置識別子、物品投入開始時間、および当該装置識別子で識別される投入装置のサイクルタイムを用いて算出される投入完了時間を有した部分工程情報を含む。情報処理部は、初期世代集団を初期値として、予め指定されたＮ世代数だけ、乱数を変更しながら次世代集団の生成処理を繰返す。この繰返による最後のＮ番目の次世代集団から工期が最短の遺伝子コードに基づき、生産計画データを生成する。【選択図】図１
2016018434.tif 000002
【特許請求の範囲】
【請求項１】
遺伝的アルゴリズムを用いた生産計画装置であって、
物品の仕掛情報を記憶するための記憶部と、情報処理部とを備え、
前記情報処理部は、
前記記憶部の前記仕掛情報に基づき、二次元配列である複数の遺伝子コードからなる初期世代集団を生成する遺伝子コード生成部を、含み、
前記二次元配列には、前記物品の複数のロットそれぞれを識別する各ロット情報が格納され、且つ各前記ロット情報に対応して当該ロットを製造するための複数の工程に関する工程情報が格納され、
前記工程情報は、複数の工程それぞれに対応して、乱数、当該乱数に従い選択された投入装置の装置識別子、物品投入開始時間、および当該装置識別子で識別される投入装置のサイクルタイムを用いて算出される投入完了時間を有した部分工程情報を含み、
前記情報処理部は、さらに、
集団の複数の遺伝子コードそれぞれについて、当該遺伝子コードの各前記ロット情報に対応の各工程の物品の投入完了時間を算出し、算出した投入完了時間のうち最も遅い完了時間を生産計画完了時間として決定する完了時間決定部と、
前記完了時間決定部により決定された前記生産計画完了時間と、予め定められた生産計画開始時間との差である工期が最短である遺伝子コードを、前記集団から抽出する抽出部と、
前記初期世代集団を初期値として、予め指定されたＮ世代数、前記乱数を変更しながら次世代集団の生成処理を繰返す次世代生成部と、
前記初期世代集団または前記次世代集団が生成される毎に、当該集団の複数の遺伝子コードのうち、前記完了時間決定部および前記抽出部による各処理それぞれを行うことにより前記差が最短である遺伝子コードを、暫定チャンピオンとして抽出する暫定抽出部と、
前記次世代生成部により生成された前記Ｎ番目の次世代集団から抽出された前記暫定チャンピオンの複数の遺伝子コードに基づき、各前記投入装置について、投入される各物品の投入開始および完了時間を示す装置別投入情報から、生産計画データを生成する計画生成部と、を含む、生産計画装置。
【請求項２】
前記次世代生成部は、
現世代の集団の前記暫定チャンピオンを除く他の遺伝子コードの予め定められた配列要素位置に格納された前記装置識別子が、当該暫定チャンピオンの当該配列要素位置に格納された前記装置識別子と異なる場合に、当該配列要素位置の装置識別子を、チャンピオンの装置識別子に変更する交叉処理を行う交叉部と、
前記交叉処理後の集団の前記暫定チャンピオンを除く他の遺伝子コードの配列要素位置に格納された前記装置識別子と、当該暫定チャンピオンの当該配列要素位置に格納された前記装置識別子とが一致したときに、前記他の遺伝子コードの当該配列要素位置の装置識別子を、対応の前記乱数を用いた演算により決定された装置識別子に変更する突然変異処理を行う突然変異部とを、有する、請求項１に記載の生産計画装置。
【請求項３】
前記暫定抽出部は、前記交叉処理後の集団の複数の遺伝子コードから、前記暫定チャンピオンを抽出し、
前記突然変異部は、前記交叉処理後の集団から、前記暫定抽出部によって、抽出された前記暫定チャンピオンを用いて、前記突然変異処理を行う、請求項２に記載の生産計画装置。
【請求項４】
前記暫定抽出部は、前記突然変異部による突然変異処理後の集団から、前記暫定チャンピオンを抽出する、請求項２または３に記載の生産計画装置。
【請求項５】
前記交叉部は、前記予め定められた配列要素位置を世代毎に変化させる、請求項２から４のいずれか１項に記載の生産計画装置。
【請求項６】
前記突然変異部は、前記突然変異処理において、装置識別子を変更するべき配列要素位置を世代毎に変化させる、請求項２から５のいずれか１項に記載の生産計画装置。
【請求項７】
前記複数種類の工程は、目視検査工程を含み、
前記情報処理部は、さらに、
作業者の作業可能時間情報に基づき、前記目視検査工程に対する前記物品の投入開始時間を決定する、請求項１から６のいずれか１項に記載の生産計画装置。
【請求項８】
前記情報処理部は、さらに、
前記ロットを製造可能な装置の台数と、対応の前記乱数とを用いた演算の算出値に基づき、前記ロットに対応した前記投入装置を決定する、請求項１から７のいずれか１項に記載の生産計画装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は物品製造の生産計画装置に関し、特に、遺伝的アルゴリズムを用いた生産計画装置に関する。
【背景技術】
【０００２】
工場の生産ラインにおいては、最適な生産計画を、人手によらず自動化する方法が求められている。例えば、特許文献１（特開平８−３０５７６３号公報）および特許文献２（特開平８−３１５０１７号公報）は、生産計画（生産スケジュール）の作成において、遺伝的アルゴリズムを用いた方法を開示する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平８−３０５７６３号公報
【特許文献２】特開平８−３１５０１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、複数の鋼種を同一ラインで生産する場合の製造時間を短くするための生産計画方法を開示し、遺伝的アルゴリズムの遺伝子は鋼種のみを含む。また、特許文献２では、総生産時間の最小化を行なうために、遺伝的アルゴリズムの固体（遺伝子）は、仕事（生産機種（生産される部品の種類）、数量、納期）を処理する機械と、各機械での処理優先度からなる。
【０００５】
実際の生産現場は、生産計画に影響を与える項目は、製造する物品の種類に応じて、投入可能な装置の種類、工程の種類、および工程のサイクルタイムなども含まれており、より最適な生産計画を立てるには、これらより多くの項目を考慮する必要がある。
【０００６】
しかし、特許文献１と２では、いずれも生産時間を短くするための生産計画の立案に向けられているものの、考慮される項目が少ない（特許文献１では鋼種、また特許文献２では仕事と処理優先度）ために、製造現場の実情に適合した生産計画とはいえなかった。
【０００７】
それゆえに、本発明の目的は、製造現場の実情により適合した生産計画を得ることのできる生産計画装置を提供することである。
【課題を解決するための手段】
【０００８】
この発明のある局面に従う生産計画装置は、遺伝的アルゴリズムにより生産計画を生成する。まず、仕掛情報に基づき、二次元配列である複数の遺伝子コードからなる初期世代集団を生成するが、二次元配列には、物品の複数のロットそれぞれを識別する各ロット情報が格納され、且つ各ロット情報に対応して複数の工程に関する工程情報が格納される。
【０００９】
工程情報は、複数の工程それぞれに対応して、乱数、当該乱数に従い選択された投入装置の装置識別子、物品投入開始時間、および当該装置識別子で識別される投入装置のサイクルタイムを用いて算出される投入完了時間を有した部分工程情報を含む。
【００１０】
情報処理部は、初期世代集団を初期値として、予め指定されたＮ世代数だけ、乱数を異ならせながら次世代集団の生成処理を繰返す。この繰返しにおいて、次世代集団が生成される毎に、工期が最短である遺伝子コードを、暫定チャンピオンとして抽出し、最後のＮ番目の次世代集団から抽出された暫定チャンピオンの複数の遺伝子コードに基づき、生産計画データを生成する。
【発明の効果】
【００１１】
本発明によれば、製造現場で考慮するべき多くの生産情報を二次元配列に格納した遺伝子コードを用いた遺伝的アルゴリズムによって、製造現場の実情により適合した生産計画データを取得することができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態に係る生産計画装置の機能構成図である。
【図２】実施の形態に係る生産計画装置のハードウェアの構成図である。
【図３】実施の形態に係る部品毎必要工程表を示す図である。
【図４】実施の形態に係るサイクルタイム表を示す図である。
【図５】本実施の形態に係る遺伝子コードを示す図である。
【図６】本実施の形態に係る遺伝子コードを示す図である。
【図７】本実施の形態に係る遺伝子コードを示す図である。
【図８】本実施の形態に係る遺伝子コードを示す図である。
【図９】本実施の形態に係る装置毎投入情報を示す図である。
【図１０】本実施の形態に係る他の装置毎投入情報を示す図である。
【図１１】本実施の形態に係る生産計画データ生成のための処理フローチャートである。
【図１２】本実施の形態に係る投入開始日時決定処理のフローチャートである。
【発明を実施するための形態】
【００１３】
以下、この発明の実施の形態について、図面を参照して説明する。なお、図中の同一符号は、同一または相当する部分を示す。
【００１４】
（実施の形態の概要）
実施の形態の生産計画装置５０は、物品の仕掛情報に基づき、二次元配列である複数の遺伝子コードからなる集団を生成しながら、複数世代の集団を遺伝的アルゴリズムに従い処理し、最後の世代の集団から抽出された最適な遺伝子コードから、仕掛品に要する生産時間を最短化するような生産計画を生成する。
【００１５】
ここで、二次元配列には、仕掛の物品の複数ロットそれぞれを識別する各ロット情報が格納され、且つ各ロット情報に対応して工程投入情報が格納される。工程投入情報は、複数の工程それぞれに対応して、乱数に従い選択された投入装置の装置識別子、物品投入開始時間、および当該装置識別子で識別される投入装置のサイクルタイムから算出される完了時間の装置別投入情報を含む。
【００１６】
したがって、遺伝子コードを上記の二次元配列とすることで、遺伝的アルゴリズムに従い世代を交代させながら最適生産時間を評価する場合において、物品のロット毎の評価と、工程投入情報毎の評価とを併せて実施することができる。
【００１７】
なお、実施の形態では、仕掛品を物品という場合がある。また製造と生産は、同じ意味で用いている。
【００１８】
（装置の構成）
図１は、本発明の実施の形態に係る生産計画装置５０の機能構成図であり、図２は、本発明の実施の形態に係る生産計画装置５０のハードウェアの構成図である。図２の生産計画装置５０はコンピュータの構成を有し、情報処理部に相当するＣＰＵ（Central  Processing  Unit）５１、揮発性および不揮発性の記憶部にそれぞれ相当する主記憶装置５２および補助記憶装置５３、キーボードまたはマウスなどの入力装置５４、モニタまたはプリンタなどの出力装置５５および外部の機器と情報の授受を行なう通信装置５６を備える。さらに、生産計画装置５０は、ＲＯＭ（Read  Only  Memory）およびＲＡＭ（Random  Access  Memory）などの主記憶装置５２、ＨＤＤ（Hard  Disk  Drive）などの補助記憶装置５３、およびメモリドライバ５７に着自在に装着されるカード形状の記憶媒体であるメモリカード５８を含む。メモリドライバ５７は、装着されたメモリカード５８に対して、ＣＰＵ５１の制御の元に、データを読み書きする。
【００１９】
（機能構成）
図１を参照して、生産計画装置５０の機能構成を説明する。生産計画装置５０は、記憶部５９およびＣＰＵ５１の機能である情報処理部を備える。情報処理部は、記憶部５９にデータを読み書きするアクセス処理部６０、生産計画処理のために必要な情報を装置の外部から受付ける入力処理部６１、および遺伝的アルゴリズムに従い最適な生産計画を得るための処理部を備える。
【００２０】
処理部６８は、二次元配列である複数の遺伝子コード７０（後述する）からなる初期世代の集団を生成する遺伝子コード生成部６２、および集団から後述する工期が最短である遺伝子コードを取得する取得部６３を含む。さらに、後述する次世代集団が生成される毎に、当該次世代集団の遺伝子コード７０のうちから、工期が最短である遺伝子コードを、暫定のチャンピオンとして抽出する暫定抽出部６４、および初期世代の集団を初期値として予め指定されたＮ（ただしＮ＝１，２，３，４…）世代数、次世代集団の生成処理を繰返す次世代生成部６５を含む。さらに、処理部６８は、Ｎ番目の世代の集団から抽出された暫定のチャンピオンの各投入装置について、各物品の投入開始および終了時間を示す装置別投入情報から、生産計画データ７５を生成する計画生成部６６、および生成された生産計画データ７５を出力装置５５などに出力させる出力処理部６７を含む。なお、生産計画データ７５は、アクセス処理部６０により補助記憶装置５３に格納されてもよく、または通信装置５６を介して外部装置に送信されてもよく、出力先は限定されるものではない。
【００２１】
取得部６３は、完了時間決定部６３１および抽出部６３２を有する。完了時間決定部６３１は、集団の各遺伝子コード７０ついて、各ロット情報に対応した各工程の物品投入完了時間のうち最も遅い完了時間を生産計画完了時間として決定する。抽出部６３２は、この決定された生産計画完了時間と、予め定められた生産計画開始時間との差である工期が最短である遺伝子コードを、当該集団のうちから抽出する。
【００２２】
図１に示す情報処理部の各機能は、ＣＰＵ５１が実行するプログラムにより、またはプログラムと回路の組合せにより実現される。
【００２３】
なお、次世代生成部６５は集団の生成を繰返すことによりＮ世代分の集団を生成するが、最も最近に生成された集団を現世代の集団とも称し、現世代の集団から生成される次位の新たな世代を、次世代の集団とも称する。したがって、遺伝子コード生成部６２が生成する集団は、第１世代の集団であって、初期世代の集団とも称する。
【００２４】
（記憶部の内容）
次に記憶部５９の内容を説明する。図１を参照して、記憶部５９は、複数の遺伝子コード７０からなる現世代の集団７０Ｐ、複数の遺伝子コード７０からなる次世代の集団７０Ｃ、部品毎に製造に必要な工程の情報を登録した部品毎必要工程表７１、工程毎のサイクルタイム表７２、作業者の出勤日、勤務時間帯などの作業可能時間情報が登録された作業可能時間ファイル７３、遺伝子コード７０を生成するために参照される情報であって仕掛品に関する仕掛情報７４、および生成された生産計画データ７５を格納する。これら情報の詳細は後述する。なお、記憶部５９の記憶領域は、ＣＰＵ５１によるプログラム実行時に適宜、データを格納するための作業領域としても用いられる。
【００２５】
（仕掛情報７４について）
仕掛情報７４は、例えばテキストファイルの形式を有する。このテキストファイルには、仕掛品のロット情報が複数格納される。ロット情報は、仕掛品（ロット）を識別するための「形名」、「キーNo.」および「仕掛工程」のデータと、工程に投入するべき当該仕掛品の数量を示す「投入台数」のデータを含む。ここでは、“投入工程”は、仕掛品を製造するための工程を示し、“工程に投入する”とは、仕掛品を工程で製造（製造開始）することを示す。
【００２６】
（部品毎必要工程表７１について）
図３は、実施の形態に係る部品毎必要工程表７１を示す図である。図３を参照して部品毎必要工程表７１では、縦軸に工程の種類（い、ろ、は、に、…たの１５種類）を示す工程名７１１が割当てられ、横軸に仕掛品の種類を示すパッケージ名（Ａ，Ｂ，Ｃ，…Ｐ）が割当てられる。各パッケージ名について、上述の１５種類の工程のうち製造に必要な工程については“ＹＥＳ”が割当てられて、必要でない工程には“ＮＯ”が割当てられている。ここでは、物品の製造は、基本的には、“い、ろ、は、に、…た”の順番に従って進行し、このうちの１つ以上の工程を経て完了するものとする。
【００２７】
（サイクルタイム表７２について）
図４は、実施の形態に係るサイクルタイム表７２を示す図である。本実施の形態では、各工程についてサイクルタイム表７２が設定されるが、説明を簡単にするために、図４では、ある工程のサイクルタイム表７２を例示する。
【００２８】
図４を参照してサイクルタイム表７２には、物品の種類７２１と投入装置名７２２の組合せ毎に、当該物品を当該装置に投入した場合のサイクルタイム７２３と７２４（当該工程に要する時間）のデータが登録されている。サイクルタイム表７２では、物品の種類７２１は、パッケージ名と形名で示される。また、投入装置名７２２は、投入可能な候補装置の識別子の一例である。ここでは、投入可能な装置の候補としてＮｏ．４およびＮｏ．７の２台の候補が示されているが、候補台数は２台に限定されない。
【００２９】
（遺伝子コード７０について）
図５〜図８は、本実施の形態に係る遺伝子コード７０を示す図である。遺伝子コード７０の生成は、後述するように、主に上述した仕掛情報７４に基づくが、部品毎必要工程表７１およびサイクルタイム表７２も参照される。
【００３０】
図５を参照して、遺伝子コード７０は仕掛品を全て処理するために必要な生産時間である「工期」を算出するために、遺伝子コード７０は二次元配列の形式をとる。二次元配列には、列方向において、仕掛情報７４から読出した仕掛品の複数のロットそれぞれを識別するためのロット情報８０が格納され、且つ行方向において各ロット情報８０に対応して当該ロットを製造するための工程に関する工程情報８５が格納される。製造するための工程は１つ以上の部分工程からなる。工程情報８５は、複数の工程名８６が示す部分工程それぞれに対応して工程投入情報を含む。ロット情報８０は、仕掛品を識別するための形名８１およびキーNo.８２を含み、さらに仕掛工程を示すデータ８３（以下、仕掛工程８３という）、および仕掛工程への投入台数８４を含む。
【００３１】
図６〜図８に、各部分工程の工程情報である部分工程情報８６Ａ、８６Ｂおよび８６Ｃをそれぞれ示す。各工程投入情報は、同様の形式を有するので、ここでは代表して図６の部分工程情報８６Ａを説明する。図６を参照して部分工程情報８６Ａは、当該部分工程において対応のロット情報８０が示すロットが投入される装置の装置名８７、当該工程におけるサイクルタイム（単位：ｓｅｃ）を示すデータ８８（以下、サイクルタイム８８という）、乱数の値を示すデータ８９（以下、乱数８９という）、工程投入開始日時のデータ９０（以下、投入開始日時９０という）、および投入完了日時のデータ９１（以下、投入完了日時９１という）を対応付けて含む。
【００３２】
このように、遺伝子コード７０は二次元配列に格納されたデータからなり、各データは配列要素であり、各配列要素は二次元配列における位置（以下、配列要素位置という）によって一意に識別することができる。
【００３３】
乱数８９は、十分な長さの周期を有した生産計画装置５０の乱数発生機能を用いて生成されて、遺伝子コード７０に格納される。装置名８７は、当該工程のサイクルタイム表７２を、対応の乱数８９を用いた予め定められた演算の算出値に基づき検索し、読出した装置名７２２（図４参照）を示す。また、投入開始日時９０および投入完了日時９１は、当該工程のサイクルタイム表７２を、対応の装置名８７で検索して読出したサイクルタイム７２３または７２４から算出される物品を工程に投入開始する時間および当該工程を完了する時間を示す。部分工程情報８６Ａの設定方法の詳細は、図１１と図１２の処理において説明する。
【００３４】
図９と図１０は、本実施の形態に係る装置毎投入情報７６，７７を示す図である。装置毎投入情報７６，７７は、記憶部５９の作用領域に一時的に格納される情報を示す。詳細は後述する。
【００３５】
（処理フローチャート）
図１１は、本実施の形態に係る生産計画データ生成のための処理フローチャートである。図１２は、本実施の形態に係る投入開始日時決定処理のフローチャートである。これらフローチャートは、プログラムとして記憶部５９に格納されて、ＣＰＵ５１が記憶部５９からプログラムを読出し、実行することにより処理が実現される。
【００３６】
図１１のフローチャートを参照して、概要を説明すると、処理は「初期世代の集団の生成（ステップＳ１〜Ｓ７」→次世代集団の生成（「交叉処理（ステップＳ８）」→「突然変異処理（ステップＳ９）」）の順で進む。「初期世代の集団の生成」では、遺伝子コード生成部６２は仕掛情報７４、サイクルタイム表７２などの情報を用いて複数の遺伝子コード７０を生成し、それらの中から「工期」が最短となる遺伝子コード７０を「チャンピオン」として抽出する。
【００３７】
次世代集団の生成（「交叉処理」および「突然変異処理」）において新たな遺伝子コード７０の集合である次世代の集団を生成し、次世代の集団に、現世代の集団から抽出された「チャンピオン」よりも短い「工期」を持つ遺伝子コード７０が含まれていれば、それを新たな「チャンピオン」として抽出する。これにより、各世代の集団から、生産の「工期」をより短くするという計画に最も適した遺伝子コード７０の情報を、次世代に複製することができる。
【００３８】
次に、半導体装置の生産計画を行なう場合の詳細処理を以下に説明する。なお、計画対象の物品は半導体装置に限定されない。
【００３９】
情報処理部５１は、処理を開始すると、まず「生産計画開始日時」、集団を構成する「遺伝子コード７０の数Ｍ」および「世代数Ｎ」を決定する（ステップＳ１）。これら値は、入力装置５４を介したユーザ操作による入力内容から決定することができる。なお、数Ｍは、２，３，…，ｉ…，Ｍの整数であり、世代数Ｎも、１，２，３，…，ｉ…，Ｎの整数である。「遺伝子コード７０の数Ｍ」および「世代数Ｎ」の数値は、大きいほど最適遺伝子コード７０を抽出できる精度は上がるが、処理時間が長くなるが、個数を減らせばその逆となる。そのため、ここでは、予め実験（過去の経験）などに基づく「遺伝子コード７０の数Ｍ」および「世代数Ｎ」の値が入力されるものとする。
【００４０】
また、入力処理部６１は、外部から入力したテキストファイルから、仕掛情報７４、部品毎必要工程表７１、サイクルタイム表７２、作業可能時間ファイル７３の情報から読取る（ステップＳ２）。読取られた情報は、アクセス処理部６０を介して記憶部５９に格納される。
【００４１】
つぎに、遺伝子コード生成部６２は、二次元配列であるＭ個の遺伝子コード７０を生成する（ステップＳ３）。具体的には、遺伝子コード生成部６２は、二次元配列の列方向に、仕掛情報７４から読出した仕掛品の複数のロットそれぞれを識別する各ロット情報８０を格納し、且つ各ロット情報８０に対応して行方向に工程情報８５を格納する。
【００４２】
図６〜図８の部分工程情報８６Ａ、８６Ｂおよび８６Ｃに「―」を格納された部分は、対応のロット情報８０が形名８１により示される種類の半導体製品（仕掛品）が、当該工程部分を必要とせずに製造されること、または対応のロット情報８０の仕掛工程８３よりも以前の工程であることを示す。このような必要としない工程部分および以前の工程部分は、部品毎必要工程表７１と仕掛情報７４から決定される。つまり、遺伝子コード生成部６２は部品毎必要工程表７１を検索し、各ロットの仕掛品について必要な工程を読出し、読出した工程と、仕掛情報７４が示す当該ロットの仕掛工程とを比較することにより決定する。
【００４３】
また、遺伝子コード生成部６２は、各ロットの各工程の部分工程情報８６Ａ、８６Ｂおよび８６Ｃの乱数８９から、対応する投入装置の装置名８７を決定する。具体的には、当該工程のサイクルタイム表７２（図４参照）をロット情報８０が示す物品の種類に基づき検索し、一致する物品の種類７２１に対応した投入装置名７２２を読出し、装置名８７として設定する。
【００４４】
図４を参照して、たとえば、ロット情報８０のロットの形名８１が「ＲＳ」である場合に、形名「ＲＳ」を投入可能な装置は「Ｎｏ．４」と「Ｎｏ．７」の２台である。対応の乱数８９として「123987665」が与えられている場合、乱数８９（＝123987665）を投入可能装置の台数（＝２）で割った際の余りは１である。ここで、０以上の整数ＡとＢ（≧Ａ）が与えられ、ＡをＢで割った際の余りは０から（Ｂ−１）のいずれかの値であるから、投入可能な装置に対して、これらの余りとなる数字を「Ｎｏ．４」には「０」を、「Ｎｏ．７」には「１」を予め割振っておく。先程の計算の結果に戻ると、余りは「１」であるから、「Ｎｏ．７」が選択されることになる。この場合は、装置名８７として「Ｎｏ．７」が決定される。同様にして、各ロット情報の装置名８７を決定する。そして、決定した装置名８７を、二次元配列要素における対応の配列要素位置に格納する。
【００４５】
また、サイクルタイム８８を格納する。具体的には、サイクルタイム表７２から、上述の決定した装置名８７にロット情報８０の仕掛品を投入した場合のサイクルタイムを読出し、サイクルタイム８８として対応の配列要素位置に格納する。各ロット情報８０について同様の処理を行うことにより、対応の各部分工程情報８６Ａ、８６Ｂ、および８６Ｃの装置名８７およびサイクルタイム８８が格納される。
【００４６】
次に、各ロット情報８０の対応した各部分工程情報８６Ａ、８６Ｂ、および８６Ｃの投入開始日時９０および投入完了日時９１が決定されて、対応する配列要素位置に格納される（ステップＳ４、Ｓ５）。
【００４７】
まず、上述のようにサイクルタイム８８が格納された遺伝子コード７０から「工期」を算出するために、装置名８７が示す装置毎投入情報７６と７７（図９と図１０）が、記憶部５９の作業領域に生成される（ステップＳ４）。
【００４８】
図９の装置毎投入情報７６は、二次元配列を有し、遺伝子コード生成部６２は、列方向に“Ｎｏ．３”の装置名８７を格納し、行方向には、遺伝子コード７０から抽出された対応の投入情報７６１（ロット情報８０（形名８１、キーＮｏ．８２、投入台数８４）および対応の工程情報８５（サイクルタイム８８、乱数８９、工程名８６、投入開始日時９０、投入完了日時９１））を格納する。図１０の装置毎投入情報７７も同様に二次元配列を有し、“Ｎｏ．６”の装置名８７について遺伝子コード７０から抽出された対応の投入情報７７１が格納される。ここでは、説明を簡単にするために、図９と図１０では、“Ｎｏ．３”と“Ｎｏ．６”の２台の投入装置について示したが、実際は、全ての投入装置について、同様の装置毎投入情報が生成される。
【００４９】
また、ステップＳ４では、遺伝子コード生成部６２は、装置毎投入情報において、乱数８９の値の小さい順に二次元配列の先頭から投入情報７６１が並ぶように格納する（図９参照）。この場合に、投入装置によっては、複数の工程の処理を同一の装置で行うものも有るため、その際は複数の工程の投入情報が格納される。また、半導体製品によっては「２度流し」と呼ばれる一度に２つの工程を処理しなければならないものがあり、その様な状況に対しても乱数８９の値とは関係無く工程順で情報が並べられる（図１０参照）。
【００５０】
このように並べることにより、多くの品種は「い」⇒「ろ」⇒「は」⇒「に」という順序で工程処理が行われるが、中には「は」⇒「に」⇒「い」⇒「ろ」という違う順序で工程処理が行われる場合のように、違う工程処理を行う品種を一緒にして生産する場合でも、後述するような「投入開始日時」および「投入完了日時」を算出することができる。
【００５１】
次に、遺伝子コード生成部６２は、上述のように並べ替えされた装置毎投入情報に基づき、各投入装置について投入日時を決定する（ステップＳ５、Ｓ６）。投入日時は「投入開始日時」９０と「投入完了日時」９１を含み、そのうち「投入開始日時」９０がステップＳ５で最初に決定される。この詳細は図１２で後述する。
【００５２】
情報処理部５１は、生成した遺伝子コード７０の「工期」を算出する（ステップＳ６）。具体的には、完了時間決定部６３１は、ステップＳ５の処理後の装置毎投入情報の「投入完了日時」９１を算出する。これは、対応の「投入開始日時」９０に（投入台数８５×サイクルタイム８８）の積算値を加算することにより算出する。そして、抽出部６３２は、投入装置毎に、その「投入完了日時」９１のうちから一番遅いものを抽出する。そして、抽出部６３２は、これら各投入装置から抽出した「投入完了日時」９１のうち、一番遅いものを当該遺伝子コード７０の「生産計画完了日時」と決定する。そして、抽出部６３２は、決定された「生産計画完了日時」とステップＳ１で決定した「生産計画開始日時」との差を算出し、この差を「工期」とする。これにより、１個の遺伝子コード７０の生成と、その「工期」の決定が終了する。
【００５３】
次に、情報処理部５１は、ステップＳ１で決定した「遺伝子コード７０の数Ｍ」だけの遺伝子コード７０の生成を終了したか否かを判定する（ステップＳ６ａ）。この時点では、生成した遺伝子コード７０は１つ目であるから、終了していないと判定し（ステップＳ６ａでＮＯ）、ステップＳ３に戻り、次の遺伝子コード７０の生成と、その「工期」の決定処理を行う（ステップＳ３〜Ｓ６）。各遺伝子コード７０と、その「工期」は記憶部５９の予め定めた領域に格納される。
【００５４】
遺伝子コード生成部６２が「遺伝子コード７０の数Ｍ」だけの遺伝子コード７０を生成したときは（ステップＳ６ａでＹＥＳ）、Ｍ個の遺伝子コード７０からなる初期世代の集団が得られたことになる。この時点で、初期世代の集団は、現世代の集団７０Ｐとして記憶部５９に格納される。
【００５５】
暫定抽出部６４は、記憶部５９の現世代の集団７０Ｐ（この時点では、初期世代の集団）から、暫定の「チャンピオン」を抽出する。すなわち、現世代の集団７０ＰのＭ個の遺伝子コード７０のうち、その「工期」が最短である遺伝子コード７０を暫定の「チャンピオン」として抽出する（ステップＳ７）。
【００５６】
暫定の「チャンピオン」が抽出されると、次に、次世代生成部６５により次世代集団が生成される。
【００５７】
まず、次世代生成部６５により交叉処理が行われる。交叉部６５１は、現世代の集団７０Ｐ（この時点では、初期世代の集団）において暫定の「チャンピオン」となった遺伝子コード７０とそれ以外の遺伝子コード７０との交叉処理を行う。交叉処理のプログラム中では変数を以下の様に定義する。
・lot_pieces：ロット数
・generation：世代数
・quotient：lot_pieces / generation
・a：0からquotientまでの変数
・c：列方向を表す変数
・g：0からgenerationまでの変数
・champion_code[,]:暫定チャンピオンの遺伝子コード７０を格納する二次元配列
・challenger_code[,]:チャンピオン以外の遺伝子コード７０を格納する二次元配列。
【００５８】
暫定の「チャンピオン」およびチャンピオン以外の遺伝子コード７０中での装置名８７を表すコードはそれぞれ、配列要素位置を用いて、
champion_code[a * generation + g, 6 + 9 * c] 
challenger_code[a * generation + g, 6 + 9 * c]と表現される。
【００５９】
交叉部６５１は、暫定の「チャンピオン」およびチャンピオン以外の遺伝子コード７０中での同じ配列要素位置の装置名８７同士を比較する。比較の結果、交叉部６５１は、装置名８７が違うと判定すると、「チャンピオン」の遺伝子コード７０の当該配列要素位置の装置名８７を、チャンピオン以外の遺伝子コード７０の同じ配列要素位置にコピー（変更）する。これにより、チャンピオン以外の遺伝子コード７０の同じ配列要素位置には、「チャンピオン」の装置名８７が格納される。また、対応するサイクルタイム８８も、この時にコピーされる。
【００６０】
このように、交叉部６５１は、現世代の集団７０Ｐの暫定の「チャンピオン」を除く他の遺伝子コード７０のうち、上述の変数定義が示す基準によって選択された配列要素位置の装置名８７が、「チャンピオン」の遺伝子コード７０の同じ配列要素位置に格納された装置名８７と相違する他の遺伝子コード７０については、当該配列要素位置の装置名８７を、「チャンピオン」の装置名８７に変更する。
【００６１】
これにより、現世代の集団７０Ｐから、「チャンピオン」の遺伝子コード７０のデータがコピーされた遺伝子コード７０を含む新たな集団が生成され、次世代の集団７０Ｃとして記憶部５９に格納される。
【００６２】
暫定抽出部６４は、次世代の集団７０Ｃの遺伝子コード７０について、取得部６３の処理（ステップＳ５）およびステップＳ６の処理を同様に行い、最短の「工期」の遺伝子コード７０を抽出する。この「工期」が、前の世代（この場合、初期世代）の「チャンピオン」の「工期」よりも短い場合に、暫定の「チャンピオン」は、交叉処理後の最短「工期」の遺伝子コード７０に変更される。そうでない場合には、暫定「チャンピオン」は変更されない。
【００６３】
交差処理（ステップＳ８）は、ステップＳ１で決定したＮ世代数だけ繰返される。この繰り返しにおいて、交叉部６５１は、交叉の対象となる配列要素位置を決定する行の変数「a * generation + g」を、世代間で重複しない様に変更する。これにより、次世代の集団が生成される毎に、当該集団に対する交叉処理の配列要素位置を、変更することができる。
【００６４】
次に、次世代生成部６５は突然変異処理（ステップＳ９）を実行する。突然変異部６５２は、暫定の「チャンピオン」の遺伝子コード７０と、現世代の集団のそれ以外の遺伝子コード７０との間で突然変異処理を行う。
【００６５】
具体的には、突然変異部６５２は、暫定「チャンピオン」の遺伝子コード７０とその他の遺伝子コード７０とについて、同じ配列要素位置に格納されている各装置名８７同士を比較する。比較の結果、両者が同じ場合は、突然変異部６５２は、その投入情報が持つ乱数８９に対して、例えば1,000,000を加算する。加算した値が１０億を超えた場合は、その加算値から１０億を引いた差を算する。そして、突然変異部６５２は、投入情報の乱数８９の値を、その差に変更する。そして、ステップＳ３で説明したように、突然変異部６５２は、変更後の乱数値を投入可能な装置台数で割り、その時の余りに基づき図４のサイクルタイム表７２を検索し、検索結果に基づき対応する装置名８７を変更する。
【００６６】
上述の突然変異処理により、現世代の集団７０Ｐから、装置名８７が暫定チャンピオンのそれに変更された遺伝子コード７０を含む次世代の集団７０Ｃが生成されて、記憶部５９に格納される。暫定抽出部６４は、次世代の集団７０Ｃを現世代の集団として、当該集団に含まれるＮ個の遺伝子コード７０から、取得部６３の処理（ステップＳ５）およびステップＳ６の処理を同様に行い、最短の「工期」の遺伝子コード７０を抽出する。この「工期」が、現世代の集団７０Ｐの「チャンピオン」の「工期」よりも短い場合には、暫定の「チャンピオン」は、突然変異処理後の被世代の集団７０Ｃの最短「工期」の遺伝子コード７０に変更される。そうでない場合には、暫定「チャンピオン」は変更されない。
【００６７】
情報処理部５１は、ステップＳ１で決定したＮ個の世代の集団が生成されたか否かを判定する（ステップＳ９ａ）。情報処部５１は、Ｎ個未満であると判定すると（ステップＳ９ａでＮＯ）、ステップＳ８に戻り、次世代生成部６５による次世代集団の生成が繰返される。
【００６８】
一方、情報処理部５１は、Ｎ個以上である、すなわちＮ個の世代の生成が終了したと判定すると（ステップＳ９ａでＹＥＳ）、情報処理部５１は、最新の（すなわち、最後の）暫定「チャンピオン」の遺伝子コード７０を、生産計画データ７５を生成するための遺伝子コード７０として決定する（ステップＳ１０）。
【００６９】
計画生成部６６は、生産計画データ７５を生成する（ステップＳ１１）。具体的には、計画生成部６６は、ステップＳ１０で決定された遺伝子コード７０から、投入装置別に投入情報を抽出し、二次元配列の「装置別投入情報」を生成し、これを格納したテキストファイルを生成する。また、このテキストファイルに、最後の暫定「チャンピオン」となった遺伝子コード７０も格納する。
【００７０】
生成された生産計画データ７５は、出力処理部６７により外部装置に出力され、またアクセス処理部６０を介して記憶部５９に格納される。
【００７１】
（投入装置の各ロットの投入開始日時決定処理）
図１１のステップＳ５の処理について、図１２のフローチャートを参照して説明する。例えば図９に示す“Ｎｏ．３”の装置毎投入情報７６の各ロットの「投入開始日時」９０を決定する処理を説明する。
【００７２】
まず、遺伝子コード生成部６２は、並べ替えされた図９の装置毎投入情報７６を並びの先頭から順番に検索を開始する（ステップＳ２１）。遺伝子コード生成部６２は、検索される各投入情報について、最初に投入されるべきロットの情報であるか否かを判定する（ステップＳ２２）。具体的には、遺伝子コード生成部６２は、検索する投入情報の「投入開始日時」９０を、並びにおいて前に位置する投入情報の「投入完了日時」９１と比較し、当該「投入開始日時」９０の方が早い日時を示すと判定すると（ステップＳ２２でＹＥＳ）、ステップＳ１で決定した「生産計画開始日時」を、“Ｎｏ．３”の投入装置についての暫定の「投入開始日時」と設定する（ステップＳ２３）。そうでないと判定すると（ステップＳ２２でＮＯ）、前に位置する投入情報の「投入完了日時」９１を暫定の「投入開始日時」と設定する（ステップＳ２４）。
【００７３】
次に、遺伝子コード生成部６２は、検索された投入情報の「投入開始日時」９０と、前の工程の「投入完了日時」９１と比較し、遅い方を暫定の「投入開始日時」と設定する（ステップＳ２５、Ｓ２６）。
【００７４】
具体的には、遺伝子コード生成部６２は、検索された投入情報の工程名８６に基づき部品毎必要工程表７１を検索し、当該工程名８６が示す工程よりも早くに実施する工程名７１１を読出す。そして、遺伝子コード生成部６２は、装置毎投入情報７６において、部品毎必要工程表７１から読出した工程名７１１に一致する工程名８６を有した工程情報（これを、前工程情報という）が有るか否かを判定する（ステップＳ２５）。遺伝子コード生成部６２が、ないと判定すると（ステップＳ２５でＮＯ）、後述するステップＳ２７に移行する。
【００７５】
遺伝子コード生成部６２が、あると判定すると（ステップＳ２５でＹＥＳ）、暫定の「投入開始日時」と前工程情報の投入完了日時９１とが比較されて、遅い方を暫定の「投入開始日時」と設定されて（ステップＳ２６）、ステップＳ２７に移行する。
【００７６】
ステップＳ２７〜Ｓ３０では、半導体製品の処理工程の中には「目視検査」工程を含む得ることに鑑みて、作業者の作業可能時間ファイル７３の情報に基づいた「投入開始日時」の設定処理が行われる。なお、１５種類の工程「い」〜「た」のうち、いずれが「目視検査」工程であるかを示す情報は、予め記憶部５９に格納されている。
【００７７】
まず、遺伝子コード生成部６２は、検索した工程情報の工程名８６が「目視検査」工程を示すか否かを判定する（ステップＳ２７）。遺伝子コード生成部６２は、「目視検査」工程であると判定すると（ステップＳ２７でＹＥＳ）、暫定の「投入開始日時」が作業可能時間ファイル７３の作業者の出勤日よりも後である（遅い）かを判定する（ステップＳ２８）。
【００７８】
遺伝子コード生成部６２は、後であると判定すると（ステップＳ２８でＹＥＳ）、暫定の「投入開始日時」を、“Ｎｏ．３”の投入装置の「投入開始日時」として正式決定する（ステップＳ２９）が、後でないと判定すると（ステップＳ２８でＮＯ）、作業者の出勤日時を、“Ｎｏ．３”の投入装置の「投入開始日時」として正式決定する（ステップＳ３０）。その後は、いずれも後述するステップＳ３５に移行する。
【００７９】
ステップＳ２７に戻り、工程は「目視検査工程」ではないと判定されると（ステップＳ２７でＮＯ）、遺伝子コード生成部６２は、装置トラブルまたはメンテナンスによる停止時間などの不使用時間帯を避けて「投入開始日時」を決定する（ステップＳ３１〜Ｓ３４）。なお、投入装置毎の不使用時間帯の情報は、予め記憶部５９に格納されている。
【００８０】
具体的には、遺伝子コード生成部６２は、記憶部５９を検索し、“Ｎｏ．３”の投入装置の不使用時間帯情報が格納されているかを判定する（ステップＳ３１）。遺伝子コード生成部６２は、格納されていないと判定すると（ステップＳ３１でＮＯ）、上述のステップＳ２９に移行する。遺伝子コード生成部６２が、格納されていると判定すると（ステップＳ３１でＹＥＳ）、不使用時間帯に基づく「投入完了日時」の設定を行う。
【００８１】
まず、遺伝子コード生成部６２は、検索した暫定の「投入完了日時」を、[暫定の「投入完了日時」＝暫定の「投入開始日時」＋（サイクルタイム８８）×（投入台数８４）]に従い算出する（ステップＳ３２）。次に、算出した暫定の「投入完了日時」は、“Ｎｏ．３”の投入装置の不使用時間帯の開始日時よりも後（遅い）か否かを判定し（ステップＳ３３）、遅くない、すなわち暫定の「投入完了日時」は不使用時間帯の開始前であると判定すると（ステップＳ３３でＮＯ）、前述したステップＳ２９に移行する。
【００８２】
一方、遺伝子コード生成部６２は、不使用時間帯の開始日時よりも後（遅い）と判定すると（ステップＳ３３でＹＥＳ）、不使用時間帯の終了日時を、当該投入情報の投入開始日時９０に設定し、（ステップＳ３４）、後述するステップＳ３５に移行する。これにより、当該ロットの投入開始日時を、投入装置の不使用時間帯の終了後となるように変更することができる。
【００８３】
以上のように、検索した投入情報について投入開始日時９０が設定されると、“ＮＯ．３”の投入装置の装置毎投入情報７６（図９参照）の全ての投入情報について処理が終了したか否かが判定される（ステップＳ３５）。
【００８４】
終了したと判定されると（ステップＳ３５でＹＥＳ）、図１１の元の処理に戻る。一方、終了していないと判定されると（ステップＳ３５でＮＯ）、遺伝子コード生成部６２は装置毎投入情報７６から次の投入情報を読出す（ステップＳ３６）。そして、ステップＳ２２に戻り、以降の処理を同様に繰返す。
【００８５】
このような図１２の処理が、装置毎投入情報７６の各投入情報について繰返されることで、“Ｎｏ．３”の投入装置への各ロットの「投入開始日時」９０が決定される。また、各投入装置の装置毎投入情報についても、図１２の処理を同様に行われることで、全ての投入装置について、各ロットの「投入開始日時」９０が決定される。その後は、図１１のステップＳ６に移行する。
【００８６】
（プログラム）
上述した生産計画装置５０が行なう生産計画の方法は、プログラムとして提供することもできる。このようなプログラムは、図２の生産計画装置５０のコンピュータに付属するメモリカード５８などのコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵する補助記憶装置５３などの記録媒体にて記録させて、プログラムを提供することもできる。また、図示しないネットワークおよび通信装置５６を介したダウンロードによってプログラムを提供することもできる。
【００８７】
提供されるプログラム製品は、補助記憶装置５３のハードディスクなどのプログラム格納部にインストールされてＣＰＵ５１により読出されて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記録された記録媒体とを含む。
【００８８】
なお、プログラムが記録された記録媒体は、コンピュータが読み取り可能な記録媒体であればよく、メモリカード５８に限定されるものではない。
【００８９】
上述のプログラムは、コンピュータに生産計画方法の各ステップを実行させるためのプログラムである。生産計画方法は、記憶部に格納された仕掛情報に基づき、二次元配列である複数の遺伝子コードからなる初期世代集団を生成する遺伝子コード生成ステップを、含む。
【００９０】
この二次元配列には、物品の複数のロットそれぞれを識別する各ロット情報が格納され、且つ各ロット情報に対応して当該ロットを製造するための複数の工程に関する工程情報が格納される。工程情報は、複数の工程それぞれに対応して、乱数、当該乱数に従い選択された投入装置の装置識別子、物品投入開始時間、および当該装置識別子で識別される投入装置のサイクルタイムを用いて算出される投入完了時間を有した部分工程情報を含む。
【００９１】
生産計画方法は、さらに、集団の複数の遺伝子コードそれぞれについて、当該遺伝子コードの各ロット情報に対応の各工程の物品の投入完了時間を算出し、算出した投入完了時間のうち最も遅い完了時間を生産計画完了時間として決定する完了時間決定ステップと、完了時間決定ステップにおいて決定された生産計画完了時間と、予め定められた生産計画開始時間との差である工期が最短である遺伝子コードを、集団から抽出する抽出ステップと、を含む。
【００９２】
さらに、初期世代集団を初期値として、予め指定されたＮ世代数、前記乱数を異ならせながら次世代集団の生成処理を繰返す次世代生成ステップと、初期世代集団または次世代集団が生成される毎に、当該集団の複数の遺伝子コードのうち、完了時間決定部および抽出部による処理を行うことにより前述の差が最短である遺伝子コードを、暫定チャンピオンとして抽出する暫定抽出ステップと、次世代生成ステップにおいて生成されたＮ番目の次世代集団から抽出された前記暫定チャンピオンの複数の遺伝子コードに基づき、各投入装置について、投入される各物品の投入開始および完了時間を示す装置別投入情報から、生産計画データを生成する計画生成ステップと、を含む。
【００９３】
（実施の形態の効果）
本実施の形態によれば、二次元配列の列方向に仕掛品のロット情報８０をとり、行方向に工程情報（ロット情報８０毎の工程名８６、装置名８７、サイクルタイム８８などの工程投入情報）を格納した遺伝子コード７０を用いて、遺伝的アルゴリズムによる「交叉処理」および「突然変異処理」を通して生産時間が最小となる遺伝子コード７０を最終的に導出することができる。したがって、製造現場で考慮するべき多くの生産情報を用いた遺伝的アルゴリズムによって、製造現場の実情により適合した生産計画データ７５、すなわち仕掛品の生産時間の最適化（最短）を可能にする生産計画データ７５を取得することができる。
【００９４】
本実施の形態によれば、遺伝子コード７０では、各ロット情報８０に対応の工程情報８５は、当該ロットに必要な工程についての情報を含むので、計画対象の仕掛品に、必要な工程が異なるような仕掛品が含まれる場合であっても、仕掛品全ての生産を終了するための最適（最短生産時間）の生産計画データ７５を自動で取得することができる。このような生産計画の立案を、従来は、人手で実施していたが、本実施の形態によれば、そのような時間およびコストを省くことができる。
【００９５】
また、従来のように、日割りの生産計画の場合には、品種によっては投入数が１ロット当たりの数量を切ってしまう場合がある。また、実際の生産は年中無休（午前０時を過ぎも生産）で実施されているため、日割りで生産計画数を導き出している場合には、計画と実績が整合せず進捗管理が困難であった。これに対して、実施の形態の生産計画装置５０は、工程の投入開始日時９０および投入完了日時９１は、図６〜図８に示すように日割り制限のない時間設定としていることから、生成される生産計画データ７５を用いた場合には、上述の計画と実績の不整合を防止することができる。
【００９６】
また、製造現場で何らかのトラブルが生じて生産計画データ７５の再取得が必要になる場合でも、生産計画装置５０を用いることで、現場の作業者は、新たな生産計画データ７５を簡単に得ることができる。
【符号の説明】
【００９７】
５０  生産計画装置、５１  情報処理部、５９  記憶部、６２  遺伝子コード生成部、６２ａ  配列格納部、６３  取得部、６４  暫定抽出部、６５  次世代生成部、６６  計画生成部、６７  出力処理部、７０  遺伝子コード、７３  作業可能時間ファイル、７４  仕掛情報、７５  生産計画データ。
【図１】
2016018434.tif 000003
【図２】
2016018434.tif 000004
【図３】
2016018434.tif 000005
【図４】
2016018434.tif 000006
【図５】
2016018434.tif 000007
【図６】
2016018434.tif 000008
【図７】
2016018434.tif 000009
【図８】
2016018434.tif 000010
【図９】
2016018434.tif 000011
【図１０】
2016018434.tif 000012
【図１１】
2016018434.tif 000013
【図１２】
2016018434.tif 000014