MATLAB is a de-facto standard in many fields of science and engineering and is a good combination with GAMS. Until now, MATLAB users had to use the GDXMRW suite of utilities for interfacing with GAMS. However, for other programming languages such as Java or Python, we have been providing more advanced object oriented APIs since 2012. These APIs offer some real benefits for controlling and interacting with GAMS.
We are proud to now also announce the MATLAB version of the object oriented API, which ships with GAMS 34 and allows:
- Exchange of input data and model results with in-memory representation of data (GAMSDatabase)
- Creation and running of GAMS models (GAMSJob)
- Customizing GAMS options (GAMSOptions)
- Efficiently solving sequences of closely related model instances (GAMSModelInstance)
The new API works both with Matlab, as well as GNU Octave, release 5.2 or newer.
Here is a simple example
% create workspace
ws = GAMS.GAMSWorkspace();
% create GAMSJob 't' from 'trnsport' model in GAMS Model Libraries
t = ws.addJobFromGamsLib('trnsport');
% run GAMSJob 't'
t.run();
% retrieve GAMSVariable 'x' from GAMSJob's output databases
for x = t.outDB.getVariable('x').records
fprintf('x(%s,%s): level=%g marginal=%g\n', x{1}.keys{:}, x{1}.level, x{1}.marginal);
end
More examples: https://www.gams.com/34/docs/apis/examples_matlab/files.html
Feel free to play around with the new API and let us know what you think on Twitter.