主要内容gydF4y2Ba

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

金宝app仿真软件®モデルでのgydF4y2BafminimaxgydF4y2Baの使用gydF4y2Ba

この例では,金宝app仿真软件モデルのパラメーターを調整する方法を示します。モデルgydF4y2BaoptsimgydF4y2Baは,MATLAB®インストールのgydF4y2BaoptimgydF4y2Ba/gydF4y2Ba演示gydF4y2Baフォルダーにあります。このモデルは仿金宝app真软件ブロック線図としてモデル化された非線形プロセスプラントを含みます。gydF4y2Ba

飽和要素を含むアクチュエータをもつプラントgydF4y2Ba

このプラントは,アクチュエータに制限をもつ低減衰の3次のモデルです。アクチュエータは,飽和制限とスルーレート制限をもちます。アクチュエータの飽和制限により,入力値が最大2単位,最小2単位の範囲に制限されます。0.8そしてその変化率も単位/秒以内としています。ステップ入力のシステムの閉ループ応答をgydF4y2Ba閉ループ応答gydF4y2Baに示します。(コマンドラインでgydF4y2BaoptsimgydF4y2Baと入力するか,モデル名をクリックして)モデルを開き,gydF4y2Ba[シミュレーション]gydF4y2BaメニューからgydF4y2Ba[実行]gydF4y2Baを選択すると,この応答を確認できます。応答は范围ブロックにプロット表示されます。gydF4y2Ba

閉ループ応答gydF4y2Ba

問題は,システムへの単位ステップ入力をトラックするフィードバック制御ループの設計です。閉ループプラントは,プラントとアクチュエータをまとめて1つの階層構造の子系统ブロックとして表します。范围ブロックは,設計プロセスの間,出力軌跡を表示します。gydF4y2Ba

閉ループモデルgydF4y2Ba

このシステムを最適化するには,0と100の間の任意の時刻gydF4y2Ba tgydF4y2Ba での出力の最大値を最小にします(対照的に,gydF4y2Ba金宝app仿真软件®モデルでのlsqnonlingydF4y2Baでは,出力と入力信号の間の誤差を最小化して解を求めます)。gydF4y2Ba

この例のコードは,関数gydF4y2BaruntrackmmgydF4y2Baに含まれています(gydF4y2Baこの例の終わりに掲載)。gydF4y2Ba目的関数は,単にgydF4y2Basim卡gydF4y2Baコマンドによって返される出力gydF4y2Ba你gydF4y2Baです。しかし,全タイムステップで最大出力を最小化すると,いくつかのタイムステップに対して出力が1よりはるかに小さくなる可能性があります。はじめの20秒後0.95を超える出力を保つために,制約関数gydF4y2BatrackmmcongydF4y2BaはgydF4y2Bat = 20gydF4y2BaからgydF4y2Bat = 100gydF4y2Baまで制約gydF4y2Ba你> = 0.95gydF4y2Baを含みます。制約はgydF4y2Ba ggydF4y2Ba ≤gydF4y2Ba 0gydF4y2Ba の形式でなければならないので,関数における制約はgydF4y2BaG = -yout(20:100) + 0.95gydF4y2Baです。gydF4y2Ba

trackmmobjgydF4y2BaとgydF4y2BatrackmmcongydF4y2Baは共に現在のPID値から計算されたgydF4y2Basim卡gydF4y2Baからの結果你を使用します。シミュレーションを2回呼び出さないようにするために,gydF4y2BaruntrackmmgydF4y2Baでは入れ子関数になっており,gydF4y2Ba你gydF4y2Baの値が目的関数と制約関数で共有されるようになっています。シミュレーションは現在の点が変化した場合にのみ呼び出されます。gydF4y2Ba

runtrackmmgydF4y2Baを呼び出します。gydF4y2Ba

(Kp、Ki Kd) = runtrackmmgydF4y2Ba
目的最大线搜索定向Iter f计数值约束步长导数gydF4y2Ba
1 11 1.184 0.07978 1 0.482gydF4y2Ba
2 17 1.012 0.04285 1 -0.236gydF4y2Ba
3 23 0.9996 0.00397 1 -0.0195 Hessian修改两次gydF4y2Ba
4 29 0.9996 3.464e-05 1 0.000687 Hessian改性gydF4y2Ba
5 35 0.9996 2.272 -09 1 -0.0175 Hessian修正两次局部最小可能。约束满足。Fminimax停止,因为目标函数的预测变化小于函数公差的值,约束条件满足到约束公差的值之内。gydF4y2Ba
Kp = 0.5894gydF4y2Ba
Ki = 0.0605gydF4y2Ba
Kd = 5.5295gydF4y2Ba

出力の目的値列の最後の値は,全タイムステップに対する最大値が1よりわずかに少ない値であることを表しています。閉ループ応答の結果を図gydF4y2Bafminimaxを使用する閉ループ応答gydF4y2Baに示します。gydF4y2Ba

この解は問題の定式化を異なる方法で行ったgydF4y2Ba金宝app仿真软件®モデルでのlsqnonlingydF4y2Baの解とは異なります。gydF4y2Ba

fminimaxgydF4y2Baを使用する閉ループ応答gydF4y2Ba

函数gydF4y2Ba[font =宋体][font =宋体gydF4y2Ba%初始化模型(R)金宝appgydF4y2BaPid0 = [0.63 0.0504 1.9688];gydF4y2Ba% a1, a2, yout与TRACKMMOBJ和TRACKMMCON共享gydF4y2Baa1 = 3;a2 = 43;gydF4y2Ba%初始化模型中的植物变量gydF4y2Ba你= [];gydF4y2Ba给你一个初始值gydF4y2Bapold = [];gydF4y2Ba%跟踪最后pidgydF4y2Ba选择= simset (gydF4y2Ba“规划求解”gydF4y2Ba,gydF4y2Ba“ode5”gydF4y2Ba,gydF4y2Ba“SrcWorkspace”gydF4y2Ba,gydF4y2Ba“当前”gydF4y2Ba);选择= optimset (gydF4y2Ba“显示”gydF4y2Ba,gydF4y2Ba“通路”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“TolX”gydF4y2Ba, 0.001,gydF4y2Ba“TolFun”gydF4y2Ba, 0.001);pid = fminimax (@trackmmobj pid0 ,[],[],[],[],[],[],gydF4y2Ba...gydF4y2Ba@trackmmcon选项);Kp = pid (1);Ki = pid (2);Kd = pid (3);gydF4y2Ba函数gydF4y2BaF = trackmmobj (pid)gydF4y2Ba%跟踪optsim的输出到信号为1。gydF4y2Ba%变量a1和a2与RUNTRACKMM共享。gydF4y2Ba%变量yout与RUNTRACKMM和gydF4y2Ba% RUNTRACKMMCON。gydF4y2BaupdateIfNeeded(pid) F = yout;gydF4y2Ba结束gydF4y2Ba函数gydF4y2Ba测查[c] = trackmmcon (pid)gydF4y2Ba%跟踪optsim的输出到信号为1。gydF4y2Ba%变量yout与RUNTRACKMM和gydF4y2Ba% TRACKMMOBJgydF4y2BaupdateIfNeeded(pid) c = -yout(20:100)+.95;测查= [];gydF4y2Ba结束gydF4y2Ba函数gydF4y2BaupdateIfNeeded (pid)gydF4y2Ba如果gydF4y2Bapold ~ isequal (pid)gydF4y2Ba%只在需要时计算gydF4y2BaKp = pid (1);Ki = pid (2);Kd = pid (3);[~, ~,你]= sim卡(gydF4y2Ba“optsim”gydF4y2Ba, 100年[0],选择);pold = pid;gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

参考gydF4y2Ba

関連するトピックgydF4y2Ba