Gams与Matlab如何实现数据交互
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如何实现数据交互相关推荐
- GAMS-01 GAMS与MATLAB间的数据交互方法
在MATLAB中设置安装GAMS的路径.
- GAMS与MATLAB的数据交互
GAMS与MATLAB的数据交互 背景 1 学习材料准备 2 添加路径 3 数据交互 3.1 GAMS数据写入与读取 3.1.1 将GAMS数据写到gdx文件中 3.1.2 GAMS读取gdx文件中的 ...
- excel和matlab交互,Excel与Matlab的数据交互(精选5篇)
Excel与Matlab的数据交互 假设列举十只股票,算其五日平均线,平均股价,标准差...等,如果用Excel Link的话,可将资料由Excel 传给Matlab处理,再将结果送回excel 中我 ...
- Matlab数据交互
txt文本文件: 从txt文本文件读出到Matlab fid=fopen('人名.txt','r')t2=fgetl(fid)fclose(fid) 1.打开人名.txt (r为只读,w为只写) 2. ...
- matlab导入记事本数据库,怎么才能让记事本与MATLAB的数据交互?
用MATLAB读取记事本中的数据 1.用MATLAB读取记事本中的数据. 在MATLAB当前目录下新建一个txt文本,命名为'myExample.txt'.在其中输出1 2 3 4 5 6 7 8 9 ...
- matlab采样频谱,Matlab对采样数据进行频谱分析
使用Matlab对采样数据进行频谱分析 1.采样数据导入Matlab 采样数据的导入至少有三种方法. 第一就是手动将数据整理成Matlab支持的格式,这种方法仅适用于数据量比较小的采样. 第二种方法是 ...
- fortran调用matlab画图,[转载]Matlab与Fortran的交互--基本概念
如果需要进行Matlab环绕Fortran语言的交互,必须通过Matlab提供的应用编程接口(API)来实现与外部的接口,从而可以在Matlab环境中实现调用Fortran程序.输入或输出数据以及和其 ...
- 基于MATLAB的多项式数据拟合方法研究-毕业论文
摘要:本论文先介绍了多项式数据拟合的相关背景,以及对整个课题做了一个完整的认识.接下来对拟合模型,多项式数学原理进行了详细的讲解,通过对文献的阅读以及自己的知识积累对原理有了一个系统的认识.介绍多项式 ...
- Plant Simulation数据交互
很过同学都在很关心Plant Simulation数据交互的学习问题. 去学习包括学习ODBC.Access.DDE这种微软都已经明确放弃的技术,甚至还有人去学习与Oracle进行数据交互. orac ...
最新文章
- 每日站立会议10(完成)
- [转载]WPF窗口跳转及window和page区别
- SAP Cloud for Customer Cloud Application Studio的Trace功能
- 什么情况不能办理房产抵押贷款 房产抵押贷能贷多少?
- OpenGL ES 2 o 初探
- 动态规划,java实现算法导论15章钢条切割
- 解决python ConfigParser文件编码问题(按指定格式存储文件(txt))
- jmeter之线程组间变量的传递二
- Linux下 mysql5.7的彻底卸载
- hasp运行不成功_HASP加密狗驱动程序没有安装成功如何解决
- 孩子给产品经理的一堂课
- COSCon'20 Apache Roadshow- China 精彩收官!|会场精彩回顾篇
- Unity TouchScript 123木头人算法
- IMDb站点起诉加州限制演员年龄信息披露法案的有效性
- 快手7亿用户增长实践
- 为什么我们要学习人工智能?
- python合并excel的多个sheet
- 安卓开发中必备的那些神器APP
- 【HTML5】HTML5
- 小米多看|变身番茄todo计时,时钟
热门文章
- ubuntu20.04蚂蚁笔记(leanote)的使用
- SAP 框架协议(outline agreements)
- 如何在线观看或直播2018年奥运会(无电缆)
- 酷比魔方iwork12 linux,【酷比魔方iwork12】报价_参数_图片_论坛_CUBE 酷比魔方i12酷比魔方平板电脑报价-ZOL中关村在线...
- cmake,make
- Keras 搭建图片分类 CNN (卷积神经网络)
- 从你认识MySQL的那天起,再也没任何音讯
- 管理计算机中的文件,管理计算机中的文件.ppt
- 毕业后考FRM vs 毕业后工作,差别很大吗?
- 关于Android SDK下载和更新失败的解决方法