主要内容

优化仿真或常微分方程

优化仿真或颂歌是什么?

有时你的目标函数或非线性约束函数值只能通过模拟或数值解的常微分方程(ODE)。这样的优化问题有几个共同特征和挑战,讨论了潜在的问题和解决方案金宝搏官方网站

对于一个具体问题具体分析的例子,优化的颂歌,明白了适合的颂歌,具体问题具体分析。solver-based示例,请参阅适合一个常微分方程(ODE)

的方法,避免了其他方法所遇到的许多问题,明白了离散最优轨迹,具体问题具体分析。该方法可以使用自动优化过程中分化。然而,方法可以有精度相对较低,因为它是基于固定步和可能的低阶颂歌解算法。

优化一个仿真软件金宝app®模型容易,试着用金宝app仿真软件优化设计™

潜在的问题和解决方案金宝搏官方网站

有限的差异问题

优化工具箱™解决内部使用衍生品的目标和约束函数。默认情况下,他们估计这些衍生品使用有限差分近似形式

F ( x + δ ) F ( x ) δ

F ( x + δ ) F ( x δ ) 2 δ

可以不准确,因为这些有限差分近似:

  • 一个大的价值δ允许更多的非线性影响有限差分。

  • 一个小的值δ导致由于精度有限的数字不准确。

具体来说,模拟和常微分方程的数值解:金宝搏官方网站

  • 模拟通常对小参数的变化。这意味着,如果你使用过小扰动δ估计,仿真可以返回一个假的导数为0。

  • 模拟和常微分方程的数值解都可以在它们的功能评估不准确。金宝搏官方网站这些错误可以被放大在有限差分近似。

  • 常微分方程的数值方法,介绍了噪声值远远大于机器的精度。这在有限差分近似噪声可以被放大。

  • 如果使用可变步大小的ODE求解器,那么有时ODE的评估步骤的数量F(x+δ)可以不同的评估步骤的数量F(x)。这种差异会导致虚假的返回值不同,给误导导数的估计。

建议有限的差异

避免有限的差异通过使用直接搜索。如果你有一个全局优化工具箱许可,你可以尝试使用patternsearch(全局优化工具箱)解算器。patternsearch不试图估算梯度,因此不受限制的吗有限的差异问题

如果你使用patternsearch昂贵(耗时)评估函数,使用缓存选择:

选择= optimoptions (“patternsearch”,“缓存”,“上”);

如果你不能使用patternsearch,有一个相对低维无约束极小化问题,试一试fminsearch代替。fminsearch不使用有限的差异。然而,fminsearch不是快或可调的能手。

集大有限的差异。你有时可以避免的问题有限的差异问题通过有限差分的步骤比默认值。

  • 如果你有MATLAB®R2011b或之后,设置一个有限差分步长值比默认的选项sqrt (eps)eps ^ (1/3),如:

    • R2011b-R2012b:

      选择= optimset (“FinDiffRelStep”1 e - 3);
    • R2013a-R2015b和解决者“solvername”:

      选择= optimoptions (“solvername”,“FinDiffRelStep”1 e - 3);
    • R2016a起和解决者“solvername”:

      选择= optimoptions (“solvername”,“FiniteDifferenceStepSize”1 e - 3);

    如果你有不同的尺度在不同组件,将有限差分步长设置为一个向量分量成比例尺度。

  • 如果你有MATLAB R2011a或更早,设置DiffMinChange选择一个更大的比默认值1 e-8,并可能设置DiffMaxChange选项,如:

    选择= optimset (“DiffMinChange”1 e - 3,“DiffMaxChange”1);

请注意

很难知道如何设置这些有限差分大小。

你也可以尝试设置中心有限的差异:

选择= optimoptions (“solvername”,“FiniteDifferenceType”,“中央”);

使用梯度评价函数。为了避免有限差分估计的问题,你可以给你的目标的近似梯度函数和非线性约束。记得要设置SpecifyObjectiveGradient选项真正的使用optimoptions,如果相关,也设置SpecifyConstraintGradient选项真正的

  • 对于一些常微分方程,可以用数值解法计算梯度的同时你解决ODE。例如,假设你的目标函数的微分方程z(t,x)是

    d d t z ( t , x ) = G ( z , t , x ) ,

    在哪里x是你最小化的参数向量。假设x是一个标量。然后它的导数的微分方程y,

    y ( t , x ) = d d x z ( t , x )

    d d t y ( t , x ) = G ( z , t , x ) z y ( t , x ) + G ( z , t , x ) x ,

    在哪里z(t,x)是解决目标函数的颂歌。你能解出y(t,x在相同的微分方程组z(t,x)。这个解决方案给你一个近似导数,却没有采取有限的差异。对于nonscalarx,解决每个组件一个颂歌。

    该方法的理论和计算方面,看到花环和克雷默[2]。计算的经验和有限差分方法,见图7 Raue et al。[3]

  • 对于一些模拟,可以在仿真估计导数。例如,似然比方法中描述以及维斯[4]或者是无穷小扰动分析技术分析了海德堡,曹,Zazanis,苏瑞[1]估计衍生品在同一仿真估计目标或约束功能。

使用更严格的颂歌公差。您可以使用odeset设置AbsTolRelTolODE求解器公差值低于默认值。然而,选择过小宽容会导致缓慢的解决方案,融合失败,或其他问题。金宝搏官方网站千万不要选择公差小于1 e-9RelTol。每个组件的下限AbsTol取决于你的问题的规模,所以没有建议。

随机函数的问题

如果一个模拟使用随机数,然后评估客观或约束函数可以返回不同的结果的两倍。这会影响函数估计和有限差分估计。有限差分的价值主要是由于随机性变化,而不是由于不同的评估点变化xx+δ

建议随机函数

如果您的模拟使用随机数流控制,重置随机流之前每个评估你的目标或约束功能。这种做法可以减少变化的结果。例如,在一个目标函数:

函数f = mysimulation (x) rng默认%或任何其他重置方法……结束

有关详细信息,请参见可重复生成随机数

共同的目标和约束的计算

频繁,模拟评估目标函数和约束在同一仿真运行。或者,两个目标和非线性约束函数使用相同的昂贵的计算。连接器等fmincon分别评估目标函数和非线性约束函数。的效率,这可能会导致一个巨大的损失,因为解算器调用昂贵计算两次。为了规避这个问题,使用技术客观和非线性约束在同一功能,或者,当使用具体问题具体分析的方法,目标和约束有一个串行或并行的常见功能,具体问题具体分析

失败的目标或约束函数评估

你的模拟或颂歌可以失败对于一些参数值。

建议评估失败

设置适当的界限。虽然你可能不知道所有限制的参数空间,试着在所有参数设置适当的界限,上部和下部。这可以加快你的优化,可以帮助解决避免有问题的参数值。

使用方面的能手。中描述的迭代可以违反约束,一些算法可以在中间迭代违反约束的约束。优化模拟和常微分方程,用算法总是服从绑定约束。看到算法满足一定约束

返回NaN。如果你的模拟或ODE求解器不成功评估客观或非线性约束函数在一个点x你的函数返回。大多数优化工具箱和全局优化工具箱解决有鲁棒性尝试,如果他们遇到不同的迭代步骤价值。这些健壮的解决方案包括:

  • fmincon内点,sqp,trust-region-reflective算法

  • fminunc

  • lsqcurvefit

  • lsqnonlin

  • patternsearch

有些人想返回任意大的目标函数值不成功,不可行或其他可怜的点。然而,这种做法可以混淆解决,因为解决不知道返回的值是任意的。当你返回,解决者可以尝试评估在不同的点。

参考书目

[1]海德堡,P。,X.-R。曹、m·a·Zazanis和r .苏瑞。无穷小扰动分析估计的收敛性管理科学34岁11,第1302 - 1281页,1988年。

[2]花环,j·r·克莱默,硕士同时解决方案和灵敏度分析的系统由常微分方程描述。ACM反式。数学软件,14卷,1号,45 - 60,1988页。

[3]Raue, a . et al。在系统生物学定量动态建模的经验教训。可以在https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0074335,2013年。

[4]Reiman,麻省理工学院和维斯。灵敏度分析通过可能性比率Proc。18日冬季模拟会议ACM,纽约,285 - 289年,1986页。