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.1
资源配置问题的数据
产品
资源
A B
可利用资源
设备
1 2
8
台时
甲
4 0
16
公斤
乙
0 4
12
公斤
单位利润
2
元
3
元
建立线性规划问题的数学模型,用
LINGO
求出最优解并做相应的分析
.
问题
1.2
某公司饲养实验用的动物以供出售,已知这些动物的生长对饲料中
3
种营养
成分
(蛋白质、
矿物质和维生素)
特别敏感,
每个动物每周至少需要蛋白质
60
g
,
矿物质
3
g
,
维生素
8
mg
,该公司能买到
5
种不同的饲料,每种饲料
1
kg
所含各种营养成分和成本如表
1.2
所示,如果每个小动物每周食用饲料不超过
52
kg
,求既能满足动物生长需要,又使总成
本最低的饲料配方
.
表
1.2
配料(食谱)问题的数据
饲料
营养
1
A
2
A
3
A
4
A
5
A
营养最低
要
求
蛋白质
(
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
设计划生产
两种产品分别为
,则建立线性规划问题数学模型
B
A
,
2
1
,
x
x
⎪
⎪
⎩
⎪
⎪
⎨
⎧
≥
≤
≤
≤
+
+
=
0
,
12
4
16
4
8
2
.
3
2
max
2
1
2
1
2
1
2
1
x
x
x
x
x
x
t
s
x
x
S
在
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
”
(解的报告)的信息窗口,显示优化计算(线性规划中换基迭代)的步数、优化后的目标函
数值、列出各变量的计算结果
.
求解结果:
2Global 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
”的意思是松弛或剩余,即约束条件左边与右边的差值,对于“
1
2
4,
2
=
=
x
x
≤
”的不等式,右边
减左边的差值为
Slack
(松弛)
,对于
“
”的不等式,左边减右边的差值为
Surplus
(剩余)
,
当约束条件两边相等时,松弛或剩余的值等于零
.
“
Dual Price
”的意思是对偶价格(或称为
影子价格
)
,上述报告中
Row2
的松弛值为
0
,表明生产甲产品
4
单位、乙产品
2
单位,所
需设备
8
台时已经饱和,对偶价格
1.5
的含义是:如果设备增加
1
台时,能使目标函数值增
加
1.5.
报告中
Row4
的松弛值为
4
,表明生产甲产品
4
单位、乙产品
2
单位,所需原材料乙
8
公斤还剩余
4
公斤,因此增加原材料乙不会使目标函数值增加,所以对偶价格为
0.
≥
问题
1.2
设需要饲料
分别为
kg
,则建立线性规划数学模
型:
5
4
3
2
1
,
,
,
,
A
A
A
A
A
5
4
3
2
1
,
,
,
,
x
x
x
x
x
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
min
0.2
0.7
0.4
0.3
0.5
0.3
2
0.6
1.8
60
0.1
0.05
0.02
0.2
0.05
3
0.05
0.1
0.02
0.2
0.08
8
.
52
,
,
,
,
0
S
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
s
t
x
x
x
x
x
x
x
x
x
x
=
+
+
+
+
+
+
+
+
≥
⎧
⎪
+
+
+
+
⎪
⎪
≥
+
+
+
+
⎨
⎪
+
+
+
+
≤
⎪
≥
⎪
⎩
≥
在
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
3