Lingo软件入门.pdf
文本预览下载声明
第3 讲 Lingo 软件入门
司守奎
烟台市,海军航空工程学院数学教研室
Email :sishoukui@163.com
1 Lingo 软件的基本语法
1.1 集合
集合部分的语法为
sets:
集合名称 1/成员列表1/:属性1_1,属性1_2,…,属性1_n1;
集合名称2/成员列表2/ :属性2_1,属性2_2,…,属性2_n2 ;
派生集合名称(集合名称 1,集合名称2 ):属性3_1 ,…,属性3_n3;
endsets
例26
sets:
product/A B/;
machine/M N/;
week/1..2/;
allowed(product,machine,week):x;
endsets
1.2 数据
数据部分的语法为
data:
属性1=数据列表;
属性2=数据列表;
enddata
1.3 计算
计算段部分不能含有变量,必须是已知数据的运算。
calc:
b=0;
a=a+1;
endcalc
1.4 模型的目标函数和约束条件
这里就不具体给出了,下面通过具体例子给出。
1.5 子模型
在 LINGO 9.0 及更早的版本中,在每个LINGO 模型窗口中只允许有一个优化模型,
可以称为主模型(MAIN MODEL )。在LINGO 10.0 中,每个LINGO 模型窗口中除了主模
型外,用户还可以定义子模型(SUBMODEL) 。子模型可以在主模型的计算段中被调用,这
就进一步增强了LINGO 的编程能力。
子模型必须包含在主模型之内,即必须位于以“MODEL: ”开头、以“END ”结束的模
块内。同一个主模型中,允许定义多个子模型,所以每个子模型本身必须命名,其基本语法
是:
SUBMODEL mymodel:
可执行语句(约束+ 目标函数);
ENDSUBMODEL
其中 mymodel 是该子模型的名字,可执行语句一般是一些约束语句,也可能包含目标函数,
但不可以有自身单独的集合段、数据段、初始段和计算段。也就是说,同一个主模型内的变
量都是全局变量,这些变量对主模型和所有子模型同样有效。
如果已经定义了子模型 mymodel ,则在计算段中可以用语句“@SOLVE( mymodel); ”
求解这个子模型。
2 Lingo 函数
2.1 算术运算符
1
^ 乘方
﹡ 乘
/ 除
﹢ 加
﹣ 减
2.2 逻辑运算符
在Lingo 中,逻辑运算符主要用于集循环函数的条件表达式中,来控制在函数中哪些集
成员被包含,哪些被排斥。在创建稀疏集时用在成员资格过滤器中。
Lingo 具有9种逻辑运算符
#not# 否定该操作数的逻辑值,#not #是一个一元运算符。
#eq# 若两个运算数相等,则为true ;否则为false 。
#ne# 若两个运算符不相等,则为true ;否则为false 。
#gt# 若左边的运算符严格大于右边的运算符,则为true ;否则为false 。
#ge# 若左边的运算符大于或等于右边的运算符,则为true ;否则为false 。
#lt# 若左边的运算符严格小于右边的运算符,则为true ;否则为false 。
#le# 若左边的运算符小于或等于右边的运算符,则为true ;否则为false 。
#and# 仅当两个参数都为true 时,结果为true ;否则为false 。
#or# 仅当两个参数都为false 时,结果为false ;否则为true 。
2.3 关系运算符
在Lingo 中,关系运算符主要是被用在模型中来指定一个表达式的左边是否等于、小于
等于、或者大于等于右边,形成模型的一个约束条件。关系运算
显示全部