教学课件:第九章-ILOG-OPL-建模语言.ppt
《教学课件:第九章-ILOG-OPL-建模语言.ppt》由会员分享,可在线阅读,更多相关《教学课件:第九章-ILOG-OPL-建模语言.ppt(28页珍藏版)》请在三一办公上搜索。
1、主讲人:雒兴刚东北大学系统工程研究所Email:Tel:83682292,优化软件与应用,第九章 ILOG OPL 建模语言,OPL 数据类型,1、整型:范围例:int i=25;int n=3;int size=n*n;/注意这种初始化很特别2、浮点型:双精度,IEEE 754 standard float f=3.2;,第九章 ILOG OPL 建模语言,OPL 数据类型,3、字符串型例如string Tasks=masonry,carpentry,plumbing,ceiling,roofing,painting,windows,facade,garden,moving;定义字符串一个集
2、合。字符串中的特殊字符:字符串换行:,第九章 ILOG OPL 建模语言,OPL 数据结构,1、Range:给定最小和最大值。range Rows=1.10;int n=8;range Rows=n+1.2*n+1;用途1:数组定义range R=1.100;int AR;/A is an array of 100 integers 用途2:循环range R=1.100;forall(i in R)/element of a loop.用途3:变量定义dvar int i in R;,第九章 ILOG OPL 建模语言,OPL 数据结构,2、数组一维数组:int a1.4=10,20,30,
3、40;float f1.4=1.2,2.3,3.4,4.5;string d1.2=Monday,Wednesday;int aDays=10,20,30,40,50,60,70;即元素下标可以是字符串,如aMonday,.,aSunday.tuple Edges int orig;int dest;Edge Edges=,;int aEdges=10,20,30;即下标也可以是Tuple,a,a,and a,第九章 ILOG OPL 建模语言,OPL 数据结构,2、数组多维数组:int a1.21.3=.;int aDays1.3=.;/混合下标string Warehouses=.;str
4、ing Customers=.;tuple Route string w;string c;Route routes=.;int transproutes=./实际上transp是二维数组string Warehouses.;string Customers.;tuple Route Warehouses w;Customers c;Route routes=.;int transproutes=.,可能是稀疏矩阵,两种哪个好些?,第九章 ILOG OPL 建模语言,OPL 数据结构,3、Tuple:结构体tuple Point int x;int y;Point pointi in 1.3=
5、;Point p=;Point pointi in 1.3=;/Tuple数组Point points=,;/Tuple集合tuple Rectangle Point ll;Point ur;/Tuple的TuplePoint p=;int x=p.x;/取Tuple的成员但是,Tuple的定义里不能出现Tuple集合和Tuple数组!,第九章 ILOG OPL 建模语言,OPL 数据结构,4、集合:可以写成T,或者 setof(T)int setInt=.;setof(Precedence)precedences=.;集合初始化:tuple Precedence int before;int
6、 after;Precedence precedences=,;,第九章 ILOG OPL 建模语言,OPL 决策变量和约束,OPL决策变量使用关键字dvardvar int transpOrigDest in 0.100;/二维数组变量;限制决策变量范围tuple Route City orig;City dest Route routes=.:dvar int transproutes in 0.100;/以有限tuple集routes 为索引range Capacity=0.limitCapacity;dvar int transpOrigDest in Capacity;/in 后面是
7、rangedvar int averageDelay in 0.maxDelay;/in 后面接变量如果不同决策变量的范围不同,可以这样定义int capacityroute=.;dvar int transpr in routes in 0.capacityr;,第九章 ILOG OPL 建模语言,OPL 决策变量和约束,也可以用关键字限制决策变量只能为正:dvar int+x;/non negative integer decision variable dvar float+y;/non-negative decision variable dvar boolean z;/boolean
8、 decision variable 上述定义等价于:dvar int x in 0.maxint;dvar float y in 0.infinity;dvar int z in 0.1;其中maxint、infinity为OPL关键字。二维决策变量数组也可以逐个元素给定范围:dvar float transpo in Origd in Dest in 0.capod;约束可以单个定义,也可以定义成数组形式,如:constraint capCstrMachines;,第九章 ILOG OPL 建模语言,OPL 数据初始化,总的来说,OPL数据初始化可以分为2种,一种是在mod文件完成,另一种
9、是在dat文件完成。1、数组初始化初始化多维数组:/*.mod file*/int a1.21.3=.;/*.dat file*/a=10,20,30,40,50,60;按照(index,value)的方式初始化数组:但注意要用#方式元素次序无关。参见下页例子:,/*.mod file*/int aDays=.;/*.dat file*/a=#Monday:1,Tuesday:2,Wednesday:3,Thursday:4,Friday:5,Saturday:6,“Sunday”:7#;,第九章 ILOG OPL 建模语言,OPL 数据初始化,前面的整型索引数组的初始化也可以写成:/*.mo
10、d file*/int a1.21.3=.;/*.dat file*/a=#2:40,50,60,1:10,20,30#;数组初始化也可以用ILOG脚本实现,如:range R=1.10;int aR;execute for(var i in R)ai=i+1;,行下标,注意这里故意颠倒了次序,但结果相同,第九章 ILOG OPL 建模语言,OPL 数据初始化,也可以用表达式方式初始化,例如上面的例子也可写为:int ai in 1.10=i+1;多维数组也可以用这种方式,如:int mi in 0.10j in 0.10=10*i+j;也可以用一个已知数组初始化,如:int mDim1Dim
11、2=.;int tj in Dim2i in Dim1=mij;也可以用index:item 方式初始化,如:int a1.10=i-1:i|i in 2.11;/效果同前面的2个例子int m0.100.10=i:j:10*i+j|i,j in 0.10;,第九章 ILOG OPL 建模语言,OPL 数据初始化,再如,下面的ILOG脚本初始化:GasType gasGasolines;execute for(var g in gasData)gasg.name=g;用index:item 方式可以写成:GasType gasGasolines=g.name:g|g in gasData;,第
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学 课件 第九 ILOG OPL 建模 语言
链接地址:https://www.31ppt.com/p-6290281.html