没有合适的资源?快使用搜索试试~ 我知道了~
首页Matlab数学建模算法全收录.pdf
资源详情
资源推荐
-1-
第一章 线性规划
§1 线性规划
在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济
效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear
Programming 简记 LP)则是数学规划的一个重要分支。自从 1947 年 G. B. Dantzig 提出
求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深
入。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性
规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。
1.1 线性规划的实例与定义
例 1 某机床厂生产甲、乙两种机床,每台销售后的利润分别为 4000 元与 3000 元。
生产甲机床需用
BA、 机器加工,加工时间分别为每台 2 小时和 1 小时;生产乙机床
需用
CBA 、、 三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时
数分别为
A
机器 10 小时、
B
机器 8 小时和 C 机器 7 小时,问该厂应生产甲、乙机床各
几台,才能使总利润最大?
上述问题的数学模型:设该厂生产
1
x 台甲机床和
2
x 乙机床时总利润最大,则
21
, xx
应满足
(目标函数)
21
34max xxz
+
=
(1)
s.t.(约束条件)
⎪
⎪
⎩
⎪
⎪
⎨
⎧
≥
≤
≤+
≤+
0,
7
8
102
21
2
21
21
xx
x
xx
xx
(2)
这里变量
21
, xx 称之为决策变量,(1)式被称为问题的目标函数,(2)中的几个不等式
是问题的约束条件,记为 s.t.(即 subject to)。由于上面的目标函数及约束条件均为线性
函数,故被称为线性规划问题。
总之,线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最
小的问题。
在解决实际问题时,把问题归结成一个线性规划数学模型是很重要的一步,但往往
也是困难的一步,模型建立得是否恰当,直接影响到求解。而选适当的决策变量,是我
们建立有效模型的关键之一。
1.2 线性规划的 Matlab 标准形式
线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以
是小于号也可以是大于号。为了避免这种形式多样性带来的不便,Matlab 中规定线性
规划的标准形式为
xc
x
T
min
s.t.
⎪
⎩
⎪
⎨
⎧
≤≤
=⋅
≤
ubxlb
beqxAeq
bAx
其中
c 和
x
为 n 维列向量, A、 Aeq 为适当维数的矩阵, b 、 beq 为适当维数的列向
量。
-2-
例如线性规划
bAxxc
x
T
≥ s.t. max
的 Matlab 标准型为
bAxxc
x
T
−≤−− s.t. min
1.3 线性规划问题的解的概念
一般线性规划问题的(数学)标准型为
∑
=
=
n
j
jj
xcz
1
max (3)
s.t.
⎪
⎩
⎪
⎨
⎧
=≥
==
∑
=
njx
mibxa
j
n
j
ijij
,,2,10
,,2,1
1
L
L
(4)
可行解 满足约束条件(4)的 解
),,,(
21 n
xxxx L
=
,称为线性规划问题的可行解,
而使目标函数(3)达到最大值的可行解叫最优解。
可行域 所有可行解构成的集合称为问题的可行域,记为
R
。
1.4 线性规划的图解法
0 2 4 6 8 10
0
1
2
3
4
5
6
7
8
9
10
x2=7
2x1+x2=10
x1+x2 = 8
z=12
(2 ,6 )
图 1 线性规划的图解示意图
图解法简单直观,有助于了解线性规划问题求解的基本原理。我们先应用图解法来
求解例 1。对于每一固定的值
z ,使目标函数值等于 z 的点构成的直线称为目标函数等
位线,当
z
变动时,我们得到一族平行直线。对于例 1,显然等位线越趋于右上方,其
上的点具有越大的目标函数值。不难看出,本例的最优解为
T
x )6,2(* = ,最优目标值
26* =z 。
从上面的图解过程可以看出并不难证明以下断言:
(1)可行域
R
可能会出现多种情况。
R
可能是空集也可能是非空集合,当
R
非空
时,它必定是若干个半平面的交集(除非遇到空间维数的退化)。
R
既可能是有界区域,
也可能是无界区域。
(2)在
R
非空时,线性规划既可以存在有限最优解,也可以不存在有限最优解(其
目标函数值无界)。
-3-
(3)若线性规划存在有限最优解,则必可找到具有最优目标函数值的可行域
R
的
“顶点”。
上述论断可以推广到一般的线性规划问题,区别只在于空间的维数。在一般的
n 维
空间中,满足一线性等式
∑
=
=
n
i
ii
bxa
1
的点集被称为一个超平面,而满足一线性不等式
∑
=
≤
n
i
ii
bxa
1
(或
∑
=
≥
n
i
ii
bxa
1
)的点集被称为一个半空间(其中 ),,(
1 n
aa L 为一 n 维行
向量,
b 为一实数)。若干个半空间的交集被称为多胞形,有界的多胞形又被称为多面
体。易见,线性规划的可行域必为多胞形(为统一起见,空集
Φ
也被视为多胞形)。
在一般
n 维空间中,要直接得出多胞形“顶点”概念还有一些困难。二维空间中的顶点
可以看成为边界直线的交点,但这一几何概念的推广在一般
n 维空间中的几何意义并不
十分直观。为此,我们将采用另一途径来定义它。
定义 1 称
n
维空间中的区域
R
为一凸集,若 Rxx ∈∀
21
, 及 )1,0(∈∀
λ
,有
Rxx ∈−+
21
)1(
λλ
。
定义 2 设
R
为 n 维空间中的一个凸集,
R
中的点
x
被称为
R
的一个极点,若不
存在
Rxx ∈
21
、 及 )1,0(∈
λ
,使得
21
)1( xxx
λλ
−+= 。
定义 1 说明凸集中任意两点的连线必在此凸集中;而定义 2 说明,若
x
是凸集
R
的一个极点,则
x
不能位于
R
中任意两点的连线上。不难证明,多胞形必为凸集。同
样也不难证明,二维空间中可行域
R
的顶点均为
R
的极点(
R
也没有其它的极点)。
1.5 求解线性规划的 Matlab 解法
单纯形法是求解线性规划问题的最常用、最有效的算法之一。这里我们就不介绍
单纯形法,有兴趣的读者可以参看其它线性规划书籍。下面我们介绍线性规划的 Matlab
解法。
Matlab 中线性规划的标准型为
xc
x
T
min
s.t.
⎪
⎩
⎪
⎨
⎧
≤≤
=⋅
≤
ubxlb
beqxAeq
bAx
基本函数形式为 linprog(c,A,b),它的返回值是向量
x
的值。还有其它的一些函数调用形
式(在 Matlab 指令窗运行 help linprog 可以看到所有的函数调用形式),如:
[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X
0
,OPTIONS)
这里 fval 返回目标函数的值,LB 和 UB 分别是变量
x
的下界和上界,
0
x 是
x
的初始值,
OPTIONS 是控制参数。
例 2 求解下列线性规划问题
321
532max xxxz
−
+=
s.t.
7
321
=++ xxx
1052
321
≥+− xxx
123
321
≤+
+
xxx
0,,
321
≥xxx
-4-
解 (i)编写 M 文件
c=[2;3;-5];
a=[-2,5,-1;1,3,1]; b=[-10;12];
aeq=[1,1,1];
beq=7;
x=linprog(-c,a,b,aeq,beq,zeros(3,1))
value=c'*x
(ii)将M文件存盘,并命名为example1.m。
(iii)在Matlab指令窗运行example1即可得所求结果。
例3 求解线性规划问题
321
32 min xxxz +
+
=
⎪
⎩
⎪
⎨
⎧
≥
≥+
≥++
0,,
623
824
321
21
321
xxx
xx
xxx
解 编写Matlab程序如下:
c=[2;3;1];
a=[1,4,2;3,2,0];
b=[8;6];
[x,y]=linprog(c,-a,-b,[],[],zeros(3,1))
1.6 可以转化为线性规划的问题
很多看起来不是线性规划的问题也可以通过变换变成线性规划的问题来解决。如:
例4 规划问题为
bAx
xxx
n
≤
+
++
t.s.
||||||min
21
L
其中
T
n
xxx ][
1
L= ,
A
和 b 为相应维数的矩阵和向量。
要把上面的问题变换成线性规划问题,只要注意到事实:对任意的
i
x ,存在
0, >
ii
vu 满足
iii
vux −= ,
iii
vux +=||
事实上,我们只要取
2
||
ii
i
xx
u
+
=
,
2
||
ii
i
xx
v
−
= 就可以满足上面的条件。
这样,记
T
n
uuu ][
1
L= ,
T
n
vvv ][
1
L= ,从而我们可以把上面的问题
变成
∑
=
+
n
i
ii
vu
1
)(min
⎩
⎨
⎧
≥
≤−
0,
)(
t.s.
vu
bvuA
例 5
|}|max{min
i
y
x
i
i
ε
其中
iii
yx −=
ε
。
对于这个问题,如果我们取
||max
0 i
y
i
x
ε
=
,这样,上面的问题就变换成
-5-
0
min x
0011
,, t.s. xyxxyx
nn
≤
−
≤− L
此即我们通常的线性规划问题。
§2 运输问题(产销平衡)
例 6 某商品有
m 个产地、 n 个销地,各产地的产量分别为
m
aa ,,
1
L ,各销地的
需求量分别为
n
bb ,,
1
L 。若该商品由 i 产地运到
j
销地的单位运价为
ij
c ,问应该如何调
运才能使总运费最省?
解:引入变量
ij
x ,其取值为由
i
产地运往
j
销地的该商品数量,数学模型为
∑∑
==
m
i
n
j
ijij
xc
11
min
s.t.
⎪
⎪
⎪
⎩
⎪
⎪
⎪
⎨
⎧
≥
==
==
∑
∑
=
=
0
,,2,1,
,,1,
1
1
ij
m
i
jij
n
j
iij
x
njbx
miax
L
L
显然是一个线性规划问题,当然可以用单纯形法求解。
对产销平衡的运输问题,由于有以下关系式存在:
∑∑∑∑∑∑
======
=
⎟
⎠
⎞
⎜
⎝
⎛
=
⎟
⎟
⎠
⎞
⎜
⎜
⎝
⎛
=
m
i
i
n
j
n
j
m
i
ij
m
i
n
j
ijj
axxb
111111
其约束条件的系数矩阵相当特殊,可用比较简单的计算方法,习惯上称为表上作业法(由
康托洛维奇和希奇柯克两人独立地提出,简称康—希表上作业法)。
§3 指派问题
3.1 指派问题的数学模型
例 7 拟分配
n 人去干 n 项工作,每人干且仅干一项工作,若分配第 i 人去干第
j
项工作,需花费
ij
c 单位时间,问应如何分配工作才能使工人花费的总时间最少?
容易看出,要给出一个指派问题的实例,只需给出矩阵
)(
ij
cC
=
, C 被称为指派
问题的系数矩阵。
引入变量
ij
x ,若分配
i
干
j
工作,则取 1
=
ij
x ,否则取 0
=
ij
x 。上述指派问题的
数学模型为
∑∑
==
n
i
n
j
ijij
xc
11
min
s.t.
∑
=
=
n
j
ij
x
1
1
剩余798页未读,继续阅读
tp...
- 粉丝: 3
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- BGP协议首选值(PrefVal)属性与模拟组网实验
- C#实现VS***单元测试coverage文件转xml工具
- NX二次开发:UF_DRF_ask_weld_symbol函数详解与应用
- 从机FIFO的Verilog代码实现分析
- C语言制作键盘反应力训练游戏源代码
- 简约风格毕业论文答辩演示模板
- Qt6 QML教程:动态创建与销毁对象的示例源码解析
- NX二次开发函数介绍:UF_DRF_count_text_substring
- 获取inspect.exe:Windows桌面元素查看与自动化工具
- C语言开发的大丰收游戏源代码及论文完整展示
- 掌握NX二次开发:UF_DRF_create_3pt_cline_fbolt函数应用指南
- MobaXterm:超越Xshell的远程连接利器
- 创新手绘粉笔效果在毕业答辩中的应用
- 学生管理系统源码压缩包下载
- 深入解析NX二次开发函数UF-DRF-create-3pt-cline-fcir
- LabVIEW用户登录管理程序:注册、密码、登录与安全
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功