我有一个线性方程组,我已经用gauss-jordan消去法把它化为一个列梯队矩阵。我的系统有n个变量xn(其中xn在n0(=正整数))有多个解,我想找到所有xn之和最小的解。
我怎么能用编程的方式呢?
例如,考虑这个线性方程组:

x1 +              + x5 + x6 = 2
     x2           + x5      = 1
          x3           + x6 = 1
               x4 + x5 + x6 = 1

我想得到的最起码的解决方案之一是:
x3 = x4 = x5 = 0
x1 = x2 = x6 = 1

另一个是
  x2 = x4 = x6 = 0
  x1 = x3 = x5 = 1

但我不想
 x1 = 2
 x2 = x3 = x4 = 1
 x5 = x6 = 0

这也是这个系统的一个解决方案,但根据我的标准,不是最小的一个,x1+x2+x3+x4+x5+x6=5(而对于两个第一个解决方案,它只有3个)
在多个最小解的情况下(比如这里,解1和2都是最小的),只要是最小解之一,我就不关心返回的最小解

最佳答案

由于变量都是非负的,这个问题实质上等同于整数规划。使用现成的整数程序解算器,并像

minimize x1 + x2 + x3 + x4 + x5 + x6
subject to
x1                + x5 + x6 = 2
     x2           + x5      = 1
          x3           + x6 = 1
               x4 + x5 + x6 = 1
integers
x1, x2, x3, x4, x5, x6 >= 0

(确切的语法取决于工具)。

10-06 06:08