无衍生物的二维最小化和在运行中忽略某些输入参数

时间:2015-07-22 12:07:05

标签: minimization

我有一个功能V,它依赖于两个变量v1和v2以及一个包含15个参数的参数数组p。 我想最小化关于v1和v2的函数V,但是我的函数没有闭合表达式,因此我无法构建和使用Derivatives。

问题如下:为了计算我的函数的值,我需要两个4x4矩阵的特征值(它应该是概念上的对称和真实的,但有时候EigenSolver不会得到真正的特征值)。这些特征值我用特征包计算。矩阵的条目由v1,v2和p。

给出

某些输入集的某些特征值变为负值。这些是我想要忽略的输入集,因为它们将导致复杂的Function值,并且我的Function只允许有实数值。

有没有办法包含这个?我的第一次尝试是使用GSL-Library的Nelder-Mead-Simplex算法,如果其中一个特征值变为负值,则该函数的输出值太高,但这并不起作用。

感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

对于Nelder-Mead单形,您可以拒绝新点作为单形的顶点,除非它们具有所需的属性。

人为增加禁用点的函数值的方法也称为penalty or barrier function。您可能想要重新设计惩罚函数。

另一种没有衍生物的优化方法是Simulated Annealing方法。同样,您可以修改方法以避免禁止点。

“不起作用”是什么意思?需要太长时间吗?结果函数值是否太高?

根据功能评估成本,它可能是一种简单扫描2D间隔,评估所有宽度x高度函数值并在具有最低函数值的图块中向下钻取的方法。