Использование MATLAB с AMPL

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


person user3102962    schedule 10.10.2014    source источник


Ответы (2)


(Отказ от ответственности: я работаю в MathWorks.)

Я опоздал на 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). Для нелинейных функций в вашей задаче вы можете запросить расчет объективного значения, градиента и гессиана для любой точки. Линейные и квадратичные функции хранятся в полях ampprob ниже в виде массивов и матриц 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);
person aykutbulut    schedule 02.03.2018

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

Также существует интерфейс AMPL для MATLAB, разработанный TOMLAB.

person vitaut    schedule 10.10.2014