最小化Java中的绝对功能

时间:2017-01-30 06:58:18

标签: java linear-programming

我正在研究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

1 个答案:

答案 0 :(得分:2)

如果您要对|x - a_i|形式的N个项进行求和,请考虑渐变为x从负无穷大增加:

  • 在负无穷大处,对于大多数左侧数字线,渐变为-N;
  • 当您通过a_i值的最小值时,渐变会略微增加到-N+2;
  • 当您传递a_i中的下一个最小值时,渐变再次增加到-N+4
  • 每次进一步a_i后,渐变增加2;
  • 在正无穷大处,渐变为+N

因此,渐变开始为负,在每个a_i位置逐步增加,最终为正;你正在寻找梯度为零的点或范围。这将发生在“中间”,即值a_i的中位数。

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