![]() |
1
3
这里的问题是你的目标函数是不可微的。SciPy默认为BFGS优化,它要求目标函数的一阶导数存在。 我可以想出三种主要的方法来解决这个问题:使用无导数优化,使用目标函数的可微近似,或者将绝对值转化为约束。
目标函数的一个可微逼近是容易的,并且提供了更好的收敛性,但代价是一些错误。例如,替换
results in convergence
到
至于转换绝对值,你的问题几乎是一个标准的线性规划问题,但是目标函数中有绝对值。通过引入额外的变量,
it's possible to convert an absolute value into two new linear constraints
. 我们的想法是取代
这样做可以让你用一个标准的线性规划求解器来解决你的问题
除此之外,对于这种形式的优化问题,可能还有其他算法。我试着用谷歌搜索“l1优化”,就像“最小二乘优化”一样,但结果却是最小化了解向量的l1范数,这在这种情况下是错误的向量。 |
![]() |
Hatsune Miku · 比较或if语句是否更快[已关闭] 1 年前 |
![]() |
Black Swan · 无法解压缩的值太多(应为2)错误 1 年前 |
![]() |
Kai · 有什么方法可以轻松优化VSCode中的锈迹? 2 年前 |
![]() |
Balfar · 处理NumPy阵列上的循环最有效的方法是什么? 2 年前 |
![]() |
Daniel · C#轻松存储快速访问的大型位矩阵 6 年前 |
|
halbe · 优化音频DSP程序的numpy计算 6 年前 |
![]() |
Afsara · 是否有任何方法不能优化我们的应用程序? 6 年前 |