主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

金宝app仿真软件®モデルでの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でシミュレーションを実行するには,変数KpKiKda1a2a1a2は植物ブロックの中の変数)をすべて定義しなければなりません。KpKiKdが最適化される変数です。関数tracklsqは変数2 a1とa2がつの関数間で共有されるようにruntracklsqの中で入れ子になっています。変数a1a2runtracklsq内で初期化されます。

目的関数tracklsqはシミュレーションを実行します。シミュレーションはベースワークスペースまたは現在のワークスペース,すなわちsim卡を呼び出している関数のワークスペース(この場合ではtracklsqのワークスペース)のいずれかで実行することができます。この例ではSrcWorkspaceオプションを“当前”に設定して,sim卡に現在のワークスペースでシミュレーションを実行するように命令しています。runtracklsqはこのシミュレーションを100秒まで実行します。

シミュレーションが完了すると,runtracklsqは,現在のワークスペース(つまり,tracklsqのワークスペーにス)myobjオブジェクトを作成します。ブロック線図モデルの外港ブロックによって,シミュレーションの終わりにオブジェクトのフィールドが現在のワークスペースに出力されます。

runtracklsqを実行すると,最適化によって,コントローラーの比例,積分,微分(KpKiKd)ゲインの解が求められます。

[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;结束结束