Gams是一款通用建模软件,能够高效的解决数学规划和优化问题。Matlab是一个集数值计算、符号分析、图像显示和文字处理于一体的大型集成化软件。在实际使用过程中会涉及到两个软件通讯的操作,下面介绍如何实现Gams与Matlab的数据交互。

这两个软件之间通过gdx文件进行数据交互(xxx.gdx),具体实现过程为Matlab软件将数据写入gdx文件,gams通过读取gdx文件得到数据,反之亦然。下面从gams生成指定gdx文件、gams向gdx文件中写入数据、gams读取gdx文件中的数据、Matlab向gdx文件中写入数据、Matlab读取gdx文件中的数据、Matlab调用gams进行运算  五部分进行介绍。

1 . gams生成指定gdx文件

在gams脚本文件首行及末尾编写如下代码

$set matout "'matsol.gdx'"
*
*
*
execute_unload %matout%;

运行该文件后便会在脚本文件所在文件夹中生成"matsol.gdx"文件。

2 . gams向gdx文件中写入数据

首先确定数据变量名,之后在脚本文件首行添加变量名即可

$set matout "'matsol.gdx', Qu, Qc, yij, ycu, yhu, Tiin, Chu"
*Qu, Qc, yij, ycu, yhu, Tiin, Chu为所需输出变量名

注意!这里可以规定gams的计算结果,也可以规定gams中的输入值。理论上可以输出gams当中全部参数数据。

运行文件后"matsol.gdx"中便会存在全部变量,双击gdx文件可以在gams中查看。

下面介绍Matlab对gams调用进行计算以及与gdx文件数据交互的方法。

首先需要在Matlab中添加gams的启动路径(例如path = D:\GAMS\37),或者在Matlab工具栏操作:主页-环境-设置路径-添加并包含子文件夹-选择gams启动文件夹。

>> addpath 'C:\GAMS'; savepath;

3 . Matlab向gdx文件中写入数据

在Matlab中首先通过结构体对需要写入gdx文件中的数据进行定义,采用如下代码

s.name = 'Chu';
s.type = 'Parameter';
s.form = 'full';
s.val = 80;v.name = 'Tiin1';
v.type = 'Parameter';
v.form = 'full';
v.val = [89.47 117.28  211.58  143.67  119.80  48.18   48.25   47.93];

如代码所示,'name'为数据名称,‘type’为数据类型,'val'为数据值。有关参数的更多属性值请参考此教程:GDXMRW (gams.com)

参数规定后通过如下代码输入到gdx文件中

wgdx('matsol',s,v);

通过上述函数可以一次性向gdx文件中输入多个参数,注意!该函数会覆盖gdx文件之前的内容。

4 . Matlab读取gdx文件中的数据

首先规定承载数据的结构体:

y.name = 'Chu';
z.name = 'Tiin1';

结构体中的属性值'name'要与gdx文件中参数的'name'保持一致。

通过如下代码读取数据:

x1 = rgdx('matsol',y);
x2 = rgdx('matsol',z);
disp(x1.val);
disp(x2.val);

注意!3和4介绍的方法默认gdx文件与Matlab脚本文件在同一文件夹中,在使用时建议gdx文件在Matlab运行文件夹中。

5 . Matlab调用gams进行运算

通过如下代码调用gams进行计算,注意!gams脚本文件需要放在Matlab运行文件夹中(Matlab脚本所在文件夹)。

[x1, x2, x3, x4, x5, x6, x7] = gams('super');

'super'为gams脚本文件文件名,x1至x7为gams运行结果返回值,与( 2 . gams向gdx文件中写入数据)  中在gams脚本文件开头规定的输出变量一致,从左到右的变量依次赋给x1至x7。通过这种方法可以方便的得到计算结果。通过下述代码得到参数值:

disp(x1.val);
disp(x1.name);

注意!如果返回数据中涉及到gams计算结果的数据全部为0,则代表gams计算失败,文件存在bug或者无法计算得到结果(Problem is infeasible!)

Gams与Matlab如何实现数据交互相关推荐

  1. GAMS-01 GAMS与MATLAB间的数据交互方法

    在MATLAB中设置安装GAMS的路径.

  2. GAMS与MATLAB的数据交互

    GAMS与MATLAB的数据交互 背景 1 学习材料准备 2 添加路径 3 数据交互 3.1 GAMS数据写入与读取 3.1.1 将GAMS数据写到gdx文件中 3.1.2 GAMS读取gdx文件中的 ...

  3. excel和matlab交互,Excel与Matlab的数据交互(精选5篇)

    Excel与Matlab的数据交互 假设列举十只股票,算其五日平均线,平均股价,标准差...等,如果用Excel Link的话,可将资料由Excel 传给Matlab处理,再将结果送回excel 中我 ...

  4. Matlab数据交互

    txt文本文件: 从txt文本文件读出到Matlab fid=fopen('人名.txt','r')t2=fgetl(fid)fclose(fid) 1.打开人名.txt (r为只读,w为只写) 2. ...

  5. matlab导入记事本数据库,怎么才能让记事本与MATLAB的数据交互?

    用MATLAB读取记事本中的数据 1.用MATLAB读取记事本中的数据. 在MATLAB当前目录下新建一个txt文本,命名为'myExample.txt'.在其中输出1 2 3 4 5 6 7 8 9 ...

  6. matlab采样频谱,Matlab对采样数据进行频谱分析

    使用Matlab对采样数据进行频谱分析 1.采样数据导入Matlab 采样数据的导入至少有三种方法. 第一就是手动将数据整理成Matlab支持的格式,这种方法仅适用于数据量比较小的采样. 第二种方法是 ...

  7. fortran调用matlab画图,[转载]Matlab与Fortran的交互--基本概念

    如果需要进行Matlab环绕Fortran语言的交互,必须通过Matlab提供的应用编程接口(API)来实现与外部的接口,从而可以在Matlab环境中实现调用Fortran程序.输入或输出数据以及和其 ...

  8. 基于MATLAB的多项式数据拟合方法研究-毕业论文

    摘要:本论文先介绍了多项式数据拟合的相关背景,以及对整个课题做了一个完整的认识.接下来对拟合模型,多项式数学原理进行了详细的讲解,通过对文献的阅读以及自己的知识积累对原理有了一个系统的认识.介绍多项式 ...

  9. Plant Simulation数据交互

    很过同学都在很关心Plant Simulation数据交互的学习问题. 去学习包括学习ODBC.Access.DDE这种微软都已经明确放弃的技术,甚至还有人去学习与Oracle进行数据交互. orac ...

最新文章

  1. 每日站立会议10(完成)
  2. [转载]WPF窗口跳转及window和page区别
  3. SAP Cloud for Customer Cloud Application Studio的Trace功能
  4. 什么情况不能办理房产抵押贷款 房产抵押贷能贷多少?
  5. OpenGL ES 2 o 初探
  6. 动态规划,java实现算法导论15章钢条切割
  7. 解决python ConfigParser文件编码问题(按指定格式存储文件(txt))
  8. jmeter之线程组间变量的传递二
  9. Linux下 mysql5.7的彻底卸载
  10. hasp运行不成功_HASP加密狗驱动程序没有安装成功如何解决
  11. 孩子给产品经理的一堂课
  12. COSCon'20 Apache Roadshow- China 精彩收官!|会场精彩回顾篇
  13. Unity TouchScript 123木头人算法
  14. IMDb站点起诉加州限制演员年龄信息披露法案的有效性
  15. 快手7亿用户增长实践
  16. 为什么我们要学习人工智能?
  17. python合并excel的多个sheet
  18. 安卓开发中必备的那些神器APP
  19. 【HTML5】HTML5
  20. 小米多看|变身番茄todo计时,时钟

热门文章

  1. ubuntu20.04蚂蚁笔记(leanote)的使用
  2. SAP 框架协议(outline agreements)
  3. 如何在线观看或直播2018年奥运会(无电缆)
  4. 酷比魔方iwork12 linux,【酷比魔方iwork12】报价_参数_图片_论坛_CUBE 酷比魔方i12酷比魔方平板电脑报价-ZOL中关村在线...
  5. cmake,make
  6. Keras 搭建图片分类 CNN (卷积神经网络)
  7. 从你认识MySQL的那天起,再也没任何音讯
  8. 管理计算机中的文件,管理计算机中的文件.ppt
  9. 毕业后考FRM vs 毕业后工作,差别很大吗?
  10. 关于Android SDK下载和更新失败的解决方法