(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-27
(45)【発行日】2023-07-05
(54)【発明の名称】情報処理装置、作業計画決定方法、および作業計画決定プログラム
(51)【国際特許分類】
G06Q 50/04 20120101AFI20230628BHJP
【FI】
G06Q50/04
(21)【出願番号】P 2022508656
(86)(22)【出願日】2020-03-17
(86)【国際出願番号】 JP2020011727
(87)【国際公開番号】W WO2021186551
(87)【国際公開日】2021-09-23
【審査請求日】2022-04-21
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100087480
【氏名又は名称】片山 修平
(72)【発明者】
【氏名】山▲崎▼ 貴司
【審査官】木村 貴俊
(56)【参考文献】
【文献】国際公開第2019/064379(WO,A1)
【文献】特開2011-253451(JP,A)
【文献】特開2016-012285(JP,A)
【文献】特開2003-271223(JP,A)
【文献】特開2017-134565(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
G16Z 99/00
(57)【特許請求の範囲】
【請求項1】
複数の対象物が所定順序に従って作業ラインにて処理され、前記作業ラインにおいて前記複数の対象物のそれぞれについて複数の作業が順番に行われ、前記複数の作業のうち少なくとも一部の作業が前記複数の対象物の間で相互に異なる、という条件において、前記所定順序を特定する情報処理装置であって、
前記複数の対象物の一部についての前記作業ラインへの投入順序が入力変数として与えられる規定数分の個体を親個体として、前記親個体から遺伝的アルゴリズムで世代進化させることで子個体を生成する処理と、前記親個体および前記子個体の各投入順序で前記一部の対象物を前記作業ラインに投入する場合のシミュレーション結果について複数の目的関数に応じた評価関数を演算する処理と、前記評価関数が所定の条件を満たす個体を、前記規定数分だけ解として抽出する処理と、を含む一連の処理を実行する解抽出部を備え、
前記解抽出部は、前記一連の処理を、前記対象物を1つずつ増やしつつ繰り返し実行する際に、抽出した前記個体がたどった履歴を前記規定数分の個体番号のいずれかと紐付け、前記親個体に前記個体番号を入力変数として追加し、世代進化の際に前記個体番号そのものを遺伝的アルゴリズムで交配させることで投入履歴情報を次世代に引き継ぐことを特徴とする情報処理装置。
【請求項2】
前記解抽出部は、前記一連の処理の第1回目の実行時に、抽出した前記個体のそれぞれについて前記対象物の第一投入順序を決定し、次回以降の前記一連の処理の実行時に、抽出した解について前記対象物の投入順序を順次決定していくことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記解抽出部は、前記入力変数として、
順次決定された、前記個体番号に紐付いた
前記投入順序を用いることを特徴とする請求項2に記載の情報処理装置。
【請求項4】
複数の対象物が所定順序に従って作業ラインにて処理され、前記作業ラインにおいて前記複数の対象物のそれぞれについて複数の作業が順番に行われ、前記複数の作業のうち少なくとも一部の作業が前記複数の対象物の間で相互に異なる、という条件において、前記所定順序を特定する作業計画決定方法であって、
前記複数の対象物の一部についての前記作業ラインへの投入順序が入力変数として与えられる規定数分の個体を親個体として、前記親個体から遺伝的アルゴリズムで世代進化させることで子個体を生成する処理と、前記親個体および前記子個体の各投入順序で前記一部の対象物を前記作業ラインに投入する場合のシミュレーション結果について複数の目的関数に応じた評価関数を演算する処理と、前記評価関数が所定の条件を満たす個体を、前記規定数分だけ解として抽出する処理と、を含む一連の処理を実行する処理をコンピュータが実行し、
前記一連の処理を、前記対象物を1つずつ増やしつつ繰り返し実行する際に、抽出した前記個体がたどった履歴を前記規定数分の個体番号のいずれかと紐付け、前記親個体に前記個体番号を入力変数として追加し、世代進化の際に前記個体番号そのものを遺伝的アルゴリズムで交配させることで投入履歴情報を次世代に引き継ぐことを特徴とする作業計画決定方法。
【請求項5】
前記一連の処理の第1回目の実行時に、抽出した前記個体のそれぞれについて前記対象物の第一投入順序を決定し、次回以降の前記一連の処理の実行時に、抽出した解について前記対象物の投入順序を順次決定していくことを特徴とする請求項4に記載の作業計画決定方法。
【請求項6】
前記入力変数として、
順次決定された、前記個体番号に紐付いた
前記投入順序を用いることを特徴とする請求項5に記載の作業計画決定方法。
【請求項7】
複数の対象物が所定順序に従って作業ラインにて処理され、前記作業ラインにおいて前記複数の対象物のそれぞれについて複数の作業が順番に行われ、前記複数の作業のうち少なくとも一部の作業が前記複数の対象物の間で相互に異なる、という条件において、前記所定順序を特定する作業計画決定プログラムであって、
コンピュータに、
前記複数の対象物の一部についての前記作業ラインへの投入順序が入力変数として与えられる規定数分の個体を親個体として、前記親個体から遺伝的アルゴリズムで世代進化させることで子個体を生成する処理と、前記親個体および前記子個体の各投入順序で前記一部の対象物を前記作業ラインに投入する場合のシミュレーション結果について複数の目的関数に応じた評価関数を演算する処理と、前記評価関数が所定の条件を満たす個体を、前記規定数分だけ解として抽出する処理と、を含む一連の処理を実行する処理を実行させ、
前記一連の処理を、前記対象物を1つずつ増やしつつ繰り返し実行する際に、抽出した前記個体がたどった履歴を前記規定数分の個体番号のいずれかと紐付け、前記親個体に前記個体番号を入力変数として追加し、世代進化の際に前記個体番号そのものを遺伝的アルゴリズムで交配させることで投入履歴情報を次世代に引き継ぐことを特徴とする作業計画決定プログラム。
【請求項8】
前記一連の処理の第1回目の実行時に、抽出した前記個体のそれぞれについて前記対象物の第一投入順序を決定し、次回以降の前記一連の処理の実行時に、抽出した解について前記対象物の投入順序を順次決定していくことを特徴とする請求項7に記載の作業計画決定プログラム。
【請求項9】
前記入力変数として、
順次決定された、前記個体番号に紐付いた
前記投入順序を用いることを特徴とする請求項8に記載の作業計画決定プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本件は、情報処理装置、作業計画決定方法、および作業計画決定プログラムに関する。
【背景技術】
【0002】
複数の作業を経て複数種類の生産物を生産するための生産計画を生成する技術が開示されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えば、生産作業計画決定の取り組みとしては、モデル予測制御技術を応用し、逐次型最適化を多目的最適化技術に用いる技術が考えられる。具体的には、計算可能な少数製品をラインシミュレータなどの最適化ソルバーで演算し、投入製品を順次決定する手法が考えられている。しかしながら、逐次的に製品を決定する方法の基となるモデル予測制御は、単目的最適化が基本であるため、多目的最適化によって抽出されるパレート解群から一義に解を抽出することになる。複数の目的関数がある場合に、それぞれの目的関数に対して逐次型の最適化を行うと、計算時間がかかる。また、複数の目的関数に対して、加重平均等で単目的化する場合、本来の最適解群を網羅的に演算して最適解に進化させることが困難である。
【0005】
1つの側面では、本発明は、計算時間の増大化を抑制しつつ最適解決定精度を向上させることができる情報処理装置、作業計画決定方法、および作業計画決定プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
1つの態様では、情報処理装置は、複数の対象物が所定順序に従って作業ラインにて処理され、前記作業ラインにおいて前記複数の対象物のそれぞれについて複数の作業が順番に行われ、前記複数の作業のうち少なくとも一部の作業が前記複数の対象物の間で相互に異なる、という条件において、前記所定順序を特定する情報処理装置であって、前記複数の対象物の一部についての前記作業ラインへの投入順序が入力変数として与えられる規定数分の個体を親個体として、前記親個体から遺伝的アルゴリズムで世代進化させることで子個体を生成する処理と、前記親個体および前記子個体の各投入順序で前記一部の対象物を前記作業ラインに投入する場合のシミュレーション結果について複数の目的関数に応じた評価関数を演算する処理と、前記評価関数が所定の条件を満たす個体を、前記規定数分だけ解として抽出する処理と、を含む一連の処理を実行する解抽出部を備え、前記解抽出部は、前記一連の処理を、前記対象物を1つずつ増やしつつ繰り返し実行する際に、抽出した前記個体がたどった履歴を前記規定数分の個体番号のいずれかと紐付け、前記親個体に前記個体番号を入力変数として追加し、世代進化の際に前記個体番号そのものを遺伝的アルゴリズムで交配させることで投入履歴情報を次世代に引き継ぐ。
【発明の効果】
【0007】
計算時間の増大化を抑制しつつ最適解決定精度を向上させることができる。
【図面の簡単な説明】
【0008】
【
図2】(a)および(b)は製品情報を例示する図である。
【
図3】(a)は第一投入製品を決定する際の多目的最適化演算結果を模式的に例示する図であり、(b)はパレート解を形成する個体の第一投入製品を例示する図である。
【
図4】第二投入製品の投入順序決定時の世代進化方法を模式的に例示する図である。
【
図5】(a)は計算結果の概念図を例示する図であり、(b)は更新された決定投入順序を例示する図であり。(c)は個体番号に紐づいた投入履歴を例示する図である。
【
図6】第n投入製品決定時の演算結果を模式的に例示する図である。
【
図7】(a)は実施例1に係る情報処理装置の全体構成を表す機能ブロック図であり、(b)はハードウェア構成を例示するブロック図である。
【
図8】情報処理装置が実行する作業計画決定処理の一例を表すフローチャートである。
【
図9】(a)は最適化条件を例示するテーブルであり、(b)は初期投入順序を例示するテーブルであり、(c)は決定投入順序格納部に格納された決定順序情報を例示するテーブルである。
【
図10】本実施例の手法で、第一投入製品のパレート解から第n投入製品のパレート解を算出した場合を例示する図である。
【発明を実施するための形態】
【0009】
多品種少量生産を行う場合、一日のうちに製品の品種が何度も変わることになる。したがって、同一の生産ラインにおいて、品種の異なる製品が混在して流れることになる。このような混流生産の工場では、どのような工程を施すか、どの装置を用いるか、などの条件が品種ごとに異なる。さらに、工場内の建屋間や生産設備間をどう動くかも一定ではない。一方で、多くの品種に共通した工程も複雑に織り込まれているため、それらの工程の手前で多くの品種が合流し、自然と渋滞が発生してしまう。このように、製品のワーク経路の分岐や合流が多い場合、工場全体の効率を最大化する生産指示を決めることは極めて重要であるが、極めて難しい問題でもある。
【0010】
例えば、生産作業計画決定の取り組みとしては、モデル予測制御技術を応用し、逐次型最適化を多目的最適化技術に用いる技術が考えられる。具体的には、計算可能な少数製品を最適化ソルバー(ラインシミュレータなど)で演算し、第一投入製品を決定する。
【0011】
ここで、ラインシミュレータの一例について説明する。まず、ラインシミュレータがシミュレーション対象とする製造ラインモデルの例について説明する。製造ラインモデルには、分岐および合流が存在し、複数の製品が1つずつ投入される。当該複数の製品のそれぞれについて、複数の作業が順番に行われる。当該複数の製品について、少なくとも一部の作業が異なっている。
【0012】
製造ラインモデルは、一例として、
図1で例示するように、A工程に属する装置(3機)と、B工程に属する装置(2機)と、ストレージと、C工程に属する装置(12機)と、を備える。各工程間には、ベルトコンベアが設けられている。ベルトコンベアには、分岐及び合流があり、製品は、A工程のいずれかの装置、B工程のいずれかの装置、C工程のいずれかの装置を経て、ゴールまで到達するようになっている。なお、各分岐においては、製品の投入計画に基づいて、製造ラインモデルが自動的に製品の進む方向を制御してもよいし、分岐に配置された作業者が、製品の投入計画に基づいて製品の進む方向を操作してもよい。なお、各工程では、例えば、製品の組み立て、検査、梱包等が実行される。
【0013】
ラインシミュレータは、このような製造ラインモデルを細かい空間に分割し、一つ先の空間が空いた場合に当該空間に製品が流れる、といった単純なモデル計算を実行する。その際に、ラインシミュレータは、各製品についての情報を格納した生産マスタから、各製品の情報を読み込む。生産マスタには、例えば、
図2(a)で例示するように、製造ラインモデルに投入する必要のある製品の型番のリストが格納されている。また、
図2(b)で例示するように、生産マスタには、各工程において各型番の製品を通すことができる装置の情報などが格納されている。
【0014】
製造ラインモデルに投入された製品は、生産マスタに格納された情報に従って各工程の装置で滞在時間だけ滞在し、その装置を通過する。最適化の指標(目的関数)として、スループットタイム(投入開始から、全ての製品がゴールに到達するまでの時間)や、ストレージへの最大ストア数、各工程のコスト、各装置の稼働率、納期遵守率などを用いることができる。
【0015】
実時間最適化アルゴリズムの概念として、以下のような処理が挙げられる。
(1)近未来予測として、製造ラインモデルに投入する製品のうち、情報爆発(組み合わせ爆発)を起こさずに製品の投入計画を策定できるだけの数(k個:例えば12個)の製品の投入計画を最適化する。
(2)最適化した製品投入計画のうち、最初のn個(例えば1個)の製品の製品投入計画を採用する。
(3)製品投入計画が決定した製品を除外して、(1)、(2)の処理を繰り返す。
【0016】
例えば、製品A、製品B、製品C,および製品Dについて最適解が求まる。それによって第一投入製品が製品Aに定まるものとする。次に、製品B、製品C、製品D、および製品Eについて最適解が求まる。それによって第二投入製品が製品Cに定まるものとする。この手順を繰り返すことによって、第一投入製品から順番に製品の投入順序が定まることになる。
【0017】
この手法では、膨大な組み合わせ問題を求解可能な投入生産数に対して逐次的に最適化演算することで解を求めやすくし、高速に多目的最適化を実行することができる。しかしながら、逐次的に製品を決定する方法の基となるモデル予測制御は、単目的最適化が基本であるため、多目的最適化によって抽出されるパレート解群から一義に解を抽出することになる。複数の目的関数がある場合に、それぞれの目的関数に対して逐次型の最適化を行うと、計算時間がかかる。また、複数の目的関数に対して、加重平均等で単目的化する場合、本来の最適解群(パレート解)を網羅的に演算して最適解に進化させることが困難である。
【0018】
そこで、以下の実施例では、計算時間の増大化を抑制しつつ、最適解の探索空間を広げることで最適解決定精度を向上させることができる情報処理装置、作業計画決定方法、および作業計画決定プログラムについて説明する。
【実施例1】
【0019】
本実施例においては、逐次型多目的最適化を実施する際に、最適化において決定された多目的解に対する製品投入履歴を、当該製品の投入順序を決定する初期条件として引き継ぐことにする。その際に、投入履歴そのものを入力変数として求めるのではなく、一つ前の投入製品決定時までに決定された投入順序を記録したパレート解を形成する個体番号を入力変数として、次世代の投入順序決定時に反映することにする。以下、本実施例の原理について説明する。
【0020】
図3(a)は、第一投入製品を決定する際の多目的最適化演算結果を模式的に例示する図である。最適化手法として、遺伝的アルゴリズムを用いる。
図3(a)の例では、目的関数を目的関数1および目的関数2の2種類として、初期世代の個体数を4個とする。
図3(a)において、パレートランキング上位の最適解の個体群(パレート解)は、楕円で囲んだ4つの個体である。パレートランキングは、各個体について、目的関数1および目的関数2から得られる評価関数によって定めることができる。各最適解は、第一投入製品、第二投入製品、といった各製品の投入順序が含まれている。各最適解に、個体番号(1~4)のいずれかを付し、第一投入製品の情報と関連付け、履歴情報としたデータベースに保存する。この場合において、どの最適解に個体番号1~4を付すかは任意である。第二投入製品決定時には、第一投入製品決定時の履歴情報が用いられる。
【0021】
例えば、
図3(b)のようにパレート解を形成する個体の第一投入製品が決定されたものとする。
図3(b)の例では、個体番号1の個体では、第一投入製品番号が#1に決定されている。個体番号2の個体については、第一投入製品番号が#2に決定されている。個体番号3の個体については、第一投入製品番号が#4に決定されている。個体番号4の個体については、第一投入製品番号が#6に決定されている。これらの情報が、個体番号と投入製品情報とを関連付けた履歴情報として保存されている。
【0022】
次に、第一投入製品決定時の履歴情報を第二投入製品決定時の最適化演算に引き継いで反映させる。本実施例では、第二投入製品決定時の最適化演算に入力変数として個体番号に紐づいた決定投入順番を隠し入力変数として与え、最適化演算時の入力変数として加える。
【0023】
例えば、露わに与えられる入力変数を投入順序とした場合、初期世代のある初期条件として、投入順序を決定する入力変数として(#1、#2、#3、#4、#5、#6)の順で投入するような入力変数が与えられるものとする。さらに、第二製品投入決定時以降は、隠し入力変数として前投入製品決定時のパレート解の個体番号として隠し入力変数が付与される。個体番号を入力変数として用いることで、最適化演算の入力変数が1つ増えることになる。
【0024】
第二投入製品決定時の隠し入力変数(個体番号)が1であった場合、投入順序は第一投入製品決定時の履歴として第一投入製品の番号は#1の製品を投入することが決定している。したがって、露わに示される入力変数で決定される残りの6製品を#1の後に順次投入するものとする。この場合、投入順序を#1、#2、#3、#4、#5、#6、#7の順番とすることで#7の製品を追加する。
【0025】
または、例えば投入順序が#1、#2、#3、#6、#4、#5の順番で、隠し入力変数(個体番号)が4だとする個体を対象とする場合、個体番号4の履歴は#6の製品を第一投入製品としている。そこで、#6以降の製品番号を1増加させて、投入順序を#6、#1、#2、#3、#7、#4、#5の順番とすることで#7の製品を追加する。他の個体(個体番号が2,3)についても、同様に#7の製品が追加されて投入順序が入力変数として決定される。
【0026】
これらの各個体について、ラインシミュレータを用いたシミュレーションが行われる。それにより、各個体について、目的関数を演算することができ、評価関数を得ることができる。本実施例においては、これらを親個体の各評価関数とする。
【0027】
図4は、第二投入製品の投入順序決定時の世代進化方法を模式的に例示する図である。例えば、親1(個体番号:1)および親2(個体番号:4)の2個体から子世代を形成する場合について説明する。親1の投入順序を表す入力変数として、上述したように、#1、#2、#3、#4、#5、#6の投入順序が与えられており、履歴を示す隠し入力変数は1である。親2の投入順序を表す入力変数として、上述したように、#1、#2、#3、#6、#4、#5の投入順序が与えられており、履歴を示す隠し入力変数は4である。
【0028】
この2つの親から子世代を演算する際に、入力変数ごとに次世代を決定する。例えば、#1、#2、#3、#4、#5、#6の順番と、#1、#2、#3、#6、#4、#5の順番との交配によって、投入順序を表す入力変数として、仮に#1、#2、#3、#6、#5、#4の順番が決定されるものとする。
【0029】
次に、隠し入力変数においても同様に決定する際、履歴に残される投入順序履歴で決定するのではなく、個体番号そのものも交配させて子世代の履歴を演算する。具体的には親1および親2の隠し入力変数はそれぞれ1と4であり、その情報から決定される子の個体番号が3であるとする。この場合、個体番号3が持つ履歴を子世代の投入順序とする。実際には個体番号3の第一投入製品投入履歴は#4を投入することとなっていたため、これを第一投入製品として、その後に順序入れ替えされた#1、#2、#3、#6、#5、#4を加える。第一投入製品が#4であることから、#4以降の製品は順序を1増加させて、この子個体の投入順序は#4、#1、#2、#3、#7、#6、#5となる。
【0030】
各子個体について、ラインシミュレータを用いたシミュレーションが行われる。それにより、各子個体について、目的関数を演算することができ、評価関数を得ることができる。本実施例においては、これらを子個体の各評価関数とする。
【0031】
全ての親個体、および全ての子個体の中から、最も良好な評価関数が得られた4つの個体を、パレート解(最適解群)として抽出する。これらの各個体に、個体番号(1~4)を付す。各最適解は、第一投入製品、第二投入製品、といった各製品の投入順序が含まれている。個体番号と、当該個体番号の個体に含まれる第一投入製品、第二投入製品の投入順序を、履歴情報としてデータベースに保存する。このように、世代進化を繰り返すことで、第一投入製品および第二投入製品を決定することができる。
【0032】
図5(a)は、この時の計算結果の概念図を例示する図である。投入履歴を個体番号に紐づけて入力変数として決定したことにより、第一投入製品決定時に選択されなかった製品は第一投入製品に選択されなくなる。一方で、第一投入製品決定時には最適化された投入順序として候補に挙がった投入製品が選ばれなくなることも当然有り得る。
図5(a)のように第二投入製品決定時に第一投入製品決定時に候補となった個体番号3は、他のどの個体より第二製品投入時には最適解とならない場合、履歴候補から削除されていくこととなる。その結果、
図5(b)のように決定投入順序が更新され、個体番号に割り振られた履歴情報が第二投入製品まで増えることとなる。
【0033】
この決定プロセスを全製品の投入順序が決定されるまで処理を繰り返すことで、個体番号に投入履歴が更新されていく。最終的にn番目の投入製品決定時には
図5(c)のような個体番号に紐づいた投入履歴が得られる。これを基に第n番目の投入製品を決定する。このように、隠し入力変数として個体番号によって次世代に履歴情報を引き継いで反映させることで、不要な投入順序は考慮されなくなる。その結果、広く網羅的かつ演算試行回数を少なく最適な投入履歴情報を得ることができるようになる。すなわち、計算時間を短縮化しつつ、最適解の探索空間を広げることで最適解決定精度を向上させることができる。
【0034】
図6は、第n投入製品決定時の演算結果を模式的に例示する図である。
【0035】
図7(a)は、実施例1に係る情報処理装置100の全体構成を表す機能ブロック図である。
図7(a)で例示するように、情報処理装置100は、入力装置10、最適化条件格納部20、最適解抽出部30、初期投入順序格納部40、決定投入順序格納部50、ラインシミュレータ60、生産マスタ70、表示装置80などを備える。入力装置10は、キーボード、マウス、タッチパネルなどの入力装置である。表示装置80は、液晶ディスプレイなどであり、情報処理装置100による作業計画決定処理の結果などを表示する装置である。
【0036】
図7(b)は、情報処理装置100の最適化条件格納部20、最適解抽出部30、初期投入順序格納部40、決定投入順序格納部50、ラインシミュレータ60、生産マスタ70のハードウェア構成を例示するブロック図である。
図7(b)で例示するように、情報処理装置100は、CPU101、RAM102、記憶装置103、インタフェース104等を備える。
【0037】
CPU(Central Processing Unit)101は、中央演算処理装置である。CPU101は、1以上のコアを含む。RAM(Random Access Memory)102は、CPU101が実行するプログラム、CPU101が処理するデータなどを一時的に記憶する揮発性メモリである。記憶装置103は、不揮発性記憶装置である。記憶装置103として、例えば、ROM(Read Only Memory)、フラッシュメモリなどのソリッド・ステート・ドライブ(SSD)、ハードディスクドライブに駆動されるハードディスクなどを用いることができる。記憶装置103は、作業計画決定プログラムを記憶している。インタフェース104は、入力装置10、表示装置80などとの間のインタフェース装置である。CPU101が作業計画決定プログラムを実行することで、最適化条件格納部20、最適解抽出部30、初期投入順序格納部40、ラインシミュレータ60、決定投入順序格納部50、および生産マスタ70が実現される。なお、最適化条件格納部20、最適解抽出部30、初期投入順序格納部40、ラインシミュレータ60、決定投入順序格納部50、および生産マスタ70として、専用の回路などのハードウェアを用いてもよい。
【0038】
図8は、情報処理装置100が実行する作業計画決定処理の一例を表すフローチャートである。以下、
図8のフローチャートに沿って作業計画決定処理について説明する。
【0039】
まず、最適解抽出部30は、最適化条件格納部20から、最適化条件を読み込む(ステップS1)。
図9(a)は、最適化条件を例示するテーブルである。
図9(a)で例示するように、最適化条件には、世代進化数、個体数、製品決定ブロック数などが含まれる。例えば、世代進化数は10とし、個体数は4とし、製品決定ブロック数は6としてある。これらの最適化条件は、例えば、ユーザが入力装置10を用いて事前に入力している。製品決定ブロック数は、投入製品をいくつまで変更して最適解を求めるかの製品数である。
【0040】
次に、最適解抽出部30は、初期投入順序格納部40から初期投入順序を読み込み、ラインシミュレータ60に実行させる(ステップS2)。
図9(b)は、初期投入順序を例示するテーブルである。
図9(b)で例示するように、初期投入順序は、個体数分(4通り)の順序を含む。各順序には、製品決定ブロック数分の製品数が含まれている。
図9(b)の例では、#1、#2、#3、#4、#5、#6の順序、#6、#5、#4、#3、#2、#1の順序、#1、#2、#3、#6、#4、#5の順序、#6、#5、#4、#1、#2、#3の順序が含まれている。これらの順序は、少なくとも一部の順序が重複していなければ、どのような順序であっても構わない。これらの順序は、ユーザが入力装置10を用いて事前に入力しておいてもよく、乱数によって生成してもよい。
【0041】
ラインシミュレータ60は、例えば、
図1で例示した製造ラインモデルについて、シミュレーションを行う。シミュレーションの際に、ラインシミュレータ60は、生産マスタ70が格納している各製品の情報を用いる。生産マスタ70は、例えば、
図2(a)および
図2(b)で例示した製品情報を格納している。製品情報は、ユーザが入力装置10を用いて事前に入力しておいてもよい。最適解抽出部30は、これらのシミュレーション結果(4個体)を親個体とし、目的関数1および目的関数2を演算することで評価関数を得る。
【0042】
次に、最適解抽出部30は、得られた4つの親個体に対して、入力世代進化数だけ進化させる。最適解抽出部30は、各子個体について目的関数1および目的関数2を演算することで評価関数を得る。最適解抽出部30は、全ての親個体および全ての子個体のうち、最も良好な評価関数が得られた最適解を個体数(4個)だけ抽出することで、最適解群(パレート解)を抽出する(ステップS3)。進化には、遺伝的アルゴリズムなどを用いることができる。
【0043】
次に、最適解抽出部30は、パレート解に含まれる各個体に1~4の個体番号を付し、各個体について、第一投入製品および個体番号を、履歴情報として決定投入順序格納部50に格納する(ステップS4)。
図9(c)は、決定投入順序格納部50に格納された決定順序情報を例示するテーブルである。
図9(c)の例では、個体番号1については、第一投入製品番号が#1に決定されている。個体番号2については、第一投入製品番号が#2に決定されている。個体番号3については、第一投入製品番号が#4に決定されている。個体番号4については、第一投入製品番号が#6に決定されている。
【0044】
次に、最適解抽出部30は、最適化演算の入力変数を1個増加させる(ステップS5)。ここでの入力変数とは、個体番号のことである。すなわち、最適解抽出部30は、最適化演算に用いる入力変数に、個体番号を加える。
【0045】
次に、最適解抽出部30は、初期投入順序格納部40から初期投入順序を読み込み、初期投入順序および個体番号を初期入力変数として用いて、ラインシミュレータ60にシミュレーションを実行させる(ステップS6)。この場合、最適解抽出部30は、
図3(a)および
図3(b)で説明したように、個体番号を用いて、次の製品(ステップS6の初回実行時は#7)を含めた投入順序を初期入力変数とする。次の製品は、ステップS6の初回実行時は#7である。また、最適解抽出部30は、ステップS6で得られたシミュレーション結果を親個体とし、各親個体について目的関数1および目的関数2を演算して評価関数を得る。
【0046】
次に、最適解抽出部30は、ステップS6の結果として得られる親個体から子個体に世代進化させて、入力変数を作成する(ステップS7)。ステップS7では、最適解抽出部30は、決定投入順序格納部50から決定順序情報(個体番号および決定投入順序)を読み込み、
図4で説明したように、子個体の作成時に、投入順序に加えて個体番号も交配させて入力変数を作成する。この場合、最適解抽出部30は、個体番号そのものも交配させる。
【0047】
次に、最適解抽出部30は、ステップS7で作成した入力変数を用いて、ラインシミュレータ60にシミュレーションを実行させる(ステップS8)。また、最適解抽出部30は、各シミュレーション結果について、目的関数1および目的関数2を演算することで、評価関数を得る。
【0048】
次に、最適解抽出部30は、最適化条件に含まれる世代進化数分だけ進化が終了したか否かを判定する(ステップS9)。本実施例においては、10世代分の進化が終了したか否かが判定される。
【0049】
ステップS9で「No」と判定された場合、ステップS7から再度実行される。ステップS7の2回目以降の実行時には、次の世代の子個体の入力変数が作成される。それにより、次の世代の子個体についてシミュレーションが行われることになる。ステップS9で「Yes」と判定された場合、最適解抽出部30は、パレート解を抽出する(ステップS10)。この場合、最適解抽出部30は、全ての親個体および全ての子個体から、最も良好な評価関数が得られた最適解を個体数(4個)だけ抽出する。
【0050】
次に、最適解抽出部30は、ステップS10で抽出されたパレート解のそれぞれに個体番号1~4を付し、個体番号と、当該個体番号の個体に含まれる第一投入製品、第二投入製品の投入順序を、履歴情報として決定投入順序格納部50のテーブルに格納する。このようにすることで、既決定順序に新たに決定された投入製品番号が加わり、決定投入順序格納部50のテーブルに決定順序が追加される(ステップS11)。
【0051】
次に、最適解抽出部30は、全製品の順序を決定したか否かを判定する(ステップS12)。ステップS12では、生産マスタ70に格納されている全ての製品について順序が決定されたかが判定される。ステップS12で「No」と判定された場合、ステップS6から再度実行される。ステップS6の2回目実行時には#8の製品が追加され、ステップS6の3回目実行時には#9の製品が追加される。
【0052】
ステップS12で「Yes」と判定された場合、フローチャートの実行が終了する。この場合において、表示装置80は、決定投入順序格納部50に格納された各個体の投入順序を表示する。この場合において、各個体について、各目的関数の値が表示されてもよい。各目的関数の値が表示されることで、ユーザは、どの目的関数を優先させることができるか把握することができる。
【0053】
本実施例によれば、最適解抽出部30が、親個体を世代進化させて最適解を抽出することで製品投入順序を1つ決定する一連の処理を、製品を1つずつ増やしつつ繰り返し実行する際に、抽出した最適解がたどった履歴を個体数分の個体番号のいずれかと紐付け、親個体に個体番号を入力変数として追加し、世代進化の際に個体番号そのものを遺伝的アルゴリズムで交配させることで投入履歴情報を次世代に引き継いでいる。このようにすることで、計算時間を短縮化しつつ、最適解の探索空間を広げることで最適解決定精度を向上させることができる。
【0054】
図10は、本実施例の手法で、第一投入製品のパレート解から第n投入製品のパレート解を算出した場合を例示する図である。
図10において、黒四角形が本実施例の結果を表している。
図10で例示するように、目的関数1および目的関数2の両方に対して、最適解の探索空間が広がっていることがわかる。これに対して、目的関数1を優先した場合の探索結果は、目的関数1の結果が良好になるように探索空間が偏っていることがわかる。また、目的関数2を優先した場合の探索結果は、目的関数2の結果が良好になるように探索空間が偏っていることがわかる。
【0055】
上記実施例において、製造ラインが、複数の対象物が所定順序に従って処理され、前記複数の対象物のそれぞれについて複数の作業が順番に行われ、前記複数の作業のうち少なくとも一部の作業が前記複数の対象物の間で相互に異なる、作業ラインの一例である。製品が対象物の一例である。最適解抽出部30が、前記複数の対象物の一部についての前記作業ラインへの投入順序が入力変数として与えられる規定数分の個体を親個体として、前記親個体から遺伝的アルゴリズムで世代進化させることで子個体を生成する処理と、前記親個体および前記子個体の各投入順序で前記一部の対象物を前記作業ラインに投入する場合のシミュレーション結果について複数の目的関数に応じた評価関数を演算する処理と、前記評価関数が所定の条件を満たす個体を、前記規定数分だけ解として抽出する処理と、を含む一連の処理を実行する解抽出部の一例として機能する。
【0056】
以上、本発明の実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0057】
10 入力装置
20 最適化条件格納部
30 最適解抽出部
40 初期投入順序格納部
50 決定投入順序格納部
60 ラインシミュレータ
70 生産マスタ
80 表示装置
100 情報処理装置