(57)【特許請求の範囲】
【請求項１】
コンピュータによって実行される在庫引当方法であって、
同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、
前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、を含み、
前記第１工程及び前記第２工程を１回以上行い、
ｎ（ｎは２以上の整数）種類の製品のうちの特定の１の製品ｉを作製するために用いるｍ（ｍは自然数）種類の在庫品のうちから特定の１の在庫品ｊを選択して当該在庫品ｊを引き当てるべき優先度をｐi,jとし、当該製品ｉを作製するために引き当てる前記在庫品ｊの引当数をａi,jとする場合、前記評価値Ａ及びＢは下記式（Ｉ）の評価関数Ｆによって算出される在庫引当方法。
【数３】
0006673750.tif 000025
【請求項２】
コンピュータによって実行される在庫引当方法であって、
同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、
前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、を含み、
前記第１工程及び前記第２工程を１回以上行い、
前記第１工程で変更する引当数の在庫品を用いて作製する製品を作製するために引き当てる各在庫品の引当数の下限値が定められている場合、前記第１工程で変更される引当数は、前記下限値以上の整数とされる在庫引当方法。
【請求項３】
コンピュータによって実行される在庫引当方法であって、
同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、
前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、
前記仮引当組合せ解において、前記第１工程で変更した引当数の在庫品を用いて作製する特定の１種の製品ａを作製するために引き当てる全ての前記在庫品の引当数の合計が、当該製品ａを作製するために必要な前記在庫品の引当数よりも多い場合、前記引当数の合計から前記製品ａを作製するために必要な前記在庫品の引当数を引いて得られた値を上限とする任意の自然数を設定し、前記製品ａを作製するために引き当てる全ての在庫品のうち、前記第１工程で変更した引当数の在庫品以外の前記在庫品の引当数から当該自然数を減算した引当数を新たな引当数に設定する第１引当数修正工程と、を含み、
前記第１工程及び前記第２工程を１回以上行う在庫引当方法。
【請求項４】
前記第１引当数修正工程において設定された新たな引当数が、当該新たな引当数の在庫品によって作製される製品を作製するために許容される前記在庫品の引当数の下限値未満の場合、当該新たな引当数を０にする工程を含む、請求項３に記載の在庫引当方法。
【請求項５】
前記複数種の在庫品のうちの互いに連関する性質を示す２種以上の在庫品を含む在庫品群が１以上存在する場合であって、前記第１引当数修正工程において新たに引当数が設定された在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、当該新たな引当数の在庫品によって作製される製品を作製するために許容される前記在庫品群に含まれる全ての在庫品の引当数の総和の下限値未満の場合、当該新たな引当数を設定した在庫品を含む在庫品群に含まれる全ての在庫品の引当数を０にする工程を含む、請求項３に記載の在庫引当方法。
【請求項６】
コンピュータによって実行される在庫引当方法であって、
同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、
前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、
前記仮引当組合せ解における前記第１工程で引当数を変更した在庫品ｂの全ての引当数の合計が、当該在庫品ｂの在庫数よりも多い場合、前記在庫品ｂの引当数の合計から当該在庫品ｂの在庫数を引いて得られた値を上限とする任意の自然数を設定し、前記第１工程で変更した引当数以外の前記在庫品ｂの引当数から当該自然数を減算した引当数を新たな引当数に設定する第２引当数修正工程と、を含み、
前記第１工程及び前記第２工程を１回以上行う在庫引当方法。
【請求項７】
前記第２引当数修正工程において設定された新たな引当数が、当該新たな引当数の在庫品によって作製される製品を作製するために許容される前記在庫品の引当数の下限値未満の場合、当該新たな引当数を０にする工程を含む、請求項６に記載の在庫引当方法。
【請求項８】
前記複数種の在庫品のうちの互いに連関する性質を示す２種以上の在庫品を含む在庫品群が１以上存在する場合であって、前記第２引当数修正工程において新たに引当数が設定された在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、当該新たな引当数の在庫品によって作製される製品を作製するために許容される前記在庫品群に含まれる全ての在庫品の引当数の総和の下限値未満の場合、当該新たな引当数を設定した在庫品を含む在庫品群に含まれる全ての在庫品の引当数を０にする工程を含む、請求項６に記載の在庫引当方法。
【請求項９】
コンピュータによって実行される在庫引当方法であって、
同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、
前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、
前記第１工程で引当数を変更した在庫品を用いて作製する前記製品を作製するために引き当てる前記在庫品の種類数が、当該製品を作製するために許容される前記在庫品の種類数の上限よりも多い場合、前記第１工程で引当数を変更した在庫品以外の当該製品を作製するために引き当てる在庫品の引当数を０にする工程と、を含み、
前記第１工程及び前記第２工程を１回以上行う在庫引当方法。
【請求項１０】
コンピュータによって実行される在庫引当方法であって、
同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、
前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、
前記複数種の在庫品のうちの互いに連関する性質を示す２種以上の在庫品を含む在庫品群が１以上存在する場合であって、前記第１工程で引当数を変更した在庫品を用いて作製する前記製品を作製するために引き当てる前記在庫品を含む在庫品群の種類数が、当該製品を作製するために許容される前記在庫品群の種類数の上限よりも多い場合、前記第１工程で引当数を変更した在庫品を含む在庫品群以外のいずれか１の在庫品群に含まれる全ての在庫品の引当数を０にする工程と、を含み、
前記第１工程及び前記第２工程を１回以上行う在庫引当方法。
【請求項１１】
コンピュータによって実行される在庫引当方法であって、
同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、
前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、
前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記仮引当組合せ解を引当組合せ解に設定する第３工程と、を含み、
前記第１工程及び前記第２工程を１回以上行い、
予め設定した確率で前記第２工程に代えて前記第３工程を行う在庫引当方法。
【請求項１２】
コンピュータによって実行される在庫引当方法であって、
同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、
前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、
前記複数種の在庫品のうちの互いに連関する性質を示す２種以上の在庫品を含む在庫品群が１以上存在する場合であって、かつ前記第１工程で変更した引当数の在庫品を用いて作製する製品を作製するために引き当てる在庫品を含む在庫品群に対し、当該在庫品群に含まれる全ての在庫品の引当数の総和の下限値が定められている場合、前記第１工程で変更した引当数の在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、前記下限値以上の整数となるように当該在庫品群に含まれる在庫品のうちの前記第１工程で引当数を変更した在庫品以外の在庫品の引当数を変更する準第１工程と、を含み、
前記第１工程及び前記第２工程を１回以上行う在庫引当方法。
【請求項１３】
コンピュータによって実行される在庫引当方法であって、
同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、
前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、
製品を作製するために許容される前記在庫品の種類数に上限が設定されている場合において、当該上限をＡとし、当該製品を作製するために必要な前記在庫品の引当数をＢとし、当該製品を作製するために引き当てられる各在庫品の引当数の合計値をＣとし、次に引当処理を実行するまでに補充される予定の１種の在庫品の補充予定数をＤとすると、
当該製品を作製するために引き当てる前記在庫品の種類数が、Ａ−（Ｂ−Ｃ）÷Ｄによって算出される値の小数点以下を切り捨てた整数値以下となるように、当該製品を作製するために引き当てた在庫品のうちのいずれか１以上の在庫品の引当数を０にする工程と、を含み、
前記第１工程及び前記第２工程を１回以上行う在庫引当方法。
【請求項１４】
製品を作製するために許容される前記在庫品群の種類数に上限が設定されている場合において、当該上限をＡとし、当該製品を作製するために必要な前記在庫品の引当数をＢとし、当該製品を作製するために引き当てられる各在庫品の引当数の合計値をＣとし、次に引当処理を実行するまでに補充される予定の１種の在庫品群に含まれる全ての在庫品の補充予定数をＤとすると、当該製品を作製するために引き当てる前記在庫品群の種類数が、Ａ−（Ｂ−Ｃ）÷Ｄによって算出される値の小数点以下を切り捨てた整数値以下となるように、当該製品を作製するために引き当てた在庫品群のうちのいずれか１以上の在庫品群に含まれる全ての在庫品の引当数を０にする工程を含む請求項５、８、１０及び１２のいずれか一項に記載の在庫引当方法。
【請求項１５】
コンピュータによって実行される在庫引当方法であって、
同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、
前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、
製品を作製するために許容される前記在庫品の引当数に下限値が定められている場合において、当該製品を作製するために必要な前記在庫品の引当数から当該製品を作製するために引き当てられる各在庫品の引当数の合計値を引いた値が前記下限値以上となるまで、当該製品を作製するために引き当てた在庫品の引当数を減算する工程と、を含み、
前記第１工程及び前記第２工程を１回以上行う在庫引当方法。
【請求項１６】
前記引当数を減算する工程によって減算された引当数が前記下限値未満となる場合には、当該減算した後の在庫品の引当数を０にする工程を含む請求項１５に記載の在庫引当方法。
【請求項１７】
コンピュータによって実行される在庫引当方法であって、
同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、
前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、
前記複数種の在庫品のうちの互いに連関する性質を示す２種以上の在庫品を含む在庫品群が１以上存在する場合であって、製品を作製するために引き当てる在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和に下限値が定められている場合において、当該製品を作製するために必要な前記在庫品の引当数から当該製品を作製するために引き当てられる各在庫品の引当数の合計値を引いた値が前記下限値以上となるまで、当該製品を作製するために引き当てた在庫品の引当数を減算する工程と、を含み、
前記第１工程及び前記第２工程を１回以上行う在庫引当方法。
【請求項１８】
前記引当数を減算する工程によって引当数を減算された在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、当該製品を作製するために引き当てる在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和の下限値未満となる場合には、当該減算した後の在庫品を含む在庫品群に含まれる全ての在庫品の引当数を０にする工程を含む請求項１７に記載の在庫引当方法。
【請求項１９】
コンピュータによって実行される在庫引当方法であって、
同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、
前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、
製品を作製するために過去に引き当てた在庫品が存在する場合において、当該過去に引き当てた在庫品の引当数を前記引当組合せ解に取り込む工程と、を含み、
前記第１工程及び前記第２工程を１回以上行う在庫引当方法。
【請求項２０】
同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１処理を行う第１処理部と、
前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２処理を行う第２処理部と、を含み、
前記第１処理及び前記第２処理を１回以上行い、
前記第１処理で変更する引当数の在庫品を用いて作製する製品を作製するために引き当てる各在庫品の引当数の下限値が定められている場合、前記第１処理で変更される引当数は、前記下限値以上の整数とされる在庫引当装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、製造業の工場で製品を製造するための複数の受注オーダーに対して複数種の在庫品を引き当てる業務において、引当可能な在庫品の種類に一定の自由度がある場合に、在庫の汎用性（引当可能な受注オーダーの幅）や生産性等の優先度を考慮して最適の在庫品の引当数の組合せを決定し得る在庫引当装置及び在庫引当方法に関する。
【背景技術】
【０００２】
設計製品の製造において、それぞれ仕様の異なる製品を作製する受注オーダーに在庫品を引き当てる際には、オペレータが製品に対する在庫品の組み合わせを試行錯誤して、各製品に引き当てる各在庫品の種類及びその引当数を決定している。一般的には、それぞれの受注オーダーに対して引当可能な在庫品と引当不可能な在庫品とが存在するので、その条件の下で、できるだけ汎用性の高い在庫品を手元に残しながら、納期の近い受注オーダーを充足するように各在庫品の引当数を設定する。
【０００３】
このような在庫品の引当は、作製する製品の種類が少ない場合は、オペレータが複数の在庫品のうちから最適な在庫品の引当数の組合せを決定できるが、上記在庫品の種類数及び製品を作製する受注オーダーの数が増えるにつれて、それら全てを満足するように各受注オーダーに対して各在庫品の引当数を設定するための計算量は指数関数的に増加する。このため、受注オーダー及び在庫品の双方の選択肢が多い場合には、オペレータが、各製品を作製するために適した在庫品の引当数の組合せを設定することが困難になる。
【０００４】
そこで、上記選択肢の中から最適な在庫品の引当数の組合せを特定する方法として、例えば下記非特許文献１に開示の線形計画法、又はその解空間を整数に限定する整数計画法が考えられる。非特許文献１に開示の上記方法は、各製品を作製するための各在庫品の引当数に対し、各種の制約条件を考慮して評価関数を設定し、当該評価関数が最大となるように各製品を作製するための各在庫品の引当数を最適の値に設定することによって行う。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】数理計画法入門  森北出版  ２０１４年１１月出版（ＩＳＢＮ−１３：９７８−４６２７９２１８１８）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記線形計画法及び整数計画法は、線形的な制約条件の下では有効に引当数を設定することができるが、非線形的な制約条件を扱いにくいという欠点がある。ここでの「非線形的な制約条件」とは、線形的な制約条件（線形制約式）として表現できない制約条件を意味し、具体的には、ある製品を作製するために引き当てる在庫品の種類は多くとも３種まで、できれば２種以下に抑えたいという制約条件、複数種の在庫品をグルーピングし、その特定のグループに属する在庫品のみを引き当てたいという制約条件等が考えられる。
【０００７】
上記非線形的な制約条件を考慮して製品に対する在庫品の引当数の最適解を算出するアルゴリズムとして、分枝限定法を応用することも考えられる。しかしながら非線形的な制約条件が増えると解空間を分割する組合せの数が指数関数的に増えるため、分枝限定法を以ってしても最適な在庫品の引当数を設定しにくくなる。
【０００８】
上記分枝限定法以外の最適解を算出するアルゴリズムとして、局所探索法と呼ばれる手法もある。局所探索法は、まず、出発点となる暫定解（初期解）に対し、局所的に異なる解（近傍解）を設定し、初期解の評価値と近傍解の評価値を評価関数に基づいてそれぞれ算出して比較する。次に、例えばコンピュータの演算処理部は、近傍解の方が評価値が大きい場合には近傍解を新たな暫定解に設定し、初期解の方が評価値が大きい場合には暫定解を変更しないという作業を繰り返す。この暫定解の書き換えを繰り返すほど暫定解が最適解に近づけることができる。上記局所探索法を在庫引当処理に適用することにより、評価値が大きい引当組合せ解を設定し得る。
【０００９】
本発明は、このような事情に鑑みてなされたものであり、その目的とするところは、複数種の製品を作製するための複数種の在庫品の各引当数のより適した組合せを設定できる在庫引当方法及び在庫引当装置を提供することである。
【課題を解決するための手段】
【００１２】
本発明者は、種々検討した結果、上記目的は、以下の本発明により達成されることを見出した。すなわち、本発明の一態様に係る在庫引当方法は、コンピュータによって実行される在庫引当方法であって、同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、を含み、前記第１工程及び前記第２工程を１回以上行い、ｎ（ｎは２以上の整数）種類の製品のうちの前記特定の１の製品ｉを作製するために用いるｍ（ｍは自然数）種類の在庫品のうちから特定の１の在庫品ｊを選択して当該在庫品ｊを引き当てるべき優先度をｐi,jとし、当該製品ｉを作製するために引き当てる前記在庫品ｊの引当数をａi,jとする場合、前記評価値Ａ及びＢは下記式（Ｉ）の評価関数Ｆによって算出される。
【００１３】
【数１】
0006673750.tif 000002
【００１４】
上記のように引当組合せ解における特定の製品に対する特定の在庫品の引当数を局所的に変更し、その変更前後の評価値を比較して、より評価値が好ましくなるように引当組合せ解を書き換えることにより、引当組合せ解の各製品に対する各在庫品の引当数を最適解に近づけることができる。しかも、製品と在庫品の組合せを変えつつ上記第１工程及び上記第２工程を実行する回数を多くするほど、各製品に対する在庫品の引当数を最適解に近づけることができる。また、式（Ｉ）に示す数式によって引当組合せ解及び仮引当組合せ解の優劣を数値化することができるため、評価値Ａ及びＢの優劣を簡便に判定することができ、各製品に対する各在庫品の引当数を最適解に近づけやすくなる。
【００１５】
本発明の別の態様に係る在庫引当方法は、コンピュータによって実行される在庫引当方法であって、同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、を含み、前記第１工程及び前記第２工程を１回以上行い、前記第１工程で変更する引当数の在庫品を用いて作製する製品を作製するために引き当てる各在庫品の引当数の下限値が定められている場合、前記第１工程で変更される引当数は、前記下限値以上の整数とされる。
【００１６】
上記のように引当組合せ解における特定の製品に対する特定の在庫品の引当数を局所的に変更し、その変更前後の評価値を比較して、より評価値が好ましくなるように引当組合せ解を書き換えることにより、引当組合せ解の各製品に対する各在庫品の引当数を最適解に近づけることができる。しかも、製品と在庫品の組合せを変えつつ上記第１工程及び上記第２工程を実行する回数を多くするほど、各製品に対する在庫品の引当数を最適解に近づけることができる。また、各製品を作製するために引き当てる各在庫品の引当数に下限値が定められていることにより、各在庫品から１つずつ細切れで在庫品が引き当てられることを防止できるので、各製品を作製するために引き当てる各在庫品の種類数を少なくすることができる。これにより製品に不具合が生じたときにその不具合の原因となる在庫品を特定しやすくなり、品質トレーサビリティを向上させることができる。
【００１７】
上記局所探索法は、製品に引き当てる全ての在庫品の引当数の合計、又は在庫品の在庫数等のように、特定の製品に対する特定の在庫品の組合せだけでは決まらない準大域的な制約条件を満たす近傍解をどのように効率的に設定するかがポイントとなるため、非線形的な制約条件が設定される場合には、下記の修正工程を含めることが好ましい。
【００１８】
本発明のさらに別の態様に係る在庫引当方法は、コンピュータによって実行される在庫引当方法であって、同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、前記仮引当組合せ解において、前記第１工程で変更した引当数の在庫品を用いて作製する特定の１種の製品ａを作製するために引き当てる全ての前記在庫品の引当数の合計が、当該製品ａを作製するために必要な前記在庫品の引当数よりも多い場合、前記引当数の合計から前記製品ａを作製するために必要な前記在庫品の引当数を引いて得られた値を上限とする任意の自然数を設定し、前記製品ａを作製するために引き当てる全ての在庫品のうち、前記第１工程で変更した引当数の在庫品以外の前記在庫品の引当数から当該自然数を減算した引当数を新たな引当数に設定する第１引当数修正工程と、を含み、前記第１工程及び前記第２工程を１回以上行う。
【００１９】
上記のように引当組合せ解における特定の製品に対する特定の在庫品の引当数を局所的に変更し、その変更前後の評価値を比較して、より評価値が好ましくなるように引当組合せ解を書き換えることにより、引当組合せ解の各製品に対する各在庫品の引当数を最適解に近づけることができる。しかも、製品と在庫品の組合せを変えつつ上記第１工程及び上記第２工程を実行する回数を多くするほど、各製品に対する在庫品の引当数を最適解に近づけることができる。また、第１工程によって設定された仮引当組合せ解が、在庫品の引当数の制約条件を満たさない場合に当該制約条件を満たすように仮引当組合せ解の在庫品の引当数を修正することができる。しかも、製品ａを作製するために引き当てる在庫品の引当数の合計と、製品ａを作製するために必要な在庫品の引当数との差を上限として任意の自然数を設定することにより、引当数を変更した在庫品以外の複数の在庫品の引当数を修正することができ、引当数の修正の網羅性を担保することができる。
【００２０】
上記構成において、好ましくは、第１引当数修正工程において設定された新たな引当数が、当該新たな引当数の在庫品によって作製される製品を作製するために許容される前記在庫品の引当数の下限値未満の場合、当該新たな引当数を０にする工程を含む。
【００２１】
上記構成によれば、在庫品の引当数の下限値未満の引当数が設定された在庫品の引当数を０にすることができるので、引当数の下限値の制約条件を満たすように引当数を修正することができる。これにより各製品を作製するために引き当てる各在庫品の種類数を少なくすることができ、製品に不具合が生じたときにその不具合の原因となる在庫品を特定しやすくすることができる。
【００２２】
上記構成において、好ましくは、複数種の在庫品のうちの互いに連関する性質を示す２種以上の在庫品を含む在庫品群が１以上存在する場合であって、前記第１引当数修正工程において新たに引当数が設定された在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、当該新たな引当数の在庫品によって作製される製品を作製するために許容される前記在庫品群に含まれる全ての在庫品の引当数の総和の下限値未満の場合、当該新たな引当数を設定した在庫品を含む在庫品群に含まれる全ての在庫品の引当数を０にする工程を含む。
【００２３】
上記構成によれば、在庫品群に含まれる全ての在庫品の引当数の総和の下限値未満の引当数が設定された在庫品群の全ての在庫品の引当数を０にすることができるので、在庫品群の引当数の総和の下限値の制約条件を満たすように在庫品群に含まれる全ての在庫品の引当数を修正することができる。これにより各製品を作製するために引き当てる各在庫品群の種類数を少なくすることができ、製品に不具合が生じたときにその不具合の原因となる在庫品群を特定しやすくすることができる。
【００２４】
本発明のさらに別の態様に係る在庫引当方法は、コンピュータによって実行される在庫引当方法であって、同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、前記仮引当組合せ解における前記第１工程で引当数を変更した在庫品ｂの全ての引当数の合計が、当該在庫品ｂの在庫数よりも多い場合、当該在庫品ｂの引当数の合計から当該在庫品ｂの在庫数を引いて得られた値を上限とする任意の自然数を設定し、前記第１工程で変更した引当数以外の前記在庫品ｂの引当数から当該自然数を減算した引当数を新たな引当数に設定する第２引当数修正工程と、を含み、前記第１工程及び前記第２工程を１回以上行う。
【００２５】
上記のように引当組合せ解における特定の製品に対する特定の在庫品の引当数を局所的に変更し、その変更前後の評価値を比較して、より評価値が好ましくなるように引当組合せ解を書き換えることにより、引当組合せ解の各製品に対する各在庫品の引当数を最適解に近づけることができる。しかも、製品と在庫品の組合せを変えつつ上記第１工程及び上記第２工程を実行する回数を多くするほど、各製品に対する在庫品の引当数を最適解に近づけることができる。また、第１工程によって設定された仮引当組合せ解が在庫品ｂの在庫数の制約条件を満たさない場合に、当該制約条件を満たすように仮引当組合せ解の在庫品ｂの引当数を修正することができる。しかも、在庫品ｂの引当数の合計と当該在庫品ｂの在庫数との差を上限として任意の自然数を設定することにより、引当数を変更した在庫品以外の複数の在庫品の引当数を修正することができ、引当数の修正の網羅性を担保することができる。
【００２６】
上記構成において、第２引当数修正工程で設定された新たな引当数が、当該新たな引当数の在庫品によって作製される製品を作製するために許容される前記在庫品の引当数の下限値未満の場合、当該新たな引当数を０にする工程を含むことが好ましい。
【００２７】
上記構成によれば、在庫品の引当数の下限値未満の引当数が設定された在庫品の引当数を０にすることができるので、引当数の下限値の制約条件を満たすように引当数を修正することができる。これにより各製品を作製するために引き当てる各在庫品の種類数を少なくすることができ、製品に不具合が生じたときにその不具合の原因となる在庫品を特定しやすくすることができる。
【００２８】
上記構成において、複数種の在庫品のうちの互いに連関する性質を示す２種以上の在庫品を含む在庫品群が１以上存在する場合であって、第２引当数修正工程において新たに引当数が設定された在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、当該新たな引当数の在庫品によって作製される製品を作製するために許容される前記在庫品群に含まれる全ての在庫品の引当数の総和の下限値未満の場合、当該新たな引当数を設定した在庫品を含む在庫品群に含まれる全ての在庫品の引当数を０にする工程を含むことが好ましい。
【００２９】
上記構成によれば、在庫品群に含まれる全ての在庫品の引当数の総和の下限値未満の引当数が設定された在庫品群に含まれる全ての在庫品の引当数を０にすることができるので、１つの在庫品群に含まれる全ての在庫品の引当数の総和の下限値の制約条件を満たすように在庫品群に含まれる全ての在庫品の引当数を修正することができる。これにより各製品を作製するために引き当てる各在庫品群の種類数を少なくすることができ、製品に不具合が生じたときにその不具合の原因となる在庫品群を特定しやすくすることができる。
【００３０】
本発明のさらに別の態様に係る在庫引当方法は、コンピュータによって実行される在庫引当方法であって、同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、前記第１工程で引当数を変更した在庫品を用いて作製する前記製品を作製するために引き当てる前記在庫品の種類数が、当該製品を作製するために許容される前記在庫品の種類数の上限よりも多い場合、前記第１工程で引当数を変更した在庫品以外の当該製品を作製するために引き当てる在庫品の引当数を０にする工程と、を含み、前記第１工程及び前記第２工程を１回以上行う。
【００３１】
上記のように引当組合せ解における特定の製品に対する特定の在庫品の引当数を局所的に変更し、その変更前後の評価値を比較して、より評価値が好ましくなるように引当組合せ解を書き換えることにより、引当組合せ解の各製品に対する各在庫品の引当数を最適解に近づけることができる。しかも、製品と在庫品の組合せを変えつつ上記第１工程及び上記第２工程を実行する回数を多くするほど、各製品に対する在庫品の引当数を最適解に近づけることができる。また、第１工程によって設定された仮引当組合せ解が在庫品の種類数の制約条件を満たさない場合に、当該制約条件を満たすように仮引当組合せ解の在庫品の種類数を修正することができる。
【００３２】
本発明のさらに別の態様に係る在庫引当方法は、コンピュータによって実行される在庫引当方法であって、同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、前記複数種の在庫品のうちの互いに連関する性質を示す２種以上の在庫品を含む在庫品群が１以上存在する場合であって、前記第１工程で引当数を変更した在庫品を用いて作製する前記製品を作製するために引き当てる前記在庫品を含む在庫品群の種類数が、当該製品を作製するために許容される前記在庫品群の種類数の上限よりも多い場合、前記第１工程で引当数を変更した在庫品を含む在庫品群以外のいずれか１の在庫品群に含まれる全ての在庫品の引当数を０にする工程と、を含み、前記第１工程及び前記第２工程を１回以上行う。
【００３３】
上記のように引当組合せ解における特定の製品に対する特定の在庫品の引当数を局所的に変更し、その変更前後の評価値を比較して、より評価値が好ましくなるように引当組合せ解を書き換えることにより、引当組合せ解の各製品に対する各在庫品の引当数を最適解に近づけることができる。しかも、製品と在庫品の組合せを変えつつ上記第１工程及び上記第２工程を実行する回数を多くするほど、各製品に対する在庫品の引当数を最適解に近づけることができる。また、第１工程で引当数を変更することによって製品を作製するために引き当てる在庫品を含む在庫品群の種類数が１増えた場合に、第１工程で引当数を変更した在庫品を含む在庫品群以外のいずれか１の在庫品群に含まれる全ての在庫品の引当数を０にすることにより、当該製品を作製するために引き当てる在庫品群の種類数を１減らすことができる。これにより第１工程で引当数を変更したことによって増加した在庫品群の種類数を１減らすことができ、在庫品群の種類数の制約条件を満たすように引当組合せ解を修正することができる。
【００３４】
本発明のさらに別の態様に係る在庫引当方法は、コンピュータによって実行される在庫引当方法であって、同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記仮引当組合せ解を引当組合せ解に設定する第３工程と、を含み、前記第１工程及び前記第２工程を１回以上行い、予め設定した確率で前記第２工程に代えて前記第３工程を行う。
【００３５】
上記のように引当組合せ解における特定の製品に対する特定の在庫品の引当数を局所的に変更し、その変更前後の評価値を比較して、より評価値が好ましくなるように引当組合せ解を書き換えることにより、引当組合せ解の各製品に対する各在庫品の引当数を最適解に近づけることができる。しかも、製品と在庫品の組合せを変えつつ上記第１工程及び上記第２工程を実行する回数を多くするほど、各製品に対する在庫品の引当数を最適解に近づけることができる。また、一般に、引当組合せ解における評価値の解空間は多峰性の評価値分布を有するものと推察されるが、所定の確率で第２工程に代えて第３工程を実行することにより仮引当組合せ解の評価値が引当組合せ解の評価値よりも低くなった場合でも仮引当組合せ解を棄却せずに引当組合せ解として採用することができる。そして、当該引当組合せ解に基づいて次の仮引当組合せ解を設定することにより、一峰の局所解から脱出して別の峰に移動して解空間全体内の最適解を模索することができる。
【００３６】
本発明のさらに別の態様に係る在庫引当方法は、コンピュータによって実行される在庫引当方法であって、同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、前記複数種の在庫品のうちの互いに連関する性質を示す２種以上の在庫品を含む在庫品群が１以上存在する場合であって、かつ前記第１工程で変更した引当数の在庫品を用いて作製する製品を作製するために引き当てる在庫品を含む在庫品群に対し、当該在庫品群に含まれる全ての在庫品の引当数の総和の下限値が定められている場合、前記第１工程で変更した引当数の在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、前記下限値以上の整数となるように当該在庫品群に含まれる在庫品のうちの前記第１工程で引当数を変更した在庫品以外の在庫品の引当数を変更する準第１工程と、を含み、前記第１工程及び前記第２工程を１回以上行う。
【００３７】
上記のように引当組合せ解における特定の製品に対する特定の在庫品の引当数を局所的に変更し、その変更前後の評価値を比較して、より評価値が好ましくなるように引当組合せ解を書き換えることにより、引当組合せ解の各製品に対する各在庫品の引当数を最適解に近づけることができる。しかも、製品と在庫品の組合せを変えつつ上記第１工程及び上記第２工程を実行する回数を多くするほど、各製品に対する在庫品の引当数を最適解に近づけることができる。また、上記第１工程及び準第１工程を組み合わせて引当数を変更することにより、各在庫品群を構成単位として在庫品群に含まれる全ての在庫品の引当数を変更することができるので、在庫品の引当数を変更する自由度を高めることができる。これにより仮引当組合せ解が引当組合せ解よりも優れた評価値となりやすくなるので、第２工程において引当組合せ解が更新されやすくなる。
【００３８】
本発明のさらに別の態様に係る在庫引当方法は、コンピュータによって実行される在庫引当方法であって、同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、製品を作製するために許容される前記在庫品の種類数に上限が設定されている場合において、当該上限をＡとし、当該製品を作製するために必要な前記在庫品の引当数をＢとし、当該製品を作製するために引き当てられる各在庫品の引当数の合計値をＣとし、次に引当処理を実行するまでに補充される予定の１種の在庫品の補充予定数をＤとすると、当該製品を作製するために引き当てる前記在庫品の種類数が、Ａ−（Ｂ−Ｃ）÷Ｄによって算出される値の小数点以下を切り捨てた整数値以下となるように、当該製品を作製するために引き当てた在庫品のうちのいずれか１以上の在庫品の引当数を０にする工程と、を含み、前記第１工程及び前記第２工程を１回以上行う。
【００３９】
上記のように引当組合せ解における特定の製品に対する特定の在庫品の引当数を局所的に変更し、その変更前後の評価値を比較して、より評価値が好ましくなるように引当組合せ解を書き換えることにより、引当組合せ解の各製品に対する各在庫品の引当数を最適解に近づけることができる。しかも、製品と在庫品の組合せを変えつつ上記第１工程及び上記第２工程を実行する回数を多くするほど、各製品に対する在庫品の引当数を最適解に近づけることができる。また、製品を作製するために引き当てられた各在庫品の引当数の総和が当該製品を作製するために必要な在庫品の引当数を満たしていない場合に、当該製品を作製するために引き当てた在庫品のうちのいずれか１以上の在庫品の引当数を０にすることができ、次の引当処理までに当該製品を作製するために引当可能な在庫品の種類数に余裕を持たせることができる。言い換えると、今回の引当処理で必要な引当数を確保できなかった製品に対し、次回の引当処理までに補充された在庫品を、次回の引当処理時に引き当てることができるように在庫品の種類数を減らすことができる。
【００４０】
上記構成において、製品を作製するために許容される前記在庫品群の種類数に上限が設定されている場合において、当該上限をＡとし、当該製品を作製するために必要な前記在庫品の引当数をＢとし、当該製品を作製するために引き当てられる各在庫品の引当数の合計値をＣとし、次に引当処理を実行するまでに補充される予定の１種の在庫品群に含まれる全ての在庫品の補充予定数をＤとすると、当該製品を作製するために引き当てる前記在庫品群の種類数が、Ａ−（Ｂ−Ｃ）÷Ｄによって算出される値の小数点以下を切り捨てた整数値以下となるように、当該製品を作製するために引き当てた在庫品群のうちのいずれか１以上の在庫品群に含まれる全ての在庫品の引当数を０にする工程を含むことが好ましい。
【００４１】
上記構成によれば、製品を作製するために引き当てられた各在庫品の引当数の総和が当該製品を作製するために必要な在庫品の引当数を満たしていない場合に、当該製品を作製するために引き当てた在庫品群のうちのいずれか１以上の在庫品群に含まれる全ての在庫品の引当数を０にすることができ、次の引当処理までに当該製品を作製するために引当可能な在庫品群の種類数に余裕を持たせることができる。言い換えると、今回の引当処理で必要な引当数を確保できなかった製品に対し、次回の引当処理までに補充された在庫品を、次回の引当処理時に引き当てることができるように在庫品群の種類数を減らすことができる。
【００４２】
本発明のさらに別の態様に係る在庫引当方法は、コンピュータによって実行される在庫引当方法であって、同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、製品を作製するために許容される前記在庫品の引当数に下限値が定められている場合において、当該製品を作製するために必要な前記在庫品の引当数から当該製品を作製するために引き当てられる各在庫品の引当数の合計値を引いた値が前記下限値以上となるまで、当該製品を作製するために引き当てた在庫品の引当数を減算する工程と、を含み、前記第１工程及び前記第２工程を１回以上行う。
【００４３】
上記のように引当組合せ解における特定の製品に対する特定の在庫品の引当数を局所的に変更し、その変更前後の評価値を比較して、より評価値が好ましくなるように引当組合せ解を書き換えることにより、引当組合せ解の各製品に対する各在庫品の引当数を最適解に近づけることができる。しかも、製品と在庫品の組合せを変えつつ上記第１工程及び上記第２工程を実行する回数を多くするほど、各製品に対する在庫品の引当数を最適解に近づけることができる。また、製品を作製するために引き当てられた在庫品の引当数の総和が、当該製品を作製するために必要な在庫品の引当数を満たしていない場合に、当該製品を作製するために引き当てた在庫品の引当数を減らすことにより、次の引当処理で引き当てる在庫品の引当数が、当該製品を作製するために引き当てる各在庫品の引当数の下限値を上回るように在庫品を引き当てることができる。つまり、次の引当処理で引き当てる在庫品の引当数が、当該製品を作製するために引き当てる各在庫品の引当数の下限値未満となることを回避し得る。
【００４４】
上記構成において、前記引当数を減算する工程によって減算された引当数が前記下限値未満となる場合には、当該減算した後の在庫品の引当数を０にする工程を含むことが好ましい。
【００４５】
上記構成によれば、在庫品の引当数の下限値未満の引当数が設定された在庫品の引当数を０にすることができるので、引当数の下限値の制約条件を満たすように引当数を修正することができる。
【００４６】
本発明のさらに別の態様に係る在庫引当方法は、コンピュータによって実行される在庫引当方法であって、同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、前記複数種の在庫品のうちの互いに連関する性質を示す２種以上の在庫品を含む在庫品群が１以上存在する場合であって、製品を作製するために引き当てる在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和に下限値が定められている場合において、当該製品を作製するために必要な前記在庫品の引当数から当該製品を作製するために引き当てられる各在庫品の引当数の合計値を引いた値が前記下限値以上となるまで、当該製品を作製するために引き当てた在庫品の引当数を減算する工程と、を含み、前記第１工程及び前記第２工程を１回以上行う。
【００４７】
上記のように引当組合せ解における特定の製品に対する特定の在庫品の引当数を局所的に変更し、その変更前後の評価値を比較して、より評価値が好ましくなるように引当組合せ解を書き換えることにより、引当組合せ解の各製品に対する各在庫品の引当数を最適解に近づけることができる。しかも、製品と在庫品の組合せを変えつつ上記第１工程及び上記第２工程を実行する回数を多くするほど、各製品に対する在庫品の引当数を最適解に近づけることができる。また、製品を作製するために引き当てられた在庫品の引当数の総和が、当該製品を作製するために必要な在庫品の引当数を満たしていない場合に、当該製品を作製するために引き当てた在庫品の引当数を減らすことにより、次の引当処理で引き当てる在庫品の引当数が、製品を作製するために引き当てる各在庫品の引当数の下限値を上回るように設定することができる。
【００４８】
上記構成において、前記引当数を減算する工程によって引当数を減算された在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、当該製品を作製するために引き当てる在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和の下限値未満となる場合には、当該減算した後の在庫品を含む在庫品群に含まれる全ての在庫品の引当数を０にする工程を含むことが好ましい。
【００４９】
上記構成によれば、在庫品の引当数の下限値未満の引当数が設定された在庫品群に含まれる全ての在庫品の引当数を０にすることができるので、引当数の下限値の制約条件を満たすように引当数を修正することができる。
【００５０】
本発明のさらに別の態様に係る在庫引当方法は、コンピュータによって実行される在庫引当方法であって、同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程と、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを同一の評価関数を用いて算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程と、製品を作製するために過去に引き当てた在庫品が存在する場合において、当該過去に引き当てた在庫品の引当数を前記引当組合せ解に取り込む工程と、を含み、前記第１工程及び前記第２工程を１回以上行う。
【００５１】
上記のように引当組合せ解における特定の製品に対する特定の在庫品の引当数を局所的に変更し、その変更前後の評価値を比較して、より評価値が好ましくなるように引当組合せ解を書き換えることにより、引当組合せ解の各製品に対する各在庫品の引当数を最適解に近づけることができる。しかも、製品と在庫品の組合せを変えつつ上記第１工程及び上記第２工程を実行する回数を多くするほど、各製品に対する在庫品の引当数を最適解に近づけることができる。また、前回の引当処理で製品を作製するために必要となる在庫品の引当数を確保することができなかった製品に対しても、次回の引当処理で引当済の在庫品の引当数を考慮しながら当該製品を作製するために不足している引当数分の在庫品を引き当てることができる。
【００５２】
本発明の在庫引当装置は、同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解において、任意の１種の前記製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１処理を行う第１処理部と、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２処理を行う第２処理部と、を含み、前記第１処理及び前記第２処理を１回以上行い、前記第１処理で変更する引当数の在庫品を用いて作製する製品を作製するために引き当てる各在庫品の引当数の下限値が定められている場合、前記第１処理で変更される引当数は、前記下限値以上の整数とされる。
【００５３】
上記のように引当組合せ解における特定の製品に対する特定の在庫品の引当数を局所的に変更し、その変更前後の評価値を比較して、より評価値が好ましくなるように引当組合せ解を書き換えることにより、引当組合せ解の各製品に対する各在庫品の引当数を最適解に近づけることができる。しかも、製品と在庫品の組み合わせを変えつつ上記第１処理及び第２処理を実行する回数を多くするほど、各製品に対する各在庫品の引当数を最適解に近づけることができる。また、各製品を作製するために引き当てる各在庫品の引当数に下限値が定められていることにより、各在庫品から１つずつ細切れで在庫品が引き当てられることを防止できるので、各製品を作製するために引き当てる各在庫品の種類数を少なくすることができる。これにより製品に不具合が生じたときにその不具合の原因となる在庫品を特定しやすくなり、品質トレーサビリティを向上させることができる。
【発明の効果】
【００５４】
本発明によれば、複数種の製品を作製するための複数種の在庫品の各引当数のより適した組合せを設定できる在庫引当方法及び在庫引当装置を提供することができる。
【図面の簡単な説明】
【００５５】
【図１】実施形態１における在庫引当方法を実行する在庫引当システムの構成を示す図である。
【図２】実施形態１における在庫引当方法の手順を示すフローチャートである。
【図３】実施形態２における在庫引当方法を実行する在庫引当システムの構成を示す図である。
【図４】実施形態２における在庫引当方法の手順を示すフローチャートである。
【発明を実施するための形態】
【００５６】
以下、本発明にかかる実施形態を図面に基づいて説明する。なお、各図において同一の符号を付した構成は、同一の構成であることを示し、その説明を適宜省略する。
【００５７】
＜実施形態１：在庫引当システム＞
図１は、実施形態１の在庫引当方法を実行する在庫引当システムの構成を示す図である。在庫引当システム１は、図１に示すように、入力部１１と、出力部１２と、記憶部１３と、制御処理部１４と、で構成されている。
【００５８】
入力部１１は、制御処理部１４に接続され、例えば在庫を引き当てる上で必要な各種データを在庫引当システム１に入力する機器であり、例えば、所定の機能を割り付けられた複数の入力スイッチ、キーボード、マウス等である。
【００５９】
出力部１２は、制御処理部１４に接続され、制御処理部１４の制御に従って、入力部１１から入力されたコマンドやデータを出力する機器であり、例えばＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）及び有機ＥＬディスプレイ等の表示装置、又はプリンタ等の印刷装置等である。
【００６０】
記憶部１３は、制御処理部１４に接続され、制御処理部１４の制御に従って、各種の所定のプログラム及び各種の所定のデータを記憶する回路である。この各種の所定のプログラムは、例えば、当該在庫引当システムの各部を当該各部の機能に応じて制御する制御プログラム、複数種の製品を作製するための複数種の在庫品の最適な引当数の組合せ（引当組合せ解）を決定する在庫引当プログラム等の制御処理プログラムが含まれる。前記各種の所定のデータには、製品に関する情報（例えば価格、用途、機能、保管期間、大きさ、引当数の下限値等）を記憶する製品情報データベース３１、在庫品に関する情報（例えば在庫数、有効期限、大きさ、材質、機能及び用途、並びにこれらの各種の特性に応じて設定される各在庫品が属する在庫品群等）を記憶する在庫品情報データベース３２、各製品に対する各在庫品の引当数を決定するために必要な情報（例えば各製品に対して特定の在庫品を引き当てる優先度、引当可否情報、ループ数設定値Ｎ等）を記憶する解探索条件データベース３３等が含まれる。
【００６１】
このような記憶部１３は、例えば不揮発性の記憶素子であるＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）や書き換え可能な不揮発性の記憶素子であるＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等を備える。そして、記憶部１３は、前記所定のプログラムの実行中に生じるデータ等を記憶するいわゆる制御処理部１４のワーキングメモリとなるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等を備える。また、記憶部１３は、例えばハードディスク等の比較的大容量の記憶装置を備えて良い。
【００６２】
制御処理部１４は、在庫引当システム１の各部を当該各部の機能に応じてそれぞれ制御し、複数種の製品を作製するための複数種の在庫品の各引当数を決定するための回路である。制御処理部１４は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）及びその周辺回路を備えて構成される。制御処理部１４には、記憶部１３に記憶されている制御処理プログラムが実行されることによって、図１に示すように、制御部４１、初期解設定部４２、カウンタ部４３、カウンタ成否判定部４４、引当数変更部（第１処理部）４５、ロット数制約成否判定部４６、ロット数修正部４７、引当数合計制約成否判定部４８、第１引当数修正部４９、在庫数制約成否判定部５０、第２引当数修正部５１、評価値比較部５２、及び引当組合せ更新部（第２処理部）５３が機能的に構成される。
【００６３】
制御部４１は、在庫引当システム１の各部を当該各部の機能に応じてそれぞれ制御するものである。
【００６４】
初期解設定部４２は、記憶部１３の解探索条件データベース３３に格納された引当組合せ解の初期解を読み込むことによって引当組合せ解の初期解を設定するものである。引当組合せ解の初期解は、例えば入力部１１でユーザーによって入力され、記憶部１３の解探索条件データベース３３に記憶されたものであってもよいし、例えば制御処理部１４が０以上の正の整数を無作為に選択して、解探索条件データベース３３に記憶されたものであってもよい。
【００６５】
カウンタ部４３は、引当組合せ解における特定の１の引当数を変更した回数に応じてカウンタｎの値を設定するものであり、例えば引当組合せ解が初期解の場合、つまり、引当数を変更した回数が０回の場合、カウンタｎの値を０に設定し、その後引当組合せ解における特定の１の引当数を変更した回数に応じてカウンタｎの値を１ずつ増数させるものである。
【００６６】
カウンタ成否判定部４４は、カウンタｎの値が予めユーザによって設定されたループ数設定値Ｎを満たすか否かを判定するものであり、具体的にはカウンタｎの値がループ数設定値Ｎと同値となる場合に、ループ数設定値Ｎの回数だけ引当数が変更されたものと判定し、カウンタｎの値がループ数設定値Ｎに到達していない場合に、さらに引当数を変更すべきものと判定する。ループ数設定値Ｎは、例えば１００又は１０００等のようにユーザーによって任意に設定されるものであり、解探索条件データベース３３に格納されている。
【００６７】
引当数変更部（第１処理部）４５は、上記カウンタ成否判定部４４によって引当数を変更すべきと判定された場合に、引当組合せ解のうちの特定の１の製品を作製するための特定の１の在庫品の引当数を、０以上の整数であって、かつ製品を作製するために必要な在庫品の引当数又は在庫品の在庫数のいずれか小さい方の数値を上限とする整数の中からランダムに変更するものである。
【００６８】
ロット数制約成否判定部４６は、引当数を変更した在庫品を用いて作製する前記製品を作製するために引き当てる前記在庫品の種類数が、そのロット数制約条件を充足するか否かを判定するものである。より具体的には、各製品に応じて当該製品を作製するために許容される在庫品の種類数の上限が予め設定されており、ロット数制約成否判定部４６は、当該製品に引き当てる在庫品の種類数が前記上限以下である場合に、ロット数制約条件を充足すると判定し、当該製品に引き当てる在庫品の種類数が前記上限を超える場合に、ロット数制約条件を充足しないと判定する。
【００６９】
ロット数修正部４７は、ロット数制約成否判定部４６が上記ロット数制約条件を充足しないと判定した場合に、引当数を変更した在庫品以外の当該製品を作製するために引き当てる在庫品の引当数を０に修正するものである。これにより当該製品に引き当てる在庫品の種類数を１減らすことができ、ロット数制約条件を充足するように在庫品の引当数を修正することができる。
【００７０】
引当数合計制約成否判定部４８は、引当数を変更した在庫品を用いて作製する特定の１の製品ａを作製するために引き当てる全ての前記在庫品の引当数の合計が、当該製品ａを作製するために必要な前記在庫品の引当数合計制約条件を充足するか否かを判定するものである。具体的には、各製品に応じて当該製品を作製するために引き当てるべき在庫品の引当数が予め設定されており、引当数合計制約成否判定部４８は、当該製品に引き当てる在庫品の引当数の合計が当該製品に引き当てるべき在庫品の引当数以下の場合に、引当数合計制約条件を充足すると判定し、当該製品に引き当てる在庫品の引当数の合計が、当該製品に引き当てるべき在庫品の引当数を超える場合に引当数合計制約条件を充足しないと判定する。
【００７１】
第１引当数修正部４９は、引当数合計制約成否判定部４８が上記引当数合計制約条件を充足しないと判定した場合に、前記引当数の合計から前記製品を作製するために必要な前記在庫品の引当数を引いて得られた値を上限とする任意の自然数を設定し、前記製品を作製するために引き当てる全ての在庫品のうち、引当数を変更した在庫品以外の前記在庫品の引当数から当該自然数を減算した引当数を新たな引当数に設定するものである。このように第１引当数修正部４９によって引当数合計制約条件を充足しない在庫品の引当数を減算することにより、引当数合計制約条件を充足するように在庫品の引当数を修正することができる。
【００７２】
在庫数制約成否判定部５０は、引当数を変更した在庫品の全ての引当数の合計が、当該在庫品の在庫数制約条件を充足するか否かを判定するものである。具体的には、在庫品に応じて在庫数が予め設定されており、在庫数制約成否判定部５０は、引当数を変更した在庫品の全ての引当数の合計が、当該在庫品の在庫数以下の場合に在庫数制約条件を充足すると判定し、引当数を変更した在庫品の全ての引当数の合計が、当該在庫品の在庫数を超える場合に在庫数制約条件を充足しないと判定する。
【００７３】
第２引当数修正部５１は、在庫数制約成否判定部５０が上記在庫品制約条件を充足しないと判定した場合に、引当数を変更した在庫品の引当数の合計から当該在庫品の在庫数を引いて得られた値を上限とする任意の自然数を設定し、変更した引当数以外の前記在庫品の引当数から当該自然数を減算した引当数を新たな引当数に設定するものである。このように第２引当数修正部５１によって在庫数制約条件を充足しない在庫品の引当数を減算することにより、在庫品制約条件を充足するように在庫品の引当数を修正することができる。
【００７４】
評価値比較部５２は、引当組合せ解の評価値と、当該引当組合せ解における特定の１の引当数を変更した後の引当組合せ解（以下「仮引当組合せ解」とも記す）の評価値とを算出し、それらを比較するものである。
【００７５】
引当組合せ更新部（第２処理部）５３は、上記評価値比較部５２による比較の結果、引当数を変更した後の引当組合せ解の評価値が、引当数を変更する前の引当組合せ解の評価値以上の場合に、引当数を変更した後の引当組合せ解を、新たな引当組合せ解に書き換えるものである。
【００７６】
このような在庫引当システム１は、例えばパーソナルコンピュータ等のコンピュータによって構成されてよいし、また例えば、処理サーバ装置、データサーバ装置および入出力端末装置を互いに通信可能に備えたシステムで構成されてもよい。
【００７７】
＜在庫引当方法＞
次に、本実施形態の在庫引当方法の動作について説明する。図２は、実施形態における在庫引当方法の手順を示すフローチャートである。上記在庫引当システム１を用いた在庫引当方法は、同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解を決定するものであり、オペレータが在庫引当システム１に対し在庫引当処理の実行を指示したタイミングでスタートして、制御処理部１４が図２のステップＳ１の処理に進む。このスタートと同時に、制御処理部１４は、必要な各部の初期化を実行し、制御処理プログラムの実行によって、制御処理部１４には、制御部４１、初期解設定部４２、カウンタ部４３、カウンタ成否判定部４４、引当数変更部４５、ロット数制約成否判定部４６、ロット数修正部４７、引当数合計制約成否判定部４８、第１引当数修正部４９、在庫数制約成否判定部５０、第２引当数修正部５１、評価値比較部５２、及び引当組合せ更新部５３等が機能的に構成される。
【００７８】
そして、制御処理部１４は、制御部４１によって、製品情報データベース３１に格納されている製品に関するデータ、在庫品情報データベース３２に格納されている在庫品に関するデータ、及び解探索条件データベース３３に格納されている引当数の引当に関する制約条件に関するデータを読み込む。
【００７９】
上記在庫引当システムは、各製品に対する各在庫品の引当数の決定に関して、大略、次のように動作する。
【００８０】
図２において、まず、制御処理部１４は、初期解設定部４２によって、前記引当組合せ解の初期解を設定する（Ｓ１）。
【００８１】
次に、制御処理部１４は、カウンタ部４３によって、引当組合せ解の引当数を変更した回数を示すカウンタｎの値を０に設定する（Ｓ２）。
【００８２】
次に、制御処理部１４は、カウンタ成否判定部４４によって、カウンタｎの値がループ数設定値Ｎを満たすか否かを判定する。そして、カウンタｎの値がループ数設定値Ｎと同値である場合（Ｓ３：Ｙｅｓ）、制御処理部１４は、記憶部１３に記憶された引当組合せ解を最適解として記憶部１３に格納し、処理を終了する（エンド）。引当組合せ解の最適解は、必要に応じて、制御部４１によって外部機器に出力されてもよい。一方、カウンタｎの値がループ数設定値Ｎと同値でない場合（Ｓ３：Ｎｏ）、カウンタ部４３によってカウンタｎの値を１増数させる（Ｓ４）。
【００８３】
次に、制御処理部１４は、引当数変更部４５によって、引当組合せ解のうちの特定の１の製品を作製するための特定の１の在庫品の引当数を、０以上の整数であって、かつ製品を作製するために必要な在庫品の引当数又は在庫品の在庫数のいずれか小さい方の数値を上限とする整数の中からランダムに変更する（Ｓ５）。
【００８４】
次に、制御処理部１４は、ロット数制約成否判定部４６によって、引当数を変更した在庫品を用いて作製する前記製品を作製するために引き当てる前記在庫品の種類数が、当該製品を作製するために許容される前記在庫品の種類数の上限を満たすか否かを判定する（Ｓ６）。そして、当該製品を作製するために引き当てる在庫品の種類数が、当該製品を作製するために許容される在庫品の種類数の上限を超える場合（Ｓ６：Ｎｏ）、ロット数修正部４７は、引当数を変更した在庫品以外の当該製品を作製するために引き当てる在庫品の引当数を０にする（Ｓ７）。一方、当該製品を作製するために引き当てる在庫品の種類数が、当該製品を作製するために許容される在庫品の種類数の上限以下の場合（Ｓ６：Ｙｅｓ）、制御処理部１４はステップＳ８の処理に進む。
【００８５】
次に、制御処理部１４は、引当数合計制約成否判定部４８によって、引当数を変更した在庫品を用いて作製する特定の１の製品ａを作製するために引き当てる全ての前記在庫品の引当数の合計が、当該製品ａを作製するために必要な前記在庫品の引当数よりも多いか否かを判定する（Ｓ８）。そして、製品ａを作製するために引き当てる全ての在庫品の引当数の合計が、製品ａを作製するために必要な前記在庫品の引当数よりも多い場合（Ｓ８：Ｎｏ）、第１引当数修正部４９は、前記引当数の合計から前記製品ａを作製するために必要な前記在庫品の引当数を引いて得られた値を上限とする任意の自然数を設定し、前記製品ａを作製するために引き当てる全ての在庫品のうち、引当数を変更した在庫品以外の前記在庫品の引当数から当該自然数を減算した引当数を新たな引当数に設定する（Ｓ９）。一方、製品ａを作製するために引き当てる全ての在庫品の引当数の合計が、製品ａを作製するために必要な前記在庫品の引当数以下の場合（Ｓ８：Ｙｅｓ）、制御処理部１４はステップＳ１０の処理に進む。
【００８６】
次に、制御処理部１４は、在庫数制約成否判定部５０によって、前記仮引当組合せ解において引当数を変更した在庫品ｂの全ての引当数の合計が、引当数を変更した在庫品ｂの在庫数よりも多いか否かを判定する（Ｓ１０）。そして、在庫品ｂの全ての引当数の合計が在庫品ｂの在庫数よりも多い場合（Ｓ１０：Ｎｏ）、第２引当数修正部５１は、引当数を変更した在庫品ｂの引当数の合計から当該在庫品ｂの在庫数を引いて得られた値を上限とする任意の自然数を設定し、引当数を変更した在庫品ｂ以外の在庫品の引当数から当該自然数を減算した引当数を新たな引当数に設定する（Ｓ１１）。一方、在庫品ｂの全ての引当数の合計が在庫品ｂの在庫数以下の場合（Ｓ１０：Ｙｅｓ）、制御処理部１４はステップＳ１２の処理に進む。
【００８７】
次に、制御処理部１４は、評価値比較部５２によって、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを算出し、評価値Ａと評価値Ｂとを比較する（Ｓ１２）。そして、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合（Ｓ１２：Ｎｏ）、前記引当組合せ解を変更せず、制御処理部１４はステップＳ３の処理に戻る。一方、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合（Ｓ１２：Ｙｅｓ）、引当組合せ更新部５３は、前記仮引当組合せ解を新たな引当組合せ解に書き換えた上で（Ｓ１３）。制御処理部１４はステップＳ３の処理に戻る。
【００８８】
以上のようにしてステップＳ３〜Ｓ１３の各工程を繰り返すことで、カウンタ部４３がカウンタｎの値を１ずつ増数させて、カウンタｎの値がループ数設定値ＮになるまでステップＳ３〜ステップＳ１３の各工程を繰り返す。このようにして引当組合せ解を書き換えることで引当組合せ解を最適解に近づける。
【００８９】
このような本実施形態の在庫引当方法は、同一又は相異なる複数種の製品を作製するために引き当てる１種又は複数種の在庫品の引当数の組合せを設定した引当組合せ解における任意の１種の製品に対する任意の１種の前記在庫品の引当数を変更した仮引当組合せ解を作成する第１工程（ステップＳ５）と、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを算出し、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合に前記引当組合せ解を変更せず、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合に前記仮引当組合せ解を新たな引当組合せ解に書き換える第２工程（ステップＳ１３）と、を含み、前記第１工程及び前記第２工程を１回以上行う。上記第１及び第２工程を組み合わせた局所検索法をベースとして引当組合せ解を順次書き換えることにより、各製品に対する各在庫品の引当数を最適解に近づけることができる。そして、製品と在庫品の組合せを変えつつ上記第１処理及び第２工程を実行する回数を多くするほど（つまり、引当組合せ解を書き換える回数を多くするほど）、引当組合せ解を最適解に近づけることができる。
【００９０】
本実施形態の在庫引当方法は、上記第１工程で作成した仮引当組合せ解に対して準大域的な制約条件が課される場合に、第１工程と第２工程との間にその制約条件に応じた修正工程（ステップＳ７、Ｓ９及びＳ１１）を加え、当該修正工程によって仮引当組合せ解を修正するようにしている。上記準大域的な制約条件としては、例えば、特定の製品を作製するために引き当てる在庫品の引当数の上限が設定されている場合（ステップＳ８：引当数合計制約条件）、在庫品の在庫数の上限が設定されている場合（ステップＳ１０：在庫数制約条件）、１つの製品を作製するために用いるべき在庫品の種類数の上限が設定されている場合（ステップＳ６：ロット数制約条件）、在庫品が複数のグループに分けられていて特定の製品を作製するために特定のグループの在庫品を使用すべきことが設定されている場合（図示せず：グループ制約条件）等が考えられる。これらの各制約条件及びそれを満たすように引当数を修正する各修正工程は後述する。
【００９１】
上記在庫引当方法の各工程を、一具体例として例えば下記の表１に示す引当組合せ解に対し、各在庫品ロットの引当数の組合せを決定する場合について説明する。
【００９２】
【表１】
0006673750.tif 000003
【００９３】
上記表１に示す引当組合せ解は、５種類の製品を作製するために引き当てる５種類の在庫品ロットの引当数を設定したものであり、具体的には各受注オーダーＪ００１〜Ｊ００５に引き当てる各在庫品ロットＡ００１〜Ａ００２及びＢ００１〜Ｂ００３の引当数を設定している。１つの受注オーダーは、１種類の製品を作製するために引き当てる在庫品の引当数を設定したものであり、表１の縦の列が受注オーダーに相当する。つまり、受注オーダーＪ００１は、在庫品ロットＡ００１の引当数を２個、在庫品ロットＡ００２の引当数を０個、在庫品ロットＢ００１の引当数を１個、在庫品ロットＢ００２の引当数を０個、在庫品ロットＢ００３の引当数を１個を引き当てることを設定したものである。
【００９４】
上記在庫品ロットは、同一の製造日時、製造場所、幅、長さ、重量及び各種性能等の属性に応じて在庫品に対し個別のロット番号を付してグループ分けした在庫品の管理番号であり、例えば、異なる製造日時で製造された同一材料の在庫品に対しそれぞれ製造日時ごとに個別のロット番号を付して別々にグループ分けして管理したものが挙げられる。上記表１における在庫品ロットＡ００１及びＡ００２と在庫品ロットＢ００１〜Ｂ００３とは、例えば同一材料の製造場所違いであり、在庫品ロットＡ００１及びＡ００２は例えば製造日時違いであり、在庫品ロットＢ００１〜Ｂ００３は例えば製造日時違いである。
【００９５】
表１における「合計引当数」は、受注オーダーにおいて製品を作製するために必要な在庫品の引当数の合計を意味し、例えば受注オーダーＪ００１に必要な在庫品ロットの引当数の合計が４であることを意味している。なお、本発明の在庫引当方法においては、特定の１の受注オーダーの各在庫品ロットの引当数の合計が、受注オーダーの合計引当数を下回っていても有効な引当組合せ解として扱うこととする。なぜなら、現実問題として、いずれかの在庫品ロットの在庫数が足りずに受注オーダーで要求される引当数を充足させ得ない場合でも、在庫品ロットの在庫が納入され次第、その在庫品の不足分を引き当てる処理を行い得るからである。一方、各在庫品ロットの引当数の合計が、受注オーダーの合計引当数を上回る場合は、後述する引当数の制約条件を充足しないと判定し、その後の第１引当数修正工程によって余剰分の引当数を減算することで在庫品ロットの引当数の合計が合計引当数を上回らないように調整する。このような調整を行う理由は、受注オーダーが要求する引当数よりも多くの在庫品の引当数を確保する必要はないからである。
【００９６】
表１における「在庫量」は、在庫品ロットの在庫数を意味し、例えば在庫品ロットＡ００１の在庫品の個数は１２個存在し、最大１２個を引き当てることができることを意味する。
【００９７】
表１においては、５種類の受注オーダーと５種類の在庫品ロットとの組合せの引当組合せ解を示しているが、受注オーダーの種類数及び各受注オーダーで引き当てる在庫品ロットの種類数は５種類のみに限定されず、ｎ（ｎは２以上の整数）種類以上の受注オーダーを任意に設定することができ、また各受注オーダーで引き当てる在庫品の種類数は、受注オーダーに在庫品ロットの種類の上限に制約がある場合を除き、ｍ（ｍは自然数）種類以上の任意の在庫品ロットを引き当てることができる。以下に各工程を詳述する。
【００９８】
（ステップＳ１：初期解の設定）
ステップＳ１において、初期解設定部４２は各受注オーダーに引き当てる各在庫品ロットの引当数を引当組合せ解の初期解として設定する。この初期解は、全ての受注オーダーに引き当てる全ての在庫品ロットの引当数を０に設定してもよいし、全ての在庫品ロットの引当数を任意の自然数に設定してもよいし、各受注オーダーに引き当てる各在庫品の引当数を乱数によって無作為に設定してもよい。一般に、引当組合せ解の解空間は１つの極大値が最適解となっている場合よりも、複数の極大値を有する多峰性の分布を含む場合が多いため、初期解で局所的な偏りを抑制するという観点から、引当組合せ解の初期解は全ての受注オーダーに引き当てる全ての在庫品ロットの引当数を同数に設定することが好ましい。また、後述する種々の制約条件を満たすように初期解を設定する観点から、全受注オーダーの各在庫品ロットの引当数を０に設定することが好ましい。全受注オーダーの各在庫品ロットの引当数を０に設定した場合の引当組合せ解を下記の表２に示す。上述のように初期解を設定することによりステップＳ１は完了し、制御処理部１４はステップＳ２の処理に進む。
【００９９】
【表２】
0006673750.tif 000004
【０１００】
（ステップＳ２：ループ数設定）
ステップＳ２において、カウンタ部４３は引当組合せ解を書き換えた回数（「ループ回数」とも記す）を示すカウンタｎの値を０に設定する。カウンタｎの値は、引当組合せ解の初期解から引当数を書き換えた回数を意味するが、ステップＳ２の段階では、引当組合せ解の初期解に対し、引当数の書き換えを一度も行っていないため、カウンタ部４３は、カウンタｎの値を０に設定する。このカウンタｎの設定によりステップＳ２は完了し、制御処理部１４はステップＳ３の処理に進む。
【０１０１】
（ステップＳ３：ループ判定）
ステップＳ３において、カウンタ成否判定部４４はカウンタｎの値とループ数設定値Ｎとを比較し、カウンタｎの値がループ数設定値Ｎであるか否かを判定する。カウンタｎの値がループ数設定値Ｎである場合（Ｓ３：Ｙｅｓ）、カウンタ成否判定部４４は、現在設定されている引当組合せ解を最良解と判定し、制御処理部１４は引当組合せ解の書き換えを終了する（エンド）。一方、カウンタｎの値がループ数設定値Ｎに達していない場合（Ｓ３：Ｎｏ）、カウンタ部４３はカウンタｎの値を１増数するステップＳ４を行う。これによりステップＳ４は完了し、制御処理部１４はステップＳ５の処理に進む。
【０１０２】
（ステップＳ５：特定の引当数の変更：第１工程）
ステップＳ５において、引当数変更部４５は、引当組合せ解における任意の１種の在庫品ロットの引当数を変更した仮引当組合せ解を作成する。例えば、引当組合せ解が下記の表３に示すものである場合、仮引当組合せ解は、下記表３の引当組合せ解に対して任意の１の在庫品ロットの引当数を変更したものとなり、例えば下記の表４に示すものとなる。
【０１０３】
【表３】
0006673750.tif 000005
【０１０４】
表４においては、表３の受注オーダーＪ００２の在庫品ロットＡ００２の引当数０を引当数２に変更した場合を示している。表３及び表４の仮引当組合せ解において、処理対象となる特定の１の受注オーダーの特定の１の在庫品ロットに対し網掛けを付しており、以下の各表においてもこの網掛けによる処理対象の特定手法を踏襲するものとする。なお、表３及び表４中の「ロット数上限」は、後述するステップＳ６において説明する。
【０１０５】
【表４】
0006673750.tif 000006
【０１０６】
ここで、仮引当組合せ解において、特定の１の引当数を変更する在庫品ロットの選択方法は、特に限定されず、例えば特定の１の受注オーダーＪ００１の特定の１の在庫品ロットＡ００１（表３の左上隅の引当数）を選択してもよいし、全受注オーダーの中からランダムに任意の１の受注オーダーを選択し、その選択した受注オーダーに対して引当可能な全ての在庫品ロットの中からランダムに任意の１の在庫品ロットを選択してもよい。また変更後の引当数（例えば表４においては「２」）は、受注オーダーの合計引当数又は在庫品ロットの在庫量のいずれか小さい方を上限とする０以上の整数から任意に選択することができる。つまり、表３に示す受注オーダーＪ００２の在庫品ロットＡ００２の引当数を変更する場合、受注オーダーＪ００２の合計引当数３と、在庫品ロットの在庫数１８とのうちの小さい方である３を上限とし、０〜３の範囲の中でランダムに変更後の引当数を設定することができ、表４においては、変更後の引当数を２としている。上記特定の在庫品ロットの引当数を変更することによりステップＳ５は完了し、制御処理部１４はステップＳ６の処理に進む。
【０１０７】
ステップＳ３〜ステップＳ１３のループを繰り返す中でステップＳ５を複数回実行する場合、変更する引当数の受注オーダー又は在庫品ロットのいずれか一方若しくは両方を各ステップＳ５ごとに異ならしめることが好ましく、例えば受注オーダーＪ００１を一定として、在庫品ロットＡ００１、Ａ００２、Ｂ００１、Ｂ００２、Ｂ００３の引当数をこの順に変更した仮引当組合せ解を設定し、それを終えると受注オーダーＪ００２に変更して同様の操作を実行するというように複数回のステップＳ５を繰り返すことが好ましい。もちろん、各ステップＳ５ごとに、変更する受注オーダー及び在庫品ロットの組合せをランダムに設定してもよい。
【０１０８】
ステップＳ５（第１工程）は、引当組合せ解における全ての受注オーダーに対する全ての在庫品ロットの組合せに対して実行することが好ましく、例えば上記表４に示す引当組合せ解の場合、５種類の受注オーダーに対する５種類の在庫品ロットの全組合せである２５通りの引当数に対してそれぞれステップＳ５を１回以上実行して引当数を変更することが好ましい。ステップＳ５の実行順序（引当数の変更順序）は、表４に示す引当組合せ解の左上隅の引当数（受注オーダーＪ００１に対する在庫品ロットＡ００１の引当数）から１つずつ下の引当数（つまり受注オーダーＪ００１に対する在庫品ロットＡ００２、Ｂ００１、Ｂ００２、Ｂ００３の順）を変更し、次に受注オーダーＪ００２に対する各在庫品ロットの引当数を変更するというように実行してもよいし、表４の引当組合せ解における各受注オーダーに対する各在庫品ロットの２５通りの組合せの中からランダムに１つずつ選択してステップＳ５を実行し、各受注オーダーに対する各在庫品の引当数のそれぞれに対してステップＳ５を１回以上実行してもよい。
【０１０９】
（ステップＳ６：ロット数制約条件の充足可否判断）
ステップＳ６において、ロット数制約成否判定部４６は仮引当組合せ解がロット数制約条件を充足するか否かを判定する。ロット数制約条件は、受注オーダーのニーズに応えるための非線形的な制約条件であり、具体的には１つの受注オーダーに対して引き当てる在庫品ロットの種類数の上限の制約である。例えば表４における受注オーダーＪ００２に引き当てる在庫品ロットの種類数の上限は２であるため、受注オーダーＪ００２に引き当てる在庫品の種類数は、５種類の在庫品ロットＡ００１〜Ａ００２及びＢ００１〜Ｂ００３のうちから２種以下の在庫品ロットを選択しなければならず、その選択した在庫品ロットの中で引当数を設定しなければならない。
【０１１０】
ロット数制約成否判定部４６は、仮引当組合せ解における引当数を変更した受注オーダーの種類数が、受注オーダーに引き当てる在庫品ロットの種類数の上限を超える場合（Ｓ６：Ｎｏ）、制御処理部１４がステップＳ７の処理に進むように判定する。一方、ロット数制約成否判定部４６は、仮引当組合せ解における引当数を変更した受注オーダーの種類数が、受注オーダーに引き当てる在庫品ロットの種類数の上限以下の場合（Ｓ６：Ｙｅｓ）、制御処理部１４がステップＳ８の処理に進むように判定する。
【０１１１】
表４に示す仮引当組合せ解の場合、第１工程において受注オーダーＪ００２の在庫品ロットＡ００２の引当数を変更したことにより、受注オーダーＪ００２に引き当てる在庫品ロットが在庫品ロットＡ００１、Ａ００２及びＢ００２の３種類となるため、受注オーダーＪ００２に引き当てる在庫品ロットの種類数の上限２を超えている。よって、表４の具体例の場合、ロット数制約成否判定部４６はステップＳ７に進むように判定する。
【０１１２】
（ステップＳ７：ロット数修正工程）
ステップＳ７において、ロット数修正部４７は、引当数を変更した受注オーダーの変更した在庫品ロット以外の在庫品ロットの引当数を０にする。表４の仮引当組合せ解の具体例で説明すると、ロット数修正部４７は、受注オーダーＪ００２に引き当てる３種の在庫品ロットＡ００１、Ａ００２及びＢ００２のうち、在庫品ロットＡ００２以外の在庫品ロットＡ００１又はＢ００２のいずれか一方の引当数を０にする。例えば後掲の表５は、表４の仮引当組合せ解に対し、ロット数修正部４７が在庫品ロットＢ００２の引当数を０に修正した場合の仮引当組合せ解を示している。これにより受注オーダーＪ００２に引き当てる在庫品ロットの種類数が、受注オーダーＪ００２のロット上限数を超えないように修正することができ、仮引当組合せ解がロット数の制約条件を充足するように仮引当組合せ解を修正することができる。これによりステップＳ７は完了し、制御処理部１４はステップＳ８の処理に進む。
【０１１３】
【表５】
0006673750.tif 000007
【０１１４】
（ステップＳ８：引当数合計制約条件の充足可否判断）
ステップＳ８において、引当数合計制約成否判定部４８は仮引当組合せが引当数合計制約条件を充足するか否かを判定する。引当数合計制約条件は、ステップＳ５で変更した引当数の在庫品ロットを含む受注オーダーに引き当てる在庫品の合計引当数の上限の制約である。例えば表５においては、受注オーダーＪ００２に引き当てる在庫品の合計引当数が３であるため、５種類の在庫品ロットＡ００１〜Ａ００２及びＢ００１〜Ｂ００３の合計引当数を３以下にする必要がある。
【０１１５】
引当数合計制約成否判定部４８は、仮引当組合せ解において、引当数を変更した受注オーダーに引き当てる全ての在庫品ロットの引当数の合計が、当該受注オーダーの合計引当数を超える場合（Ｓ８：Ｎｏ）、制御処理部１４がステップＳ９の処理に進むように判定する。一方、引当数合計制約成否判定部４８は、仮引当組合せ解において、引当数を変更した受注オーダーに引き当てる全ての在庫品ロットの引当数の合計が、当該受注オーダーの合計引当数以下の場合（Ｓ８：Ｙｅｓ）、制御処理部１４がステップＳ１０の処理に進むように判定する。
【０１１６】
表５に示す仮引当組合せ解の場合、引当数を変更した受注オーダーＪ００２に引き当てる在庫品ロットの引当数の合計が４であるため、受注オーダーＪ００２に引き当てる在庫品ロットの合計引当数の上限３を超えている。よって、表５の具体例の場合、引当数合計制約成否判定部４８はステップＳ９の処理に進むように判定する。
【０１１７】
（ステップＳ９：第１引当数修正工程）
ステップＳ９において、第１引当数修正部４９は、引当数を変更した受注オーダーの引当数の合計から受注オーダーの合計引当数を引いて得られた値を上限とする任意の自然数を設定し、前記受注オーダーに引き当てる全ての在庫品のうち、引当数を変更した在庫品以外の在庫品の引当数から上記自然数を減算した引当数を新たな引当数に設定する。
【０１１８】
表５の仮引当組合せ解の具体例で説明すると、第１引当数修正部４９は、受注オーダーＪ００２に引き当てる在庫品ロットＡ００１及びＡ００２の合計引当数４から、受注オーダーＪ００２の合計引当数３を引いて得られた自然数１を設定し、受注オーダーＪ００２に引き当てる全ての在庫品ロットＡ００１及びＡ００２のうち、引当数を変更した在庫品ロットＡ００２以外の在庫品（つまり在庫品ロットＡ００１）の引当数２から上記自然数１を減算した引当数を新たな引当数１として設定する。この修正後の仮引当組合せ解を下記の表６に示す。これによりステップＳ９は完了し、制御処理部１４はステップＳ８の処理に戻る。
【０１１９】
【表６】
0006673750.tif 000008
【０１２０】
上記ステップＳ９を含むことにより受注オーダーＪ００２に引き当てる在庫品ロットの引当数の合計が、受注オーダーＪ００２の合計引当数を超えないように仮引当組合せ解の引当数を修正することができる。これによりステップＳ９は完了し、制御処理部１４はステップＳ８の処理に戻る。
【０１２１】
なお、表５の仮引当組合せ解においては、在庫品ロットＡ００１の引当数を１減算することが一義的に設定し得る場合を説明したが、このように一義的に設定することができず、ステップＳ９を終えた後の仮引当組合せ解が引当数合計制約条件を充足しないこともあり得る。この場合には、制御処理部１４は引当数合計制約条件を充足する仮引当組合せ解となるまでステップＳ８及びＳ９を繰り返す。これにより引当数を変更した在庫品以外の複数の在庫品の引当数を修正することができ、引当数の修正の網羅性を担保することができる。
【０１２２】
（ステップＳ１０：在庫数制約条件の充足可否判断）
ステップＳ１０において、在庫数制約成否判定部５０は仮引当組合せが在庫数制約条件を充足するか否かを判定する。在庫数制約条件は、第１工程で変更した引当数の在庫品ロットの在庫数の制約である。例えば表６においては、第１工程で変更した引当数の在庫品ロットＡ００２の在庫数が１８であるため、全ての受注オーダーＪ００１〜Ｊ００５に引き当てる在庫品ロットＡ００２の引当数の合計を１８以下にする必要がある。
【０１２３】
在庫数制約成否判定部５０は、仮引当組合せ解における全ての受注オーダーにおける第１工程で引当数を変更した在庫品ロットの引当数の合計が、当該在庫品ロットの在庫数を超える場合（Ｓ１０：Ｎｏ）、ステップＳ１１の処理に進むように判定する。一方、在庫数制約成否判定部５０は、仮引当組合せ解における第１工程で引当数を変更した在庫品ロットの引当数の合計が、当該在庫品ロットの在庫数以下の場合（Ｓ１０：Ｙｅｓ）、制御処理部１４がステップＳ１２の処理に進むように判定する。
【０１２４】
表６に示す仮引当組合せ解の場合、全ての受注オーダーＪ００１〜Ｊ００５における第１工程で引当数を変更した在庫品ロットＡ００２の引当数の合計（２＋２＋１６＝２０）が、在庫品ロットＡ００２の在庫数１８を超えている。よって、表６の具体例の場合、在庫数制約成否判定部５０は制御処理部１４がステップＳ１１の処理に進むように判定する。
【０１２５】
（ステップＳ１１：第２引当数修正工程）
ステップＳ１１において、第２引当数修正部５１は、第１工程で引当数を変更した在庫品の引当数の合計から当該在庫品の在庫数を引いて得られた値を上限とする任意の自然数を設定し、前記第１工程で変更した引当数以外の在庫品の引当数から当該自然数を減算した引当数を新たな引当数に設定する。
【０１２６】
表６の仮引当組合せ解の具体例で説明すると、第２引当数修正部５１は、第１工程で引当数を変更した在庫品ロットＡ００２の引当数の合計２０から、在庫品ロットＡ００２の在庫数１８を引いて得られた値２を上限とする自然数（例えば２）を設定し、仮引当組合せ解における第１工程で変更した在庫品ロットＡ００２の引当数以外の受注オーダーＪ００５の引当数１６から上記自然数２を減算した引当数１４を新たな引当数として設定する（下記表７参照）。
【０１２７】
【表７】
0006673750.tif 000009
【０１２８】
上記ステップＳ１１を含むことにより在庫品ロットＡ００２の引当数の合計が、在庫品ロットＡ００２の在庫数を超えないように仮引当組合せ解の引当数を修正することができる。これによりステップＳ１１は完了し、制御処理部１４はステップＳ１０の処理に戻る。
【０１２９】
なお、表７の仮引当組合せ解においては、受注オーダーＪ００５の在庫品ロットＡ００２の引当数を２減算することが一義的に設定し得る場合を説明したが、このように一義的に設定することができず、ステップＳ１１を終えた後の仮引当組合せ解が在庫数制約条件を充足しないこともあり得る。この場合には、制御処理部１４は在庫数制約条件を充足する仮引当組合せ解となるまでステップＳ１０及びＳ１１を繰り返す。これにより引当数を変更した在庫品以外の複数の在庫品の引当数を修正することができ、引当数の修正の網羅性を担保することができる。
【０１３０】
（ステップＳ１２：評価値の比較）
ステップＳ１２において、評価値比較部５２は、所定の評価関数に基づいて、第１工程の前の引当組合せ解の評価値Ａ、及びステップＳ１０を通過した仮引当組合せ解の評価値Ｂを算出する。なお、評価値Ａ及びＢはいずれも具体的数値によって特定されるものであり、その数値が高いほど最適解に近いことを示すものである。上記評価値Ａ及びＢを算出するための評価関数としては、下記式（Ｉ）の評価関数Ｆを用いることが好ましい。
【０１３１】
【数２】
0006673750.tif 000010
【０１３２】
ここで、上記式（Ｉ）中のｐi,jは、ｎ（ｎは２以上の整数）種類の製品のうちの特定の１の製品ｉを作製するために用いるｍ（ｍは自然数）種類の在庫品のうちの特定の１の在庫品ｊを引き当てるべき優先度を規定するパラメータであり、ａi,jは、特定の１の製品ｉを作製するために引き当てる特定の１の在庫品ｊの引当数である。
【０１３３】
上記優先度は、各製品に関する条件（例えば要求性能、仕様、用途、大きさ等）と、各在庫品に関する条件（品質、原材料、有効期限、用途、形状等）とによって規定されるパラメータであり、例えば製品に関する条件に基づいて１〜１０点の１０段階評価で優先度を設定し、在庫品に関する条件に基づいて１〜１０点の１０段階評価で優先度を設定し、各製品及び各在庫品の双方の優先度を単純に足し合わせることによって各受注オーダーの各在庫品ロットの優先度を設定することができる。具体例として、上記受注オーダーＪ００１〜Ｊ００５に引き当てるべき在庫品ロットＡ００１〜Ａ００２及びＢ００１〜Ｂ００３の各優先度の数値を表８に示す。
【０１３４】
【表８】
0006673750.tif 000011
【０１３５】
表８の優先度について、製品に対して在庫品を引き当てにくい制約がある製品及び在庫品ほど優先度は高くなる傾向にある。在庫管理上、制約が多い製品及び在庫品ほど早く引き当てた方が在庫品を少なくし得るからである。
【０１３６】
評価値Ａは、例えば上記表３に示す引当組合せ解の示す各引当数ａi,jと、表８に示す各優先度ｐi,jとを積算してその総和を算出することにより得ることができ、評価値Ｂは、例えば上記表７に示す仮引当組合せ解の示す各引当数ａi,jと、表８に示す各優先度ｐi,jとを積算してその総和を算出することにより得ることができる。
【０１３７】
評価値比較部５２は、上記引当組合せ解の評価値Ａと仮引当組合せ解の評価値Ｂとを比較し、評価値Ｂが評価値Ａ未満の場合（Ｓ１２：Ｎｏ）、引当組合せ解を変更せず、ステップＳ３の処理に戻るように判定する。一方、評価値比較部５２は評価値Ｂが評価値Ａ以上の場合（Ｓ１２：Ｙｅｓ）、ステップＳ１３の処理に進むように判定し、引当組合せ更新部５３はステップＳ１３において仮引当組合せ解を新たな引当組合せ解に書き換える。このように引当組合せ解を書き換えることにより、引当組合せ解の各製品に対する各在庫品の引当数を最適解に近づけることができる。これによりステップＳ１３は完了し、ステップＳ３の処理に戻る。以上のようにしてステップＳ３〜ステップＳ１３の各工程を繰り返し、カウンタｎの値がループ数設定値Ｎになった後にステップＳ３において、カウンタ成否判定部４４は制御処理部１４が処理を終了すると判定する（エンド）。
【０１３８】
（上記実施形態の変形例１）
上記実施形態の在庫引当方法は、仮引当組合せ解の評価値Ｂが引当組合せ解の評価値Ａ未満の場合に仮引当組合せ解を引当組合せ解に設定する第３工程を含み、予め設定した確率で前記第２工程に代えて前記第３工程を行ってもよい。このような第３工程を組み入れる理由として、一般に、引当組合せ解における評価値の解空間は多峰性の評価値分布を有するものと推察され、その全ての峰のうちの評価値が最大となる峰において、局所探索法で引当組合せ解を探索することが好ましいからである。つまり、引当組合せ解のうちの特定の１の引当数を変更するだけでは解空間内の一峰から脱出して別の一峰に移動しにくく、特定の一峰における局所解に陥りやすい。このような局所解に陥ることを避け、全体の中で評価値が最大となる最適解を探索するために、所定の確率で第２工程に代えて第３工程を実行することが好ましい。上記第３工程を含むことにより、仮引当組合せ解の評価値が引当組合せ解の評価値よりも低くなった場合でも仮引当組合せ解を棄却せずに引当組合せ解として採用し、当該引当組合せ解に基づいて次の仮引当組合せ解を設定することができ、これにより一峰の局所解から脱出して別の峰に移動して解空間全体内の最適解を模索しやすくなる。
【０１３９】
上記第２工程に代えて第３工程を実行する確率は、カウンタｎの値との関係によって変動させることが好ましく、カウンタｎの値が大きくなるにつれて第３工程を実行する確率を徐々に減らすことが好ましい。このようにループのカウンタｎの値と第３工程を実行する確率を関連付け、ループ開始初期の段階では第３工程を実行する確率を高くすることにより、ループ開始初期の段階で局所解に陥ることを抑制するとともに、ループ終了時期で第３工程を実行する確率を低くすることにより、解空間における特定の峰の中での最適解を模索しやすくなる。
【０１４０】
（実施形態の変形例２）
上記実施形態においては、カウンタｎの値がループ数設定値Ｎになるまで引当組合せ解を模索する場合を説明したが、評価値が所定の数値以上となるまで引当組合せ解を模索してもよい。
【０１４１】
（実施形態の変形例３）
上記実施形態の引当組合せ解において、特定の受注オーダーに対して特定の在庫品を引き当てることができないという引当可否の制約が存在する場合がある。このような引当可否のデータは、解探索条件データベース３３に格納されるものであり、例えば、下記の表９に示すデータである。表９において、各受注オーダーに対して引当可能な在庫品ロットに「１」を表記し、引当不可の在庫品に「０」を表記している。
【０１４２】
【表９】
0006673750.tif 000012
【０１４３】
表９の引当可否情報に基づく場合、受注オーダーＪ００３に対して在庫品ロットＢ００１、Ｂ００２及びＢ００３が引当可能であり、在庫品ロットＡ００１及びＡ００２が引当不可である。
【０１４４】
このような引当可否の制約が存在する場合、特定の製品に対する特定の在庫品の引当数を変更する第１工程において、引当不可の在庫品の引当数を選択せず、引当可能な在庫品の引当数のみを選択して変更するように第１工程を実行することが好ましい。つまり、表９における「１」の引当数のみを第１工程で変更し、表９における「０」の引当数は全て「０」に設定した上で、第１工程で引当数を変更しないようにすることが好ましい。このように第１工程を行うことで、引当可能な在庫品の引当数のみを変更することができ、引当組合せ解の最適解を模索しやすくなる。
【０１４５】
＜実施形態２：在庫引当システム＞
図３は、実施形態２の在庫引当方法を実行する在庫引当システムの構成を示す図である。本実施形態の在庫管理システムは、図３に示すように、実施形態１に対して引当数下限の制約条件及び在庫品群の概念を追加しており、かかる追加に伴って、制御処理部１４には、記憶部１３に記憶されている制御処理プログラムが実行されることによって、ロット数制約成否判定部４６及びロット数修正部４７に代えて在庫品群数制約成否判定部４６’及び在庫品群数修正部４７’がそれぞれ機能的に構成される。また実施形態１の在庫引当システムの各構成に加えて、過去引当情報取込部４０、引当数下限成否判定部４８ａ、引当数０解設定部４９ａ、在庫品引当解除部５４及び引当数減算部５５が機能的に構成されることが異なる他は実施形態１と同様の各部が構成される。以下において、実施形態１の在庫引当システムと異なる構成についてのみ説明し、実施形態１のそれと同一の構成（例えば入力部１１、出力部１２及び記憶部１３等）の説明は繰り返さない。
【０１４６】
在庫品群は、品質トレーサビリティ上は単一の在庫品として扱うべきであるが、実体的な製品への引当においては別々の在庫品ロットを付して管理すべき複数の在庫品ロットをグループ化したものである。各在庫品ロットはいずれか１つの在庫品群に属しており、各在庫品群は、少なくとも１種類の在庫品ロットを有している。ここでは、１つの在庫品群に属する在庫品ロットが１つの場合もあり得る。
【０１４７】
在庫品群と在庫品ロットとの関係の一例として、例えば、同一の製造日に同一の製造地で製造された在庫品は、本来であれば同一の在庫品ロットを付して管理すべきであるが、その在庫品の保管場所を異なる場所（例えば倉庫Ａと倉庫Ｂ）にしたが故に、各場所によって在庫品ロットが異なる性質を示すものとなっていることが品質検査において判明した場合によって、それぞれの在庫品ロットは、品質トレーサビリティ上は単一の在庫品ロットで管理すべきでありながら、製品への引当においては保管場所に応じて別々の在庫品ロットとして引き当てるべき在庫品となる。本実施形態では、同一の製造地及び製造日で製造された一群の在庫品を一つの在庫品群として管理し、当該在庫品群の中で保管場所が異なったり、在庫品を作製する工程進捗が違ったり、等のように個別の条件が加わったことで引当を検討する上で異なる性質を示すことが判明した各在庫品に対しそれぞれ別々の在庫品ロットを付している。このような在庫品ロット及び在庫品群は、引当組合せ解を最適化するという観点では、個別の在庫品ロットの単位で各在庫品ロットを引き当てる必要があるが、品質トレーサビリティの観点からは在庫品群の単位で各在庫品ロットを管理すべきである。
【０１４８】
引当数下限は、ある製品を作製するための受注オーダーに対し、１つの在庫品群に含まれる在庫品ロットの引当数の総和の最低数を設定したものであり、各受注オーダーに対して引き当てる各在庫品ロットを含む在庫品群の種類数を少なくするための制約条件である。例えば、ある受注オーダーに対して引当数の総和の最低数が３と定められている場合、その受注オーダーに対して１つの在庫品群に含まれる全ての在庫品の引当数の総和を１又は２とすることは許されず、その総和が０又は３以上となるように設定すべき制約条件である。このような制約条件を課すことにより、各製品を作製するために引き当てる在庫品ロットにおいて、別々の在庫品群に含まれる在庫品ロットから１つずつ細切れで引き当てられることを防止することができるので、製品に不具合が生じたときにその不具合の原因となる在庫品ロットを特定しやすくなり、品質トレーサビリティを向上させることができる。
【０１４９】
次に、本実施形態の在庫引当システムを構成する各部のうちの実施形態１の在庫引当システムから追加された部分及び変更された部分を説明する。
【０１５０】
過去引当情報取込部４０は、製品を作製するために過去に引き当てた在庫品が存在する場合において、当該過去に引き当てた在庫品の引当数を引当組合せ解に取り込むものである。
【０１５１】
引当数変更部（第１処理部）４５は、上記の引当数下限の概念が導入されたことに伴って変更が加えられている。すなわち、引当数変更部（第１処理部）４５は、引当組合せ解のうちの特定の１の製品を作製するための特定の１の在庫品ロットの引当数を、当該製品を作製するために引き当てる各在庫品ロットの引当数の下限値以上の整数であって、かつ製品を作製するために必要な在庫品ロットの引当数又は在庫品ロットの在庫数のいずれか小さい方の数値を上限とする整数の中からランダムに変更するものである。なお、受注オーダーに対して引当数の下限値が定められていない場合には、各在庫品ロットの引当数は０以上の整数の中からランダムに変更するものとする。
【０１５２】
ここで、引当数変更部４５は、上記引当数を変更した在庫品ロットが２以上の在庫品ロットを含む在庫品群に含まれる場合、上記で引当数を変更した在庫品ロット以外の当該在庫品群に含まれる在庫品ロットの引当数も併せて変更する。ここでの引当数の変更は、引当数を変更した在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、その受注オーダーに許容される前記在庫品群に含まれる全ての在庫品の引当数の総和の下限値以上の整数となるように当該在庫品群に含まれる各在庫品の引当数が設定される。
【０１５３】
このように引当数変更部４５によって在庫品群に含まれる全ての在庫品ロットの引当数が変更されるように引当数を変更する範囲を広げることで、仮引当組合せ解が元の引当組合せ解の評価値を上回る評価値となるように仮引当組合せ解を設定することができる。仮に、本実施形態でも実施形態１のように引当数を変更する単位を在庫品ロットとすると、在庫品群に含まれる全ての在庫品の引当数の合計の下限値の制約条件や、各受注オーダーに引き当てる在庫品群数の上限の制約条件を在庫品群単位で調整することとのバランスがとれなくなるので、引当組合せ解の評価値を上回る評価値を示す仮引当組合せ解を設定しにくくなり、引当組合せ更新部５３によって引当組合せ解を仮引当組合せ解で更新しにくくなる。
【０１５４】
在庫品群数制約成否判定部４６’は、引当数変更部４５によって引当数を変更した在庫品ロットを用いて作製する製品を作製するために引き当てる在庫品ロットを含む在庫品群の種類数が、その在庫品群数制約条件を充足するか否かを判定するものである。上記実施形態１のロット数制約成否判定部４６は、各受注オーダーに引き当てる在庫品ロットの単位で在庫品ロットの種類数の上限を充足するか否かを判定していたが、本実施形態では、在庫品群の概念を導入したことに伴って、在庫品ロットを含む在庫品群の単位で在庫品群種類数の上限を充足するか否かを判定する。
【０１５５】
より具体的には、在庫品群数制約成否判定部４６’は、当該製品に引き当てる在庫品ロットを含む在庫品群の種類数が、各製品に応じて当該製品を作製するために許容される在庫品を含む在庫品群の種類数の上限以下である場合に、在庫品群種類数制約条件を充足すると判定し、当該製品に引き当てる在庫品を含む在庫品群の種類数が前記上限を超える場合に、在庫品群種類数制約条件を充足しないと判定する。
【０１５６】
在庫品群数修正部４７’は、在庫品群数制約成否判定部４６’が上記在庫品群数制約条件を充足しないと判定した場合に、引当数を変更した在庫品を含む在庫品群以外の当該製品を作製するために引き当てる在庫品群に含まれる全ての在庫品ロットの引当数を０に修正するものである。これにより当該製品に引き当てる在庫品群の種類数を１減らすことができ、在庫品群数制約条件を充足するようにいずれか１つの在庫品群に含まれる全ての在庫品ロットの引当数を修正することができる。
【０１５７】
引当数下限成否判定部４８ａは、第１及び第２引当数修正部４９、５１によって引当数が修正された在庫品ロットを含む在庫品群に含まれる全ての在庫品ロットの引当数の総和が、引当数が修正された在庫品ロットによって作製される製品を作製するために許容される在庫品群に含まれる全ての在庫品ロットの引当数の総和の下限値を充足するか否かを判定する。
【０１５８】
より具体的には、引当数下限成否判定部４８ａは、第１及び第２引当数修正部４９、５１によって引当数が修正された在庫品ロットを含む在庫品群に含まれる全ての在庫品ロットの引当数の総和が、引当数が修正された在庫品ロットによって作製される製品を作製するために許容される在庫品群に含まれる全ての在庫品ロットの引当数の総和の下限値以上である場合に、引当数下限の制約条件を充足すると判定し、第１及び第２引当数修正部４９、５１によって修正された引当数が、引当数が修正された在庫品ロットによって作製される製品を作製するために許容される在庫品群に含まれる全ての在庫品ロットの引当数の総和の下限値未満である場合に、引当数下限の制約条件を充足しないと判定する。
【０１５９】
なお、本実施形態では、在庫品群の概念が導入されているので、引当数下限成否判定部４８ａは、受注オーダーごとに定められた在庫品群に含まれる全ての在庫品ロットの引当数の合計値の下限に基づいて、引当数下限の制約条件を充足するか否かを判定しているが、実施形態１のように在庫品群の概念が導入されておらずに各在庫品ロットの引当数に下限が設定される場合は、引当数下限成否判定部４８ａは、各受注オーダーに対する各在庫品ロットの引当数が、受注オーダーごとに定められた引当数下限の制約条件を充足するか否かを判定するものとする。
【０１６０】
引当数０解設定部４９ａは、引当数下限成否判定部４８ａが上記引当数下限の制約条件を充足しないと判定した場合に、第１及び第２引当数修正部４９、５１によって引当数を修正された在庫品ロットを含む在庫品群に含まれる全ての在庫品ロットの引当数を０に修正するものである。このように引当数０解設定部４９ａによって引当数下限制約条件を充足しない在庫品群に含まれる全ての在庫品ロットの引当数を０とすることにより、引当数下限の制約条件を充足するように在庫品の引当数を設定することができる。
【０１６１】
本実施形態のように在庫品群の概念が導入されている場合、上述のように、引当数０解設定部４９ａによって各受注オーダーの引当数下限を満たさない在庫品群に含まれる全ての在庫品ロットの引当数を０とすることにより、受注オーダーの引当数下限の制約条件を満たすように各在庫品ロットの引当数を修正することができる。
【０１６２】
在庫品引当解除部５４は、製品を作製するために許容される前記在庫品群の種類数の上限をＡとし、当該製品を作製するために必要な前記在庫品の引当数をＢとし、当該製品を作製するために引き当てられる各在庫品の引当数の合計値をＣとし、次に引当処理を実行するまでに補充される予定の１種の在庫品群に含まれる全ての在庫品の補充予定数をＤとすると、当該製品を作製するために引き当てる前記在庫品群の種類数が、Ａ−（Ｂ−Ｃ）÷Ｄによって算出される値の小数点以下を切り捨てた整数値以下となるように、当該製品を作製するために引き当てた在庫品群のうちのいずれか１以上の在庫品群に含まれる全ての在庫品の引当数を０にする。
【０１６３】
なお、本実施形態では、在庫品群の概念が導入されているので、在庫品引当解除部５４は、受注オーダーごとに定められた在庫品群に含まれる全ての在庫品ロットの引当数の合計値の下限に基づいて引当数下限の制約条件を充足するか否かを判定しているが、実施形態１のように在庫品群の概念が導入されておらずに各在庫品ロットの引当数に下限が設定される場合は、在庫品引当解除部５４は、当該製品を作製するために引き当てる前記在庫品ロットの種類数が、Ａ−（Ｂ−Ｃ）÷Ｄによって算出される値の小数点以下を切り捨てた整数値以下となるように、当該製品を作製するために引き当てた在庫品ロットのうちのいずれか１以上の在庫品ロットの引当数を０にするものとする。
【０１６４】
引当数減算部５５は、製品を作製するために引き当てる在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和に下限値が定められている場合において、当該製品を作製するために必要な在庫品の引当数から当該製品を作製するために引き当てられる各在庫品の引当数の合計値を引いた値が上記の下限値以上となるまで、当該製品を作製するために引き当てた在庫品の引当数を減算する。
【０１６５】
上記在庫引当システムは、各製品に対する各在庫品の引当数の決定に関して、大略、次のように動作する。
【０１６６】
図４において、まず、制御処理部１４は、過去引当情報取込部４０によって、製品を作製するために過去に引き当てた在庫品の引当数を取り込む（Ｓ０）。次に、初期解設定部４２によって、前記引当組合せ解の初期解を設定する（Ｓ１）。
【０１６７】
次に、制御処理部１４は、カウンタ部４３によって、引当組合せ解の引当数を変更した回数を示すカウンタｎの値を０に設定する（Ｓ２）。
【０１６８】
次に、制御処理部１４は、カウンタ成否判定部４４によって、カウンタｎの値がループ数設定値Ｎを満たすか否かを判定する。そして、カウンタｎの値がループ数設定値Ｎと同値である場合（Ｓ３：Ｙｅｓ）、制御処理部１４は、在庫品引当解除部５４によって解除すべき引当数があればその引当数を０にし（Ｓ１４）、さらに引当数減算部５５によって減算すべき引当数があればその在庫品ロットの引当数を減算し（Ｓ１５）、引当組合せ解を完成させる（エンド）。一方、カウンタｎの値がループ数設定値Ｎと同値でない場合（Ｓ３：Ｎｏ）、カウンタ部４３によってカウンタｎの値を１増数させる（Ｓ４）。
【０１６９】
次に、制御処理部１４は、引当数変更部４５によって、引当組合せ解のうちの特定の１の製品を作製するための特定の１の在庫品ロットの引当数を、受注オーダーの引当数の下限以上の整数であって、かつ製品を作製するために必要な在庫品ロットの引当数又は在庫品ロットの在庫数のいずれか小さい方の数値を上限とする整数の中からランダムに変更する（Ｓ５）。上記引当数を変更した在庫品ロットを含む在庫品群が２種以上の在庫品ロットを含む場合、引当数変更部４５によって変更した引当数の在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、前記下限値以上の整数となるように当該在庫品群に含まれる在庫品のうちの上記で変更した在庫品以外の全ての在庫品の引当数を変更する（Ｓ５’）。
【０１７０】
次に、制御処理部１４は、在庫品群数制約成否判定部４６’によって、引当数を変更した在庫品を用いて作製する前記製品を作製するために引き当てる前記在庫品を含む在庫品群の種類数が、当該製品を作製するために許容される前記在庫品群の種類数の上限を満たすか否かを判定する（Ｓ６’）。そして、当該製品を作製するために引き当てる在庫品を含む在庫品群の種類数が、当該製品を作製するために許容される在庫品群の種類数の上限を超える場合（Ｓ６’：Ｎｏ）、在庫品群数修正部４７’は、引当数を変更した在庫品を含む在庫品群以外のいずれか１の在庫品群に含まれる全ての在庫品ロットの引当数を０にする（Ｓ７’）。一方、当該製品を作製するために引き当てる在庫品を含む在庫品群の種類数が、当該製品を作製するために許容される在庫品を含む在庫品群の種類数の上限以下の場合（Ｓ６’：Ｙｅｓ）、制御処理部１４はステップＳ８の処理に進む。
【０１７１】
次に、制御処理部１４は、引当数合計制約成否判定部４８によって、引当数を変更した在庫品を用いて作製する特定の１の製品ａを作製するために引き当てる全ての前記在庫品の引当数の合計が、当該製品ａを作製するために必要な前記在庫品の引当数よりも多いか否かを判定する（Ｓ８）。そして、製品ａを作製するために引き当てる全ての在庫品の引当数の合計が、製品ａを作製するために必要な前記在庫品の引当数よりも多い場合（Ｓ８：Ｎｏ）、第１引当数修正部４９は、前記引当数の合計から前記製品ａを作製するために必要な前記在庫品の引当数を引いて得られた値を上限とする任意の自然数を設定し、前記製品ａを作製するために引き当てる全ての在庫品のうち、引当数を変更した在庫品以外の前記在庫品の引当数から当該自然数を減算した引当数を新たな引当数に設定する（Ｓ９）。一方、製品ａを作製するために引き当てる全ての在庫品の引当数の合計が、製品ａを作製するために必要な前記在庫品の引当数以下の場合（Ｓ８：Ｙｅｓ）、制御処理部１４はステップＳ８ａの処理に進む。
【０１７２】
次に、制御処理部１４は、引当数下限成否判定部４８ａによって、上記ステップＳ９において新たに設定された引当数が設定された在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、当該新たな引当数の在庫品によって作製される製品を作製するために許容される前記在庫品群に含まれる全ての在庫品の引当数の総和の下限値であるか否かを判定する（Ｓ８ａ）。そして、ステップＳ９において新たに設定された引当数が設定された在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、当該新たな引当数の在庫品によって作製される製品を作製するために許容される前記在庫品群に含まれる全ての在庫品の引当数の総和の下限値未満の場合（Ｓ８ａ：Ｎｏ）、制御処理部１４はステップＳ９ａの処理に進み、当該ステップＳ９ａにおいて、引当数０解設定部４９ａは、当該新たな引当数を設定した在庫品を含む在庫品群に含まれる全ての在庫品の引当数を０にする（Ｓ９ａ）。一方、ステップＳ９において新たに設定された引当数が設定された在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、当該新たな引当数の在庫品によって作製される製品を作製するために許容される前記在庫品群に含まれる全ての在庫品の引当数の総和の下限値以上である場合（Ｓ８ａ：Ｙｅｓ）、制御処理部１４はステップＳ１０の処理に進む。
【０１７３】
次に、制御処理部１４は、在庫数制約成否判定部５０によって、前記仮引当組合せ解において引当数を変更した在庫品ｂの全ての引当数の合計が、引当数を変更した在庫品ｂの在庫数よりも多いか否かを判定する（Ｓ１０）。そして、在庫品ｂの全ての引当数の合計が在庫品ｂの在庫数よりも多い場合（Ｓ１０：Ｎｏ）、制御処理部１４はステップＳ１１の処理に進み、当該ステップＳ１１において、第２引当数修正部５１は、引当数を変更した在庫品ｂの引当数の合計から当該在庫品ｂの在庫数を引いて得られた値を上限とする任意の自然数を設定し、引当数を変更した在庫品ｂ以外の在庫品の引当数から当該自然数を減算した引当数を新たな引当数に設定する（Ｓ１１）。一方、在庫品ｂの全ての引当数の合計が在庫品ｂの在庫数以下の場合（Ｓ１０：Ｙｅｓ）、制御処理部１４はステップＳ８ｂの処理に進む。
【０１７４】
次に、制御処理部１４は、引当数下限成否判定部４８ａによって、上記ステップＳ１１において新たに設定された引当数が設定された在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、当該新たな引当数の在庫品によって作製される製品を作製するために許容される前記在庫品群に含まれる全ての在庫品の引当数の総和の下限値であるか否かを判定する（Ｓ８ｂ）。そして、ステップＳ１１において新たに設定された引当数が設定された在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、当該新たな引当数の在庫品によって作製される製品を作製するために許容される前記在庫品群に含まれる全ての在庫品の引当数の総和の下限値未満の場合（Ｓ８ｂ：Ｎｏ）、制御処理部１４はステップＳ９ｂの処理に進み、当該ステップＳ９ｂにおいて、引当数０解設定部４９ａは、当該新たな引当数を設定した在庫品を含む在庫品群に含まれる全ての在庫品の引当数を０にする（Ｓ９ｂ）。一方、ステップＳ１１において新たに設定された引当数が設定された在庫品を含む在庫品群に含まれる全ての在庫品の引当数の総和が、当該新たな引当数の在庫品によって作製される製品を作製するために許容される前記在庫品群に含まれる全ての在庫品の引当数の総和の下限値以上である場合（Ｓ８ｂ：Ｙｅｓ）、制御処理部１４はステップＳ１２の処理に進む。
【０１７５】
次に、制御処理部１４は、評価値比較部５２によって、前記引当組合せ解の評価値Ａ及び前記仮引当組合せ解の評価値Ｂを算出し、評価値Ａと評価値Ｂとを比較する（Ｓ１２）。そして、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ未満の場合（Ｓ１２：Ｎｏ）、前記引当組合せ解を変更せず、制御処理部１４はステップＳ３の処理に戻る。一方、前記仮引当組合せ解の評価値Ｂが前記引当組合せ解の評価値Ａ以上の場合（Ｓ１２：Ｙｅｓ）、引当組合せ更新部５３は、前記仮引当組合せ解を新たな引当組合せ解に書き換えた上で（Ｓ１３）。制御処理部１４はステップＳ３の処理に戻る。
【０１７６】
以上のようにしてステップＳ３〜Ｓ１３の各工程を繰り返すことで、カウンタ部４３がカウンタｎの値を１ずつ増数させて、カウンタｎの値がループ数設定値ＮになるまでステップＳ３〜ステップＳ１３の各工程を繰り返す。このようにして引当組合せ解を書き換えることで引当組合せ解を最適解に近づける。このようにして算出された引当組合せ解に対し、ステップＳ１４及びステップＳ１５の修正工程を実行することにより、今回の引当処理で必要引当数を満足できなかった受注オーダー（未充当オーダー）に対して、次回の引当処理で各種制約条件を満たしながら在庫品ロットを引き当てることができるように引当組合せ解の一部の引当数を修正することができる。
【０１７７】
＜在庫引当方法＞
次に、本実施形態の在庫引当方法の各工程を、一具体例として例えば下記の表１０に示す引当組合せ問題に対し、各在庫品ロットの引当数の組合せを決定する場合について説明する。下記の表１０に示す引当組合せ問題は、実施形態１の表９に相当するものであり、表２と同様、５種類の製品を作製するために引き当てる５種類の在庫品ロットの引当数を設定したものである。
【０１７８】
【表１０】
0006673750.tif 000013
【０１７９】
表１０において、各受注オーダーに対して引当可能な在庫品ロットに「１」を表記し、引当不可の在庫品に「０」を表記している。表１０は、実施形態１の表９に示す各受注オーダーに対し、在庫品群、在庫品群数上限及び引当数下限が設定されていることが異なる他は表９と同様のものである。以下に、在庫品群、在庫品群数上限及び引当数下限についてそれぞれ説明する。
【０１８０】
表１０における「在庫品群」は、同一の製造地及び製造日に製造された一群の在庫品である。同一の在庫品群に属する在庫品であっても、製造後の品質検査において異なる性質を示す在庫品に対して別々の在庫品ロットを設定している。例えば、在庫品群Ｇ００３に属する在庫品ロットＢ００１及び在庫品ロットＢ００２は、同一の製造日に同一の製造地で製造された在庫品群に含まれる在庫品であるが、その後の品質検査で異なる性質を示すことが明らかとなった２種類の在庫品ロットである。なお、在庫品群Ｇ００３のように同一の在庫品群に含まれる在庫品ロットＢ００１、Ｂ００２であっても、特定の受注オーダー（例えば受注オーダーＪ００１）に引当可能な在庫品ロットと引当不可能な在庫品ロットとが存在することはあり得る。
【０１８１】
表１０における「在庫品群数上限」は、実施形態１の「ロット数上限」において在庫品ロットの単位で種類数の上限を設定していたものを在庫品群の単位で種類数の上限を設定したものであり、在庫品群の種類数の上限で設定された種類数の在庫品群に含まれる在庫品ロットのうちから在庫品ロットを引き当てる必要がある。例えば、表１０の受注オーダーＪ００２に対し在庫品を引き当てる場合には、２種類以下の在庫品群に含まれる在庫品ロットの中から在庫品ロットを引き当てる必要がある。なお、在庫品ロットＢ００１と在庫品ロットＢ００２とは同一の在庫品群Ｇ００３に属しているので、在庫品ロットＢ００１及び在庫品ロットＢ００２の両方を引き当てても在庫品群数としては１種類として数えられるものとする。
【０１８２】
表１０における「引当数下限」は、受注オーダーに対して引き当てる在庫品が属する在庫品群に含まれる在庫品の引当数の総和の下限値を意味し、例えば受注オーダーＪ００２に在庫品を引き当てる場合には、最低でも１つの在庫品群に属する在庫品ロットの引当数の合計を３以上とする必要がある。引当数下限も、上記在庫品群数上限と同様に在庫品群単位で数えられる。したがって、例えば受注オーダーＪ００２に在庫品を引き当てる場合には、在庫品ロットＢ００１の引当数を１とし、在庫品ロットＢ００２の引当数を２としても、在庫品群Ｇ００３に属する在庫品ロットの引当数の合計が３となるので、上記受注オーダーＪ００２の引当数下限３を満たす。
【０１８３】
以下においては、実施形態２の在庫引当方法を構成する各ステップを説明する。実施形態２では、実施形態１の各ステップに対する変更部分及び追加部分のみを説明し、実施形態１の各ステップと同内容のステップについてはその説明を繰り返さない。なお、ステップＳ０の過去の引当情報の取り込みについては変形例において説明するものとする。
【０１８４】
（ステップＳ１〜Ｓ４）
ステップＳ１〜Ｓ４は、上記実施形態１と同様にして行われる。すなわち、まず、初期解設定部４２は、下記の表１１の各受注オーダーに引き当てる各在庫品ロットの引当数の組合せを初期解として設定する（ステップＳ１）。なお、表１１の初期解は、本実施形態の引当数の変更の過程を説明しやすくするために便宜的に設定されたものである。
【０１８５】
【表１１】
0006673750.tif 000014
【０１８６】
次に、カウンタ部４３は、引当組合せ解の引当数を変更した回数を示すカウンタｎの値を０に設定する（ステップＳ２）。次いで、カウンタ成否判定部４４は、カウンタｎの値とループ数設定値Ｎとを比較し、カウンタｎの値がループ数設定値Ｎであるか否かを判定する（ステップＳ３）。この判定は、実施形態１と同様の判定基準によって判定され、当該判定結果に基づいて引当組合せ解の書き換えを終了するか（エンド）、カウンタｎの値を１増数する（ステップＳ４）。ステップＳ４が完了した場合、制御処理部１４はステップＳ５の処理に進む。
【０１８７】
（ステップＳ５：特定の引当数の変更：第１工程）
ステップＳ５において、引当数変更部４５は、引当組合せ解における任意の１種の受注オーダーに対する任意の１種の在庫品ロットの引当数を変更した仮引当組合せ解を作成する（Ｓ５）。例えば、上記表１１に示す引当組合せ解の場合、引当数変更部４５は、上記表１１の受注オーダーＪ００３の在庫品ロットＢ００３の引当数０を引当数５に変更することで表１２の仮引当組合せ解を作成する。ここで、引当数を変更する在庫品ロットは、実施形態１で説明した方法と同様にランダムに決定される。
【０１８８】
【表１２】
0006673750.tif 000015
【０１８９】
引当数変更部４５によって変更された後の引当数（例えば表１２における網掛け部の「５」）は、受注オーダーの合計引当数又は在庫品ロットの在庫量のいずれか小さい方を上限とし、受注オーダーの引当数下限を下限とする整数のうちから任意に選択されたものである。つまり、表１１の引当組合せ解における受注オーダーＪ００３に対する在庫品ロットＢ００３の引当数を変更する場合、受注オーダーＪ００３の合計引当数６と、在庫品ロットＢ００３の在庫数６とのうちの小さい方である６を上限とし、受注オーダーＪ００３の引当数下限２を下限とする整数２〜６の範囲のうちからランダムに１つの整数（例えば表１２においては変更後の引当数を「５」）に引当数を変更する。上記特定の在庫品ロットの引当数を変更することによりステップＳ５は完了し、制御処理部１４はステップＳ５’の処理に進む。
【０１９０】
（ステップＳ５’：同一在庫品群に含まれる在庫品の引当数の変更：準第１工程）
なお、上記ステップＳ５における引当数の変更は、在庫品群Ｇ００４が在庫品ロットＢ００３のみを有するものであるため、在庫品ロットＢ００３の引当数のみを変更しているが、引当数変更部４５が２以上の在庫品ロットを含む在庫品群（例えば在庫品群Ｇ００３）に含まれるいずれか１の在庫品ロットの引当数を変更する場合（Ｓ５）、ステップＳ５で引当数を変更した在庫品ロットを含む在庫品群に含まれる全ての在庫品ロットの引当数の総和が、当該受注オーダーに対して設定された引当数下限以上の整数となるように当該在庫品群に含まれる在庫品ロットのうちのステップＳ５で引当数を変更した在庫品ロット以外の在庫品ロットの引当数を変更する準第１工程（ステップＳ５’）をさらに含む。
【０１９１】
ここでの「ステップＳ５で引当数を変更した在庫品ロット以外の在庫品ロットの引当数を変更する」とは、ステップＳ５で引当数を変更した在庫品ロットを含む在庫品群に含まれる全ての在庫品ロットのうちのステップＳ５で変更した在庫品ロット以外の全ての在庫品ロットの引当数が変更される場合のみに限られず、ステップＳ５で変更した在庫品ロット以外のいずれか１以上の在庫品ロットの引当数が、結果的に変更前の在庫品ロットの引当数と同値になっていてもよいものとする。
【０１９２】
例えば、ステップＳ５において、引当数変更部４５が、受注オーダーＪ００３に対する在庫品ロットＢ００２の引当数を変更する場合、受注オーダーＪ００３は２種類の在庫品ロットＢ００１、Ｂ００２を含むので、制御処理部１４は、ステップＳ５’の処理に進む。そして、当該ステップＳ５’において、引当数変更部４５が、在庫品ロットＢ００２が属する在庫品群Ｇ００３の他の在庫品ロット（つまり在庫品ロットＢ００１）の引当数を変更する。上記受注オーダーＪ００３に対する変更後の在庫品ロットＢ００１及びＢ００２の引当数は、在庫品ロットＢ００１及びＢ００２の在庫量１０及び７をそれぞれ上限とし、受注オーダーＪ００３の引当数下限２を下限とする整数の範囲で、かつ在庫品ロットＢ００１の引当数と在庫品ロットＢ００２の引当数の合計が受注オーダーＪ００３の合計引当数６以下となるように各在庫品ロットの引当数がランダムに設定される。引当数変更部４５が在庫品ロットＢ００１及びＢ００２の引当数をそれぞれ２及び３に変更する場合、在庫品群Ｇ００３に属する在庫品ロットＢ００１の引当数の合計が５となるので、在庫品群の引当数下限２を満たし、かつ受注オーダーＪ００３の合計引当数６以下を満たす。
【０１９３】
実施形態１のように在庫品ロットを構成単位として在庫品ロットの引当数を変更する場合、在庫品ロットの引当数の変更の制約が多すぎるので、仮引当組合せ解の評価値が引当組合せ解の評価値を超えにくい。このため、引当組合せ解が仮引当組合せ解によって更新されにくくなるが、本実施形態のように第１工程及び準第１工程を組み合わせて、各在庫品群を構成単位として在庫品群に含まれる全ての在庫品ロットの引当数が変更されることにより、引当数を変更する自由度を高めることができるので、引当組合せ解が仮引当組合せ解によって更新されやすくなる。上記特定の在庫品群に含まれる全ての在庫品ロットの引当数を変更することによりステップＳ５’は完了し、制御処理部１４はステップＳ６’の処理に進む。
【０１９４】
（ステップＳ６’：在庫品群数制約条件の充足可否判断）
実施形態２のステップＳ６’において、在庫品群数制約成否判定部４６’は、仮引当組合せ解における引当数を変更した受注オーダーに引き当てる在庫品ロットを含む在庫品群の種類数が、受注オーダーに引き当てる在庫品ロットを含む在庫品群の種類数の上限を超えると判定すると（Ｓ６’：Ｎｏ）、制御処理部１４がステップＳ７’の処理に進む。一方、在庫品群数制約成否判定部４６’は、仮引当組合せ解における引当数を変更した受注オーダーに引き当てる在庫品ロットを含む在庫品群の種類数が、当該受注オーダーに引き当てる在庫品ロットを含む在庫品群の種類数の上限以下と判定すると（Ｓ６’：Ｙｅｓ）、制御処理部１４がステップＳ８の処理に進む。
【０１９５】
表１２に示す仮引当組合せ解の場合、ステップＳ５において受注オーダーＪ００３に対する在庫品ロットＢ００２の引当数を変更したことにより、受注オーダーＪ００３に引き当てる在庫品ロットを含む在庫品群の種類数が在庫品群Ｇ００１、Ｇ００３及びＧ００４の３種類となっているため、受注オーダーＪ００３に引き当て可能な在庫品群の種類数の上限２を超えている。よって、表１２の具体例の場合、在庫品群数制約成否判定部４６’は、仮引当組合せ解における引当数を変更した受注オーダーに引き当てる在庫品ロットを含む在庫品群の種類数が、受注オーダーに引き当てる在庫品ロットを含む在庫品群の種類数の上限を超えると判定する。これによりステップＳ６’は完了し、制御処理部１４はステップＳ７’に進む。
【０１９６】
（ステップＳ７’：在庫品群数修正工程）
ステップＳ７’において、在庫品群数修正部４７’は、引当数を変更した在庫品ロットを含む在庫品群以外のいずれか１の在庫品群に含まれる全ての在庫品ロットの引当数を０にする。表１２の仮引当組合せ解の場合、在庫品群数修正部４７’は、受注オーダーＪ００３に引き当てる３種の在庫品群Ｇ００１、Ｇ００３及びＧ００４のうちのステップＳ５において引当数を変更した在庫品ロットＢ００３を含む在庫品群Ｇ００４以外の在庫品群Ｇ００１又はＧ００３のいずれか一方に含まれる全ての在庫品ロットの引当数を０にする。後掲の表１３は、表１２の仮引当組合せ解に対し、在庫品群数修正部４７’が在庫品群Ｇ００３に含まれる全ての在庫品ロットＢ００１及びＢ００３の引当数をいずれも０に修正した場合の仮引当組合せ解を示している。これにより受注オーダーＪ００３に引き当てる在庫品群の種類数が２となるので、受注オーダーＪ００３の在庫品群上限数２を充足するように仮引当組合せ解を修正することができる。これによりステップＳ７’は完了し、制御処理部１４はステップＳ８の処理に進む。
【０１９７】
【表１３】
0006673750.tif 000016
【０１９８】
（ステップＳ８：引当数合計制約条件の充足可否判断）
ステップＳ８において、引当数合計制約成否判定部４８は、上記実施形態１と同様に、仮引当組合せが引当数合計制約条件を充足するか否かを判定し（Ｓ８：Ｙｅｓ又はＮｏ）、当該判定結果に応じて、制御処理部１４はステップＳ９の処理に進むかステップＳ８ａの処理に進む。
【０１９９】
表１３に示す仮引当組合せ解の場合、在庫品ロットＡ００１の引当数２と在庫品ロットＢ００３の引当数５とを足し合わせた引当数の合計７が、引当数を変更した受注オーダーＪ００３に引き当てる在庫品ロットの合計引当数の上限６を超えているので、引当数合計制約成否判定部４８は、引当数合計制約条件を充足しないと判定する（Ｓ８：Ｎｏ）。これによりステップＳ８は完了し、制御処理部１４はステップＳ９の処理に進む。
【０２００】
（ステップＳ９：第１引当数修正工程）
ステップＳ９において、上記実施形態１と同様に、第１引当数修正部４９は、第１工程で引当数を変更した在庫品ロットを含む在庫品群以外のいずれかの在庫品群に含まれる在庫品ロットの引当数に新たな引当数を設定する。表１３の仮引当組合せ解の具体例で説明すると、第１引当数修正部４９は、受注オーダーＪ００３に引き当てる在庫品ロットＡ００１及びＢ００２の引当数の合計７から、受注オーダーＪ００３の合計引当数６を引いて得られた自然数１を設定し、受注オーダーＪ００２に引き当てる全ての在庫品ロットＡ００１及びＢ００２のうち、引当数を変更した在庫品ロットＢ００２以外の在庫品ロットＡ００１の引当数２から上記自然数１を減算した引当数を新たな引当数１として設定する。この修正後の仮引当組合せ解を下記の表１４に示す。
【０２０１】
【表１４】
0006673750.tif 000017
【０２０２】
上記ステップＳ９を含むことにより受注オーダーＪ００２に引き当てる在庫品ロットの引当数の合計が、受注オーダーＪ００２の合計引当数を超えないように仮引当組合せ解の引当数を修正することができる。これによりステップＳ９は完了し、制御処理部１４はステップＳ８の処理に戻る。
【０２０３】
上記表１４の仮引当組合せ解においては、在庫品ロットＡ００１の引当数を１減算する場合を説明したが、ステップＳ９を終えた後の仮引当組合せ解が引当数合計制約条件を充足しないこともあり得る。この場合には、制御処理部１４は、引当数合計制約条件を充足する仮引当組合せ解となるまでステップＳ８及びＳ９を繰り返す。これにより引当数を変更した在庫品以外の複数の在庫品の引当数を修正することができ、引当数の修正の網羅性を担保することができる。そして、ステップＳ８において、引当数合計制約成否判定部４８が引当数合計制約条件を充足すると判定すると（Ｓ８：Ｙｅｓ）、制御処理部１４はステップＳ８ａの処理に進む。
【０２０４】
（ステップＳ８ａ：引当数下限制約条件の充足可否判断）
ステップＳ８ａは、本実施形態において引当数下限の制約が新たに設定されたことによって追加される工程である。ステップＳ８ａにおいて、引当数下限成否判定部４８ａは、上記ステップＳ９で修正された後の引当数が、その引当数を変更した在庫品ロットを引き当てる受注オーダーの引当数下限以上であるか否かを判定する。引当数下限成否判定部４８ａは、ステップＳ９で引当数を修正した後の引当数が、受注オーダーの引当数下限未満と判定すると（Ｓ８ａ：Ｎｏ）、制御処理部１４がステップＳ９ａの処理に進む。一方、引当数下限成否判定部４８ａは、仮引当組合せ解における引当数を修正した後の引当数が、受注オーダーの引当数下限以上であると判定すると（Ｓ８ａ：Ｙｅｓ）、制御処理部１４がステップＳ１０の処理に進む。
【０２０５】
表１４に示す仮引当組合せ解の場合、ステップＳ９において受注オーダーＪ００３の在庫品ロットＡ００１の引当数を１に変更したことにより、変更後の引当数が受注オーダーＪ００３の引当数下限２未満となっているので、引当数下限成否判定部４８ａは、引当数下限制約条件を満たさないと判定し（ステップＳ８ａ：Ｎｏ）、制御処理部１４がステップＳ９ａの処理に進む。
【０２０６】
（ステップＳ９ａ：第１引当数０解工程）
ステップＳ９ａは、上記ステップＳ８ａと同様に、本実施形態で引当数下限の制約が新たに設定されたことによって追加される工程である。引当数下限成否判定部４８ａは、ステップＳ９において設定された新たな引当数が、当該新たな引当数の在庫品によって作製される製品を作製するために許容される前記在庫品の引当数の下限値未満であると判断する場合（ステップＳ８ａ：Ｎｏ）、引当数０解設定部４９ａは、ステップＳ９で設定された新たな引当数を０にする。
【０２０７】
表１４の仮引当組合せ解の場合、ステップＳ９において設定された新たな引当数１が、当該新たな引当数を設定した受注オーダーＪ００３に許容される在庫品群に含まれる全ての在庫品ロットの引当数の総和の下限値２未満であるので、引当数０解設定部４９ａは、後掲の表１５に示すように受注オーダーＪ００３に引き当てる在庫品群のうちのいずれか１の在庫品群（表１５の場合、在庫品群Ｇ００１）に含まれる全ての在庫品ロットＡ００１の引当数を０にする。
【０２０８】
【表１５】
0006673750.tif 000018
【０２０９】
上記ステップＳ９ａを含むことにより受注オーダーＪ００３の引当数下限を下回る引当数をなくすように引当数を修正することができる。これによりステップＳ９ａは完了し、制御処理部１４はステップＳ１０の処理に進む。
【０２１０】
（ステップＳ１０：在庫数制約条件の充足可否判断）
ステップＳ１０において、在庫数制約成否判定部５０は、実施形態１と同様に、仮引当組合せが在庫数制約条件を充足するか否かを判定し（Ｓ１０：Ｙｅｓ又はＮｏ）、当該在庫数制約条件を充足すると判定する場合（Ｓ１０：Ｙｅｓ）、制御処理部１４がステップＳ８ｂの処理に進み、在庫数制約条件を充足しないと判定する場合（Ｓ１０：Ｎｏ）、制御処理部１４がステップＳ１１の処理に進む。表１５に示す仮引当組合せ解の場合、全ての受注オーダーＪ００１〜Ｊ００５における第１工程で引当数を変更した在庫品ロットＢ００２の引当数の合計（５＋６＝１１）が、在庫品ロットＢ００２の在庫数６を超えているので、在庫数制約成否判定部５０は在庫数制約条件を充足しないと判定し（Ｓ１０：Ｎｏ）、制御処理部１４がステップＳ１１の処理に進む。
【０２１１】
（ステップＳ１１：第２引当数修正工程）
ステップＳ１１において、第２引当数修正部５１は、実施形態１と同様に、第１工程で引当数を変更した在庫品の引当数の合計から当該在庫品の在庫数を引いて得られた値を上限とする任意の自然数を設定し、上記ステップＳ５で引当数を変更した在庫品以外の在庫品の引当数から当該自然数を減算した引当数を新たな引当数に設定する。
【０２１２】
表１５の仮引当組合せ解の具体例で説明すると、第２引当数修正部５１は、第１工程で引当数を変更した在庫品ロットＢ００２の引当数の合計１１から、在庫品ロットＢ００２の在庫数６を引いて得られた値５を上限とする自然数（例えば５）を設定し、仮引当組合せ解における第１工程で変更した在庫品ロットＢ００２の引当数以外の受注オーダーＪ００５の引当数６から上記自然数５を減算した引当数１を新たな引当数として設定する（下記表１６参照）。
【０２１３】
【表１６】
0006673750.tif 000019
【０２１４】
上記ステップＳ１１を含むことにより在庫品ロットＢ００３の引当数の合計が、在庫品ロットＢ００３の在庫数６を超えないように仮引当組合せ解の引当数を修正することができる。これによりステップＳ１１は完了し、制御処理部１４はステップＳ１０の処理に戻る。
【０２１５】
上記表１６の仮引当組合せ解においては、在庫品ロットＢ００３の引当数を５減算する場合を説明したが、ステップＳ１１を終えた後の仮引当組合せ解が在庫数制約条件を充足しないこともあり得る。この場合には、制御処理部１４は、在庫数制約条件を充足する仮引当組合せ解となるまでステップＳ１０及びＳ１１を繰り返す。これにより引当数を変更した在庫品以外の複数の在庫品の引当数を修正することができ、引当数の修正の網羅性を担保することができる。
【０２１６】
（ステップＳ８ｂ及びＳ９ｂ：第２引当数修正工程）
上記ステップＳ１１の終えた後の引当組合せ解に対し、上記ステップＳ８ｂ及びステップＳ９ｂを実行する。ステップＳ８ｂ及びステップＳ９ｂはそれぞれ、上記ステップＳ８ａ及びステップＳ９ａと同様の工程である。すなわち、ステップＳ８ｂにおいて、上記ステップＳ１１で変更された引当数が、その変更後の引当数の在庫品ロットを引き当てる受注オーダーの引当数下限未満であると引当数下限成否判定部４８ａが判定した場合には制御処理部１４はステップＳ９ｂに進む。そして、当該ステップＳ９ｂにおいて、引当数０解設定部４９ａが変更された引当数を０に修正する。一方、上記ステップＳ８ｂにおいて、ステップＳ１１で変更された引当数が、その変更後の引当数の在庫品ロットを引き当てる受注オーダーの引当数下限以上であると引当数下限成否判定部４８ａが判定した場合には、制御処理部１４はステップＳ１２の処理に進む。
【０２１７】
表１６に示す仮引当組合せ解の場合、ステップＳ１１において受注オーダーＪ００５に対する在庫品ロットＢ００３の引当数を１に変更したことにより、変更後の引当数が受注オーダーＪ００５の引当数下限２未満となっているので、引当数下限成否判定部４８ａは、受注オーダーＪ００２の引当数下限を充足しないと判定し、制御処理部１４がステップＳ９ｂの処理に進む。そして、続くステップＳ９ｂにおいて、引当数０解設定部４９ａは、ステップＳ１１で設定された新たな引当数を０に変更する。この変更後の仮引当組合せ解を下記の表１７に示す。
【０２１８】
【表１７】
0006673750.tif 000020
【０２１９】
上記ステップＳ９ｂを含むことにより受注オーダーＪ００３の引当数下限を下回る引当数をなくすように仮引当組合せ解の引当数を修正することができる。これによりステップＳ９ｂは完了し、制御処理部１４はステップＳ１２の処理に進む。
【０２２０】
（ステップＳ１２及びＳ１３）
ステップＳ１２及びＳ１３は、上記実施形態１と同様にして行われる。すなわち、評価値比較部５２は、実施形態１と同様の方法で、上記引当組合せ解の評価値Ａと仮引当組合せ解の評価値Ｂとを比較し、評価値Ｂが評価値Ａ未満の場合（Ｓ１２：Ｎｏ）、引当組合せ解を変更せずにステップＳ３の処理に戻り、評価値Ｂが評価値Ａ以上の場合（Ｓ１２：Ｙｅｓ）、ステップＳ１３の処理に進むように判定する（ステップ１２）。引当組合せ更新部５３は、評価値Ｂが評価値Ａ以上の場合に、仮引当組合せ解を新たな引当組合せ解に書き換える（ステップＳ１３）。これによりステップＳ１３は完了し、ステップＳ３の処理に戻る。以上のようにしてステップＳ３〜ステップＳ１３の各工程を繰り返し、カウンタｎの値がループ数設定値Ｎになった後に、ステップＳ３において、カウンタ成否判定部４４は制御処理部１４がステップＳ１４の処理に進むように判定する（ステップＳ３：Ｙｅｓ）。
【０２２１】
上記ステップＳ３において、カウンタ成否判定部４４は制御処理部１４がステップＳ１４の処理に進むように判定した場合に、引当組合せ解における全ての受注オーダーの合計引当数を満たすように各在庫品ロットの引当数が設定されているとは限らず、一部の受注オーダーは、その合計引当数に対して各在庫品ロットの引当数の合計が不足していることがある。このような受注オーダーに対しても、製品の納期に余裕があるのであれば、引き当てた在庫品のみで先に一部の製品を作製し、残りの不足分の製品を、他の在庫品ロットが新たに納入された後に、その納入された在庫品ロットを引き当てることで製造されることは行われる。このような引当処理を行う上で、在庫品群種類数の制約条件や引当数下限の制約条件が予め設定されている場合には、次回の引当処理でもこれらの制約条件を満たしつつ在庫品ロットを引き当てることができるように、今回の引当組合せ解における一部の引当数を修正する必要がある場合がある。以下においては、このような引当組合せ解の修正について説明する。
【０２２２】
引当組合せ解に修正が必要な場合の例として、例えばステップＳ３を終えた後の引当組合せ解が以下の表１８の引当組合せ解である場合を説明する。表１８の引当組合せ解では、受注オーダーＪ００１、Ｊ００３及びＪ００４に必要な在庫品の引当数（合計引当数）と、受注オーダーＪ００１、Ｊ００３及びＪ００４に引き当てられた各在庫品ロットの引当数の合計値とは一致しているので、受注オーダーＪ００１、Ｊ００３及びＪ００４の合計引当数は満たされている。一方、受注オーダーＪ００２及びＪ００５に必要な在庫品の引当数（合計引当数）は、受注オーダーＪ００２及びＪ００５に引き当てられた各在庫品ロットの引当数の合計値よりも多く、つまり、受注オーダーＪ００２は、在庫品ロットの引当数が２不足しており、受注オーダーＪ００５は、在庫品ロットの引当数が１不足している。
【０２２３】
【表１８】
0006673750.tif 000021
【０２２４】
上記受注オーダーＪ００２及びＪ００５に対し、次回の在庫品の納品後に再度の引当処理を行う場合にも、各受注オーダーの合計引当数の制約条件、在庫品群種類数の制約条件、及び引当数下限の制約条件を満たす必要がある。よって、上記受注オーダーＪ００２及びＪ００５に対し、以下の在庫品群種類数による修正工程（ステップＳ１４）及び引当数下限による修正工程（ステップＳ１５）を実行することにより、次回の引当処理で在庫品ロットが引き当てることができるように引当組合せ解の一部の引当数を修正する。なお、下記のステップＳ１４及びステップＳ１５の修正工程の順序は一例に過ぎず、各修正工程を入れ替えて実行してもよい。
【０２２５】
（ステップＳ１４：引当解除工程）
ステップＳ１４では、上記製品を作製するために許容される在庫品群の種類数の上限が設定されている場合において、在庫品群の種類数の上限をＡとし、当該製品を作製するために必要な前記在庫品ロットの引当数をＢとし、当該製品を作製するために引き当てられる各在庫品ロットの引当数の合計値をＣとし、次に引当処理を実行するまでに補充される予定の１種の在庫品群に含まれる全ての在庫品ロットの補充予定数をＤとすると、在庫品引当解除部５４は、上記製品を作製するために引き当てる在庫品群の種類数が、Ａ−（Ｂ−Ｃ）÷Ｄによって算出される値の小数点以下を切り捨てた整数値以下となるように、当該製品を作製するために引き当てた在庫品群のうちのいずれか１以上の在庫品群に含まれる全ての在庫品ロットの引当数を０にする（Ｓ１４）。このような引当数の修正工程を含むことにより、次の引当処理までに納品された在庫品ロットを、引当数が不足している受注オーダーに引き当てることができるように引当可能な在庫品群の種類数に余裕を持たせることができる。なお、上記製品を作製するために必要な在庫品ロットの引当数のある程度の幅がある場合には、必要な引当数の下限を上記Ｂとして設定するものとする。
【０２２６】
例えば、表１８の受注オーダーＪ００２は、在庫品群の種類数の上限Ａが２であり、受注オーダーＪ００２を満たすために必要な在庫品ロットの引当数Ｂが８であり、当該受注オーダーＪ００２に引き当てられる各在庫品ロットの引当数の合計値Ｃが６であるので、在庫品ロットの引当数が２不足している。このため、次回の引当処理を実行するときには受注オーダーＪ００２に対していずれかの在庫品ロットを引き当てる必要がある。一方、受注オーダーＪ００２に引当可能な在庫品群の種類数の上限は２種であるため、次の引当時に引当可能な在庫品ロットが納入されると、その在庫品ロットを引き当てる余地がある。このため、受注オーダーＪ００２に対してはステップＳ１４の引当解除を実行しなくてもよい。
【０２２７】
上記受注オーダーＪ００２の上記Ａ、Ｂ及びＣの各値と、引当処理を実行するまでに補充される在庫品の補充予定数Ｄである１５とをそれぞれ、上記数式Ａ−（Ｂ−Ｃ）÷Ｄに代入すると、２−（８−６）÷１５＝１．８６６６７・・・となり、この右辺の小数点以下を切り捨てた整数値１が算出される。したがって、受注オーダーＪ００２に引き当てられる在庫品群の種類数は１種類以下に設定されるべきと判定される。実際に受注オーダーＪ００２に対しては在庫品群Ｇ００１の１種類のみの在庫品ロットが引き当てられているので、受注オーダーＪ００２に対してはステップＳ１４の引当解除を実行しなくてもよい。
【０２２８】
これに対し、表１８の受注オーダーＪ００５は在庫品群の種類数の上限Ａが３であり、受注オーダーＪ００５を満たすために必要な在庫品ロットの引当数Ｂが３０であり、当該受注オーダーＪ００５に引き当てられる各在庫品ロットの引当数の合計値Ｃが２９であるので、在庫品ロットの引当数が１不足している。このため、次回の引当処理を実行するときには受注オーダーＪ００５に対していずれかの在庫品ロットを引き当てる必要がある。一方、受注オーダーＪ００５に引当可能な在庫品群の種類数は３種であるため、次の引当時に引当可能な在庫品ロットが納入されても、その納入された在庫品ロットを新たに引き当てる余地がない。つまり、新たに納入された在庫品ロットを受注オーダーＪ００５に引き当てると、在庫品群の種類数が４種類となって在庫品群種類数の制約条件を満たさなくなる。
【０２２９】
このような事態を回避するために、ステップＳ１４において、受注オーダーＪ００５に引き当てられた在庫品群のうちのいずれか１の在庫品群に含まれる全ての在庫品ロットの引当数を０に設定（解除）することにより、受注オーダーＪ００５に引当可能な在庫品群の種類数を１減らす。これにより受注オーダーＪ００５に引当可能な在庫品群の種類数に１種類分の余裕を持たせることができ、次に引当処理を実行するまでに新たに納入される予定の在庫品ロットを受注オーダーＪ００５に引き当てることができる。
【０２３０】
例えば、受注オーダーＪ００５の上記Ａ、Ｂ及びＣの各値と、引当処理を実行するまでに補充される在庫品の補充予定数Ｄである１５とをそれぞれ、上記数式Ａ−（Ｂ−Ｃ）÷Ｄに代入すると、３−（３０−２９）÷１５＝２．９３３・・・となり、この右辺の小数点以下を切り捨てた整数値２が算出される。したがって、受注オーダーＪ００５に引き当てられる在庫品群の種類数は２種類以下に設定されるべきと判定される。
【０２３１】
一方、表１８の受注オーダーＪ００５に引き当てられる在庫品群の種類数は３種類（在庫品群Ｇ００２、Ｇ００３、Ｇ００４）であるので、受注オーダーＪ００５に引き当てる在庫品群の種類数が２種類となるまで、当該製品を作製するために引き当てた在庫品群のうちのいずれか１の在庫品群に含まれる全ての在庫品ロットの引当数を０にする。言い換えると、いずれか１の在庫品群に含まれる全ての在庫品ロットの引当を解除する。ここで引当を解除する（引当数を０にする）在庫品群は、引当数が設定された在庫品ロットを含む在庫品群のうちの優先度が低い在庫品ロットを含む在庫品群から順番に引当を解除することが好ましく、表１８の例では、在庫品群Ｇ００４に含まれる在庫品ロットＢ００３の引当数を０にすることが好ましい。以下の表１９は、表１８の引当組合せ解における在庫品群Ｇ００４に含まれる在庫品ロットＢ００３の引当数を０に修正した後の引当組合せ解である。これにより受注オーダーＪ００５に引当可能な在庫品群の種類数に１種類分の余裕を持たせることができ、次に引当処理を実行するまでに新たに納入される予定の在庫品ロットを受注オーダーＪ００５に引き当てても在庫品群の上限を超えることなく、在庫品ロットの引当数を設定することができる。
【０２３２】
【表１９】
0006673750.tif 000022
【０２３３】
上記修正を終えた表１９の受注オーダーＪ００５において、在庫品群の種類数の上限Ａが３であり、受注オーダーＪ００５を満たすために必要な在庫品ロットの引当数Ｂが３０であり、当該受注オーダーＪ００５に引き当てられる各在庫品ロットの引当数の合計値Ｃが２３であり、次に引当処理を実行するまでに補充される在庫品の補充予定数Ｄが１５であるので、上記数式Ａ−（Ｂ−Ｃ）÷Ｄに代入すると、３−（３０−２３）÷１５＝２．５３３・・・の小数点以下を切り捨てた整数値２が算出される。したがって、受注オーダーＪ００５に引き当てられる在庫品群の種類数は２種類以下に設定されるべきと判定される。
【０２３４】
これに対し、表１９の受注オーダーＪ００５に引き当てられる在庫品群の種類数は２種類（在庫品群Ｇ００２、Ｇ００３）であるので、表１９の受注オーダーＪ００５に対して、これ以上の在庫品群の種類数を修正する必要はない。表１９の受注オーダーＪ００５に対し、次に引当処理を実行するまでに１５個の補充予定数の在庫品ロットのうちの一部の在庫品ロットを引き当てることにより、受注オーダーＪ００５の在庫品群種類数の上限３を満たしつつ受注オーダーの引当数３０を満たせるように各在庫品ロットの引当数を設定することができる。
【０２３５】
なお、本実施形態では、各在庫品ロットに対してそれぞれ個別の在庫品群が設定されているので、各在庫品群の種類数に基づいて在庫品群の種類数を修正しているが、実施形態１のように在庫品群の概念が導入されていない場合は、在庫品ロットの種類数の上限に基づいて在庫品ロットの種類数を修正するものとする。
【０２３６】
（ステップＳ１５：引当数減算工程）
ステップＳ１５では、製品を作製するために引き当てる各在庫品ロットの引当数に下限値が定められている場合において、引当数減算部５５は、当該製品を作製するために必要な前記在庫品ロットの引当数から当該製品を作製するために引き当てられる各在庫品ロットの引当数の合計値を引いた値が前記下限値以上となるまで、当該製品を作製するために引き当てた在庫品ロットの引当数を減算する。なお、上記製品を作製するために必要な在庫品ロットの引当数のある程度の幅がある場合には、必要な引当数の上限から当該製品を作製するために引き当てられる各在庫品ロットの引当数の合計値を引いた値が前記下限値以上となるまで、当該製品を作製するために引き当てた在庫品ロットの引当数を減算するものとする。
【０２３７】
例えば、表１９の受注オーダーＪ００２を充当するために必要な各在庫品ロットの合計引当数が８であり、当該受注オーダーに引き当てられる各在庫品ロットの引当数の合計値が６であるため、受注オーダーＪ００２の合計引当数を充当させるためには、あと２つの引当数を確保する必要がある。しかし、受注オーダーＪ００２の引当数下限は３に設定されているので、在庫品ロットの引当数を１又は２に設定することができない。
【０２３８】
よって、ステップＳ１５において、引当数減算部５５は、受注オーダーＪ００２を充当するために必要な前記在庫品ロットの合計引当数８から受注オーダーに引き当てられる各在庫品ロット（在庫品ロットＡ００１）の引当数の合計値（６）を引いた値（２）が前記下限値（３）以上となるまで、受注オーダーＪ００２に引き当てた在庫品ロット（例えば在庫品ロットＡ００１）の引当数を減算する。上記表１９の引当組合せ解の場合、受注オーダーＪ００２に引き当てる在庫品ロットＡ００１の引当数を１減算し、下記の表２０に示すように在庫品ロットＡ００１の引当数を５とすることで、受注オーダーＪ００２に対して在庫品ロットＡ００１以外のいずれか１の在庫品ロットを引き当てることができる。
【０２３９】
【表２０】
0006673750.tif 000023
【０２４０】
上記ステップＳ１５において減算された引当数が設定された在庫品を含む在庫品群に含まれる全ての在庫品ロットの引当数の総和が、当該新たな引当数の在庫品ロットを含む受注オーダーに許容される前記在庫品群に含まれる全ての在庫品ロットの引当数の総和の下限値未満の場合、引当数減算部５５は、減算された引当数が設定された在庫品ロットを含む在庫品群に含まれる全ての在庫品ロットの引当数を０にすることが好ましい。これにより引当数の総和の下限値の制約条件を満たすように各在庫品ロットの引当数を修正することができる。
【０２４１】
上記ステップＳ１５において、引当数を減算する場合、引当数の下限値が定められた受注オーダーに対して引き当てたいずれか１の在庫品ロットの引当数を１ずつ減算することが好ましい。このように在庫品ロットの引当数を徐々に減らしていくことで、当該減算後の引当数が、受注オーダーに許容される在庫品群に含まれる全ての在庫品ロットの引当数の総和の下限値未満となりにくくなるので、引当数減算部５５によって過剰に引当数が減算されることを防止することができる。
【０２４２】
なお、表１９の受注オーダーＪ００５を充当するために必要な各在庫品ロットの合計引当数が３０であり、当該受注オーダーに引き当てられる各在庫品ロットの引当数の合計値が２３であるため、受注オーダーＪ００５の合計引当数を充当させるためには、あと７つの引当数を確保する必要がある。一方、受注オーダーＪ００５の引当数下限は６に設定されているので、次の引当処理において、新たに納品された在庫品ロットを７つ引き当てることにより、受注オーダーＪ００５の引当数下限を満たしつつ、不足分の在庫品ロットを引き当てることができる。このため、受注オーダーＪ００５に対してはステップＳ１５の修正工程を実行しなくてもよい。
【０２４３】
以上のように引当組合せ解を設定することにより、次回の引当処理においても引当数下限の制約条件や在庫品群種類数の制約条件を満たすように引当組合せ解の引当数を修正することができる。
【０２４４】
＜その他の実施形態＞
上記各実施形態においては、過去に受注オーダーに引き当てた在庫品ロットの引当数を加味していないが、実際の引当処理においては過去に受注オーダーに対して既に引当済の在庫品ロットが存在する場合もある。このような過去の引当情報が存在する場合には、上記局所探索法が実行される前に過去に引き当てた在庫品の引当数を引当組合せ解に取り込む工程（ステップＳ０）をさらに含む。過去に受注オーダーに対して引き当てた在庫品の情報の一例を表２１に示す。
【０２４５】
【表２１】
0006673750.tif 000024
【０２４６】
上記表２１の過去の引当情報によると、前回までの引当処理によって、受注オーダーＪ００５に対して在庫品群Ｇ００４に属する在庫品ロットを２の引当数だけ引き当てられており、受注オーダーＪ００３に対して在庫品群Ｇ００５に属する在庫品ロットを３の引当数だけ引き当てられている。この場合、引当組合せ解の初期解を設定する工程（ステップＳ１）の前に、過去引当情報取込部４０は、上記表２１に示す過去に引き当てた在庫品の引当数を取り込む（ステップＳ０）。
【０２４７】
上記ステップＳ０において、過去の引当情報で取り込む場合、過去に引き当てられた在庫品ロットの引当数を変更することはできないので、過去に引き当てられた在庫品ロットの引当数は、在庫品群数修正工程Ｓ７’、第１引当数修正工程Ｓ９、第１引当数０解工程Ｓ９ａ及び第２引当数０解工程Ｓ９ｂにおける引当数の変更対象から除外されるように設定される。また、第１引当数０解工程Ｓ９ａ、第２引当数０解工程Ｓ９ｂ、及び引当解除工程Ｓ１４において、過去に引き当てられた在庫品ロットが存在する在庫品群に含まれる各在庫品ロットの引当数を解除（０に設定）しても、過去に引き当てられた在庫品ロットが存在する限りは在庫品群の種類数を減らすことができないので、過去に引き当てられた在庫品ロットが存在する在庫品群に対しては、第１引当数０解工程Ｓ９ａ、第２引当数０解工程Ｓ９ｂ及び引当解除工程Ｓ１４による引当数の変更対象から除外される。
【０２４８】
このように過去の引当情報を加味して引当組合せ解の初期解を設定することにより過去の引当処理で引き当てられた在庫品ロットの引当数を勘案しつつ、各種の制約条件を満たすように各在庫品ロットの引当数を設定することができる。
【０２４９】
本発明を表現するために、上述において図面を参照しながら実施形態を通して本発明を適切且つ十分に説明したが、当業者であれば上述の実施形態を変更および／または改良することは容易に為し得ることであると認識すべきである。したがって、当業者が実施する変更形態または改良形態が、請求の範囲に記載された請求項の権利範囲を離脱するレベルのものでない限り、当該変更形態または当該改良形態は、当該請求項の権利範囲に包括されると解釈される。
【符号の説明】
【０２５０】
１  在庫引当システム
１１  入力部
１２  出力部
１３  記憶部
１４  制御処理部
３１  製品情報データベース
３２  在庫品情報データベース
３３  解探索条件データベース
４０  過去引当情報取込部
４１  制御部
４２  初期解設定部
４３  カウンタ部
４４  カウンタ成否判定部
４５  引当数変更部（第１処理部）
４６  ロット数制約成否判定部
４６’  在庫品群数制約成否判定部
４７  ロット数修正部
４７’  在庫品群数修正部
４８  引当数合計制約成否判定部
４８ａ  引当数下限成否判定部
４９  第１引当数修正部
４９ａ  引当数０解設定部
５０  在庫数制約成否判定部
５１  第２引当数修正部
５２  評価値比較部
５３  引当組合せ更新部（第２処理部）
５４  在庫品引当解除部
５５  引当数減算部
【図１】
0006673750.tif 000026
【図２】
0006673750.tif 000027
【図３】
0006673750.tif 000028
【図４】
0006673750.tif 000029