小さな ( , <=3) 線形プログラムlinprog
を解くために大きな時間ループ内で実行していますが、それが私のコードのボトルネックです。オプションで内点の代わりにシンプレックス ( ) を使用すると、少し速くなることがわかりました。これを行うより速い方法はありますか?行列は常に小さくて密です ( , <= 3)。TOMLAB の MINOS と LPOPT と QPOPT を試しましたが、それでも高速です。TOMLAB を正しく使用していないのか、大きな問題サイズに適しているのかはわかりません。m
n
Large scale
'off'
A
m
n
linprog
小さな問題に対してより高速な LP ソルバーをコーディングする簡単な方法はありますか? 私の現在の問題linprog
では、2 * 2の問題を解決するのに1回の反復で〜.0012秒かかります。私はネストされたループ内にそれを持っています、以下は疑似コードです:
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
、n
はA
両方とも <=3 です。A
、lb
および反復ub
ごとに変更t
します。n
また、時間ループで得られるスピードアップについてももっと興味があります。なぜならnt
>> N
、より大きな問題を定式化して内部ループを削除してもあまり役に立たないからです。