最小化 Java 中的绝对函数

minimize absolute function in Java

我正在研究 Java 中的绝对函数最小化问题。谁能推荐图书馆和解决方案?

我下载了apache common math3,但是找不到相关函数来创建线性函数来最小化绝对函数。

简单地说,我正在考虑在 Java 中编写以下函数。

f(x) = b + | x - a | + d + | x - c | +  f + | x - e | 

我已经为我的第二个问题稍微编辑了这个问题,这里 b、d、f 也是线性函数。

b = a1x + b1
d = a2x + b2
f = a3x + b3

如果您对 |x - a_i| 形式的 N 项求和,请将梯度视为 x 从负无穷大增加:

  • 在负无穷大处,对于 left-hand 数轴的大部分,梯度为 -N;
  • 当您通过 a_i 值中的最小值时,梯度会略微增加,达到 -N+2;
  • 当您传递 a_i 值中的下一个最小值时,梯度再次增加,达到 -N+4
  • a_i通过,梯度增加2;
  • 在正无穷大处,梯度为+N

因此,梯度从负开始,在每个 a_i 位置逐步增加,并以正结束;您正在寻找梯度为零的点或范围。这将发生 "in the middle",即在值的中位数 a_i.

  • 如果有奇数个点,则中位数会在一个点上。题中是这样的:最小值在median(a, c, e).
  • 如果有偶数个点,则中位数在两点之间。在这种情况下,函数在这些点之间的任何位置被最小化。