运筹学绪论
运筹学是一门应用于管理有组织系统的科学,根据问题的要求,通过数学分析与计算,做出综合性的合理安排,以期达到资源的最优化利用。
运筹学考虑系统的整体优化、多学科的配合以及模型方法的应用,其研究可以分为以下几个步骤:
1.分析与表述问题。
2.建立模型
3.对问题求解
4.对模型和由模型导出的解进行检验
5.建立对解的有效控制
6.方案的实施。
其中,建模是运筹学方法的核心和精髓。
线性规划与单纯形法
线性规划(Linear programming,简称LP),是运筹学中研究较早、发展较快、应用广泛、方法较成熟的一个重要分支,它是辅助人们进行科学管理的一种数学方法。研究线性约束条件下线性目标函数的极值问题的数学理论和方法。
线性规划模型的组成要素和特征
决策变量 指决策者为实现规划目标采取的方案、措施,是问题中要确定的未知量。
目标函数 指问题要达到目标的要求,表示为决策变量的函数。
约束条件 指决策变量取值时受到的各种限制,表示为决策变量的等式或不等式。
定义:目标决策变量为可控的连续变量,目标函数和约束条件都是线性的,这类模型称为线性规划模型。
线性规划问题的一般形式
1.标量形式
决策变量 {xi∣i=1,2,...,n}
目标函数 max(min) z=c1x1+c2x2+...+cnxn
约束条件 s.t.=⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧a11x1+a12x2+...+a1nxn≤(=,≥)b1,a21x1+a22x2+...+a2nxn≤(=,≥)b2, ⋮am1x1+am2x2+...+amnxn≤(=,≥)bm,xj≥0 或 xj≤0 或 xj无约束
一般用 n 表示决策变量的个数, m 代表约束等式/不等式的个数
通常情况下要求 m<n ,否则可能导致没有可行解
2.向量形式
决策变量 X=(x1 x2 … xn)T
目标函数 max(min) z=CX
约束条件 s.t.=⎩⎪⎨⎪⎧j=1∑nxjPj≤(=,≥)bX≥0
其中 C=(c1 c2 ... cn),Pj=(a1j a2j … amj)T,b=(b1 b2 ... bm)T.
注意列向量 P≥Q 意味着 ∀i Pi≥Qi,矩阵也类似
3.矩阵形式
max(min) z=CXs.t.={AX≤(=,≥)bX≥0其中 C=(c1 c2 ... cn),A=⎣⎢⎢⎢⎡a11a21⋮am1a12a22⋮am2………a1na2n⋮amn⎦⎥⎥⎥⎤,X=⎝⎜⎜⎜⎛x1x2⋮xn⎠⎟⎟⎟⎞,b=⎝⎜⎜⎜⎛b1b2⋮bn⎠⎟⎟⎟⎞
称为约束方程组变量的系数矩阵,简称为约束变量的系数矩阵。
线性规划问题的标准形式
对于一般的线性规划模型缺乏统一的结构,这在问题的求解上无疑增加了一定的难度,因此,我们在定义线性规划的标准形式如下:
决策变量 {xi∣i=1,2,...,n}
目标函数 max(min) z=c1x1+c2x2+...+cnxn
约束条件 s.t.=⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧a11x1+a12x2+...+a1nxn=b1,a21x1+a22x2+...+a2nxn=b2, ⋮am1x1+am2x2+...+amnxn=bm,x1≥0,x2≥0,…xn≥0
其中 bj≥0,1≤j≤m.
矩阵形式
max z=CXs.t.={AX=bX≥0
其中A∈Rm×n是一个行满秩矩阵
标准形式的转化
1.目标函数
目标函数的极小值⇔目标函数相反数的最大值,即 min z=CX⇒max z′=−CX
2.约束条件
i=1∑naijxj≤bi ⇒ i=1∑naijxj+xn+i=bi (xn+i≥0),其中 xn+i 称为松弛变量
i=1∑naijxj≥bi ⇒ i=1∑naijxj−xn+i=bi (xn+i≥0),其中 xn+i 称为剩余变量
松弛变量可以理解为资源的剩余,剩余变量可以理解为需求的溢出
bi≤0 ⇒ bi=−bi′,aij=−aij′ 其中 1≤j≤n , bi′≥0
3.决策变量
无约束决策变量:xj 无限制⇒xj=xj′−xj′′ ,其中xj′,xj′′≥0
非正变量:xj≤0⇒xj=−xj′,其中 xj′≥0
线性规划问题的解
可行解:如果一个非负矩阵 X 满足约束方程,则称矩阵 X 为可行解。
可行域:可行解组成的集合Ω={X∣AX=b,X≥0,X∈Rn}称为可行域,可行域中使得目标函数达到最大值的可行解称为最优解。
基:若 B 是 A 的一个 m×m 阶的满秩子矩阵,则称 B 为线性规划问题的一个基。B 中的每一个列向量用 Pj 表示,注意这里基是一组系数矩阵。
B=⎣⎢⎢⎢⎡b11b21⋮bm1b12b22⋮bm2………b1mb2m⋮bmm⎦⎥⎥⎥⎤=(P1,P2,…,Pm)
基解:假设 B 为一个基,可知存在 x1,…,xm 使得 x1P1+…xmPm=b,则称X=(x1,…,xm,0,…,0)T为基 B 的基解,其中 x1,…,xm 称为基变量,其余的决策变量称为非基变量。
基可行解:若满足变量非负约束条件的基解称为基可行解。
可行基:假对应于基可行解的基称为可行基。
退化解:当基解中的非零分量小于 m 个时,该基解是退化解
解的维恩图表示:
线性规划问题的解法
1.图解法(略) 2.单纯形法
预备知识
凸集:假设 C⊂Rn.若对任意 X,Y∈C 和 0<λ<1 ,都有 λX+(1−λ)Y⊂C ,则称 C 为一个凸集(Convex set)。从直观上讲,凸集没有凹入部分,其内部也没有空洞。
凸组合:设向量 {xi},i=1,2,…,n,如果有实数λi≥0 且 i=1∑nλi=1,则称 i=1∑nλixi 为向量 {xi} 的凸组合(凸线性组合)
顶点:假设 C 是凸集,且 X∈C .若不存在 X1,X2∈C 使得 X=λX1+(1−λ)X2 ,其中0<λ<1,则 X 称为 C 的一个顶点.
凸集内点与其顶点的关系:若 C 是有界的凸集,则对任意 X∈C ,都可以表示成 D 的顶点的凸组合。
几个基本定理(证明不考)
定理1:若线性规划问题存在可行解,则其可行域是凸集。
证明:我们我们考察如下的标准形式的线性规划问题:
max z=CXs.t.={AX=bX≥0
两个不同的解是 X 和 Y 满足 AX=AY=b,X≥0,Y≥0 ,则对于任意 0<λ<1,我们有 A(λX+(1−λ)Y)=b,λX+(1−λ)Y≥0 .所以可行域为凸集。
定理2:线性规划问题的基可行解对应线性规划问题可行域的顶点。
引理 1:线性规划问题的可行解 X 为基可行解的充要条件是 X 的正分量所对应的系数列向量是线性无关的.(由基可行解的定义可知必要性是显然的. )
证明:假设X为一个基可行解,若 X 不是一个顶点,则可行域中存在两个不同的点 Y,Z 使得 X=λY+(1−λ)Z,0<λ<1 ,不妨设 X 只有前 k 个分量大于0,显然 Y,Z 后 n−k 个分量都为0,我们有
i=1∑kxiPi=b, i=1∑kyiPi=b, i=1∑kziPi=b.
由于 P1,P2,…,Pk 线性无关(也就是方程只有一个解),我们得到 X=Y=Z ,与我们的假设矛盾,所以X一定是一个顶点。
如果假设X是一个顶点,并且假设其只有前 k 个分量大于0,若果 X 不是一个基可行解,则由引理可知 P1,P2,…,Pk 线性相关,说以存在 k 个不为零的实数使得
d1P1+d2P2+⋯+dkPk=0D=(d1,d2,…,dk,0,…,0)T
显然有 AX=0→A(X+sD)=A(X−sD)=b ,对任意实数 s 都成立,∃s>0,X+sD≥0 ∧ X−sD≥0,则 X 是可行域中 X+sD 和 X−sD 的中点,这与X是一个顶点矛盾,所以X一定是一个基可行解。
定理3:若线性规划问题存在最优解,则一定存在一个基可行解是最优解。
引理2:若X是一个最优解,且 X=λY+(1−λ)Z ,其中 Y,Z 是两个可行解,0<λ<1,则 CX=CY=CZ .(反证法易得)
证明:设X是一个最优解,且不妨假设其只有前k个分量大于0,若X是一个基可行解,则证毕;否则存在k个不全为0的实数使得(5)式成立,且A(X+rD)=A(X−sD)=b 对任意实数 s,r 都成立,同时X+rD和X−sD至少有一个正分量的数量小于 k。则由上一个引理可知我们得到了一个新的最优解,且这个最优解的正分量的数量小于 k,若新的到的最优解依然不是基可行解,重复上面的过程,我们可以得到一个新的最优解,这个最优解的正分量的数量小于 k,以此类推,经过有限步之后,我们肯定可以得到一个基可行解. 证毕.
定理4:若线性规划问题有可行解,则必有基可行解
定理5:若线性规划问题有最优解,则必有最优基可行解
单纯形法
确定初始基可行解
当线性规划问题全部为“≤”时,在化为标准型时,加入的m个松弛变量所构成的单位矩阵就可以构成一组基:设给定线性规划问题
max z=j−1∑ncjxjs.t.=⎩⎪⎨⎪⎧j=1∑nxjPj≤bxj≥0
在第 i 个约束条件上加上松弛变量 ssi,(i=1,…,m),化为标准形式
max z=j−1∑ncjxj+0i=1∑mxsis.t.=⎩⎪⎨⎪⎧j=1∑naijxj+xsi=b,(i=1,2,…,m)xj≥0
其约束方程的系数矩阵为
⎣⎢⎢⎢⎡a11a21⋮am1a12a22⋮am2………a1na2n⋮amn10⋮001⋮0………00⋮1⎦⎥⎥⎥⎤
这个系数矩阵中含有一个单位向量(Ps1,Ps2,…,Psm),只要以这个单位矩阵作为基,就可以立即解出基变量值 xsi=bi ,因为 bi≥0 ,因此 X=(0,…,0,b1,…,bm)T就是一个基可行解。
当线性规划问题中约束条件包含"=“或”≥"时,化为标准型后一般不包含单位矩阵,这时常用添加人工变量的方法人为构造一个单位矩阵作为基,称为人工基,具体方法在后面讨论。
基可行解的转换
不失一般性,设初始基可行解为
X(0)=(x10,x20,…,xm0,0,…,0n−m个)T=(XBXN),A=(B N)
其中B是对应的可行基,相应的,设C=(CB,CN),我们有AX(0)=(B,N)(XBXN)=BXB=b,我们有XB=B−1b,XN=0,
此时目标函数值 z(0)=CX=(CB CN)(XBXN)=CBXB−CNXN=CBB−1b.
原始方程组的增广形式为:
P1 P2 … Pm Pm+1 … Pj… Pn b⎣⎢⎢⎢⎡a11a21⋮am1a12a22⋮am2……⋱…a1ma2m⋮amma1,m+1a2,m+1⋮am,m+1………a1ja2j⋮amj………a1na2n⋮amnb1b2⋮bm⎦⎥⎥⎥⎤
因为 P1,P2,…,Pm 是 Rm 的一组基,所以其余的Pj都可以用这个基来表示,我们可以将Pj替换为BB−1Pj,所以有 B(XB−θB−1Pj)+θPj=b,我们假设XB−θB−1Pj≥0,那么我们得到了一个新的可行解
X~=(XB−θB−1Pj0)+θej
其中,ej 为第 j 个分量为1其余分量为0的单位列向量,这个可行解的目标函数值为
z=CX~=(CB CN)((XB−θB−1Pj0)+θej)=CBXB+θ(cj−CBB−1Pj)=z(0)+θ(cj−CBB−1Pj)
我们令 σj=cj−CBB−1Pj,则z~=z(0)+θσj,σj 被称为检验数。
如果 σj>0,则新的可行解可以使目标函数变大,且 θ 应该越大越好. 此时注意到为了保证X~是一个可行解,应该有 XB−θB−1Pj≥0,这个(B−1Pj)很难处理,我们不妨在求解之前通过初等行变换把B化为单位矩阵(想一想,为什么可以这么做?),即化成
P1P2…PmPm+1…Pj… Pn b⎣⎢⎢⎢⎡10⋮001⋮0……⋱…00⋮1a1,m+1a2,m+1⋮am,m+1………a1ja2j⋮amj………a1na2n⋮amnb1b2⋮bm⎦⎥⎥⎥⎤
假设B是一个单位矩阵且b>0,那么 θ 的最大值显然是 θ∗=min{aijbi∣∣∣∣aij>0,1≤i≤m},不妨设θ∗=arjbr,则(P1,…,Pr−1,Pr+1,…,Pm,Pj)构成一组新的基,这个基的基解和目标函数值为
X(1)=(XB−θ∗B−1Pj0)+θ∗ej,z(1)=z(0)+θ∗σj
最优性检验和解的判别
(1) 当 ∀ σj≤0时,表明现有顶点的目标函数的值比起相邻各顶点的目标
函数值都大,现以顶点对应的基可行解即为最优解。(为什么局部最优解等于全局最优解?)
(2)当 ∀ σj≤0∧∃ σr=0时,X~=(XB−θB−1Pj0)+θej 和 X(0)的线性组合都是最优解,因此有无限多个解
(3)当∃ σj>0∧(∀ θ>0) XB−θB−1Pj≥0时,目标函数值可以取到无限大,最优解无界。
单纯性法的计算步骤
- 将问题化为标准型
- 求出线性规划的初始基可行解,列出初始单纯形表
|
c |
c1 … … cm cm+1 … … cn |
|
|
CB |
XB |
x1 … … xm xm+1 … … xn |
b |
θ=aikbi |
c1 |
x1 |
1 … … 0 a1,m+1 …… a1n |
b1 |
θ1 |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
cm |
xm |
0 … … 1 am,m+1 …… amn |
bm |
θm |
|
σ |
0 … … 0 σj=cj−∑ciaij |
|
|
-
进行最优性检验
如果表中所有检验数 σj≤0,则表中的基可行解就是问题的最优解,计算停止。否则继续下一步。
-
从一个基可行解转换到另一个目标值更大的基可行解,列出新的单纯形表
a. 确定换入基的变量。选择 σin=max{σj ∣ σj>0} 对应的变量 xin 作为换入变量。
b. 确定换出变量。选择 θout=min{ajkbj ∣∣∣∣ ajk>0} 对应的变量 xout 作为换出变量
c. 用 xin 替换基变量中的 xout ,得到一个新的基。对应新的基可以找出一个新的基可行解,将基变量对应的矩阵化为单位矩阵,并相应地可以画出一个新的单纯形表。
单纯形法的进一步讨论
前面讨论了在标准型中系数矩阵有单位矩阵,很容易确定一组基可行解。在实际问题中有些模型并不含有单位矩阵,为了得到一组基向量和初基可行解,在约束条件的等式左端加一组虚拟变量,得到一组基变量。这种人为加的变量称为人工变量,构成的可行基称为人工基,用大M法或两阶段法求解,这种用人工变量作桥梁的求解方法称为人工变量法。
比如如下线性规划问题:
s.t.=max z=3x1+2x2−x3⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧−4x1+3x2+x3≥4,x1−x2+2x3≤10,−2x1+2x2−x3=−1,x1≥0,x2≥0,x2≥0
首先我们将其化为标准型:
s.t.=max z=3x1+2x2−x3⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧−4x1+3x2+x3x1−x2+2x32x1−2x2+x3xj≥0,1≤j≤5−x4+x5=4,=10,=1,
系数矩阵中不存在单位矩阵,无法建立初始单纯形表。
大M法
加若干个人工变量 x ,他们的目标函数决策系数是一个极小的负数(可以认为负无穷),以致于人工变量的取值在最优解时不可能不是0,举一个例子来理解:
解:首先将数学模型
故人为添加两个单位向量,得到人工变量单纯形法数学模型:
s.t.=max z=3x1+2x2−x3−My6−My7 (M→+∞)⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧−4x1+3x2+x3x1−x2+2x32x1−2x2+x3xj≥0,y6,y7>0−x4+x5+y6+x7=4,=10,=1,
M是一个很大的抽象的数,不需要给出具体的数值,可以理解为它能大于给定的任何一个确定数值,再用前面介绍的单纯形法求解该模型。如果最优解对应的基变量中包含人工变量,说明问题无可行解。
两阶段法
第一阶段
加入人工变量,第一阶段求解的目标函数是只包含人工变量的辅助问题,令目标函数中其他变量的系数取零,人工变量的系数取某个正的常数(一般取1),在保持原问题约束不变的条件下求这个目标函数极小化的解:
s.t.=min z=y6+y7⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧−4x1+3x2+x3x1−x2+2x32x1−2x2+x3xj≥0,y6,y7>0−x4+x5+y6+x7=4,=10,=1,
人工变量是虚拟的,在最优时不该有取值,必须是0,第一阶段的 z 必须是0。
-
如果第一阶段求解结果为 z=0,说明最优解的基变量中含有非零的人工变量,从而表明原问题无可行解,不必进行第二阶段,计算终止。
-
如果第一阶段求解结果 z=0,如果辅助问题的最优基变量中没有人工变量,进入第二阶段。
-
如果第一阶段求解结果 z=0,如果辅助问题的最优基变量中仍有为0的人工变量,这表明原问题有退化的情况,在辅助问题的最优的单纯形表中有:
yr+j=r∑arjyj+j∈JN∑arjxj=0
其中 JN 为非基变量下标集,这时又分两种情况:
(i). 若 arj 全为0,则人工变量所在行中有原变量(现在是非基变量)下的元素都是0,这表明原问题的约束方程中有多余的,将其去掉,转入第二阶段。
(ii). 若 arj 不全为0,则以 ars 为主元,进行换基迭代,最后转入转入第二阶段
第二阶段
在原问题中去除人工变量,并由第一阶段得到的最优解出发,继续寻找原问题的最优解。即在第一阶段的最优单纯形表中去掉人工变量所在的行列,将价值系数改换成原问题的价值系数,进一步迭代,求解原问题。
例题
有空再补 to be continue