(57)【特許請求の範囲】
【請求項１】
複数の離散的入力値とそれぞれが前記複数の離散的入力値のそれぞれに対応している複数の離散的出力値との組合せを規定したマップを予め記憶しており、試験対象である電子制御装置から逐次入力される入力制御信号を受信して同入力制御信号に対する出力結果信号を前記マップを参照する工程を含む特定方法により算出し同算出した出力結果信号を同電子制御装置に出力するシミュレーション装置、の前記マップを生成するマップ生成装置であって、
データの削減がなされていないマップである元マップに対して、前記複数の離散的入力値の一つである特定入力値と前記元マップとにより得られる同特定入力値に対応する前記複数の離散的出力値の一つである特定出力値を、前記複数の離散的入力値のうちそれぞれが前記特定入力値とは異なる複数の入力値と前記元マップとにより得られる複数の出力値を用いて推定し、前記特定出力値と前記推定した値との差分の大きさが所定のマップ誤差閾値以下である場合に前記特定入力値と前記特定出力値との組合せを前記元マップから省略する間引き処理を繰り返し行うことにより、前記元マップのデータよりも少ない数のデータを有する間引きマップを生成するように構成されたマップ生成装置。
【請求項２】
請求項１に記載のマップ生成装置において、
前記特定方法により前記元マップを参照することによって算出される前記入力制御信号に対する第１の前記出力結果信号と、同特定方法により前記間引きマップを参照することによって算出される前記入力制御信号に対する第２の前記出力結果信号と、の差分に相関を有する精度相関値を算出し、前記精度相関値が所定のシミュレーション誤差閾値範囲に含まれるまで前記マップ誤差閾値を変更したうえで前記間引き処理を繰り返し行って前記間引きマップを更新し且つ前記精度相関値が前記シミュレーション誤差閾値範囲に含まれているときにはその時点で得られている前記間引きマップを前記シミュレーション装置が記憶するマップとして決定するように構成されたマップ生成装置。
【請求項３】
請求項２に記載のマップ生成装置において、
前記マップ誤差閾値が第１マップ誤差閾値である場合に生成された前記間引きマップに対する前記精度相関値が前記シミュレーション誤差閾値範囲の上限値より大きく、且つ、前記マップ誤差閾値が前記第１マップ誤差閾値と異なる第２マップ誤差閾値である場合に生成された前記間引きマップに対する前記精度相関値が前記シミュレーション誤差閾値範囲の下限値より小さいとき、前記第１のマップ誤差閾値と前記第２のマップ誤差閾値との平均値を前記マップ誤差閾値の変更された値として採用して前記間引きマップを更新するように構成されたマップ生成装置。
【請求項４】
複数の離散的入力値とそれぞれが前記複数の離散的入力値のそれぞれに対応している複数の離散的出力値との組合せを規定したマップを予め記憶しており、試験対象である電子制御装置から逐次入力される入力制御信号を受信して同入力制御信号に対する出力結果信号を前記マップを参照する工程を含む特定方法により算出し同算出した出力結果信号を同電子制御装置に出力するシミュレーション装置、の前記マップを生成するマップ生成方法であって、
データの削減がなされていないマップである元マップに対して、前記複数の離散的入力値の一つである特定入力値と前記元マップとにより得られる同特定入力値に対応する前記複数の離散的出力値の一つである特定出力値を、前記複数の離散的入力値のうちそれぞれが前記特定入力値とは異なる複数の入力値と前記元マップとにより得られる複数の出力値を用いて推定し、前記特定出力値と前記推定した値との差分の大きさが所定のマップ誤差閾値以下である場合に前記特定入力値と前記特定出力値との組合せを前記元マップから省略する間引き処理を繰り返し行うことにより、前記元マップのデータよりも少ない数のデータを有する間引きマップを生成する工程を含むマップ生成方法。
【請求項５】
請求項４に記載のマップ生成方法において、
前記特定方法により前記元マップを参照することによって算出される前記入力制御信号に対する第１の前記出力結果信号と、同特定方法により前記間引きマップを参照することによって算出される前記入力制御信号に対する第２の前記出力結果信号と、の差分に相関を有する精度相関値を算出し、前記精度相関値が所定のシミュレーション誤差閾値範囲に含まれるまで前記マップ誤差閾値を変更するマップ誤差閾値変更工程を実行したうえで前記間引き処理を繰り返し行って前記間引きマップを更新し且つ前記精度相関値が前記シミュレーション誤差閾値範囲に含まれているときにはその時点で得られている前記間引きマップを前記シミュレーション装置が記憶するマップとして決定する工程を含むマップ生成方法。
【請求項６】
請求項５に記載のマップ生成方法において、
前記マップ誤差閾値変更工程は、
前記マップ誤差閾値が第１マップ誤差閾値である場合に生成された前記間引きマップに対する前記精度相関値が前記シミュレーション誤差閾値範囲の上限値より大きく、且つ、前記マップ誤差閾値が前記第１マップ誤差閾値と異なる第２マップ誤差閾値である場合に生成された前記間引きマップに対する前記精度相関値が前記シミュレーション誤差閾値範囲の下限値より小さいとき、前記第１のマップ誤差閾値と前記第２のマップ誤差閾値との平均値を前記マップ誤差閾値の変更された値として採用する工程であるマップ生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力制御情報を受信したとき予め記憶しているマップを参照する工程を経て出力結果信号を算出するシミュレーション装置が参照する同マップを生成するマップ生成装置及び生成方法に関する。
【背景技術】
【０００２】
従来から、車両及び機械等に搭載される種々のアクチュエータを制御する電子制御装置（ＥＣＵ：Electronic Control Unit）の開発及び試験等のためにシミュレーション装置が用いられている（例えば、特許文献１を参照。）。このシミュレーション装置が車両用電子制御装置の開発及び試験等に用いられる場合、シミュレーション装置は、本来的には電子制御装置からアクチュエータに出力される制御信号を受信し、その制御信号に基づいて「車両が実際に走行したときにアクチュエータに係るセンサから出力されるであろう信号」を疑似的に生成する。そして、シミュレーション装置は、その生成した信号を電子制御装置に対して送信する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１６９９４５号公報
【発明の概要】
【０００４】
ところで、電動車両及びハイブリッド車両等に搭載される車両駆動用の電動機を制御するため、これらの車両には電動機制御用の電子制御装置（モーター制御ＥＣＵ）が搭載される。車両駆動用の電動機は高速回転し且つ電動機を制御するためのインバータのスイッチングも高速で行われる。従って、モーター制御ＥＣＵの開発・試験に用いられるシミュレーション装置には高速処理が要求される。
【０００５】
このような高速処理を行うＥＣＵ用のシミュレーション装置においては論理演算装置としてＦＰＧＡ（Field-Programmable Gate Array）を用いることが有効である。更に、このようなＦＰＧＡにマップ（ルックアップテーブル）を記憶（保持）させておき、ＦＰＧＡにおける演算にマップを参照する工程を含めることにより、より高速な演算処理が可能となる。
【０００６】
しかしながら、個々のＦＰＧＡチップの記憶容量には上限があるので、膨大なデータを有するマップそのものを記憶させることが困難な場合がある。その一方、マップのデータ数が単純に減少すると、シミュレーション誤差が大きくなるという問題がある。
【０００７】
本発明は、上述する課題に対処するためになされた。即ち、本発明の目的の一つは、シミュレーション精度の悪化を抑制したうえでシミュレーション装置が参照するマップのデータ数を削減することが出来るマップ生成装置を提供することである。なお、本発明のマップ生成装置が生成（決定）するマップは、モーター制御ＥＣＵ等の車両用電子制御装置の開発・試験に用いられるシミュレーション装置が記憶するマップに限定されることなく、任意の機械装置の電子制御装置の開発・試験に用いられるシミュレーション装置が記憶するマップにも当然に適用可能である。更に、本発明のマップ生成装置が生成するマップは、シミュレーション装置が論理演算装置としてＦＰＧＡ以外のデバイスを用いる場合にも当然に適用可能である。
【０００８】
上記目的を達成するためのマップ生成装置（以下、「本発明装置」とも称呼される。）は、シミュレーション装置が記憶するマップを生成（決定）する。このシミュレーション装置は、試験対象である電子制御装置から逐次入力される入力制御信号を受信し、入力制御信号に対する出力結果信号を前記マップを参照する工程を含む特定方法により算出する。更に、シミュレーション装置は、前記算出した出力結果信号を電子制御装置に出力する。
【０００９】
本発明装置が生成するマップは、ルックアップテーブルとも称呼され、「複数の離散的入力値」と「それぞれが前記複数の離散的入力値のそれぞれに対応している複数の離散的出力値」との組合せを規定している。
【００１０】
加えて、本発明装置は、
データの削減がなされていないマップである元マップに対して、以下に述べる「間引き処理」を繰り返し行うことにより、元マップのデータよりも少ない数のデータを有する間引きマップを生成する。
【００１１】
前記間引き処理は次の処理を含む。
（１）「前記複数の離散的入力値の一つである特定入力値」と「元マップ」とにより得られる「特定入力値に対応する前記複数の離散的出力値の一つ」である特定出力値を、「前記複数の離散的入力値のうちそれぞれが前記特定入力値とは異なる複数の入力値」と「前記元マップ」とにより得られる複数の出力値を用いて推定し、
（２）前記特定出力値と前記推定した値との差分の大きさが所定のマップ誤差閾値以下である場合に「前記特定入力値と前記特定出力値との組合せ」を前記元マップから省略する。
【００１２】
このように、本発明装置は、元マップに基づいて得られる特定出力値と、元マップにおけるその特定出力値に対応する特定入力値を用いることなくその特定出力値を推定した値と、の差分を評価しながら間引きマップを作成する。よって、本発明装置によれば、シミュレーション装置によるシミュレーションの精度の悪化を抑えながら、シミュレーション装置が参照するマップのデータ数を削減することが可能となる。
【００１３】
更に、本発明装置の一態様において、本発明装置は、
前記特定方法により前記元マップを参照することによって算出される前記入力制御信号に対する第１の前記出力結果信号と、
同特定方法により前記間引きマップを参照することによって算出される前記入力制御信号に対する第２の前記出力結果信号と、
の差分に相関を有する精度相関値を算出する。
【００１４】
加えて、本発明装置は、
前記精度相関値が所定のシミュレーション誤差閾値範囲に含まれるまで前記マップ誤差閾値を変更したうえで前記間引き処理を繰り返し行って前記間引きマップを更新し、且つ、
前記精度相関値が前記シミュレーション誤差閾値範囲に含まれているときにはその時点で得られている前記間引きマップを前記シミュレーション装置が記憶するマップとして決定する。
【００１５】
本発明装置が行う上記間引き処理においては、上記マップ誤差閾値が大きいほど、マップから省略することができる「離散的入力値と離散的出力値との組合せ」の数（データ数）を増加させることができる。ところが、上記マップ誤差閾値が大きいと、マップを用いた特定出力値の推定精度が低くなり、特定出力値の推定精度が低くなるほど、出力結果信号の精度も低くなる。即ち、上記マップ誤差閾値を大きくするとマップのデータを削減しない場合に得られる第１の出力結果信号と、マップのデータを削減した場合に得られる第２の出力結果信号と、の差分に相関を有する精度相関値は、シミュレーション誤差閾値範囲を超える可能性が高い。これに対し、上記マップ誤差閾値が小さくなるほど、マップから省略することができる「離散的入力値と離散的出力値との組合せ」の数（データ数）は少なくなるが、出力結果信号の精度は高くなる。以上から理解されるように、精度相関値が期待される範囲（シミュレーション誤差閾値範囲）に含まれるようにマップ誤差閾値を適切に設定する必要がある。
【００１６】
そこで、本発明装置は、上述したように、設定されたマップ誤差閾値に対応する精度相関値を取得し、その精度相関値がシミュレーション誤差閾値範囲に含まれていなければ、マップ誤差閾値を変更してから再び精度相関値を取得する処理を繰り返すことにより、適切なマップ誤差閾値を探索する。換言すれば、本発明装置は、設定したマップ誤差閾値に対して精度相関値のフィードバックを行ってマップ誤差閾値を再設定する。
【００１７】
この結果、本発明装置によれば、シミュレーションの精度を確保できる（即ち、シミュレーション誤差が所望の範囲内となる）ようにしながら、シミュレーション装置が用いるマップのデータを適切に削減することができる。換言すると、本発明装置によれば、例えば、管理者がシミュレーション誤差閾値範囲を指定することにより、精度相関値がその範囲に含まれるようにデータの削減が適切になされたマップを自動的に生成することができる。
【００１８】
更に、本発明装置の他の一態様は、
前記マップ誤差閾値が第１マップ誤差閾値である場合に生成された前記間引きマップに対する前記精度相関値が前記シミュレーション誤差閾値範囲の上限値より大きく、且つ、
前記マップ誤差閾値が前記第１マップ誤差閾値と異なる第２マップ誤差閾値である場合に生成された前記間引きマップに対する前記精度相関値が前記シミュレーション誤差閾値範囲の下限値より小さいとき、
前記第１のマップ誤差閾値と前記第２のマップ誤差閾値との平均値を前記マップ誤差閾値の変更された値として採用して前記間引きマップを更新するように構成されている。
【００１９】
この態様によれば、適切なマップ誤差閾値が、いわゆる二分法を用いて探索される。即ち、あるマップ誤差閾値に対応する精度相関値がシミュレーション誤差閾値範囲の上限値よりも大きく、次に設定されたマップ誤差閾値に対応する精度相関値がシミュレーション誤差閾値範囲の下限値よりも小さい場合、これら２つのマップ誤差閾値の平均値（単純平均値）が次に間引き処理を行う際に使用されるマップ誤差閾値として設定される。同様に、あるマップ誤差閾値に対応する精度相関値がシミュレーション誤差閾値範囲の下限値よりも小さく、次に設定されたマップ誤差閾値に対応する精度相関値がシミュレーション誤差閾値範囲の上限値よりも大きい場合、これら２つのマップ誤差閾値の平均値（単純平均値）が次に間引き処理を行う際に使用されるマップ誤差閾値として設定される。その結果、この実施形態は、適切なマップ誤差閾値に基づく間引きマップを生成するまでに繰り返される間引き処理の繰り返し回数を少なくすることができる。換言すると、最終的な間引きマップをより短時間で生成することができる。
【００２０】
なお、本発明は、上記マップ生成装置が実行するマップ生成方法にも当然に及ぶ。
【図面の簡単な説明】
【００２１】
【図１】（Ａ）は本発明の実施形態に係るマップ生成装置（本生成装置）によって試験・評価がなされるモーター制御ＥＣＵと、モーター制御ＥＣＵの制御対象であるモーターアッシーと、の関係を示した図であり、（Ｂ）はモーター制御ＥＣＵが本生成装置によって生成された間引きマップを記憶するシミュレータに接続されている様子を示した図である。
【図２】本生成装置、シミュレータ及びモーター制御ＥＣＵのそれぞれの概略構成を示した図である。
【図３】本生成装置によって試験・評価がなされたモーター制御ＥＣＵが搭載される車両が搭載するインバータの概略構成を示した図である。
【図４】本生成装置のＣＰＵ（本ＣＰＵ）が実行するルーチンを表すフローチャートである。
【図５】シミュレータが元マップに基づいてシミュレーションを実行した場合に電動機のコイルに流れる電流と、シミュレータが間引きマップに基づいてシミュレーションを実行した場合に同コイルに流れる電流と、の比較を示したグラフである。
【図６】本ＣＰＵが実行する１次元マップの間引き処理を示した図である。
【図７】本ＣＰＵが実行する２次元マップの間引き処理を示した図である。
【図８】本ＣＰＵが実行する２次元マップの間引き処理を示した図である。
【図９】本ＣＰＵが実行する２次元マップの間引き処理を示した図である。
【図１０】本ＣＰＵが実行する３次元マップの間引き処理を示した図である。
【図１１】本ＣＰＵが実行するルーチンを表すフローチャートである。
【図１２】本ＣＰＵが実行するルーチンを表すフローチャートである。
【図１３】本ＣＰＵが実行するルーチンを表すフローチャートである。
【図１４】本ＣＰＵが実行するルーチンを表すフローチャートである。
【図１５】本ＣＰＵが実行するルーチンを表すフローチャートである。
【図１６】本ＣＰＵが実行するルーチンを表すフローチャートである。
【発明を実施するための形態】
【００２２】
以下、図面を参照しながら本発明の実施形態に係るマップ生成装置（以下、「本生成装置」とも称呼される。）について説明する。本生成装置は、図１（Ａ）に示したモーター制御ＥＣＵ（電子制御装置）１０を試験・評価するための装置である。試験・評価がなされて開発されたモーター制御ＥＣＵ１０は、駆動源として３相巻線（コイル）を備える電動機を搭載する車両（即ち、ハイブリッド車又は電気自動車）に搭載され、「その電動機及び電動機に電力を供給するインバータ（即ち、モーターアッシーＭＡ）」を制御するように構成されている。
【００２３】
より具体的に述べると、車両に搭載されたモーター制御ＥＣＵ１０はモーターアッシーＭＡに対してＰＷＭ信号（入力制御信号）を送信する。更に、モーター制御ＥＣＵ１０はモーターアッシーＭＡから電動機を流れる電流及び電動機の回転角度等を表す信号（出力結果信号）を受信する。
【００２４】
図１（Ｂ）に示されるように、シミュレータ３０は、モーターアッシーＭＡに代わりモーター制御ＥＣＵ１０に接続され、モーターアッシーＭＡの動作を模擬する。即ち、シミュレータ３０は、モーター制御ＥＣＵ１０から入力制御信号を受信し、その入力制御信号に対応する出力結果信号を算出し、その出力結果信号をモーター制御ＥＣＵ１０へ出力する。
【００２５】
車両に搭載された電動機は高速回転する場合があるので、シミュレータ３０は入力制御信号を受信する都度、その入力制御信号に対応する出力結果信号を高速に且つ精度良く算出する必要がある。そのため、シミュレータ３０は、マップを記憶・格納するＦＰＧＡを搭載している。本生成装置は、図１（Ｂ）において間引きマップ生成装置６０として示されていて、そのＦＰＧＡに記憶されるマップを生成する。
【００２６】
そのマップは、複数の離散的入力値と、その離散的入力値に対応する離散的出力値と、の組合せを規定したルックアップテーブルである。ＦＰＧＡは、入力制御信号に対応する出力結果信号を演算する際にそのマップを参照する。その結果、シミュレータ３０は、極めて高速に且つ精度良く出力結果信号を算出することができる。シミュレータ３０がマップを参照しながら入力制御信号に対応する出力結果信号を演算する方法は、便宜上「特定方法」とも称呼される。
【００２７】
ところで、そのマップは、例えば、電動機及びインバータの設計諸元から計算上求められる入力制御信号と出力結果信号との組合せ、又は、実際にモーターアッシーＭＡを作動させた際に取得される入力制御信号と出力結果信号との組合せ、等に基づいて生成される。このように作成されるマップは、膨大なデータを含んでいて、本明細書において「元マップ」とも称呼される。
【００２８】
しかし、シミュレータ３０が搭載するＦＰＧＡに記憶可能なマップのデータ数（容量）には上限があるため、元マップをそのままＦＰＧＡに記憶させることは困難であることが多い。そこで、間引きマップ生成装置６０は、元マップが含んでいる離散的入力値及び離散的出力値の組合せの一部を間引く（即ち、データを削除する）「間引き処理」を実行することにより、元マップよりも少ない数のデータを有する間引きマップを生成する。更に、間引きマップ生成装置６０は、シミュレータ３０に間引きマップのデータを提供する。シミュレータ３０のＦＰＧＡは、その間引きマップを記憶する。従って、シミュレータ３０のＦＰＧＡは、マップ生成装置６０が生成した間引きマップを参照する工程を経て出力結果信号を算出する。
【００２９】
図２は、モーター制御ＥＣＵ１０、シミュレータ３０及びマップ生成装置６０の具体的構成を示している。
シミュレータ３０は、シミュレータ３０の全体を制御するコントローラ４０及びモーターアッシーＭＡを模擬するベースボード５０を含んでいる。
【００３０】
コントローラ４０は、汎用コンピュータであり、ＣＰＵ４１、ＣＰＵが実行するプログラム及びマップ等を記憶するハードディスクドライブ（ＨＤＤ）４２並びにデータを一時的に記憶するＲＡＭ４３等を含んでいる。
ベースボード５０は、複数又は単数のＦＰＧＡ５１及びインタフェース部５２を含んでいる。
【００３１】
ＣＰＵ４１は、シミュレータ３０の起動時、ＨＤＤ４２に記憶された論理演算プログラム及びマップ等をＦＰＧＡ５１にロードする。ＦＰＧＡ５１は、ＣＰＵ４１によってロードされた論理演算プログラム及びマップ等を集積回路へと変換し、その集積回路によって後述されるインバータ７０及び電動機８０を模擬する。インタフェース部５２は、モーター制御ＥＣＵ１０からの入力制御信号を受信し且つ模擬されたセンサ信号（即ち、出力結果信号）をモーター制御ＥＣＵ１０に対して送信する。
【００３２】
マップ生成装置６０は、汎用コンピュータであり、ＣＰＵ６１、ＣＰＵ６１が実行するプログラム及びマップ等を記憶するＨＤＤ６２並びにデータを一時的に記憶するＲＡＭ６３等を含んでいる。ＨＤＤ６２は、別途生成された元マップのデータを記憶している。
【００３３】
マップ生成装置６０は元マップに対して後述する間引き処理を行って間引きマップを生成し、この間引きマップのデータをコントローラ４０に送信する。加えて、マップ生成装置６０は、論理演算プログラム及びマップ等をＦＰＧＡ５１に直接ロードすることができる。
【００３４】
モーター制御ＥＣＵ１０は、予め設定された「電動機８０の目標トルクＴｒ＊及びインバータ７０の入力電圧Ｖｉ」に基づいて入力制御信号（ＰＷＭ信号）を生成し、入力制御信号をベースボード５０へ出力する。ベースボード５０は、入力制御信号に応じて電動機の動作を間引きマップを参照しながら模擬し、その電動機に流れる電流及び電動機の回転角度を表すセンサ信号（即ち、出力結果信号）を生成する。ベースボード５０は、出力結果信号をモーター制御ＥＣＵ１０へ出力する。なお、目標トルクＴｒ＊及び入力電圧Ｖｉは、例えば、コントローラ４０からの信号に基づいて変更されても良い。
【００３５】
図３はモーターアッシーＭＡが含んでいるインバータ７０及び電動機８０の構成を示している。インバータ７０は、Ｕ相アーム、Ｖ相アーム及びＷ相アームを含む。これらのアームは、それぞれが一対の入力端子部（Ｔｐ、Ｔｎ）間に挿入され、互いに並列に接続されている。入力端子部（Ｔｐ、Ｔｎ）には図示しない直流電源によって入力電圧Ｖｉが印加されている。
【００３６】
インバータ７０のＵ相アームは、ＩＧＢＴ７１ａ及びＩＧＢＴ７２ａを備える。ＩＧＢＴ７１ａ及びＩＧＢＴ７２ａには、ダイオード７１ｂ及びダイオード７２ｂがそれぞれ逆並列接続されている。ＩＧＢＴ７１ａとＩＧＢＴ７２ａとは、ダイオード７１ｂのアノードとダイオード７２ｂのカソードとが接続されるように、互いに直列に接続されている。ＩＧＢＴ７１ａとＩＧＢＴ７２ａとの接続点は、電動機８０のＵ相コイルに接続されている。
【００３７】
インバータ７０のＶ相アームは、ＩＧＢＴ７３ａ及びＩＧＢＴ７４ａを備える。ＩＧＢＴ７３ａ及びＩＧＢＴ７４ａには、ダイオード７３ｂ及びダイオード７４ｂがそれぞれ逆並列接続されている。ＩＧＢＴ７３ａとＩＧＢＴ７４ａとは、ダイオード７３ｂのアノードとダイオード７４ｂのカソードとが接続されるように、互いに直列に接続されている。ＩＧＢＴ７３ａとＩＧＢＴ７４ａとの接続点は、電動機８０のＶ相コイルに接続されている。
【００３８】
インバータ７０のＷ相アームは、ＩＧＢＴ７５ａ及びＩＧＢＴ７６ａを備える。ＩＧＢＴ７５ａ及びＩＧＢＴ７６ａには、ダイオード７５ｂ及びダイオード７６ｂがそれぞれ逆並列接続されている。ＩＧＢＴ７５ａとＩＧＢＴ７６ａとは、ダイオード７５ｂのアノードとダイオード７６ｂのカソードとが接続されるように、互いに直列に接続されている。ＩＧＢＴ７５ａとＩＧＢＴ７６ａとの接続点は、電動機８０のＷ相コイルに接続されている。
【００３９】
＜本マップ生成装置の作動＞
次に、マップ生成装置６０の作動（間引きマップの生成処理）について説明する。マップ生成装置６０のＣＰＵ６１（以下、単に「ＣＰＵ」とも称呼される。）は、間引きマップを生成するとき、図４にフローチャートにより示された間引きマップ生成処理ルーチンを実行する。
【００４０】
即ち、ＣＰＵは、ステップ４００から処理を開始してステップ４０５に進み、ＨＤＤ６２から元マップを読み出す。次いで、ＣＰＵは、ステップ４１０に進み、マップ生成装置６０の運用者によって入力されたシミュレーション誤差閾値範囲を読み込む。
【００４１】
シミュレーション誤差閾値範囲は、シミュレータ３０が間引きマップに基づいてモーターアッシーＭＡの動作を模擬したとき、シミュレーション精度の悪化の程度がどの範囲で許容されるかを規定した数値である。シミュレーション精度の悪化度合いは、精度相関値（本例において、後述する精度相関値Ｉｘｕ）によって表される。
【００４２】
シミュレータ３０が間引きマップに基づいてモーターアッシーＭＡの動作を模擬したときの出力結果信号と、元マップに基づいてモーターアッシーＭＡの動作を模擬したときの出力結果信号と、の差分が大きくなるほど精度相関値Ｉｘｕは大きくなる。換言すれば、シミュレーション精度が悪化するほど精度相関値Ｉｘｕは大きな値になる。シミュレーション誤差閾値範囲は、精度相関値Ｉｘｕの上限値Ｉｘｕｍａｘ及び下限値Ｉｘｕｍｉｎによって規定される。
【００４３】
次いで、ＣＰＵは、ステップ４１５に進み、シミュレータ３０が元マップを記憶している場合にモーターアッシーＭＡの動作を模擬したときに出力する出力結果信号を元マップを用いて算出し、その出力結果信号を所定のサンプリング周期毎にＲＡＭ６３に記憶させる。より具体的に述べると、ＣＰＵは、シミュレータ３０が予め定められた一連の入力制御信号を受信したときに算出する特定の出力結果信号をマップ生成装置６０上にて算出する。
【００４４】
本例において、一連の入力制御信号は、電動機を安定状態にて１回転させる際にモーター制御ＥＣＵ１０が出力するＰＷＭ信号であり、特定の出力信号は電動機のＵ相コイルに流れる電流ｉｕである。ＲＡＭ６３に記憶された元マップに基づくＵ相電流ｉｕの変化の例が、図５の曲線ｉｕ１により示されている。シミュレータ３０が元マップを記憶していると仮定した場合にモーターアッシーＭＡの動作を模擬したときに出力する出力結果信号は、便宜上「第１の出力結果信号」とも称呼される。
【００４５】
次いで、ＣＰＵは、ステップ４２０に進み、マップ誤差閾値ｅｔｈを所定の初期値に設定する。マップ誤差閾値ｅｔｈは、間引き処理において参照させる値である。マップ誤差閾値ｅｔｈが大きいほど間引き処理において省略（削除）できる「離散的入力値及び離散的出力値の組合せ」の数が増加する。一方、マップ誤差閾値ｅｔｈが大きいほどシミュレーション精度が悪化し、以て、精度相関値Ｉｘｕが大きな値になる。
【００４６】
次いで、ＣＰＵは、ステップ４２５に進み、マップ誤差閾値ｅｔｈに基づいて元マップに対する間引き処理を実行する。間引き処理の詳細については後述される。
【００４７】
次いで、ＣＰＵは、ステップ４３０に進み、シミュレータ３０が間引きマップを記憶している場合にモーターアッシーＭＡの動作を模擬したときに出力する出力結果信号を間引きマップを用いて算出し、その出力結果信号を所定のサンプリング周期毎にＲＡＭ６３に記憶させる。即ち、ステップ４１５と同様の処理を元マップの代わりに間引きマップに基づいて実行する。ＲＡＭ６３に記憶された間引きマップに基づくＵ相電流ｉｕの変化の例が、図５の曲線ｉｕ２により示されている。シミュレータ３０が間引きマップを記憶していると仮定した場合にモーターアッシーＭＡの動作を模擬したときに出力する出力結果信号は、便宜上「第２の出力結果信号」とも称呼される。
【００４８】
次いで、ＣＰＵは、ステップ４３５に進み、精度相関値Ｉｘｕを算出する。より具体的に述べると、ＣＰＵは、サンプリング周期毎に電流ｉｕ１と電流ｉｕ２との差分Ｄｕを算出する。即ち、複数の差分Ｄｕが算出される。図５には、時刻ｔ１時点における差分Ｄｕである差分Ｄｕ（ｔ１）が示されている。更に、ＣＰＵは、算出された複数の差分Ｄｕの２乗平均平方根である精度相関値Ｉｘｕを算出する。
【００４９】
次いで、ＣＰＵは、ステップ４４０に進み、精度相関値Ｉｘｕが上限値Ｉｘｕｍａｘと下限値Ｉｘｕｍｉｎとの間に含まれているか否か（即ち、Ｉｘｕｍｉｎ＜Ｉｘｕ＜Ｉｘｕｍａｘが成立しているか否か）を判定する。精度相関値Ｉｘｕが上限値Ｉｘｕｍａｘと下限値Ｉｘｕｍｉｎとの間に含まれていなければ、ＣＰＵは、ステップ４４０にて「Ｎｏ」と判定してステップ４４５に進み、マップ誤差閾値ｅｔｈを修正する。
【００５０】
より具体的に述べると、精度相関値Ｉｘｕが下限値Ｉｘｕｍｉｎよりも小さければ、ＣＰＵは、マップ誤差閾値ｅｔｈの値を所定値Δｅｔｈだけ増加させる（即ち、ｅｔｈ←ｅｔｈ＋Δｅｔｈ）。一方、精度相関値Ｉｘｕが上限値Ｉｘｕｍａｘよりも大きければ、ＣＰＵは、マップ誤差閾値ｅｔｈの値を所定値Δｅｔｈだけ低下させる（即ち、ｅｔｈ←ｅｔｈ−Δｅｔｈ）。
【００５１】
ただし、今回算出された精度相関値Ｉｘｕ（このときのマップ誤差閾値をｅｔｈＡとする）が下限値Ｉｘｕｍｉｎよりも小さく且つ前回算出された精度相関値Ｉｘｕ（このときのマップ誤差閾値をｅｔｈＢとする）が上限値Ｉｘｕｍａｘよりも大きい場合、ＣＰＵは、マップ誤差閾値ｅｔｈを誤差閾値ｅｔｈＡ及び誤差閾値ｅｔｈＢの平均値に等しい値に設定する（即ち、ｅｔｈ＝（ｅｔｈＡ＋ｅｔｈＢ）／２）。
【００５２】
同様に、今回算出された精度相関値Ｉｘｕ（このときのマップ誤差閾値をｅｔｈＣとする）が上限値Ｉｘｕｍａｘよりも大きく且つ前回算出された精度相関値Ｉｘｕ（このときのマップ誤差閾値をｅｔｈＤとする）が下限値Ｉｘｕｍｉｎよりも小さい場合、ＣＰＵは、マップ誤差閾値ｅｔｈを誤差閾値ｅｔｈＣ及び誤差閾値ｅｔｈＤの平均値に等しい値に設定する（即ち、ｅｔｈ＝（ｅｔｈＣ＋ｅｔｈＤ）／２）。
【００５３】
次いで、ＣＰＵは、ステップ４２５に戻り、修正されたマップ誤差閾値ｅｔｈに基づいて元マップに対する間引き処理を実行する。
【００５４】
マップ誤差閾値ｅｔｈの設定、元マップに対する間引き処理、及び、精度相関値Ｉｘｕの算出、を繰り返した結果、精度相関値Ｉｘｕが上限値Ｉｘｕｍａｘと下限値Ｉｘｕｍｉｎとの間に含まれていれば、ＣＰＵはステップ４４０にて「Ｙｅｓ」と判定してステップ４５０に進む。
【００５５】
ステップ４５０にてＣＰＵは、このとき生成されている間引きマップをシミュレータ３０が記憶するマップとして決定し、その間引きマップをコントローラ４０へ出力し、ステップ４９５に進んで本ルーチンを終了する。
【００５６】
＜マップの間引き処理＞
次に、ＣＰＵが図４のステップ４２５にて実行する元マップに対する間引き処理の概要を説明する。この間引き処理は、一つの離散的入力値に対して一つの離散的出力値が決まる１次元マップはもとより、複数種類の離散的入力値の組合せに対して一つの離散的出力値が決まる多次元マップに対しても適用することができる。本例において、元マップは３次元マップであるが（詳細は後述される。）、便宜上、１次元マップの間引き処理、２次元マップの間引き処理、及び、３次元マップの間引き処理の順に説明する。
【００５７】
＜１；１次元マップの間引き処理＞
先ず、１次元マップの間引き処理について説明する。
１次元マップは、以下の複数の離散的入力値Ｘ１と、それぞれがその入力値のそれぞれに対応する離散的出力値Ｙとの組み合わせを規定するルックアップテーブルである。
入力値Ｘ１＝｛ｘ１（１），ｘ１（２），・・・ｘ１（ｎ１）・・・，ｘ１（Ｎ１）｝
出力値Ｙ＝ｙ（ｘ１（ｎ１））
ただし、ｎ１は１からＮ１までの整数であり、本明細書において「項番号」とも称呼される。Ｎ１は入力値Ｘ１の総数である。
【００５８】
このようにデータの削減がなされていないマップは、以下において便宜上「元マップ」とも称呼される。なお、出力値Ｙ＝ｙ（ｘ１（ｎ１））は、単に、ｙ（ｎ１）とも表記される。また、説明の便宜上、本例において、Ｎ１＝６とする。
【００５９】
入力値Ｘ１の中で以下に述べる間引き処理の結果として元マップから省略（削除）不可能であった項番号（即ち、間引かれずに残った入力値を特定する項番号）を表す数列ｎｉ１は、以下のように表記される。
ｎｉ１＝｛ｎｉ１（１），ｎｉ１（２），・・・，ｎｉ１（Ｎｉ１）｝
加えて、元マップから省略不可能であった入力値Ｘｉ１は、以下のように表記される。
Ｘｉ１＝｛ｘｉ１（１），・・・，ｘｉ１（Ｎｉ１）｝
【００６０】
図６は、入力値ｘ１（ｎ１）に対する出力値ｙ（ｎ１）の一例を示す。図６には点Ｐ１（ｘ１（１），ｙ（１））〜点Ｐ６（ｘ１（６），ｙ（６））が記号「○」（白丸）及び記号「●」（黒丸）によりプロットされている。本実施形態の間引き処理においては、ｘ１（１）及びｘ１（Ｎ１）は省略されない。
【００６１】
本実施形態の１次元マップの間引き処理においては、先ず、点Ｐ２を示すデータ（ｘ１（２），ｙ（２））が省略可能であるか否かが判定される。より具体的に述べると、点Ｐ１を示すデータ（ｘ１（１），ｙ（１））と点Ｐ３を示すデータ（ｘ１（３），ｙ（３））とを用いた線形補間（直線補間）により点Ｐ２を示すデータ（ｘ１（２），ｙ（２））に対応する点Ｐ２ａ１を示すデータ（出力値Ｙ）が算出（推定）される。
【００６２】
なお、以下において、線形補間によって推定されたｙ（ｎ１）は、「推定値ｙａ（ｎ１）」とも表記される。従って、点Ｐ２ａ１を示すデータは（ｘ１（２），ｙａ（２）））と表記される。図６において、このように線形補間によって推定された点（ｘ１（ｎ１），ｙａ（ｎ１））は記号「□」（白四角）によりプロットされている。
【００６３】
次に、推定値ｙａ（２）と実際の出力値ｙ（２）（出力値の真値）との間の誤差ｅｒｒ（図６において誤差ｅ２ａ）が算出される（ｅｒｒ＝ｅ２ａ＝｜ｙａ（２）−ｙ（２）｜）。そして、この誤差ｅｒｒが「所定のマップ誤差閾値ｅｔｈ」以下であれば（ｅｒｒ≦ｅｔｈ）、点Ｐ２を示すデータ（ｘ１（２），ｙ（２））は省略（削除）可能であると判定される。本例において、誤差ｅ２ａはマップ誤差閾値ｅｔｈよりも小さいので（即ち、ｅ２ａ＜ｅｔｈ）、点Ｐ２を示すデータ（ｘ１（２），ｙ（２））は省略可能であると判定される。
【００６４】
次いで、点Ｐ２を示すデータ（ｘ１（２），ｙ（２））に加えて点Ｐ３を示すデータ（ｘ１（３），ｙ（３））も省略可能であるか否かが判定される。この場合、既に省略可能であると判定された点Ｐ２を示すデータ（ｘ１（２），ｙ（２））を用いることなく、点Ｐ１を示すデータ（ｘ１（１），ｙ（１））と点Ｐ４を示すデータ（ｘ１（４），ｙ（４））とを用いた線形補間により、点Ｐ２に対応する点Ｐ２ａ２を示すデータ（ｘ１（２），ｙａ（２））及び点Ｐ３に対応する点Ｐ３ａを示すデータ（ｘ１（３），ｙａ（３））が算出（推定）される。
【００６５】
次に、推定値ｙａ（２）と実際の出力値ｙ（２）との間の誤差ｅｒｒ（図６において誤差ｅ２ｂ）が算出される（ｅｒｒ＝ｅ２ｂ＝｜ｙａ（２）−ｙ（２）｜）。更に、推定値ｙａ（３）と実際の出力値ｙ（３）との間の誤差ｅｒｒ（図６において誤差ｅ３）が算出される（ｅｒｒ＝ｅ３＝｜ｙａ（３）−ｙ（３）｜）。
【００６６】
そして、これらの誤差ｅｒｒ（ｅ２ｂ及びｅ３）の何れもがマップ誤差閾値ｅｔｈ以下であれば、点Ｐ２を示すデータ（ｘ１（２），ｙ（２））及び点Ｐ３を示すデータ（ｘ１（３），ｙ（３））の両方が省略（削除）可能であると判定される。
【００６７】
しかし、本例においては、ｅ２ｂ＞ｅｔｈ且つｅ３＞ｅｔｈであるので、点Ｐ３を示すデータ（ｘ１（３），ｙ（３））は省略可能ではないと判定される。
【００６８】
次いで、点Ｐ４を示すデータ（ｘ１（４），ｙ（４））が省略可能であるか否かが判定される。この場合、点Ｐ４を示すデータ（ｘ１（４），ｙ（４））よりも項番号が小さく且つ既に省略不可能であると判定されたデータの中の点Ｐ４に最も近いデータである点Ｐ３を示すデータ（ｘ１（３），ｙ（３））と、点Ｐ４を示すデータ（ｘ１（４），ｙ（４））よりも項番号が大きく且つ省略可能・不可能の判定がなされていないデータの中の点Ｐ４に最も近いデータである点Ｐ５を示すデータ（ｘ１（５），ｙ（５））と、を用いた線形補間により、点Ｐ４に対応する点Ｐ４ａを示すデータ（ｘ１（４），ｙａ（４））が算出（推定）される。
【００６９】
次に、推定値ｙａ（４）と実際の出力値ｙ（４）との間の誤差ｅｒｒ（図６において誤差ｅ４ａ）が算出される（ｅｒｒ＝ｅ４ａ＝｜ｙａ（４）−ｙ（４）｜）。本例において、ｙａ（４）とｙ（４）との間の誤差ｅｒｒ（＝ｅ４ａ）はマップ誤差閾値ｅｔｈ以下であるので（即ち、ｅ４ａ≦ｅｔｈ）、点Ｐ４を示すデータ（ｘ１（４），ｙ（４））は省略可能であると判定される。
【００７０】
同様に、点Ｐ４を示すデータ（ｘ１（４），ｙ（４））に加えて点Ｐ５を示すデータ（ｘ１（５），ｙ（５））も省略可能であるか否かが判定される。この場合、既に省略可能であると判定された点Ｐ４を示すデータ（ｘ１（４），ｙ（４））を用いることなく、既に省略不可能と判断された点Ｐ３を示すデータ（ｘ１（３），ｙ（３））と点Ｐ６を示すデータ（ｘ１（６），ｙ（６））とを用いた線形補間により、点Ｐ４に対応する点Ｐ４ｂを示すデータ（ｘ１（４），ｙａ（４））及び点Ｐ５に対応する点Ｐ５ａを示すデータ（ｘ１（５），ｙａ（５））が算出（推定）される。
【００７１】
次に、推定値ｙａ（４）と実際の出力値ｙ（４）との間の誤差ｅｒｒ（図６において誤差ｅ４ｂ）が算出される（ｅｒｒ＝ｅ４ｂ＝｜ｙａ（４）−ｙ（４）｜）。更に、推定値ｙａ（５）と実際の出力値ｙ（５）との間の誤差ｅｒｒ（図６において誤差ｅ５）が算出される（ｅｒｒ＝ｅ５＝｜ｙａ（５）−ｙ（５）｜）。
【００７２】
本例において、ｙａ（４）とｙ（４）との間の誤差ｅ４ｂ及びｙａ（５）とｙ（５）との間の誤差ｅ５は、何れもマップ誤差閾値ｅｔｈ以下であるので（即ち、ｅ４ｂ≦ｅｔｈ
且つｅ５≦ｅｔｈ）、点Ｐ４を示すデータ（ｘ１（４），ｙ（４））及び点Ｐ５を示すデータ（ｘ１（５），ｙ（５））は共に省略可能であると判定される。
【００７３】
以上から理解されるように、本実施形態の間引き処理により、図６に示した例に係る１次元マップにおいて、データ（ｘ１（２），ｙ（２））、（ｘ１（４），ｙ（４））及び（ｘ１（５），ｙ（５））が元マップから省略（削除）される。換言すると、データ（ｘ１（２），ｙ（２））、（ｘ１（４），ｙ（４））及び（ｘ１（５），ｙ（５））が削除されたマップ（即ち、「間引きマップ」）を用いて出力値Ｙを線形補間により推定したとしても、その推定値と真値との誤差ｅｒｒはマップ誤差閾値ｅｔｈ以下となる。
【００７４】
なお、入力値Ｘ１の中で間引き処理の結果として元マップから省略不可能であった項番号を表す数列ｎｉは、以下のようになる。
ｎｉ１＝｛１，３，６｝
更に、入力値Ｘ１の中で省略不可能であった入力値Ｘｉ１は、以下のようになる。
Ｘｉ１＝｛ｘｉ１（１），ｘｉ１（３），ｘｉ１（６）｝
【００７５】
＜２；２次元マップの間引き処理＞
次に、２次元マップの間引き処理について説明する。
２次元マップは、以下の「複数の離散的入力値Ｘ１及び複数の離散的入力値Ｘ２」と、それぞれが「入力値Ｘ１の一つと入力値Ｘ２の一つとの組み合わせ（群）」のそれぞれに対応する複数の離散的出力値Ｙとの組み合わせを規定するルックアップテーブルである。
入力値Ｘ１＝｛ｘ１（１），・・・ｘ１（ｎ１）・・・，ｘ１（Ｎ１）｝
入力値Ｘ２＝｛ｘ２（１），・・・ｘ２（ｎ２）・・・，ｘ２（Ｎ２）｝
出力値Ｙ＝ｙ（ｘ１（ｎ１），ｘ２（ｎ２））
ただし、ｎ１は１からＮ１までの整数であり、ｎ２は１からＮ２までの整数である。ｎ１及びｎ２は「項番号」とも称呼される。Ｎ１は入力値Ｘ１の総数であり、Ｎ２は入力値Ｘ２の総数である。なお、出力値Ｙ＝ｙ（ｘ１（ｎ１），ｘ２（ｎ２））は、単に、ｙ（ｎ１，ｎ２）とも表記される。また、説明の便宜上、本例において、Ｎ１＝６且つＮ２＝４とする。
【００７６】
入力値Ｘ１の中で以下に述べる間引き処理の結果として元マップから省略（削除）不可能であった項番号（即ち、間引かれずに残った入力値を特定する項番号）を表す数列ｎｉ１は、以下のように表記される。
ｎｉ１＝｛ｎｉ１（１），ｎｉ１（２），・・・，ｎｉ１（Ｎｉ１）｝
同様に、入力値Ｘ２の中で以下に述べる間引き処理の結果として元マップから省略（削除）不可能であった項番号（即ち、間引かれずに残った入力値を特定する項番号）を表す数列ｎｉ２は、以下のように表記される。
ｎｉ２＝｛ｎｉ２（１），ｎｉ２（２），・・・，ｎｉ２（Ｎｉ２）｝
加えて、入力値Ｘ１の中で以下に述べる間引き処理の結果として元マップから省略不可能であった入力値Ｘｉ１は、以下のように表記される。
Ｘｉ１＝｛ｘｉ１（１），・・・，ｘｉ１（Ｎｉ１）｝
同様に、入力値Ｘ２の中で以下に述べる間引き処理の結果として元マップから省略不可能であった入力値Ｘｉ２は、以下のように表記される。
Ｘｉ２＝｛ｘｉ２（１），・・・，ｘｉ２（Ｎｉ２）｝
本実施形態の間引き処理においては、ｘ１（１）及びｘ１（Ｎ１）並びにｘ２（１）及びｘ２（Ｎ２）は省略されない。
【００７７】
以下の説明において、項番号ｎ１のうちの特定の値ｎｓ１（ｎｓ１は「２」乃至「Ｎ１−１」の整数）について、出力値ｙ（ｘ１（ｎｓ１），ｘ２（ｎ２））が省略可能であるとき、「ｘ１（ｎｓ１）は省略可能である。」とも表記される。同様に、項番号ｎ２のうちの特定の値ｎｓ２（ｎｓ２は「２」乃至「Ｎ２−１」の整数）について、出力値ｙ（ｘ１（ｎ１），ｘ２（ｎｓ２））が省略可能であるとき、「ｘ２（ｎｓ２）は省略可能である。」とも表記される。
【００７８】
２次元マップの間引き処理においては、先ず、１次元マップの場合と同様に入力値Ｘ１の中から省略可能な値が抽出され、その後、その結果に基づいて入力値Ｘ２の中から省略可能な値が抽出される。
【００７９】
＜＜２．１；入力値Ｘ１の間引き＞＞
先ず、ｎ２＝１（即ち、入力値Ｘ２＝ｘ２（１））であるとき、ｘ１（２）が省略（削除）可能であるか否かが判定される。即ち、入力値Ｘ＝（ｘ１（２）、ｘ２（１））、出力値Ｙ＝ｙ（ｘ１（２），ｘ２（１））からなるデータが省略可能であるか否かが判定される。
【００８０】
より具体的に述べると、図７に示したように、点Ｐ１１を示すデータ［ｘ１（１），ｘ２（１）,ｙ｛ｘ１（１），ｘ２（１）｝］と点Ｐ３１を示すデータ［ｘ１（３），ｘ２（１）,ｙ｛ｘ１（３），ｘ２（１）｝］とを用いた線形補間（直線補間）により点Ｐ２１を示すデータ［ｘ１（２），ｘ２（１）,ｙ｛ｘ１（２），ｘ２（１）｝］に対応するデータ（出力値Ｙ）が算出（推定）される。即ち、推定値ｙａ（ｘ１（２），ｘ２（１））が算出される。推定値ｙａ（ｘ１（２），ｘ２（１））と実際の出力値ｙ（ｘ１（２），ｘ２（１））との間の誤差ｅｒｒ（＝｜ｙａ−ｙ｜）が、所定のマップ誤差閾値ｅｔｈ以下であれば、ｎ２＝１（即ち、入力値Ｘ２＝ｘ２（１））に対して、ｘ１（２）は省略可能であると判定される。即ち、点Ｐ２１を示すデータ［ｘ１（２），ｘ２（１）,ｙ｛ｘ１（２），ｘ２（１）｝］）は省略可能であると判定される。一方、上記誤差ｅｒｒが、マップ誤差閾値ｅｔｈより大きければ、ｎ２＝１に対して、ｘ１（２）は省略不可能であると判定される。
【００８１】
図７の例において、ｘ１（２）（即ち、点Ｐ２１を示すデータ）は省略可能である。そこで、１次元マップに対する間引き処理と同様、ｎ２＝１（即ち、入力値Ｘ２＝ｘ２（１））であるとき、ｘ１（３）が省略（削除）可能であるか否かが判定される。即ち、点Ｐ１１を示すデータと点Ｐ４１を示すデータとを用いた線形補間により点Ｐ２１及び点Ｐ３１を示すデータの出力値がそれぞれ算出（推定）され、それらのそれぞれの出力値と真の出力値との誤差がマップ誤差閾値ｅｔｈより大きいか否かが判定される。そして、図７の例においては、その誤差の何れもがマップ誤差閾値ｅｔｈ以下であるので、それら両データ（点Ｐ２１及び点Ｐ３１を示すデータ）は省略可能と判定される。
【００８２】
更に、点Ｐ１１を示すデータと点Ｐ５１を示すデータとを用いた線形補間により点Ｐ２１、点Ｐ３１及び点４１を示すデータの出力値がそれぞれ算出（推定）され、それらのそれぞれの出力値と真の出力値との誤差がマップ誤差閾値ｅｔｈより大きいか否かが判定される。図７の例においては、点４１を示すデータの出力値と真の出力値との誤差がマップ誤差閾値ｅｔｈより大きい。従って、点Ｐ２１及び点３１を示すデータは省略可能であるが、点Ｐ４１を示すデータは省略可能ではない。換言すると、ｘ１（２）及びｘ１（３）は省略可能であるが、ｘ１（４）は省略可能でない。
【００８３】
同様にして、ｎ２＝２，３，４のそれぞれに対して「ｘ１（１）の次に省略不可能なｘ１（ｎ１）が探索される。図７の例においては、以下のとおりである。
ｎ２＝２であるときｘ１（１）の次に省略不可能なｘ１（ｎ１）はｘ１（５）である。即ち、点Ｐ２２、点Ｐ３２及び点Ｐ４２に係るデータは省略され得る。
ｎ２＝３であるときｘ１（１）の次に省略不可能なｘ１（ｎ１）はｘ１（６）である。即ち、点Ｐ２３、点Ｐ３３、点Ｐ４３及び点Ｐ５３に係るデータは省略され得る。
ｎ２＝４であるときｘ１（１）の次に省略不可能なｘ１（ｎ１）はｘ１（５）である。即ち、点Ｐ２４、点Ｐ３４及び点Ｐ４４に係るデータは省略され得る。
【００８４】
従って、ｎ２のそれぞれに対する「ｘ１（１）の次に省略不可能なｘ１（ｎ１）」におけるｎ１の最小値は、ｎ２＝１であるときのｎ１＝４であることが判る。そこで、ｘ１（２）及びｘ１（３）が省略可能であると判定される。即ち、ｘｉ１（２）＝４であることが判る。
【００８５】
次いで、ｘｉ１（３）の値が探索される。より具体的に述べると、ｎ２＝１，２，３，４のそれぞれについて「ｘ１（４）の次に省略不可能なｘ１（ｎ１）」が探索され、そのｎ１のそれぞれの内の最小値がｘｉ１（３）となる。ただし、ｘ１（６）は省略不可能であるので、実際にはｘ１（５）が省略可能であるか否かが判定される。この点につき、図８を参照して説明する。
【００８６】
図８は、図７の例と同じマップを表すグラフである。既に点Ｐ４１を示すデータは省略できないことが判っているので、点Ｐ４１を示すデータと点Ｐ６１を示すデータとを用いた線形補間により点Ｐ５１を示すデータが算出（推定）される。即ち、推定値ｙａ（ｘ１（５），ｘ２（１））が算出される。
【００８７】
推定値ｙａ（ｘ１（５），ｘ２（１））と実際の出力値ｙ（ｘ１（５），ｘ２（１））との間の誤差ｅｒｒ（＝｜ｙａ−ｙ｜）が、マップ誤差閾値ｅｔｈ以下であれば、ｎ２＝１（即ち、入力値Ｘ２＝ｘ２（１））に対して、ｘ１（５）は省略可能であると判定される。即ち、点Ｐ５１を示すデータは省略可能であると判定される。一方、上記誤差ｅｒｒが、マップ誤差閾値ｅｔｈより大きければ、ｎ２＝１に対して、ｘ１（５）は省略不可能であると判定される。
【００８８】
本例において、ｎ２＝１に対してｘ１（５）は省略可能である。同様に、点Ｐ４２のデータと点Ｐ６２のデータとに基づいて点Ｐ５２のデータが省略可能であるか否か等、ｎ２＝２，３，４の何れの場合も、ｘ１（５）は省略可能である。従って、ｎ２のそれぞれに対する「ｘ１（４）の次に省略不可能なｘ１（ｎ１）」におけるｎ１の最小値は、ｎ１＝６であることが判る。即ち、ｘｉ１（３）＝６であることが判る。
【００８９】
以上より、入力値Ｘ１の中で省略不可能であった項を表す数列は、以下のように表される。
ｎｉ１＝｛１，４，６｝
この場合、入力値の中で省略不可能であった入力値Ｘｉ１は、以下のように表される。
Ｘｉ１＝｛ｘｉ１（１），ｘｉ１（４），ｘｉ１（６）｝
【００９０】
＜＜２．２；入力値Ｘ２の間引き＞＞
入力値Ｘ１の間引き処理が終了すると入力値Ｘ２の間引き処理を行う。入力値Ｘ２の間引き処理においては、先ず、ｘ２（２）が省略可能であるか否かが判定される。より具体的に述べると、上述した例の入力値Ｘ１の間引き処理の結果によれば、ｎｉ１（２）＝４であってｘ１（２）及びｘ１（３）は省略可能である。
【００９１】
そこで、
ｙ（ｘ１（１），ｘ２（１））（図９（Ａ）において、点Ｐ１１）、
ｙ（ｘ１（４），ｘ２（１））（図９（Ａ）において、点Ｐ４１）、
ｙ（ｘ１（１），ｘ２（３））（図９（Ａ）において、点Ｐ１３）及び
ｙ（ｘ１（４），ｘ２（３））（図９（Ａ）において、点Ｐ４３）
に基づいて、これら４つの点を頂点とする四角形に含まれる点であって、「点Ｐ１１及び点４１に係る入力値Ｘ２＝ｘ２（１）」並びに「点Ｐ１３及び点４３に係る入力値Ｘ２＝ｘ２（３）」と入力値Ｘ２が異なる各点（図９（Ａ）において記号「△」により示された、点Ｐ１２、点Ｐ２２、点Ｐ３２及び点Ｐ４２）に対応する出力値Ｙが２次元の線形補間（直線補間）をすることによって推定される。即ち、以下の４つの値が算出される。
点Ｐ１２に対応する推定値ｙａ（ｘ１（１），ｘ２（２））
点Ｐ２２に対応する推定値ｙａ（ｘ１（２），ｘ２（２））
点Ｐ３２に対応する推定値ｙａ（ｘ１（３），ｘ２（２））
点Ｐ４２に対応する推定値ｙａ（ｘ１（４），ｘ２（２））
【００９２】
次いで、推定された出力値と実際の出力値との間の誤差ｅｒｒが、何れも所定のマップ誤差閾値ｅｔｈ以下であるか否かが判定される。
即ち、以下の不等式のそれぞれが成立するか否かが判定される。
｜ｙａ（ｘ１（１），ｘ２（２））−ｙ（ｘ１（１），ｘ２（２））｜≦ｅｔｈ
｜ｙａ（ｘ１（２），ｘ２（２））−ｙ（ｘ１（２），ｘ２（２））｜≦ｅｔｈ
｜ｙａ（ｘ１（３），ｘ２（２））−ｙ（ｘ１（３），ｘ２（２））｜≦ｅｔｈ
｜ｙａ（ｘ１（４），ｘ２（２））−ｙ（ｘ１（４），ｘ２（２））｜≦ｅｔｈ
これらの４つの不等式が成立すれば、ｘ２（２）は省略可能であると判定される。即ち、点Ｐ１２、点Ｐ２２、点Ｐ３２及び点Ｐ４２に係るデータは省略可能である。これに対し、これらの４つの不等式の少なくとも１つが不成立であると（即ち、上記誤差ｅｒｒのうちの何れかがマップ誤差閾値ｅｔｈよりも大きければ）、ｘ２（２）は省略不可能であると判定される。即ち、点Ｐ１２及び点Ｐ４２に係るデータは省略不可能であると判定される。ただし、点Ｐ２２、点Ｐ３２に係るデータは、上述した入力値Ｘ１の間引き処理の結果に基づいて省略される。
【００９３】
なお、上述した「入力値Ｘ１の間引き処理」において、
点Ｐ１２に対応する出力値ｙ（ｘ１（１），ｘ２（２））及び
点Ｐ４２に対応する出力値ｙ（ｘ１（４），ｘ２（２））
に基づく１次元の線形補間によって点Ｐ２２及び点Ｐ３２に係るデータは省略可能であると判定されている。しかし、点Ｐ１２及び点Ｐ４２に係るデータが省略された場合、点Ｐ１２及び点Ｐ４２に係るデータに基づいて点Ｐ２２及び点Ｐ３２に係る出力値Ｙを推定することができなくなる。そのため、「入力値Ｘ２の間引き処理」において、点Ｐ１１、点Ｐ４１、点Ｐ１３及び点Ｐ４３に基づく２次元の線形補間によって点Ｐ２２及び点Ｐ３２に係る出力値Ｙが省略可能であるか否かが改めて確認される。
【００９４】
一方、以下の４つの点については、改めて推定値ｙａ及び誤差ｅｒｒを算出する処理は行う必要がない。
点Ｐ２１に対応する推定値ｙａ（ｘ１（２），ｘ２（１））、
点Ｐ３１に対応する推定値ｙａ（ｘ１（３），ｘ２（１））、
点Ｐ２３に対応する推定値ｙａ（ｘ１（２），ｘ２（３））及び
点Ｐ３３に対応する推定値ｙａ（ｘ１（３），ｘ２（３））
【００９５】
次に、上記誤差ｅｒｒが何れもマップ誤差閾値ｅｔｈ以下であれば（即ち、上記２つの不等式が成立している場合）、ｘ２（２）に加えてｘ２（３）も省略可能であるか否かが判定される。
【００９６】
より具体的に述べると、図９（Ｂ）における「点Ｐ１１、点Ｐ４１、点Ｐ１４及び点Ｐ４４」に対応する出力値Ｙに基づいて、図９（Ｂ）における「点Ｐ１２、点Ｐ２２、点Ｐ３２、点Ｐ４２、点Ｐ１３、点Ｐ２３、点Ｐ３３及び点Ｐ４３に対応する出力値Ｙが算出（推定）される。なお、この場合、「点Ｐ２１、点Ｐ３１、点Ｐ２４及び点Ｐ３４」に対応する出力値Ｙの推定値ｙａ及びその誤差ｅｒｒを算出する必要はない。
【００９７】
これらの推定された出力値と実際の出力値との間の誤差ｅｒｒのそれぞれが、何れも所定のマップ誤差閾値ｅｔｈ以下であれば、ｘ２（２）及びｘ２（３）は省略可能であると判定される。一方、これらの誤差ｅｒｒのうちの何れかがマップ誤差閾値ｅｔｈよりも大きければ、ｘ２（３）は省略不可能であると判定される。
【００９８】
上記処理を繰り返すことによって、入力値Ｘ２に含まれる値ｘ２（ｎ２）のうち省略可能な値が探索される。
【００９９】
例えば、図９（Ｂ）に示した例において、点Ｐ１２、点Ｐ２２、点Ｐ３２、点Ｐ４２、点Ｐ１３、点Ｐ２３、点Ｐ３３及び点Ｐ４３のうちの少なくとも一つの点に対応する出力値Ｙの推定値ｙａに係る誤差ｅｒｒが所定のマップ誤差閾値ｅｔｈよりも大きいと仮定すると、ｘ２（３）は省略不可能であると判定される。即ち、Ｘｉ２（２）＝３となる。本例において、Ｎ２＝４であるので、入力値Ｘ２における最後から二番目の値（即ち、Ｘ２（Ｎ２−１）が省略不可能であることが判明した。上述したように、Ｘ２（Ｎ２）は省略不可能であるので、全ての入力値Ｘ２について省略可能か否かが判定されたことになる。
【０１００】
以上から、本例において、入力値Ｘ２の中で上記間引き処理の結果として元マップから省略（削除）不可能であった項番号を表す数列ｎｉ２は、以下のようになる。
ｎｉ２＝｛１，３，４｝
この場合、入力値の中で省略不可能であった入力値Ｘｉ２は、以下のように表される。
Ｘｉ２＝｛ｘｉ２（１），ｘｉ２（３），ｘｉ２（４）｝
【０１０１】
＜３；３次元マップの間引き処理＞
次に、３次元マップの間引き処理について説明する。
３次元マップは、以下の「複数の離散的入力値Ｘ１、複数の離散的入力値Ｘ２及び複数の離散的入力値Ｘ３」と、それぞれが「入力値Ｘ１の一つと入力値Ｘ２の一つと入力値Ｘ３の一つの組み合わせ（群）」のそれぞれに対応する複数の離散的出力値Ｙとの組み合わせを規定するルックアップテーブルである。
入力値Ｘ１＝｛ｘ１（１），・・・，ｘ１（Ｎ１）｝
入力値Ｘ２＝｛ｘ２（１），・・・，ｘ２（Ｎ２）｝
入力値Ｘ３＝｛ｘ３（１），・・・，ｘ３（Ｎ３）｝
出力値Ｙ＝ｙ（ｘ１（ｎ１），ｘ２（ｎ２），ｘ３（ｎ３））
ただし、ｎ１は１からＮ１までの整数であり、ｎ２は１からＮ２までの整数であり、ｎ３は１からＮ３までの整数である。ｎ１、ｎ２及びｎ３は「項番号」とも称呼される。Ｎ１は入力値Ｘ１の総数であり、Ｎ２は入力値Ｘ２の総数であり、Ｎ３は入力値Ｘ３の総数である。なお、出力値Ｙ＝ｙ（ｘ１（ｎ１），ｘ２（ｎ２），ｘ３（ｎ３））は、単に、ｙ（ｎ１，ｎ２，ｎ３）とも表記される。また、説明の便宜上、本例において、Ｎ１＝６、Ｎ２＝４且つＮ３＝５とする。
【０１０２】
数列ｎｉ１、数列ｎｉ２、入力値Ｘｉ１及び入力値Ｘｉ２の表記形式は上述したとおりであるが、以下に改めて記す。
ｎｉ１＝｛ｎｉ１（１），ｎｉ１（２），・・・，ｎｉ１（Ｎｉ１）｝
ｎｉ２＝｛ｎｉ２（１），ｎｉ２（２），・・・，ｎｉ２（Ｎｉ２）｝
Ｘｉ１＝｛ｘｉ１（１），・・・，ｘｉ１（Ｎｉ１）｝
Ｘｉ２＝｛ｘｉ２（１），・・・，ｘｉ２（Ｎｉ２）｝
更に、入力値Ｘ３の中で以下に述べる間引き処理の結果として元マップから省略（削除）不可能であった項番号（即ち、間引かれずに残った入力値を特定する項番号）を表す数列ｎｉ３は、以下のように表記される。
ｎｉ３＝｛ｎｉ３（１），ｎｉ３（２），・・・，ｎｉ３（Ｎｉ３）｝
加えて、元マップから省略不可能であった入力値Ｘｉ３は、以下のように表記される。
Ｘｉ３＝｛ｘｉ３（１），・・・，ｘｉ３（Ｎｉ３）｝
【０１０３】
なお、本実施形態の間引き処理においては、１次元マップ及び２次元マップに対する間引き処理と同様、ｘ１（１）及びｘ１（Ｎ１）、ｘ２（１）及びｘ２（Ｎ２）、並びに、ｘ３（１）及びｘ３（Ｎ３）は省略されない。
【０１０４】
３次元マップの間引き処理においても、２次元マップの間引き処理と同様に、先ず、入力値Ｘ１に含まれる値であって省略可能な値が抽出され、次いで、入力値Ｘ２に含まれる値であって省略可能な値が抽出され、更に、入力値Ｘ３に含まれる値であって省略可能な値が抽出される。
【０１０５】
＜＜３．１；入力値Ｘ１の間引き＞＞
先ず、ｎ２＝１且つｎ３＝１であるとき、ｘ１（２）が省略可能であるか否かが判定される。より具体的に述べると、
ｙ（ｘ１（１），ｘ２（１），ｘ３（１））と、
ｙ（ｘ１（３），ｘ２（１），ｘ３（１））と、
とを用いた一次元の線形補間（直線補間）により、
ｙ（ｘ１（２），ｘ２（１），ｘ３（１））が推定される。即ち、ｙａ（ｘ１（２），ｘ２（１），ｘ３（１））が算出される。
【０１０６】
推定値ｙａ（ｘ１（２），ｘ２（１），ｘ３（１））と実際の出力値ｙ（ｘ１（２），ｘ２（１），ｘ３（１））との間の誤差ｅｒｒが上記と同様に算出され、その誤差ｅｒｒが所定のマップ誤差閾値ｅｔｈ以下であれば、ｎ２＝１且つｎ３＝１に対して、ｘ１（２）は省略可能であると判定される。
【０１０７】
一方、上記誤差ｅｒｒが、マップ誤差閾値ｅｔｈより大きければ、ｎ２＝１且つｎ３＝１に対してｘ１（２）は省略不可能であると判定される。
【０１０８】
ｎ２＝１且つｎ３＝１に対してｘ１（２）は省略可能であると判定された場合、ｎ２＝１且つｎ３＝１に対して「ｘ１（２）に加えてｘ１（３）も省略可能」であるか否かが判定される。即ち、「ｘ１（１）の次に省略不可能なｘ１（ｎ１）」が探索される。以下、このような処理がｎ２及びｎ３を変更しながら繰り返される。
【０１０９】
全ての「ｘ２（ｎ２）及びｘ３（ｎ３）の組合せ」について「ｘ１（１）の次に省略不可能なｘ１（ｎ１）」が探索されると、ｘ２（ｎ２）及びｘ３（ｎ３）の組合せのそれぞれに対応する「ｘ１（１）の次に省略不可能なｘ１（ｎ１）」の集合におけるｎ１の最小値が判明する。このｎ１の最小値が、ｎｉ１（２）となる。同様の処理を繰り返すことによって、入力値Ｘ１に含まれる値であって省略可能な値が抽出される。
【０１１０】
次に、１次元マップ及び２次元マップの場合と同様に、例えば、入力値Ｘ１の中で省略不可能であった項を表す数列が以下のように表されたとする。
ｎｉ１＝｛１，４，６｝
この場合、入力値の中で省略不可能であった入力値Ｘｉ１は、以下のように表される。
Ｘｉ１＝｛ｘｉ１（１），ｘｉ１（４），ｘｉ１（６）｝
【０１１１】
＜＜３．２；入力値Ｘ２の間引き＞＞
入力値Ｘ１の間引き処理が終了すると入力値Ｘ２の間引き処理を行う。入力値Ｘ２の間引き処理においては、先ず、ｎ３＝１に対してｘ２（２）が省略可能であるか否かが判定される。例えば、上述した入力値Ｘ１の間引き処理の結果の例によれば、ｎｉ１（２）＝４であるから、ｘ１（２）及びｘ１（３）は省略可能である。そこで、
ｙ（ｘ１（１），ｘ２（１），ｘ３（１））、
ｙ（ｘ１（４），ｘ２（１），ｘ３（１））、
ｙ（ｘ１（１），ｘ２（３），ｘ３（１））及び
ｙ（ｘ１（４），ｘ２（３），ｘ３（１））
に基づいて、これら４つの点を頂点とする四角形に含まれる点であって、推定値ｙａに係る誤差ｅｒｒがマップ誤差閾値ｅｔｈ以下であることが既に判明している点を除いた各点に対応する出力値Ｙが２次元の線形補間をすることによって推定される。
【０１１２】
即ち、以下の４つの値が算出される。
ｙａ（ｘ１（１），ｘ２（２），ｘ３（１））
ｙａ（ｘ１（２），ｘ２（２），ｘ３（１））
ｙａ（ｘ１（３），ｘ２（２），ｘ３（１））
ｙａ（ｘ１（４），ｘ２（２），ｘ３（１））
【０１１３】
算出された４つの推定値ｙａのそれぞれと、実際の出力値のそれぞれと、の間の誤差ｅｒｒが、何れも所定のマップ誤差閾値ｅｔｈ以下であればｎ３＝１に対してｘ２（２）は省略可能であると判定される。
【０１１４】
一方、上記誤差ｅｒｒの少なくとも一つが、マップ誤差閾値ｅｔｈより大きければ、ｎ３＝１に対してｘ２（２）は省略不可能であると判定される。
【０１１５】
ｎ３＝１に対してｘ２（２）が省略不可能であると判定された場合、ｘ２（２）に加えてｘ２（３）も省略可能であるか否かが判定される。即ち、「ｘ２（１）の次に省略不可能なｘ２（ｎ２）」が探索される。同様にｎ３＝２，３，４，５のそれぞれに対して「ｘ２（１）の次に省略不可能なｘ２（ｎ２）」が探索される。
【０１１６】
その結果、ｎ３のそれぞれに対する「ｘ２（１）の次に省略不可能なｘ２（ｎ２）」の集合におけるｎ２の最小値が判明する。このｎ２の最小値が、ｎｉ２（２）となる。同様の処理を繰り返すことによって入力値Ｘ２に含まれる値であって省略可能な値が抽出される。
【０１１７】
ここで、例えば、入力値Ｘ２の中で省略不可能であった項を表す数列は、以下のように表されると仮定する。
ｎｉ２＝｛１，３，４｝
この場合、入力値の中で省略不可能であった入力値Ｘｉ２は、以下のように表される。
Ｘｉ２＝｛ｘｉ２（１），ｘｉ２（３），ｘｉ２（４）｝
【０１１８】
＜＜３．３；入力値Ｘ３の間引き＞＞
入力値Ｘ２の間引き処理が終了すると入力値Ｘ３の間引き処理を行う。入力値Ｘ３の間引き処理においては、先ず、ｘ３（２）が省略可能であるか否かが判定される。より具体的に述べると、上述した入力値Ｘ１及び入力値Ｘ２の間引きの結果の例によれば、Ｎｉ１（２）＝４且つＮｉ２（２）＝３であるから、ｘ１（２）、ｘ１（３）及びｘ２（２）は省略可能である。
【０１１９】
そこで、
ｙ（ｘ１（１），ｘ２（１），ｘ３（１））（図１０において、点Ｐ１１１）、
ｙ（ｘ１（４），ｘ２（１），ｘ３（１））（図１０において、点Ｐ４１１）、
ｙ（ｘ１（１），ｘ２（３），ｘ３（１））（図１０において、点Ｐ１３１）及び
ｙ（ｘ１（４），ｘ２（３），ｘ３（１））（図１０において、点Ｐ４３１）並びに
ｙ（ｘ１（１），ｘ２（１），ｘ３（３））（図１０において、点Ｐ１１３）、
ｙ（ｘ１（４），ｘ２（１），ｘ３（３））（図１０において、点Ｐ４１３）、
ｙ（ｘ１（１），ｘ２（３），ｘ３（３））（図１０において、点Ｐ１３３）及び
ｙ（ｘ１（４），ｘ２（３），ｘ３（３））（図１０において、点Ｐ４３３）
に基づいて、これら８つの点を頂点とする直方体に含まれる点であって、「点Ｐ１１１、点Ｐ４１１、点Ｐ１３１及び点Ｐ４３１に係る入力値Ｘ３＝ｘ３（１）」並びに「点Ｐ１１３、点Ｐ４１３、点Ｐ１３３及び点Ｐ４３３に係る入力値Ｘ３＝ｘ３（３）」と入力値Ｘ３が異なる各点（図１０において、入力値Ｘ３＝ｘ３（２）である記号「△」により示された各点）に対応する出力値Ｙが３次元の線形補間（直線補間）をすることによって推定される。
【０１２０】
即ち、以下の１２個の推定値が算出される。
ｙａ（ｘ１（１），ｘ２（１），ｘ３（２））（図１０において、点Ｐ１１２）、
ｙａ（ｘ１（２），ｘ２（１），ｘ３（２））（図１０において、点Ｐ２１２）、
ｙａ（ｘ１（３），ｘ２（１），ｘ３（２））（図１０において、点Ｐ３１２）、
ｙａ（ｘ１（４），ｘ２（１），ｘ３（２））（図１０において、点Ｐ４１２）、
ｙａ（ｘ１（１），ｘ２（２），ｘ３（２））（図１０において、点Ｐ１２２）、
ｙａ（ｘ１（２），ｘ２（２），ｘ３（２））（図１０において、点Ｐ２２２）、
ｙａ（ｘ１（３），ｘ２（２），ｘ３（２））（図１０において、点Ｐ３２２）、
ｙａ（ｘ１（４），ｘ２（２），ｘ３（２））（図１０において、点Ｐ４２２）、
ｙａ（ｘ１（１），ｘ２（３），ｘ３（２））（図１０において、点Ｐ１３２）、
ｙａ（ｘ１（２），ｘ２（３），ｘ３（２））（図１０において、点Ｐ２３２）、
ｙａ（ｘ１（３），ｘ２（３），ｘ３（２））（図１０において、点Ｐ３３２）及び
ｙａ（ｘ１（４），ｘ２（３），ｘ３（２））（図１０において、点Ｐ４３２）。
【０１２１】
このように算出された上記１２個の推定値ｙａのそれぞれと、実際の出力値Ｙのそれぞれと、の間の誤差ｅｒｒが、何れも所定のマップ誤差閾値ｅｔｈ以下であればｘ３（２）は省略可能であると判定される。これに対し、上記誤差ｅｒｒのうちの何れかがマップ誤差閾値ｅｔｈよりも大きければ、ｘ３（２）は省略不可能であると判定される。
【０１２２】
ｘ３（２）が省略可能であると判定された場合、ｘ３（２）に加えてｘ３（３）も省略可能であるか否かが判定される。
【０１２３】
上記処理を繰り返すことによって、入力値Ｘ３に含まれる値ｘ３（ｎ３）のうち省略可能な値が探索される。入力値Ｘ２の場合と同様に、例えば、入力値Ｘ３の中で省略不可能であった項を表す数列が以下のように表されると仮定する。
ｎｉ３＝｛１，３，５｝
この場合、入力値の中で省略不可能であった入力値Ｘｉ３は、以下のように表される。
Ｘｉ３＝｛ｘｉ３（１），ｘｉ３（３），ｘｉ３（５）｝
【０１２４】
以上が、３次元マップの間引き処理である。３次元以上のマップに対しても、上述の間引き処理の次元を拡張することにより間引き処理を行うことができる。
【０１２５】
＜間引き処理の詳細＞
次に、マップ生成装置６０のＣＰＵ６１（以下、単に「ＣＰＵ」とも称呼される。）が実行する、間引き処理の詳細について図１１〜図１６を参照しながら説明する。
【０１２６】
（１）入力値Ｘ１の間引き処理
ＣＰＵは、３次元マップの間引きを実行するとき、先ず、入力値Ｘ１に含まれる値であって省略可能な値を探索する。その際、ＣＰＵは、図１１にフローチャートにより示された処理を実行する。即ち、ＣＰＵは、ステップ１１００から処理を開始してステップ１１０５に進み、変数ｉ１の値を「１」に設定し、カウンタｃ１の値を「２」に設定する。
【０１２７】
カウンタｃ１は、入力値Ｘ１に含まれる値であって省略不可能な値のカウントに用いられる。ｘ１（１）は省略されないので、即ち、「省略不可能な最初の入力値Ｘ１」は自明であるので、カウンタｃ１の値を「１」に設定して「省略不可能な最初の入力値Ｘ１」を探索する処理は実行されない。カウンタｃ１＝２である場合、「省略不可能な２番目の入力値Ｘ１」が探索されていることを表している。
【０１２８】
次いで、ＣＰＵは、ステップ１１１０に進み、変数ｎ３の値を「１」に設定する。次いで、ＣＰＵは、ステップ１１１５に進み、変数ｎ２の値を「１」に設定する。次いで、ＣＰＵは、ステップ１１２０に進み、図１２にフローチャートにより示されたサブルーチンＡを実行する。
【０１２９】
サブルーチンＡにおいて、ＣＰＵは、入力値Ｘ２＝ｘ２（ｎ２）且つ入力値Ｘ３＝ｘ３（ｎ３）であるとき、入力値Ｘ１に含まれる値であってｃ１番目に省略不可能な入力値Ｘ１の値ｎｉ１ｎ２ｎ３（ｃ１）を探索する。この値ｎｉ１ｎ２ｎ３（ｃ１）は、ｘ１（ｉ１）の次に省略不可能な入力値Ｘ１の値ということもできる。
【０１３０】
ＣＰＵは、サブルーチンＡを実行するとき、ステップ１２００から処理を開始し、ステップ１２０５に進んで、カウンタｃ１、変数ｉ１、変数ｎ２、変数ｎ３の値を読み込む。次いで、ＣＰＵは、ステップ１２１０に進み、変数ｊ１の値を変数ｉ１よりも「２」だけ大きい値に設定する（即ち、ｊ１←ｉ１＋２）。
【０１３１】
次いで、ＣＰＵは、ステップ１２１５に進み、
ｙ（ｉ１，ｎ２，ｎ３）及びｙ（ｊ１，ｎ２，ｎ３）に基づく１次元の線形補間によってｙ（ｉ１＋１，ｎ２，ｎ３）〜ｙ（ｊ１−１，ｎ２，ｎ３）のそれぞれの値を推定する。即ち、ＣＰＵは、推定値ｙａ（ｉ１＋１，ｎ２，ｎ３）〜推定値ｙａ（ｊ１−１，ｎ２，ｎ３）を算出する。
【０１３２】
例えば、変数ｉ１＝１、変数ｊ１＝３、変数ｎ２＝１且つ変数ｎ３＝１であれば（即ち、ＣＰＵが初めてステップ１２１５の処理を実行したとき）、ＣＰＵは、ｙ（１，１，１）及びｙ（３，１，１）に基づいて、ｙａ（２，１，１）を算出する。
【０１３３】
次いで、ＣＰＵは、ステップ１２２０に進み、推定値ｙａのそれぞれと、その推定値ｙａに対応する元々の出力値Ｙと、の差分である誤差ｅｒｒを算出する。更に、ＣＰＵは、誤差ｅｒｒの最大値Ｅｍａｘを算出する。次いで、ＣＰＵは、ステップ１２２５に進み、最大値Ｅｍａｘがマップ誤差閾値ｅｔｈよりも大きいか否かを判定する。
【０１３４】
最大値Ｅｍａｘがマップ誤差閾値ｅｔｈ以下である場合、即ち、ｙ（ｉ１＋１，ｎ２，ｎ３）〜ｙ（ｊ１−１，ｎ２，ｎ３）のそれぞれが省略可能であり得る場合、ＣＰＵは、ステップ１２２５にて「Ｎｏ」と判定してステップ１２３０に進む。
【０１３５】
ステップ１２３０にてＣＰＵは、変数ｊ１が入力値Ｘ１の総数Ｎ１に等しいか否かを判定する。変数ｊ１が総数Ｎ１に等しくない場合（即ち、変数ｊ１が総数Ｎ１より小さい場合）、ＣＰＵは、ステップ１２３０にて「Ｎｏ」と判定してステップ１２３５に進み、変数ｊ１の値を「１」だけ増加させ、ステップ１２１５に戻る。この場合、ＣＰＵは、更に長く連続した範囲（即ち、入力値Ｘ１がｉ１＋１からｊ１−１までの範囲）に含まれる入力値ｘ１が省略可能であるか否かの探索を行う。
【０１３６】
例えば、変数ｉ１＝１、変数ｊ１＝４、変数ｎ２＝１且つ変数ｎ３＝１であれば（即ち、上記の例と比較して変数ｊ１の値が「１」だけ増加していれば）、ＣＰＵは、ステップ１２１５にてｙ（１，１，１）及びｙ（４，１，１）に基づいて、ｙａ（２，１，１）及びｙａ（３，１，１）を算出する。
【０１３７】
ＣＰＵがステップ１２１５に戻り、入力値Ｘ１の値がどこまで省略可能であるか否かの探索を行った結果、誤差ｅｒｒの最大値Ｅｍａｘが誤差閾値よりも大きくなれば、ＣＰＵは、ステップ１２２５に進んだとき「Ｙｅｓ」と判定してステップ１２４０に進み、ｎｉ１ｎ２ｎ３（ｃ１）の値を「ｊ１−１」に設定する。即ち、入力値Ｘ２＝ｘ２（ｎ２）且つ入力値Ｘ３＝ｘ３（ｎ３）であるときｘ１（ｊ１−１）は省略不可能な値であると判定される。
【０１３８】
例えば、このとき、カウンタｃ１＝２、変数ｉ１＝１、変数ｊ１＝４、変数ｎ２＝１且つ変数ｎ３＝１であれば、Ｎｉ１１１（２）＝３となる。即ち、ｙ（１，１，１）及びｙ（３，１，１）に基づいて、ｙａ（２，１，１）を精度良く算出できる（即ち、誤差ｅｒｒがマップ誤差閾値ｅｔｈ以下となる）ことが判明している。
【０１３９】
次いで、ＣＰＵは、ステップ１２９５に進んで本サブルーチンを一旦終了する。
【０１４０】
一方、ステップ１２２５にて「Ｎｏ」と判定され且つ変数ｊ１が総数Ｎ１に達している場合、ＣＰＵは、ステップ１２３０にて「Ｙｅｓ」と判定してステップ１２４５に進み、省略不可能な入力値Ｘ１の値ｎｉ１ｎ２ｎ３（ｃ１）に入力値Ｘ１の総数Ｎ１を設定する。即ち、入力値Ｘ１の上端値であるｘ１（Ｎ１）は省略不可能であるので、更に入力値ｘ１が省略可能であるか否かの探索は行われない。更に、ＣＰＵは、ステップ１２９５に進んで本サブルーチンを一旦終了する。
【０１４１】
ＣＰＵは、図１２のサブルーチンＡを終了したとき、図１１のステップ１１２５に進み、変数ｎ２が入力値Ｘ２の総数Ｎ２に等しいか否かを判定する。
【０１４２】
変数ｎ２が総数Ｎ２よりも小さければ、ＣＰＵは、ステップ１１２５にて「Ｎｏ」と判定してステップ１１３０に進み、変数ｎ２の値を「１」だけ増加させ、ステップ１１２０に戻って図１２のサブルーチンＡを再度実行する。即ち、ＣＰＵは、変数ｎ２を増加したうえで入力値Ｘ１に含まれる値であって入力値ｘ１（ｉ１）の次に省略不可能な入力値Ｘ１の値ｎｉ１ｎ２ｎ３（ｃ１）を探索する。
【０１４３】
変数ｎ２が増加した結果、総数Ｎ２と等しくなれば、ＣＰＵは、ステップ１１２５にて「Ｙｅｓ」と判定してステップ１１３５に進み、変数ｎ３が入力値Ｘ３の総数Ｎ３に等しいか否かを判定する。
【０１４４】
変数ｎ３が総数Ｎ３よりも小さければ、ＣＰＵは、ステップ１１３５にて「Ｎｏ」と判定してステップ１１４０に進み、変数ｎ３の値を「１」だけ増加させ、ステップ１１１５に戻って変数ｎ２の値を「１」に戻したうえで図１２のサブルーチンＡを再度実行する。即ち、ＣＰＵは、あらゆる変数ｎ２と変数ｎ３の組合せに対してサブルーチンＡを実行することによって入力値ｘ１（ｉ１）の次に省略不可能な入力値Ｘ１の値ｎｉ１ｎ２ｎ３（ｃ１）を探索する。
【０１４５】
あらゆる変数ｎ２と変数ｎ３の組合せに対して値ｎｉ１ｎ２ｎ３（ｃ１）が取得されると、ＣＰＵは、ステップ１１３５に進んだとき「Ｙｅｓ」と判定してステップ１１４０に進む。ステップ１１４０にてＣＰＵは、ｎｉ１（ｃ１）に「あらゆる変数ｎ２と変数ｎ３の組合せに対して算出された複数の値ｎｉ１ｎ２ｎ３（ｃ１）」の内の最小値を設定する。換言すれば、任意の変数ｎ２と変数ｎ３の組合せに対してｎｉ１（ｃ１−１）とｎｉ１（ｃ１）との間に含まれる入力値Ｘ１は省略可能であるといえる。
【０１４６】
次いで、ＣＰＵは、ステップ１１４５に進み、ｎｉ１（ｃ１）が「入力値Ｘ１の総数Ｎ１−２」より大きいか否かを判定する。ｎｉ１（ｃ１）が「Ｎ１−２」以下であれば、ＣＰＵは、ステップ１１４５にて「Ｎｏ」と判定してステップ１１５０に進む。ステップ１１５０にてＣＰＵは、変数ｉ１にｎｉ１（ｃ１）を設定し、カウンタｃ１の値を「１」だけ増加させ、更に、ステップ１１１０に戻る。即ち、この場合、ＣＰＵは更に、省略可能な入力値Ｘ１の値を探索する。
【０１４７】
一方、ｎｉ１（ｃ１）が「Ｎ１−２」より大きければ、ＣＰＵは、ステップ１１４５にて「Ｙｅｓ」と判定してステップ１１５５に進み、ｎｉ１（ｃ１）が「Ｎ１−１」に等しいか否かを判定する。ｎｉ１（ｃ１）が「Ｎ１−１」に等しい場合、ＣＰＵは、ステップ１１５５にて「Ｙｅｓ」と判定してステップ１１６０に進む。
【０１４８】
この場合、ｘ１（Ｎ１−１）が省略不可能な値であると判定されている。ｘ１（Ｎ１）は省略されない値であるので、ＣＰＵは、更に省略可能な入力値Ｘ１の値を探索する必要は無い。そこで、ステップ１１６０にてＣＰＵは、省略不可能な入力値Ｘ１の集合である数列Ｘｉ１の最後の項としてｘ１（Ｎｉ１）を追加する。即ち、ＣＰＵは、ｎｉ１（Ｃ１＋１）をＮ１に等しい値に設定し、数列Ｘｉ１の項数Ｎｉ１をカウンタｃ１に「１」を加えた値に設定する。次いで、ＣＰＵは、ステップ１１９５に進んで本ルーチンを終了する。
【０１４９】
一方、ｎｉ１（ｃ１）が「Ｎ１−１」と等しくない場合（即ち、ｎｉ１（ｃ１）＝Ｎ１である場合）、ＣＰＵは、ステップ１１５５にて「Ｎｏ」と判定してステップ１１６５に進み、数列Ｘｉ１の項数Ｎｉ１をカウンタｃ１に等しい値に設定する。更に、ＣＰＵは、ステップ１１９５に進んで本ルーチンを終了する。
【０１５０】
（２）入力値Ｘ２の間引き処理
省略可能な入力値Ｘ１の探索が終了すると、ＣＰＵは、入力値Ｘ２に含まれる値であって省略可能な値を探索する。その際、ＣＰＵは、図１３にフローチャートにより示された処理を実行する。即ち、ＣＰＵは、ステップ１３００から処理を開始してステップ１３０５に進み、変数ｉ２の値を「１」に設定し、カウンタｃ２の値を「２」に設定する。
【０１５１】
次いで、ＣＰＵは、ステップ１３１０に進み、変数ｎ３の値を「１」に設定する。次いで、ＣＰＵは、ステップ１３１５に進み、変数ｍ１の値を「１」に設定する。変数ｎ３は入力値Ｘ３の項番号を表すのに対して、変数ｍ１は省略不可能であった入力値Ｘ１、即ち、Ｘｉ１の項番号を表す。換言すれば、変数ｎ３は１からＮ３までの整数であるのに対して、変数ｍ１は１からＮｉ１までの整数である。
【０１５２】
次いで、ＣＰＵは、ステップ１３２０に進み、図１４にフローチャートにより示されたサブルーチンＢを実行する。サブルーチンＢにおいて、ＣＰＵは、入力値Ｘｉ１＝ｘｉ１（ｍ１）且つ入力値Ｘ３＝ｘ３（ｎ３）であるとき、入力値Ｘ２に含まれる値であってｃ２番目に省略不可能な入力値Ｘ２の値ｎｉ２ｍ１ｎ３（ｃ２）を探索する。この値ｎｉ２ｍ１ｎ３（ｃ２）は、ｘ２（ｉ２）の次に省略不可能な入力値Ｘ２の値ということもできる。
【０１５３】
ＣＰＵは、サブルーチンＢを実行するとき、ステップ１４００から処理を開始し、ステップ１４０５に進んで、カウンタｃ２、変数ｉ２、変数ｍ１、変数ｎ３の値を読み込む。次いで、ＣＰＵは、ステップ１４１０に進み、変数ｊ２の値を変数ｉ２よりも「２」だけ大きい値に設定する（即ち、ｊ２←ｉ２＋２）。
【０１５４】
次いで、ＣＰＵは、ステップ１４１５に進み、
ｙ（ｎｉ１（ｍ１），ｉ２，ｎ３）及びｙ（ｎｉ１（ｍ１），ｊ２，ｎ３）並びに
ｙ（ｎｉ１（ｍ１＋１），ｉ２，ｎ３）及びｙ（ｎｉ１（ｍ１＋１），ｊ２，ｎ３）
に基づく２次元の線形補間によって
ｙ（ｋ１，ｋ２，ｎ３）（ただし、ｋ１＝ｎｉ１（ｍ１），…，ｎｉ１（ｍ＋１）、ｋ２＝ｉ２＋１，…，ｊ２−１）の値を推定する。即ち、ＣＰＵは、推定値ｙａ（ｋ１，ｋ２，ｎ３）を算出する。ただし、ＣＰＵは、上述した省略可能な入力値Ｘ１の探索の際に省略の可否が既に判定された出力値ｙに対応する推定値ｙａを算出しない。
【０１５５】
例えば、変数ｉ２＝１、変数ｊ２＝３、変数ｍ１＝１且つ変数ｎ３＝１であり、
ｎｉ１（１）＝１且つｎｉ１（２）＝４であれば、
ＣＰＵは、
ｙ（１，１，１）及びｙ（４，１，１）並びに
ｙ（１，３，１）及びｙ（４，３，１）
に基づいて
ｙａ（１，２，１）及びｙａ（４，２，１）
を算出する（図９（Ａ）と同様の事例）。
【０１５６】
次いで、ＣＰＵは、ステップ１４２０に進み、推定値ｙａのそれぞれと、その推定値ｙａに対応する元々の出力値Ｙと、の差分である誤差ｅｒｒを算出する。更に、ＣＰＵは、誤差ｅｒｒの最大値Ｅｍａｘを算出する。次いで、ＣＰＵは、ステップ１４２５に進み、最大値Ｅｍａｘがマップ誤差閾値ｅｔｈよりも大きいか否かを判定する。
【０１５７】
最大値Ｅｍａｘがマップ誤差閾値ｅｔｈ以下である場合、ＣＰＵは、ステップ１４２５にて「Ｎｏ」と判定してステップ１４３０に進む。
【０１５８】
ステップ１４３０にてＣＰＵは、変数ｊ２が入力値Ｘ２の総数Ｎ２に等しいか否かを判定する。変数ｊ２が総数Ｎ２に等しくない場合（即ち、変数ｊ２が総数Ｎ２より小さい場合）、ＣＰＵは、ステップ１４３０にて「Ｎｏ」と判定してステップ１４３５に進み、変数ｊ２の値を「１」だけ増加させ、ステップ１４１５に戻る。この場合、ＣＰＵは、更に長く連続した範囲（即ち、入力値Ｘ２がｉ２＋１からｊ２−１までの範囲）に含まれる入力値Ｘ２が省略可能であるか否かの探索を行う。
【０１５９】
例えば、変数ｉ２＝１、変数ｊ２＝４、変数ｍ１＝１且つ変数ｎ３＝１であり、
ｎｉ１（１）＝１且つｎｉ１（２）＝４であれば（即ち、上記の例と比較して変数ｊ１の値が「１」だけ増加していれば）、ＣＰＵは、ステップ１４１５にて
ｙ（１，１，１）及びｙ（４，１，１）並びに
ｙ（１，４，１）及びｙ（４，４，１）
に基づいて
ｙａ（１，２，１）及びｙａ（４，２，１）並びに
ｙａ（１，３，１）及びｙａ（４，３，１）
を算出する（図９（Ｂ）と同様の事例）。
【０１６０】
ＣＰＵがステップ１４１５に戻り、入力値Ｘ２の値がどこまで省略可能であるか否かの探索を行った結果、誤差ｅｒｒの最大値Ｅｍａｘが誤差閾値よりも大きくなれば、ＣＰＵは、ステップ１４２５に進んだとき「Ｙｅｓ」と判定してステップ１４４０に進み、ｎｉ２ｍ１ｎ３（ｃ２）の値を「ｊ２−１」に設定する。即ち、入力値Ｘｉ１＝ｘｉ１（ｍ１）且つ入力値Ｘ３＝ｘ３（ｎ３）であるときｘ２（ｊ２−１）は省略不可能な値であると判定される。
【０１６１】
例えば、このとき、カウンタｃ２＝２、変数ｉ２＝１、変数ｊ２＝４、変数ｍ１＝１且つ変数ｎ３＝１であれば、Ｎｉ２１１（２）＝３となる。
【０１６２】
次いで、ＣＰＵは、ステップ１４９５に進んで本サブルーチンを一旦終了する。
【０１６３】
一方、ステップ１４２５にて「Ｎｏ」と判定され且つ変数ｊ２が総数Ｎ２に達している場合、ＣＰＵは、ステップ１４３０にて「Ｙｅｓ」と判定してステップ１４４５に進み、省略不可能な入力値Ｘ２の値ｎｉ２ｍ１ｎ３（ｃ２）に入力値Ｘ２の総数Ｎ２を設定する。即ち、入力値Ｘ２の上端値であるｘ２（Ｎ２）は省略不可能であるので、更に入力値Ｘ２が省略不可能であるか否かの探索は行われない。更に、ＣＰＵは、ステップ１４９５に進んで本サブルーチンを一旦終了する。
【０１６４】
ＣＰＵは、図１４のサブルーチンＢを終了したとき、図１３のステップ１３２５に進み、変数ｍ１が「数列Ｘｉ１の項数Ｎｉ１−１」に等しいか否かを判定する。
【０１６５】
変数ｍ１が「項数Ｎｉ１−１」よりも小さければ、ＣＰＵは、ステップ１３２５にて「Ｎｏ」と判定してステップ１３３０に進み、変数ｍ１の値を「１」だけ増加させ、ステップ１３２０に戻って図１４のサブルーチンＢを再度実行する。即ち、ＣＰＵは、変数ｍ１を増加したうえで入力値Ｘ２に含まれる値であって入力値ｘ２（ｉ２）の次に省略不可能な入力値Ｘ２の値ｎｉ２ｍ１ｎ３（ｃ２）を探索する。
【０１６６】
変数ｍ１が増加した結果、「項数Ｎｉ１−１」と等しくなれば、ＣＰＵは、ステップ１３２５にて「Ｙｅｓ」と判定してステップ１３３５に進み、変数ｎ３が入力値Ｘ３の総数Ｎ３に等しいか否かを判定する。
【０１６７】
変数ｎ３が総数Ｎ３よりも小さければ、ＣＰＵは、ステップ１３３５にて「Ｎｏ」と判定してステップ１３４０に進み、変数ｎ３の値を「１」だけ増加させ、ステップ１３１５に戻って変数ｍ１の値を「１」に戻したうえで図１４のサブルーチンＢを再度実行する。即ち、ＣＰＵは、あらゆる変数ｍ１と変数ｎ３の組合せに対してサブルーチンＢを実行することによって入力値ｘ２（ｉ２）の次に省略不可能な入力値Ｘ２の値ｎｉ２ｍ１ｎ３（ｃ２）を探索する。
【０１６８】
あらゆる変数ｍ１と変数ｎ３の組合せに対して値ｎｉ２ｍ１ｎ３（ｃ２）が取得されると、ＣＰＵは、ステップ１３３５に進んだとき「Ｙｅｓ」と判定してステップ１３４０に進む。ステップ１３４０にてＣＰＵは、ｎｉ２（ｃ２）に「あらゆる変数ｍ１と変数ｎ３の組合せに対して算出された複数の値ｎｉ２ｍ１ｎ３（ｃ２）」の内の最小値を設定する。換言すれば、任意の変数ｍ１と変数ｎ３の組合せに対してｎｉ２（ｃ２−１）とｎｉ２（ｃ２）との間に含まれる入力値Ｘ２は省略可能であるといえる。
【０１６９】
次いで、ＣＰＵは、ステップ１３４５に進み、ｎｉ２（ｃ２）が「入力値Ｘ２の総数Ｎ２−２」より大きいか否かを判定する。ｎｉ２（ｃ２）が「Ｎ２−２」以下であれば、ＣＰＵは、ステップ１３４５にて「Ｎｏ」と判定してステップ１３５０に進む。ステップ１３５０にてＣＰＵは、変数ｉ２にｎｉ２（ｃ２）を設定し、カウンタｃ２の値を「１」だけ増加させ、更に、ステップ１３１０に戻る。即ち、この場合、ＣＰＵは更に、省略可能な入力値Ｘ２の値を探索する。
【０１７０】
一方、ｎｉ２（ｃ２）が「Ｎ２−２」より大きければ、ＣＰＵは、ステップ１３４５にて「Ｙｅｓ」と判定してステップ１３５５に進み、ｎｉ２（ｃ２）が「Ｎ２−１」に等しいか否かを判定する。ｎｉ２（ｃ２）が「Ｎ２−１」に等しい場合、ＣＰＵは、ステップ１３５５にて「Ｙｅｓ」と判定してステップ１３６０に進む。
【０１７１】
ステップ１３６０にてＣＰＵは、省略不可能な入力値Ｘ２の集合である数列Ｘｉ２の最後の項としてｘ２（Ｎｉ２）を追加する。即ち、ＣＰＵは、ｎｉ２（Ｃ２＋１）をＮ２に等しい値に設定し、数列Ｘｉ２の項数Ｎｉ２をカウンタｃ２に「１」を加えた値に設定する。次いで、ＣＰＵは、ステップ１３９５に進んで本ルーチンを終了する。
【０１７２】
一方、ｎｉ２（ｃ２）が「Ｎ２−１」と等しくない場合（即ち、ｎｉ２（ｃ２）＝Ｎ２である場合）、ＣＰＵは、ステップ１３５５にて「Ｎｏ」と判定してステップ１３６５に進み、数列Ｘｉ２の項数Ｎｉ２をカウンタｃ２に等しい値に設定する。更に、ＣＰＵは、ステップ１３９５に進んで本ルーチンを終了する。
【０１７３】
（３）入力値Ｘ３の間引き処理
省略可能な入力値Ｘ２の探索が終了すると、ＣＰＵは、入力値Ｘ３に含まれる値であって省略可能な値を探索する。その際、ＣＰＵは、図１５にフローチャートにより示された処理を実行する。即ち、ＣＰＵは、ステップ１５００から処理を開始してステップ１５０５に進み、変数ｉ３の値を「１」に設定し、カウンタｃ３の値を「２」に設定する。
【０１７４】
次いで、ＣＰＵは、ステップ１５１０に進み、変数ｍ２の値を「１」に設定する。変数ｍ２は、変数ｍ１と同様に、省略不可能であった入力値Ｘ２、即ち、Ｘｉ２の項番号を表す。換言すれば、変数ｍ２は１からＮｉ２までの整数である。
【０１７５】
次いで、ＣＰＵは、ステップ１５１５に進み、変数ｍ１の値を「１」に設定する。次いで、ＣＰＵは、ステップ１５２０に進み、図１６にフローチャートにより示されたサブルーチンＣを実行する。
【０１７６】
サブルーチンＣにおいて、ＣＰＵは、入力値Ｘｉ１＝ｘｉ１（ｍ１）且つ入力値Ｘｉ２＝ｘｉ２（ｍ２）であるとき、入力値Ｘ３に含まれる値であってｃ３番目に省略不可能な入力値Ｘ３の値ｎｉ３ｍ１ｍ２（ｃ３）を探索する。この値ｎｉ３ｍ１ｍ２（ｃ３）は、ｘ３（ｉ３）の次に省略不可能な入力値Ｘ３の値ということもできる。
【０１７７】
ＣＰＵは、サブルーチンＣを実行するとき、ステップ１６００から処理を開始し、ステップ１６０５に進んで、カウンタｃ３、変数ｉ３、変数ｍ１、変数ｍ２の値を読み込む。次いで、ＣＰＵは、ステップ１６１０に進み、変数ｊ３の値を変数ｉ３よりも「２」だけ大きい値に設定する（即ち、ｊ３←ｉ３＋２）。
【０１７８】
次いで、ＣＰＵは、ステップ１６１５に進み、
ｙ（ｎｉ１（ｍ１），ｎｉ２（ｍ２），ｉ３）及び
ｙ（ｎｉ１（ｍ１），ｎｉ２（ｍ２），ｊ３）、
ｙ（ｎｉ１（ｍ１＋１），ｎｉ２（ｍ２），ｉ３）及び
ｙ（ｎｉ１（ｍ１＋１），ｎｉ２（ｍ２），ｊ３）、
ｙ（ｎｉ１（ｍ１），ｎｉ２（ｍ２＋１），ｉ３）及び
ｙ（ｎｉ１（ｍ１），ｎｉ２（ｍ２＋１），ｊ３）並びに
ｙ（ｎｉ１（ｍ１＋１），ｎｉ２（ｍ２＋１），ｉ３）及び
ｙ（ｎｉ１（ｍ１＋１），ｎｉ２（ｍ２＋１），ｊ３）
に基づいて、入力値Ｘ１、入力値Ｘ２及び入力値Ｘ３のそれぞれが互いに直交する３次元グラフにおける「これら８つの入力値の組み合わせに対応する点を頂点とする直方体」に含まれる各点に対応する入力値に対する出力値を推定する。即ち、ＣＰＵは、推定値ｙａを算出する（図１０と同様の事例）。ただし、ＣＰＵは、上述した省略可能な入力値Ｘ１及び入力値Ｘ２の探索の際に省略の可否が既に判定された出力値ｙに対応する推定値ｙａを算出しない。
【０１７９】
次いで、ＣＰＵは、ステップ１６２０に進み、推定値ｙａのそれぞれと、その推定値ｙａに対応する元々の出力値Ｙと、の差分である誤差ｅｒｒを算出する。更に、ＣＰＵは、誤差ｅｒｒの最大値Ｅｍａｘを算出する。次いで、ＣＰＵは、ステップ１６２５に進み、最大値Ｅｍａｘがマップ誤差閾値ｅｔｈよりも大きいか否かを判定する。
【０１８０】
最大値Ｅｍａｘがマップ誤差閾値ｅｔｈ以下である場合、ＣＰＵは、ステップ１６２５にて「Ｎｏ」と判定してステップ１６３０に進む。
【０１８１】
ステップ１６３０にてＣＰＵは、変数ｊ３が入力値Ｘ３の総数Ｎ３に等しいか否かを判定する。変数ｊ３が総数Ｎ３に等しくない場合（即ち、変数ｊ３が総数Ｎ３より小さい場合）、ＣＰＵは、ステップ１６３０にて「Ｎｏ」と判定してステップ１６３５に進み、変数ｊ３の値を「１」だけ増加させ、ステップ１６１５に戻る。この場合、ＣＰＵは、更に長く連続した範囲（即ち、入力値Ｘ３がｉ３＋１からｊ３−１までの範囲）に含まれる入力値Ｘ３が省略可能であるか否かの探索を行う。
【０１８２】
ＣＰＵがステップ１６１５に戻り、入力値Ｘ３の値がどこまで省略可能であるか否かの探索を行った結果、誤差ｅｒｒの最大値Ｅｍａｘが誤差閾値よりも大きくなれば、ＣＰＵは、ステップ１６２５に進んだとき「Ｙｅｓ」と判定してステップ１６４０に進み、ｎｉ３ｍ１ｍ２（ｃ３）の値を「ｊ３−１」に設定する。即ち、入力値Ｘｉ１＝ｘｉ１（ｍ１）且つ入力値Ｘｉ２＝ｘｉ２（ｍ２）であるときｘ３（ｊ３−１）は省略不可能な値であると判定される。
【０１８３】
次いで、ＣＰＵは、ステップ１６９５に進んで本サブルーチンを一旦終了する。
【０１８４】
一方、ステップ１６２５にて「Ｎｏ」と判定され且つ変数ｊ３が総数Ｎ３に達している場合、ＣＰＵは、ステップ１６３０にて「Ｙｅｓ」と判定してステップ１６４５に進み、省略不可能な入力値Ｘ３の値ｎｉ３ｍ１ｍ２（ｃ３）に入力値Ｘ３の総数Ｎ３を設定する。即ち、入力値Ｘ３の上端値であるｘ３（Ｎ３）は省略不可能であるので、更に入力値Ｘ３が省略不可能であるか否かの探索は行われない。更に、ＣＰＵは、ステップ１６９５に進んで本サブルーチンを一旦終了する。
【０１８５】
ＣＰＵは、図１６のサブルーチンＣを終了したとき、図１５のステップ１５２５に進み、変数ｍ１が「数列Ｘｉ１の項数Ｎｉ１−１」に等しいか否かを判定する。
【０１８６】
変数ｍ１が「項数Ｎｉ１−１」よりも小さければ、ＣＰＵは、ステップ１５２５にて「Ｎｏ」と判定してステップ１５３０に進み、変数ｍ１の値を「１」だけ増加させ、ステップ１５２０に戻って図１６のサブルーチンＣを再度実行する。即ち、ＣＰＵは、変数ｍ１を増加したうえで入力値Ｘ３に含まれる値であって入力値ｘ３（ｉ３）の次に省略不可能な入力値Ｘ３の値ｎｉ３ｍ１ｍ２（ｃ３）を探索する。
【０１８７】
変数ｍ１が増加した結果、「項数Ｎｉ１−１」と等しくなれば、ＣＰＵは、ステップ１５２５にて「Ｙｅｓ」と判定してステップ１５３５に進み、変数ｍ２が「数列Ｘｉ２の項数Ｎｉ２−１」に等しいか否かを判定する。
【０１８８】
変数ｍ２が「項数Ｎｉ２−１」よりも小さければ、ＣＰＵは、ステップ１５３５にて「Ｎｏ」と判定してステップ１５４０に進み、変数ｍ２の値を「１」だけ増加させ、ステップ１５１５に戻って変数ｍ１の値を「１」に戻したうえで図１６のサブルーチンＣを再度実行する。即ち、ＣＰＵは、あらゆる変数ｍ１と変数ｍ２の組合せに対してサブルーチンＣを実行することによって入力値ｘ３（ｉ３）の次に省略不可能な入力値Ｘ３の値ｎｉ３ｍ１ｍ２（ｃ３）を探索する。
【０１８９】
あらゆる変数ｍ１と変数ｍ２の組合せに対して値ｎｉ３ｍ１ｍ２（ｃ３）が取得されると、ＣＰＵは、ステップ１５３５に進んだとき「Ｙｅｓ」と判定してステップ１５４０に進む。ステップ１５４０にてＣＰＵは、ｎｉ３（ｃ３）に「あらゆる変数ｍ１と変数ｍ２の組合せに対して算出された複数の値ｎｉ３ｍ１ｍ２（ｃ３）」の内の最小値を設定する。換言すれば、任意の変数ｍ１と変数ｍ２の組合せに対してｎｉ３（ｃ３−１）とｎｉ３（ｃ３）との間に含まれる入力値Ｘ３は省略可能であるといえる。
【０１９０】
次いで、ＣＰＵは、ステップ１５４５に進み、ｎｉ３（ｃ３）が「入力値Ｘ３の総数Ｎ３−２」より大きいか否かを判定する。ｎｉ３（ｃ３）が「Ｎ３−２」以下であれば、ＣＰＵは、ステップ１５４５にて「Ｎｏ」と判定してステップ１５５０に進む。ステップ１５５０にてＣＰＵは、変数ｉ３にｎｉ３（ｃ３）を設定し、カウンタｃ３の値を「１」だけ増加させ、更に、ステップ１５１０に戻る。即ち、この場合、ＣＰＵは更に、省略可能な入力値Ｘ３の値を探索する。
【０１９１】
一方、ｎｉ３（ｃ３）が「Ｎ３−２」より大きければ、ＣＰＵは、ステップ１５４５にて「Ｙｅｓ」と判定してステップ１５５５に進み、ｎｉ３（ｃ３）が「Ｎ３−１」に等しいか否かを判定する。ｎｉ３（ｃ３）が「Ｎ３−１」に等しい場合、ＣＰＵは、ステップ１５５５にて「Ｙｅｓ」と判定してステップ１５６０に進む。
【０１９２】
ステップ１５６０にてＣＰＵは、省略不可能な入力値Ｘ３の集合である数列Ｘｉ３の最後の項としてｘ３（Ｎｉ３）を追加する。即ち、ＣＰＵは、ｎｉ３（Ｃ３＋１）をＮ３に等しい値に設定し、数列Ｘｉ３の項数Ｎｉ３をカウンタｃ３に「１」を加えた値に設定する。次いで、ＣＰＵは、ステップ１５９５に進んで本ルーチンを終了する。
【０１９３】
一方、ｎｉ３（ｃ３）が「Ｎ３−１」と等しくない場合（即ち、ｎｉ３（ｃ３）＝Ｎ３である場合）、ＣＰＵは、ステップ１５５５にて「Ｎｏ」と判定してステップ１５６５に進み、数列Ｘｉ３の項数Ｎｉ３をカウンタｃ３に等しい値に設定する。更に、ＣＰＵは、ステップ１５９５に進んで本ルーチンを終了する。
【０１９４】
（４）間引き処理のまとめ
ＣＰＵは、上述した間引き処理を実行することによって元マップ（３次元マップ）に対する間引きマップを生成する。ＦＰＧＡ５４は、この間引きマップを用いて上述したシミュレーション動作（即ち、インバータ７０及び電動機８０の模擬）を行う。なお、ＦＰＧＡ５４は、間引きマップを参照する際、参照すべき入力値と出力値との組合せが省略されている場合、上記間引き処理において用いられた線形補間と同様の処理によって推定値ｙａを算出する。
【０１９５】
ここでは、３次元マップの間引き処理について説明したが、ＣＰＵは４次元以上の多次元マップに対しても同様に間引き処理を実行することができる。例えば、元マップが、Ｘ１、Ｘ２、Ｘ３及びＸ４の組合せから構成される入力値と、それぞれが出力値のそれぞれに対応している出力値から構成される４次元マップであれば、ＣＰＵは、３次元マップの場合と同様に間引き処理を実行することができる。より具体的に述べると、ＣＰＵは、入力値Ｘ１に含まれる値であって省略可能な値を探索し、次に、入力値Ｘ２に含まれる値であって省略可能な値を探索し、更に、入力値Ｘ３に含まれる値であって省略可能な値を探索したうえで、入力値Ｘ４に含まれる値であって省略可能な値を探索する。
【０１９６】
＜シミュレータの作動＞
次に、シミュレータ３０によるモーター制御ＥＣＵ１０の試験について説明する。シミュレータ３０は、モーターアッシーＭＡ、即ち、インバータ７０及び電動機８０の作動を模擬する。即ち、シミュレータ３０は、インバータ７０のＩＧＢＴ７１ａ〜ＩＧＢＴ７６ａを制御するためのＰＷＭ信号をモーター制御ＥＣＵ１０から受信する一方、モーター制御ＥＣＵ１０に対して電流ｉｕ、電流ｉｖ及び電流ｉｗ並びに電動機８０の回転角θのそれぞれを表すセンサ信号を出力する。
【０１９７】
より具体的に述べると、モーター制御ＥＣＵ１０は、入力電圧Ｖｉが所定値であるときに電動機８０が所定の目標トルクＴｒ＊に等しいトルクを発生するようにＰＷＭ信号を生成し、そのＰＷＭ信号をシミュレータ３０へ送信する。シミュレータ３０は、入力電圧Ｖｉが上記所定値であるときにインバータ７０がモーター制御ＥＣＵ１０から受信したＰＷＭ信号によって制御された結果、電動機８０に流れる電流を算出する。例えば、シミュレータ３０は、電動機８０のＵ相コイルに流れる電流ｉｕを下式（１）に示される電圧電流方程式に基づいて算出する。
【数１】
0006359471.tif 000002
【０１９８】
ただし、上記式（１）において、
ＶはＵ相コイルに印加される電圧であって入力電圧Ｖｉに等しい電圧、
ＲはＵ相コイルの抵抗、
ＬはＵ相コイルの自己インダクタンス、
ωは電動機８０のロータの回転速度（角速度）、
φはＵ相コイルを貫通する磁束の密度である。
【０１９９】
しかし、インダクタンスＬ及び磁束密度φは時々刻々と変化するパラメータであるため、これらのパラメータを逐次算出することはシミュレータ３０にとって負荷が大きい。そこでシミュレータ３０は、入力電圧Ｖｉ、Ｕ相コイルに印加される電圧波形と同Ｕ相コイルに流れる電流波形との位相差β、及び、回転角θの組合せ（入力値）からインダクタンスＬ（出力値）を取得するマップＡ、並びに、これらの入力値から磁束密度φを取得するマップＢを記憶している。
【０２００】
マップＡ及びマップＢのそれぞれは、マップ生成装置６０によって生成された間引きマップであり、ＨＤＤ４２に格納されている。シミュレータ３０によるシミュレーション動作の開始時、ＣＰＵ４１はマップＡ及びマップＢをＦＰＧＡ５１にロードする。
【０２０１】
ＦＰＧＡ５１を搭載するベースボード５０は、マップＡ及びマップＢを参照することによって上記式（１）に代入すべきパラメータを取得できるので、高速演算が可能となり、以て、モーター制御ＥＣＵ１０が出力する制御信号に対してリアルタイムにセンサ信号を返すことができる。本例において、シミュレータ３０は１０．０ｎｓｅｃ毎に上述した演算を実行し、モーター制御ＥＣＵ１０からの入力（入力制御信号）に対する出力（出力結果信号）を生成する。
【０２０２】
同様に、シミュレータ３０は、電動機８０のＶ相コイルに流れる電流ｉｖ及び電動機８０のＷ相に流れる電流ｉｗを算出する。ただし、Ｖ相コイルはＵ相コイルと比較して回転角θに対して位相が１２０°遅れており、Ｗ相コイルはＵ相コイルと比較して回転角θに対して位相が２４０°遅れている。
【０２０３】
シミュレータ３０は、算出された電流ｉｕ、電流ｉｖ及び電流ｉｗを表すセンサ信号をモーター制御ＥＣＵ１０に対して出力する。加えて、シミュレータ３０は、回転角θの進角量を算出し、その時点の回転角θ（絶対角度）を表すセンサ信号をモーター制御ＥＣＵ１０に対して出力する。
【０２０４】
以上、説明したように本生成装置（マップ生成装置６０）は、
複数の離散的入力値とそれぞれが前記複数の離散的入力値のそれぞれに対応している複数の離散的出力値との組合せを規定したマップ（マップＡ及びマップＢ）を予め記憶しており、試験対象である電子制御装置から逐次入力される入力制御信号（モーター制御ＥＣＵ１０がシミュレータ３０に出力するＰＷＭ信号）を受信して同入力制御信号に対する出力結果信号を前記マップを参照する工程を含む特定方法（マップＡ及びマップＢを参照して得られた値を上記式（１）に代入してＵ相電流ｉｕが算出される工程を含む出力結果信号の算出方法）により算出し同算出した出力結果信号（シミュレータ３０がモーター制御ＥＣＵ１０に出力するＵ相電流ｉｕ、Ｖ相電流ｉｖ及びＷ相電流ｉｗ並びに回転角θ）を同電子制御装置に出力するシミュレーション装置（シミュレータ３０）、の前記マップを生成するマップ生成装置（６０）であって、
データの削減がなされていないマップである元マップ（ＨＤＤ６２に記憶された元マップ）に対して、前記複数の離散的入力値の一つである特定入力値と前記元マップとにより得られる同特定入力値に対応する前記複数の離散的出力値の一つである特定出力値を、前記複数の離散的入力値のうちそれぞれが前記特定入力値とは異なる複数の入力値と前記元マップとにより得られる複数の出力値を用いて推定し、前記特定出力値と前記推定した値との差分の大きさが所定のマップ誤差閾値（ｅｔｈ）以下である場合に前記特定入力値と前記特定出力値との組合せを前記元マップから省略する間引き処理を繰り返し行うことにより、前記元マップのデータよりも少ない数のデータを有する間引きマップを生成する（図４のステップ４２５）ように構成されている。
【０２０５】
更に、本生成装置は、
前記特定方法により前記元マップを参照することによって算出される前記入力制御信号に対する第１の前記出力結果信号（図５の曲線ｉｕ１）と、同特定方法により前記間引きマップを参照することによって算出される前記入力制御信号に対する第２の前記出力結果信号（図５の曲線ｉｕ２）と、の差分に相関を有する精度相関値（Ｉｘｕ）を算出し、前記精度相関値が所定のシミュレーション誤差閾値範囲に含まれる（図４のステップ４４０）まで前記マップ誤差閾値を変更したうえ（図４のステップ４４５）で前記間引き処理を繰り返し行って前記間引きマップを更新し且つ前記精度相関値が前記シミュレーション誤差閾値範囲に含まれているときにはその時点で得られている前記間引きマップを前記シミュレーション装置が記憶するマップとして決定する（図４のステップ４５０）ように構成されている。
【０２０６】
なお、前記第１の出力結果信号は、前記シミュレーション装置が前記元マップを記憶していると仮定した場合に前記入力制御信号に対して前記シミュレーション装置により算出される前記出力結果信号である。一方、前記第２の出力結果信号は、前記シミュレーション装置が前記間引きマップを記憶していると仮定した場合に前記入力制御信号に対して前記シミュレーション装置により算出される前記出力結果信号である。
【０２０７】
更に、本生成装置は、
前記マップ誤差閾値が第１マップ誤差閾値である場合に生成された前記間引きマップに対する前記精度相関値が前記シミュレーション誤差閾値範囲の上限値（Ｉｘｕｍａｘ）より大きく、且つ、前記マップ誤差閾値が前記第１マップ誤差閾値と異なる第２マップ誤差閾値である場合に生成された前記間引きマップに対する前記精度相関値が前記シミュレーション誤差閾値範囲の下限値（Ｉｘｕｍｉｎ）より小さいとき、前記第１のマップ誤差閾値と前記第２のマップ誤差閾値との平均値を前記マップ誤差閾値の変更された値として採用して（図４のステップ４４５）前記間引きマップを更新するように構成されている。
【０２０８】
本生成装置によれば、シミュレーション精度が精度相関値Ｉｘｕが所望の範囲内となる）ようにしながら、シミュレーション装置が用いるマップのデータを適切に削減することができる。加えて、本生成装置によれば、本発明装置によれば、管理者がシミュレーション誤差閾値範囲を指定することにより、精度相関値Ｉｘｕがその範囲に含まれるようにデータの削減が適切になされたマップを自動的に生成することができる。
【０２０９】
以上、本発明に係るマップ生成装置の実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。例えば、ＣＰＵ６１は、Ｕ相電流に基づく差分Ｄｕによって精度相関値Ｉｘｕを算出していた。しかし、ＣＰＵ６１は、更に、Ｖ相電流に基づく精度相関値Ｉｘｖ及びＷ相電流に基づく精度相関値Ｉｘｗを算出し、精度相関値Ｉｘｕ、精度相関値Ｉｘｖ及び精度相関値Ｉｘｗに基づいた精度相関値を算出し、その精度相関値が特定範囲に含まれるか否かを判定しても良い。
【０２１０】
加えて、マップＡ及びマップＢのそれぞれは３次元マップであった。しかし、マップＡ及び／又はマップＢは４次元以上の多次元マップであっても良い。例えば、マップＡ及び／又はマップＢは入力値として電動機８０のコイル温度を更に含む４次元マップでも良い。
【０２１１】
加えて、本実施形態において、下限値Ｉｘｕｍｉｎ及び上限値Ｉｘｕｍａｘは互いに異なる値であった。しかし、下限値Ｉｘｕｍｉｎ及び上限値Ｉｘｕｍａｘは互いに等しい値であっても良い。この場合、コントローラ４０は、精度相関値Ｉｘｕが下限値Ｉｘｕｍｉｎ（及び上限値Ｉｘｕｍａｘ）と等しくなるマップ誤差閾値ｅｔｈを探索し、そのマップ誤差閾値ｅｔｈに基づいて間引き処理が実行されたマップをシミュレータ３０が記憶するマップとして決定する。
【０２１２】
加えて、本実施形態において、マップ生成装置６０が、「シミュレータ３０が元マップを記憶している場合にモーターアッシーＭＡの動作を模擬したときに出力する出力結果信号（第１の出力結果信号）」及び「シミュレータ３０が間引きマップを記憶している場合にモーターアッシーＭＡの動作を模擬したときに出力する出力結果信号（第２の出力結果信号）」を算出していた。しかし、マップ生成装置６０は、シミュレータ３０に第１の出力結果信号及び第２の出力結果信号の何れか一方又は両方を算出させても良い。マップ生成装置６０がシミュレータ３０に第２の出力結果信号を算出させる場合、マップ生成装置６０は生成された間引きマップをＦＰＧＡ５１に直接ロードする。
【０２１３】
加えて、本実施形態において、シミュレータ３０は、出力結果信号として電流ｉｕ、電流ｉｖ及び電流ｉｗをモーター制御ＥＣＵへ出力していた。しかし、シミュレータ３０は、電流ｉｕ及び電流ｉｖのみをモーター制御ＥＣＵへ出力しても良い。この場合、モーター制御ＥＣＵは、電動機８０のＵ相コイル、Ｖ相コイル及びＷ相コイルのそれぞれの一端が中性点Ｃに接続されていることを利用し、電流ｉｗを電流ｉｕ及び電流ｉｖに基づいてｉｗ＝−（ｉｕ＋ｉｖ）として算出しても良い。或いは、シミュレータ３０は、電流ｉｕ及び電流ｉｗのみをモーター制御ＥＣＵへ出力しても良い。この場合、モーター制御ＥＣＵは、電流ｉｖを電流ｉｕ及び電流ｉｗに基づいてｉｖ＝−（ｉｕ＋ｉｗ）として算出しても良い。或いは、シミュレータ３０は、電流ｉｖ及び電流ｉｗのみをモーター制御ＥＣＵへ出力しても良い。この場合、モーター制御ＥＣＵは、電流ｉｕを電流ｉｖ及び電流ｉｗに基づいてｉｕ＝−（ｉｖ＋ｉｗ）として算出しても良い。
【０２１４】
加えて、本実施形態において、マップ生成装置６０は、シミュレータ３０がモーターアッシーＭＡの作動の模擬を行う際に参照されるマップに対して間引き処理を実行していた。しかし、マップ生成装置６０は、シミュレーション装置がモーターアッシーＭＡとは異なるアクチュエータの作動の模擬を行う際に参照されるマップに対して間引き処理を実行しても良い。換言すれば、マップ生成装置６０は、モーター制御ＥＣＵ以外の電子制御装置の開発・試験に用いられるシミュレーション装置が参照するマップに対して間引き処理を実行しても良い。
【０２１５】
例えば、マップ生成装置６０は、エンジンの回転速度及び要求トルク等に応じて燃料噴射量及び燃料噴射時期等を決定するエンジンＥＣＵの開発・試験に用いられるシミュレーション装置が参照するマップに対して間引き処理を実行しても良い。或いは、マップ生成装置６０は、車両の走行速度及びエンジンの回転速度等に応じて変速タイミングを決定するトランスミッションＥＣＵの開発・試験に用いられるシミュレーション装置が参照するマップに対して間引き処理を実行しても良い。即ち、本実施形態のマップ生成装置は、どのような電子制御装置に対応するシミュレータに対しても、そのシミュレータが参照するマップを有している限り適用可能である。
【０２１６】
加えて、本実施形態において、コントローラ４０及びマップ生成装置６０のそれぞれは、不揮発性記憶装置としてハードディスクドライブ（ＨＤＤ４２及びＨＤＤ６２）を搭載していた。しかし、コントローラ４０及び／又はマップ生成装置６０は、ハードディスクドライブ以外の不揮発性記憶装置（例えば、フラッシュメモリを含んだソリッドステートドライブ（ＳＤＤ））を搭載しても良い。
【符号の説明】
【０２１７】
モーター制御ＥＣＵ…１０、シミュレータ…３０、コントローラ…４０、ベースボード…５０、マップ生成装置…６０。
【図１】
0006359471.tif 000003
【図２】
0006359471.tif 000004
【図３】
0006359471.tif 000005
【図４】
0006359471.tif 000006
【図５】
0006359471.tif 000007
【図６】
0006359471.tif 000008
【図７】
0006359471.tif 000009
【図８】
0006359471.tif 000010
【図９】
0006359471.tif 000011
【図１０】
0006359471.tif 000012
【図１１】
0006359471.tif 000013
【図１２】
0006359471.tif 000014
【図１３】
0006359471.tif 000015
【図１４】
0006359471.tif 000016
【図１５】
0006359471.tif 000017
【図１６】
0006359471.tif 000018