LINGO基本语法和编程 PPT.ppt
上传人:王子****青蛙 上传时间:2024-09-14 格式:PPT 页数:63 大小:2.9MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

LINGO基本语法和编程 PPT.ppt

LINGO基本语法和编程PPT.ppt

预览

免费试读已结束,剩余 53 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第3讲:LINGO基本语法和编程LINGO程序的基本结构LINGO中的集合LINGO中的简化函数LINGO中的运算符LINGO程序基本结构LINGO程序基本结构LINGO模型的基本结构(2)数据段(DATA):以“DATA:”开始,“ENDDATA”结束,对集合的属性(数组)输入必要的常数数据。格式为:“attribute(属性)=value_list(常数列表);”常数列表(value_list)中数据之间可以用逗号“,”分开,也可以用空格分开(回车等价于一个空格),如:(3)初始段(INIT):以“INIT:”开始,“ENDINIT”结束,对集合的属性(数组)定义初值(因为求解算法一般是迭代算法,所以用户如果能给出一个比较好的迭代初值,对提高算法的计算效果是有益的)。如果有一个接近最优解的初值,对LINGO求解模型是有帮助的。定义初值的格式为:“attribute(属性)=value_list(常数列表);”这与数据段中的用法是类似的。大家应该也有点累了,稍作休息(4)计算段(CALC):以“CALC:”开始,“ENDCALC”结束,对一些原始数据进行计算处理。在实际问题中,输入的数据通常是原始数据,不一定能在模型中直接使用,可以在这个段对这些原始数据进行一定的“预处理”,得到模型中真正需要的数据。(5)目标与约束段:目标函数、约束条件等,没有段的开始和结束标记,因此实际上就是除其它四个段(都有明确的段标记)外的LINGO模型。这是Lingo程序最重要的部分。一个简单的LINGO程序输出结果:输出结果备注:一个复杂一些的LINGO程序程序如下:输出结果集合的基本用法问题的模型(可以看出是LP模型)由于LINGO中没有数组,只能对每个季度分别定义变量,如正常产量就要有RP1,RP2,RP3,RP44个变量等。写起来就比较麻烦,尤其是更多(如1000个季度)的时候。记四个季度组成的集合QUARTERS={1,2,3,4},它们就是上面数组的下标集合,而数组DEM,RP,OP,INV对集合QUARTERS中的每个元素1,2,3,4分别对应于一个值。LINGO正是充分利用了这种数组及其下标的关系,引入了“集合”及其“属性”的概念,把QUARTERS={1,2,3,4}称为集合,把DEM,RP,OP,INV称为该集合的属性(即定义在该集合上的属性)。集合元素及集合的属性确定的所有变量LINGO中定义集合及其属性基本集合与派生集合建立模型本例中集合的概念输入程序输入程序输入程序解答:运行菜单命令“LINGO|Solve”问题:最小运量89.8835是不是全局最优计算结果稠密集合与稀疏集合分析本例的计算本例的LINGO求解本例的LINGO求解本例的LINGO求解本例的LINGO求解结果例某班8名同学准备分成4个调查队(每队两人)前往4个地区进行社会调查。这8名同学两两之间组队的效率如下表所示(由于对称性,只列出了严格上三角部分),问如何组队可以使总效率最高?分析问题的LINGO求解LINGO求解结果集合的使用小结基本集合的定义语法元素列表和属性列表都是可选的。当属性列表不在集合定义中出现时,这样的集合往往只是为了将来在程序中作为一个循环变量来使用,或者作为构造更复杂的派生集合的父集合使用(匹配问题中的集合STUDENTS没有属性列表)。而当元素列表不在基本集合的定义中出现时,则必须在程序的数据段以赋值语句的方式直接给出元素列表。例如,前例中SAILCO公司决定四个季度的帆船生产量模型的集合段和数据段可以分别改为:SETS:QUARTERS:DEM,RP,OP,INV;!注意没有给出集合的元素列表;ENDSETSDATA:QUARTERSDEM=140260375425;!注意LINGO按列赋值的特点;ENDDATA派生集合的定义语法在LINGO中的简化函数Lingo程序中最重要的两个函数:目标函数求和:对下标变量QUARTER,后面的算式进行求和Link为二维数组,所以这里可以直接对二维数组中所有的元素求和,当然也可以转为两个以为数组的求和形式。这时候是嵌套使用。当二维数组为稀疏数组时,相应的求和为数组定义中已定义的数组元素的求和。循环函数@FOR(集合(下标):关于集合的属性的约束关系式)每一个For循环实际上对应很多条约束。For循环可与SUM嵌套,但一定是For在外,SUM在内,不可能SUM中配For循环,语法不符,另一方面Sum潜在有循环的功能。任意I和J,match(i,j)为0或1,这里可以用二维下标。For循环中同样可以对下标执行限制操作,称为过滤条件。其它常用函数运算符及其优先级逻辑运算符关系运算符