重点是集合的概念,顺便提一下gams的基本数据类型(注意parameter),一两分钟读一读相信对你会有点好处。里面有对电力系统对集合概念应用的例子,及本人对集合概念的理解。
目录
1 set
2 parameter 又包含了table 和scalar **(重点呀),原来以为table,也是数据类型,原来只是parameter的子类,方便程序书写的。
3variable
4 equation
5 model
6 acronyms(这个我也没用过) ,(这个是缩写数据类型,允许字符串作为值)
集合在 GAMS程序编写中很重要,其实在建立模型的时候,已经把集合给定义好了。针对集合的概念,主要掌握两点 就行了。
按我自己的理解,就是集合就是一类东西。具有相同属性的东西。
不如说学生,都具有身高,体重,学习成绩,年级等属性。所以说学生可以是集合。另外,学生成绩包含,语文成绩,数学成绩,英语成绩,这类成绩又可以定义集合。
要明白为啥定义集合:集合就是为了编程方便,给这类事物只要写一个方程就可以了。
其实不定义集合,来编程也是可以的,只是麻烦罢了。
针对电力系统:集合主要包含母线集合,线路集合,发电机集合,时间集合(多时段优化时用到)。
为啥要定义多维集合,当然是单维集合不够用了呗。
多维集合就是提供原来已经定义集合之间的映射关系的。
比如某模型,已经定义了国家集合,和港口集合。国家集合和港口集合都具有各自的属性。
为了建立国家和港口之间的联系,就需要将两个集合联系起来,因此建立了二维集合。
电力系统中也有多维集合的例子。比如已经建立了母线集合和发电机集合,还可以建立这两个集合的连接关系。
天然气系统中,管道和节点的关系,也是多维集合来描述的。
在我实际的编程中,为了对天然气管道集合进行描述建立了四维集合。这个对初学者可能不太容易理解,在以后的学习中加强理解。多维结合非常有用!!!!
Pnm(a,gn,gm,gnn) arc description;
动态集合,还没具体使用过,以后用到了对此部分再进行更新。
电力系统中的应用,alias(bus,node);将母线集合有两个名称,也很重要了!!!!我的感觉就是对一个集合有多重索引的能力。
一个大的集合,可能包含小的集合。在对子集进行定义的时候为了避免出错,gams可以自动的进行范围检查。
bus /1*4/
slack(bus) /1/
上述定义是正确的,
如果 slack(bus) /5/就是错误的,
因为slack是bus的子集,但是slack包含了'5',而bus不包含‘5’
欢迎查看GAMS在电力系统应用系列分享文章。(手动码的有错误的大家多多包含)
欢迎查看GAMS在电力系统应用系列分享文章。(手动码的有错误的大家多多包含)
欢迎查看GAMS在电力系统应用系列分享文章。(手动码的有错误的大家多多包含)