2014-10-10 1 views
1

AMPL 및 GAMS로 작성된 최적화 문제 모음이 있습니다. 그리고 Matlab에 알고리즘이 있습니다. Matlab의 알고리즘으로 어떻게 이러한 문제를 해결할 수 있습니까? GAMS 용 GDXMRW 인터페이스에 대해 읽었지만 Matlab & GAMS 사이에서만 데이터를 교환 할 수 있다는 것을 알고 있으므로 이해가 되었습니까? 따라서 GAMS에서 그라디언트, 파생물 등의 모든 계산을 수행 한 다음 Matlab에 이러한 결과를 제공해야합니까? 어쩌면 누군가가 이것을 어떻게 연결하는지 압니까?AMPL에서 MATLAB 사용

답변

1

Hooking Your Solver to AMPL, page 23에 설명 된 amplfunc.mexspamfunc.mex을 사용하여 AMPL을 MATLAB에 연결할 수 있습니다. 이 mex 파일은 http://www.ampl.com/DOWNLOADS/solvers/examples/에서 다운로드 할 수 있습니다. 그라디언트는 amplfunc.mex에서 제공하는 amplfunc 함수를 사용하여 자동으로 계산할 수 있습니다.

또한 TOMLAB에 의해 개발 된 MATLAB에 대한 AMPL 인터페이스가 있습니다.

0

나는 3 년 늦었지만 이것을 읽은 다른 사람은 https://www.mathworks.com/matlabcentral/fileexchange/64634-ampl-interface-to-matlab을 사용할 수 있습니다. AMPL 문제의 경우, 이것이 정확히 당신이 찾고있는 것이라고 생각합니다.

AMPL 문제에 대한 인터페이스를 제공합니다 (nl-files 또는 AMPL-API https://ampl.com/api/1.2.2/matlab/quick-start.html의 객체에 저장 됨). 문제의 비선형 함수의 경우 임의의 점에 대한 객관적인 값, 기울기 및 헤센 계산을 요청할 수 있습니다. 선형 및 2 차 함수는 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); 
입니다