uSimmics(旧QucsStudio)には「Circuit Optimizer」機能が搭載されており、特定のコンポーネント値を自動で最適化して、望ましい回路動作を実現することができます。本記事では、電源から供給される電力を最大化する負荷抵抗の値を求めるという具体的な例を通じて、最適化の手順を解説します。
この記事でわかること
- uSimmics(旧QucsStudio)のCircuit Optimizer機能の概要
- 最適化対象の回路設計と変数・目標の設定方法
- Insert Equation を使ったカスタムパラメータの定義方法
- 最適化結果をTabularコンポーネントで確認する方法
- 各最適化アルゴリズム(Grid Search・勾配降下法・DEなど)の特徴と使い分け
最適化の概要
Circuit Optimizer は、指定した変数(コンポーネント値など)を変化させながらシミュレーションを繰り返し、設定した目標(最大化・最小化・目標値への収束)を達成するコンポーネント値を自動で探索します。
手順
1. 最適化対象の回路を設計する
今回の例では以下の回路を使用します。
- 内部インピーダンス 33 Ω の電源が負荷抵抗(R1)に接続
- 目標:負荷抵抗 R1 で消費される電力を最大化する
設計ポイント: 最大電力伝達の定理より、負荷抵抗 = 内部インピーダンス(33 Ω)のときに供給電力が最大となります。最適化結果でこれを検証します。
2. 測定用ノードと電流プローブを配置する
最適化の目標を「電力」とするには、電圧と電流の両方を測定する必要があります。
- R1 にかかる電圧のノードを 「Voltage」 と命名します。
- R1 に直列に電流プローブを挿入し、その電流値を 「Current」 と名付けます。
3. Optimization コンポーネントを追加する
- uSimmics(旧QucsStudio)のツールバーから「Optimization」コンポーネントを選択し、回路図上に配置します。
- コンポーネントをダブルクリックして設定ダイアログを開きます。
4. 変数(Variables)タブで最適化変数を設定する
「Variables」タブで、最適化中に変更するパラメータを設定します。
| 設定項目 | 値の例 |
|---|---|
| 変数名 | R_load(R1の抵抗値) |
| 開始値 | 10 Ω |
| 最小値 | 1 Ω |
| 最大値 | 200 Ω |
5. 目標(Goals)タブで最適化目標を設定する
「Goals」タブで、最適化の目標を設定します。今回は「Power」パラメータを最大化します。
| 設定項目 | 内容 |
|---|---|
| パラメータ名 | Power |
| 方向 | 最大化(Maximize) |
6. Insert Equation でカスタムパラメータを定義する
「Power」は回路図上に存在しない自作パラメータのため、シミュレーションエンジンに伝えるために Insert Equation で定義します。
回路図上で「Insert Equation」を追加し、以下のように記述します:
Power = Voltage * Current
これにより、最適化エンジンが「Power」を評価対象として認識します。
7. DCシミュレーションを実行して最適化を開始する
設定が完了したら、DCシミュレーションを実行します。Circuit Optimizer が自動的に起動し、最適化プロセスが開始されます。
8. 結果を確認する
最適化完了後、回路図に「Tabular」コンポーネント(Diagrams メニュー)を配置すると最適化結果の数値を確認できます。
今回の例では、R_load = 33 Ω のときに供給電力が最大となる結果が得られます。
注意: 最適化結果は厳密な解ではなく近似値となる場合があります。必要に応じて微調整を行ってください。
最適化アルゴリズムの選び方
uSimmics(旧QucsStudio)では複数の最適化アルゴリズムを選択できます。問題の性質に応じて使い分けることで、計算速度と精度を向上させられます。
グリッドサーチ(Grid Search)
変数の範囲を格子状に網羅的に探索します。変数が少なく探索範囲が狭い場合に有効ですが、変数が多いと計算時間が膨大になります。
適用例: 抵抗値を 1 Ω 刻みで 0〜100 Ω の範囲で探索するような単純な最適化。
勾配降下法(Steepest Descent)
最適値に向かう最も急な方向(勾配)を計算しながら解を探索します。収束が速い反面、局所最適解(局所的な最小値・最大値)に囚われやすい特性があります。
適用例: 初期値が最適解に近い場合の微調整。
ネルダー・ミード法(Nelder-Mead)
複数の点(シンプレックス)を同時に操作しながら解を探索するため、局所最適解を避けやすい特性があります。勾配情報が不要なため、微分できない目的関数にも適用できます。
微分進化(Differential Evolution, DE)
ランダム性を活用した進化的アルゴリズムで、複雑な問題や多数の局所最適解を持つ問題に適しています。計算時間はかかりますが、従来の手法では見つけにくい解を発見できる可能性があります。
適用例: 多数のトランジスタや受動素子が含まれる大規模回路の全体最適化。
まとめ
uSimmics(旧QucsStudio)の Circuit Optimizer を使えば、手動での試行錯誤なしに最適なコンポーネント値を自動で求めることができます。変数・目標・アルゴリズムの3つを適切に設定することが、効果的な最適化の鍵です。まずはシンプルな回路で操作を習得し、実際の設計業務に応用してください。


Comment