投影ベスの平衡化オプティマザを使用した定常状態のシミュレション
この例では,関数findop
で投影ベースのオプティマイザーを使用して,Simscape™多体™モデルの定常状態の操作点を検出する方法を説明します。
投影ベースのオプティマイザーでは,目的関数または非線形制約関数の評価ごとにモデルの初期条件の一貫性を強制的に適用し,Simscapeモデルの平衡化の結果を改善できます。投影ベースの平衡化オプティマイザーを使用するには优化工具箱™ソフトウェアが必要です。
モデルを開く
この例のモデルは,Simscape Multibodyでモデル化されたバックホ,システムです。
金宝appSimulinkモデルを開きます。
mdl =“scdbackhoeTRIM”;open_system (mdl)
操作点の仕様の定義
操作点の仕様を定義するには,最初に仕様オブジェクトを作成します。运维
の入力,出力,および状態の値はモデルの初期条件に一致します。
Opspec = operspec(mdl);
モデルの出力が平衡化の既知の値であることを指定します。
opspec.Outputs(1)。已知=真(10,1);
バックホシステムの角度にいての既知の値を指定します。
opspec.Outputs(1).y(1) = 0;%桶角opspec.Outputs(1).y(3) = 50;%上角opspec.Outputs(1).y(5) = -50;%下角度opspec.Outputs(1).y(7) = 0;%底角opspec.Outputs(1).y(9) = -45;%支金宝app撑角
対応する角速度の既知の値はゼロであり,opspec
のモデルの初期条件に一致します。
モデルの平衡化
平衡化のオプションセットを作成し,OptimizerType
オプションを使用してオプティマ▪▪ザ▪▪のタ▪▪プを指定します。この例では,投影ベ,スの勾配降下ソルバ,を使用します。平衡化の進捗の更新をコマンドウィンドウで反復形式で表示するには,DisplayReport
オプションを“通路”
に設定します。
opt = findopOptions(“OptimizerType”,“graddescent-proj”,...“DisplayReport”,“通路”);
最適化のための関数評価の最大回数を指定します。
opt.OptimizationOptions.MaxFunEvals = 20000;
opspec
の仕様を満たす定常状態の操作点を検出します。この操作には数分かかります。
Op = findop(mdl,opspec,opt);
优化解出所有期望的dx/dt=0, x(k+1)-x(k)=0, y=ydes。(最大错误)块--------------------------------------------------------- (4.50000e+01) scdbackhoeTRIM/Out1 (3.54436e+00) scdbackhoeTRIM/Out1 (2.29690e-01) scdbackhoeTRIM/Out1 (3.84952e-02) scdbackhoeTRIM/Plant/安装组件/安装底座和支撑臂/支撑臂右/转动关节臂(9.31982e-03) scdbackhoeTRI金宝appM/Plant/安装组件/安装底座和支撑臂/支撑臂右/转动关节臂(7.25867e-04) scdbackhoeTRIM/Plant/安装组件/安装底座/安装底座和金宝app支撑臂/支撑臂左/转动关节臂(6.61700e-04) scdbackhoeTRIM/植物/安装组件/安装底座和支撑臂/支撑臂左/转动关节臂(8.93138e-05) scdbackhoeTRIM/植物/安装组件/安装底座和支撑臂/支撑臂左/转动关节臂(1.41327e-05) scdbackhoeTRIM/植物/安装组件/安装底座和支撑臂/支撑臂左/转动关节臂(9.72968e-06) scdbackhoeTRIM/植物/气缸底座到安装板(1.02408e-06)scdbackhoeTRIM/装置/安装组件/安装底座和支撑臂/支撑臂右/转动关节臂(1.05012e-06) s金宝appcdbackhoeTRIM/装置/汽缸底座到安装板(1.05012e-06) scdbackhoeTRIM/装置/汽缸底座到安装板操作点规格已成功满足。
モデルのシミュレ,ション
計算された操作点人事处
をモデルの初期条件として使用するようにモデルを構成します。
set_param (mdl“LoadExternalInput”,“上”) set_param (mdl“ExternalInput”,“getinputstruct (op) ') set_param (mdl“LoadInitialState”,“上”) set_param (mdl“InitialState”,“getstatestruct (op) ')
モデルのシミュレ,ションを実行します。
sim (mdl);
ジョ@ @ントの角度の軌跡を表示します。
(mdl open_system (,'/关节角轨迹'])
シミュレ,ションの結果を見ると,5の角度がそれぞれの期待値に平衡化されています。ただし,数値的なノaaplズと不安定性のため,軌跡は時間とともに若干ずれていく可能性があります。フィ,ドバックコントロ,ラ,を使用して,角度を安定させることができます。