HyperStudyによるバンドパスフィルターの最適化
HyperStudyを設定し、最適化を実行します。ここでは反射係数を最小にします。
-
%FEKO_HOME%/help/feko/example/ExampleGuide_models/Example-I04-HyperStudy_bandpass_filter_optimisation/opt_scriptingのファイルを作業用のディレクトリにコピーします。
Note: 作業用ディレクトリに書き込み権限があり、そのディレクトリが読み取り専用になっていないことを確認してください。
スクリプbandpassfilter.cfx_extract.luaは、フィルターのs11avg を計算し、その結果をHyperStudy .hstpファイルに書き込むようにあらかじめ設定されています。
-- Run into POSTFEKO to fetch results and push the scalar values to a HyperStudy .hstp file HstUtl = require "hst.hstutl" local app = pf.GetApplication() local config = app.Models[1].Configurations[1] -- Get first s-parameter result local sparam = pf.SParameter.GetDataSet( pf.SParameter.GetNames()[1] ) local s11 = sparam[1][1].SParameter -- Calculate the average reflection coefficient across the frequency band local s11avg = 0 local num_frequencies = sparam.Axes[pf.Enums.DataSetAxisEnum.Frequency].Count for findex = 1,num_frequencies do s11avg = s11avg + sparam[findex][1].SParameter:Abs() end s11avg = s11avg/num_frequencies -- Create the output file file = HstUtl.NewOutputFile( ) HstUtl.StoreScalarValue( file, "s11avg", s11avg ) HstUtl.WriteFile( file ) -- End of file
- Altair HyperStudyを開きます。
-
Studyグループの下で、Newをクリックします。
Add Studyダイアログ表示されます。
- [オプション] Label フィールドで、スタディの名前を指定します。
- Locationの下に、bandpassfilter.cfxがある作業ディレクトリへのパスを入力します。
-
ExplorerタブのSetup > Definition > Define modelsをクリックします。
-
Add Modelをクリックします。
Addダイアログ表示されます。
- Select Typeeの下で、FEKOを選択し、OKをクリックします。
-
Resourceで、、作業ディレクトリにある bandpassfilter.cfxを選択します。
Note:
- ソルバースクリプトは自動的に登録されます。このスクリプトにはEdit > Register Solver Scriptからアクセスでき、他のソルバーやバージョンを登録することができます。
- ソルバーの入力引数は、デフォルトでは${filebasename}を表示します。ここで引数-npを入力すると、使用するコア数を指定できます。
- 用意されているファイルbandpassfilter.cfx_extract.luaは、モデルファイルと同じ場所に保存されています。
-
Import Variablesをクリックすると、CADFEKOのモデル変数がインポートされます。
- Nextをクリックします。
-
スタディで扱う変数を選択します。S1~S3のみが有効であることを確認し、デフォルトの範囲を使用します。
選択した変数の例が表示されます。
- Nextをクリックします。
-
Run Definitionをクリックします。
Writeフェーズでは、bandpassfilter.cfx_extract.luaファイルが実行ディレクトリにコピーされ、ExtractフェーズでのFekoソルバー実行後に実行されます。これにより、HyperStudyで容易に処理できる出力ファイルが生成されます。Note: スクリプトbandpassfilter.cfx_extract.luaは、変数をインポートする前に.pfsファイルが存在していた場合とは異なり、Cartesian graphとpolar graphの表示可能なトレースを自動的に抽出します。
- Nextをクリックします。
-
File Assistantをクリックします。
File Assistantダイアログ表示されます。
- デフォルトの実行ディレクトリにある./m_1/hst_output.hstpを選択します。
- Altair HyperWorks (HstReaderPdd)が選択されていることを確認し、Nextをクリックします。
-
Single Item in a Time Seriesが選択されていることを確認し、Nextをクリックします。
-
s11avgが選択されていることを確認し、Nextをクリックします。
-
Label欄にs11avgを入力し、応答のラベルの名前を変更します。
- Finishをクリックしてダイアログを閉じます。
-
Goalsのをクリックして、最適化目標を追加します。
以下のダイアログが表示されます。
- 目標のTypeをMinimizeに設定し、OKをクリックします。
-
Evaluateをクリックして出力ファイルから値を抽出します。
HyperStudyは、これで、使用するモデル、修正で使用できる変数、出力の処理方法のそれぞれを把握できるように設定されています。
-
Explorerタブで定義済みのスタディを右クリックし、Addをクリックします。
-
Select Typeeの下で、Optimizationを選択し、OKをクリックします。
最適化アプローチは、Explorerタブで作成します。
-
Optimization 1 > Specificationsをクリックし、オプティマイザとしてAdaptive Response Surface
Methodを選択します。
-
Applyをクリックし、Nextをクリックします。
-
Evaluate Tasksをクリックします。
各入力変数がランダムに変更され、応答に対するその効果が解析されます。
-
Iteration Historyで、緑色で強調表示されている行を確認します。
最適値は次のようになります。
- S1 = 0.4500000
- S2 = 1.9254786
- S3 = 2.2000000