【问题标题】:system of linear equation with additional constraint of minimal variables sum具有最小变量和附加约束的线性方程组
【发布时间】:2017-02-07 21:25:18
【问题描述】:

我有一个线性方程组,我已经使用 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(而前 2 个解决方案只有 3 个),这不是一个最小的解决方案

如果有多个最小解决方案(例如这里,解决方案 1 和 2 都是最小的),我不关心返回的最小解决方案,只要它是最小解决方案之一

【问题讨论】:

  • 变量是否必须为非负数?由于存在具有不同总和的解决方案,因此可实现的总和不受以下限制。
  • 是的,变量是非负数。它们属于正整数集合 {0,1,2,...}
  • 那么您的实例中有多少变量?有多少个方程?
  • 多达一百个变量和尽可能多的方程(但其中一些方程可能是相同的,所以我的方程可能比 Gauss-Jordan 消除过程后的变量略少)

标签: algorithm math logic constraints linear-equation


【解决方案1】:

由于变量都是非负的,这个问题本质上等价于整数规划。使用现成的整数程序求解器并制定类似

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

(具体语法取决于工具)。

【讨论】:

  • 好吧,我不想使用外部工具。我需要自己编程这个求解器(将它集成到我正在编程的游戏中)。这就是我的问题的目标......
  • @ThomasBernard:有许多语言的线性编程包:您可以将一个集成到您的游戏中。如果你真的想自己编程,搜索simplex method or simplex algorithm并实现它。
  • @RoryDaulton Simplex 是不够的,Simplex 是最重要的编程任务之一(如果性能很重要;而且我们不知道他的实例的大小)。
  • @ThomasBernard Simplex + 具有最佳优先回溯的深度优先搜索可以在几百行内完成,但性能会比一个良好实现的库差得多。也许您的实例足够小,这无关紧要。
  • 我的游戏是用 Haxe 语言编写的,我怀疑 Haxe 中是否存在任何单纯形求解器库...至于我的实例,最多应该有一百个变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 2019-10-05
相关资源
最近更新 更多