(57)【要約】【課題】  遺伝的アルゴリズムを用いて高速に計算することが可能なパラメータフィッティング方法を提供する。【解決手段】  遺伝的アルゴリズムを用いて、測定値又は目標値と計算値との間の誤差を表す評価関数値を算出し、  前記評価関数値を最小化することでパラメータフィッティングを行うパラメータフィッティング方法であって、  前記評価関数に所定条件を代入したときに得られる評価関数値に対するボーダー値を定めて、前記評価関数値が前記ボーダー値を超えたときは処理を打ち切るステップを有し、  前記処理を並列化して行うことを特徴とするパラメータフィッティング方法。【選択図】図９
2013161263.tif 000002
【特許請求の範囲】
【請求項１】
遺伝的アルゴリズムを用いて、測定値又は目標値と計算値との間の誤差を表す評価関数値を算出し、
前記評価関数値を最小化することでパラメータフィッティングを行うパラメータフィッティング方法であって、
前記評価関数に所定条件を代入したときに得られる評価関数値に対するボーダー値を定めて、前記評価関数値が前記ボーダー値を超えたときは処理を打ち切るステップを有し、
前記処理を並列化して行う
ことを特徴とするパラメータフィッティング方法。
【請求項２】
遺伝的アルゴリズムを用いて、測定値又は目標値と計算値との間の誤差を表す評価関数値を算出し、
前記評価関数値を最小化することでパラメータフィッティングを行うパラメータフィッティング方法であって、
前記評価関数に所定条件を代入したときに得られる評価関数値に対するボーダー値と前記ボーダー値に基づく所定値とを定めて、
前記評価関数値が前記ボーダーを超えたとき、又は、前記評価関数値に基づく予測値が前記所定値を超えたときには処理を打ち切るステップを有し、
前記処理を並列化して行う
ことを特徴とするパラメータフィッティング方法。
【請求項３】
前記並列化の各処理を遺伝的アルゴリズムにおける個体毎に割り当てる
ことを特徴とする請求項１又は請求項２に記載のパラメータフィッティング方法。
【請求項４】
前記ボーダー値を世代毎に定める
ことを特徴とする請求項１乃至請求項３のいずれか１つに記載のパラメータフィッティング方法。
【請求項５】
前記ボーダー値を世代中の個体毎に定める
ことを特徴とする請求項１乃至請求項３のいずれか１つに記載のパラメータフィッティング方法。
【請求項６】
前記評価関数に所定条件を代入するときにおける前記所定条件の代入順序が予め定められている
ことを特徴とする請求項１乃至請求項５のいずれか１つに記載のパラメータフィッティング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、遺伝的アルゴリズムを用いて最適化を行う際に用いられるパラメータフィッティング方法に関する。
【背景技術】
【０００２】
光学などの分野で用いられるパラメータフィッティングなどの最適化においては、ローカルな最適化とグローバルな最適化がある。前者のローカルな最適化の手法としては、山登り法、準ニュートン法、及び共役傾斜法等を挙げることができる。また、グローバルな最適化の手法としては、焼きなまし法及び遺伝的アルゴリズム等を挙げることができる。
【０００３】
例えば、特許文献１には、散乱計測による微細形状解析で最適化を行う際に、ローカルな最適化の手法を用いることが開示されている。また、特許文献２には、マイクロレンズの凹凸形状を、グローバルな最適化の手法である遺伝的アルゴリズムを用いて最適化する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許５９６３３２９号明細書
【特許文献１】特開２００７−１２１０５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、遺伝的アルゴリズムは、ローカルな最適化の手法に比べてローカルミニマム（局所的極小値であるが真の極小値でない）に陥るのを防ごうとする利点を有するが、パラメータの組を多数計算するため計算時間がかかる、という問題があった。
【０００６】
本発明は、遺伝的アルゴリズムを用いて高速に計算することが可能なパラメータフィッティング方法を提供する。
【課題を解決するための手段】
【０００７】
本発明にかかるパラメータフィッティング方法は、
遺伝的アルゴリズムを用いて、測定値又は目標値と計算値との間の誤差を表す評価関数値を算出し、
前記評価関数値を最小化することでパラメータフィッティングを行うパラメータフィッティング方法であって、
前記評価関数に所定条件を代入したときに得られる評価関数値に対するボーダー値を定めて、前記評価関数値が前記ボーダー値を超えたときは処理を打ち切るステップを有し、
前記処理を並列化して行う
ことを特徴とする。
【０００８】
また、遺伝的アルゴリズムを用いて、測定値又は目標値と計算値との間の誤差を表す評価関数値を算出し、
前記評価関数値を最小化することでパラメータフィッティングを行うパラメータフィッティング方法であって、
前記評価関数に所定条件を代入したときに得られる評価関数値に対するボーダー値と前記ボーダー値に基づく所定値とを定めて、
前記評価関数値が前記ボーダーを超えたとき、又は、前記評価関数値に基づく予測値が前記所定値を超えたときには処理を打ち切るステップを有し、
前記処理を並列化して行う
ことを特徴とする。
【０００９】
また、前記並列化の各処理を遺伝的アルゴリズムにおける個体毎に割り当てる
ことを特徴とする。
【００１０】
また、前記ボーダー値を世代毎に定める
ことを特徴とする。
【００１１】
また、前記ボーダー値を世代中の個体毎に定める
ことを特徴とする。
【００１２】
また、前記評価関数に所定条件を代入するときにおける前記所定条件の代入順序が予め定められている
ことを特徴とする。
【発明の効果】
【００１３】
本発明の実施形態に係るパラメータフィッティング方法によれば、パラメータの組を多数計算する際、複数条件の計算を行う場合に、複数条件の途中段階で評価関数値の途中の値や予測値を用いて、適宜打ち切り処理を行うと共に、並列処理を行うので、遺伝的アルゴリズムを用いて高速に計算することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本実施形態の微細形状解析方法で用いられるシステム構成の一例を示す図である。
【図２】エッチングにより作製した微細形状部材の層構成を示す図である。
【図３】図１のＡの部分の拡大図である。
【図４】遺伝的アルゴリズムを模式的に表現した図である。
【図５】第１実施形態のパラメータフィッティング方法のメインフローチャートを示す図である。
【図６】第１実施形態のパラメータフィッティング方法のメインフローチャートを示す図である。
【図７】第１実施形態のパラメータフィッティング方法のメインフローチャートを示す図である。
【図８】第１実施形態の並列化処理を模式的に示す図である。
【図９】第１実施形態の並列化処理を模式的に示す図である。
【図１０】第１実施形態のサブルーチンである並列ループ処理のフローチャートを示す図である。
【図１１】第１実施形態のサブルーチンである並列ループ処理のフローチャートを示す図である。
【図１２】第１実施形態のサブルーチンである並列ループ処理のフローチャートを示す図である。
【図１３】第１実施形態のサブルーチンである並列ループ処理のフローチャートを示す図である。
【図１４】第１実施形態のサブルーチンである並列ループ処理のフローチャートを示す図である。
【図１５】第２実施形態のパラメータフィッティング方法のメインフローチャートを示す図である。
【図１６】第２実施形態のパラメータフィッティング方法のメインフローチャートを示す図である。
【図１７】第２実施形態のパラメータフィッティング方法のメインフローチャートを示す図である。
【図１８】第２実施形態のパラメータフィッティング方法のメインフローチャートを示す図である。
【図１９】第２実施形態のパラメータフィッティング方法のメインフローチャートを示す図である。
【図２０】第２実施形態のパラメータフィッティング方法のメインフローチャートを示す図である。
【図２１】第２実施形態の並列化処理を模式的に示す図である。
【図２２】第２実施形態の並列化処理を模式的に示す図である。
【図２３】第２実施形態のサブルーチンである並列メイン処理のフローチャートを示す図である。
【図２４】第２実施形態のサブルーチンである並列メイン処理のフローチャートを示す図である。
【図２５】第２実施形態のサブルーチンである並列メイン処理のフローチャートを示す図である。
【図２６】第２実施形態のサブルーチンである並列終了処理のフローチャートを示す図である。
【図２７】第２実施形態のサブルーチンである並列終了処理のフローチャートを示す図である。
【図２８】第２実施形態のサブルーチンである並列終了処理のフローチャートを示す図である。
【図２９】第２実施形態のサブルーチンである並列停止処理のフローチャートを示す図である。
【図３０】第２実施形態のサブルーチンである並列停止処理のフローチャートを示す図である。
【図３１】第３実施形態のパラメータフィッティング方法のフローチャートを示す図である。
【図３２】第４実施形態のパラメータフィッティング方法のフローチャートを示す図である。
【図３３】第５実施形態のパラメータフィッティング方法の第１のフローチャートを示す図である。
【図３４】第５実施形態のパラメータフィッティング方法の第２のフローチャートの一部を示す図である。
【図３５】第５実施形態のパラメータフィッティング方法の第２のフローチャートの一部を示す図である。
【図３６】第５実施形態のパラメータフィッティング方法の第２のフローチャートの一部を示す図である。
【図３７】第５実施形態のパラメータフィッティング方法の第２のフローチャートの一部を示す図である。
【図３８】波長に対する反射率の目標値と計算値の関係を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照にして本発明にかかるパラメータフィッティング方法について説明する。
【００１６】
図１は、本実施形態のパラメータフィッティング方法で用いられるシステム構成の一例を示す図である。
【００１７】
図１において、１０はシステムバス、１１はＣＰＵ（Central Processing Unit）、１２はＲＡＭ（Random Access Memory）、１３はＲＯＭ（Read Only Memory）、１４は外部情報機器との通信を司る通信制御部、１５はキーボードコントローラなどの入力制御部、１６はディスプレイコントローラなどの出力制御部、１７は外部記憶装置制御部、１８はキーボード、ポインティングデバイス、マウスなどの入力機器からなる入力部、１９はＬＣＤ（Liquid Crystal Display）等の表示装置や印刷装置からなる出力部、２０はＨＤＤ（Hard Disk Drive）等の外部記憶装置である。
【００１８】
図１において、ＣＰＵ１１は、ＲＯＭ１３内のプログラム用ＲＯＭ、或いは、大容量の外部記憶装置２０に記憶されたプログラム等に応じて、外部機器と通信することでデータを検索・取得したり、また、図形、イメージ、文字、表等が混在した出力データの処理を実行したり、さらに、外部記憶装置２０に格納されているデータベースの管理を実行したり、などといった演算処理を行うものである。
【００１９】
また、ＣＰＵ１１は、システムバス１０に接続される各デバイスを統括的に制御する。ＲＯＭ１３内のプログラム用ＲＯＭあるいは外部記憶装置２０には、ＣＰＵ１１の制御用の基本プログラムであるオペレーティングシステムプログラム（以下ＯＳ）等が記憶されている。また、ＲＯＭ１３あるいは外部記憶装置２０には出力データ処理等を行う際に使用される各種データが記憶されている。ＲＡＭ１２は、ＣＰＵ１１の主メモリ、ワークエリア等として機能する。
【００２０】
入力制御部１５は、不図示のキーボードやポインティングデバイス等の入力部１８を制御する。また、出力制御部１６は、ＬＣＤ等の表示装置やプリンタなどの印刷装置の出力部１９の出力制御を行う。
【００２１】
外部記憶装置制御部１７は、ブートプログラム、各種アプリケーション、フォントデータ、ユーザーファイル、編集ファイル、プリンタドライバ等を記憶するＨＤＤや、或いはＵＳＢメモリ等の外部記憶装置２０へのアクセスを制御する。
【００２２】
また、通信制御部１４は、ネットワークを介して、外部機器と通信を制御するものであり、これによりシステムが必要とするデータを、インターネットやイントラネット上の外部機器が保有するデータベースから取得したり、外部機器に情報を送信したりすることができるように構成される。
【００２３】
外部記憶装置２０には、ＣＰＵ１１の制御プログラムであるＯＳ以外に、本発明にかかる微細形状解析方法をＣＰＵ１１上で動作させるシステムプログラム、及びこのシステムプログラムで用いるデータなどがインストールされ、保存・記憶されている。
【００２４】
本実施形態のパラメータフィッティング方法を実現するシステムプログラムで利用されるデータとしては、基本的には外部記憶装置２０に保存されていることが想定されているが、場合によっては、これらのデータを、通信制御部１４を介してインターネットやイントラネット上の外部機器から取得するように構成することも可能である。
【００２５】
次に、以上のように構成されるシステムを用いて、本実施形態のパラメータフィッティング方法を実現させるための具体的な方法について説明する。
【００２６】
図２は、エッチングにより作製した微細形状部材の層構成を示す図である。
【００２７】
図２に示すように、エッチングにより作製した微細形状部材１の層構成は、「格子構造＋基板（該格子と同じ材料の一様層）」である。本実施形態では、一例として、図２に示したエッチングにより作製した微細形状部材１の寸法を求める際に用いるパラメータフィッティング方法について説明する。
【００２８】
本実施形態では、微細形状部材１は、シリコン等から作製され、基板１ａと、基板１ａに作製された格子部１ｂと、を有する。格子部１ｂは、基板１ａと同じ材料からなり、周期的な格子構造からなる。
【００２９】
図３は、図２のＡの部分の拡大図である。
【００３０】
格子が周期構造の場合、格子部１ｂの高さｄ、格子部１ｂの各層のデューティ比（＝幅／周期Λ）ｆ1〜ｆ7、格子部１ｂの周期Λ等をパラメータにして求めた回折光のデータ（反射率）の計算値と回折光の測定データとを後述する図３８のようにフィッティングし、誤差が最小の形状を求めることで、非破壊で寸法を測定する。
【００３１】
フィッティングには、複数組のパラメータに対する評価関数値ｅを求める。ここで、評価関数値ｅは、一般的には次のような式（１）によって定義される。
【数１】
2013161263.tif 000003
【００３２】
評価関数値ｅについて、誤差の二乗平均を考える場合には、以下の式（２）を用いることもできる。
【数２】
2013161263.tif 000004
【００３３】
なお、評価関数値ｅについて、誤差の絶対値を基準として考える場合には、以下の式（３）を用いることもできる。
【数３】
2013161263.tif 000005
【００３４】
ここで、（Ｘmesrd,m）は実測した反射率であり、（Ｘcalcd,m）は算出した計算値である。この評価関数値ｅは、（２）では誤差の二乗平均平方根であり、当然小さい方が実測値（Ｘmesrd,m）と、計算値（Ｘcalcd,m）の差が小さく、望ましい。
【００３５】
図４は、遺伝的アルゴリズムを模式的に表現した図である。大きい楕円は、世代を表し、小さい円は、個体を表している。
【００３６】
まず、第１世代で、第０世代のパラメータを設定した範囲でＮ1個の個体に変形する。次に、第２世代で、第１世代のＮ1個の個体から所定数の個体のパラメータを優性遺伝、突然変異、通常の遺伝として引き継ぐ。以下、第３世代以降も同様に引き継いでいく。
【００３７】
ここで、優性遺伝は、前世代の中から適合度が最も良い方から特定個体数までをそのまま継承する。突然変異は、前世代からランダムに個体を選び、指定した範囲内でランダムに決定（個体毎に実行）した一定値（一般的に各変数により異なる値）を全パラメータに加える。通常の遺伝は、前世代からランダムに個体を選び、その個体が持つ各パラメータを指定した範囲内でランダムに決定する。なお、第１世代は、第０世代の１つの個体を元に通常の遺伝を行うものである。また、図４では、世代間にわたって個体をそのまま引き継ぐように見えるが、優性遺伝以外は、変形を加えて継承する。
【００３８】
本実施形態では、個体は一つの断面形状を表すパラメータの組で、複数の波長の条件を有する。
【００３９】
次に、以上のような遺伝的アルゴリズムに基づいて改良を加えた本実施形態のパラメータフィッティング方法について説明する。
【００４０】
図５〜図７は、第１実施形態のパラメータフィッティング方法のメインフローチャートを示す図である。
【００４１】
図５は、遺伝的アルゴリズムの初期設定と第１世代の処理を示すフローチャートである。
【００４２】
第１実施形態のパラメータフィッティング方法では、図５に示すように、最初に、ＳＴ１〜ＳＴ２で、初期設定を行う。
【００４３】
すなわち、ステップ１で、初期状態のｔ個の各変数ｖ0k（1≦k≦t）の値の読み込みを行う（ＳＴ１）。
【００４４】
次に、ステップ２で、遺伝的アルゴリズム各世代ｇの個体数Ｎg及び第１世代の各変数の範囲ｖ1kmin，ｖ1kmaxを設定する（ＳＴ２）。変数ｖgkは、格子部１ｂの高さｄ、格子部１ｂの各層のデューティ比（＝幅／周期Λ）ｆ1〜ｆ7、格子部１ｂの周期Λ等を、例えば、ｖg1＝ｄ、ｖg2＝ｆ1、ｖg3＝Λ等で表し、範囲はパーセントとしても実寸などの実の値としてもよい。
【００４５】
次に、遺伝的アルゴリズムの第１世代として、まず、以下のステップ３〜ステップ７を個体数Ｎ1（Ｎgのｇ＝１：第１世代の個体数）個について繰り返す。
【００４６】
まず、ステップ３で、各変数ｖ0kから各変数ｖ1kの値を設定した範囲内でランダムに決定する（ＳＴ３）。
【００４７】
次に、ステップ４で、サブルーチンである並列ループ処理を実行する（ＳＴ４）。並列ループ処理については、後述する。
【００４８】
次に、ステップ５で、並列ループ処理からの戻り値がエラーであるか否かを判断する（ＳＴ５）。
【００４９】
ステップ５において、並列ループ処理からの戻り値がエラーである場合、ステップ３に戻る。
【００５０】
ステップ５において、並列ループ処理からの戻り値がエラーでない場合、ステップ６で、並列ループ処理で算出した評価関数値ｅ1（ｅgのｇ＝１：第１世代の評価関数値）が設定した閾値よりも小さいか否かを判断する（ＳＴ６）。評価関数値ｅ1は式（２）を用いて算出する。また、閾値は十分に小さい値を選ぶ。
【００５１】
ステップ６において、並列ループ処理で算出した評価関数値ｅ1が設定した閾値よりも小さいと判断した場合、それ以上の演算は必要なく収束したものと判断して処理を終了する。
【００５２】
ステップ６において、並列ループ処理で算出した評価関数値ｅ1が設定した閾値以上と判断した場合、ステップ７で、第１世代の個体数Ｎ1だけ全部終了したか否かを判断する（ＳＴ７）。
【００５３】
ステップ７において、評価関数値ｅ1の算出が個体数Ｎ1だけ全部終了していない場合、ステップ３に戻る。したがって、各変数ｖ0kから各変数ｖ1kの値を設定した範囲内でランダムに選んだ個体について評価関数値ｅ1の算出を行うことを、個体数Ｎ1だけ全部終了するまで同様に繰り返す。
【００５４】
ステップ７において、評価関数値ｅ1の算出が個体数Ｎ1だけ全部終了した場合、ステップ８で、Ｎ1個の個体それぞれの確率ｐ1（ｐgのｇ＝１：第１世代の確率）を算出する（ＳＴ８）。確率ｐは、ｑを各個体の評価関数値ｅが大きければ大きい程小さな値として、以下の式（４）のように、Ｎ個のｑの総和でそれぞれのｑを規格化したもので定義する。
【数４】
2013161263.tif 000006
ここでは、ｑ＝ｅ-4とした。また、他にｅ-3を用いてもよい。ただし、ｅ-1、ｅ-2を用いると、収束が遅くなり、好ましくない。
【００５５】
次に、ステップ９で、第１世代の個体数Ｎ1の評価関数値ｅ1、確率ｐ1、各変数ｖ1kのリストを作成し、遺伝的アルゴリズムの第１世代の演算を終えて（ＳＴ９）、図６のＡ１へ移動する。
【００５６】
図６は、遺伝的アルゴリズムの第２世代以降の各世代の優先遺伝と突然変異を示すフローチャートであって、図５のＡ１から進んだ後の処理を示したフローチャート図である。図６及び図７の処理は、各世代で繰り返し行う処理である。
【００５７】
図５のＡ１から進んだ後、まず、ステップ１０で、今世代の個体数Ｎgの各変数ｖgkの値を決定する際の範囲（ｖgkmin，ｖgkmax）を設定する（ＳＴ１０）。この処理は、ステップ２での設定と同様に範囲はパーセントとしても実寸としてもよい。その範囲の値は、第１世代と同じでも、何世代か毎に少しずつ小さくしていってもよい。
【００５８】
次に、ステップ１１で、優性遺伝の個体数ＮA,g個、突然変異の個体数ＮB,g個を設定する（ＳＴ１１）。今世代の個体数はＮgであるから、通常の遺伝の個体数は残りのＮg−（ＮA,g＋ＮB,g）となる。
【００５９】
次に、優性遺伝のステップ１２へ進み、前世代のリストの中、評価関数値ｅg-1が最も良い（小さい）方からＮA,g個までの、すなわち、優性な個体の評価関数値ｅg-1、確率ｐg-1、各変数ｖg-1,kのリストを今世代にそのまま継承（ＮA,g個について繰り返し）する（ＳＴ１２）。
【００６０】
次に、突然変異として、ステップ１３で、前世代から１つの個体をリストの確率で重み付けてランダムに選定する（ＳＴ１３）。この際、ステップ１２で選択されたものも重複して選定される可能性がある。
【００６１】
次に、ステップ１４で、所定の範囲内でランダムに選んだ一定値（一般的に各変数により異なる値）を選定されたその個体の各変数ｖg-1,kに付加し、今世代の各変数ｖg,kの値に設定する（ＳＴ１４）。この一定値は負の値も含むので、一定値を付加したものが負となる場合は、０とする。この一定値の範囲は、ステップ１０で設定した範囲を超えた範囲内でランダムに選ぶ。
【００６２】
次に、ステップ１５で、サブルーチンである並列ループ処理を実行する（ＳＴ１５）。並列ループ処理については、後述する。
【００６３】
次に、ステップ１６で、並列ループ処理からの戻り値がエラーであるか否かを判断する（ＳＴ１６）。
【００６４】
ステップ１６において、並列ループ処理からの戻り値がエラーである場合、ステップ１３に戻る。
【００６５】
ステップ１６において、並列ループ処理からの戻り値がエラーでない場合、ステップ１７で、並列ループ処理で算出した評価関数値ｅgが設定した閾値よりも小さいか否かを判断する（ＳＴ１７）。変数ｖgkの個体についての評価関数値ｅgは、式（２）を用いて算出する。また、閾値は十分に小さい値を選ぶ。
【００６６】
ステップ１７において、並列ループ処理で算出した評価関数値ｅgが設定した閾値よりも小さいと判断した場合、それ以上の演算は必要なく収束したものと判断して処理を終了する。
【００６７】
ステップ１７において、並列ループ処理で算出した評価関数値ｅgが設定した閾値以上と判断した場合、ステップ１８で、今世代の突然変異の個体数ＮB,g個の処理が終わったか否か（優性遺伝の個体数ＮA,g個を加えると、ＮA,g＋ＮB,g個の処理が終わったか否か）を判断する（ＳＴ１８）。
【００６８】
ステップ１８において、個体数ＮB,g個の処理が終了していないと判断した場合、ステップ１３に戻る。そして、新たに設定した変数ｖgkの個体について評価関数値ｅgの算出を行い、個体数ＮB,g個の処理が終了するまで、ステップ１３〜ステップ１７の処理を同様に繰り返す。
【００６９】
ステップ１８において、個体数ＮB,g個の処理が終了したと判断した場合、図７のＡ２に進む。
【００７０】
なお、以上の処理は、ランダムな乱数以外に、通常の最適化方法を用いることも考えられる。
【００７１】
さらに、以上の優性遺伝、突然変異の他に遺伝的アルゴリズムの交叉（異なる２つの個体のｔ個の変数ｖgkを途中で相互に入れ換える。）等を入れることも考えられる。
【００７２】
図７は通常の遺伝を示すフローチャートであって、図６のＡ２から進んだ後の処理を示したフローチャート図である。
【００７３】
以上の第２世代以降の各世代の優性遺伝と突然変異の処理の後に、図７に示す通常の遺伝を示すフローチャートの処理が行われる。すなわち、図６のＡ２から進んだ後、まず、ステップ１９で、前世代の中から１つの個体をリストの確率で重み付けてランダムに選定する（ＳＴ１９）。この際、ステップ１２，１３で選択されたものも重複して選定される可能性がある。
【００７４】
次に、ステップ２０で、前世代から選定した個体の各変数ｖg-1,kから今世代の各変数ｖgkの値をステップ１０で設定した範囲内でランダムに決定する（ＳＴ２０）。
【００７５】
次に、ステップ２１で、サブルーチンである並列ループ処理を実行する（ＳＴ２１）。並列ループ処理については、後述する。
【００７６】
次に、ステップ２２で、並列ループ処理からの戻り値がエラーであるか否かを判断する（ＳＴ２２）。
【００７７】
ステップ２２において、並列ループ処理からの戻り値がエラーである場合、ステップ１９に戻る。
【００７８】
ステップ２２において、並列ループ処理からの戻り値がエラーでない場合、ステップ２３で、並列ループ処理で算出した評価関数値ｅgが設定した閾値よりも小さいか否かを判断する（ＳＴ２３）。変数ｖgkの個体についての評価関数値ｅgは、式（２）を用いて算出する。また、閾値は十分に小さい値を選ぶ。
【００７９】
ステップ２３において、並列ループ処理で算出した評価関数値ｅgが設定した閾値よりも小さいと判断した場合、それ以上の演算は必要なく収束したものと判断して処理を終了する。
【００８０】
ステップ２３において、並列ループ処理で算出した評価関数値ｅgが設定した閾値以上と判断した場合、ステップ２４で、今世代の通常遺伝の個体数Ｎg−（ＮA,g＋ＮB,g）個の処理が終わったか否か（優性遺伝の個体数ＮA,g個、突然変異の個体数ＮB,g個を加えると、Ｎg個の処理が終わったか否か）を判断する（ＳＴ２４）。
【００８１】
ステップ２４において、個体数Ｎg−（ＮA,g＋ＮB,g）個の処理が終了していないと判断した場合、ステップ１９に戻る。そして、新たに設定した変数ｖgkの個体について評価関数値ｅgの算出を行い、個体数Ｎg−（ＮA,g＋ＮB,g）個の処理が終了するまで、ステップ１９〜ステップ２３の処理を同様に繰り返す。
【００８２】
ステップ２４において、評価関数値ｅgの算出が個体数Ｎg−（ＮA,g＋ＮB,g）個だけ全部終了した場合、ステップ２５で、Ｎg個の個体それぞれの確率ｐgを算出する（ＳＴ２５）。確率ｐgは、ステップ８と同様に、式（４）を用いて算出する。
【００８３】
次に、ステップ２６で、今世代の個体数Ｎgの評価関数値ｅg、確率ｐg、各変数ｖgkのリストを作成する（ＳＴ２６）。
【００８４】
次に、ステップ２７で、終了条件を満たすか否かを判断する（ＳＴ２７）。終了条件としては、世代数が所定の値までや、評価関数値の世代中の最小値が所定の値になるまでや、評価関数値の世代中の最小値がほとんど変わらなくなるまで等がある。
【００８５】
ステップ２７において、終了条件を満たさない場合、図６のＡ１へ戻り、次の世代の処理を同様に行う。
【００８６】
ステップ２７において、終了条件を満たした場合、処理を終了する。
【００８７】
次に、サブルーチンである並列ループ処理について説明する。
【００８８】
まず、並列ループ処理について簡単に説明する。図８及び図９は、第１実施形態の並列化処理を模式的に示す図である。
【００８９】
第１実施形態の並列化処理は、各処理を個体中の複数の条件毎に割り当てる処理である。個体１の条件を１から順に処理し、個体１の条件の処理が終了したら、個体２の条件を処理する。その後、順に個体３の条件、個体４の条件と処理していく。
【００９０】
例えば、１つの個体に条件が６つあり、システムが３つの処理を同時に実行できる場合、まず、図８に示すように、個体１の条件１を第１処理部で行い、個体１の条件２を第２処理部で行い、個体１の条件３を第３処理部で行う。次に、図９に示すように、個体１の条件４を第１処理部で行い、個体１の条件５を第２処理部で行い、個体１の条件６を第３処理部で行う。その後、順に個体２の条件、個体３の条件・・・最後の個体の条件と処理していく。
【００９１】
また、各処理部の処理は、それぞれ他の処理部の処理を追い越してもよい。例えば、個体１の条件１を第１処理部で行い、個体１の条件２を第２処理部で行い、個体１の条件３を第３処理部で行い、第２処理部の処理が終了した時点で、第１処理部の処理が終了していなかった場合には、次の個体１の条件４の処理を第２処理部が行うように設定することが可能である。
【００９２】
図１０〜図１４は、第１実施形態のサブルーチンである並列ループ処理のフローチャートを示す図である。
【００９３】
次に、図１０〜図１４に示したサブルーチンである並列ループ処理についてフローを用いて説明する。
【００９４】
図１０に示すように、まず、ステップ３１で、初期条件を設定する（ＳＴ３１）。初期条件は、ｍ1＝ｒ2Ｍによって、必要最小個数ｍ1が計算される。また、変数ｍに１及びスレッドカウンタｃに１をセットする。ここで、Ｍは全ての条件の総数であり、ｒ2は０＜ｒ2＜１を満たす定数である。また、スレッドとは、図８及び図９で示した処理を意味する。
【００９５】
次に、ステップ３２で、ｍ≦Ｍであるか否かを判断する（ＳＴ３２）。ステップ３２において、ｍ≦Ｍでない場合、図１２のＢ３へ移動する。
【００９６】
ステップ３２において、ｍ≦Ｍである場合、ステップ３３で、ｍ≦最大スレッド数であるか否かを判断する（ＳＴ３３）。
【００９７】
ステップ３３において、変数ｍ≦最大スレッド数でない場合、ステップ３５に進む。ステップ３３において、変数ｍ≦最大スレッド数である場合、ステップ３４で、スレッド番号にスレッドカウンタｃをセットする（ＳＴ３４）。
【００９８】
次に、ステップ３５で、スレッドカウンタｃ＞最大スレッド数であるか否かを判断する（ＳＴ３５）。ステップ３５において、スレッドカウンタｃ＞最大スレッド数でない場合、図１１のＢ２へ移動する。
【００９９】
ステップ３５において、スレッドカウンタｃ＞最大スレッド数である場合、ステップ３６で、処理が実行中でないスレッドを探し、そのスレッド番号を取得する（ＳＴ３６）。
【０１００】
次に、ステップ３７で、実行中でないスレッドのプロセスにエラーがあるか否かを判断する（ＳＴ３７）。ステップ３７において、実行中でないスレッドのプロセスにエラーがある場合、ステップ３９に進む。
【０１０１】
ステップ３７において、実行中でないスレッドのプロセスにエラーがない場合、ステップ３８で、出力処理として該スレッド番号に対する計算値を取得する（ＳＴ３８）。
【０１０２】
次に、ステップ３９で、該スレッド又は算出した計算値にエラーがあるか否かを判断する（ＳＴ３９）。ここで、エラーとは、例えば、パラメータの選択が悪く、計算が不可能な場合等である。
【０１０３】
ステップ３９において、該スレッド又は算出した計算値にエラーがない場合、図１１のＢ１へ移動する。
【０１０４】
ステップ３９において、該スレッド又は算出した計算値にエラーがある場合、ステップ４０で、並列ループ処理の戻り値をエラーとして（ＳＴ４０）、図５のメインルーチンのステップ４、図６のメインルーチンのステップ１５、又は図７のメインルーチンのステップ２１のいずれか実行したステップにリターンする。
【０１０５】
図１１は、図１０のＢ１から進んだ後の処理を示したフローチャート図である。
【０１０６】
図１０のＢ１から進んだ後、まず、ステップ４１で、ｅgの途中値ｅmid及び予測値ｅpredを算出する（ＳＴ４１）。
【０１０７】
ステップ４１では、まず、各パラメータから計算済みのＸcalcd,mを用いて、ｅmidを算出する。ｅmidは、評価関数に複数の条件を入力して順々に計算している間の途中の計算値であることを示している。
【０１０８】
評価関数値ｅmidについて、誤差の二乗平均を考える場合には、以下の式（５）を用いることができる。
【数５】
2013161263.tif 000007
【０１０９】
なお、評価関数値ｅについて、誤差の絶対値を基準として考える場合には、以下の式（６）を用いることもできる。
【数６】
2013161263.tif 000008
【０１１０】
続いて、途中値ｅmidから評価関数値ｅに基づく予測値ｅpredを算出する。予測値ｅpredは、途中値ｅmidに基づいて以下の式（７）によって定めることができる。
【数７】
2013161263.tif 000009
【０１１１】
また、特定の分布である時には、途中値ｅmidに基づいて以下の式（８）によって定めることができる。
【数８】
2013161263.tif 000010
【０１１２】
式（８）は、目標値・測定値の分布において、誤差が小さい側はほぼ０の場合に用いられ、２ｍ＜Ｍのときｌ＝２ｍであり、そうでないときｌ＝Ｍである。
【０１１３】
次に、ステップ４２で、所定条件が代入された計算途中の評価関数値である途中値ｅmidが予め定められたボーダー値Ｂより大きいか否か、又はｍ≧ｍm1のとき予測値ｅpredがボーダー値に基づく所定値ｒ1Ｂの値より大きいか否か、又はｍ＝Ｍか否かを判断する（ＳＴ４２）。
【０１１４】
なお、所定条件とは、「複数条件の途中段階での評価関数の途中の値」を求める際の直接的には各条件、間接的には計算値である。本実施形態においては、直接的な各条件は、複数条件である波長および各波長に共通の各パラメータである格子の高さ、デューティ比、間接的な計算値は式（５）のＸcalcd,mに当たる。
【０１１５】
ボーダー値Ｂは、打ち切り処理を実行するか否かを判断するために予め定められた値である。また、ｒ1は１より大きい予め定められた定数である。
【０１１６】
ステップ４２において、判断がＹＥＳの場合、図１２のＢ３に移動する。
【０１１７】
ステップ４２において、判断がＮＯの場合、ステップ４３で、スレッドカウンタｃから１を引く（ＳＴ４３）。
【０１１８】
次に、ステップ４４へ進む。ステップ４４へは、ステップ３５において、スレッドカウンタｃ＞最大スレッド数でない場合に移動した図１０のＢ２からも進んでくる。
【０１１９】
ステップ４４で、複数の条件のうち、対応する条件の計算を投入し、その計算のプロセスＩＤを取得する（ＳＴ４４）。
【０１２０】
続いて、ステップ４５で、複数の条件の条件番号に１を加え、スレッドカウンタｃに１を加える（ＳＴ４５）。
【０１２１】
次に、ステップ４６で、ｍをインクリメントし、ｍ＝ｍ＋１とする（ＳＴ４６）。そして、図１０のＢ４へ移動し、ステップ３２へ戻る。
【０１２２】
図１２は、図１０又は図１１のＢ３から進んだ後の処理を示したフローチャート図である。
【０１２３】
図１０又は図１１のＢ３から進んだ後、まず、ステップ４７で、スレッド番号を１とする（ＳＴ４７）。
【０１２４】
次に、ステップ４８で、スレッド番号≦最大スレッド数を満足するか否かを判断する（ＳＴ４８）。
【０１２５】
ステップ４８において、スレッド番号≦最大スレッド数を満足しないと判断した場合、図１４のＢ７に移動する。
【０１２６】
ステップ４８において、スレッド番号≦最大スレッド数を満足すると判断した場合、ステップ４９で、該スレッド番号が実行中か否かを判断する（ＳＴ４９）。
【０１２７】
ステップ４９において、該スレッド番号が実行中でないと判断した場合、ステップ４８に戻る。
【０１２８】
ステップ４９において、該スレッド番号が実行中であると判断した場合、ステップ５０で、所定条件が代入された計算途中の評価関数値である途中値ｅmidが予め定められたボーダー値Ｂより大きいか否か、又はｍ≧ｍ1のとき予測値ｅpredがボーダー値に基づく所定値ｒ1Ｂの値より大きいか否かを判断する（ＳＴ５０）。
【０１２９】
ボーダー値Ｂは、打ち切り処理を実行するか否かを判断するために予め定められた値である。また、ｒ1は１より大きい予め定められた定数である。
【０１３０】
ステップ５０において、判断がＮＯの場合、図１３のＢ５に移動する。
【０１３１】
ステップ５０において、判断がＹＥＳの場合、ステップ５１で、該スレッド番号に対応するプロセスを強制終了し（ＳＴ５１）、ステップ４８に戻る。
【０１３２】
図１３は、図１２のＢ５から進んだ後の処理を示したフローチャート図である。
【０１３３】
図１２のステップ５０において、ＮＯと判断された場合、図１２のＢ５から進んだ後、ステップ５２で、該スレッド番号に対応するプロセスが終了するまで待機する（ＳＴ５２）。
【０１３４】
次に、ステップ５３で、該スレッド番号のプロセスにエラーがあるか否かを判断する（ＳＴ５３）。ステップ５３において、該スレッド番号のプロセスにエラーがある場合、ステップ５５に進む。
【０１３５】
ステップ５３において、該スレッド番号のプロセスにエラーがない場合、ステップ５４で、出力処理として該スレッド番号に対する計算値を取得する（ＳＴ５４）。
【０１３６】
次に、ステップ５５で、該スレッド又は算出した計算値にエラーがあるか否かを判断する（ＳＴ５５）。ここで、エラーとは、例えば、パラメータの選択が悪く、計算が不可能な場合等である。
【０１３７】
ステップ５５において、該スレッド又は算出した計算値にエラーがある場合、ステップ５６で、並列ループ処理の戻り値をエラーとして（ＳＴ５６）、図５のメインルーチンのステップ４、図６のメインルーチンのステップ１５、又は図７のメインルーチンのステップ２１のいずれか実行したステップにリターンする。
【０１３８】
ステップ５５において、該スレッド又は算出した計算値にエラーがない場合、ステップ５７で、ｅgの途中値ｅmid及び予測値ｅpredを算出し（ＳＴ５７）、図１２のＢ６に移動する。なお、途中値ｅmid及び予測値ｅpredの算出方法は、ステップ４１と同様である。
【０１３９】
図１４は、図１２のＢ７から進んだ後の処理を示したフローチャート図である。
【０１４０】
図１２のＢ７から進んだ後、まず、ステップ５８で、ｍ＝Ｍを満足するか否かを判断する（ＳＴ５８）。
【０１４１】
ステップ５８において、ｍ＝Ｍを満足する場合、ステップ５９で、ｅgを算出する（ＳＴ５９）。
【０１４２】
ステップ５８において、ｍ＝Ｍを満足しない場合、ステップ６０で、仮のｅgを算出する（ＳＴ６０）。
【０１４３】
次に、ステップ６１で、並列ループ処理の戻り値を正常として（ＳＴ６１）、図５のメインルーチンのステップ４、図６のメインルーチンのステップ１５、又は図７のメインルーチンのステップ２１のいずれか実行したステップにリターンする。
【０１４４】
表１は、従来のパラメータフィッティング方法と、第１実施形態によるパラメータフィッティング方法とで、全ての世代を計算した場合のトータル計算時間の比を示すものである。なお、従来の方法による計算時間を１として規格化してある。表１からもわかるように、第１実施形態に係るパラメータフィッティング方法を採用することにより、従来の方法に比べて、計算時間をおよそ８割程度削減することが可能となる。
【０１４５】
【表１】
2013161263.tif 000011
【０１４６】
以上のように、第１実施形態に係るパラメータフィッティング方法によれば、パラメータの組を多数計算する際、複数条件の計算を行う場合に、複数条件の途中段階で評価関数値の途中の値や予測値を用いて、適宜打ち切り処理を行うと共に、各処理を個体中の複数の条件毎に割り当てて、処理を複数のＣＰＵで並列に行う並列処理を行うので、遺伝的アルゴリズムを用いて高速に計算することが可能となる。
【０１４７】
次に、第２実施形態のパラメータフィッティング方法について説明する。
【０１４８】
図１５〜図２０は、第２実施形態のパラメータフィッティング方法のメインフローチャートを示す図である。
【０１４９】
第２実施形態のパラメータフィッティング方法では、図１５に示すように、最初に、ＳＴ１０１〜ＳＴ１０２で、初期設定を行う。
【０１５０】
すなわち、ステップ１０１で、初期状態のｔ個の各変数ｖ0k（1≦k≦t）の値の読み込みを行う（ＳＴ１０１）。
【０１５１】
次に、ステップ１０２で、遺伝的アルゴリズム各世代ｇの個体数Ｎg及び第１世代の各変数の範囲ｖ1kmin，ｖ1kmaxを設定する（ＳＴ１０２）。変数ｖgkは、格子部１ｂの高さｄ、格子部１ｂの各層のデューティ比（＝幅／周期Λ）ｆ1〜ｆ7、格子部１ｂの周期Λ等を、例えば、ｖg1＝ｄ、ｖg2＝ｆ1、ｖg3＝Λ等で表し、範囲はパーセントとしても実寸などの実の値としてもよい。
【０１５２】
次に、ステップ１０３で、各スレッドに対応したプロセスＩＤ、処理スイッチを初期化する（ＳＴ１０３）。
【０１５３】
次に、図１５及び図１６に示すように、遺伝的アルゴリズムの第１世代として、まず、以下のＳＴ１０４〜ＳＴ１１７を個体数Ｎ1（Ｎgのｇ＝１：第１世代の個体数）個について繰り返す。
【０１５４】
まず、ステップ１０４で、処理が実行中でないスレッドを探して、そのスレッド番号を取得する（ＳＴ１０４）。ここで、スレッドに応じた複数の条件のカウンタをｍ（スレッド番号）＝１とする。なお、第１実施形態では、該カウンタをｍで表記したが、第２実施形態では、ｍ（スレッド番号）と表記し、それぞれ個体の中で計算済みの条件の個数を示す。これは、第１実施形態では、各処理を個体中の複数の条件毎に割り当てていて同時に１つの個体の計算しか行なわないためｍは１つで良く、第２実施形態では、各処理を個体毎に割り当てていて同時に複数の個体を計算するためｍが複数必要なためである。そこで、１つのスレッド番号は１つの個体に対応している。
【０１５５】
次に、ステップ１０５で、各変数ｖ0kから各変数ｖ1kの値を設定した範囲内でランダムに決定する（ＳＴ１０５）。
【０１５６】
次に、ステップ１０６で、処理スイッチを割り当てありとする（ＳＴ１０６）。
【０１５７】
次に、ステップ１０７で、サブルーチンである並列メイン処理を実行する（ＳＴ１０７）。並列メイン処理については、後述する。
【０１５８】
次に、ステップ１０８で、並列メイン処理からの戻り値がエラーであるか否かを判断する（ＳＴ１０８）。
【０１５９】
ステップ１０８において、並列メイン処理からの戻り値がエラーである場合、ステップ１０５に戻る。
【０１６０】
ステップ１０８において、並列メイン処理からの戻り値がエラーでない場合、ステップ１０９で、並列メイン処理で算出した評価関数値ｅ1（ｅgのｇ＝１：第１世代の評価関数値）が設定した閾値よりも小さいか否かを判断する（ＳＴ１０９）。評価関数値ｅ1は式（２）を用いて算出する。また、閾値は十分に小さい値を選ぶ。
【０１６１】
ステップ１０９において、並列メイン処理で算出した評価関数値ｅ1が設定した閾値よりも小さいと判断した場合、それ以上の演算は必要なく収束したものと判断して処理を終了する。
【０１６２】
ステップ１０９において、並列メイン処理で算出した評価関数値ｅ1が設定した閾値以上と判断した場合、ステップ１１０で、スレッドカウンタｃを戻り値とする（ＳＴ１１０）。
【０１６３】
次に、ステップ１１１で、第１世代の個体数Ｎ1だけ全部終了したか否かを判断する（ＳＴ１１１）。
【０１６４】
ステップ１１１において、評価関数値ｅ1の算出が個体数Ｎ1だけ全部終了していない場合、ステップ１０４に戻る。したがって、各変数ｖ0kから各変数ｖ1kの値を設定した範囲内でランダムに選んだ個体について評価関数値ｅ1の算出を行うことを、個体数Ｎ1だけ全部終了するまで同様に繰り返す。
【０１６５】
ステップ１１１において、評価関数値ｅ1の算出が個体数Ｎ1だけ全部終了した場合、図１６のＣ１に進む。
【０１６６】
図１６は、図１５のＣ１から進んだ後の処理を示したフローチャート図である。
【０１６７】
図１５のＣ１から進んだ後、まず、ステップ１１２で、サブルーチンである並列終了処理を実行する（ＳＴ１１２）。並列終了処理については、後述する。
【０１６８】
次に、ステップ１１３で、並列終了処理からの戻り値がエラーであるか否かを判断する（ＳＴ１１３）。
【０１６９】
ステップ１１３において、並列終了処理からの戻り値がエラーである場合、図１５のＣ２に進み、ステップ１０５に戻る。
【０１７０】
ステップ１１３において、並列終了処理からの戻り値がエラーでない場合、ステップ１１４で、並列終了処理で算出した評価関数値ｅ1（ｅgのｇ＝１：第１世代の評価関数値）が設定した閾値よりも小さいか否かを判断する（ＳＴ１１４）。評価関数値ｅ1は式（２）を用いて算出する。また、閾値は十分に小さい値を選ぶ。
【０１７１】
ステップ１１４において、並列終了処理で算出した評価関数値ｅ1が設定した閾値よりも小さいと判断した場合、それ以上の演算は必要なく収束したものと判断して処理を終了する。
【０１７２】
ステップ１１４において、並列終了処理で算出した評価関数値ｅ1が設定した閾値以上と判断した場合、ステップ１１５で、スレッドカウンタｃを戻り値とする（ＳＴ１１５）。
【０１７３】
次に、ステップ１１６で、Ｎ1個の個体それぞれの確率ｐ1（ｐgのｇ＝１：第１世代の確率）を算出する（ＳＴ１１６）。確率ｐは、ｑを各個体の評価関数値ｅが大きければ大きい程小さな値として、式（４）のように、Ｎ個のｑの総和でそれぞれのｑを規格化したもので定義する。ここでは、ｑ＝ｅ-4とした。また、他にｅ-3を用いてもよい。ただし、ｅ-1、ｅ-2を用いると、収束が遅くなり、好ましくない。
【０１７４】
次に、ステップ１１７で、第１世代の個体数Ｎ1の評価関数値ｅ1、確率ｐ1、各変数ｖ1kのリストを作成し、遺伝的アルゴリズムの第１世代の演算を終えて（ＳＴ１１７）、図１７のＣ３へ移動する。
【０１７５】
図１７は、遺伝的アルゴリズムの第２世代以降の各世代の優先遺伝を示すフローチャートであって、図１６のＣ３から進んだ後の処理を示したフローチャート図である。
【０１７６】
図１７〜図２０は、各世代で繰り返し行う処理である。
【０１７７】
図１６のＣ３から進んだ後、まず、ステップ１１８で、今世代の個体数Ｎgの各変数ｖgkの値を決定する際の範囲（ｖgkmin，ｖgkmax）を設定する（ＳＴ１１８）。この処理は、ステップ１０２での設定と同様に範囲はパーセントとしても実寸としてもよい。その範囲の値は、第１世代と同じでも、何世代か毎に少しずつ小さくしていってもよい。
【０１７８】
次に、ステップ１１９で、優性遺伝の個体数ＮA,g個、突然変異の個体数ＮB,g個を設定する（ＳＴ１１９）。今世代の個体数はＮgであるから、通常の遺伝の個体数は残りのＮg−（ＮA,g＋ＮB,g）となる。
【０１７９】
次に、優性遺伝のステップ１２０へ進み、前世代のリストの中、評価関数値ｅg-1が最も良い（小さい）方からＮA,g個までの、すなわち、優性な個体の評価関数値ｅg-1、確率ｐg-1、各変数ｖg-1,kのリストを今世代にそのまま継承（ＮA,g個について繰り返し）する（ＳＴ１２０）。
【０１８０】
次に、ステップ１２１で、各スレッドに対応したプロセスＩＤ、処理スイッチを初期化して（ＳＴ１２１）、図１８のＣ４に進む。
【０１８１】
図１８は、突然変異を示すフローチャートであって、図１７のＣ４から進んだ後の処理を示したフローチャート図である。
【０１８２】
図１７のＣ４から進んだ後、まず、突然変異として、ステップ１２２で、処理が実行中でないスレッドを探して、そのスレッド番号を取得する（ＳＴ１２２）。ここで、スレッドに応じた複数の条件のカウンタをｍ（スレッド番号）＝１とする。
【０１８３】
次に、ステップ１２３で、前世代の中から１つの個体をリストの確率で重み付けてランダムに選定する（ＳＴ１２３）。この際、ステップ１２０で選択されたものも重複して選定される可能性がある。
【０１８４】
次に、ステップ１２４で、所定の範囲内でランダムに選んだ一定値（一般的に各変数により異なる値）を選定されたその個体の各変数ｖg-1,kに付加し、今世代の各変数ｖg,kの値に設定する（ＳＴ１２４）。この一定値は負の値も含むので、一定値を付加したものが負となる場合は、０とする。この一定値の範囲は、ステップ１１８で設定した範囲を超えた範囲内でランダムに選ぶ。
【０１８５】
次に、ステップ１２５で、処理スイッチを割り当てありとする（ＳＴ１２５）。
【０１８６】
次に、ステップ１２６で、サブルーチンである並列メイン処理を実行する（ＳＴ１２６）。並列メイン処理については、後述する。
【０１８７】
次に、ステップ１２７で、並列メイン処理からの戻り値がエラーであるか否かを判断する（ＳＴ１２７）。
【０１８８】
ステップ１２７において、並列メイン処理からの戻り値がエラーである場合、ステップ１２３に戻る。
【０１８９】
ステップ１２７において、並列メイン処理からの戻り値がエラーでない場合、ステップ１２８で、並列メイン処理で算出した評価関数値ｅgが設定した閾値よりも小さいか否かを判断する（ＳＴ１２８）。評価関数値ｅgは式（２）を用いて算出する。また、閾値は十分に小さい値を選ぶ。
【０１９０】
ステップ１２８において、並列メイン処理で算出した評価関数値ｅgが設定した閾値よりも小さいと判断した場合、それ以上の演算は必要なく収束したものと判断して処理を終了する。
【０１９１】
ステップ１２８において、並列メイン処理で算出した評価関数値ｅgが設定した閾値以上と判断した場合、ステップ１２９で、スレッドカウンタｃを戻り値とする（ＳＴ１２９）。
【０１９２】
次に、ステップ１３０で、今世代の突然変異の個体数ＮB,g個の処理が終わったか否か（優性遺伝の個体数ＮA,g個を加えると、ＮA,g＋ＮB,g個の処理が終わったか否か）を判断する（ＳＴ１３０）。
【０１９３】
ステップ１３０において、個体数ＮB,g個の処理が終了していないと判断した場合、ステップ１２２に戻る。そして、新たに設定した変数ｖgkの個体について評価関数値ｅgの算出を行い、個体数ＮB,g個の処理が終了するまで、ステップ１２２〜ステップ１３０の処理を同様に繰り返す。
【０１９４】
ステップ１３０において、個体数ＮB,g個の処理が終了したと判断した場合、図１９のＣ５に進む。
【０１９５】
なお、以上の処理は、ランダムな乱数以外に、通常の最適化方法を用いることも考えられる。
【０１９６】
さらに、以上の優性遺伝、突然変異の他に遺伝的アルゴリズムの交叉（異なる２つの個体のｔ個の変数ｖgkを途中で相互に入れ換える。）等を入れることも考えられる。
【０１９７】
図１９は、通常の遺伝を示すフローチャートであって、図１８のＣ５から進んだ後の処理を示したフローチャート図である。
【０１９８】
以上の第２世代以降の各世代の優性遺伝と突然変異の処理の後に、図１９に示す通常の遺伝を示すフローチャートの処理が行われる。すなわち、図１８のＣ５から進んだステップ１３１で、処理が実行中でないスレッドを探して、そのスレッド番号を取得する（ＳＴ１３１）。
【０１９９】
次に、ステップ１３２で、前世代の中から１つの個体をリストの確率で重み付けてランダムに選定する（ＳＴ１３２）。この際、ステップ１２０，１２３で選択されたものも重複して選定される可能性がある。
【０２００】
次に、ステップ１３３で、前世代から選定した個体の各変数ｖg-1,kから今世代の各変数ｖgkの値を設定した範囲内でランダムに決定する（ＳＴ１３３）。
【０２０１】
次に、ステップ１３４で、処理スイッチを割り当てありとする（ＳＴ１３４）。
【０２０２】
次に、ステップ１３５で、サブルーチンである並列メイン処理を実行する（ＳＴ１３５）。並列メイン処理については、後述する。
【０２０３】
次に、ステップ１３６で、並列メイン処理からの戻り値がエラーであるか否かを判断する（ＳＴ１３６）。
【０２０４】
ステップ１３６において、並列メイン処理からの戻り値がエラーである場合、ステップ１３２に戻る。
【０２０５】
ステップ１３６において、並列メイン処理からの戻り値がエラーでない場合、ステップ１３７で、並列メイン処理で算出した評価関数値ｅgが設定した閾値よりも小さいか否かを判断する（ＳＴ１３７）。変数ｖgkの個体についての評価関数値ｅgは、式（２）を用いて算出する。また、閾値は十分に小さい値を選ぶ。
【０２０６】
ステップ１３７において、並列メイン処理で算出した評価関数値ｅgが設定した閾値よりも小さいと判断した場合、それ以上の演算は必要なく収束したものと判断して処理を終了する。
【０２０７】
ステップ１３７において、並列メイン処理で算出した評価関数値ｅgが設定した閾値以上と判断した場合、ステップ１３８で、スレッドカウンタｃを戻り値とする（ＳＴ１３８）。
【０２０８】
次に、ステップ１３９で、今世代の通常遺伝の個体数Ｎg−（ＮA,g＋ＮB,g）個の処理が終わったか否か（優性遺伝の個体数ＮA,g個、突然変異の個体数ＮB,g個を加えると、Ｎg個の処理が終わったか否か）を判断する（ＳＴ１３９）。
【０２０９】
ステップ１３９において、個体数Ｎg−（ＮA,g＋ＮB,g）個の処理が終了していないと判断した場合、ステップ１３１に戻る。そして、新たに設定した変数ｖgkの個体について評価関数値ｅgの算出を行い、個体数Ｎg−（ＮA,g＋ＮB,g）個の処理が終了するまで、ステップ１３１〜ステップ１３９の処理を同様に繰り返す。
【０２１０】
ステップ１３９において、評価関数値ｅgの算出が個体数Ｎg−（ＮA,g＋ＮB,g）個だけ全部終了した場合、図２０のＣ６に進む。
【０２１１】
図２０は、図１９のＣ６から進んだ後の処理を示したフローチャート図である。
【０２１２】
図１９のＣ６から進んだ後、まず、ステップ１４０で、サブルーチンである並列終了処理を実行する（ＳＴ１４０）。並列終了処理については、後述する。
【０２１３】
次に、ステップ１４１で、並列終了処理からの戻り値がエラーであるか否かを判断する（ＳＴ１４１）。
【０２１４】
ステップ１４１において、並列終了処理からの戻り値がエラーである場合、図１９のＣ７に進み、ステップ１３２に戻る。
【０２１５】
ステップ１４１において、並列終了処理からの戻り値がエラーでない場合、ステップ１４２で、並列終了処理で算出した評価関数値ｅgが設定した閾値よりも小さいか否かを判断する（ＳＴ１４２）。変数ｖgkの個体についての評価関数値ｅgは、式（２）を用いて算出する。また、閾値は十分に小さい値を選ぶ。
【０２１６】
ステップ１４２において、並列終了処理で算出した評価関数値ｅgが設定した閾値よりも小さいと判断した場合、それ以上の演算は必要なく収束したものと判断して処理を終了する。
【０２１７】
ステップ１４２において、並列終了処理で算出した評価関数値ｅgが設定した閾値以上と判断した場合、ステップ１４３で、スレッドカウンタｃを戻り値とする（ＳＴ１４３）。
【０２１８】
次に、ステップ１４４で、Ｎg個の個体それぞれの確率ｐgを算出する（ＳＴ１４４）。確率ｐgは、式（４）を用いて算出する。
【０２１９】
次に、ステップ１４５で、今世代の個体数Ｎgの評価関数値ｅg、確率ｐg、各変数ｖgkのリストを作成する（ＳＴ１４５）。
【０２２０】
次に、ステップ１４６で、終了条件を満たすか否かを判断する（ＳＴ１４６）。終了条件としては、世代数が所定の値までや、評価関数値の世代中の最小値が所定の値になるまでや、評価関数値の世代中の最小値がほとんど変わらなくなるまで等がある。
【０２２１】
ステップ１４６において、終了条件を満たさない場合、図１７のＣ３へ戻り、次の世代の処理を同様に行う。
【０２２２】
ステップ１４６において、終了条件を満たした場合、処理を終了する。
【０２２３】
次に、サブルーチンである並列メイン処理について説明する。
【０２２４】
まず、並列メイン処理について簡単に説明する。図２１及び図２２は、第２実施形態の並列化処理を模式的に示す図である。
【０２２５】
第２実施形態の並列化処理は、各処理を個体毎に割り当てる処理である。個体１の条件、個体２の条件、個体３の条件・・・をそれぞれ１から順に並列に処理する。
【０２２６】
例えば、１つの個体に条件が６つあり、システムが３つの処理を同時に実行できる場合、まず、図２１に示すように、個体１の条件１を第１処理部で行い、個体２の条件１を第２処理部で行い、個体３の条件１を第３処理部で行う。次に、図２２に示すように、個体１の条件２を第１処理部で行い、個体２の条件２を第２処理部で行い、個体３の条件２を第３処理部で行う。その後、順に個体１の条件３、個体２の条件３・・・最後の個体の条件と処理していく。
【０２２７】
また、各処理部の処理は、それぞれ他の処理部の処理を追い越してもよい。例えば、個体１の条件６を第１処理部が終了する前に個体２の条件６を第２処理部が終了した場合、個体４を第２処理部が処理するように設定することが可能である。
【０２２８】
図２３〜図２５は、第２実施形態のサブルーチンである並列メイン処理のフローチャートを示す図である。
【０２２９】
次に、図２３〜図２５に示したサブルーチンである並列メイン処理についてフローを用いて説明する。並列メイン処理は、図１５のメインルーチンのステップ１０７、図１８のメインルーチンのステップ１２６、及び図１９のメインルーチンのステップ１３５で実行される。
【０２３０】
図２３に示すように、まず、ステップ１５１で、初期条件を設定する（ＳＴ１５１）。初期条件は、ｍ1＝ｒ2Ｍによって、必要最小個数ｍ1が計算される。ここで、Ｍは全ての条件の総数であり、ｒ2は０＜ｒ2＜１を満たす定数である。
【０２３１】
次に、ステップ１５２で、引数としてスレッドカウンタｃを入力する（ＳＴ１５２）。
【０２３２】
次に、ステップ１５３で、スレッドカウンタｃ＞最大スレッド数であるか否かを判断する（ＳＴ１５３）。
【０２３３】
ステップ１５３において、スレッドカウンタｃ＞最大スレッド数でない場合、ステップ１５４で、並列メイン処理の戻り値をスレッドカウンタｃとする（ＳＴ１５４）。そして、図１５のメインルーチンのステップ１０７、図１８のメインルーチンのステップ１２６、図１９のメインルーチンのステップ１３５のいずれか実行したステップにリターンする。
【０２３４】
ステップ１５３において、スレッドカウンタｃ＞最大スレッド数である場合、図２４のＤ１へ進む。
【０２３５】
図２４は、図２３のＤ１から進んだ後の処理を示したフローチャート図である。
【０２３６】
図２３のＤ１から進んだ後、まず、ステップ１５５で、複数の条件のうち、ｍ（スレッド番号）に対応する条件の計算を投入し、その計算のプロセスＩＤを取得する（ＳＴ１５５）。
【０２３７】
次に、ステップ１５６で、処理が実行中でないスレッドを探し、そのスレッド番号を取得する（ＳＴ１５６）。
【０２３８】
次に、ステップ１５７で、実行中でないスレッドのプロセスにエラーがあるか否かを判断する（ＳＴ１５７）。ステップ１５７において、実行中でないスレッドのプロセスにエラーがある場合、ステップ１５５に戻る。
【０２３９】
ステップ１５７において、実行中でないスレッドのプロセスにエラーがない場合、ステップ１５８で、出力処理として該スレッド番号に対する計算値を取得する（ＳＴ１５８）。
【０２４０】
次に、ステップ１５９で、該出力処理にエラーがあるか否かを判断する（ＳＴ１５９）。ここで、エラーとは、例えば、パラメータの選択が悪く、計算が不可能な場合等である。
【０２４１】
ステップ１５９において、該スレッド又は算出した計算値にエラーがある場合、図２５のＤ２へ移動する。
【０２４２】
ステップ１５９において、該スレッド又は算出した計算値にエラーがない場合、ステップ１６０で、サブルーチンの並列停止処理を実行する（ＳＴ１６０）。並列停止処理については後述する。
【０２４３】
次に、ステップ１６１で、並列停止処理で算出した評価関数値ｅgが設定した閾値よりも小さいか否かを判断する（ＳＴ１６１）。評価関数値ｅgは式（２）を用いて算出する。また、閾値は十分に小さい値を選ぶ。
【０２４４】
ステップ１６１において、並列停止処理で算出した評価関数値ｅgが設定した閾値よりも小さいと判断した場合、ステップ１６２で、並列メイン処理の戻り値を収束とする（ＳＴ１６２）。そして、図１５のメインルーチンのステップ１０７、図１８のメインルーチンのステップ１２６、又は図１９のメインルーチンのステップ１３５のいずれか実行したステップにリターンする。
【０２４５】
ステップ１６１において、並列停止処理で算出した評価関数値ｅgが設定した閾値以上と判断した場合、図２５のＤ２へ進む。
【０２４６】
図２５は、図２４のＤ２から進んだ後の処理を示したフローチャート図である。
【０２４７】
図２４のＤ２から進んだ後、まず、ステップ１６３で、該出力処理にエラーがあるか否かを判断する（ＳＴ１６３）。ここで、エラーとは、例えば、パラメータの選択が悪く、計算が不可能な場合等である。
【０２４８】
ステップ１６３において、該出力処理にエラーがあると判断した場合、ステップ１６４で、処理スイッチを割り当てなしとする（ＳＴ１６４）。
【０２４９】
次に、ステップ１６５で、並列メイン処理の戻り値をエラーとして（ＳＴ１６５）、図１５のメインルーチンのステップ１０７、図１８のメインルーチンのステップ１２６、又は図１９のメインルーチンのステップ１３５のいずれか実行したステップにリターンする。
【０２５０】
ステップ１６３において、該出力処理にエラーがないと判断した場合、ステップ１６６で、処理スイッチが割り当てなしか否かを判断する（ＳＴ１６６）。
【０２５１】
ステップ１６６において、処理スイッチが割り当てなしと判断した場合、ステップ１６７で、スレッドカウンタｃから１を引き（ＳＴ１６７）、図２３のＤ３に進み、並列メイン処理の開始であるステップ１５１へ戻る。
【０２５２】
ステップ１６６において、処理スイッチが割り当てありと判断した場合、図２３のＤ３に進み、並列メイン処理の開始であるステップ１５１へ戻る。
【０２５３】
図２６〜図２８は、第２実施形態のサブルーチンである並列終了処理のフローチャートを示す図である。
【０２５４】
次に、図２６〜図２８に示したサブルーチンである並列終了処理についてフローを用いて説明する。並列終了処理は、図１６のメインルーチンのステップ１１２及び図２０のメインルーチンのステップ１４０で実行される。
【０２５５】
図２６に示すように、まず、ステップ１７１で、引数としてスレッドカウンタｃを入力する（ＳＴ１７１）。
【０２５６】
次に、ステップ１７２で、スレッドカウンタｃ＞１であるか否かを判断する（ＳＴ１７２）。
【０２５７】
ステップ１７２において、スレッドカウンタｃ＞１でない場合、ステップ１７３で、並列終了処理の戻り値をスレッドカウンタｃとする（ＳＴ１７３）。そして、図１６のメインルーチンのステップ１１２又は図２０のメインルーチンのステップ１４０のいずれか実行したステップにリターンする。
【０２５８】
ステップ１７２において、スレッドカウンタｃ＞１である場合、図２７のＥ１へ進む。
【０２５９】
図２７は、図２６のＥ１から進んだ後の処理を示したフローチャート図である。
【０２６０】
図２６のＥ１から進んだ後、まず、ステップ１７４で、処理が実行中でないスレッドを探し、そのスレッド番号を取得する（ＳＴ１７４）。
【０２６１】
次に、ステップ１７５で、出力処理として該スレッド番号に対する計算値を取得する（ＳＴ１７５）。
【０２６２】
次に、ステップ１７６で、該出力処理にエラーがあるか否かを判断する（ＳＴ１７６）。ここで、エラーとは、例えば、パラメータの選択が悪く、計算が不可能な場合等である。
【０２６３】
ステップ１７６において、該スレッド又は算出した計算値にエラーがある場合、図２８のＥ２へ移動し、ステップ１８２に進む。
【０２６４】
ステップ１７６において、該スレッド又は算出した計算値にエラーがない場合、ステップ１７７で、サブルーチンの並列停止処理を実行する（ＳＴ１７７）。並列停止処理については後述する。
【０２６５】
次に、ステップ１７８で、並列停止処理で算出した評価関数値ｅgが設定した閾値よりも小さいか否かを判断する（ＳＴ１７８）。評価関数値ｅgは式（２）を用いて算出する。また、閾値は十分に小さい値を選ぶ。
【０２６６】
ステップ１７８において、並列停止処理で算出した評価関数値ｅgが設定した閾値よりも小さいと判断した場合、ステップ１７９で、並列終了処理の戻り値を収束とし（ＳＴ１７９）、図１６のメインルーチンのステップ１１２又は図２０のメインルーチンのステップ１４０のいずれか実行したステップにリターンする。
【０２６７】
ステップ１７８において、並列停止処理で算出した評価関数値ｅgが設定した閾値以上と判断した場合、図２８のＥ３へ進む。
【０２６８】
図２８は、図２７のＥ３から進んだ後の処理を示したフローチャート図である。
【０２６９】
図２７のＥ３から進んだ後、まず、ステップ１８０で、複数の条件がすべて計算済みか否かを判断する（ＳＴ１８０）。
【０２７０】
ステップ１８０において、複数の条件がすべて計算済みと判断されなかった場合、ステップ１８１で、複数の条件のうち、対応する条件の計算を投入し、その計算のプロセスＩＤを取得する（ＳＴ１８１）。
【０２７１】
ステップ１８０において、複数の条件がすべて計算済みと判断された場合、ステップ１８２に進む。
【０２７２】
次に、ステップ１８２で、該出力処理にエラーがあるか否かを判断する（ＳＴ１８２）。ここで、エラーとは、例えば、パラメータの選択が悪く、計算が不可能な場合等である。
【０２７３】
ステップ１８２において、該出力処理にエラーがあると判断した場合、ステップ１８３で、処理スイッチを割り当てなしとする（ＳＴ１８３）。
【０２７４】
次に、ステップ１８４で、並列終了処理の戻り値をエラーとし（ＳＴ１８４）、図１６のメインルーチンのステップ１１２又は図２０のメインルーチンのステップ１４０のいずれか実行したステップにリターンする。
【０２７５】
ステップ１８２において、該出力処理にエラーがないと判断した場合、ステップ１８５で、処理スイッチが割り当てなしか否かを判断する（ＳＴ１８５）。
【０２７６】
ステップ１８５において、処理スイッチが割り当てなしと判断した場合、ステップ１８６で、スレッドカウンタｃから１を引き（ＳＴ１８６）、図２６のＥ４に進み、並列終了処理の開始であるステップ１７１へ戻る。
【０２７７】
ステップ１８５において、処理スイッチが割り当てありと判断した場合、図２６のＥ４に進み、並列終了処理の開始であるステップ１７１へ戻る。
【０２７８】
図２９及び図３０は、第２実施形態のサブルーチンである並列停止処理のフローチャートを示す図である。
【０２７９】
次に、図２９及び図３０に示したサブルーチンである並列停止処理についてフローを用いて説明する。並列停止処理は、図２４の並列メイン処理のステップ１６０及び図２７の並列終了処理のステップ１７７で実行される。
【０２８０】
ステップ１９１で、出力処理として該スレッド番号に対する計算値Ｘcalcd,mを取得する（ＳＴ１９１）。
【０２８１】
次に、ステップ１９２で、計算値にエラーがあるか否かを判断する（ＳＴ１９２）。ここで、エラーとは、例えば、計算値が有り得ない値（効率が０％未満や100％より大きい）の場合等である。
【０２８２】
ステップ１９２において、算出した計算値にエラーがある場合、ステップ１９３で、並列停止処理の戻り値をエラーとし、処理スイッチを割り当てなしとして（ＳＴ１９３）、図２４の並列メイン処理のステップ１６０又は図２７の並列終了処理のステップ１７７にリターンする。
【０２８３】
ステップ１９２において、該計算値にエラーがない場合、ステップ１９４で、並列停止処理の戻り値を正常とする（ＳＴ１９４）。
【０２８４】
次に、ステップ１９５で、ｅgの途中値ｅmid及び予測値ｅpredを算出する（ＳＴ１９５）。ステップ１９５では、途中値ｅmidを算出するために式（５）又は式（６）を用い、予測値ｅpredを算出するために式（７）又は式（８）を用いることができる。
【０２８５】
次に、ステップ１９６で、所定条件が代入された計算途中の評価関数値である途中値ｅmidが予め定められたボーダー値Ｂより大きいか否か、又はｍ（スレッド番号）≧ｍ1のとき予測値ｅpredがボーダー値に基づく所定値ｒ1Ｂの値より大きいか否か、又はｍ（スレッド番号）＝Ｍか否かを判断する（ＳＴ１９６）。
【０２８６】
ボーダー値Ｂは、打ち切り処理を実行するか否かを判断するために予め定められた値である。また、ｒ1は１より大きい予め定められた定数である。
【０２８７】
ステップ１９６において、ＮＯと判断した場合、ステップ１９７で、ｍ（スレッド番号）をインクリメントし、ｍ（スレッド番号）＝ｍ（スレッド番号）＋１として（ＳＴ１９７）、図２４の並列メイン処理のステップ１６０又は図２７の並列終了処理のステップ１７７にリターンする。
【０２８８】
ステップ１９６において、ＹＥＳと判断した場合、図３０のＦ１に進む。
【０２８９】
図３０は、図２９のＦ１から進んだ後の処理を示したフローチャート図である。
【０２９０】
図２９のＦ１から進んだ後、まず、ステップ１９８で、ｍ（スレッド番号）＝Ｍを満足するか否かを判断する（ＳＴ１９８）。
【０２９１】
ステップ１９８において、ｍ（スレッド番号）＝Ｍを満足する場合、ステップ１９９で、ｅgを算出する（ＳＴ１９９）。
【０２９２】
ステップ１９８において、ｍ（スレッド番号）＝Ｍを満足しない場合、ステップ２００で、仮のｅgを算出する（ＳＴ２００）。
【０２９３】
次に、ステップ２０１で、処理スイッチを割り当てなしとする（ＳＴ２０１）。
【０２９４】
次に、ステップ２０２で、並列停止処理で算出した評価関数値ｅgが設定した閾値よりも小さいか否かを判断する（ＳＴ２０２）。評価関数値ｅgは式（２）を用いて算出する。また、閾値は十分に小さい値を選ぶ。
【０２９５】
ステップ２０２において、並列停止処理で算出した評価関数値ｅgが設定した閾値よりも小さいと判断した場合、ステップ２０３で、並列停止処理の戻り値を収束とし（ＳＴ２０３）、図２４の並列メイン処理のステップ１６０及び図２７の並列終了処理のステップ１７７のいずれか実行したステップにリターンする。
【０２９６】
ステップ２０２において、並列停止処理で算出した評価関数値ｅgが設定した閾値以上と判断した場合、図２４の並列メイン処理のステップ１６０又は図２７の並列終了処理のステップ１７７のいずれか実行したステップにリターンする。
【０２９７】
表２は、従来のパラメータフィッティング方法と、第２実施形態によるパラメータフィッティング方法とで、全ての世代を計算した場合のトータル計算時間の比を示すものである。なお、従来の方法による計算時間を１として規格化してある。表２からもわかるように、第２実施形態に係るパラメータフィッティング方法を採用することにより、従来の方法に比べて、計算時間をおよそ９割程度削減することが可能となる。表１では各処理を個体中の複数の条件毎に割り当てていて、１つの個体の計算を１つの処理の結果から打切るときに他の処理が実行中のため（それが終了するのを待つか）それをキャンセルする必要があるが、表２では各処理を個体毎に割り当てていて、その必要がないため、より高速に計算することができる。
【０２９８】
【表２】
2013161263.tif 000012
【０２９９】
以上のように、第２実施形態に係るパラメータフィッティング方法によれば、パラメータの組を多数計算する際、複数条件の計算を行う場合に、複数条件の途中段階で評価関数値の途中の値や予測値を用いて、適宜打ち切り処理を行うと共に、各処理を個体毎に割り当てて、処理を複数のＣＰＵで並列に行う並列処理を行うので、遺伝的アルゴリズムを用いて高速に計算することが可能となる。
【０３００】
次に、本発明にかかる第３実施形態について説明する。
【０３０１】
図３１は、第３実施形態のパラメータフィッティング方法のフローチャートを示す図である。
【０３０２】
第３実施形態のパラメータフィッティング方法は、第１実施形態又は第２実施形態のパラメータフィッティング方法と併用するものである。
【０３０３】
図３１に示すように、第３実施形態では、図５のフローのＡ１又は図１６のフローのＣ３のいずれかからジャンプしてくることにより開始される。ステップ３０１では、これまで説明したボーダー値を、リストのＮA,g番目のｅgとして定める（ＳＴ３０１）。そして、ＳＴ３０１が実行されると、図６のフローのＳＴ１０又は図１７のフローのＳＴ１１８に戻るようになっている。このように、ボーダー値を世代毎に定めることで、アルゴリズムが比較的簡単ながら早い段階で打ち切り判定を行い、計算時間を短縮できる。
【０３０４】
次に、本発明にかかる第４実施形態について説明する。
【０３０５】
図３２は、第４実施形態のパラメータフィッティング方法のフローチャートを示す図である。
【０３０６】
第４実施形態のパラメータフィッティング方法は、第１実施形態又は第２実施形態のパラメータフィッティング方法と併用するものである。
【０３０７】
図３２に示すように、第４実施形態では、図５のフローのＳＴ６、図６のフローのＳＴ１７、図７のフローのＳＴ２３、又は図３０のＳＴ２０２のいずれかからジャンプしてくることにより開始される。ステップ４０１では、評価関数テーブルの書き換え判定を行い、書き換えられた場合、これまで説明したボーダー値を、評価関数テーブルのＮA,g番目のｅgとして定める（ＳＴ４０１）。そして、ＳＴ４０１が実行されると、図５のフローのＳＴ７、図６のフローのＳＴ１８、図７のフローのＳＴ２４、又は図３０のＳＴ２０３に戻るようになっている。このように、ボーダー値を世代中の個体毎に定めることで、より早い段階で打ち切り判定を行い、計算時間を短縮できる。
【０３０８】
次に、本発明にかかる第５実施形態について説明する。
【０３０９】
図３３は、第５実施形態のパラメータフィッティング方法の第１のフローチャートを示す図である。
【０３１０】
第５実施形態のパラメータフィッティング方法は、第１実施形態乃至第４実施形態のパラメータフィッティング方法と併用するものである。
【０３１１】
図３３に示すように、第５実施形態の第１のフローは、第１実施形態、第２実施形態のフローの一部を変更する場合に共通で、図５のフローの開始又は図１５のフローの開始のいずれかからジャンプしてくることにより開始される。ステップ５０１では、評価順序テーブルが作成される処理が実行される。これまでの実施形態では、ｍが１，２，３・・・の順序で計算処理が実行されていたが、第５実施形態では、ｍが１，２，３・・・に対応するｍ’の順序で計算処理を実行することで、より早い段階で打ち切り処理を行い得るようにしている。
【０３１２】
なお、第５実施形態では、式（１）に代えて式（９）、式（２）に代えて式（１０）、式（５）に代えて式（１１）、式（３）に代えて式（１２）、及び式（６）に代えて式（１３）がそれぞれ定義される。ｍ’（ｋ）が計算順序テーブルで定められた関係を示すものである。
【数９】
2013161263.tif 000013
【０３１３】
そして、ＳＴ５０１が実行されると、図５のフローのＳＴ１、又は図１５のフローのＳＴ１０１に戻るようになっている。
【０３１４】
次に、計算順序テーブルに基づいて実行される第５実施形態のパラメータフィッティング方法の第２のフローチャートについて説明する。第２のフローチャートは、第１実施形態の「並列ループ処理」、第２実施形態の「並列メイン処理」、「並列終了処理」、及び「並列停止処理」の一部を変更することで可能となる。
【０３１５】
図３４〜図３７は、第５実施形態のパラメータフィッティング方法の第２のフローチャートの一部を示す図である。
【０３１６】
まず、第１実施形態のフローの一部を変更する場合について述べる。図３４に示すように、第５実施形態の第２のフローでは、ステップ６０１が図１０の並列ループ処理のＳＴ３２とＳＴ３３の間に組み込まれる。
【０３１７】
ステップ３２において、ｍ≦Ｍである場合、ステップ６０１で、計算順序テーブル（ｍ）によって、ｍに対応する実際の計算順序であるｍ’を取得する（ＳＴ６０１）。そして、ステップ３３に進む。
【０３１８】
次に、図３５に示すように、第５実施形態の第２のフローでは、ステップ６０２が図１０の並列ループ処理のＳＴ３８及び図１３の並列ループ処理のＳＴ５４に入れ替わる。
【０３１９】
ステップ６０２では、出力処理としてスレッド番号に対する計算値（Ｘcalcd,m'）を取得する（ＳＴ６０２）。
【０３２０】
次に、第２実施形態のフローの一部を変更する場合について述べる。図３６に示すように、第５実施形態の第２のフローでは、ステップ６０３が図２４の並列メイン処理のＳＴ１５５及び図２８の並列終了処理のＳＴ１８１に入れ替わる。
【０３２１】
ステップ６０３では、複数の条件のうち、ｍ’＝計算順序テーブル（ｍ（スレッド番号））に対応する条件の計算を投入し、その計算のプロセスＩＤを取得する（ＳＴ６０３）。
【０３２２】
次に、図３７に示すように、第５実施形態の第２のフローでは、ステップ６０４が図２９の並列停止処理のＳＴ１９１に入れ替わる。
【０３２３】
ステップ６０４では、計算値（Ｘcalcd,m'）を取得する（ＳＴ６０４）。
【０３２４】
このように、第５実施形態にかかるパラメータフィッティング方法によれば、
評価関数値に所定条件を代入するときにおける所定条件の代入順序が予め定められていて測定値又は目標値が特徴的なものから順に計算するなどすると共に、複数条件の途中段階で評価関数の途中の値や予測値を用いて、適宜打ち切り処理を行うものであるので、打ち切り判定の場合は、そのパラメータの組について途中で計算を打ち切るため、計算時間を大幅に短縮することができる。
【０３２５】
図３８は、波長に対する反射率の目標値と計算値の関係を示す。
【０３２６】
図３８の「●」は目標値であり、「×」は計算値である。図３８に示すように、本実施形態のパラメータフィッティング方法を用いることにより、どの波長に対しても、反射率の目標値と計算値をほぼあわせることが可能となる。
【０３２７】
以上、パラメータフィッティング方法をいくつかの実施例に基づいて説明してきたが、本発明はこれら実施例に限定されず種々の変形が可能である。
【符号の説明】
【０３２８】
１…微細形状部材
１ａ…基板
１ｂ…格子部
１０…システムバス
１１…ＣＰＵ（Central Processing Unit）
１２…ＲＡＭ（Random Access Memory）
１３…ＲＯＭ（Read Only Memory）
１４…通信制御部
１５…入力制御部
１６…出力制御部
１７…外部記憶装置制御部
１８…入力部
１９…出力部
２０…外部記憶装置
【図１】
2013161263.tif 000014
【図２】
2013161263.tif 000015
【図３】
2013161263.tif 000016
【図４】
2013161263.tif 000017
【図５】
2013161263.tif 000018
【図６】
2013161263.tif 000019
【図７】
2013161263.tif 000020
【図８】
2013161263.tif 000021
【図９】
2013161263.tif 000022
【図１０】
2013161263.tif 000023
【図１１】
2013161263.tif 000024
【図１２】
2013161263.tif 000025
【図１３】
2013161263.tif 000026
【図１４】
2013161263.tif 000027
【図１５】
2013161263.tif 000028
【図１６】
2013161263.tif 000029
【図１７】
2013161263.tif 000030
【図１８】
2013161263.tif 000031
【図１９】
2013161263.tif 000032
【図２０】
2013161263.tif 000033
【図２１】
2013161263.tif 000034
【図２２】
2013161263.tif 000035
【図２３】
2013161263.tif 000036
【図２４】
2013161263.tif 000037
【図２５】
2013161263.tif 000038
【図２６】
2013161263.tif 000039
【図２７】
2013161263.tif 000040
【図２８】
2013161263.tif 000041
【図２９】
2013161263.tif 000042
【図３０】
2013161263.tif 000043
【図３１】
2013161263.tif 000044
【図３２】
2013161263.tif 000045
【図３３】
2013161263.tif 000046
【図３４】
2013161263.tif 000047
【図３５】
2013161263.tif 000048
【図３６】
2013161263.tif 000049
【図３７】
2013161263.tif 000050
【図３８】
2013161263.tif 000051