2014-10-10 88 views
1

我有一些用AMPL和GAMS編寫的優化問題。我在Matlab中有一個算法。如何用Matlab中的算法解決這些問題? 我已經閱讀過有關GAMS的GDXMRW接口,但據我所知它只能在Matlab & GAMS之間交換數據?那麼是否有必要在GAMS中執行梯度,導數等的所有計算,然後將這些結果提供給Matlab? 也許有人知道如何連接這個?在AMPL中使用MATLAB

回答

0

我已經3年了,但對於讀過這個的其他人,您可以使用https://www.mathworks.com/matlabcentral/fileexchange/64634-ampl-interface-to-matlab。對於AMPL問題,我認爲這正是您正在尋找的。

它爲您提供AMPL問題的接口(存儲在nl文件或AMPL-API https://ampl.com/api/1.2.2/matlab/quick-start.html的對象中)。對於你的問題中的非線性函數,你可以要求任何點的客觀值,梯度和hessian計算。線性和二次函數作爲MATLAB數組和矩陣存儲在amplprob的字段中。

的典型用途是

>> amplprob = amplread('my_problem.nl') 
>> % objective value of the first nonlinear objective function 
>> f = nonlinobjective(amplprob,x,1) 
>> % value, gradient and hessian of the first nonlinear objective function 
>> [f,J,H] = nonlinobjective(amplprob,x,1) 
>> % value and gradient of the second nonlinear constraint at x 
>> [g, G] = nonlinconstr(amplprob,x,2);