GAMS系列分享9-GAMS基础知识--带参数的数据处理
大力丸,对索引不熟,本节就是你的波力海苔。
再次读本章内容,还是收获满满呀。文中标红的地方重点理解,掌握。
再也不担心不会用索引了。
目录
数据处理
1,赋值语句
赋值语句是GAMS中最基本的数据处理语句,用于定义或修改任何集合,参数,变量或方程的值。GAMS使用加减乘除。
1.1 scalar赋值
scalar x /1.5/
x = 1;
x =x+2;
1.2 带索引赋值
所有学生的体重都和身高成一定的比例:加入student为学生集合
weight(student) = 1.5 *height(student);
c(i,j) = f * d(i,j) / 1000 ;
这种赋值方式在技术上称为带索引赋值 ,集合student 称为控制索引或者控制集合。
**赋值表达式左边的索引集合统称为赋值的控制域
1.3 控制索引问题
等号左边的控制索引至少应该等于右边的索引数,赋值语句左边没有出现的索引,右边也应该没有,除非通过一个带索引的操作符实现。
2,表达式
2.1 标准的算术操作符
加减乘除,求幂 (要考虑优先级)
x = 5+4*3**2 ; 可以得到x =41;
2.2 带索引操作
除了前面介绍的简单操作外,GAMS化提供了下面四种带索引操作。下面四个操作都是基于一个或多个索引。
1)sum:控制索引求和
2 )prod:控制索引求积
3)smin:控制索引取最小值
4)smax:控制索引求最大值
举个最简单的例子,还是那个商品传输的例子。(基础知识是以后读懂程序会写程序的基础)
supply(i) .. sum(j, x(i,j)) =l= a(i) ; ------------sum(j, x(i,j)) 单控制索引
cost .. z =e= sum((i,j), c(i,j)*x(i,j)) ; ------------sum((i,j), c(i,j)*x(i,j)) 多控制索引
2.3 函数
GAMS中提供了一些有用的函数,如幂函数,三角函数,分布函数,取整函数,等。具体参考第六章GAMS用户手册。
3,重点总结
**赋值表达式左边的索引集合统称为赋值的控制域
**等号左边的控制索引至少应该等于右边的索引数,赋值语句左边没有出现的索引,右边也应该没有,除非通过一个带索引的操作符实现。
本文截图部分很重要,主要是探讨,为啥要对一个集合多重命名的问题。
搜索GAMS系列分享,查看系列文章哟!!!
搜索GAMS系列分享,查看系列文章哟!!!
搜索GAMS系列分享,查看系列文章哟!!!