我有一些用AMPL和GAMS編寫的優化問題。我在Matlab中有一個算法。如何用Matlab中的算法解決這些問題? 我已經閱讀過有關GAMS的GDXMRW接口,但據我所知它只能在Matlab & GAMS之間交換數據?那麼是否有必要在GAMS中執行梯度,導數等的所有計算,然後將這些結果提供給Matlab? 也許有人知道如何連接這個?在AMPL中使用MATLAB
1
A
回答
1
可以使用Hooking Your Solver to AMPL, page 23中描述的amplfunc.mex
和spamfunc.mex
將AMPL連接到MATLAB。這些mex文件可從http://www.ampl.com/DOWNLOADS/solvers/examples/下載。可以使用amplfunc.mex
提供的amplfunc
函數自動計算梯度。
還有一個由MATLAB開發的AMPL接口,由TOMLAB開發。
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);
相關問題
- 1. 使用amplfunc和spamfunc連接使用Matlab的AMPL
- 2. AMPL IDE使用問題
- 3. 在AMPL中使用變量作爲索引
- 4. 如何在AMPL中使用錯誤函數
- 5. AMPL,從兩組
- 6. 重寫AMPL中的約束
- 7. AMPL中的操作順序
- 8. 在AMPL中設置所有物
- 9. AMPL相關係數
- 10. SCIP與IpOpt和AMPL
- 11. AMPL找不到「minos」
- 12. AMPL約束語法
- 13. AMPL語法錯誤
- 14. 在Python中使用Matlab
- 15. 在MATLAB中使用ROI
- 16. 在matlab中使用linspace
- 17. 在MATLAB中使用ROI
- 18. 在MATLAB中使用圖例
- 19. 在MATLAB中使用日期
- 20. Matlab:在ode45中使用interp2
- 21. 在Matlab中使用sprintf?
- 22. 在Matlab中使用jQuery
- 23. 在MATLAB中使用Apache CXF
- 24. 在MATLAB中使用DLL
- 25. 在Matlab中使用fplot
- 26. 在Matlab中使用bash shell
- 27. 在matlab中使用find()
- 28. 在MATLAB中使用meshgrid
- 29. 在GUI matlab中使用specgram
- 30. 在Matlab中使用ode45