小さな ( , <=3) 線形プログラムlinprogを解くために大きな時間ループ内で実行していますが、それが私のコードのボトルネックです。オプションで内点の代わりにシンプレックス ( ) を使用すると、少し速くなることがわかりました。これを行うより速い方法はありますか?行列は常に小さくて密です ( , <= 3)。TOMLAB の MINOS と LPOPT と QPOPT を試しましたが、それでも高速です。TOMLAB を正しく使用していないのか、大きな問題サイズに適しているのかはわかりません。mnLarge scale 'off'Amnlinprog
小さな問題に対してより高速な 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、より大きな問題を定式化して内部ループを削除してもあまり役に立たないからです。