第一章 线性规划 联系客服

发布时间 : 星期六 文章第一章 线性规划更新完毕开始阅读6d0b1aed0029bd64793e2c2d

一 线性规划

1.1 线性规划的实例与定义 例1 某机床厂生产甲、乙两种机床,每台销售后的利润分别为4000元与3000元。生产甲机床需用A、B机器加工,加工时间分别为每台2小时和1小时;生产乙机床需用A、B、C三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时数分别为A机器10小时、B机器8小时和C机器7小时,问该厂应生产甲、乙机床各几台,才能使总利润最大?

上述问题的数学模型:设该厂生产x1台甲机床和x2台乙机床时总利润最大,则

x1,x2应满足

z?4x1?3x2 (1) ?2x1?x2?10?x?x?8?12s.t.(约束条件)? (2)

?x2?7??x1,x2?0这里变量x1,x2称之为决策变量,(1)式被称为问题的目标函数,(2)中的几个不等式

是问题的约束条件,记为s.t.(即subject to)。上述即为一规划问题数学模型的三个要素。由于上面的目标函数及约束条件均为线性函数,故被称为线性规划问题。

总之,线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。

在解决实际问题时,把问题归结成一个线性规划数学模型是很重要的一步,但往往也是困难的一步,模型建立得是否恰当,直接影响到求解。而选取适当的决策变量,是我们建立有效模型的关键之一。

1.2 线性规划的Matlab标准形式

线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于号也可以是大于号。为了避免这种形式多样性带来的不便,Matlab中规定线性规划的标准形式为

(目标函数)maxmin cTx such that Ax?b x其中c和x为n维列向量,b为m维列向量,A为m?n矩阵。

例如线性规划

max cTx such that Ax?b x的Matlab标准型为

min ?cTx such that ?Ax??b

x1.3 线性规划问题的解的概念

一般线性规划问题的标准型为

minz??cjxj (3)

j?1n -1-

s.t. ?aijxj?bij?1ni?1,2,?,m (4)

可行解 满足约束条件(4)的解x?(x1,x2,?,xn),称为线性规划问题的可行解,而使目标函数(3)达到最小值的可行解叫最优解。

可行域 所有可行解构成的集合称为问题的可行域,记为R。 1.4 线性规划的图解法 10987654321z=1200246810x1+x2=8(2,6)x2=72x1+x2=10

图解法简单直观,有助于了解线性规划问题求解的基本原理。我们先应用图解法来求解例1。如上图所示,阴影区域即为LP问题的可行域R。对于每一固定的值z,使目标函数值等于z的点构成的直线称为目标函数等位线,当z变动时,我们得到一族平行直线。让等位线沿目标函数值减小的方向移动,直到等位线与可行域有交点的最后位置,此时的交点(一个或多个)即为LP的最优解。

对于例1,显然等位线越趋于右上方,其上的点具有越大的目标函数值。不难看出,本例的最优解为x*?(2,6)T,最优目标值z*?26。 从上面的图解过程可以看出并不难证明以下断言:

(1)可行域R可能会出现多种情况。R可能是空集也可能是非空集合,当R非空时,它必定是若干个半平面的交集(除非遇到空间维数的退化)。R既可能是有界区域,也可能是无界区域。

(2)在R非空时,线性规划既可以存在有限最优解,也可以不存在有限最优解(其目标函数值无界)。

(3)R非空且LP有有限最优解时,最优解可以唯一或有无穷多个。 (4)若线性规划存在有限最优解,则必可找到具有最优目标函数值的可行域R的“顶点”。

上述论断可以推广到一般的线性规划问题,区别只在于空间的维数。在一般的n维空间中,满足一线性等式

?axii?1ni?b的点集被称为一个超平面,而满足一线性不等式

?axii?1ni?b(或?aixi?b)的点集被称为一个半空间(其中(a1,?,an)为一n维行

i?1n向量,b为一实数)。有限个半空间的交集被称为多胞形,有界的多胞形又被称为多面

-2-

体。易见,线性规划的可行域必为多胞形(为统一起见,空集?也被视为多胞形)。

在一般n维空间中,要直接得出多胞形“顶点”概念还有一些困难。二维空间中的顶点可以看成为边界直线的交点,但这一几何概念的推广在一般n维空间中的几何意义并不十分直观。为此,我们将采用另一途径来定义它。

定义1 称n维空间中的区域R为一凸集,若?x,x?R及???(0,1),有

12?x1?(1??)x2?R。

定义2 设R为n维空间中的一个凸集,R中的点x被称为R的一个极点,若不12存在x、x?R及??(0,1),使得x??x1?(1??)x2。

定义1 说明凸集中任意两点的连线必在此凸集中;而定义2 说明,若x是凸集R的一个极点,则x不能位于R中任意两点的连线上。不难证明,多胞形必为凸集。同样也不难证明,二维空间中可行域R的顶点均为R的极点(R也没有其它的极点)。

1.5 求解线性规划的Matlab解法

单纯形法是求解线性规划问题的最常用、最有效的算法之一。单纯形法是首先由George Dantzig于1947年提出的,近60年来,虽有许多变形体已被开发,但却保持着同样的基本观念。由于有如下结论:若线性规划问题有有限最优解,则一定有某个最优解是可行区域的一个极点。基于此,单纯形法的基本思路是:先找出可行域的一个极点,据一定规则判断其是否最优;若否,则转换到与之相邻的另一极点,并使目标函数值更优;如此下去,直到找到某一最优解为止。这里我们不再详细介绍单纯形法,有兴趣的读者可以参看其它线性规划书籍。下面我们介绍线性规划的Matlab解法。

Matlab5.3中线性规划的标准型为 min cx such that Ax?b

xT基本函数形式为linprog(c,A,b),它的返回值是向量x的值。还有其它的一些函数调用形式(在 Matlab 指令窗运行 help linprog 可以看到所有的函数调用形式),如:

[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS) 这里fval返回目标函数的值,Aeq和beq对应等式约束Aeq*x?beq,LB和UB分别是变量x的下界和上界,x0是x的初始值,OPTIONS是控制参数。

例2 求解下列线性规划问题

maxz ?2x1?3x2?5x3

?x1?x2?x3?7? ?2x1?5x2?x3?10 ?x,x,x?0?123解 (i)编写M文件 c=[2;3;-5];

a=[-2,5,-1]; b=-10; 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 求解线性规划问题

-3-

min z?2x1?3x2?x3

?x1?4x2?2x3?8? ?3x1?2x2?6 ?x,x,x?0?123解 编写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 问题为

min|x1|?|x2|???|xn|s. t. Ax?b其中x?[x1?xn]T,A和b为相应维数的矩阵和向量。

要把上面的问题变换成线性规划问题,只要注意到事实:对任意的xi,存在

ui,vi?0满足

xi?ui?vi,|xi|?ui?vi

x?|xi||x|?xi事实上,我们只要取ui?i,vi?i就可以满足上面的条件。

22这样,记u?[u1?un]T,v?[v1?vn]T,从而我们可以把上面的问题

变成

min s. t. ??(ui?1ni?vi)

?A(u?v)?b

?u,v?0

§2 运输问题(产销平衡)

例5 某商品有m个产地、n个销地,各产地的产量分别为a1,?,am,各销地的需求量分别为b1,?,bn。若该商品由i产地运到j销地的单位运价为cij,问应该如何调运才能使总运费最省?

解:引入变量xij,其取值为由i产地运往j销地的该商品数量,数学模型为

min??cxi?1j?1mnijij

-4-