lingo软件使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、基本语法---程序结构的三个部分
◆ 数据部分 以关键字“data:” 开始,以“enddata” 对 结定 束义部分所定义的每一个已知的数组,按 数组名1 = ……(具体数据); 数组名2 = ……(具体数据);
的格式给出数据,凡是未给出数据的数组,均看 作未知数组进行求解
例 data: yz=13 250 1 54 8 250 67 90 23 125;
循环域附加条件
循环体
一、基本语法--- Lingo的内部函数
集循环函数名分为下列四个 @for
该函数对集合名中满足条件的成员执行循环
体,用来表示具有某些共同特征的约束条件 @sum
该函数对集合名中满足条件的成员计算某个 表达式的和 @min 和 @max
该函数对集合名中满足条件的成员计算某个 表达式的最小值或最大值
#and# 仅当两个参数都为true时,结果为true; 否则为flase
#or# 仅当两个参数都为false时,结果为false; 否则为true
一、基本语法--- Lingo的内部函数
◆ 关系运算符 “=” 表示等于关系 “<=” 表示小于等于关系 “>=” 表示大于等于关系
◆ 数学函数 @abs(x) 返回x的绝对值 @sin(x) 返回x的正弦值,x采用弧度Leabharlann Baidu @cos(x) 返回x的余弦值 @tan(x) 返回x的正切值 @exp(x) 返回常数e的x次方
LinGo软件的使用
一、基本语法 二、编程举例 三、编程练习
编程示例
model: sets: cd/1..6/:ai; xd/1..8/:bj; dwyj(cd,xd):cij,xij; endsets min=@sum(dwyj:cij*xij); @for(xd(j):@sum(cd(i):xij(i,j))=bj(j)); @for(cd(i):@sum(xd(j):xij(i,j))<=ai(i)); @for(dwyj(i,j):@gin(xij(i,j))); data: ai=60 55 51 43 41 52; bj=35 37 22 32 41 32 43 38; cij=6 2 6 7 4 2 5 9 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3
endsets
一、基本语法---程序结构的三个部分
例 sets: city/1..10/: yz; factory/1..60/; cifa(city,factory):cf1,cf2,cf3;
endsets
说明:上例中定义了三个10行60列的二维数组
cf1,cf2,cf3,其中集名city,factory均称为原生集,
一、基本语法--- Lingo的内部函数

sets: city/1..10/: yz; factory/1..6/:jgc; cifa(city,factory):xij;
endsets @for(city(i)|i#le#8:@sum(factory(j) :jgc(j)*x(i,j)<=yz(i)); minyz=@min(city(i)| i#le#8:yz(i)); maxyz=@max(city(i)| i#gt#6:yz(i)); data:
为true;否则为flase
一、基本语法--- Lingo的内部函数
#ge# 左边的运算符大于或等于右边的运算符, 则为true;否则为flase
#lt# 左边的运算符严格小于右边的运算符,则 为true;否则为flase
#le# 左边的运算符小于或等于右边的运算符, 则为true;否则为flase
一、基本语法--- Lingo的内部函数
@log(x) 返回x的自然对数 @sign(x) 如果x<0返回-1;否则,返回1 @floor(x) 返回x的整数部分。
当x>=0时,返回不超过x的最大整; 当x<0时,返回不低于x的最大整数。 @smax(x1,x2,…,xn)
返回x1,x2,…,xn中的最大值 @smin(x1,x2,…,xn)
7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata end
一、基本语法
1. 基本格式 ◆ 程序以“model:” 开始,以“end”结束 ◆ 每一句结束后写一个分号“;” ◆ 以“!” 打头,以“;”结尾之间的部分为注 释 ◆ 同一地位下的不同名称用“,”分隔,同一地 位下的不同数据用“ ”分隔
enddata
一、基本语法
3. Lingo的内部函数 ◆ 算术运算符
^ 乘方,﹡ 乘,/ 除,﹢ 加,﹣ 减
◆ 逻辑运算符 #not# 否定该操作数的逻辑值 #eq# 两个运算数相等,则为true;否则为flase #ne# 两个运算符不相等,则为true;否则为flase #gt# 左边的运算符严格大于右边的运算符,则
返回x1,x2,…,xn中的最小值
一、基本语法--- Lingo的内部函数
◆ 集循环函数 集循环函数遍历整个集进行操作。其语法为
@function(setname[(set_index_list)
集循环函数名 集合名 循环控制变量
[|conditional_qualifier]]:expression_list);
集名cifa称为派生集,这是定义二维数组的方法
一、基本语法---程序结构的三个部分
◆ 目标函数与约束条件部分 按模型中的目标函数及约束条件逐句写入
格式:max = …… 或 min =…… 利用lingo中的内部函数组织目标函数及约束 条件的具体内容 例 sets:
factory/1..60/:cost, volume; endsets min=@sum(factory(i): cost(i)*volume(i));
一、基本语法
2. 程序结构的三个部分
◆ 定义部分 以关键字“sets:” 开始,以“endsets” 格结式束:setname[/member_list/][:attribute_list];
集合名 数组维界
数组名列表
例 sets: students/John Jill, Rose Mike/: sex, age; factory/1..60/:A,B,C;
相关文档
最新文档