このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
lsqnonlin
この例では,金宝app仿真软件モデルのパラメーターを調整する方法を示します。モデルoptsim
は,MATLAB®インストールのoptim
/演示
フォルダーにあります。このモデルは仿金宝app真软件ブロック線図としてモデル化された非線形プロセスプラントを含みます。
飽和要素を含むアクチュエータをもつプラント
このプラントは,アクチュエータに制限をもつ低減衰の3次のモデルです。アクチュエータは,飽和制限とスルーレート制限をもちます。アクチュエータの飽和制限により,入力値が最大2単位,最小2単位の範囲に制限されます。0.8そしてその変化率も単位/秒以内としています。ステップ入力のシステムの閉ループ応答を閉ループ応答に示します。(コマンド ラインでoptsim
と入力するか,モデル名をクリックして)モデルを開き,[シミュレーション]メニューから[実行]を選択すると,この応答を確認できます。応答は范围ブロックにプロット表示されます。
閉ループ応答
問題は,システムへの単位ステップ入力をトラックするフィードバック制御ループの設計です。閉ループプラントは,プラントとアクチュエータをまとめて1つの階層構造の子系统ブロックとして表します。范围ブロックは,設計プロセスの間,出力軌跡を表示します。
閉ループモデル
この問題を解くには,出力と入力信号の間の誤差を最小化します(対照的に,金宝app仿真软件®モデルでのfminimaxの使用では,解には出力の最大値を最小化することが含まれます)。変数は比例積分係数 (PID) コントローラーのパラメーターです。誤差の最小化をある時間単位で行う場合、スカラー目的関数を使用できます。しかし、0 から 100 までの全タイム ステップでの誤差の最小化を目的とする場合、多目的関数 (各タイム ステップに対して 1 つの目的関数) を作成します。
lsqnonlin
を使用して,出力のトラッキングに対して最小二乗適合を実行します。トラッキングは関数tracklsq
より実行されます。この関数は,以下のruntracklsq
の中で入れ子になっています。tracklsq
は,sim卡
により計算された出力から入力信号1を差し引いた誤差信号你
を返します。
関数runtracklsq
は必要な値すべてを設定し,目的関数tracklsq
を使用してlsqnonlin
を呼び出します。lsqnonlin
に渡す変数选项
は,種々の変数やシミュレーションパラメーターの規範を設定したり,表示特性を定義します。出力が必要な場合には“levenberg-marquardt”
アルゴリズムを使用してください。0.001そしてのオーダーでステップや目的関数に対して終了範囲を設定してください。
モデルoptsim
でシミュレーションを実行するには,変数Kp
、Ki
、Kd
、a1
、a2
(a1
とa2
は植物ブロックの中の変数)をすべて定義しなければなりません。Kp
、Ki
、Kd
が最適化される変数です。関数tracklsq
は変数2 a1とa2がつの関数間で共有されるようにruntracklsqの中で入れ子になっています。変数a1
とa2
はruntracklsq
内で初期化されます。
目的関数tracklsq
はシミュレーションを実行します。シミュレーションはベースワークスペースまたは現在のワークスペース,すなわちsim卡
を呼び出している関数のワークスペース(この場合ではtracklsq
のワークスペース)のいずれかで実行することができます。この例ではSrcWorkspace
オプションを“当前”
に設定して,sim卡
に現在のワークスペースでシミュレーションを実行するように命令しています。runtracklsq
はこのシミュレーションを100秒まで実行します。
シミュレーションが完了すると,runtracklsq
は,現在のワークスペース(つまり,tracklsq
のワークスペーにス)myobj
オブジェクトを作成します。ブロック線図モデルの外港
ブロックによって,シミュレーションの終わりにオブジェクトの你
フィールドが現在のワークスペースに出力されます。
runtracklsq
を実行すると,最適化によって,コントローラーの比例,積分,微分(Kp
、Ki
、Kd
)ゲインの解が求められます。
[qh
Kp = 3.1330
Ki = 0.1465
Kd = 14.3918
このスコープは,最適化された閉ループステップ応答を示しています。
lsqnonlin
後の閉ループ応答
メモ:sim卡
を呼び出すことは結果的には仿金宝app真软件の常微分方程式(ODE)ソルバーの1つを呼び出すことになります。使用するソルバータイプを選択しなければなりません。最適化という点から見ると,颂歌が解けるのならば固定ステップ颂歌ソルバーの選択が最良です。しかし,柔軟性のないシステムの場合には可変手順歌唱法により颂歌を解くことが必要になる場合があります。
しかし,可変ステップソルバーで求めた数値解は,ステップサイズ制御機能のためにパラメーターの平滑な関数ではありません。このような平滑性の欠如により,最適化ルーチンが収束しなくなる場合があります。固定ステップソルバーを使用すると,平滑性がなくなることはありません。(詳細は[53]を参照)。
金宝app仿真软件优化设计™ソフトウェアは,仿真软件の可変ステップソルバーと組み合わせて,多目的最適化問題を解決するために推奨されます。これを使用すると仿金宝app真软件と共に稼動し,特殊な数値勾配計算を行い,平滑性の欠如の問題を回避します。
次のコードは関数runtracklsq
を作成します。
函数(Kp、Ki Kd) = runtracklsq% RUNTRACKLSQ演示了在Simulink中使用LSQNONLIN。金宝appoptsim加载模型Pid0 = [0.63 0.0504 1.9688];设置初始值a1 = 3;a2 = 43;初始化模型植物变量选择= optimoptions (@lsqnonlin,“算法”,“levenberg-marquardt”,...“显示”,“关闭”,“StepTolerance”, 0.001,“OptimalityTolerance”, 0.001);Pid = lsqnonlin(@tracklsq, pid0, [], [], options);Kp = pid (1);Ki = pid (2);Kd = pid (3);函数F = tracklsq (pid)%跟踪optsim的输出到信号为1%变量a1和a2是optsim模型所需要的。%它们与RUNTRACKLSQ共享,所以不需要%重新定义。Kp = pid (1);Ki = pid (2);Kd = pid (3);%设置sim选项和计算功能值myobj = sim卡(“optsim”,“SrcWorkspace”,“当前”,...“StopTime”,“100”);F = myobj.get (“你”)- 1;结束结束