0

わかりましたので、特に lsqlin 最適化関数を何百万回も実行するスクリプトがあります。このコードを高速化するために、「コード生成」します (基本的に、いくつかの mex ファイルを自動的に作成します)。これは、不等式の線形システムのフォローアップです。

ここでの問題は、lsqlin やその他の最適化関数が変換されず、外部から呼び出す必要があるため、効率が低下することです。

MINQ ツールボックスは既に見つけましたが、lsqlin からこれに変換する方法がわかりませんでした。また、ライセンスが必要な QPC ツールボックスも見つかり、現在待機中です。

別のツールボックスと、lsqlin からそれに変換する方法を提案する人はいますか?

lsqlin スクリプトをコード生成するための一般的な考え方 (完全な変換ではなく、リンクが呼び出されることがわかります)。

コード:

function main_script()
  coder.extrinsic('lsqlin_script')
  for i=1:10^7
    X=lsqlin_script(A,b,X0)
    ...
  end
end

function X=lsqlin_script(A,b,X0)
  X=lsqlin(eye(2),X0, A, b,[],[],[],[],X0, optimoptions('lsqlin','Display','Off'));
end

走る:

codegen main_script.m
main_script_mex(INPUTS)
4

1 に答える 1

0

元の問題について説明していただければ、より多くの回答が期待できると思います。

回避可能なアプローチlsqlin:とで定義されるすべての平面への の正射影
計算します。射影が不等式の要件を満たしているかどうかを確認します。を満たすものから、 に最も近い点を選択します。有効な点が見つからない場合、最も近い点は平面の交点になります。からすべての交線までの最短距離を計算します... 平面への投影に適用される手順に従います..PxyzAbPxyzPxyz

ご覧のとおり、完全には詳しく説明されていないため、問題が解決する可能性があると思われる場合は、詳細を検討する必要があります。これらの計算では、最適化関数は必要ありません。

于 2014-11-06T22:34:08.553 に答える