如何评估和优化的参数我歌唱系统在MATLAB ?

107(30天)
我有一个系统的常微分方程(ODE)和一些未知参数(系数)。我想同时解决微分方程组以及未知参数的优化通过最小化目标函数,取决于ODE体系的解决方案。
用MATLAB的最好方法是什么?

接受的答案

MathWorks支万博1manbetx持团队
编辑:MathWorks支万博1manbetx持团队 2022年12月14日
你可以用两种方法解决这个问题。第一个使用优化工具箱,第二个使用系统辨识工具箱。
使用优化工具箱
MATLAB的优化工具箱提供了优化的功能,比如‘fminsearch’,‘lsqnonlin’,‘fmincon’。这些函数可以用于优化ODE参数通过最小化目标函数。目标函数将调用另一个子路径解决微分方程解决使用ODE ODE23等数值,ODE23s, ODE113或ODE15s。ODE求解器将调用该函数微分方程实现的地方。
这样的一个示例工作流在优化工具箱的文档说明:
//www.tianjin-qmedu.com/help/releases/R2022b/optim/ug/fit-ode-problem-based-least-squares.html
有一个小m文件附在本文再现了这个建议的工作流。
你也可以参考这个页面来解决潜在的问题,赞同一个数值优化常规缠绕在一个数值模拟:
//www.tianjin-qmedu.com/help/releases/R2022b/optim/ug/optimizing-a-simulation-or-ordinary-differential-equation.html
使用可变时间步时就会出现一些问题,这是一个常见的解决方法被许多歌唱。这个设置使目标函数的梯度是不光滑的。许多优化程序依赖计算目标函数的梯度,这是一个衡量的变化函数值后略有不安。当函数值决定的
数值
解决方案的颂歌,函数值可能无法顺利地依赖于扰动。如果你移动摄动一点,功能的移动方法之一;如果你移动了一点,这个函数可能相反的方向移动。这non-smoothness是因为使用的可变步长ODE解决者。
这本书就是一个很好的参考这个问题到头发,Norsett, Wanner),“我解常微分方程”斯普林格出版社,1991年,pg。200。
解决上面的问题之一是消除错误检查由一个显式的ODE求解器(例如数值),迫使解决者采取固定措施。这消除了错误检查需要选择步长,但可能会导致精度问题。您可以指定选项使用‘odeset ODE解决方案过程。设置“RelTol”和“AbsTol”大值(例如1),并设置“MaxStep”和“InitialStep”一个固定的值。注意,这种技术不会ode15s等与隐式动力学。
函数的odeset记录://www.tianjin-qmedu.com/help/releases/R2022b/matlab/ref/odeset.html
输出在特定的时间,你可以通过向量的时报》(t1 t2……tn)”“tspan”向量:
[t、y] = ode23 (myfun (t1, t2tn), y0,选项);
通过结合这两种技术,可以避免一些头发在书中描述的困难et al。,但是总有不知道的问题时精度仿真做固定的步骤。
另一个解决方案是使用函数的patternsearch优化。这是一个derivative-free解算器。注意,这个函数属于“全局优化工具箱”。
使用系统辨识工具箱
第二个方法估计参数的颂歌是使用“非线性灰色盒子”模型的系统辨识工具箱。这个工作流是记录在以下页面:
//www.tianjin-qmedu.com/help/releases/R2022b/ident/ug/estimating-nonlinear-grey-box-models.html
基本的工作流程如下:
  1. 写一个M -或MEX-file颂歌代表ODE的一阶微分方程。这个文件返回状态衍生品和信号值作为时间的函数,迫使函数(如果有的话),系数值和初始条件。
  2. 创建一个“idnlgrey”对象,封装ODE模型形式。从上一步使用ODE文件并提供额外的信息,比如系数的初始值信号的维数(在多变量常微分方程)的情况下,姓名/单位的信号,优化器使用的类型等。
  3. 使用估计的命令“nlgreyest”或“pem”优化ODE的系数。最大化之间的配合ODE的仿真结果和所提供的外部信号。各种优化程序可用于这一步,如线搜索方案(高斯牛顿、Levenburg-Marquardt最陡下降)和信赖域方法(lsqnonlin)。
情况下线性常微分方程可以使用一个特殊的对象称为“idgrey”。这个对象可以促进更有效的方法,提供了额外的功能,如处方稳定约束建模扰动和策划时间/频域响应的模型(“模型”是一个整数阶ODE)。看到演示系统辨识工具箱的一些例子。
另外,如果你在做这种类型的工作在一个仿真软件模拟、仿真软件设计优化可以优化系统参数在使用可变步长求解器进行求解。万博1manbetx它被设计来处理数值困难,在这些情况下,如出现上述问题,当使用直接解决优化工具箱和颂歌。你可以找到更多的信息在以下页面:仿真软件设计优化万博1manbetx
//www.tianjin-qmedu.com/s manbetx 845products/sl-design-optimization.html

更多的答案(0)