(57)【要約】      （修正有）【課題】複数の処理が組み合わせられて構成される処理フローの生成において、処理の組み合わせ構造及び夫々の処理に設定されるパラメータの調整を効率的に実現する。【解決手段】複数の処理が組み合わせられて構成される処理フロー及び複数の前記処理夫々の動作設定値の群を、入力データ及び目標データに基づいて修正して出力する処理フロー生成装置１００であって、処理フロー毎に、入力された設定値の群に基づいて進化計算により他の設定値の群を生成し、設定値の群を夫々の処理フローに適用して入力データを処理した結果を評価し、評価結果に基づいて複数の設定値の群の取捨選択を行い、設定値の群の評価結果に基づいて処理フローを評価して取捨選択する。【選択図】図４
2015230702.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理が組み合わせられて構成される処理フロー及び複数の前記処理夫々の動作設定値の群を、入力データ及び目標データに基づいて修正して出力する処理フロー生成装置であって、
入力された前記処理フローに基づいて進化計算により他の処理フローを生成する処理フロー生成部と、
生成された複数の前記処理フロー毎に、入力された前記設定値の群に基づいて進化計算により他の設定値の群を生成する設定値群生成部と、
生成された前記設定値の群を夫々の処理フローに適用して前記入力データを処理した場合に得られる出力データと前記目標データとの差異に基づいて前記設定値の群を評価する設定値群評価部と、
前記設定値の群の評価結果に基づいて複数の前記設定値の群の取捨選択を行う設定値群選別部と、
生成された前記処理フロー毎に、前記設定値の群の評価結果に基づいて前記処理フローを評価する処理フロー評価部と、
前記処理フローの評価結果に基づいて複数の前記処理フローの取捨選択を行う処理フロー選別部とを含み、
前記設定値群生成部は、取捨選択により残された前記設定値の群に基づいて進化計算により更に他の設定値の群を生成し、
前記設定値群生成部、前記設定値群評価部及び前記設定値群選別部が処理を繰り返すことにより夫々の前記処理フローについて前記目標データに合致した前記設定値の群を選択し、
前記処理フロー生成部は、取捨選択により残された前記処理フローに基づいて進化計算により更に他の処理フローを生成し、
前記処理フロー生成部、前記処理フロー評価部及び前記処理フロー選別部が処理を繰り返すことにより前記目標データに合致した前記処理フローを選択することを特徴とする処理フロー生成装置。
【請求項２】
前記設定値群評価部は、夫々の処理フローについて、複数生成された前記設定値の群の全ての評価を行い、夫々の処理フローについての前記設定値の群の評価結果が所定の条件に該当する場合、全ての前記設定値の群の評価を完了する前にその処理フローについての前記設定値の群の評価を中断することを特徴とする請求項１に記載の処理フロー生成装置。
【請求項３】
前記処理フロー選別部は、前記設定値の群の評価が中断された前記処理フローを破棄することを特徴とする請求項２に記載の処理フロー生成装置。
【請求項４】
前記処理フロー評価部は、前記設定値の群の評価が中断された前記処理フローの評価を省略することを特徴とする請求項３に記載の処理フロー生成装置。
【請求項５】
前記設定値群評価部は、評価結果が所定の基準を満たさない前記設定値の群の数に基づいて全ての前記設定値の群の評価を完了する前にその処理フローについての前記設定値の群の評価を中断することを特徴とする請求項２乃至４いずれか１項に記載の処理フロー生成装置。
【請求項６】
前記処理フロー選別部は、前記設定値の群を前記処理フローに適用して前記入力データを処理した場合に要する時間と前記処理フローの評価結果とに基づいて複数の前記処理フローの取捨選択を行うことを特徴とする請求項１乃至５いずれか１項に記載の処理フロー生成装置。
【請求項７】
前記処理フロー選別部は、前記設定値の群を前記処理フローに適用して前記入力データを処理した場合に要する時間と前記処理フローの評価結果とに基づいて複数の前記処理フローの取捨選択を行い、
前記設定値群評価部は、夫々の処理フローについての前記設定値の群の評価結果及び前記設定値の群を前記処理フローに適用して前記入力データを処理した場合に要する時間が所定の条件に該当する場合、全ての前記設定値の群の評価を完了する前にその処理フローについての前記設定値の群の評価を中断することを特徴とする請求項２乃至５いずれか１項に記載の処理フロー生成装置。
【請求項８】
前記設定値群選別部は、前記設定値群生成部、前記設定値群評価部及び前記設定値群選別部による処理の繰り返しにおいて、新たに生成された前記設定値の群の評価が、以前に生成された前記設定値の群の評価よりも低い場合に、前記前記設定値群生成部、前記設定値群評価部及び前記設定値群選別部による処理の繰り返しを終了することを決定することを特徴とする請求項１乃至７いずれか１項に記載の処理フロー生成装置。
【請求項９】
前記設定値群評価部は、前記設定値群生成部、前記設定値群評価部及び前記設定値群選別部による処理の繰り返しにおいて、前記設定値群選別部により残された前記設定値の群の評価を省略することを特徴とする請求項１乃至８いずれか１項に記載の処理フロー生成装置。
【請求項１０】
複数の処理が組み合わせられて構成される処理フロー及び複数の前記処理夫々の動作設定値の群を、入力データ及び目標データに基づいて修正して出力する処理フロー生成方法であって、
入力された前記処理フローに基づいて進化計算により他の処理フローを生成し、
生成された複数の前記処理フロー毎に、入力された前記設定値の群に基づいて進化計算により他の設定値の群を生成し、
生成された前記設定値の群を夫々の処理フローに適用して前記入力データを処理した場合に得られる出力データと前記目標データとの差異に基づいて前記設定値の群を評価し、
前記設定値の群の評価結果に基づいて複数の前記設定値の群の取捨選択を行い、
取捨選択により残された前記設定値の群に基づいて進化計算により更に他の設定値の群を生成し、
前記設定値の群の生成、前記設定値の群の評価及び前記設定値の群の取捨選択を繰り返すことにより夫々の前記処理フローについて前記目標データに合致した前記設定値の群を選択し、
生成された前記処理フロー毎に、前記設定値の群の評価結果に基づいて前記処理フローを評価し、
前記処理フローの評価結果に基づいて複数の前記処理フローの取捨選択を行い、
取捨選択により残された前記処理フローに基づいて進化計算により更に他の処理フローを生成し、
前記処理フローの生成、前記処理フローの評価及び前記処理フローの取捨選択を繰り返すことにより前記目標データに合致した前記処理フローを選択することを特徴とする処理フロー生成方法。
【請求項１１】
複数の処理が組み合わせられて構成される処理フロー及び複数の前記処理夫々の動作設定値の群を、入力データ及び目標データに基づいて修正して出力する処理フロー生成プログラムであって、
入力された前記処理フローに基づいて進化計算により他の処理フローを生成するステップと、
生成された複数の前記処理フロー毎に、入力された前記設定値の群に基づいて進化計算により他の設定値の群を生成するステップと、
生成された前記設定値の群を夫々の処理フローに適用して前記入力データを処理した場合に得られる出力データと前記目標データとの差異に基づいて前記設定値の群を評価するステップと、
前記設定値の群の評価結果に基づいて複数の前記設定値の群の取捨選択を行うステップと、
取捨選択により残された前記設定値の群に基づいて進化計算により更に他の設定値の群を生成するステップと、
前記設定値の群の生成、前記設定値の群の評価及び前記設定値の群の取捨選択を繰り返すことにより夫々の前記処理フローについて前記目標データに合致した前記設定値の群を選択するステップと、
生成された前記処理フロー毎に、前記設定値の群の評価結果に基づいて前記処理フローを評価するステップと、
前記処理フローの評価結果に基づいて複数の前記処理フローの取捨選択を行うステップと、
取捨選択により残された前記処理フローに基づいて進化計算により更に他の処理フローを生成するステップと、
前記処理フローの生成、前記処理フローの評価及び前記処理フローの取捨選択を繰り返すことにより前記目標データに合致した前記処理フローを選択するステップとを情報処理装置に実行させることを特徴とする処理フロー生成プログラム。
【請求項１２】
複数の処理が組み合わせられて構成される処理フロー及び複数の前記処理夫々の動作設定値の群を、入力データ及び目標データに基づいて修正して出力することにより、前記処理フローを実行する情報処理装置を製造する情報処理装置の製造方法であって、
入力された前記処理フローに基づいて進化計算により他の処理フローを生成し、
生成された複数の前記処理フロー毎に、入力された前記設定値の群に基づいて進化計算により他の設定値の群を生成し、
生成された前記設定値の群を夫々の処理フローに適用して前記入力データを処理した場合に得られる出力データと前記目標データとの差異に基づいて前記設定値の群を評価し、
前記設定値の群の評価結果に基づいて複数の前記設定値の群の取捨選択を行い、
取捨選択により残された前記設定値の群に基づいて進化計算により更に他の設定値の群を生成し、
前記設定値の群の生成、前記設定値の群の評価及び前記設定値の群の取捨選択を繰り返すことにより夫々の前記処理フローについて前記目標データに合致した前記設定値の群を選択し、
生成された前記処理フロー毎に、前記設定値の群の評価結果に基づいて前記処理フローを評価し、
前記処理フローの評価結果に基づいて複数の前記処理フローの取捨選択を行い、
取捨選択により残された前記処理フローに基づいて進化計算により更に他の処理フローを生成し、
前記処理フローの生成、前記処理フローの評価及び前記処理フローの取捨選択を繰り返すことにより前記目標データに合致した前記処理フローを選択し、
選択した前記処理フロー及び前記設定値の群に従って処理を実行する情報処理装置を構成することを特徴とする情報処理装置の製造方法。
【請求項１３】
複数の処理が組み合わせられて構成される処理フロー及び複数の前記処理夫々の動作設定値の群を、入力データ及び目標データに基づいて修正して出力することにより、前記処理フローを情報処理装置に実行させる情報処理プログラムを製造する情報処理プログラムの製造方法であって、
入力された前記処理フローに基づいて進化計算により他の処理フローを生成し、
生成された複数の前記処理フロー毎に、入力された前記設定値の群に基づいて進化計算により他の設定値の群を生成し、
生成された前記設定値の群を夫々の処理フローに適用して前記入力データを処理した場合に得られる出力データと前記目標データとの差異に基づいて前記設定値の群を評価し、
前記設定値の群の評価結果に基づいて複数の前記設定値の群の取捨選択を行い、
取捨選択により残された前記設定値の群に基づいて進化計算により更に他の設定値の群を生成し、
前記設定値の群の生成、前記設定値の群の評価及び前記設定値の群の取捨選択を繰り返すことにより夫々の前記処理フローについて前記目標データに合致した前記設定値の群を選択し、
生成された前記処理フロー毎に、前記設定値の群の評価結果に基づいて前記処理フローを評価し、
前記処理フローの評価結果に基づいて複数の前記処理フローの取捨選択を行い、
取捨選択により残された前記処理フローに基づいて進化計算により更に他の処理フローを生成し、
前記処理フローの生成、前記処理フローの評価及び前記処理フローの取捨選択を繰り返すことにより前記目標データに合致した前記処理フローを選択し、
選択した前記処理フロー及び前記設定値の群に従った処理を情報処理装置に実行させる情報処理プログラムを構成することを特徴とする情報処理プログラムの製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理フロー生成装置、処理フロー生成方法、処理フロー生成プログラム、情報処理装置の製造方法及び情報処理プログラムの製造方法に関し、特に、複数の処理が順番に実行される処理構造の生成に関する。
【背景技術】
【０００２】
複数のソフトウェア・モジュールが組み合わされたプログラムや、複数の回路素子が組み合わされた電気回路のような処理フローは、意図した結果を得るために処理単位の組み合わせ構造や、処理単位の動作パラメータを適切に設計する必要がある。このような設計を自動的に行うための手法として、遺伝的プログラミングが用いられる場合がある（例えば、特許文献１参照）。
【０００３】
特許文献１においては、上述した構造とパラメータとの最適化を同時に行うため、木構造を構成すると共に木構造を構成する遺伝子情報にパラメータを付加して遺伝子とパラメータとを同時に操作することが開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述した処理フローの最適化においては、特許文献１に開示されているように、夫々の処理の組み合わせ構造の最適化に加えて、夫々の処理に設定されるパラメータの最適化が求められる。即ち、同一の構造であっても、夫々の処理に設定されるパラメータが異なれば、得られる結果は異なるのであり、その結果を踏まえて全体を最適化する必要がある。
【０００５】
しかしながら、特許文献１に開示された方法においては、夫々の処理に設定されるパラメータの群（以降、「パラメータ群」とする）と、処理の組み合わせ構造とが１対１で関連付けられている。そのため、同一の構造で異なるパラメータ群の結果を得るためには、構造の情報を複数用意することとなり、非効率な処理となってしまう。
【０００６】
本発明は、このような課題を解決するためになされたものであり、複数の処理が組み合わせられて構成される処理フローの生成において、処理の組み合わせ構造及び夫々の処理に設定されるパラメータの調整を効率的に実現することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明の一態様は、複数の処理が組み合わせられて構成される処理フロー及び複数の前記処理夫々の動作設定値の群を、入力データ及び目標データに基づいて修正して出力する処理フロー生成装置であって、入力された前記処理フローに基づいて進化計算により他の処理フローを生成する処理フロー生成部と、生成された複数の前記処理フロー毎に、入力された前記設定値の群に基づいて進化計算により他の設定値の群を生成する設定値群生成部と、生成された前記設定値の群を夫々の処理フローに適用して前記入力データを処理した場合に得られる出力データと前記目標データとの差異に基づいて前記設定値の群を評価する設定値群評価部と、前記設定値の群の評価結果に基づいて複数の前記設定値の群の取捨選択を行う設定値群選別部と、生成された前記処理フロー毎に、前記設定値の群の評価結果に基づいて前記処理フローを評価する処理フロー評価部と、前記処理フローの評価結果に基づいて複数の前記処理フローの取捨選択を行う処理フロー選別部とを含み、前記設定値群生成部は、取捨選択により残された前記設定値の群に基づいて進化計算により更に他の設定値の群を生成し、前記設定値群生成部、前記設定値群評価部及び前記設定値群選別部が処理を繰り返すことにより夫々の前記処理フローについて前記目標データに合致した前記設定値の群を選択し、前記処理フロー生成部は、取捨選択により残された前記処理フローに基づいて進化計算により更に他の処理フローを生成し、前記処理フロー生成部、前記処理フロー評価部及び前記処理フロー選別部が処理を繰り返すことにより前記目標データに合致した前記処理フローを選択することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、複数の処理が組み合わせられて構成される処理フローの生成において、処理の組み合わせ構造及び夫々の処理に設定されるパラメータの調整を効率的に実現することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係る処理フロー生成装置のハードウェア構成を示すブロック図である。
【図２】本発明の実施形態に係る最適化対象の処理フローの例を示す図である。
【図３】本発明の実施形態に係る構成要素テーブルの例を示す図である。
【図４】本発明の実施形態に係る処理フロー生成装置の機能構成を示すブロック図である。
【図５】本発明の実施形態に係る学習データの例を示す図である。
【図６】本発明の実施形態に係る構成要素別数値テーブルの例を示す図である。
【図７】本発明の実施形態に係る処理フローの最適化動作を示すフローチャートである。
【図８】本発明の実施形態に係る構造個体の進化処理を示すフローチャートである。
【図９】本発明の実施形態に係る構造個体の交叉処理を示すフローチャートである。
【図１０】本発明の実施形態に係る構造個体の交叉処理の態様を示す図である。
【図１１】本発明の実施形態に係る構造個体の交叉処理における構造個体別数値テーブルの例を示す図である。
【図１２】本発明の実施形態に係る構造個体の突然変異処理を示すフローチャートである。
【図１３】本発明の実施形態に係る構造個体の突然変異処理の態様を示す図である。
【図１４】本発明の実施形態に係る構造個体の突然変異処理における構造個体別数値テーブルの例を示す図である。
【図１５】本発明の実施形態に係る数値個体の進化処理を示すフローチャートである。
【図１６】本発明の実施形態に係る数値個体の交叉処理を示すフローチャートである。
【図１７】本発明の実施形態に係る数値個体の交叉処理における構造個体別数値テーブルの例を示す図である。
【図１８】本発明の実施形態に係る数値個体の突然変異処理を示すフローチャートである。
【図１９】本発明の実施形態に係る数値個体の突然変異処理における構造個体別数値テーブルの例を示す図である。
【図２０】本発明の実施形態に係る数値個体の評価処理を示すフローチャートである。
【図２１】本発明の実施形態に係る評価値と処理時間とに基づく世代交代の態様を示す図である。
【図２２】本発明の実施形態に係る学習データの例を示す図である。
【図２３】本発明の実施形態に係る構成要素テーブルの例を示す図である。
【図２４】本発明の実施形態に係る画像処理フローの例を示す図である。
【図２５】本発明の実施形態に係る追加学習データの例を示す図である。
【図２６】本発明の実施形態に係る画像処理フローの例を示す図である。
【図２７】本発明の実施形態に係る画像処理フローの例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、本発明の実施形態について説明する。本実施形態においては、白黒２値化、エッジ検出等の処理を要素として組み合わせて処理された画像を出力結果として得る画像処理プログラムのフローを構築するための処理フロー生成装置を例として説明する。尚、以下の説明においては画像処理プログラムのフローを例として説明するが、これに限らず、例えば抵抗やコンデンサを要素とする電気回路であっても同様に適用可能である。
【００１１】
図１は、本実施形態に係る処理フロー生成装置のハードウェア構成を示す図である。図１に示すように、本実施形態に係る処理フロー生成装置１００は、一般的な情報処理装置と同様の構成を含む。即ち、本実施形態に係る処理フロー生成装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０３、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１０４及びＩ／Ｆ１０５がバス１０８を介して接続されている。また、Ｉ／Ｆ１０５にはＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）１０６及び操作部１０７が接続されている。
【００１２】
ＣＰＵ１０１は演算手段であり、処理フロー生成装置１００全体の動作を制御する。ＲＡＭ１０２は、情報の高速な読み書きが可能な揮発性の記憶媒体であり、ＣＰＵ１０１が情報を処理する際の作業領域として用いられる。ＲＯＭ１０３は、読み出し専用の不揮発性記憶媒体であり、ファームウェア等のプログラムが格納されている。ＨＤＤ１０４は、情報の読み書きが可能な不揮発性の記憶媒体であり、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や各種の制御プログラム、アプリケーション・プログラム等が格納される。
【００１３】
Ｉ／Ｆ１０５は、バス１０８と各種のハードウェアやネットワーク等を接続し制御する。ＬＣＤ１０６は、ユーザが処理フロー生成装置１００の状態を確認するための視覚的ユーザインタフェースである。操作部１０７は、キーボードやマウス等、ユーザが処理フロー生成装置１００に情報を入力するためのユーザインタフェースである。
【００１４】
このようなハードウェア構成において、ＲＯＭ１０３に格納されたプログラムや、ＨＤＤ１０４若しくは図示しない光学ディスク等の記憶媒体からＲＡＭ１０２にロードされたプログラムに従ってＣＰＵ１０１が演算を行うことにより、ソフトウェア制御部が構成される。このようにして構成されたソフトウェア制御部と、ハードウェアとの組み合わせによって、本実施形態に係る処理フロー生成装置１００の機能を実現する機能ブロックが構成される。
【００１５】
本実施形態に係る処理フロー生成装置１００は、上述したように、複数の処理が組み合わせられたフローの組み合わせの構造及び夫々の処理におけるパラメータ設定の調整を行う。即ち、本実施形態に係る処理フロー生成装置１００が修正する対象の個体は、処理の組み合わせを示す構造と、夫々の処理におけるパラメータ設定である数値を含む。まず、本実施形態に係る処理フロー生成装置１００が処理する対象の個体について説明する。
【００１６】
図２は、処理フロー生成装置１００が処理する対象である個体の構造（以降、「構造個体」とする）を示す図である。図２に示すように、本実施形態に係る構造個体は、“Ｃ１”、“Ｃ２”、“Ｃ３”・・・といったノードが、図中に矢印で示される処理結果の入出力関係によって接続されて構成されている。
【００１７】
図２に示す夫々のノードは、画像処理における二値化処理やエッジ検出処理等の夫々の処理を示し、“Ｃ１”、“Ｃ２”、“Ｃ３”・・・等の夫々のノード名は、処理の内容を示す記号である。また、図２において夫々のノードに付随して括弧で示される値は、夫々の位置のノードを一意に識別するノードＮｏである。即ち、図２においては、（４）、（７）、（９）、（１２）、（１６）のノードが最上位のノードであり、これらのノードに学習用のデータが入力される。
【００１８】
図３は、図２における夫々のノードのデータ構成を示すテーブル（以降、「構成要素テーブル」とする）を示す図である。図３に示すように、夫々の構成要素は“構成要素名”、“数値パラメータ数”、“数値パラメータ範囲”、“入力数”を有する。“構成要素名”は、構成要素の名称であり、画像処理の場合は「２値化」や「エッジ検出」等であり、電気回路の場合は抵抗やコンデンサである。“数値パラメータ数”は、構成要素が動作するために必要とする動作設定値であるパラメータの数である。“数値パラメータ範囲”は、構成要素が必要とするパラメータの取り得る値の範囲である。“入力数”は、夫々の構成要素が必要とする入力の数である。図３の例において、構成要素は１４個あり、これらの構成要素が、図２に示すような構造のノードとして夫々選択される。
【００１９】
次に、本実施形態に係る処理フロー生成装置１００の機能構成について図４を参照して説明する。図４に示すように、本実施形態に係る処理フロー生成装置１００は、初期個体生成部１、個体集団記憶部２、構造個体進化処理部３、構造個体評価値記憶部４、構造個体世代交代処理部５、数値個体進化処理部６、個体評価部７、個体評価値記憶部８、数値個体世代交代処理部９及び処理結果出力部１０を含む。
【００２０】
初期個体生成部１は、初期構造個体生成部１ａ及び初期数値個体生成部１ｂを含み、処理フローの生成を開始する際に、処理フロー生成装置１００が処理する対象となる個体を生成する。初期構造個体生成部１ａは、図２に示すような構造を生成する。初期数値個体生成部１ｂは、図３において説明した構成要素テーブルに基づき、初期構造個体生成部１ａが生成した構造個体に含まれる夫々のノードのパラメータの群（以降、「数値個体」とする）の初期値を生成する。即ち、数値個体が設定値の群として用いられる。
【００２１】
初期構造個体生成部１ａ及び初期数値個体生成部１ｂは、初期個体をランダムに生成しても良いし、ユーザの操作に応じて生成しても良い。初期構造個体生成部１ａは、進化計算のために複数の構造個体、即ち、異なる構造を初期値として生成する。また、初期数値個体生成部１ｂは、進化計算のために、上記複数の構造個体毎に、夫々複数の数値個体、即ち、複数のパラメータの群を初期値として生成する。
【００２２】
個体集団記憶部２は、処理フロー生成装置１００によって処理されている個体の情報、即ち、構造個体及び数値個体を記憶している記憶部であり、構造個体集団記憶部２ａ及び数値個体集団記憶部２ｂを含む。構造個体集団記憶部２ａは上記複数の構造個体の情報を記憶している。数値個体集団記憶部２ｂは、上記複数の構造個体毎に生成された夫々複数の数値個体を記憶している。そのため、数値個体集団記憶部２ｂに記憶されている夫々の数値個体は、構造個体集団記憶部２ａにおけるいずれかの構造個体に関連付けられている。
【００２３】
構造個体進化処理部３は、構造個体集団記憶部２ａに記憶されている構造個体の情報に基づき、構造個体の進化処理を行う。進化計算における進化処理とは、例えば交叉、突然変異、逆位等である。構造個体進化処理部３は、構造個体集団記憶部２ａに記憶されている構造個体の情報に対して上述した進化処理を１回または複数回繰り返すことにより構造を変化させて得られた新たな構造個体を構造個体集団記憶部２ａに記憶させる。即ち、構造個体進化処理部３が、処理フロー生成部として機能する。
【００２４】
数値個体進化処理部６は、数値個体集団記憶部２ｂに記憶されている数値個体の情報に基づき、数値個体の進化処理を行う。進化処理の内容は構造個体進化処理部３と同様であり、数値個体進化処理部６は、数値個体集団記憶部２ｂに記憶されている構造個体の情報に対して上述した進化処理を１回または複数回繰り返すことにより数値を変化させて得られた新たな数値個体を数値個体集団記憶部２ｂに記憶させる。即ち、数値個体進化処理部６が、設定値群生成部として機能する。
【００２５】
個体評価部７は、構造個体集団記憶部２ａに記憶されている構造個体及び数値個体集団記憶部２ｂに記憶されている数値個体に基づいて個体の評価を行う。上述したように、１つの構造個体に対して複数の数値個体が関連付けられて記憶されており、個体評価部７は、構造個体と数値個体との組み合わせを１つの個体として、夫々の個体に対する評価を行う。即ち、個体評価部７は、設定値群評価部として機能する。
【００２６】
処理フロー生成装置１００による処理フロー生成動作の開始に際して、個体評価部７には学習用データが入力される。学習用データは、図５に示すように、処理対象である夫々の個体、即ち処理フローによって処理されるべき入力データと、その入力データが処理された結果得られるべきデータである目標データとを含む。個体評価部７は、入力データを夫々の個体によって処理することにより出力されて得られる結果データを目標データと比較することにより、その際に基づいて夫々の個体の評価値を得る。
【００２７】
個体評価値記憶部８は、個体評価部７によって図５に示すように得られた夫々の個体の評価値を記憶する記憶部である。上述したように、本実施形態に係る個体集団記憶部２には、複数の構造個体夫々について複数の数値個体が関連付けられている。従って、個体評価値記憶部８は、構造個体と数値個体との組み合わせ毎に評価値を記憶する。
【００２８】
数値個体世代交代処理部９は、個体評価値記憶部８に記憶されている上記組み合わせ毎の評価値を取得し、構造個体毎に、複数の数値個体の淘汰処理を行う。進化計算における淘汰処理とは、予め定められた数の個体を次世代の個体として選択して数値個体集団記憶部２ｂに記憶させる処理である。即ち、数値個体世代交代処理部９が、夫々の設定値の群である数値個体の評価結果に基づいて数値個体の取捨選択を行う設定値群選別部として機能する。
【００２９】
このように、数値個体進化処理部６、個体評価部７及び数値個体世代交代処理部９が処理を繰り返すことにより、夫々の処理フローである構造個体について、学習データの目標データに合致した数値個体が選択される。
【００３０】
世代交代の手法としては、評価値の良い個体を重点的に次世代に残すエリート保存や、世代間の個体の変動を小さくして徐々に良い個体を次世代に残すＭＧＧ（ＭｉｎｉｍａｌＧａｐ Ｇｅｎｅｒａｔｉｏｎ）モデルなどの世代交代モデルを選択することができる。
【００３１】
構造個体評価値記憶部４は、個体評価値記憶部８に記憶されている上記組み合わせ毎の評価値に基づき、構造個体毎の評価値を記憶する記憶部である。本実施形態に係る構造個体評価値記憶部４は、個体評価値記憶部８に記憶されている構造個体と数値個体との組み合わせ毎の評価値を夫々の構造個体毎に参照し、最も高い評価値をその構造個体の評価値として取得して記憶する。即ち、構造個体評価値記憶部４が、処理フロー評価部として機能する。尚、構造個体評価値の選択方法としては、上述した最も高い評価値を採用する場合の他、平均値や最頻値を採用する態様も考えられる。
【００３２】
構造個体世代交代処理部５は、構造個体評価値記憶部４に記憶されている各構造個体の評価値を取得し、構造個体の淘汰処理を行って予め定められた数の構造個体を次世代の個体として選択して構造個体集団記憶部２ａに記憶させる。世代交代の手法は、数値個体世代交代処理部９と同様である。即ち、構造個体世代交代処理部５が、処理フロー選別部として機能する。
【００３３】
このように、構造個体進化処理部３、構造個体評価値記憶部４及び構造個体世代交代処理部５が処理を繰り返すことにより、学習データの目標データに合致した処理フローが選択される。
【００３４】
処理結果出力部１０は、構造個体の情報を構造個体集団記憶部２ａから、数値個体の情報を数値個体情報記憶部２ｂから夫々取得すると共に、個体評価値記憶部８から夫々の組み合わせの評価値を取得し、学習結果として出力する。学習結果の個体の中で最も評価値が良い個体が最終的に最適化された構造と数値パラメータである。
【００３５】
図６は、１つの構造個体における図２に示すような構造を示すと共に、複数の数値個体が関連付けられた状態を示すテーブル（以降、「構造個体別数値テーブル」とする）を示す図である。図６に示すように、本実施形態に係る構造個体別数値テーブルは、“ノードＮｏ”、各ノードの“構成要素名”、各ノードの構成要素のパラメータ設定値の群を示す数値個体の集団である“数値個体集団”、各ノードの出力先である“出力ノードＮｏ”、出力ノードに対する自身のノードを特定するための“出力ノードのインデックス”、各ノードの入力先である“第１入力ノードＮｏ”、“第２入力ノードＮｏ”を含む。
【００３６】
図６に示すデータ構成は、入力データが２つ、出力データが１つの場合を想定しているが入力データ、出力データの数が任意の数でも対応可能である。図６の木構造の“ノードＮｏ”、“構成要素名”で木構造の各ノードを特定し、各ノードの連結関係をこの表から得ることができる。例えば、“ノードＮｏ”が「９」のノードは“出力ノードＮｏ”が「８」で出力先のノードは１つの入力しか持たないので出力ノードのインデックスは「０」である。また下に連結するノードがないので“第１入力ノードＮｏ”と“第２入力ノードＮｏ”に値は設定しない。
【００３７】
また、“ノードＮｏ”「１３」、のノードは“出力ノードＮｏ”が「１１」、“出力先ノード”が２つの入力を持っており、このノードは左から数えて２つ目の入力なので“出力ノードインデックス”は「１」、またノードの下には１つの入力ノードがあるので“第１入力ノードＮｏ”が「１４」、“第２入力ノードＮｏ”に値は設定しない。
【００３８】
“数値個体集団”は、各ノードの構成要素が有している複数の数値パラメータの集まりである。各ノードの構成要素に対応する数値個体は上述したように複数個設定され、図６においてはＮ個である。例えば、“ノードＮｏ”が「１」のノードは、“構成要素名”が「Ｃ９」であり、図３の構成要素テーブルから“構成要素名”が「Ｃ９」の“数値パラメータ数”は「１」で数値の範囲は「０〜１」であり、１番目の“数値パラメータ”セットは「０．２」を持つ。
【００３９】
また別の例として“ノードＮｏ”が「１３」のノードは、“構成要素名”として「Ｃ６」を持ち、図３の構成要素テーブルから“数値パラメータ数”は「２」で数値の範囲はそれぞれ「０〜１」、「−１〜１」となっている。１番目の数値パラメータセットは、第１数値パラメータが「０．１」、第２数値パラメータが「−０．７」となっている。
【００４０】
このように各ノードは、構成要素に対応する数値パラメータセットを複数持っている。ここで、すべてのノードに対する１番目の数値パラメータセットの集合を数値個体１とする。同様に、すべてのノードに対するｋ番目の数値パラメータの集合を数値個体ｋとする。この数値個体は、図６の“数値個体集団”に含まれる夫々の列によって示される構造個体に対する１組の数値パラメータ群を表す。また数値個体は後述する数値パラメータの最適化の対象となる。この数値個体を複数持つことで１つの構造に対して複数の数値パラメータ群を備えるデータ構造となっている。
【００４１】
次に、本実施形態に係る処理フロー生成装置１００の全体動作について説明する。図７は、本実施形態に係る処理フロー生成装置１００の全体動作を示すフローチャートである。図７に示すように、まずは初期個体生成部１が上述したように初期構造個体及び初期数値個体を含む初期個体を生成する（Ｓ７０１）。生成された初期個体は、夫々構造個体集団記憶部２ａ及び数値個体集団記憶部２ｂに記憶される。
【００４２】
個体集団記憶部２に初期個体が記憶されると、構造個体進化処理部３が、上述したように進化処理を行って新たな構造個体を生成し、構造個体集団記憶部２ａに記憶させる（Ｓ７０２）。構造個体の進化処理が完了すると、数値個体進化処理部６は、数値個体の進化処理の対象とする構造個体を１つ選択し（Ｓ７０３）、選択した構造個体に関連付けられている数値個体の進化処理を行う（Ｓ７０４）。
【００４３】
数値個体の進化処理が完了すると、個体評価部７が、生成された全ての数値個体の評価処理を上述したように実行する（Ｓ７０５）。数値個体の評価処理の態様は図５において説明した通りである。個体評価部７は、このような評価処理を、Ｓ７０３において選択された構造個体に関連付けられている数値個体の全てについて実行する。Ｓ７０５の処理により生成された評価値は、個体評価値記憶部８に記憶される。
【００４４】
数値個体の評価処理が完了すると、数値個体世代交代処理部９が、Ｓ７０５の処理によって個体評価値記憶部８に記憶された評価値に基づいて数値個体の世代交代処理を上述したように実行する（Ｓ７０６）。処理フロー生成装置１００は、Ｓ７０３において選択された構造個体についての数値個体の最適化処理が完了するまでＳ７０４〜Ｓ７０６の処理を繰り返す（Ｓ７０７／ＮＯ）。
【００４５】
Ｓ７０７における最適化処理の完了判断は、例えば数値個体世代交代処理部９が行い、個体評価値記憶部８に記憶された評価値が所定の基準値を満たすか否かや、Ｓ７０４〜Ｓ７０６の処理を繰り返した回数が所定回数に到達したか否かといった判断により行うことが出来る。Ｓ７０３において選択された構造個体についての数値個体の最適化が完了すると（Ｓ７０７／ＹＥＳ）、処理フロー生成装置１００は、構造個体集団記憶部２ａに記憶されている全ての構造個体について処理が完了するまで、Ｓ７０３からの処理を繰り返す（Ｓ７０８／ＮＯ）。
【００４６】
構造個体集団記憶部２ａに記憶されている全ての構造個体について処理が完了すると（Ｓ７０８／ＹＥＳ）、構造個体評価値記憶部４は、個体評価値記憶部８に記憶された夫々の構造個体についての複数の数値個体の評価値に基づき、上述したように構造個体の評価値を取得する（Ｓ７０９）。
【００４７】
構造個体評価値記憶部４が構造個体の評価値を取得すると、構造個体世代交代処理部５は、構造個体の最適化が終了したか否か判断する（Ｓ７１０）。Ｓ７１０の判断は、Ｓ７０７と同様に、評価値が所定の基準値を満たすか否かや、Ｓ７０２からＳ７０９の処理を繰り返した回数が所定回数に到達したか否かといった判断により行うことができる。
【００４８】
Ｓ７１０の判断の結果、構造個体の最適化が完了していなければ（Ｓ７１０／ＮＯ）、構造個体世代交代処理部５は、構造個体集団記憶部２ａに記憶されている構造個体の世代交代処理を上述したように実行し（Ｓ７１１）、Ｓ７０２からの処理を繰り返す。他方、構造個体の最適化が完了していれば（Ｓ７１０／ＹＥＳ）、処理結果出力部１０が上述したように情報を出力して処理を終了する。
【００４９】
このように、本実施形態に係る処理フロー生成装置１００においては、構造個体の進化計算を処理の骨格として、夫々の構造個体の評価値を算出する処理として、図７に示すＳ７０３〜Ｓ７０６の処理を繰り返すことにより、数値個体の最適化を行う。このような処理により、構造個体及び数値個体両方の進化計算処理を効率的に実行することが可能となる。
【００５０】
次に、図７のＳ７０２における構造個体の進化処理について説明する。図８は、構造個体の進化処理を示すフローチャートである。図８に示すように、構造個体進化処理部３は、進化処理において、交叉や突然変異などの進化処理を行って新たに得る構造個体の数を決定し（Ｓ８０１）、決定した数に従って交叉処理（Ｓ８０２）、突然変異処理（Ｓ８０３）を行う。
【００５１】
次に、Ｓ８０２の交叉処理について説明する。図９は、構造個体の交叉処理を示すフローチャートである。図９に示すように、構造個体進化処理部３は、まず交叉処理の対象とする２つの構造個体を選択し（Ｓ９０１）、選択した構造個体において、更に交叉処理の対象とするノードを選択する（Ｓ９０２）。対象ノードを選択すると、構造個体進化処理部３は、選択したノードよりも上流側のノードを全て対象として、２つの構造個体間でノードを入れ替える（Ｓ９０３）。
【００５２】
図１０は、個体Ｉｄｖ０、個体Ｉｄｖ１の２つの構造個体の交叉処理の例を示す図である。図中左側の構造個体は（３）のノードが選択され、図中右側の構造個体は（８）のノードが選択された場合を例としている。この場合、図１０に示すように夫々破線で囲んだ領域が交叉の対象となる。Ｓ９０３においては、夫々破線で囲まれた領域の部分木の構造（以降、「部分構造」とする）が互いに入れ替えられることとなる。
【００５３】
部分構造の入れ替えが完了すると、構造個体進化処理部３は、入れ替えた結果の情報を構造個体集団記憶部２ａに記憶させる（Ｓ９０４）。この際、構造個体進化処理部３は、交叉によって生成された２つの新たな構造個体を、両方とも記憶させるか、いずれか一方のみを記憶させるか選択しても良い。構造個体進化処理部３は、図８のＳ８０１において決定された数に応じてＳ９０１〜Ｓ９０４の処理を繰り返し（Ｓ９０５／ＮＯ）、決定された数が完了したら（Ｓ９０５／ＹＥＳ）、処理を終了する。
【００５４】
図１１は、図１０に示すような構造個体の交叉処理において実際に処理される構造個体別数値テーブルの例を示す図である。この例では交叉に選択したノードの出力数が同じため、図中Ｐ１で示す夫々の構造個体における構造個体別数値テーブルの“出力ノードのインデックス”は変わらない。他方、構造個体進化処理部３は、個体Ｉｄｖ０の構造体別数値テーブルの“ノードＮｏ”が「２」であるノードの“第１入力ノードＮＯ”と、個体Ｉｄｖ１の構造個体別数値テーブルの“ノードＮｏ”が「７」であるノードの“第１入力ノードＮｏ”を交換する。また、“ノードＮｏ”が一意になるように“ノードＮｏ”を設定し直す。
【００５５】
次に、Ｓ８０３の突然変異処理について説明する。図１２は、構造個体の突然変異処理を示すフローチャートである。図１２に示すように、構造個体進化処理部３は、まず突然変異処理の対象とする１つの構造個体を選択し（Ｓ１２０１）、選択した構造個体において、更に突然変異処理の対象とするノードを選択する（Ｓ１２０２）。対象ノードを選択すると、構造個体進化処理部３は、選択したノードを変化させる（Ｓ１２０３）。
【００５６】
図１３は、ある構造個体の突然変異処理の例を示す図である。図１３の例においては、（１３）のノードがＳ１２０２において選択され、Ｓ１２０３において変化させられることとなる。（１３）のノードは、図１４に示すように、“構成要素名”が「Ｃ６」であり、複数の数値パラメータを持っている。
【００５７】
構造個体進化処理部３は、Ｓ１２０３における変化処理において、図３において説明した構成要素テーブルから異なる他の構成要素を選択して、図１３に示す（１３）のノードと入れ替える。これにより、突然変異処理が実現される。例えば、図３に示す“構成要素名”が「Ｃ３」の構成要素が選択されたとする。
【００５８】
構成要素Ｃ３は元の構成要素「Ｃ６」と入力数が同じなので、構造個体進化処理部３は、図１４に示す構造個体別数値テーブルの“ノードＮｏ”が「１３」であるノードについて、“構成要素名”を「Ｃ３」に書き換え、構成要素に付随する複数の数値パラメータは構成要素テーブルの“数値パラメータ範囲”の範囲内で生成する。また、構成要素の入力数、出力先のノードの入力数が違う場合は、足りない出力先を生成して新しい構造を生成することで突然変異処理を行う。
【００５９】
次に、図７のＳ７０４における数値個体の進化処理について説明する。図１５は、数値個体の進化処理を示すフローチャートである。図１５に示すように数値個体進化処理部６は、進化処理において、まず図６に示すように数値個体に含まれる各ノードのパラメータの数を合計し、その合計数を最適化対象のパラメータ空間の次元数とする（Ｓ１５０１）。次元数を決定したら、数値個体進化処理部６は、交叉や突然変異などの進化処理を行って新たに得る数値個体の数を決定する（Ｓ１５０２）。
【００６０】
好適な最適化を実現するためには、最適化するパラメータ数が多い程、検証する数値個体のサンプル数を多くとる必要がある。従って、Ｓ１５０２において、数値個体進化処理部６は、Ｓ１５０１において決定した次元数に応じて新たに得る数値個体の数を決定する。新たに得る数値個体の数を決定すると、数値個体進化処理部６は、決定した数に従って交叉処理（Ｓ１５０３）、突然変異処理（Ｓ１５０４）を行う。
【００６１】
次に、Ｓ１５０３の交叉処理について説明する。図１６は、数値個体の交叉処理を示すフローチャートである。図１６に示すように、数値個体進化処理部６は、まず交叉処理の対象とする２つ以上の数値個体を選択し（Ｓ１６０１）、選択した数値個体において、更に交叉処理の対象とするノードを選択する（Ｓ１６０２）。対象ノードを選択すると、数値個体進化処理部６は、選択したノードが有する数値パラメータを順次選択し（Ｓ１６０３）、選択した数値パラメータについて交叉処理を行う（Ｓ１６０４）。
【００６２】
Ｓ１６０４において、数値個体進化処理部６は、例えば実数値交叉手法で交叉処理を行って新しい数値パラメータを生成して数値個体集団記憶部２ｂに記憶させる。この際、交差する数値パラメータを複製して交叉しても複製せずに交叉しても良い。この場合、交叉の手法としては２つの親数値の平均値を計算する平均値交叉を用いることが可能である。
【００６３】
数値個体進化処理部６は、選択中のノードに含まれる全ての数値パラメータについて処理が完了するまでＳ１６０３、Ｓ１６０４の処理を繰り返し（Ｓ１６０５／ＮＯ）、全ての数値パラメータについて処理が完了したら（Ｓ１６０５／ＹＥＳ）、選択中の数値個体におけるすべてのノードについて処理が完了するまでＳ１６０２からの処理を繰り返す（Ｓ１６０６／ＮＯ）。
【００６４】
そして、選択中の数値個体における全てのノードについて処理が完了したら（Ｓ１６０６／ＹＥＳ）、図１５のＳ１５０２において決定した数の数値個体が得られるまでＳ１６０１からの処理を繰り返し（Ｓ１６０７／ＮＯ）、決定した数の数値個体が得られたら（１６０７／ＹＥＳ）、処理を終了する。
【００６５】
図１７は、図２に示す構造において（１３）のノードが選択された場合の交叉処理の態様を示す図である。図１７においては、数値パラメータの合計数は１６であり、この個体は１６次元の数値パラメータを持つ。そして、交叉対象の数値個体の選択として、ここでは“数値個体１”と“数値個体ｋ”とが選択された場合を例としている。
【００６６】
そして、図１７に破線の丸で示すように（１３）のノードにおいて、交叉対象とする数値パラメータが選択される。数値個体進化処理部６は、選択された夫々の数値パラメータに基づいて交叉処理を行い新たな数値パラメータを“数値個体Ｎ＋１”として同じく破線の丸で示すように生成し、数値個体集団記憶部に記憶させる。
【００６７】
数値個体進化処理部６は、このような処理を複数のノードについて繰り返し行うことにより、新たな数値個体である“数値個体Ｎ＋１”を生成する。尚、交叉処理は全てのノードを選択して実行することが好ましいが、これに限らず、選択されなかったノードの数値パラメータとしては既存の数値を複製しても良い。交叉対象ノードの選択方法については、すべてのノードを選択する方法や、構造の一部分（部分木）を選択する方法等、どのような選択方法でも良い。
【００６８】
尚、交叉手法としては、前述の平均値交叉以外にも複数の交叉対象の数値パラメータを結ぶ多角形内に均等に数値パラメータを生成するシンプレックス交叉など他の交叉手法が複数考えられるが、交叉手法にはどのような手法を用いても良い。交叉手法により交叉対象の数値パラメータ数や生成される数値パラメータ数、また最適化の性能が異なる。
【００６９】
次に、Ｓ１５０４の突然変異処理について説明する。図１８は、数値個体の突然変異処理を示すフローチャートである。図１８に示すように、数値個体進化処理部６は、まず突然変異処理の対象とする数値個体を選択し（Ｓ１８０１）、選択した数値個体において、更に突然変異処理の対象とするノードを選択する（Ｓ１８０２）。対象ノードを選択すると、数値個体進化処理部６は、選択したノードが有する数値パラメータを順次選択し（Ｓ１８０３）、選択した数値パラメータについて突然変異処理を行う（Ｓ１８０４）。
【００７０】
Ｓ１８０４において、数値個体進化処理部６は、選択中の数値パラメータを複製し、突然変異確率に基づいて突然変異処理する。この際、数値個体進化処理部６は、数値を乱数で発生させた数値に置き換えて新たな数値を生成し、数値個体集団記憶部２ｂに記憶させる。乱数としては、正規乱数や一様乱数等の任意の乱数を設定することが出来る。尚、突然変異処理しない場合には、選択した数値パラメータを新たな数値パラメータとして数値個体集団記憶部２ｂに記憶する。
【００７１】
数値個体進化処理部６は、選択中のノードに含まれる全ての数値パラメータについて処理が完了するまでＳ１８０３、Ｓ１８０４の処理を繰り返し（Ｓ１８０５／ＮＯ）、全ての数値パラメータについて処理が完了したら（Ｓ１８０５／ＹＥＳ）、選択中の数値個体におけるすべてのノードについて処理が完了するまでＳ１８０２からの処理を繰り返す（Ｓ１８０６／ＮＯ）。
【００７２】
そして、選択中の数値個体における全てのノードについて処理が完了したら（Ｓ１８０６／ＹＥＳ）、図１５のＳ１５０２において決定した数の数値個体が得られるまでＳ１８０１からの処理を繰り返し（Ｓ１８０７／ＮＯ）、決定した数の数値個体が得られたら（１８０７／ＹＥＳ）、処理を終了する。
【００７３】
図１９は、図２に示す構造において（１３）のノードが選択された場合の突然変異処理の態様を示す図である。突然変異処理対象の数値個体の選択として、ここでは“数値個体ｋ”が選択された場合を例としている。図１９に破線の丸で示すように（１３）のノードにおいて、突然変異対象とする数値パラメータが選択される。数値個体進化処理部６は、選択された数値パラメータを突然変異確率に基づいて突然変異処理して新たな数値パラメータを生成し、同じく破線の丸で示すように“数値個体Ｎ＋１”として数値個体集団記憶部に記憶させる。
【００７４】
数値個体進化処理部６は、このような処理を複数のノードについて繰り返し行うことにより、新たな数値個体である“数値個体Ｎ＋１”を生成する。尚、突然変異処理は全てのノードを選択して実行することが好ましいが、これに限らず、選択されなかったノードの数値パラメータとしては既存の数値を複製しても良い。図１９においては、破線の丸で示すように（６）、（１３）のノードが突然変異処理されて“数値個体Ｎ＋１”が生成されている。
【００７５】
次に、図７のＳ７０５における数値個体の評価処理について説明する。図２０は、本実施形態に係る数値個体の評価処理を示すフローチャートである。図２０に示すように、個体評価部７は、選択中の構造個体に関連付けられている数値個体を、数値個体集団記憶部２ｂから取得し（Ｓ２００１）、取得した数値個体を選択中の構造個体に適用した処理フローを実際に実行する（Ｓ２００２）。Ｓ２００２において、個体評価部７は、図５において説明した学習データに含まれる入力データを用いて処理フローを実行し、例えば図２の（１）のノードの出力データを処理フローの出力結果として取得する。
【００７６】
この際、個体評価部７は、図２に示すような構造の上流側から順にノードを選択し、選択したノードに入力するべきデータを用いてノードの処理結果を得る。得られた処理結果は、下流側に接続されているノードの入力結果となる。このような処理を上流側のノードから順に全てのノードについて繰り返すことにより、最終的に、図２の（１）のノードのような最下流のノードの出力データが得られる。
【００７７】
選択中の数値個体を用いた処理フローの出力結果を得ると、個体評価部７は、得られた出力結果を、図５に示す学習データに含まれる目標データと比較することにより、その差分に基づいて評価値を計算して、選択中の構造個体及び数値個体との組み合わせと関連付けて個体評価値記憶部８に記憶させる（Ｓ２００３）。
【００７８】
Ｓ２００３の処理を完了すると、個体評価部７は、Ｓ２００３において算出した評価値と所定の閾値とを比較し（Ｓ２００４）、所定の閾値未満であった場合（Ｓ２００４／ＹＥＳ）、カウント値をインクリメントする（Ｓ２００５）。カウント値をインクリメントした結果、カウント値が、予め定められた処理中断判断基準値に到達したら（Ｓ２００６／ＹＥＳ）、個体評価部７は、選択中の構造個体の評価が全体的に低いことを示す低評価フラグを設定し（Ｓ２００７）、そのまま処理を終了する。
【００７９】
他方、評価値が閾値以上であった場合や（Ｓ２００４／ＮＯ）、カウント値が基準値に到達していない場合（Ｓ２００６／ＮＯ）、個体評価部７は、選択中の構造個体に関連付けられている全ての数値個体について処理が完了するまでＳ２００１からの処理を繰り返し（Ｓ２００８／ＮＯ）、全ての数値個体について処理が完了したら（Ｓ２００８／ＹＥＳ）、処理を終了する。
【００８０】
図２０に示す評価処理によれば、通常の処理としてＳ７０３の処理により選択中の構造個体に関連付けられている全ての数値個体について評価値が算出され、個体評価値記憶部８に記憶される。但し、Ｓ２００４〜Ｓ２００７の処理により、評価値の低い数値個体の数が所定数に達すると、個体評価部７は、選択する数値個体に関わらず、選択中の構造個体が不適切な構造であると判断し、低評価フラグを設定して処理を終了する。
【００８１】
どのような数値個体を選択しても評価の低い構造個体は、図７のＳ７１１において淘汰されるべき性能の低い構造個体であると考えられる。そのような構造個体についての数値個体の評価計算は意義の低い処理であり、そのような構造個体について全ての数値個体の評価を行うことは非効率である。
【００８２】
本実施形態においては、Ｓ２００４〜Ｓ２００７の処理により、全ての数値個体について評価計算を行う前に、算出された評価値に基づいて選択中の構造個体について全ての数値個体の評価を行うか否か判断する。このような処理により、上述した非効率な処理を防ぐことが可能となり、最終的に処理フローの最適化が完了するまでに要する時間を短縮することが出来る。
【００８３】
尚、Ｓ２００７において設定される低評価フラグは、例えば、構造個体集団記憶部２ａにおいて、態様の構造個体と関連付けて記憶される。これにより、構造個体世代交代処理部５は、図７のＳ７１１において世代交代処理を行う際、低評価フラグが設定された構造個体が淘汰される、即ち、次の世代交代処理において破棄されるように世代交代を行う。
【００８４】
また、図２０においては、評価値が所定の閾値未満である数値個体の数が所定数に達した段階で、選択中の構造個体に低評価フラグを設定する場合を例として説明したが、これは一例である。例えば、ある構造個体について評価値が低い数値個体が多かったとしても全ての数値個体の評価が悪いわけではなく、評価値が比較的高い場合もある。
【００８５】
そのような場合に対応するため、例えば、全数値個体の半分の数値個体について評価を完了した段階で、Ｓ２００４において判断されている閾値を超える評価がゼロであった場合に、低評価フラグの設定を決定しても良い。この際、複数の数値個体から評価値を算出するものを選択する順番を工夫することにより、評価値が算出されていない残り半分の数値個体の中に評価値が高いものが含まれる可能性を低くし、低評価フラグの設定を好適に実現することが可能となる。
【００８６】
また、図２０に示す動作は、図７のＳ７０５における動作であるため、図７の動作においてＳ７０４〜Ｓ７０６が繰り返されることにより、図２０の動作が繰り返し実行されることとなる。この際、そのまま処理を実行すると、数値個体の世代交代において残った数値個体は、次の世代において図２０の動作において再度同様の処理により評価が実行されるが、これは非効率な処理である。
【００８７】
従って、１度評価を行った数値個体については、構造個体別数値テーブルにおいて評価済みフラグを設定し、図２０のＳ２００１において選択されないようにすることが好ましい。これにより、重複した処理を省略し、処理効率を高めることが出来る。
【００８８】
次に、Ｓ７１１における構造個体の世代交代処理について説明する。上述したように、世代交代の手法としてはエリート保存やＭＧＧモデル等の手法を選択することが可能である。これに加えて、構造個体の世代交代においては、構造個体評価値記憶部４に記憶された評価値に基づく処理に加えて、図２０のＳ２００２における処理フローの実行において要した処理時間に基づく判断を行うことが好ましい。
【００８９】
図５において説明したような学習データに基づき、処理フローの出力結果として目標データに近い結果データが得られることは重要である。しかしながら、好適な結果が得られる処理フローは、多くの処理が幾重にも積み重ねられ、結果として処理に要する時間が非常に長くなる可能性がある。
【００９０】
これに対して、Ｓ７１１における構造個体の世代交代処理において、処理に要する時間をも加味して淘汰されるべき個体を選択することにより、そのような処理に要する時間の長い処理フローを淘汰することが可能となる。その結果、現実的な時間で処理が完了するフローを残すと共に、処理フロー生成装置１００による処理フローの生成時間を短縮することも可能となる。図２１は、評価値及び処理時間を考慮して世代交代を行う場合の概念を示す図である。
【００９１】
図２１は、横軸を個体評価部７によって算出された評価値とし、縦軸を処理時間としてプロットしたグラフを示す図であり、２次元の多目的最適化手法により評価値と処理時間とを同時に最適化する。図２１の例においては、曲線上の丸印の解をパレート解と呼び、評価値、処理時間という２つの項目に対して最適化された解である。
【００９２】
パレート解とは、他のどの解よりも２つの項目の両方に対して自身より良い解が存在しない解である。従って、Ｓ７１１における構造個体の世代交代処理においては、図２１において丸印で示す個体を選択して次世代の構造個体とする。多目的最適化手法には、例としてＳＰＥＡ２（Ｓｔｒｅｎｇｔｈ  Ｐａｒｅｔｏ  Ｅｖｏｌｕｔｉｏｎａｒｙ  Ａｌｇｏｒｉｔｈｍ）、ＭＯＧＡ（Ｍｕｌｔｉ−Ｏｂｊｅｃｔｉｖｅ  Ｇｅｎｅｔｉｃ  Ａｌｇｏｒｉｔｈｍ）、ＮＳＧＡ−２（Ｅｌｉｔｉｓｔ  Ｎｏｎ−Ｄｏｍｉｎａｔｅｄ  Ｓｏｒｔｉｎｇ  Ｇｅｎｅｔｉｃ  Ａｌｇｏｒｉｔｈｍ）などを用いる。また、例では、評価値と処理時間という２項目の多目的最適化の例であるが、評価項目は自由に設定でき、３項目以上に拡張して多目的最適化することも可能である。
【００９３】
尚、図２１に示すような処理時間の考慮を、図２０において説明した低評価フラグの設定の判断に組み込んでも良い。例えば、図２０のＳ２００４を単純な評価値に対する閾値判断とするのではなく、評価値をＳ２００２における処理フローの実行に要した時間で割った値、即ち、単位時間辺りの評価値に対する閾値判断としても良い。これにより、図２１に示すように、処理時間に対する評価値のパフォーマンスの低い構造に対する評価処理を中断し、非効率な処理を省略することが出来る。
【００９４】
次に、生成対象の処理フローを画像処理のフローとする場合の具体的な態様について説明する。図２２（ａ）、（ｂ）は、画像処理のフローを生成する場合の学習データの例を示す図である。図２２（ａ）は入力データとしての画像を示す図であり、画像の中央部付近が略円状に薄くなったグレースケールの画像である。これに対して図２２（ｂ）は目標データとしての画像を示す図であり、入力データにおいて略円状に薄くなっている中央部付近を白、それ以外を黒とするように二値化された画像である。
【００９５】
図２２（ａ）の画像を入力画像として図２２（ｂ）の画像を出力画像として得るためには、多階調であるグレースケールの画像を好適なパラメータで二値化する必要がある。また、二値化に際しては、他の必要な処理を組み合わせて好適な結果が得られるように画像を処理する必要がある。そのような好適な結果を得るため、本実施形態においては、図２３に示すようなテーブルを構成要素テーブルとして、上述した処理フローの生成動作を実行する。
【００９６】
画像処理のフローを自動的に最適化して生成する場合、構成要素として図２３に示すように、基本的な画像処理を設定する。ここでは例として、２値化処理、メディアンフィルタ処理、平滑化処理、最大値処理、最小値処理を用いている。また、各構成要素が持つ数値パラメータとその範囲は、基本的な画像処理に用いる数値パラメータ（例えば２値化処理の場合は閾値）とその数値パラメータの範囲である。
【００９７】
従来手法では、１つの構成要素に１つのパラメータしか保持していないため０〜２５５の数値パラメータの範囲で最適化を行う場合、２５５個の構成要素を持たなくてはならず、保持する必要のある構成要素の数が膨大な数となっていた。これに対して、本実施形態に係る処理フロー生成装置１００においては、図２３に示すように、構成要素がそれぞれ数値パラメータ範囲内の数値パラメータを任意の数保持しているため、例えば、２値化の場合、１つの構成要素においてパラメータ０〜２５５の範囲からパラメータを生成することが可能であり、上述したような課題を解決することが出来る。
【００９８】
画像処理フローの生成においても、図７において説明した動作を実行することは同様である。但し、例えば図７のＳ７０７における数値個体の最適化の終了判断において、処理中の世代における評価値の最高値が、前世代における評価値の最高値よりも低かった場合、既に数値個体の最適化が十分であると判断して、最適化終了を決定することが好ましい。
【００９９】
画像処理のフローを自動最適化する場合は、画像の大きさなどにもよるが一般に画像処理に時間がかかるため学習時間が増大する傾向にある。また、本実施形態に係る処理フロー生成装置１００は、構造個体を進化させるのと同時にその構造の数値パラメータも同時に最適化するので夫々の構造個体について数値個体数分の進化処理が必要となる。これに対し、学習を効率的に進めるため数値パラメータを進化させても評価値が良くならない場合、数値パラメータの進化処理を打ち切り、構造の進化を優先させることにより学習の効率化を図ることができる。
【０１００】
図２４は、本実施形態に係る処理フロー生成装置１００により、図２２（ａ）、（ｂ）の画像を用いて最適化されて生成された画像処理フローの例を示す図である。夫々の構成要素であるノードの右横に付されている数字は、最適化されたパラメータ、即ち数値個体の値である。
【０１０１】
夫々の構成要素は、図２３に示す構成要素テーブルから選択された構成要素である。例えば、（２）のノードはメディアンフィルタ処理であり、数値パラメータとして“２”、“２”という２つの値が設定されている。
【０１０２】
以上、説明したように、本実施形態に係る処理フロー生成装置１００によれば、構造個体の進化計算を大枠の流れとして、夫々の構造個体の最適化の処理において、数値個体を最適化する。これにより、複数の処理が組み合わせられて構成される処理フローの生成において、処理の組み合わせ構造及び夫々の処理に設定されるパラメータの調整を効率的に実現することができる。
【０１０３】
また、図２０において説明したように、夫々の構造個体における数値個体の最適化処理においては、進化計算によって生成された数値個体を全て評価するのではなく、選択中の構造個体についての数値個体の評価処理を、評価値の状況に応じて途中で中断し、選択中の構造個体が最適化に適さないものであることを判断する。これにより、不要な評価処理を可能な限り省略し、処理フローの最適化に要する時間を短縮することが出来る。
【０１０４】
また、図５に示すような学習データに対応する処理を行う情報処理装置や情報処理プログラムを製造する際、本実施形態に係る処理フロー生成装置によって情報処理装置が実行する処理を最適化することにより、好適な処理を実行する情報処理装置や情報処理プログラムを容易に設計し、製造することが可能である。
【０１０５】
また、上記実施形態においては、１つの学習データを用いて処理フローを生成する場合を例として説明した。しかしながら、学習データを追加することにより、既に生成された処理フローを更に最適化することも可能である。以下、そのような例について説明する。
【０１０６】
図２５（ａ）、（ｂ）は追加する学習データの例を示す図である。図２５（ａ）は入力データとしての画像を示す図であり、全体的に濃いグレーであるが画像の中央部の左上が略円状に薄くなり、中央部の右下が円状に黒くなっているグレースケールの画像である。これに対して図２５（ｂ）は目標データとしての画像を示す図であり、入力データにおいて略円状に薄くなっている中央部の左上を白、それ以外を黒とするように二値化された画像である。
【０１０７】
図２５（ａ）の画像を入力画像として図２５（ｂ）の画像を出力画像として得るためには、図２５（ａ）における濃いグレー及び黒の部分を黒とし、それ以外の部分を白とするような二値化を実現するためのパラメータ設定を行う必要がある。そのようなパラメータ設定は、図２２（ａ）、（ｂ）の学習データによる処理フローの最適化だけでは不十分であり、図２５（ａ）、（ｂ）に示す学習データに基づいて更に最適化を行う必要がある。
【０１０８】
図２６、図２７は、処理フローの最適化の様子を示す図であり、図２６が最適化前、図２７が最適化後の処理フローを示す図である。図における表示態様は図２４と同様である。図２６において破線で囲まれている構造と、図２７において破線で囲まれている構造との間に差異はなく、最適化の過程において変化していない。即ち、図２６から図２７の最適化の過程においては、破線で囲まれた構造以外の部分が変化している。
【０１０９】
また、図２６において破線で囲まれた構造と、図２７において破線で囲まれた構造との間で、（３）のノード及び（５）のノードの数値パラメータが変化している。具体的に、最適化前において“１２６”であった（３）のノードの数値パラメータは、最適化により“１２５”となっており、最適化前において“７”、“７”であった（５）のノードの数値パラメータは最適化により“５”、“７”となっている。
【０１１０】
従来では、このように構造を維持したまま数値パラメータを変化させるには、構成要素と数値パラメータが１セットになっているため、数値パラメータを変化させたい構成要素が進化して同じ構成要素で別の数値パラメータを持ったものに進化する必要がある。しかし、この場合、数値パラメータの範囲だけそれぞれの数値パラメータを持った構成要素が複数存在しその中から最適な数値パラメータを持った構成要素が選ばれなくてはならず、確率的にそのような構成要素が選ばれる可能性は低いため、最適化の効率が悪い。
【０１１１】
これに対して、本実施形態に係る処理フロー生成装置１００は、図７のＳ７０４〜Ｓ７０６の処理により、構造を維持した状態で図内個体を進化させることが可能である。従って、従来の方法に対して構造と数値の同時最適化を効率的に行うことが可能である。
【符号の説明】
【０１１２】
１  初期個体生成部
１ａ  初期構造個体生成部
１ｂ  初期数値個体生成部
２  個体集団記憶部
２ａ  構造個体集団記憶部
２ｂ  数値個体集団記憶部
３  構造個体進化処理部
４  構造個体評価値記憶部
５  構造個体世代交代処理部
６  数値個体進化処理部
７  個体評価部
８  個体評価値記憶部
９  数値個体世代交代処理部
１０  処理結果出力部
１０１  ＣＰＵ
１０２  ＲＡＭ
１０３  ＲＯＭ
１０４  ＨＤＤ
１０５  Ｉ／Ｆ
１０６  ＬＣＤ
１０７  操作部
１０８  バス
【先行技術文献】
【特許文献】
【０１１３】
【特許文献１】特開２００７−０８７０５５号公報
【図１】
2015230702.tif 000003
【図２】
2015230702.tif 000004
【図３】
2015230702.tif 000005
【図４】
2015230702.tif 000006
【図５】
2015230702.tif 000007
【図６】
2015230702.tif 000008
【図７】
2015230702.tif 000009
【図８】
2015230702.tif 000010
【図９】
2015230702.tif 000011
【図１０】
2015230702.tif 000012
【図１１】
2015230702.tif 000013
【図１２】
2015230702.tif 000014
【図１３】
2015230702.tif 000015
【図１４】
2015230702.tif 000016
【図１５】
2015230702.tif 000017
【図１６】
2015230702.tif 000018
【図１７】
2015230702.tif 000019
【図１８】
2015230702.tif 000020
【図１９】
2015230702.tif 000021
【図２０】
2015230702.tif 000022
【図２１】
2015230702.tif 000023
【図２２】
2015230702.tif 000024
【図２３】
2015230702.tif 000025
【図２４】
2015230702.tif 000026
【図２５】
2015230702.tif 000027
【図２６】
2015230702.tif 000028
【図２７】
2015230702.tif 000029