我在一个大时间循环中运行linprog
来解决小型(m
,n
< = 3)线性程序,但它是我的代码的瓶颈。我发现在选项中使用Simplex(Large scale
'off'
)而不是内部点会使它更快一些。有更快的方法吗?矩阵A
总是小且密集(m
,n
< = 3)。我尝试过TOMLAB的MINOS和LPOPT以及QPOPT但仍然linprog
更快。我不知道也许我没有正确使用TOMLAB,或者他们只是对大问题规模更好。
是否有一种简单的方法可以为较小的问题编写更快的LP解算器。对于我当前的问题linprog
,单次迭代需要〜.0012秒来解决2 * 2问题。我把它放在一个嵌套循环中,下面是一个伪代码:
for t =1:nt
for n = 1:N
linprog
end
end
所以最好让它像〜0.0005秒/迭代一样快。我想在尝试使内循环平行之前这样做。由于依赖性(时间循环),外部循环不能并行。
我非常感谢任何帮助,因为我的模拟需要比实时更快。
谢谢,
雏鹰
编辑:线性程序的格式为:
max 1'x
s.t. Ax <= b
lb<=x<=ub
x
和1
是向量,我们正在尝试最大化sum(x),这就是为什么我们在1的向量和x
之间有一个内积。没有等式约束,m
的{{1}},n
都是&lt; = 3。每次A
和A
迭代后,lb
,ub
和t
会发生变化。此外,我对时间循环的速度感兴趣,因为n
&gt;&gt; nt
,因此通过制定更大的问题来移除内循环将无济于事。