2014-11-06 64 views
0

好吧,我有一個腳本,可以在其他方面運行lsqlin優化函數數百萬次。爲了加快這個代碼,我「codegen」它(基本上自動創建一些mex文件)。這是Linear systems of inequations的後續行動。lsqlin的替代方案MATLAB

這裏的問題是lsqlin以及其他優化函數沒有轉換,需要從外部調用,這會導致效率的降低。

我已經找到了MINQ工具箱,但無法理解如何從lsqlin轉換到此。還發現需要許可證的QPC工具箱,目前我正在等待。

有人建議另一個工具箱,以及如何從lsqlin轉換到那個?

一般想法codegen一個lsqlin腳本(可以看到一個鏈接被稱爲,而不是一個完整的轉換)。

CODE:

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 

RUN:

codegen main_script.m 
main_script_mex(INPUTS) 

回答

0

如果你描述你original problem我想你可以期待更多的答案。

一種可能的方法,以避免lsqlin
計算的Pxyzorthogonal projection的到由Ab和定義的每個平面上。 檢查預測是否滿足不等式要求。從那些滿足選擇最接近點Pxyz。如果找不到有效的點,那麼最近的點將在平面的交點上。計算從Pxyz到每個交叉路口的最短距離......按照適用於在飛機上投影的步驟..

正如您所看到的,它沒有完全闡述,如果您認爲它可能會解決您的問題問題。 對於這些計算,您不需要優化功能。

+0

我正在尋找其他解決方案。只要我可以測試這一點,我會信任你的幫助。 – ASantosRibeiro 2014-11-10 15:03:06