1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,数学模型与,lingo,软件,西南交通大学数学系,需要掌握的几个重要方面,掌握集合,(,SETS),的应用;,正确阅读求解报告;,正确理解求解状态窗口;,学会设置基本的求解选项,(,OPTIONS),;,应用实例,LINDO,和,LINGO,软件能求解的优化模型,LINGO 8.0,有两种命令模式,Windows,模式,通过下拉式菜单命令驱动,LINGO,运行,命令行,(,Command-Line),模式,仅在命令窗口下
2、操作,与,LINDO,相比,,LINGO,软件主要具有两大优点,1,、除具有,LINDO,的全部功能外,还可用于求解非线性规划问题,包括非线性整数规划问题,2,、,LINGO,包含了内置的建模语言,允许以简练、直观的方式描述较大规模的优化问题,模型中所需的数据可以以一定格式保存在独立的文件中,在LINGO中使用LINDO模型,LINGO,的界面,LINGO,软件的主窗口(用户界面),所有其他窗口都在这个窗口之内。,模型窗口(,Model Window,),用于输入,LINGO,优化模型(即,LINGO,程序)。,状态行(最左边显示“,Ready”,,表示“准备就绪”),当前时间,当前光标的位置
3、工具栏,File|Open,(,F3,),打开文件,File|Print,(,F7,),打印文件,Edit|Copy,(,Ctrl+C,),复制,Edit|Undo,(,Ctrl+Z,),取消操作,Edit|Find,(,Ctrl+F,),查找,LINGO|Solution,(,Alt+O,),显示解答,Edit|Match,Parenthesis,(,Ctrl+P,),匹配括号,LINGO|Options,(,Ctrl+I,),选项设置,Window|Close,All,(,Alt+X,),关闭所有窗口,Help|Contents,(,F1,),在线帮助,File|New,(,F2,),新
4、建文件,File|Save,(F4),保存文件,Edit|Cut,(,Ctrl+X,),剪切,Edit|Paste,(,Ctrl+V,),粘贴,Edit|Redo,(,Ctrl+Y,),恢复操作,Edit|Go To Line,(,Ctrl+T,),定位某行,LINGO|Solve,(,Ctrl+S,),求解模型,LINGO|Picture,(,Ctrl+K,),模型图示,Window|Send,to Back,(,Ctrl+B,),窗口后置,Window|Tile,(,Alt+T,),平铺窗口,上下文相关的帮助,LP,问题在,lindo,和,lingo,中,不同的输入形式,Lindo,:,m
5、ax 2x+3y,st,4x+3y10,3x+5y12,end,Lingo,:,max,=2*x+3*y;,4*x+3*y10;,3*x+5*y12;,(,1,)将目标函数的表示方式从“,MAX,”,变成了“,MAX=,”,(,2,)“,ST,”,在,LINGO,模型中不再需要,所以被删除了,(,3,)每个系数与变量间增加了运算符“,*,”(即乘号不能省略),(,4,)每行(目标、约束和说明语句)后面均增加了一个分号“,;,”,(,5,)模型结束标志“,END”,也被删除了(,LINGO,中只有当模型以“,MODEL,:”,开始时才能,以“,END,”,结束)。,这是,LINGO,模型的最基本
6、特征,直接将,lindo,模型文件转化为,lingo,文件,Lindo,:,max 2x+3y,st,4x+3y10,3x+5y12,end,Lingo,:,max,=2*x+3*y;,4*x+3*y10;,3*x+5*y12;,为保证能将,LINDO,模型移植到,LINGO,中去,在,LINDO,模型输入时应尽量采用“规范化”的格式,Lingo,的不同保存类型,“,LG4,”,表示,LINGO,格式的模型文件,是一种特殊的二进制格式文件,保存了我们在模型窗口中所能够看到的所有文本和其他对象及其格式信息,只有,LINGO,能读出它,用其他系统打开这种文件时会出现乱码,“,LNG,”,表示,LI
7、NGO,文本文件,以这个格式保存模型时系统,将给出警告,因为模型中的格式信息(如字体、颜色等)将会丢失,“,LDT,”,表示数据文件,“,LTF,”,表示,命令脚本文件,“,LGR,”,表示,报告文件,除“,LG4,”,文件外,这里的另外几种格式的文件其实都是普通的文本文件,可以用任何文本编辑器打开和编辑,运行状态窗口,Variables,(变量数量):,变量总数(,Total,)、,非线性变量数(,Nonlinear,)、,整数变量数(,Integer,)。,Constraints,(约束数量):,约束总数(,Total,)、,非线性约束个数,(Nonlinear),。,Nonzeros,(
8、非零系数数量):,总数(,Total,)、,非线性项系数个数,(Nonlinear),。,Generator Memory Used(K)(,内存使用量,),Elapsed Runtime(,hh:mm:ss,),(求解花费的时间),状态窗口的参数解释,运行状态窗口,求解器,(,求解程序,),状态框,当前模型的类型,:LP,,,QP,,,ILP,,,IQP,,,PILP,,,PIQP,,,NLP,,,INLP,,,PINLP,(以,I,开头表示,IP,,以,PI,开头表示,PIP,),当前解的状态,:Global Optimum,Local Optimum,Feasible,Infeasibl
9、e“(,不可行,),Unbounded“(,无界,),Interrupted“(,中断,),Undetermined“(,未确定,),解的目标函数值,当前约束不满足的总量,(,不是不满足的约束的个数,):,实数(即使该值,=0,,当前解也可能不可行,因为这个量中没有考虑用上下界命令形式给出的约束),目前为止的迭代次数,状态窗口的参数解释,运行状态窗口,扩展的求解器,(,求解程序,),状态框,使用的特殊求解程序,:,B-and-B(,分枝定界算法,),Global(,全局最优求解程序,),Multistart,(,用多个初始点求解的程序,),目前为止找到的可行解的最佳目标函数值,目标函数值的界,
10、特殊求解程序当前运行步数:,分枝数,(,对,B-and-B,程序,),;,子问题数,(,对,Global,程序,),;,初始点数,(,对,Multistart,程序,),有效步数,状态窗口的参数解释,用,LINGO,来解二次规划问题,max,=98*x1+277*x2-x12-0.3*x1*x2-2*x22;,x1+x2100;,x12*x2;,gin,(x1);,gin(x2);,注意事项:,1),变量和行名可以超过,8,个字符,但不能超过,32,个字符,且必须以字母开头,2),LINGO,已假定各变量非负(除非用函数,free,或,sub,或,slb,另行说明),3),变量可以放在约束条件
11、的右端(同时数字也可放在约束条件的左端)。但为了提高效率,应尽可能采用线性表达式定义目标和约束(如果可能),Lingo,的编程,优化问题的一种建模语言。使用者可以只用键入一行文字就可以建立起含有大规模变量的目标函数和成千上万条约束,LINGO,模型的构成,:4,个段,集合段(,SETS ENDSETS,),数据段(,DATA ENDDATA,),初始段(,INIT ENDINIT,),目标与约束段,LINGO,中的集,对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。,LINGO,允许把这些相联系的对象聚合成,集,(,sets,)。一旦把对象聚合成
12、集,就可以利用集来最大限度的发挥,LINGO,建模语言的优势。,集是,LINGO,建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型,集是一群相联系的对象,这些对象也称为集的,成员。,每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为,属性,。属性值可以预先给定,也可以是未知的,有待于,LINGO,求解。,集部分,是,LINGO,模型的一个可选部分。在,LINGO,模型中使用集之前,必须在集部分事先定义。集部分以关键字“,sets:”,开始,以“,endsets”,结束。,一个模型
13、可以没有集部分,或有一个简单的集部分,或有多个集部分。一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须定义了它们,定义原始集,setname/member_list/:attribute_list;,Setname,是你选择的来标记集的名字,最好具有较强的可读性。集名字必须严格符合标准命名规则:以拉丁字母或下划线(,_,)为首字符,其后由拉丁字母(,AZ,)、下划线、阿拉伯数字(,0,,,1,,,,,9,)组成的总长度不超过,32,个字符的字符串,且不区分大小写。,Member_list,是集成员列表。如果集成员放在集定义中,那么对它们可采取显式罗列和隐式罗列两
14、种方式。如果集成员不放在集定义中,那么可以在随后的数据部分定义它们,sets:,students/John Jill,Rose Mike/:sex,age;,endsets,模型的数据部分,数据部分提供了模型相对静止部分和数据分离的可能性。显然,这对模型的维护和维数的缩放非常便利。,数据部分以关键字“,data:”,开始,以关键字“,enddata”,结束。在这里,可以指定集成员、集的属性。其语法如下:,object_list=value_list;,对象列,(,object_list,)包含要指定值的属性名、要设置集成员的集名,用逗号或空格隔开。一个对象列中至多有一个集名,而属性名可以有任意
15、多。如果对象列中有多个属性名,那么它们的类型必须一致。如果对象列中有一个集名,那么对象列中所有的属性的类型就是这个集。,数值列,(,value_list,)包含要分配给对象列中的对象的值,用逗号或空格隔开。注意属性值的个数必须等于集成员的个数。,sets:,set1/A,B,C/:X,Y;,endsets,data:,X=1,2,3;,Y=4,5,6;,enddata,数据部分的未知数值,有时只想为一个集的部分成员的某个属性指定值,而让其余成员的该属性保持未知,以便让,LINGO,去求出它们的最优值。在数据声明中输入两个相连的逗号表示该位置对应的集成员的属性值未知。两个逗号间可以有空格,set
16、s:,years/1.5/:capacity;,endsets,data:,capacity=,34,20,;,enddata,属性,capacity,的第,2,个和第,3,个值分别为,34,和,20,,其余的未知,模型的初始部分,初始部分是,LINGO,提供的另一个可选部分。在初始部分中,可以输入,初始声明,(,initialization statement,),和数据部分中的数据声明相同。对实际问题的建模时,初始部分并不起到描述模型的作用,在初始部分输入的值仅被,LINGO,求解器当作初始点来用,并且仅仅对非线性模型有用。和数据部分指定变量的值不同,,LINGO,求解器可以自由改变初始部
17、分初始化的变量的值。,一个初始部分以“,init:”,开始,以“,endinit”,结束。初始部分的初始声明规则和数据部分的数据声明规则相同。也就是说,我们可以在声明的左边同时初始化多个集属性,可以把集属性初始化为一个值,可以用问号实现实时数据处理,还可以用逗号指定未知数值。,init:,X,Y=0,.1;,endinit,Y=log(X);,X2+Y2=1;,好的初始点会减少模型的求解时间。,运算符及其优先级,算术运算符,:,+,(加法),,(减法或负号),,*,(乘法),,/,(除法),,(,求幂,),关系运算符,:,(即,(即,=,,大于等于,),逻辑运算符,:,#,AND#,(,与),
18、OR#,(,或),,#,NOT#,(,非),,#,EQ#,(,等于),,#,NE#,(,不等于),,#,GT#,(,大于),,#,GE#,(,大于等于),,#,LT#,(,小于),,#,LE#,(,小于等于)。结果只有“真”(,1,),和“假”(,0,),两个值,LINGO,函数一览,(1),LINGO,函数一览,(2),LINGO,函数一览,(3),LINGO,函数一览,(4),LINGO,函数一览,(5),LINGO,函数一览,(6),smax,(x1,x2,xn,),给定一个直角三角形,求包含该三角形的最小正方形,for,函数,产生序列,1,4,9,16,25,sum,函数,求向量
19、5,,,1,,,3,,,4,,,6,,,10,前,5,个数的和,该函数用来产生对集成员的约束。基于建模语言的标量需要显式输入每个约束,不过,for,函数允许只输入一个约束,然后,LINGO,自动产生每个集成员的约束,该函数返回遍历指定的集成员的一个表达式的和,min,和,max,求向量,5,,,1,,,3,,,4,,,6,,,10,前,5,个数最小值,后,3,个数最大值,返回指定的集成员的一个表达式的最小值或最大值,通过文件输入输出数据,通过文件输入输出数据可以将,LINGO,程序和程序处理的数据分离开来。,“,程序和数据的分离,”,是结构化程序设计、面向对象编程的基本要求。,实际问题通常需
20、要处理大规模的实际数据,而这些数据通常都是在其它应用系统中生成的,或者已经存放在其它应用系统中的某个文件或数据库中。,LINGO,计算的结果需要以文件方式提供给其它应用系统使用。,1.,通过,WINDOWS,剪贴板传递数据,粘贴命令,(,Edit|Paste,),特殊粘贴命令,(,Edit|Paste Special,),粘贴命令,(,Edit|Paste,),将,WORD,文件或其他外部文件中的数据拷贝到,Windows,剪贴板,在,LINGO,程序中直接粘贴到需要的地方,步骤,:,注意,:,粘贴的数据保持了,WORD,表格的风格,且,LINGO,能够正常识别甚至编辑其字体等。,由于,LIN
21、GO,对集合的属性是按列赋值的,所以在外部文件中的数据与实际需要复制的数据可能发生行列颠倒的情况,需进行调整。,类似的方法也可以将,LINGO,程序中的数据复制到其他外部文件中。,2.,通过文本文件传递数据,通过文本文件输入数据,FILE(filename),通过文本文件输出数据,TEXT(filename),通过文本文件输入数据,FILE,函数通常可以在集合段和数据段使用,但不允许嵌套使用。,调用格式:,FILE(filename),filename,为存放数据的文件名(可以包含完整的路径名,或表示在当前目录下寻找这个文件),数据文件中记录之间必须用,“,”,分开,MODEL:,SETS:,
22、MYSET/,FILE(myfile.txt,)/:,FILE(myfile.txt,);,ENDSETS,MIN=SUM(MYSET(I):,SHIP(I)*COST(I);,FOR(MYSET(I):,CON1 SHIP(I)NEED(I);,CON2 SHIP(I)SUPPLY(I);,DATA:,COST=,FILE(myfile.txt,);,NEED=,FILE(myfile.txt,);,SUPPLY=,FILE(myfile.txt,);,TEXT(result.txt,)=SHIP,DUAL(SHIP),DUAL(CON1);,ENDDATA,END,myfile.txt,文
23、件,的内容、格式:,Seattle,Detroit,Chicago,Denver,COST,NEED,SUPPLY,SHIP,12,28,15,20,1600,1800,1200,1000,1700,1900,1300,1100,通过文本文件输出数据,TEXT,函数通常只在数据段使用,调用格式:,TEXT(filename),它用于数据段中将解答结果送到文本文件,filename,中,,当省略,filename,时,结果送到标准的输出设备(通常就是屏幕),Filename,可以使用相对路径或绝对路径,若文件已经存在,,则覆盖原文件,例:,TEXT(exam0403.txt)=write(,4*
24、Value,12*,Dual,13*,Decrease,8*,Increase,newline,(2),);,TEXT(exam0403.txt)=write(Variables:,newline,(2);,TEXT(exam0403.txt)=,Ordered,DUAL(Ordered),RANGED(ordered),RANGEU(ordered),;,TEXT(exam0403.txt)=write(,newline,(1),NEED Constraints:,newline,(2);,TEXT(exam0403.txt)=CON1,DUAL(CON1),RANGED(CON1),RA
25、NGEU(CON1);,TEXT(exam0403.txt)=write(,newline,(1),SUPPLY Constraints,:,newline,(2);,TEXT(exam0403.txt)=CON2,DUAL(CON2),RANGED(CON2),RANGEU(CON2);,TEXT(exam0403.txt)=write(,newline,(1),Final status for exam0403:,status(),if(status(),(Maybe Not Global Optimal),(Global Optimal),newline,(1);,Lingo,程序,ex
26、am0403.LG4,(,部分),:,输出表头,并换行,输出变量,Ordered,的,最优解、对偶价格、敏感性分析,根据,status(),的值,输出是否全局最优,函数,RANGED,RANGEU,输出敏感性分析信息,但,LINGO,的缺省设置是不进行敏感性分析的,因此,必须进行设置,这个选项在,OPTIONS|General Solver,最重要的是理解“集合”(,SET,),及其“属性”(,Attribute,),的概念,例,1,:,SAILCO,公司需要决定下四个季度的帆船生产量。,下四个季度的帆船需求量分别是,40,条,,60,条,,75,条,,25,条,这些需求必须按时满足。每个季度
27、正常的生产能力是,40,条帆船,每条船的生产费用为,400,美元。如果加班生产,每条船的生产费用为,450,美元。每个季度末,每条船的库存费用为,20,美元。,假定生产提前期为,0,,初始库存为,10,条船。如何安排生产可使总费用最小?,用,DEM,RP,OP,INV,分别表示需求、正常生产的产量、加班生产的产量、库存量,则,DEM,RP,OP,INV,对每个季度都应该有一个对应的值,也就说他们都应该是一个由,4,个元素组成的数组,其中,DEM,是已知的,而,RP,OP,INV,是未知数。,目标函数,:,约束条件,1,(,能力限制,),:,RP(I)40,,,I=1,2,3,4;,约束条件,2
28、产品数量的平衡方程,),:,INV(I)=INV(I-1)+RP(I)+OP(I)-DEM(I),I=1,2,3,4;,INV(0)=10;,约束条件,3,:,变量的非负约束,利用数组的概念,QUARTERS=,1,,,2,,,3,,,4,称为集合,,DEM,RP,OP,INV,称为该集合的属性,MODEL,:,SETS,:,QUARTERS/1.4/:DEM,RP,OP,INV;,!,定义集合及其属性,;,ENDSETS,DATA,:,DEM=40,60,75,25;,ENDDATA,!,初始段省略,;,MIN,=,SUM,(QUARTERS:400*RP+450*OP+20*INV)
29、目标函数,;,FOR,(QUARTERS(I):RP(I)1,基本集合与派生集合,例,建筑工地的位置,(,用平面坐标,a,b,表示,距离单位:公里,),及水泥日用量,d,(,吨,),下表给出。有两个临时料场位于,P(5,1),Q(2,7),日储量各有,20,吨。从,A,B,两料场分别向各工地运送多少吨水泥,使总的吨公里数最小。两个新的料场应建在何处,节省的吨公里数有多大?,a,1.25,8.75,0.5,5.75,3,7.25,b,1.25,0.75,4.75,5,6.5,7.75,d,3,5,4,7,6,11,建立模型,记工地的位置为 ,水泥日用量为 ;料场位置为 ,日储量为 ;从料
30、场 向工地 的运送量为 。,使用现有临时料场时,决策变量只有 (非负),所以这是,LP,模型;当为新建料场选址时决策变量为 和 ,由于目标函数 对 是非线性的,所以在新建料场时是,NLP,模型。先解,NLP,模型,而把现有临时料场的位置作为初始解告诉,LINGO,。,输入程序,定义了三个集合,其中,LINK,在前两个集合,DEMAND,和,SUPPLY,的基础上定义,表示集合,LINK,中的元素就是集合,DEMAND,和,SUPPLY,的元素组合成的有序二元组,,从数学上看,LINK,是,DEMAND,和,SUPPLY,的笛卡儿积,也就是说,LINK=,(,S,,,T,),|SDEMAND,,
31、TSUPPLY,因此,其属性,C,也就是一个,6*2,的矩阵(或者说是含有,12,个元素的二维数组)。,LINGO,建模语言也称为矩阵生成器(,MATRIX GENERATOR,)。类似,DEMAND,和,SUPPLY,直接把元素列举出来的集合,称为,基本集合,(primary set),而把,LINK,这种基于其它集合而派生出来的二维或多维集合称为,派生集合,(derived set),。由于是,DEMAND,和,SUPPLY,生成了派生集合,LINK,,所以,DEMAND,和,SUPPLY,称为,LINK,的,父集合,。,输入程序,初始段,INGO,对数据是按列赋值的,语句的实际赋值顺序
32、是,X=(5,2),Y=(1,7),而不是,X=(5,1),Y=,(,2,7),等价写法:,“,X=5,2,;,Y=1,7,;”,同理,数据段中对常数数组,A,,,B,的赋值语句也可以写成,A,B=1.25,1.25,8.75 0.75 0.5 4.75 5.75 5 3 6.5 7.25 7.75,;,输入程序,定义目标和约束,与前例的方法是类似,(,这里包含了派生集合,),,请特别注意进一步体会集合函数,SUM,和,FOR,的用法。,由于新建料场的位置理论上讲可以是任意的,所以在约束的最后,(,模型的“,END”,语句上面的一行,),用,free,函数取消了变量,X,、,Y,的非负限制,在
33、程序开头用,TITLE,语句对这个模型取了一个标题“,LOCATION PROBLEM,;并且对目标行(,OBJ,)和两类约束(,DEMAND_CON,、,SUPPLY_CON,)分别进行了命名,(,请特别注意这里约束命名的特点,),。,局部最优解,X(1)=7.249997,,,X(2)=5.695940,,,Y(1)=7.749998,,,Y(2)=4.928524,,(,略),最小运量,=89.8835(,吨公里,),NLP,中局部最优解,不一定,就是全局最优解,在,help,中有这样的叙述:,“,Thus,when a nonlinear model is solved,we say
34、the solution is merely a local optimum,and the user must be aware other local optimums may,or may not,exist with better objective values.”,第一步,:,利用,LINGO|Options,”,菜单命令激活全局最优求解程序,第二步,:,为减少计算工作量,对,X,,,Y,的取值再做一些限制。由于最佳料场位置至少不应该超出现在,6,个工地所决定的坐标的最大、最小值决定的矩形之外,即,:,0.5=,x=8.75,0.75=y=7.75,.,可以加上,bnd,函数,最优
35、解,X(1)=3.2549,,,X(2)=7.2500,,,Y(1)=5.6526,,,Y(2)=7.7500,,,最小运量,=85.26(,吨公里,),把料厂,P(5,1),Q(2,7),的位置看成是已知并且固定的,这时是,LP,模型。只需把初始段的“,X Y=5,,,1,,,2,,,7,;”,移到数据段就可。此时,得到全局最优解,最小运量,136.2275,(,吨公里,),稠密集合与稀疏集合,若派生集合是基本集合构成的笛卡儿积,则称它为,稠密集合,;,派生集合的元素可以只是这个笛卡儿积的一个真子集合,这种派生集合称为,稀疏集合,例,3,最短路问题 在公路网中,司机希望找到一条从一个城市到另
36、一个城市的最短路,.,假设图,表示的是该公路网,节点表示货车可以停靠的城市,弧上的权表示两个城市之间的距离(百公里),.,那么,货车从城市,S,出发到达城市,T,如何选择行驶路线,使所经过的路程最短,?,S,到,T,的最优行驶路线,P,先求出从,S,到,C,k,(,k,=1,2),的最优行驶路线,0,S,到,B,j,(,j,=1,2),的最优行驶路线,S,到,A,i,(,i,=1,2,3),的最优行驶路线,(,易求,),模型的建立,记,d,(,Y,X,),为城市,Y,与城市,X,之间的直接距离(若这两个城市之间没有道路直接相连,则可以认为直接距离为无穷大),用,L,(X),表示城市,S,到城市
37、X,的最优行驶路线的路长,则,:,从,S,到,T,的行驶过程分成,4,个阶段,即,S,A,i,(,i,=1,2,或,3),A,i,B,j,(,j,=1,或,2),B,j,C,k,(,k,=1,或,2),C,k,T,从,S,到,T,的最优行驶路线的路长为,20,(进一步分析,可以得到从,S,到,T,的最优行驶路线为,S,A3,B2,C1,T,),定义稀疏集合,ROADS,方法,:,元素枚举法,另一种定义稀疏集合的方法,:“,元素过滤”法,匹配(,MATCHING,),问题,:,8,名同学准备分成,4,个调查队(每队两人)前往,4,个地区进行社会调查。设两两之间组队的效率如表,所示(由于对称性只
38、列出了上三角部分),问如何组队可以使总效率最高?,BENEFIT,为,效率矩阵,,,MATCH,(,Si,,,Sj,),=1,表示,Si,,,Sj,组成一队,,0,表示不组队。由于对称性只需考虑,ij,共,32,个,0-1,变量。,目标函数为,BENEFIT,(,Si,,,Sj,),*,MATCH,(,Si,,,Sj,),之和;约束条件是每个同学只能(而且必须在)某一组,即对于任意,i,有:只要,MATCH,属性的某个下标为,i,就加起来,此和,=1,。显然,这是一个,0-1,线性规划,由于,MATCH,变量中多数为,0,setname,/member_list/:attribute_list;,其中,setname,为定义的集合名,,member_list,为元素列表,,attribute_list,为属性列表,显式,:,CITIES/1,2,3,4/:L,隐式,:,CITIES/1.4/:L,当元素列表不在集合定义中出现时,则必须在程序的数据段以赋值语句的方式直接给出元素列表,派生集合一般定义格式为,:,setname,(parent_set_list)/member_list/:attribute_list;,称,parent_set_list,为,父集合列表,此,部分结束,






