Matlab 用固有微分方程进行优化

Matlab 用固有微分方程进行优化,matlab,optimization,differential-equations,Matlab,Optimization,Differential Equations,我试图解决一个优化问题,其中给定的目标函数是最小化 norm(R - R*) 其中,R通过求解边值问题(BVP)获得,`R*是已知值 例如: R = (p1 + p2*p3); BVP由以下公式给出: p1dot = p2 + p3 + x1; p2dot = x2 + p1*p2; p3dot = x3 + p1*p2*p3; 其中,x1,x2和x3是优化变量 我试图在MATLAB中使用fmincon来解决这个问题,其中BVP由解算器在每次猜测时在目标函数中求解,以估计范数(R-R*)

我试图解决一个优化问题,其中给定的目标函数是最小化

norm(R - R*)
其中,
R
通过求解边值问题(BVP)获得,`R*是已知值

例如:

R = (p1 + p2*p3);
BVP由以下公式给出:

p1dot = p2 + p3 + x1;
p2dot = x2 + p1*p2;
p3dot = x3 + p1*p2*p3;
其中,
x1
x2
x3
是优化变量

我试图在MATLAB中使用
fmincon
来解决这个问题,其中BVP由解算器在每次猜测时在目标函数中求解,以估计
范数(R-R*)

编辑1:我有一个非线性不等式约束,它是
pi
的函数,其中
I=1,2,3
。这就是选择
fmincon

我面临的问题是,在一些猜测过程中,BVP不收敛,优化停止。我想问题是一些猜测值来解决BVP不满足的问题。如果我给变量上界,那么它就解决了优化问题。我事先并没有真正意识到变量的界限

为了克服这一点,我想在BVP未求解时检测猜测,保存它们,并强制优化例程在无法通过返回其以前的猜测来求解时不尝试值。我们如何在
fmincon
例程中实现这一点

编辑2:我发现问题在于
BVP解算器提供了初始猜测。对于优化变量
x
的较小值,此猜测是好的,但当
x
的大小增加时,此猜测不够好


是否有方法更新上一次迭代中的“BVP”解,作为优化中下一次迭代的初始猜测。直觉上,这应该可以解决它。请告诉我此方法中是否存在一些循环漏洞。

如果您没有/知道任何约束,为什么要使用
fmincon
?您可以使用
fminunc
fminsearch
。我个人认为,更好的解决方案是首先选择算法内点,然后在BVP不收敛时让目标函数返回NaN。然而,增加边界,即使是较大的边界,也会有很大帮助。更好的说法是:发散(因为限制迭代次数等可能会使结果产生偏差)或惩罚解决方案(而不是简单的NaN),以更好地指导优化。这类任务通过使用
全局
变量来解决,并通过输出函数对其进行更新。无论如何,我仍然认为向优化变量添加边界要容易得多。如果你没有/知道任何约束,为什么要使用
fmincon
?您可以使用
fminunc
fminsearch
。我个人认为,更好的解决方案是首先选择算法内点,然后在BVP不收敛时让目标函数返回NaN。然而,增加边界,即使是较大的边界,也会有很大帮助。更好的说法是:发散(因为限制迭代次数等可能会使结果产生偏差)或惩罚解决方案(而不是简单的NaN),以更好地指导优化。这类任务通过使用
全局
变量来解决,并通过输出函数对其进行更新。无论如何,我仍然认为向优化变量添加边界要容易得多。