matlab - 规范化在优化中有用/必要吗?

标签 matlab optimization mathematical-optimization

我正在尝试使用 Matlab 优化工具箱(准确地说是使用 fmincon 函数)来优化设备设计。为了快速表达我的观点,我提供了一个小变量集 {l_m, r_m, l_c, r_c},它的起始值等于 {4mm, 2mm, 1mm, 0.5mm}。

虽然 Matlab 没有特别建议对输入变量进行归一化,但我的教授建议我将变量归一化为 {l_m , r_m, l_c, r_c} 的最大值。因此,变量现在取值从 0 到 1(而不是在 l_m 的情况下是 3mm 到 4.5mm)。当然,我必须修改我的目标函数以将其转换回正确的值,然后进行计算。

我的问题是:像 fmincon 这样的优化函数是否关心输入变量是否被归一化?由于标准化而期望性能发生变化是否合理?要考虑的一点是优化器如何改变变量,例如 l_m — 在一种情况下它可以将它从 4mm 更改为 4.1mm,而在另一种情况下它可以将它从 0.75 更改为 0.76。

最佳答案

当输入标准化时,通常更容易优化。您可以期待收敛速度和输出准确性的提高。

例如,正如您在这篇文章 (http://www-personal.umich.edu/~mepelman/teaching/IOE511/Handouts/511notes07-7.pdf) 中看到的那样,当 Hessian 的最大和最小特征值之比较小时,梯度下降的收敛速度有更好的界限。通常,当您的数据标准化时,此比率为 1(最佳)。

关于matlab - 规范化在优化中有用/必要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12356041/

相关文章:

matlab - 将随机数添加到矩阵 MATLAB

symfony - 如何不引导所有 bundle ?

java - 那个优化算法叫什么?

algorithm - 蚁群优化问题 : how to output results correctly, 算法的结果是什么等

matlab - 如何以我想要的方式删除单元格中的空元素

matlab - 如何在 Matlab 启动时设置一些自定义变量

PHP 对象 + MySQL : How far to go with modeling select queries?

python - 直接支持矩阵变量的 Python 非线性约束优化包

python - python中的并行/多线程差异进化

matlab - 如何测量两张图片之间的余弦相似度