2014-10-10 2 views
1

У меня есть набор проблем оптимизации, написанных в AMPL и GAMS. И у меня есть алгоритм в Matlab. Как я могу решить эти проблемы с помощью алгоритма в Matlab? Я читал о интерфейсе GDXMRW для GAMS, но, как я понял, он может обмениваться данными только между Matlab & GAMS? Так будет ли необходимо выполнить все вычисления градиентов, производных и т. Д. В GAMS, а затем дать эти результаты Matlab? Может быть, кто-то знает, как соединить это?Использование MATLAB с AMPL

ответ

1

Вы можете подключить AMPL к MATLAB с помощью amplfunc.mex и spamfunc.mex, описанного в Hooking Your Solver to AMPL, page 23. Эти файлы mex доступны для скачивания с http://www.ampl.com/DOWNLOADS/solvers/examples/. Градиент можно вычислить автоматически, используя функцию amplfunc, предоставляемую amplfunc.mex.

Существует также интерфейс AMPL для MATLAB, разработанный 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 вычисления для любой точки. Линейные и квадратичные функции хранятся в полях amplprob ниже как массивы и матрицы MATLAB.

Типичное использование

>> 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); 
Смежные вопросы