我有一个程序需要在快速循环中解决线性规划问题。我使用的语言是 Java,任何与其他语言的绑定都是不可接受的。如果许可许可,库可能是可以接受的,但我通常更喜欢自己的代码而不是库。
问题很简单。它有五个变量,六个类型的不等式,expression >= 0所有五个变量显然也需要是非负的。
具体来说,问题是最小化e,给定:
a + b - c*A - B >= 0
C - c >= 0
D + d - c*E - b >= 0
a + b + c - F >= 0
e - a*G >= 0
e - d*H >= 0
a >= 0
b >= 0
c >= 0
d >= 0
e >= 0
其中a, b, c,d和e是变量,A...H是常数。一些常量 ( A, B, C, D, 和F) 快速变化,而一些 ( E,G和H) 在应用程序执行期间保持不变。
问题是我必须在单个现代 CPU 内核中找到一个最佳解决方案,最好每秒超过 1000 万次(是的,我使用多个内核,每个内核都重复解决相同的线性编程问题;总吞吐量需要每秒超过 1 亿个解决方案)。
解决如此小的线性规划问题的最快方法是什么?我看到有很多算法能够解决甚至复杂的问题,但是它们对这些简单的问题有用吗?
我看到有 462 种方法可以从 11 个方程中选出 5 个,因此求解不同的线性方程组并检查未选择的条件是否成立的方法不会是最快的,对吧?