(57)【要約】【課題】限られた計算時間内に木探索を用いて解を算出する。【解決手段】探索木を用いた解探索を行う解探索装置は、中止条件を満たすまで、選択肢に基づいてノードを作成する探索木展開部と、第１評価方法を用いて葉ノードに対する評価値を算出する評価算出部と、下位ノードの評価値に基づいて上位ノードの評価値を逐次更新し、探索の解を決定する探索解決定部と、を含む。【選択図】図１２
2020038478.tif 000002
【特許請求の範囲】
【請求項１】
探索木を用いた解探索を行う解探索装置であって、
中止条件を満たすまで、選択肢に基づいてノードを作成する探索木展開部と、
第１評価方法を用いて葉ノードに対する評価値を算出する評価算出部と、
下位ノードの評価値に基づいて上位ノードの評価値を逐次更新し、探索の解を決定する探索解決定部と、を含む解探索装置。
【請求項２】
請求項１に記載の解探索装置であって、
前記探索解決定部は、前記第１評価方法と異なる第２評価方法を用いて、根ノードの子ノードの評価値を更新し、探索の解を決定する、解探索装置。
【請求項３】
請求項２に記載の解探索装置であって、
前記探索解決定部は、前記根ノードの複数の子ノードの評価値が最高値である場合に、前記第２評価方法を用いて前記複数の子ノードの評価値を更新し、探索の解を決定する、解探索装置。
【請求項４】
請求項１に記載の解探索装置であって、
前記探索木展開部は、
新たなノードがすでに作成されているノードと重複しているかをチェックし、
前記新たなノードが前記すでに作成されているノードの一つと重複している場合、前記新たなノードの作成を省略する、解探索装置。
【請求項５】
請求項４に記載の解探索装置であって、
前記探索木展開部は、
前記新たなノードの特徴量を算出し、前記すでに作成されているノードの特徴量と比較し、
前記新たなノードの特徴量と前記すでに作成されているノードの特徴量のいずれかが同一である場合、前記新たなノードが前記すでに作成されているノードの一つと重複していると判定する、解探索装置。
【請求項６】
請求項２に記載の解探索装置であって、
前記第１評価方法は、制約条件が規定する第１段階の状態を評価し、
前記第２評価方法は、前記第１段階より前の段階の状態を評価する、解探索装置。
【請求項７】
最適化探査システムであって、
制御対象を制御する制御装置と、
前記制御装置から前記制御対象の局面情報を取得し、前記局面情報に基づき前記探索木を用いた解探索を行う請求項１に記載の解探索装置と、を含む解探索システム。
【請求項８】
１以上の記憶装置と、前記１以上の記憶装置に格納されるプログラムに従って動作する１以上のプロセッサと、を含む計算機システムが実行する、探索木を用いた解探索方法であって、
前記プロセッサが、中止条件を満たすまで、選択肢に基づいてノードを作成し、
前記プロセッサが、第１評価方法を用いて葉ノードに対する評価値を算出し、
前記プロセッサが、下位ノードの評価値に基づいて上位ノードの評価値を逐次更新し、探索の解を決定する、解探索方法。
【請求項９】
請求項８に記載の解探索方法であって、
前記プロセッサが、前記第１評価方法と異なる第２評価方法を用いて、根ノードの子ノードの評価値を更新し、探索の解を決定する、解探索方法。
【請求項１０】
請求項９に記載の解探索方法であって、
前記プロセッサが、前記根ノードの複数の子ノードの評価値が最高値である場合に、前記第２評価方法を用いて前記複数の子ノードの評価値を更新し、探索の解を決定する、解探索方法。
【請求項１１】
請求項８に記載の解探索方法であって、
前記プロセッサが、新たなノードがすでに作成されているノードと重複しているかをチェックし、
前記プロセッサが、前記新たなノードが前記すでに作成されているノードの一つと重複している場合、前記新たなノードの作成を省略する、解探索方法。
【請求項１２】
請求項１１に記載の解探索方法であって、
前記プロセッサが、前記新たなノードの特徴量を算出し、前記すでに作成されているノードの特徴量と比較し、
前記プロセッサが、前記新たなノードの特徴量と前記すでに作成されているノードの特徴量のいずれかが同一である場合、前記新たなノードが前記すでに作成されているノードの一つと重複していると判定する、解探索方法。
【請求項１３】
請求項９に記載の解探索方法であって、
前記第１評価方法は、制約条件が規定する第１段階の状態を評価し、
前記第２評価方法は、前記第１段階より前の段階の状態を評価する、解探索方法。
【請求項１４】
計算機に探索木を用いた解探索を実行させるプログラムであって、前記計算機に、
中止条件を満たすまで、選択肢に基づいてノードを作成し、
第１評価方法を用いて葉ノードに対する評価値を算出し、
下位ノードの評価値に基づいて上位ノードの評価値を逐次更新し、探索の解を決定する、ことを実行させるプログラム。
【請求項１５】
請求項１４に記載のプログラムであって、前記計算機に、
前記第１評価方法と異なる第２評価方法を用いて、根ノードの子ノードの評価値を更新し、探索の解を決定する、ことを実行させるプログラム。
【請求項１６】
請求項１５に記載のプログラムであって、前記計算機に、
前記根ノードの複数の子ノードの評価値が最高値である場合に、前記第２評価方法を用いて前記複数の子ノードの評価値を更新し、探索の解を決定する、ことを実行させるプログラム。
【請求項１７】
請求項１４に記載のプログラムであって、前記計算機に、
新たなノードがすでに作成されているノードと重複しているかをチェックし、
前記新たなノードが前記すでに作成されているノードの一つと重複している場合、前記新たなノードの作成を省略する、ことを実行させるプログラム。
【請求項１８】
請求項１７に記載のプログラムであって、前記計算機に
前記新たなノードの特徴量を算出し、前記すでに作成されているノードの特徴量と比較し、
前記新たなノードの特徴量と前記すでに作成されているノードの特徴量のいずれかが同一である場合、前記新たなノードが前記すでに作成されているノードの一つと重複していると判定する、ことを実行させるプログラム。
【請求項１９】
請求項１５に記載のプログラムであって、
前記第１評価方法は、制約条件が規定する第１段階の状態を評価し、
前記第２評価方法は、前記第１段階より前の段階の状態を評価する、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、木探索を用いた解探索に関する。
【背景技術】
【０００２】
最適化問題は、設定された制約条件を満たしつつ、一つまたは複数の目的関数が最善となる最適解の一つを導きだす問題である。人工知能の研究分野では、深層学習が代表する機械学習を用いる方式が主流である一方、業務現場では制約条件や目的関数が頻繁に変更されるため、機械学習のためのデータ蓄積が困難であり、または変更するたび機械学習が完了までリードタイムが発生する課題が存在するため、シミュレーションを用いた木探索最適化計算が実用化されている。
【０００３】
業務現場の課題を解ける最適化計算では、一般的に、最適化問題の解空間を表す探索木の幅（木の内部ノードが持つ子ノードの数）が大きいと同時に、解を取得する時間に制限が存在する。そのため、膨大な計算時間を費やして論理的な最適解を解けることではなく、指定された計算時間内に算出する解の精度を向上させることが重要である。
【０００４】
限られた計算時間内に算出する解の精度を向上させる技術として、木探索の途中で特定のノードを探索木から切り離す枝刈がある。特許文献１には、ノードからシミュレーションを実行し、その結果をもとに評価関数を用いて評価値を算出し、予め定められた基準を満たさない評価値を持つノードを探索木から切り離す枝刈部を含む解探索装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１４／１１５２３２号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に開示されている解探索技術では、枝刈りの精度が解の精度に影響するため、精度の高い枝刈用の評価関数を作成する必要がある。そのため、公知の技術では、高精度の評価関数を作成することが困難、または、高精度の評価関数は多くの場合複雑な計算が必要であり計算時間がかかるため、限られた計算時間内で探索できる解空間の範囲が狭くなる。
【０００７】
本発明は、上記の点を鑑みてなされたものであり、限られた計算時間内に木探索を用いて解を算出することを目的とする。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下の通りである。
【０００９】
探索木を用いた解探索を行う解探索装置は、中止条件を満たすまで、選択肢に基づいてノードを作成する探索木展開部と、第１評価方法を用いて葉ノードに対する評価値を算出する評価算出部と、下位ノードの評価値に基づいて上位ノードの評価値を逐次更新し、探索の解を決定する探索解決定部と、を含む。
【００１０】
または、最適化探査システムは、制御対象を制御する制御装置と、前記制御装置から前記制御対象の局面情報を取得し、前記局面情報に基づき前記探索木を用いた解探索を行う上記解探索装置と、を含む。
【００１１】
または、１以上の記憶装置と、前記１以上の記憶装置に格納されるプログラムに従って動作する１以上のプロセッサと、を含む計算機システムが実行する、探索木を用いた解探索方法は、前記プロセッサが、中止条件を満たすまで、選択肢に基づいてノードを作成し、前記プロセッサが、第１評価方法を用いて葉ノードに対する評価値を算出し、前記プロセッサが、下位ノードの評価値に基づいて上位ノードの評価値を逐次更新し、探索の解を決定する、ことを含む。
【００１２】
または、計算機に探索木を用いた解探索を実行させるプログラムは、前記計算機に、中止条件を満たすまで、選択肢に基づいてノードを作成し、前記プロセッサが、第１評価方法を用いて葉ノードに対する評価値を算出し、前記プロセッサが、下位ノードの評価値に基づいて上位ノードの評価値を逐次更新し、探索の解を決定する、ことを実行させる。
【発明の効果】
【００１３】
本発明によれば、限られた計算時間内に木探索を用いて解を算出することができる。
【００１４】
前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１５】
【図１】実施例におけるシステム構成例である。
【図２】実施例における解探索装置の構成例である。
【図３】実施例における解探索装置のノード評価情報テーブルの例である。
【図４】実施例における解探索装置の探索解評価情報テーブルの例である。
【図５】実施例における解探索装置の構成情報テーブルの例である。
【図６】実施例における解探索装置の局面情報テーブルの例である。
【図７】実施例における解探索装置の探索情報テーブルの例である。
【図８】実施例における解探索装置の最適化計算時に展開する探索木のイメージの例である。
【図９】実施例における解探索装置の特徴量情報テーブルの例である。
【図１０】実施例における解探索装置の探索木展開プログラムの処理フローの例である。
【図１１】実施例における解探索装置の評価算出プログラムの処理フローの例である。
【図１２】実施例における解探索装置の探索解決定プログラムの処理フローの例である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施例を、図面を用いて説明する。なお、以下の実施例においては便宜上その必要があるときは、複数のセクションまたは実施例に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明などの関係にある。
【００１７】
また、以下の実施例において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合及び原理的に明らかに特定の数に限定される場合などを除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。さらに、以下の実施例において、その構成要素（要素ステップなどを含む）は、特に明示した場合及び原理的に明らかに必須であると考えられる場合などを除き、必ずしも必須のものではない。
【００１８】
（投入順序最適化探査システム）
本実施例では、解探索装置と、操作装置と、制御装置とを含む投入順序最適化探査システムにおいて、解探索装置が、制御装置から取得した局面情報に基づいて、探索木を用いた解探索を行い、操作装置から入力した制約条件を満たす個体投入順序を決定し、制御装置に最適化された制御指令を提示する。解探索装置は、中止条件を満たすまで、選択肢に基づいてノードを作成する探索木を展開し、第１評価方法（第１評価関数）を用いて葉ノードに対する評価値を算出し、下位ノードの評価値に基づいて上位ノードの評価値を逐次更新し、探索の解を決定する探索解を決定する。
【００１９】
また、解探索装置は、探索解を決定する過程において、根ノードの複数の子ノードの評価値が最高値である場合に、第１評価方法と異なる第２評価方法（第２評価関数）を用いて複数の子ノードの評価値を更新し、探索の解を決定する。さらに、解探索装置は、探索木を展開する過程において、新たなノードを作成する時、その新たなノードの特徴量を計算し、すでに作成したノードの特徴量と比較し、同じ特徴量が存在する場合、ノードが重複していると判定して、その新たなノードを作成しない。
【００２０】
本実施例のシステム構成は、図１に示すように、解探索装置１０１と、操作装置１０２と、通信路１０３と、制御装置１０４と、制御対象である個体投入装置１１０と、から構成される。図１に示す個体投入装置の例は、入口ライン１０５と、入口搬送装置１０６と、作業ライン１０７と、出口搬送装置１０８と、出口ライン１０９とを含む。個体投入装置１１０内の丸（○）は、個体を示す。個体が個体投入装置１１０を通過することにより、それらの出口ライン１０９の先の投入順序や時間間隔などが調整される。
【００２１】
図１では、入口ライン１０５と出口ライン１０９がそれぞれ一つ存在する個体投入装置の例を示すが、いずれかまたはその両方が複数存在することも可能である。また、図１では、一つの作業ライン１０７が複数本の直線ラインから構成された例を示すが、作業ライン１０７が一本の環状ライン、または一本若しくは複数本のラインから構成されることも可能である。
【００２２】
ラインは、コンベアにより一連化した個体の作業装置や移動装置でもよいし、作業員によりまたは自動的に個体の作業や移動を行う作業区域でも構わない。このような個体投入装置１１０は、製造業務の現場において、例えば生産制約が異なる工程と工程の間における仕掛品の順序の調整に活用されている。また、個体投入装置１１０は、物流業務の現場において、例えば搬送ロボットにより個体を搬送する自動倉庫の入庫と出庫に活用されている。
【００２３】
解探索装置１０１は、制御装置１０４から取得した局面情報（すなわち個体投入装置１１０内の個体の位置情報）に基づいて、操作装置１０２から入力された制約条件に応じた個体投入順序を決定するために最適化された制御指令を、制御装置１０４に与える。操作装置１０２は、最適化計算に必要な制約条件及び構成情報を含むパラメータを解探索装置１０１に入力する。
【００２４】
通信路１０３は、解探索装置１０１と、操作装置１０２と、制御装置１０４との間で、リアルタイムの情報のやり取りを可能とする通信装置の集合である。通信路１０３は、一つの拠点内に閉じるＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）でもよいし、複数の拠点や地域をつなげるＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）でも構わない。
【００２５】
制御装置１０４は、個体投入装置１１０から、個体及び個体投入装置１１０の状態を示す状態信号を取得する。制御装置１０４は、状態信号に基づいて、局面情報と、入口搬送装置１０６及び出口搬送装置１０８の稼働情報と、を作成する。稼働情報は、動作状態及び指示待ち状態を含む複数の稼働状態のいずれかを示す。制御装置１０４は、入口搬送装置１０６と出口搬送装置１０８とのいずれかが指示待ちの状態であると判定した場合、局面情報を解探索装置１０１に送信する。制御装置１０４は、解探索装置１０１から最適化された制御指令を受信し、対応する指令信号を入口搬送装置１０６と出口搬送装置１０８とに送信する。
【００２６】
図２に本実施例の解探索装置１０１の構成例を示す。本実施例における解探索装置１０１の機能は、一般的なコンピュータの外部記憶装置２０５にプログラムソフトウェアの形で格納され、メモリ２０１上に展開されてプロセッサであるＣＰＵ２０２により実行される。外部記憶装置２０５、メモリ２０１及びそれらの組み合わせは記憶装置であり、ソフトウェアを格納する記憶媒体を含む。また、解探索装置１０１は入出力インターフェース２０３、通信インターフェース２０４、またはその両方を介して通信路１０３と接続する。
【００２７】
解探索装置１０１のメモリ２０１は、操作装置１０２から設定パラメータを受信するパラメータ設定プログラム２１１と、操作装置１０２または制御装置１０４から構成情報を受信する構成情報入力プログラム２１２と、を格納する。メモリ２０１は、さらに、制御装置１０４から探索要求を受信し最適化探索を行う探索要求受信プログラム２１３と、中止条件を満たすまで選択肢に基づいてノードを作成する探索木展開プログラム２１４と、を格納する。
【００２８】
メモリ２０１は、さらに、予め定められた評価関数（評価方法）を用いて葉ノードに対する評価値を算出する評価算出プログラム２１５と、予め定められた条件（方法）で上位ノードの評価値を逐次更新し、さらに、予め定められた探索解決定関数（探索解決定方法）を用いて根ノードの子ノードから探索の解を決定する探索解決定プログラム２１６とを格納する。
【００２９】
解探索装置１０１のメモリ２０１は、さらに、葉ノードに対する評価関数（評価方法）のパラメータを格納するノード評価情報テーブル２２１と、根ノードの子ノードに対する探索解決定関数（探索解決定方法）のパラメータを格納する探索解評価情報テーブル２２２を格納する。ノード評価情報テーブル２２１は、探索解を決定するための制約条件を示し、探索解評価情報テーブル２２２は、探索解を決定するための調整条件（調整パラメータ）を示す。
【００３０】
メモリ２０１は、さらに、制御対象である個体投入装置１１０の構成情報を格納する構成情報テーブル２２３と、制御対象である個体投入装置１１０の局面情報を格納する局面情報テーブル２２４とを格納する。さらに、メモリ２０１は、木探索の情報を格納する探索情報テーブル２２５と、探索木のノードの特徴量を格納する特徴量情報テーブル２２６とを格納する。
【００３１】
なお、本実施例の解探索装置１０１では上記プログラム及び上記情報を単一のコンピュータのメモリ上に格納する構成を示す。しかし、上記情報を外部記憶装置に格納し、上記プログラムの処理のつど上記情報を上記外部記憶装置から読み込み、それぞれの処理が完了するごとに外部記憶装置に格納する構成を取ることも可能である。
【００３２】
また、上記プログラム及び上記情報を複数のコンピュータに分散して格納することも可能である。例えば上記情報をそれぞれデータベースのテーブルとして実装して解探索装置１０１とは異なるデータベースサーバに格納し、解探索装置１０１上で実行された上記プログラムがデータベースサーバ上の上記情報を参照及び更新することも可能である。以上のような上記情報の格納方法の違いは、本発明の本質には影響を与えない。
【００３３】
図３は、解探索装置１０１が保持するノード評価情報テーブル２２１の例である。ノード評価情報テーブル２２１は、ノードを評価するための情報（ノード評価情報）を格納している。具体的には、ノード評価情報テーブル２２１は、ノードの評価関数（評価方法）のパラメータ格納し、スペック情報３０１、最小間隔３０２、及び重み３０３を有する。
【００３４】
スペック情報３０１は、個体のスペック（個体間で共通する属性を表す識別子であり、機種や型番やモデルとも呼ばれる）を示す。最小間隔３０２は、特定スペックを持つ個体の投入に要求される最小間隔を示す。重み３０３は、レコード（エントリ又は行）の重みを示す。図３は、最小間隔３０２が、特定スペックを持つ個体間の個体数で表わされる例を示す。その他、最小間隔３０２を時間や空間の長さで表すことも可能である。
【００３５】
図４は、解探索装置１０１が保持する探索解評価情報テーブル２２２の例である。探索解評価情報テーブル２２２は、制約条件（ノード評価情報テーブル２２１が示す）に対する探索解を評価するための情報（探索解評価情報）を格納している。具体的には、探索解評価情報テーブル２２２は、探索解決定関数（探索解決定方法）のパラメータ格納し、隣接する個体ペアの先行する個体のスペックを示す先行スペック４０１と、後続の個体のスペックを示す後続スペック４０２と、隣接した個体ペアのスコアを示すスコア４０３とを有する。
【００３６】
図５は、解探索装置１０１が保持する構成情報テーブル２２３の例である。構成情報テーブル２２３は、構成情報テーブル２２３は、制御対象である個体投入装置１１０の構成を示す。構成情報テーブル２２３は、制御対象である個体投入装置１１０を構成するラインの識別子を示すラインＩＤ５０１と、ラインの種別を示すライン種別５０２と、ラインの長さを示すライン長さ５０３とからなる。
【００３７】
図５は、ライン種別５０２に入口ラインと、作業ラインと、出口ラインとの３種類のラインが存在する例を示すが、その他の種別のラインが存在することも可能である。また、図５は、ラインの中に存在する個体の数の最大値をライン長さ５０３として扱う例を示す。その他、ライン長さ５０３がラインの物理空間におけるサイズであることも可能である。
【００３８】
図６は、解探索装置１０１が保持する局面情報テーブル２２４の例である。局面情報は、個体投入装置１１０に存在する個体の識別子を示す個体ＩＤ６０１と、その個体のスペックを示すスペック情報６０２と、個体が存在するラインの識別子を示すラインＩＤ６０３と、個体がラインに存在する位置を示すライン内の位置６０４とからなる。図６は、ラインにおいて個体が存在しえる場所が固定されて、ライン内の位置６０４がその場所の番号である例を示す。その他、ライン内の位置６０４が、個体が存在する位置の物理座標であることも可能である。
【００３９】
図７は、解探索装置１０１が保持する探索情報テーブル２２５の例である。探索情報テーブル２２５は、ノードＩＤ７０１と、親ノードＩＤ７０２と、局面情報７０３と、深度７０４と、最適動作７０５と、評価値７０６とを有する。ノードＩＤ７０１は、探索木のノードの識別子を示す。親ノードＩＤ７０２は、ノードの探索木における親ノードの識別子を示す。局面情報７０３は、個体投入装置１１０のシミュレーションで生成したノードの局面情報を示す。
【００４０】
深度７０４は、該当ノードから探索木における根ノードまでのエッジ数を示す。最適動作７０５は、子ノードの局面から選択する最適動作を示す。評価値７０６は、ノードの評価値を示す。局面情報７０３は、局面情報テーブル２２４が格納する情報と同種の情報（６０１〜６０４）を格納する。図７は、最適動作７０５が入口搬送装置１０６の搬送先のラインＩＤと出口搬送装置１０８の搬送元のラインＩＤの組合せの例を示す。その他、最適動作７０５が制御対象の動作時刻、制御対象に対する制御信号、またはその両方も可能である。
【００４１】
図８は、探索情報テーブル２２５が保持する探索情報の探索木のイメージを示す。図８は、根ノード８０１と、複数の中間ノード８０２と、複数の葉ノード８０３で構成されている。図８において、複数の中間ノードのうち一つの中間ノードが符号８０２で指示されており、複数の葉ノードのうち一つの葉ノードが符号８０３で指示されている。また、根ノード８０１、一部の中間ノード８０２及び一部の葉ノード８０３のノードＩＤ７０１が、例として、示されている。
【００４２】
探索木のノードは、個体投入装置１１０の局面（状態）を示す。根ノードは、個体投入装置１１０の最新（現在）の局面を示す。探索木のエッジは、親ノードの局面において実行される動作を示す。子ノードは、親ノードの局面においてエッジが示す動作が実行された結果の局面を示す。
【００４３】
図９は、解探索装置１０１が保持する特徴量情報テーブル２２６の例である。特徴量情報テーブル２２６は、局面情報の数値化結果を示す特徴量９０１と、その特徴量が対応するノードの識別子を示すノードＩＤ９０２とを有する。
【００４４】
解探索装置１０１が実行するパラメータ設定プログラム２１１は、入出力インターフェース２０３、通信インターフェース２０４、またはその両方を介して、操作装置１０２と情報のやり取りを行い、解探索に必要なパラメータ情報を取得する。そして、パラメータ設定プログラム２１１は、取得したパラメータ情報をノード評価情報テーブル２２１と探索解評価情報テーブル２２２とにそれぞれ格納する。
【００４５】
解探索装置１０１が実行する構成情報入力プログラム２１２は、入出力インターフェース２０３、通信インターフェース２０４、またはその両方を介して、操作装置１０２または制御装置１０４と情報のやり取りを行い、制御対象である個体投入装置１１０情報を取得する。そして、構成情報入力プログラム２１２は、取得した構成情報を構成情報テーブル２２３に格納する。
【００４６】
解探索装置１０１が実行する探索要求受信プログラム２１３は、入出力インターフェース２０３、通信インターフェース２０４、またはその両方を介して、制御装置１０４と情報のやり取りを行い、制御対象である個体投入装置１１０の最新の局面情報を含む最適解探索要求を受信する。
【００４７】
探索要求受信プログラム２１３は、受信した局面情報を局面情報テーブル２２４に格納した上、空白の探索情報テーブル２２５に根ノードのレコードを作成する。探索要求受信プログラム２１３は、順番に探索木展開プログラム２１４と、評価算出プログラム２１５と、探索解決定プログラム２１６とを動作させ、制約条件を満たす個体投入順序を決定するために最適化された制御指令を算出する。さらに、探索要求受信プログラム２１３は、入出力インターフェース２０３、通信インターフェース２０４、またはその両方を介して、制御装置１０４と情報のやり取りを行い、最適化された制御指令を送信する。
【００４８】
図１０に、解探索装置１０１が実行する探索木展開プログラム２１４の具体的な処理フローの例を示す。ステップ１００１において、解探索装置１０１は、探索要求受信プログラム２１３が制御装置１０４から最適解探索要求を受信することをトリガに、探索木展開プログラム２１４を動作させる。ステップ１００２において、解探索装置１０１は、探索情報テーブル２２５から順番に一つの未展開ノードのレコードを抽出する。
【００４９】
次に、ステップ１００３において、解探索装置１０１は、抽出したレコードの深度７０４が予め決まめられた最大深度（中止条件）に達したかどうかを判定する。なお、展開の中止条件は、予め決められた規定の数値に代えて、出口ライン１０９の個体数に応じて決定されてもよい。
【００５０】
最大深度に達した場合（１００３：Ｙ）、解探索装置１０１は、該当レコードの展開を完了し、ステップ１０１０に進む。最大深度に達していない場合（１００３：Ｎ）、解探索装置１０１は、ステップ１００４に進み、構成情報テーブル２２３を参照して入口搬送装置１０６の可能な動作を一つ選定する。ステップ１００５において、解探索装置１０１は、出口搬送装置１０８の可能な動作を一つ選定する。構成情報テーブル２２３は、入口搬送装置１０６及び出口搬送装置１０８の可能な動作を示す。
【００５１】
次に、ステップ１００６において、解探索装置１０１は、選定された入口搬送装置１０６と出口搬送装置１０８の動作により形成される個体投入装置１１０の新たな局面をシミュレーションし、その局面の特徴量を計算する。解探索装置１０１は、計算結果の特徴量が特徴量情報テーブル２２６に存在するかどうかを判定する。局面の特徴量の計算方法の一例として、シミュレーションで得られた局面情報のデータをハッシュ関数を使って計算する方法がある。公知のハッシュ関数の例は、ＭＤ５やＦＮＶ−１ａなどがある。
【００５２】
計算結果の特徴量が特徴量情報テーブル２２６に存在する場合（１００６：Ｙ）、すでに計算した局面と同じ局面にたどり着いたことを意味するため、解探索装置１０１はステップ１００８に進む。特徴量が存在しない場合（１００６：Ｎ）、解探索装置１０１はステップ１００７に進み、シミュレーションで得られた局面情報に基づいて、探索情報テーブル２２５に新たなノード情報（レコード）を作成する。
【００５３】
作成されたノード情報において、ノードＩＤ７０１は新規の識別子、親ノードＩＤ７０２はステップ１００２において抽出したレコードのノードＩＤ７０１である。局面情報７０３はシミュレーションで得られた局面情報、深度７０４は抽出したレコードの深度７０４に１を足したもの、その他の項目は空欄である。解探索装置１０１は、さらに、ノード情報を作成後、特徴量情報テーブル２２６に、計算結果の特徴量と作成されたノード情報のノードＩＤ７０１とを格納する。
【００５４】
ステップ１００８において、解探索装置１０１は、出口搬送装置１０８の可能な動作を全て選定されたかどうかを判定する。完了していない場合（１００８：Ｎ）、解探索装置１０１は、ステップ１００５に戻り、次の可能な動作を選定する。完了した場合（１００８：Ｙ）、解探索装置１０１は、ステップ１００９に進み、入口搬送装置１０６の可能な動作を全て選定されたかどうかを判定する。
【００５５】
完了していない場合（１００９：Ｎ）、解探索装置１０１は、ステップ１００４に戻り、次の可能な動作を選定する。完了した場合（１００９：Ｙ）、解探索装置１０１は、ステップ１０１０に進み、該当レコードの展開を完了し、探索情報テーブル２２５にすべてのノードの探索木展開が完了したかどうかを判定する。
【００５６】
完了していない場合（１０１０：Ｎ）、解探索装置１０１は、ステップ１００２に戻り、次の未展開のノードを抽出する。完了した場合（１０１０：Ｙ）、解探索装置１０１は、ステップ１０１１に進み、探索木展開プログラム２１４を終了し、評価算出プログラム２１５を動作させる。
【００５７】
図１１に、解探索装置１０１が実行する評価算出プログラム２１５の具体的な処理フローの例を示す。ステップ１１０１において、解探索装置１０１は、探索木展開プログラム２１４の終了をトリガに、評価算出プログラム２１５を動作させる。ステップ１１０２において、解探索装置１０１は、探索情報テーブル２２５から未評価の葉ノードのレコードを順番に一つ抽出する。
【００５８】
次に、ステップ１１０３において、解探索装置１０１は、抽出したレコードの評価値７０６を初期化し、０にする。そして、ステップ１１０４において、解探索装置１０１は、レコードの局面情報７０３に基づいて、出口ライン１０９（局面情報７０３におけるラインＩＤが「ＬＥ」）にある個体を搬送順序における前から順番に一つ抽出する。さらに、ステップ１１０５において、解探索装置１０１は、ノード評価情報テーブル２２１から、抽出した個体のスペック情報に対応するレコードを抽出する。
【００５９】
ステップ１１０６において、解探索装置１０１は、抽出された個体と同じスペックを持ち搬送順序における前の個体からの間隔が、最小間隔３０２以上かどうかを判定する。間隔が最小間隔３０２以上の場合（１１０６：Ｙ）、解探索装置１０１は、ステップ１１０７に進み、葉ノードのレコードの評価値７０６に、ノード評価情報テーブル２２１において対応する重みを足す。間隔が最小間隔３０２未満の場合（１１０６：Ｎ）、解探索装置１０１は、ステップ１１０８に進む。
【００６０】
ステップ１１０８において、解探索装置１０１は、出口ライン１０９にある全ての個体に対する評価が完了したかどうかを判定する。完了していない場合（１１０８：Ｎ）、解探索装置１０１は、ステップ１１０４に戻り、次の個体を抽出する。完了した場合（１１０８：Ｙ）、解探索装置はステップ１１０９に進む。このように、解探索装置１０１は、出口ライン１０９における状態をノード評価情報テーブル２２１に基づき評価する。
【００６１】
ステップ１１０８までの計算を、葉ノードの局面において、出口ラインにある個体が、（Ａ００１−０１１、Ａ００３−１２３、Ａ００１−０１２、…）の順で並んでいる場合の計算例で説明する。まずは個体「Ａ００１−０１１」が抽出され、それに対応するノード評価情報（Ａ００１、３、５）が抽出される。個体「Ａ００１−０１１」が先頭の個体であるため、前にスペックＡ００１の個体が存在せず、間隔が最小間隔である３以上であるため、評価値が５になる。
【００６２】
同様に、「Ａ００３−１２３」に対する評価の結果、評価値に１が足されて、６になる。次に、個体「Ａ００１−０１２」が抽出されるが、その前に同様にスペックＡ００１の個体「Ａ００１−０１１」との間隔が１であり、最小間隔３を満たしていないため、評価値に５が足されず、６のままになる。このように、出口ラインにある最後の個体まで、計算が行われる。
【００６３】
ステップ１１０９において、解探索装置１０１は、全ての葉ノードのレコードに対して、評価完了したかどうかを判定する。完了していない場合（１１０９：Ｎ）、解探索装置１０１は、ステップ１１０２に戻り、次の葉ノードのレコードを抽出する。完了した場合（１１０９：Ｙ）、解探索装置１０１は、ステップ１１１０に進み、評価算出プログラム２１５を終了し、探索解決定プログラム２１６を動作させる。
【００６４】
図１２に、解探索装置１０１が実行する探索解決定プログラム２１６の具体的な処理フローの例を示す。ステップ１２０１において、解探索装置１０１は、評価算出プログラム２１５の終了をトリガに、探索解決定プログラム２１６を動作させる。ステップ１２０２において、解探索装置１０１は、探索情報テーブル２２５から、評価値７０６が確定している評価済みのノードのレコードを一つ抽出する。最初に選択されるノードは葉ノードである。
【００６５】
次に、ステップ１２０３において、解探索装置１０１は、抽出したノードの評価値７０６と、そのノードの親ノードの評価値７０６と比較し、抽出したノードの評価値が親ノードのより大きいかどうかを判定する。解探索装置１０１は、親ノードを初めて選択する場合、そのノード評価値７０６を初期化して、０にした後、抽出したノードの評価値７０６と比較する。
【００６６】
抽出したノードの評価値７０６が親ノードの評価値７０６以下である場合（１２０３：Ｎ）、解探索装置１０１は、ステップ１２０５に進む。抽出したノード（子ノード）の評価値７０６が親ノードの評価値７０６より大きい場合（１２０３：Ｙ）、解探索装置１０１は、ステップ１２０４に進み、親ノードのレコードの評価値７０６を抽出したノードの評価値７０６に更新し、親ノードのレコードの最適動作７０５を、抽出したノードの局面になる動作に更新する。
【００６７】
次に、ステップ１２０５において、解探索装置１０１は、全ての評価済みノードの処理が完了したかどうかを判定する。完了していない場合（１２０５：Ｎ）、解探索装置１０１は、ステップ１２０２に戻り、次のノードを抽出する。完了した場合（１２０５：Ｙ）、解探索装置１０１は、ステップ１２０６に進み、根ノードの子ノードのレコードを全て抽出し、その評価値７０６を集計する。
【００６８】
ステップ１２０７において、解探索装置１０１は、評価値の集計結果において、最高評価値になる子ノードが複数存在するかどうか判定する。複数存在しない場合（１２０７：Ｎ）、解探索装置１０１は、ステップ１２１１に進む。複数存在する場合（１２０７：Ｙ）、解探索装置１０１は、ステップ１２０８に進み、評価値７０６が最高評価値の子ノードのレコードを一つ抽出する。
【００６９】
次に、ステップ１２０９において、解探索装置１０１は、探索解評価情報テーブル２２２の情報を用いて、抽出した（子ノードの）レコードの評価値を更新する。更新方法の一例は、抽出したレコードの局面情報７０３から、作業ライン１０７で隣接する個体のペアを一つずつ抽出し、探索解評価情報テーブル２２２に基づいて、評価値７０６に抽出した個体のペアのスコア４０３を加算する。
【００７０】
このように、解探索装置１０１は、探索解評価情報テーブル２２２に基づいて作業ライン１０７の状態を評価する。作業ライン１０７は、出口ライン１０９より前の段階（搬送における工程）である。探索解評価情報テーブル２２２は、出口ライン１０９に対する制約条件の観点からより好ましい状態に対してより高い評価を与える。
【００７１】
さらに、ステップ１２１０において、解探索装置１０１は、全ての最高評価値を持つ子ノードの処理が完了したかどうかを判定する。完了していない場合（１２１０：Ｎ）、解探索装置１０１は、ステップ１２０８に戻り、次の最高評価値を持つ子ノードを抽出する。完了した場合（１２１０：Ｙ）、解探索装置１０１は、ステップ１２１１に進み、更新された子ノードの評価値を再度集計し、根ノードの最適動作７０５を更新された最高評価値の子ノードの局面になる動作に更新する。最後に、解探索装置１０１は、根ノードの最適動作７０５を決定された最適解と決定し、ステップ１２１２に進み探索解決定プログラム２１６を終了する。
【００７２】
このように、本実施例では、解探索装置１０１と、操作装置１０２と、制御装置１０４とを含む投入順序最適化探査システムにおいて、解探索装置１０１が、制御装置１０４から取得した局面情報に基づいて、探索木を用いた解探索を行い、操作装置１０２から入力された制約条件（ノード評価情報テーブル２２１に示される）を満たす個体投入順序を決定し、制御装置１０４に最適化された制御指令を与える。
【００７３】
図１１及び１２を参照して説明したように、解探索装置１０１は、中止条件を満たすまで、選択肢に基づいて探索木を展開してノードを作成し、所定の評価方法（ノード評価情報テーブル２２１がそのパラメータを示す）を用いて葉ノードに対する評価値を算出し、上位ノードの評価値を逐次更新し、探索の解を決定する。これにより、限られた計算時間内に木探索を用いて解を算出することができる。探索木の展開と解の探索とが分離されているため、制御対象に応じて容易に設計変更が可能である。
【００７４】
実施例の最適化計算は、探索木の葉ノードの評価関数（ノード評価情報、図３）のほか、根ノードの子ノードに対して別の評価値（探索解評価情報、図４）も加味して、探索解を決定する。これにより、直観かつ計算複雑度の低い評価関数（評価方法）を使っても、限られた計算時間内に算出する解の精度を向上させることが可能となる。また、同一最高値を有する子ノードを選択して評価値を調整することで、解の特定の処理時間を短縮しつつ適切な解を選択できる。
【００７５】
また、探索木を展開する過程において、新たなノードを作成する時、新たなノードがすでに作成されているノードと重複しているかをチェックし、新たなノードがすでに作成されているノードと重複している場合、新たなノードの作成を省略する。これにより、探索木の規模が削減され、限られた計算時間内に算出する解の精度向上につながる。さらに、新しいノードの特徴量を作成し、今まで作成したノードの特徴量と比較し、同じ特徴量が存在する場合、ノードが重複していると判定する。これにより、重複チェックに要する処理時間を低減できる。
【００７６】
なお、探索解評価情報を使用した解探索は省略してもよい。例えば、同一最高値の複数の子ノードが存在する場合、予め決められた方法で一つの子ノードを同一最高値の複数の子ノードから選択することができる。また、解探索装置は、上記例と異なる方法により、評価値を調整（更新）する根ノードの子ノードを選択してもよい。たとえば、根ノードの全ての子ノードの評価値を調整して、最も高い評価値の子ノードを選択してもよく、評価値が上位の予め定められた数の子ノードを選択してもよい。
【００７７】
上記実施例では、評価関数（ノード評価情報、図３）は同一スペックでの最小間隔の例、別の評価値（探索解評価情報、図４）が隣接する個体のペアのスペックの例を示したが、両方とも評価情報テーブルであることも可能であり、また、両方とも他の評価手段（例えば、指定した数学関数、または、指定したプログラムコード）とすることができる。また、両方とも同一スペックでの最小間隔又は隣接する個体のペアのスペックを示してもよい。
【００７８】
本実施形態の探索木を用いた解探索は、上記投入順序最適化探査と異なる解探索に適用することができる。たとえば、本実施形態の探索木を用いた解探索は、物流業における配車システムに適用することができる。
【００７９】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００８０】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード等の記録媒体に置くことができる。
【００８１】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００８２】
１０１    解探索装置
１０２    操作装置
１０３    通信路
１０４    制御装置
１０５    入口ライン
１０６    入口搬送装置
１０７    作業ライン
１０８    出口搬送装置
１０９    出口ライン
９０１    根ノード
９０２    中間ノード
９０３    葉ノード
【図１】
2020038478.tif 000003
【図２】
2020038478.tif 000004
【図３】
2020038478.tif 000005
【図４】
2020038478.tif 000006
【図５】
2020038478.tif 000007
【図６】
2020038478.tif 000008
【図７】
2020038478.tif 000009
【図８】
2020038478.tif 000010
【図９】
2020038478.tif 000011
【図１０】
2020038478.tif 000012
【図１１】
2020038478.tif 000013
【図１２】
2020038478.tif 000014