第十章 LINGO软件使用简介及技巧

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

三个农场达成协议,他们的播种面积与其可灌 溉面积相等,而各农场种何种作物并无限制.问如何 制定各农场种植计划才能在上述限制条件下,使本 地区的三个农场的总净收益最大.
目录 上页 下页 返回 结束
解 设农场1种植的甜菜、棉花和高粱分别为 x 11 , x 12 , x 13亩,农场2种植的甜菜、棉花和高粱分 别为 x 21 , x 22 , x 23 亩,农场3种植的甜菜、棉花和 高粱分别为 x 31 , x 32 , x 33亩. 设三个农场可耕地分别为
s0 0 y1 y 2 y 3 5 0 0 z1 z 2 z 3 3 2 5 x1 y 1 z 1 4 0 0 x2 y2 z2 600 x3 y3 z3 3 0 0 3 x1 2 y 1 z 1 6 0 0 3 x2 2 y2 z2 800 3 x3 2 y3 z3 3 7 5 x1 , x 2 , x 3 , y 1 , y 2 , y 3 , z 1 , z 2 , z 3 0
目录 上页 下页 返回 结束
x2 , y2 , z2
得到结果如下: X(1,1)=0,X(1,2)=300,X(1,3)=0 X(2,1)=258.3333,X(2,2)=12.5,X(2,3)=0 X(3,1)=0,X(3,2)=187.5,X(3,3)=0 最大总净收益为253333.3元. 对本题来说,由于数据少,可以不采用数组形式, 而直接采用变量表示,建立模型如下: 设农场1种植的甜菜、棉花和高粱分别为
一、LINGO使用介绍 二、利用LINGO求解优化模型实例 三、LINGO调用VC编写的函数动态库技巧
目录 上页 下页 返回 结束
LINGO是一种专门用于求解数学规划问题的 软件包. 广泛应用LINGO主要用于求解线性规划、非 线性规划、二次规划和整数规划等问题,也可以 于求解一些线性和非线性方程组及代数方程求根等. 本章介绍的LINGO可在LINGO5.0,Ling8.0, Ling9.0等版本中使用.
目录 上页 下页 返回 结束
2.2 集合函数 用法: set_operator (set_name|condition:expression) 其中set_operator部分是集合函数名, set_name是数 据集合名, expression部分是表达式, condition部 分是条件,用逻辑表达式描述(无条件时可省略).
x1 , y 1 , z 1
亩,农场2种植的甜菜、棉花和高粱分别为x 2 , y 2 , z 2 亩,农场3种植的甜菜、棉花和高粱分别为 x 3 , y 3 , z 3 亩.
目录 上页 下页 返回 结束
根据题目条件,可建立如下线性模型:
m a x Z 4 0 0 ( x1 x 2 x 3 ) 3 0 0 ( y 1 y 2 y 3 ) 1 0 0 ( z 1 z 2 z 3 )
目录 上页 下页 返回 结束
二、利用LINGO求解优化模型实例
1.某昼夜服务的公交路线每天各时间区段内需 司机和乘务人员如下: 班次 1 2 3 4 5 6 时间 6:00—10:00 10:00—14:00 14:00—18:00 18:00—22:00 22:00—2:00 2:00—6:00
目录 上页 下页 返回 结束
编写LINGO程序要注意: (1) 所有的语句除SETS、ENDSETS、DATA、 ENDDATA、 INIT、ENDINIT 和 MODEL,END 之外必须以一个分号“;”结尾. (2) LINGO求解非线性规划时已约定各变量非负. 2. LINGO内部函数使用详解.
目录 上页 下页 返回 结束
LINGO编程如下:
MODEL: SETS: place/1..3/:a,b; kind/1..3/:c,d,e; plan(place,kind):x; ENDSETS DATA: a=400,600,300; b=600,800,375; c=600,500,325; d=3,2,1; e=400,300,100; ENDDATA max=@sum(kind(j):e(j)*@sum(place(i):x(i,j))); @for(kind(j):@sum(place(i):x(i,j))<=c(j)); @for(place(i):@sum(kind(j):x(i,j))<=a(i)); @for(place(i):@sum(kind(j):d(j)*x(i,j))<=b(i)); END
Z
6

i 1
xi
按所需人数最少的要求,可得到线性模型如下:
6
m in Z

i 1
xi
目录 上页 下页 返回 结束
s .t .
x1 x 6 6 0 x1 x 2 7 0 x2 x3 6 0 x3 x 4 5 0 x4 x5 2 0 x5 x6 3 0 x1 , x 2 , , x 6 0
目录
上页
下页
返回
结束
LINGO程序如下:
MODEL: max=400*(x1+x2+x3)+300*(y1+y2+y3)+100*(z1+z2+z3); x1+x2+x3<=600; y1+y2+y3<=500; z1+z2+z3<=325; x1+y1+z1<=400; x2+y2+z2<=600; x3+y3+z3<=300; 3*x1+2*y1+z1<=600; 3*x2+2*y2+z2<=800; 3*x3+2*y3+z3<=375; END
LINGO程序如下:
MODEL: min=x1+x2+x3+x4+x5+x6; x1+x6>=60;x1+x2>=70;x2+x3>=60;x3+x4>=50;x4+x5>=20;x5+x6>=30; END
目录 上页 下页 返回 结束
得到的解为: x1=60,x2=10,x3=50,x4=0,x5=30,x6=0; 配备的司机和乘务人员最少为150人. 2. 某地区有三个农场共用一条灌渠,每个农
LINGO建立优化模型时可以引用大量的内部函数,
这些函数以“@”符号打头.
目录 上页 下页 返回 结束
2.1 常用数学函数 @ABS(X) 返回变量X的绝对数值. @COS( X) 返回X的余弦值,X的单位为弧度. @EXP( X) 返回ex的值,其中e为自然对数的底,
即 2 . 71828 @FLOOR( X)向0靠近返回X的整数部分. 如@FLOOR(3.7),则返回3;@FLOOR(-3.7),则 返回-3. @LGM( X) 返回 函数的自然对数值.
@LOG( X) 返回变量X的自然对数值.
目录 上页 下页 返回 结束
@SIGN( X) 返回变量X的符号值,当X<0时 为-1;当X>0时为1. @SIN(X) 返回X的正弦值,X的单位为弧度. @SMAX(X1,X2,...,XN) 返回一列值X1,X2, ...,XN的最大值. @SMIN(X1,X2,...,XN) 返回一列值X1,X2, ...,XN的最小值. @TAN(X) 返回X的正切值,X的单位为弧度.
目录
最少需要人数 60 70 60 50 20 30
上页 下页 返回 结束
设司机和乘务人员分别在各时间区段一开始上班, 并连续工作八小时,问该公交线路至少配备多少名司 机和乘务人员?从第一班开始排,试建立线性模型. 解 设 x i 为第i 班应报到的人员( i =1,2,„,6),则应配备 人员总数为:
a 1 400 , a 2 600 , a 3 300
其最大用水量分别为b 1 600 ,b 2 800 ,b 3 其甜菜、棉花和高粱的种植限额分别为
c 1 600 , c 2 500 , c 3 325
目录 上页 下页 返回
375
结束
其耗水量分别为d 1 3 , d 2 2 , d 3 1 其净收益分别为 e1 4 0 0 , e 2 3 0 0 , e 3 1 0 0 根据题目条件,可建立如下线性模型:
目录 上页 下页 返回 结束
一、LINGO使用介绍
1. LINGO编写格式 LINGO模型以MODEL开始,以END结束.中间 为语句,分为四大部分(SECTION): (1) 集合部分(SETS):这部分以“SETS:” 开始,以“ENDSETS”结束. 在LINGO中称为集合(SET)及其元素 (MEMBER或ELEMENT,类似于数组的下标)和 属性(ATTRIBUTE,类似于数组).
场的可灌溉地及分配到的最大用水量如下表:
农场 1 2 3 可灌溉地(亩) 最大用水量(百立方) 400 600 300
目录
600 800 375
上页 下页 返回 结束
各农场均可种植甜菜、棉花和高粱三种作物, 各种作物的用水量、净收益及国家规定的该地区各 种作物种植总面积最高限额如下表:
作物种类 种植限额(亩) 耗水量(百立方/亩) 净收益(元/亩) 甜菜 棉花 高粱 600 500 325 3 2 1 400 300 100
目录 上页 下页 返回 结束
@SIZE(set_name)返回数据集set_name中包 含元素的个数. @IN(set_name,set_element)如果数据集 set_name中包含元素set_element则返回1,否则返回0. 2.3 变量界定函数 变量函数对变量的取值范围附加限制,共有四种. @BND(L,X,U)限制LXU. @BIN(X)限制X为0或1. @FREE(X)取消对X的符号限制(即可取任意 实数值). @GIN(X)限制X为整数值.
目录 上页 下页 返回 结束
LINGO中的集合有两类:一类是原始集合
(PRIMITIVE SETS),其定义的格式为:
SETNAME/member list(or 1..n)/: attribute,attribute,etc. 另一类是导出集合(DERIVED SETS),即 引用其它集合定义的集合,其定义的格式为:
目录下页返回上页结束某企业和用户签定了设备交货合同已知该企业各季度的生产能力每台设备的生产成本和每季度末的交货量见下表若生产出的设备当季度不交货每台设备每季度需要支付保管费01万元试问在遵守合同的条件下企业应如何安排生产计划才能使年消耗费用最低
数学建模简明教程
国家精品课程
第十章 LINGO软件使用 简介及技巧
3 3
m ax Z

j 1
(e
j

i 1
x ij )
j 1, 2 , 3
s .t .
3 x ij c j i 1 3 x ij a i j 1 3 d j x ij b i j 1
i 1, 2 , 3
i 1, 2 , 3
SETNAME(set1,set2,etc.):
attribute,attribute,etc.
目录 上页 下页 返回 结束
(2) 目标与约束:这部分定义了目标函数、约束
条件等.一般要用到LINGO的内部函数.
(3) 数据部分(DATA):这部分以“DATA:” 开始,以“END DATA”结束. 其作用在于对集合的属性(数组)输入必要的数 值.格式为:attribute=value_list.该部分主要是方便数 据的输入. (4) 初始化部分(INIT):这部分以“INIT:”开 始,以“END INIT”结束.作用在于对集合的属性 (数组)定义初值.格式为:attribute=value_list.
逻辑表达式中可以三种逻辑算符(#AND#(与), #OR#(或),#NOT#(非))和六种关系算符 (#EQ#
(等于),#NE#(不等于),#GT#(大于),#GE# (大于等于),#LT#(小于), #LE#(小于等于))
目录 上页 下页 返回 结束
常见的集合函数如下: @FOR (set_name:constraint_expressions)对集 合(set_name)的每个元素独立地生成约束,约束由 约束表达式(constraint_expressions)描述. @MAX(set_name:expression)返回集合上的 表达式(expression)的最大值. @MIN(set_name:expression)返回集合上的 表达式(expression)的最小值. @SUM(set_name:expression)返回集合上的 表达式(expression)的和.
相关文档
最新文档