用LINGO求解线性规划问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1 用LINGO求解线性规划问题
LINGO使用简介
LINGO软件是美国的LINDO系统公司(Lindo System Inc)开发的一套用于求解最优
化问题的软件包.LINGO除了能用于求解线性规划和二次规划外,还可以用于非线性规划求
解以及一些线性和非线性方程(组)的求解.LINGO软件的最大特色在于它允许优化模型中
的决策变量为整数,而且执行速度快.LINGO内置了一种建立最优化模型的语言,可以简便
地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果,这里简单介绍
LINGO的使用方法.
LINGO可以求解线性规划、二次规划、非线性规划、整数规划、图论及网络优化和排
队论模型中的最优化问题等.
一个LINGO程序一般会包含集合段、数据输入段、优化目标和约束段、初始段和数据
预处理段等部分,每一部分有其独特的作用和语法规则,读者可以通过查阅相关的参考书或
者LINGO的HELP文件详细了解,这里就不展开介绍了.
LINGO的主要功能特色为:既能求解线性规划问题,也有较强的求解非线性规划问题
的能力;输入模型简练直观;运算速度快、计算能力强;内置建模语言,提供几十个内部函
数,从而能以较少语句,较直观的方式描述大规模的优化模型;将集合的概念引入编程语言,
很容易将实际问题转换为LINGO模型;并且能方便地与Excel、数据库等其他软件交换数
据.
LINGO的语法规定:
(1)求目标函数的最大值或最小值分别用MAX=…或MIN=…来表示;
(2)每个语句必须以分号“;”结束,每行可以有许多语句,语句可以跨行;
(3)变量名称必须以字母(A~Z)开头,由字母、数字(0~9)和下划线所组成,长度
不超过32个字符,不区分大小写;
(4)可以给语句加上标号,例如[OBJ] MAX=200*X1+300*X2;
(5)以惊叹号“!”开头,以分号“;”结束的语句是注释语句;
(6)如果对变量的取值范围没有作特殊说明,则默认所有决策变量都非负;
(7)LINGO模型以语句“MODEL:”开头,以“END”结束,对于比较简单的模型,
这两个语句可以省略.
实验目的
1.对于给定的实际应用问题,正确的建立线性规划问题数学模型,并用LINGO求解;
2.掌握灵敏度分析以及资源的影子价格的相关分析方法.
实验数据与内容
问题1.1 某工厂在计划期内要安排生产A、B两种产品,已知生产单位产品所需设备
台时及对甲、乙两种原材料的消耗,有关数据如表1.1.问:应如何安排生产计划,使工厂获
利最大?
表1.1 资源配置问题的数据
产品
资源
A
B
可利用资源
设备
1
2
8台时
甲
4
0
16公斤
乙
0
4
12公斤
单位利润
2元
3元
建立线性规划问题的数学模型,用LINGO求出最优解并做相应的分析.
问题1.2 某公司饲养实验用的动物以供出售,已知这些动物的生长对饲料中3种营养
成分(蛋白质、矿物质和维生素)特别敏感,每个动物每周至少需要蛋白质60g,矿物质3g,
维生素8mg,该公司能买到5种不同的饲料,每种饲料1kg所含各种营养成分和成本如表
1.2所示,如果每个小动物每周食用饲料不超过52kg,求既能满足动物生长需要,又使总成
本最低的饲料配方.
表1.2 配料(食谱)问题的数据
饲料
营养
1A
2A
3A
4A
5A
营养最低
要 求
蛋白质(g)
0.3
2
1
0.6
1.8
60
矿物质(g)
0.1
0.05
0.02
0.2
0.05
3
维生素(mg)
0.05
0.1
0.02
0.2
0.08
8
成本(元/ kg)
0.2
0.7
0.4
0.3
0.5
实验指导
问题1.1设计划生产两种产品分别为,则建立线性规划问题数学模型 BA,21,xx
..
.
..
.
.
≥
≤
≤
≤+
+=
0,12416482.32max21212121xxxxxxtsxxS
在LINGO的MODEL窗口内输入如下模型:
model:
max=2*x1+3*x2;
x1+2*x2<=8;
4*x1<=16;
4*x2<=12;
end
选菜单Lingo|Solve(或按Ctrl+S),或用鼠标点击“求解”按纽,如果模型有语法错误,则
弹出一个标题为“LINGO Error Message”(错误信息)的窗口,指出在哪一行有怎样的错误,
每一种错误都有一个编号(具体含义可查阅相关文献或LINGO的Help).改正错误以后再求
解,如果语法通过,LINGO用内部所带的求解程序求出模型的解,然后弹出一个标题为
“LINGO Solver Status”(求解状态)的窗口,其内容为变量个数、约束条件个数、优化状
态、耗费内存、所花时间等信息,点击Close关闭窗口,屏幕上出现标题为“Solution Report”
(解的报告)的信息窗口,显示优化计算(线性规划中换基迭代)的步数、优化后的目标函
数值、列出各变量的计算结果.求解结果:
Global optimal solution found at iteration: 5
Objective value: 14.00000
Variable Value Reduced Cost
X1 4.000000 0.000000
X2 2.000000 0.000000
Row Slack or Surplus Dual Price
1 14.00000 1.000000
2 0.000000 1.500000
3 0.000000 0.1250000
4 4.000000 0.000000
该报告说明:运行5步找到全局最优解,目标函数值为14,变量值分别为.
“Reduced Cost”的含义是需缩减成本系数或需增加利润系数(最优解中取值非零的决策变
量的Reduced Cost值等于零).“Row”是输入模型中的行号,目标函数是第一行;“Slack or
Surplus”的意思是松弛或剩余,即约束条件左边与右边的差值,对于“
124,2==xx≤”的
不等式,右边
减左边的差值为Slack(松弛),对于“”的不等式,左边减右边的差值为Surplus(剩余),
当约束条件两边相等时,松弛或剩余的值等于零.“Dual Price”的意思是对偶价格(或称为
影子价格),上述报告中Row2的松弛值为0,表明生产甲产品4单位、乙产品2单位,所
需设备8台时已经饱和,对偶价格1.5的含义是:如果设备增加1台时,能使目标函数值增
加1.5.报告中Row4的松弛值为4,表明生产甲产品4单位、乙产品2单位,所需原材料乙
8公斤还剩余4公斤,因此增加原材料乙不会使目标函数值增加,所以对偶价格为0.
≥
问题1.2设需要饲料分别为 kg,则建立线性规划数学模
型:
54321,,,,AAAAA54321,,,,xxxxx
123451234512345123451234512345min0.20.70.40.30.50.320.61.8600.10.050.020.20.0530.050.10.020.20.088.52,,,,0Sxxxxxxxxxxxxxxxxxxxxstxxxxxxxxxx=++++
++++≥..
++++..
++++..
++++≤.
≥..
在LINGO的MODEL窗口内输入如下模型:
Min=0.2*x1+0.7*x2+0.4*x3+0.3*x4+0.5*x5;
0.3*x1+2*x2+x3+0.6*x4+1.8*x5>60;
0.1*x1+0.05*x2+0.02*x3+0.2*x4+0.05*x5>3;
0.05*x1+0.1*x2+0.02*x3+0.2*x4+0.08*x5>8;
x1+x2+x3+x4+x5<52;
求解输出结果如下:
Global optimal solution found at iteration: 4
Objective value: 22.40000
Variable Value Reduced Cost
X1 0.000000 0.7000000
X2 12.00000 0.000000
X3 0.000000 0.6166667
X4 30.00000 0.000000
X5 10.00000 0.000000
Row Slack or Surplus Dual Price
1 22.40000 -1.000000
2 0.000000 -0.5833333
3 4.100000 0.000000
4 0.000000 -4.166667
5 0.000000 0.8833333
因此,每周每个动物的配料为饲料、、分别为12、30和10kg,合计为
52,可使得饲养成本达到最小,最小成本为22.4元;不选用饲料和的原因是因为
这两种饲料的价格太高了,没有竞争力.“Reduced Cost”分别等于0.7和0.617,说明当这
两种饲料的价格分别降低0.7元和0.62元以上时,不仅选用这两种饲料而且使得饲养成本降
低.从“Slack or Surplus”可以看出,蛋白质和维生素刚达到最低标准,矿物质超过最低标准
4.12A4A5Akgkgkg1A3Ag;从“Dual Price”可以得到降低标准蛋白质1单位可使饲养成本降低0.583元,降低标
准维生素1单位可使饲养成本降低4.167元,但降低矿物质的标准不会降低饲养成本,如果
动物的进食量减少,就必须选取精一些的饲料但要增加成本,大约进食量降低1可使得
饲养成本增加0.88元.
kg
对于目标函数系数和约束条件右端常数项的灵敏度分析,可以通过LINGO软件求解的
灵敏度分析给出.如果要看灵敏度分析结果,必须激活灵敏度计算功能才会在求解时给出灵
敏度分析结果,默认情况下这项功能是关闭的.想要激活它,必须运行LINGO|Options…命令,
选择Gengral Solver,在Dual C
omputation列表框中,选择Prices and Ranges选项并确定.对
于例1.1问题进行灵敏度分析,结果如下:
以下是灵敏度分析的结果
Ranges in which the basis is unchanged:
Objective Coefficient Ranges
Current Allowable Allowable
Variable Coefficient Increase Decrease
X1 2.000000 INFINITY 0.5000000
X2 3.000000 1.000000 3.000000
Righthand Side Ranges
Row Current Allowable Allowable
RHS Increase Decrease
2 8.000000 2.000000 4.000000
3 16.00000 16.00000 8.000000
4 12.00000 INFINITY 4.000000
对于例1.2问题进行灵敏度分析,结果如下:
Ranges in which the basis is unchanged:
Objective Coefficient Ranges
Current Allowable Allowable
Variable Coefficient Increase Decrease
X1 0.2000000 INFINITY 0.7000000
X2 0.7000000 INFINITY 0.1358974
X3 0.4000000 INFINITY 0.6166667
X4 0.3000000 1.400000 1.000000
X5 0.5000000 0.1247059 INFINITY
Righthand Side Ranges
Row Current Allowable Allowable
RHS Increase Decrease
2 60.00000 4.800000 4.800000
3 3.000000 4.100000 INFINITY
4 8.000000 0.3428571 0.4800000
5 52.00000 1.846154 1.411765
思考题
某投资公司拟制定今后5年的投资计划,初步考虑下面四个投资项目:
项目A:从第1年到第4年每年年初可以投资,于次年年末收回成本,并可获利润15%;
项目B:第3年年初可以投资,到第5年年末可以收回成本,并获得利润25%,但为了
保证足够的资金流动,规定该项目的投资金额上限为不超过总金额的40%;
项目C:第2年年初可以投资,到第5年年末可以收回成本,并获得利润40%,但公司
规定该项目的最大投资金额不超过总金额的30%;
项目D:5年内每年年初可以购买公债,于当年年末可以归还本金,并获利息6%.
该公司现有投资金额100万元,请帮助该公司制定这些项目每年的投资计划,使公司到
第5年年末核算这5年投资的收益率达到最大.
建立线性规划问题的数学模型,并用LINGO求解.