当前位置: 首页 > 工具软件 > GAMS > 使用案例 >

GAMS系列分享3-GAMS基础知识-集合

郝冥夜
2023-12-01

      重点是集合的概念,顺便提一下gams的基本数据类型(注意parameter),一两分钟读一读相信对你会有点好处。里面有对电力系统对集合概念应用的例子,及本人对集合概念的理解。

目录

0 基本的数据类型(注意一下(parameter).)

1,单维集合

2,多维集合

3,动态集合(至今我也用过)


 

0 ,GAMS基本的数据类型(注意一下(parameter).)

1 set

2 parameter  又包含了table 和scalar **(重点呀),原来以为table,也是数据类型,原来只是parameter的子类,方便程序书写的。

3variable

4 equation

5 model

6 acronyms(这个我也没用过)  ,(这个是缩写数据类型,允许字符串作为值)

 

集合在 GAMS程序编写中很重要,其实在建立模型的时候,已经把集合给定义好了。针对集合的概念,主要掌握两点 就行了。

1,单维集合

       按我自己的理解,就是集合就是一类东西。具有相同属性的东西。

      不如说学生,都具有身高,体重,学习成绩,年级等属性。所以说学生可以是集合。另外,学生成绩包含,语文成绩,数学成绩,英语成绩,这类成绩又可以定义集合。

      要明白为啥定义集合:集合就是为了编程方便,给这类事物只要写一个方程就可以了。

     其实不定义集合,来编程也是可以的,只是麻烦罢了。

    针对电力系统:集合主要包含母线集合,线路集合,发电机集合,时间集合(多时段优化时用到)。

2,多维集合

    为啥要定义多维集合,当然是单维集合不够用了呗。

   多维集合就是提供原来已经定义集合之间的映射关系的。

    比如某模型,已经定义了国家集合,和港口集合。国家集合和港口集合都具有各自的属性。

    为了建立国家和港口之间的联系,就需要将两个集合联系起来,因此建立了二维集合。

 

电力系统中也有多维集合的例子。比如已经建立了母线集合和发电机集合,还可以建立这两个集合的连接关系。

天然气系统中,管道和节点的关系,也是多维集合来描述的。

在我实际的编程中,为了对天然气管道集合进行描述建立了四维集合。这个对初学者可能不太容易理解,在以后的学习中加强理解。多维结合非常有用!!!!

Pnm(a,gn,gm,gnn)  arc description;  

3,动态集合(至今我也用过)

     动态集合,还没具体使用过,以后用到了对此部分再进行更新。

4 集合的多重命

      电力系统中的应用,alias(bus,node);将母线集合有两个名称,也很重要了!!!!我的感觉就是对一个集合有多重索引的能力。

5 子集合范围检测

 一个大的集合,可能包含小的集合。在对子集进行定义的时候为了避免出错,gams可以自动的进行范围检查。

   bus     /1*4/

  slack(bus)   /1/

 上述定义是正确的,

如果  slack(bus)   /5/就是错误的,

 

因为slack是bus的子集,但是slack包含了'5',而bus不包含‘5’

 

 

 

欢迎查看GAMS在电力系统应用系列分享文章。(手动码的有错误的大家多多包含)

欢迎查看GAMS在电力系统应用系列分享文章。(手动码的有错误的大家多多包含)

欢迎查看GAMS在电力系统应用系列分享文章。(手动码的有错误的大家多多包含)

 

   

 类似资料: