LINGO模型实例及求解分析
lingo学习例题详细解读
说明本文档一共包含两个个非线性的lingo例题的程序学习其中包含一些数学建模的思想同时对两个例题采取了多种编程方式希望在这种仿真式多角度的编程思想能够给你启发与帮助例题一某公司现有数额为20亿的一笔资金可作为未来5年内的投资资金,市场上有8个投资项目(如股票、债券、房地产、…)可供公司作投资选择。
其中项目1、项目2每年初投资,当年年末回收本利(本金和利润);项目3、项目4每年初投资,要到第二年末才可回收本利;项目5、项目6每年初投资,要到第三年末才可回收本利;项目7只能在第二年年初投资,到第五年末回收本利;项目8只能在第三年年初投资,到第五年末回收本利。
公司财务分析人员给出一组实验数据,见表1(见附录1)。
试根据实验数据确定5年内如何安排投资?使得第五年末所得利润最大?例题一分析针对问题一,这是典型的单目标优化问题,可以利用线性规划模型进行解决。
其目标是在不考虑投资风险的情况下,对20亿投资金进行合理的分配,使得在第五年末的利润达到最大。
将五年中8个项目的投资利润累加起来,得到的就是要求的目标函数,要做的是如何安排五年的投资计划,每年投资哪几个项目,每个项目投资多少,该决策要受到两个方面的约束:(1)各个投资项目的投资上限。
在对任何一个项目的投资周期内,都不能超过该项目的投资上限。
所谓一个投资周期是指从开始投资到第一次获得利润,例如对于项目4,第一年投资30000万元,由于它的运行周期是两年,投资上限是40000万元,所以第二年投资项目4的上限是10000万元。
(2)每年年初用于投资的资金。
由于不同的项目有不同的运行周期,所以在五年内每年都会有利润的产生。
每年年初用于投资的资金都要小于或等于上年末所拥有的资金。
数据5.问题一的解答针对问题一,我们确定模型一5.1 模型一的建立5.1.1 确定目标函数在无风险的情况下对20亿投资资金进行8个项目的投资选择,使得在第五年末的投资利润达到最大,预投资方案如下表五所示:根据上表我们确定出目标函数为:5811max ij j i i W x p ===∑∑5.1.2 确定约束条件 约束一:投资金额的上限⑴ 项目1和项目2每年投资金额的上限ij j x U ≤,其中i =1,2,3,4,5 j =1,2⑵ 项目3和项目4在两年的投资周期内投资金额的上限1,ij i j j x x U -+≤, 其中i =2,3,4 j =3,4⑶ 项目5和项目6在三年的投资周期内投资金额的上限1,2,ij i j i j j x x x U --++≤,其中i =3,4 j =5,6⑷ 项目7只能在第二年年初投资,且投资周期为四年,它的投资上限277x U ≤⑸ 项目8只能在第三年年初投资,且投资周期为三年,它的投资上限388x U ≤约束二:每年年初用于投资的资金 ⑴ 第一年年初用于投资的资金 120R ≤⑵ 第二年年初用于投资的资金21112121314151620R p x p x x x x x ≤++----⑶ 第三年年初用于投资的资金2231122133144151623242526271120x x i i i i R x p x p x p x p x x x x x ==≤++++-------∑∑⑷ 第四年年初用于投资的资金33224112233441551662526273334353638111120i i i i i i i i R x p x p x p x p x p x p x x x x x x x x ====≤++++++--------∑∑∑∑⑸ 第五年年初用于投资的资金443322511223344556627353638434411111120i i i i i i i i i i i i R x p x p x p x p x p x p x x x x x x ======≤++++++------∑∑∑∑∑∑5.1.3 综上所述我们得到问题一的线性规划模型5811max ij j i i W x p ===∑∑这是一个线性规划模型,因此我们利用lingo 软件进行编程求解(求解程序见附录2),解得第五年末的最大利润为23.26亿元,五年内的投资方案如下表五所示:在第一年年初,投资项目1到项目8分别为6亿元、3亿元、4亿元、1.803亿元、0、0.267亿元、0、0;在第二年年初,投资项目1到项目8分别为6亿元、3亿元、0、1.197亿元、0.663亿元、0、4亿元、0;在第三年年初,投资项目1到项目8分别为6亿元、3亿元、1.151亿元、0、2.337亿元、1.733亿元、0、3亿元;在第四年年初,投资项目1到项目8分别为6亿元、0、2.849亿元、3亿元、0、0、0、0;在第五年年初,投资项目1到项目8分别为6亿元、3亿元、0、0、0、0、0、0;5.3 模型一结果分析在模型一中,影响最终利润大小的共有三个因素:预计到期利润率,投资金额的上限,投资资金。
实验利用Lingo求解整数规划和非线性规划问题
三、Lingo 循环编程举例
例5 用Lingo循环编程语句求解线性规划模型
max z 72x1 64x2
x1 x2 50, 132xx1 1180x0,2 480, x1 0, x2 0.
三、划 模型
max z 72x1 64x2
MODEL: SETS: person/A,B,C,D/; task/1..4/; assign(person,task):a,x; ENDSETS DATA: a=1100,800,1000,700,
600,500,300,800, 400,800,1000,900, 1100,1000,500,700; ENDDATA min=@sum(assign:a*x); @for(person(i):@sum(task(j):x(i,j))=1); @for(task(j):@sum(person(i):x(i,j))=1); @for(assign(i,j):@bin(x(i,j))); END
12,8 3,0; enddata
!数据赋值;
max=@sum(bliang(i):a(i)*x(i)); !目的函数;
@for(yshu(j):@sum(bliang(i):x(i)*c(j,i))<=b(j));
!约束条件;
例6、指派问题
企业在各地有4项业务,选定了4位业务员去处理。因为 业务能力、经验和其他情况不同,4业务员去处理4项业 务旳费用(单位:元)各不相同,见下表:
(3) 集合旳循环函数 集合旳循环函数能够使全部旳元素反复完毕某些操作.
函数
函数功能
• 形成集合全部元素需满足旳约
@for
束条件
• 计算集合中元素所在体现式旳
@sum
运用lingo解决问题的例子
运用lingo解决问题的例子
以下是一个运用LINGO解决实际问题的例子:
问题描述:
某公司生产A、B两种产品,已知生产1单位A产品需要3单位原料1和2单位原料2,同时产生2单位废料;生产1单位B产品需要4单位原料1和2单位原料2,同时产生3单位废料。
该公司有10单位原料1和8单位原料2,同时最多可以产生10单位废料。
请为公司制定一个生产计划,使得A、B两种产品的产量最大。
模型建立:
1. 设x1为A产品的产量,x2为B产品的产量。
2. 设原料1的消耗为3x1 + 4x2,原料2的消耗为2x1 + 2x2,废料产生为2x1 + 3x2。
3. 原料1的限制条件为3x1 + 4x2 <= 10,原料2的限制条件为2x1 +
2x2 <= 8,废料的限制条件为2x1 + 3x2 <= 10。
4. 目标函数为max x1 + x2,即最大化A、B两种产品的产量之和。
LINGO代码:
SETS:
I / 1 /;
J / 1,2 /;
K / I,J /;
PARAMETERS:
C(K) / 3I + 4J, 2I + 2J, 2I + 3J /; D(I) / 10 /;
E(I) / 8 /;
F(I) / 10 /;
VARIABLES:
X(K) / >=0 /;
MAXIMIZE Z: X(1) + X(2); SUBJECT TO:
3X(1) + 4X(2) <= D(1);
2X(1) + 2X(2) <= E(1);
2X(1) + 3X(2) <= F(1); ENDSETS
END。
Lingo超经典案例大全
Lingo超经典案例大全Lingo超经典案例大全LINGO是Linear Interactive and General Optimizer的缩写,即“交互式的线性和通用优化求解器〞。
Lingo超强的优化计算能力在许多方面〔线性规划、非线性规划、线性整数规划、非线性整数规划、非线性混合规划、二次规划等〕比matlab、maple等强得多,Lingo编程简洁明了,数学模型不用做大的改动〔或者不用改动〕便可以直接采纳Lingo语言编程,十分直观。
Lingo模型由4个段构成:〔1〕集合段〔sets endsets〕;〔2〕数据段〔data enddata);(3)初始段〔init endinit〕;〔4〕目标与约束段。
Lingo的五大优点:1. 对大规模数学规划,LINGO语言所建模型较简洁,语句不多;2. 模型易于扩展,因为@FOR、@SUM等语句并没有指定循环或求和的上下限,假如在集合定义部分增加集合成员的个数,则循环或求和自然扩展,不需要改动目标函数和约束条件;3. 数据初始化部分与其它部分语句分开,对同一模型用不同数据来计算时,只需改动数据部分即可,其它语句不变;4. “集合〞是LINGO有特色的概念,它把实际问题中的事物与数学变量及常量联系起来,是实际问题到数学量的抽象,它比C语言中的数组用处更为广泛。
5. 使用了集合以及@FOR、@SUM等集合操作函数以后可以用简洁的语句表达出常见的规划模型中的目标函数和约束条件,即使模型有大量决策变量和大量数据,组成模型的语句并不随之增加.一、求解线性整数规划、非线性整数规划问题:1.线性整数规划:model:max=x1+x2;x1+9/14*x20.001;@abs(x2-1)>0.001;end求得x1=2,x2=2.若再次排除这组解,发觉Lingo解不出第三组解了,这时我们可以断定:此优化模型有两组解:x1=3,x2=1和x1=2,x2=2.求解模型时需留意:Lingo中,默认变量均为非负;输出的解可能是最优解中的一组,要推断、检验是否还有其他解〔依据具体问题的解的状况或用排除已知最优解的约束条件法〕。
Lingo软件与数学建模
变量数目:变量总数 (Total)、非线型变量 数(Nonlinear)、整数 变量数(Integer)
约束变量:约束总数 ( Total )、非线性约束 个数(Nonlinear)
非线性系数数量:总数 ( Total )、非线性项的 系数个数(Nonlinear)
内存使用量:单位为千字节
数据多,咋办?
value=1,1.2,0.9,1.1;
enddata
max=@sum(goods:weight*value);
@for(goods:@bin(x));
end
游泳
四名同学的混合泳接 力赛的四种成绩如左 表所示,确定如何分 配使成绩最佳。
蛙蝶自仰 泳泳由泳
泳
甲 99 60 59 73
线性规划
二次规划
非线性规划
LINGO软件的基本操作
双击快捷方式 即可计入程序编辑界面
Lingo软件介绍
➢解决一个简单的线性规划(LP)问题
max z 2x 3y 4x 3y 10
s.t. 3x 5y 12 x, y 0
LINGO软件介绍
点击图标
运行,屏幕上显示运行状态窗口如下: 对于LINGO运行状态窗口,
基 @EXP(X):指数函数(以自然对数e为底),返回eX的值
本 数 学
@ LOG(X):自然对数函数,返回X的自然对数值; @POW(X,Y):指数函数,返回XY的值;
函 @SQR(X):平方函数,返回X2的值;
数 @SQRT( X ):平方根函数,返回X的平方根;
@FLOOR(X):取整函数,返回X的整数部分(向靠近0 的方向取);
@GIN(X):限制X为整数.
0-1规划(线性规划)
运筹学实例分析及lingo求解讲解
运筹学实例分析及lingo 求解一、线性规划某公司有6个仓库,库存货物总数分别为60、55、51、43、41、52,现有8个客户各要一批货,数量分别为35,37,22,32,41,32,43,38。
各供货仓库到8个客户处的单位货物运输价见表试确定各仓库到各客户处的货物调运数量,使总的运输费用最小。
解:设ijx 表示从第i 个仓库到第j 个客户的货物运量。
ij c表示从第i 个仓库到第j 个客户的单位货物运价,i a 表示第i 个仓库的最大供货量,j d 表示第j 个客户的订货量。
目标函数是使总运输费用最少,约束条件有三个:1、各仓库运出的货物总量不超过其库存数2、各客户收到的货物总量等于其订货数量3、非负约束数学模型为:∑∑===6181)(min i j ijij x c x f⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧≥===≤∑∑==08,,2,1,6,2,1,,..6181ij j i ij i j ij x j d x i a x t s 编程如下:model : Sets :Wh/w1..w6/:ai; Vd/v1..v8/:dj;links(wh,vd):c,x;endsetsData:ai=60,55,51,43,41,52;dj=35,37,22,32,41,32,43,38;c=6,2,6,7,4,2,5,94,9,5,3,8,5,8,25,2,1,9,7,4,3,37,6,7,3,9,2,7,12,3,9,5,7,2,6,55,5,2,2,8,1,4,3;EnddataMin=@sum(links(i,j):c(i,j)*x(i,j));@for(wh(i):@sum(vd(j):x(i,j))<=ai(i));@for(vd(j):@sum(wh(i):x(i,j))=dj(j));endGlobal optimal solution found.Objective value: 664.0000Total solver iterations: 0Variable Value Reduced Cost AI( W1) 60.00000 0.000000 AI( W2) 55.00000 0.000000 AI( W3) 51.00000 0.000000 AI( W4) 43.00000 0.000000 AI( W5) 41.00000 0.000000 AI( W6) 52.00000 0.000000 DJ( V1) 35.00000 0.000000 DJ( V2) 37.00000 0.000000 DJ( V3) 22.00000 0.000000 DJ( V4) 32.00000 0.000000 DJ( V5) 41.00000 0.000000 DJ( V6) 32.00000 0.000000 DJ( V7) 43.00000 0.000000 DJ( V8) 38.00000 0.000000 C( W1, V1) 6.000000 0.000000 C( W1, V2) 2.000000 0.000000 C( W1, V3) 6.000000 0.000000 C( W1, V4) 7.000000 0.000000 C( W1, V5) 4.000000 0.000000 C( W1, V6) 2.000000 0.000000 C( W1, V7) 5.000000 0.000000C( W2, V1) 4.000000 0.000000 C( W2, V2) 9.000000 0.000000 C( W2, V3) 5.000000 0.000000 C( W2, V4) 3.000000 0.000000 C( W2, V5) 8.000000 0.000000 C( W2, V6) 5.000000 0.000000 C( W2, V7) 8.000000 0.000000 C( W2, V8) 2.000000 0.000000 C( W3, V1) 5.000000 0.000000 C( W3, V2) 2.000000 0.000000 C( W3, V3) 1.000000 0.000000 C( W3, V4) 9.000000 0.000000 C( W3, V5) 7.000000 0.000000 C( W3, V6) 4.000000 0.000000 C( W3, V7) 3.000000 0.000000 C( W3, V8) 3.000000 0.000000 C( W4, V1) 7.000000 0.000000 C( W4, V2) 6.000000 0.000000 C( W4, V3) 7.000000 0.000000 C( W4, V4) 3.000000 0.000000 C( W4, V5) 9.000000 0.000000 C( W4, V6) 2.000000 0.000000 C( W4, V7) 7.000000 0.000000 C( W4, V8) 1.000000 0.000000 C( W5, V1) 2.000000 0.000000 C( W5, V2) 3.000000 0.000000 C( W5, V3) 9.000000 0.000000 C( W5, V4) 5.000000 0.000000 C( W5, V5) 7.000000 0.000000 C( W5, V6) 2.000000 0.000000 C( W5, V7) 6.000000 0.000000 C( W5, V8) 5.000000 0.000000 C( W6, V1) 5.000000 0.000000 C( W6, V2) 5.000000 0.000000 C( W6, V3) 2.000000 0.000000 C( W6, V4) 2.000000 0.000000 C( W6, V5) 8.000000 0.000000 C( W6, V6) 1.000000 0.000000 C( W6, V7) 4.000000 0.000000 C( W6, V8) 3.000000 0.000000 X( W1, V1) 0.000000 5.000000 X( W1, V2) 19.00000 0.000000 X( W1, V3) 0.000000 5.000000X( W1, V5) 41.00000 0.000000 X( W1, V6) 0.000000 2.000000 X( W1, V7) 0.000000 2.000000 X( W1, V8) 0.000000 10.00000 X( W2, V1) 1.000000 0.000000 X( W2, V2) 0.000000 4.000000 X( W2, V3) 0.000000 1.000000 X( W2, V4) 32.00000 0.000000 X( W2, V5) 0.000000 1.000000 X( W2, V6) 0.000000 2.000000 X( W2, V7) 0.000000 2.000000 X( W2, V8) 0.000000 0.000000 X( W3, V1) 0.000000 4.000000 X( W3, V2) 11.00000 0.000000 X( W3, V3) 0.000000 0.000000 X( W3, V4) 0.000000 9.000000 X( W3, V5) 0.000000 3.000000 X( W3, V6) 0.000000 4.000000 X( W3, V7) 40.00000 0.000000 X( W3, V8) 0.000000 4.000000 X( W4, V1) 0.000000 4.000000 X( W4, V2) 0.000000 2.000000 X( W4, V3) 0.000000 4.000000 X( W4, V4) 0.000000 1.000000 X( W4, V5) 0.000000 3.000000 X( W4, V6) 5.000000 0.000000 X( W4, V7) 0.000000 2.000000 X( W4, V8) 38.00000 0.000000 X( W5, V1) 34.00000 0.000000 X( W5, V2) 7.000000 0.000000 X( W5, V3) 0.000000 7.000000 X( W5, V4) 0.000000 4.000000 X( W5, V5) 0.000000 2.000000 X( W5, V6) 0.000000 1.000000 X( W5, V7) 0.000000 2.000000 X( W5, V8) 0.000000 5.000000 X( W6, V1) 0.000000 3.000000 X( W6, V2) 0.000000 2.000000 X( W6, V3) 22.00000 0.000000 X( W6, V4) 0.000000 1.000000 X( W6, V5) 0.000000 3.000000 X( W6, V6) 27.00000 0.000000 X( W6, V7) 3.000000 0.000000Row Slack or Surplus Dual Price 1 664.0000 -1.000000 2 0.000000 3.000000 3 22.00000 0.000000 4 0.000000 3.000000 5 0.000000 1.000000 6 0.000000 2.000000 7 0.000000 2.000000 8 0.000000 -4.000000 9 0.000000 -5.000000 10 0.000000 -4.000000 11 0.000000 -3.000000 12 0.000000 -7.000000 13 0.000000 -3.000000 14 0.000000 -6.000000 15 0.000000 -2.000000由以上结果可以清楚的看到由各仓库到各客户处的货物调运数量,由此得出的符合条件的最佳运货方案,而使运费最低,最低为664。
运用Lingo进行线性规划求解实例
on)
@min(max)(set(set_index_list)|condition:ex pression)
♂返回
Global optimal solution found at
iteration:
3
结
Objective value: 2675.000
果
Variable Value
Reduced Cost
♂返回
max=@sum(ve(j):c(j)*x(j));
@for(co(i):@sum(ve(j):a(i,j)*x
调
(j))<=b(i));
用
主要函数:
函
@for(set(set_index_list)|condition:expressio n)
数
@sum(set(set_index_list)|condition:expressi
部 ma(co,ve):a; 分 endsets
!注:集表达式:名称/成员/:属性 名称(初始集):属性
♂返回
data:!定义数据
定
c=3 5 4;
义
b=1500 800 2000;
a=2 3 0
数
024
据
3 2 5;
Enddata
!注:数据的大小与集合定义中一致,
分量中间用空格或逗号分开,数据 结束后用分号;
C( 1) 3.000000
0.000000
C( 2) 5.000000
0.000000
C( 3) 4.000000
0.000000
X( 1) 375.0000
0.000000
X( 2) 250.0000
0.000000
Lingo的典型应用举例
假设预先准备的箱子总数为n个,即使每件物品单 独装一个箱子也够用,用决策变量yi=1或0表示第j个箱 子是用还是不用,用变量xij=1或0表示第i件物品是否放 入第j个箱子中,建立0-1规划模型如下:
n
min
z y j,
j1
n
w i x ij Cy
j , j 1,2 ,...,
n,
i1
s
表2.1 当前可供蔬菜养分含量(mg)和价格
养分
蔬菜
铁
A1 青 豆 0.45
A2 胡萝卜 0.45
A3 花 菜 0.65
A4 卷心菜 0.4
A5 芹 菜 0.5
A6 土 豆 0.5
每周最低需求 6
每份蔬菜所含养分数量
每份价格
磷 维生素A 维生素C 烟酸 (元)
20
415
22
0.3
2.1
28
4065
例2.1 某疗养院营养师要为某类病人拟定本周蔬菜类菜单, 当前可供选择的蔬菜品种、价格和营养成分含量,以及病 人所需养分的最低数量见表2.1所示。病人每周需14份蔬 菜,为了口味的原因,规定一周内的卷心菜不多于2份, 胡萝卜不多于3份,其他蔬菜不多于4份且至少一份。在满 足要求的前提下,制订费用最少的一周菜单方案。
.t
.
n
x ij 1 , i 1 , 2 ,...,
n,
j1
yj x ij
0或 0或
1, j 1, i,
j
1,2 ,..., n , 1,2 ,..., n .
例5.1 已知30个物品,其中6个长0.51m,6个长 0.27m,6个长0.26m,余下的12个长0.23m,箱子长为 1m。问最少需要多少个箱子才能把30个物品全部装进箱 子。
用LINGO求解线性规划的例子
附1:用LINGO求解线性规划的例子一奶制品加工厂用牛奶生产A1、A2两种奶制品,1桶牛奶可以在设备甲上用12小时加工成3公斤A1,或者在设备乙上用8小时加工成4公斤A2。
根据市场需求,生产的A1、A2能全部售出,且每公斤A1获利24元,每公斤A2获利16元。
现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间为480小时,并且设备甲每天至多能加工100公斤A1,设备乙的加工能力没有限制。
试为该厂制定一个生产计划,使每天获利最大,并进一步讨论以下3个附加问题:1)若用35元可以购买到1桶牛奶,应否作这项投资?若投资,每天最多购买多少桶牛奶?2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元?3)由于市场需求变化,每公斤A1的获利增加到30元,应否改变生产计划?数学模型:设每天用x1桶牛奶生产A1 ,用x2桶牛奶生产A2目标函数:设每天获利为z元。
x1桶牛奶可生产3x1公斤A1,获利24*3x1,x2桶牛奶可生产4*x2公斤A2,获利16*4x2,故z=72x1+64x2约束条件:原料供应:生产A1、A2的原料(牛奶)总量不超过每天的供应50桶,即x1+x2≤50劳动时间:生产A1、A2的总加工时间不超过每天正式工人总的劳动时间480小时,即12x1+8x2≤480设备能力:A1的产量不得超过设备甲每天的加工能力100小时,即3x1≤100非负约束:x1、x2均不能为负值,即x1≥0,x2≥0综上所述可得max z=72x1+64x2s.t.x1+x2≤5012x1+8x2≤4803x1≤100x1≥0,x2≥0显然,目标函数和约束条件都是线性的,这是一个线性规划(LP),求出的最优解将给出使净利润最大的生产计划,要讨论的问题需要考虑参数的变化对最优解和影响,一般称为敏感性(或灵敏度)分析。
LINGO求解线性规划用LINGO求解线性规划时,首先在LINGO软件的模型窗口输入一个LP模型,模型以MAX或MIN 开始,按线性规划问题的自然形式输入(见下面例子所示)。
Lingo的典型应用举例
4
A
2
3
4
5
6
7
8
9
10
料场的位置用(pxj,pyj)表示,日存储量用gj表示, 从料场j向工地i的日运输量为Cij。 则对问题(1), pxj,pyj是已知数,决策变量是Cij。 料场j到工地i的距离为:
( px j xi ) 2 + ( py j yi ) 2
目标函数是总的吨千米数最小,约束条件有两个。 一是满足各工地的日需求,二是各料场的总出货量不超 过日存储量。建立数学模型如下:
当前可供蔬菜养分含量( ) 表2.1 当前可供蔬菜养分含量(mg)和价格
养分 蔬菜 A1 A2 A3 A4 A5 A6 青 豆 胡萝卜 花 菜 卷心菜 芹 菜 土 豆 铁 0.45 0.45 0.65 0.4 0.5 0.5 6 每份蔬菜所含养分数量 磷 20 28 40 25 26 75 125 维生素A 维生素 维生素C 维生素 415 4065 850 75 76 235 12500 22 5 43 27 48 8 345 烟酸 0.3 0.35 0.6 0.2 0.4 0.6 5 每份价格 (元) 2.1 1.0 1.8 1.2 2.0 1.2
用0-1变量xij表示分配情况,xij=1表示指派第i个人 完成第j项任务,xij=0表示不分配。则上述问题可以表示 为如下0-1线性规划:
min
z = ∑∑ cij xij ,
i =1 j =1
n
n
n ∑ xij = 1, j = 1,2,..., n, i =1 s.t. n x = 1, i = 1,2,..., n, x = 0或1. ij ∑ ij j =1
min
z = ∑∑ Cij ( px j xi ) + ( py j yi ) ,
全国数学建模lingo实例讲解
全国数学建模lingo 实例讲解LINGO 是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。
§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例1.1 如何在LINGO 中求解如下的LP 问题:,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。
例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。
产销单位运价如下表。
单位 销地 运 价 产地B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8 产量 A 1 6 2 6 7 4 2 5 9 60 A 24953858255A3 5 2 1 9 7 4 3 3 51A4 7 6 7 3 9 2 7 1 43A5 2 3 9 5 7 2 6 5 41A6 5 5 2 2 8 1 4 3 52销量35 37 22 32 41 32 43 38使用LINGO软件,编制程序如下:model:!6发点8收点运输问题;sets:warehouses/wh1..wh6/: capacity;vendors/v1..v8/: demand;links(warehouses,vendors): cost, volume;endsets!目标函数;min=@sum(links: cost*volume);!需求约束;@for(vendors(J):@sum(warehouses(I): volume(I,J))=demand(J));!产量约束;@for(warehouses(I):@sum(vendors(J): volume(I,J))<=capacity(I));!这里是数据;data:capacity=60 55 51 43 41 52;demand=35 37 22 32 41 32 43 38;cost=6 2 6 7 4 2 9 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddataend然后点击工具条上的按钮即可。
LINGO解题结果的分析
一个很好的运算结果分析莫版!!!例5.1某家具公司制造书桌、餐桌和椅子,所用的资源有三种:木料、木工和漆工。
生产数据如下表所示:每个书桌每个餐桌每个椅子现有资源总数木料8单位6单位1单位48单位漆工4单位2单位 1.5单位20单位木工2单位 1.5单位0.5单位8单位成品单价60单位30单位20单位若要求桌子的生产量不超过5件,如何安排三种产品的生产可使利润最大?用DESKS、TABLES和CHAIRS分别表示三种产品的生产量,建立LP模型。
[OBJ] max=60*desks+30*tables+20*chairs;[ml] 8*desks+6*tables+chairs<=48;[qg] 4*desks+2*tables+1.5*chairs<=20;[mg] 2*desks+1.5*tables+.5*chairs<=8;[zz] tables<=5;Global optimal solution found at iteration: 0Objective value: 280.0000Variable Value Reduced CostDESKS 2.000000 0.000000TABLES 0.000000 5.000000CHAIRS 8.000000 0.000000Row Slack or Surplus Dual PriceOBJ 280.0000 1.000000ML 24.00000 0.000000QG 0.000000 10.00000MG 0.000000 10.00000ZZ 5.000000 0.000000“Global optimal solution found at iteration: 3”表示3次迭代后得到全局最优解。
“Objective value: 280.0000”表示最优目标值为280。
“Value”给出最优解中各变量的值:造2个书桌(desks)“Reduced Cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率。
附1:用LINGO求解线性规划的例子 一奶制品加工厂用牛奶生产A1、A2
附1:用LINGO求解线性规划的例子一奶制品加工厂用牛奶生产A1、A2附1:用LINGO求解线性规划的例子一奶制品加工厂用牛奶生产A、A两种奶制品,1桶牛奶可以在设备甲上用12小时加工成3公斤A,121或者在设备乙上用8小时加工成4公斤A。
根据市场需求,生产的A、A能全部售出,且每公斤A获利212124元,每公斤A获利16元。
现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间为4802 小时,并且设备甲每天至多能加工100公斤A,设备乙的加工能力没有限制。
试为该厂制定一个生产计划,1使每天获利最大,并进一步讨论以下3个附加问题:1)若用35元可以购买到1桶牛奶,应否作这项投资,若投资,每天最多购买多少桶牛奶,2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元,3)由于市场需求变化,每公斤A的获利增加到30元,应否改变生产计划, 1数学模型:设每天用x桶牛奶生产A1 ,用x桶牛奶生产A2 12目标函数:设每天获利为z元。
x桶牛奶可生产3x公斤A1,获利24*3x,x桶牛奶可生产4*x公11122斤A2,获利16*4x,故z=72x+64x212约束条件:原料供应:生产A、A的原料(牛奶)总量不超过每天的供应50桶,即 12x+x?50 12劳动时间:生产A、A的总加工时间不超过每天正式工人总的劳动时间480小时,即 1212x+8x?480 12设备能力:A的产量不得超过设备甲每天的加工能力100小时,即 13x?100 1非负约束:x、x均不能为负值,即x?0,x?0 2121综上所述可得max z=72x+64x 12s.t.x+x?50 1212x+8x?480 123x?100 1x?0,x?0 21显然,目标函数和约束条件都是线性的,这是一个线性规划(LP),求出的最优解将给出使净利润最大的生产计划,要讨论的问题需要考虑参数的变化对最优解和影响,一般称为敏感性(或灵敏度)分析。
LINGO的一个小例子及相关解释
LINGO的一个小例子及相关解释北航:孔继利第一部分:在LINGO Model窗口,键入如下的最优化模型:!目标函数;max=100*x+150*y;!约束条件;x<=80;y<=100;x*2+y<=180;1.从中可以看出,最优化模型包含三个要素:目标函数、变量、约束。
2.在LINGO的模型中,每一行都必须要用一个分号结尾。
如果没有这些分号,模型将无法求解。
3. LINGO模型的一个表达式可以分几行输入,但是表达式必须用一个分号结束。
如:max=100*x+150*y;4.在LINGO中为了提高模型的可读性,需要增加注释。
注释以“!”开始,以“;”结束。
5. LINGO不区分字母的大小写。
6. LINGO中的变量名都必须用字母A~Z开始,接下来是其他字符、数字或底线。
第二部分:点击“solve”按钮,在编译不出错的情况下,将给出“求解状态窗口”和“模型解答报告”。
该模型的“求解状态窗口”的如下图:其中,变量框(Variables)显示的是变量的总数。
它也显示非线性变量和整数变量的个数。
一般,非线性变量和整数变量的个数越多,求解越困难,耗费的时间越多。
模型中变量的数目不包含取定值的变量。
约束框(Constraints)显示的是模型约束的总数和非线性约束的总数。
非零框(Nonzeros)显示的是模型中非零系数的总数和非线性变量中非零系数的总数。
内存显示框(Memory Used)显示正在使用的模型所需的内存大小。
耗用时间框(Elapsed Runtime)显示用于编译和求解模型所需的时间。
最优状态框(Optimizer Status)显示最优解得状态。
State(状态):给出现行解的状态。
可能的结果有“全局最优解”、“局部最优解”、“可行解”、“不可行解”、“无界解”、“中断”和“未定”。
Iterations(跌代):求解的跌代次数。
Infeasibility(不可行):矛盾约束的数目。
LINGO模型实例及求解
LINGO求解整数非线性规划模型
Local optimal solution found at
iteration: 12211
Objective value:
28.00000
Variable Value Reduced Cost
X1 10.00000
0.000000
X2 10.00000
2.000000
当余料没有用处时,通常以总根数最少为目标
钢管下料问题2
增加一种需求:5米10根;切割模式不超过3种。
现有4种需求:4米50根,5米10根,6米20根,8米 15根,用枚举法确定合理切割模式,过于复杂。
对大规模问题,用模型的约束条件界定合理模式
决策变量 (15维) xi ~按第i 种模式切割的原料钢管根数(i=1,2,3) r1i, r2i, r3i, r4i ~ 第i 种切割模式下,每根原料钢管 生产4米、5米、6米和8米长的钢管的数量
每根原料钢管切割成2某人打算外出旅游并登山路程比较远途中要坐火车和飞机考虑要带许多必要的旅游和生活用品例如照相机摄像机食品衣服雨具书籍等等共n件物品重量分别为a而受航空行李重量限制以及个人体力所限能带的行李总重量为bn件物品的总重量超过了b需要裁减该旅行者为了决策带哪些物品对这些物品的重要性进行了量化用c表示试建立该问题的数学模型
4 x1 3 x22 x3x4x550最优解:x2=15,
x22x4x53x620 x5=5, x7=5,
x3x52x715
其余为0;
xi 为整数
最优值:25。
按模式2切割15根, 与目标1的结果“共切割
按模式5切割5根, 27根,余料27米” 相比
按模式7切割5根, 共25根,余料35米 虽余料增加8米,但减少了2根
用lingo求解数学规划模型实例
1, 第i个部队分配第j种装备 设 xij 0, 第i个部队不分配第j种装备
目标函数: max aij xij
i 1 j1
9
9
xij 1 i 1 9 s .t . : x 1 ij j1 xij=0或1
( i, j=1,2,…,9)
9
9
EQ1 EQ2 EQ3 EQ4 EQ5 EQ6 EQ7 EQ8 EQ9 AR1 0 0 0 0 0 0 0 0 1 AR2 0 0 0 1 0 0 0 0 0 AR3 0 0 0 0 0 1 0 0 0 AR4 0 0 0 0 1 0 0 0 0 AR5 1 0 0 0 0 0 0 0 0 AR6 0 0 0 0 0 0 1 0 0 AR7 0 0 0 0 0 0 0 1 0 AR8 0 0 1 0 0 0 0 0 0 AR9 0 1 0 0 0 0 0 0 0 装备 部队 1 2 3 4 5 6 7 8 9 A 0.24 0.31 0.31 0.49 0.63 0.45 0.45 0.32 0.33 B 0.42 0.04 0.24 0.06 0.15 0.02 0.07 0.24 0.56 C 0.15 0.60 0.08 0.28 0.31 0.37 0.26 0.58 0.41 D 0.46 0.69 0.14 0.13 0.60 0.14 0.15 0.64 0.13 E 0.34 0.11 0.54 0.65 0.06 0.69 0.18 0.43 0.65 F 0.69 0.24 0.61 0.41 0.41 0.29 0.43 0.45 0.07 G 0.03 0.45 0.37 0.55 0.47 0.61 0.55 0.09 0.22 H 0.57 0.35 0.48 0.25 0.19 0.18 0.66 0.05 0.46 I 0.69 0.27 0.34 0.36 0.31 0.46 0.08 0.20 0.11
lingo例题
例1.1.1某工厂有两条生产线,分别用生产M 和P 两种型号的产品,利润分别为200元/个和300元/个,生产线的最大生产能力分别为每日100和120,生产线每生产一个M 产品需要1个劳动日(1个工人工作8小时成为1个劳动日)进行调试、检测等工作,而每个P 产品需要2个劳动日,该厂工人每天共计能提供160劳动日,假如原材料等其他条件不受限制,问应如何安排生产计划,才能使获得的利润最大?解:设两种产品的生产量分别为1x 和2x ,则目标函数 12max 200300z x x =+约束条件 1212100,120,2160,0,1,2.i x x x x x i ≤⎧⎪≤⎪⎨+≤⎪⎪≥=⎩ 例1.1.2 基金的优化使用(2001年数学建模竞赛C 题)假设某校基金会得到了一笔数额为M 万元的基金,打算将其存入银行,校基金会计划在n 年末仍保留原基金数额.银行存款税后利率见表元,5n =年的情况下设计具体存款方案.解:分析:假定首次发放奖金的时间是在基金到位后一年,以后每隔一年发放一次,每年发放的时间大致相同,校基金会希望获得最佳的基金使用计划,以提高每年的奖金额,且在n 年末仍保留原基金数额M ,实际上n 年中发放的奖金额全部来自于利息。
如果全部基金都存为一年定期,每年都用到期利息发放奖金,则每年的奖金数为50000.01890⨯=万元,这是没有优化的存款方案。
显然,准备在两年后使用的款项应当存成两年定期,比存两次一年定期的收益高,以此类推。
目标是合理分配基金的存款方案,使得n 年的利息总额最多。
定义:收益比a =(本金+利息)/本金。
于是存2年的收益比为21 2.16%2 1.0432a =+⨯=。
按照银行存款税后利率表计算得到各存款年限对应的最优收益比见表(1) 一次性存成最长期,优于两个(或两个以上)比较短期的组合(中途转存)(2) 当存款年限需要组合时,收益比与组合的先后次序无关。
建立模型 把总基金M 分成5+1份,分别用123456,,,,,x x x x x x 表示,其中12345,,,,x x x x x 分别存成15 年定期,到期后本息合计用于当年发放奖金,6x 存5年定期,到期的本息合计等于原基金总数M 。
数学建模实验报告关于LINGO的解题方法及其思路分析
数学建模实验报告1.解析:此题属于0-1模型问题。
设队员序号为i ,泳姿为j ,记c ij 为队员i 第j 种泳姿的百米成绩,若选择队员i 参加泳姿j 的比赛,记x ij =1, 否则记xij =0;则有,目标函数为∑∑===4151j i ij ij x c Z Min ,每个人最多选泳姿为1,则有5,1,141=≤∑=i xj ij,每种泳姿有且仅有1人,则有4,1,151==∑=j xi ij。
若丁的蛙泳成绩退步及戊的自由泳成绩进步,则将c43的值和c54的值改变即可。
实验过程及运行结果如下:若丁的蛙泳成绩退步为1'15"2及戊的自由泳成绩进步57"5,计算结果如下:通过计算结果可知,在原数据的情况下,队伍的选择应该是甲参加自由泳,乙参加蝶泳,丙参加仰泳,丁参加蛙泳,戊不参加任何比赛,且最好的时间是253.2秒。
若丁的蛙泳成绩退步为1'15"2及戊的自由泳成绩进步57"5,则组成接力的比赛队伍调整为乙参加蝶泳,丙参加仰泳,丁参加蛙泳,戊参加自由泳,甲不参加任何比赛。
2.解析:此题属于线性规划问题。
已知某工厂用1A 、2A 两台机床加工1B 、2B 、3B 三种不同的零件,设1A 生产1B 、2B 、3B 的个数分别为1x 、2x 、3x ,2A 生产1B 、2B 、3B 的个数分别为4x 、5x 、6x ,则目标函数为min=1*2*1x +2*3*2x +3*5*3x +1*3*4x +1*3*5x +3*6*6x ;1A 加工的工时小于80小时,2A 加工的工时小于100小时,生产1B 、2B 、3B 的总数分别为70个、50个、20个。
实验过程及运行结果如下:通过计算结果可知,当1A 生产1B 、2B 、3B 的个数分别为68个、0个、4个,2A 生产1B 、2B 、3B 的个数分别为2个、50个、16个的时候,才能得到最低的成本640元。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运 筹 学 实 验
钢管下料问题2
目标函数(总根数) 满足需求
Min x1 x2 x3
模式合理:每根 余料不超过3米
约束 条件
安 阳 师 范 学 院 数 学 与 统 计 学 院
1 2 3 4 5 6 安 阳 7
师 范 学 院 数 学 与 统 计 学 院
运 筹 学 实模式 验
钢管下料问题1
4米钢管根数 4 3 2 1 1 0 0 6米钢管根数 0 1 0 2 1 3 0
合理切割模式
8米钢管根数 0 0 1 0 1 0 2 余料(米) 3 1 3 3 1 1 3
为满足客户需要,按照哪些种合理模式,每种模式 切割多少根原料钢管,最为节省? 两种 标准 1. 原料钢管剩余总余量最小
每根原料钢管长19米
ห้องสมุดไป่ตู้
原料钢管总根数下界: 4 50 5 10 6 20 8 15 26 (最佳切割方式) 19
安 特殊生产计划(简单切割方式):对每根原料钢管 阳 师 范 模式1:切割成4根4米钢管,需13根; 学 院 模式2:切割成1根5米和2根6米钢管,需10根; 数 学 模式3:切割成2根8米钢管,需8根。 与 统 原料钢管总根数上界:31 26 x1 x2 x3 31 计 学 院 模式排列顺序可任定 1 2 3
r11 x1 r12 x2 r13 x3 50
r21 x1 r22 x2 r23 x3 10
16 4r11 5r21 6r31 8r41 19
16 4r12 5r22 6r32 8r42 19
16 4r13 5r23 6r33 8r43 19
最优解:x2=12, x5=15, 其余为0; 最优值:27
按模式2切割12根,按模式5切割15根,余料27米
运 筹 学 目标2(总根数) 实 验
Min Z 2 x1 x2 x3 x4 x5 x6 x7
最优解:x2=15, x5=5, x7=5, 其余为0; 最优值:25。
学 与需 统求 计 学 院
4米 根数 4 3 2 1 1 0 0 50
6米 根数 0 1 0 2 1 3 0 20
8米 根数 0 0 1 0 1 0 2 15
约束 满足需求 4 x1 3x2 2 x3 x4 x5 50 x2 2 x4 x5 3x6 20 x3 x5 2 x7 15 整数约束: xi 为整数
2. 所用原料钢管总根数最少
运 筹 决策变量 xi ~按第i 学 实 验 目标1(总余量)
种模式切割的原料钢管根数(i=1,2,…7)
Min Z1 3x1 x2 3x3 3x4 x5 x6 3x7
余 料 3 1 3 3 1 1 3
模 式 1 2 3 安 阳4 师 范5 学6 院 数7
整数约束: xi ,r1i, r2i, r3i, r4i (i=1,2,3)为整数
r31 x1 r32 x2 r33 x3 20
r41 x1 r42 x2 r43 x3 15
整数非线性规划模型
运 筹增加约束,缩小可行域,便于求解 学 实 验
需求:4米50根,5米10 根,6米20根,8米15根
运 筹 学 实 验
钢管下料问题2
增加一种需求:5米10根;切割模式不超过3种。
现有4种需求:4米50根,5米10根,6米20根,8米 15根,用枚举法确定合理切割模式,过于复杂。 对大规模问题,用模型的约束条件界定合理模式
安 阳 师 范 学 院 数 学 与 统 计 学 院
决策变量 (15维)
xi ~按第i 种模式切割的原料钢管根数(i=1,2,3)
运 筹 学 实 验
钢管下料
切割模式
按照客户需要在一根原料钢管上安排切割的一种组合。 4米 1根 6米 1根 8米 1根 余料1米
安 阳 4米 1根 6米 1根 余料3米 6米 1根 师 范 学 院 数 8米 1根 8 米 1 根 余料3米 学 与 统 计合理切割模式的余料应小于客户需要钢管的最小尺寸 学 院
约束条 4 x1 3x2 2 x3 x4 x5 50 件不变 x2 2 x4 x5 3x6 20
x3 x5 2 x7 15
xi 为整数 安 阳 师 按模式2切割15根, 与目标1的结果“共切割 范 学 按模式5切割5根, 27根,余料27米” 相比 院 数 学 按模式7切割5根, 与 虽余料增加8米,但减少了2根 统 共25根,余料35米 计 学 当余料没有用处时,通常以总根数最少为目标 院
运 筹 学 实 验
LINGO模型实例与求解
下料问题
背包问题
安 阳 师 范 学 院 数 学 与 统 计 学 院
选址问题 指派问题
运 筹 学 实 验
下料问题
客户需求
原料钢管:每根19米 6米20根 8米15根
4米50根
安 节省的标准是什么? 阳 问题1. 如何下料最节省 ? 师 范 学 问题2. 客户增加需求: 5米10根 院 数 学 与由于采用不同切割模式太多,会增加生产和管理成本, 统 计 学规定切割模式不能超过3种。如何下料最节省? 院
x x x
运 筹 学 实 Local 验 optimal solution found at
LINGO求解整数非线性规划模型
模式1:每根原料钢管切割成3 根4米和1根6米钢管,共10根; 模式2:每根原料钢管切割成2 根4米、1根5米和1根6米钢管, 共10根;
模式3:每根原料钢管切割成2 根8米钢管,共8根。 原料钢管总根数为28根。
iteration: 12211 Objective value: 28.00000 Variable Value Reduced Cost X1 10.00000 0.000000 X2 10.00000 2.000000 X3 8.000000 1.000000 R11 3.000000 0.000000 R12 2.000000 0.000000 安 R13 0.000000 0.000000 阳 R21 0.000000 0.000000 师 R22 1.000000 0.000000 范 学 R23 0.000000 0.000000 院 R31 1.000000 0.000000 数 R32 1.000000 0.000000 学 R33 0.000000 0.000000 与 R41 0.000000 0.000000 统 计 R42 0.000000 0.000000 学 R43 2.000000 0.000000