【笔记】运筹(上)——Rita_Aloha

目录

一、运筹学概论

1.运筹学的性质和特点

2.运筹学的工作步骤

3.运筹学的模型

二、线性规划

1.线性规划模型

2.单纯形法

3.人工变量法(分大M法和两阶段法),解决判别线性规划是否有可行解及寻求初始基本可行解这两个问题。

三、线性规划的对偶理论与灵敏性分析

1.对偶问题

2.对偶理论

3.对偶单纯形法

4.灵敏度分析

四、运输问题

1.运输问题的数学模型

2.表上作业法

五、目标规划

1.目标规划原理与概念

2.目标规划数学模型

3.解目标规划的单纯形法

六、整数规划

1.整数规划模型

2.纯整数规划的割平面法

3.混合整数规划的割平面法

4.分支定界法

5.0-1规划的分支定界法

6.最优分配法(指派问题)


一、运筹学概论

1.运筹学的性质和特点

莫斯(P.M.Morse)和金博尔(G.E.Kimball)曾对运筹学下的定义:“为决策机构在对其控制下业务活动进行决策时,提供以数量化为基础的科学方法。”

另一定义是:“运筹学是一门应用学科,它广泛应用现有的科学技术知识和数学方法,解决实际中提出的专门问题,为决策者选择最优决策提供定量依据。”因此,运筹学的又一定义是:“运筹学是一种给出问题坏的答案的艺术,否则的话问题的结果会更坏。”

为了有效地应用运筹学,前英国运筹学会会长托姆林森提出六条原则:

(1)合伙原则。是指运筹学工作者要和各方面人,尤其是同实际部门工作者合作。

(2)催化原则。在多学科共同解决某问题时,要引导人们改变一些常规的看法。

(3)互相渗透原则。要求多部门彼此渗透地考虑问题,而不是只局限于本部门。

(4)独立原则。在研究问题时,不应受某人或某部门的特殊政策所左右,应独立从事工作。

(5)宽容原则。解决问题的思路要宽,方法要多,而不是局限于某种特定的方法。

(6)平衡原则。要考虑各种矛盾的平衡,关系的平衡。

2.运筹学的工作步骤

运筹学在解决大量实际问题过程中形成了自己的工作步骤。

(1)提出和形成问题。即,要弄清问题的目标,可能的约束,问题的可控变量以及有关参数,搜集有关资料;

(2)建立模型。即把问题中可控变量、参数和目标与约束之间的关系用一定的模型表示出来;

(3)求解。用各种手段(主要是数学方法,也可用其他方法)将模型求解。解可以是最优解、次优解、满意解。复杂模型的求解需用计算机,解的精度要求可由决策者提出;

(4)解的检验。首先检查解步骤和程序有无错误,然后检查解是否反映现实问题;

(5)解的控制。通过控制解的变化过程决定对解是否要作一定的改变;

(6)解的实施。是指将解用到实际中必须考虑到实施的问题,如向实际部门讲清解的用法,在实施中可能产生的问题和修改。

以上过程反复进行。

3.运筹学的模型

模型是研究者对客观现实经过思维抽象后用文字、图表、符号、关系式以及实体模样描述所认识到的客观对象。利用模型可以进行一定预测、灵敏度分析等。

阿可夫等对运筹学的模型分析、构模等有较完整的描述。

模型有三种基本形式:①形象模型②模拟模型③符号或数学模型。

构造模型是一种创造性劳动,成功的模型往往是科学和艺术的结晶,构模的方法和思路有以下五种:

(1)直接分析法。按研究者对问题内在机理的认识直接构造出模型。

(2)类比法。有些问题可以用不同方法构造出模型,而这些模型的结构性质是类同的,就可以互相类比。

(3)数据分析法。对有些问题的机理尚未了解清楚,若能搜集到与此问题密切相关的大量数据,或通过某些试验获得大量数据,这样可以运用统计分析法建模。

(4)试验分析法。当有些问题的机理不清楚,又不能做大量试验来获得数据,这时只能通过做局部试验的数据加上分析来构造模型。

(5)想定(构想)法(scenario)。当有些问题的机理不清,又缺少数据,又不能做试验来获得数据时,只能在已有的知识、经验和某些研究的基础上,对于将来可能发生的情况给出合乎逻辑的设想和描述。然后运用已有的方法构造模型,并不断修正完善,直至比较满意为止。

模型的一般数学形式可用下列表达式描述:

        目标的评价标准                        U=f(x_{i},y_{j},\xi _{k})

        约束条件                                   g(x_{i},y_{j},\xi _{k})\geqslant 0

式中:

               x_{i}——可控变量;

                y_{j}——已知参数;

                \xi _{k}——随机因素。

准则可以是单一的,也可是多个的。约束条件可以没有,也可有多个。当g是等式时,即为平衡条件。当模型中无随机因素时,称它为确定性模型,否则为随机模型。随机模型的评价准则可用期望值,也可用方差,还可用某种概率分布表示。当可控变量只取离散值时,称为离散模型,否则称为连续模型。

二、线性规划

1.线性规划模型

(1)数学模型

线性规划模型具有下列三个要素:

①决策变量。每一个问题都用一组决策变量(x_{1},x_{2},...,x_{n})表示某一方案,这些决策变量的一组定值代表所给问题的一个具体方案。一般这些变量取值是非负且连续的。

②约束条件。这些约束条件都为线性等式或线性不等式,它们反映了所给问题对资源的客观限制及对所要完成的任务的各类要求。同时,对决策变量的符号要求也属于约束条件。

③目标函数。它可用决策变量及其有关的价值系数构成的线性函数来表示。按问题的不同,要求目标函数f实现最大值或最小值。

为此,线性规划模型的一般形式为

        目标函数               \min f=\sum_{j=1}^{n}c_{j}x_{j}  (或\max f=\sum_{j=1}^{n}c_{j}x_{j})                          (2-1)

        满足约束条件       \sum_{j=1}^{n}a_{ij}x_{j}\neq b_{j},i=1,...,m                                          (2-2)

                                     x_{j}\neq 0,j=1,...,n                                                     (2-3)

在线性规划的数学模型中,c_{j}为价值系数;a_{ij}称为技术系数;b_{i}称为限额系数。一般情况下m<n。线性规划问题模型是建立在以下隐含的重要假设基础上的。

①比例性。是指每个决策变量x_{j}在约束条件中与目标函数中数值变化时,按x_{j}对应的技术系数a_{ij}与价值系数c_{j}严格地成比例变化。

②可加性。即目标函数的总值是各组成部分值(c_{j}x_{j})之和;第i个约束关系式中各组成部分值(a_{ij}x_{j})之和就是第i项资源需求总值。决策变量是独立的,决策变量之间不发生关联,且不允许变量之间有交叉。

③可分性。决策变量的值具有可分性,即允许非整数值。

④确定性。即c_{j},a_{ij},b_{i}都是确定的已知值。

给出线性规划相关术语:

可行解——满足线性规划全部约束条件的解X=(x_{1},x_{2},...,x_{n})^{T}称为线性规划的可行解。

 可行域——全体可行解的集合称为线性规划的可行域,用符号K表示。

最优解——使目标函数实现最小值(或最大值)的可行解X^{*}=(x_{1},x_{2},...,x_{n})^{T}称为线性规划的最优解。

最优值——最优解的目标函数值f^{*}=\sum_{j=1}^{n}c_{j}x_{j}称为线性规划的最优值。

(2)标准形式

线性规划模型的标准型是指下列形式:

                                          \min f=\sum_{j=1}^{n}c_{j}x_{j}

                                s.t    . \sum_{j=1}^{n}a_{ij}x_{j}=b_{j},i=1,...,m

                                          x_{j}\geqslant 0, j=1,...,n

也就是说,线性规划的标准型,是指:对目标函数一律求最小值;决策变量一律为非负变量;约束条件除变量的非负条件外一律为等式约束。记线性规划模型的标准型为(LP)。

若令

          C=\begin{pmatrix} c_{1}\\ \vdots \\ c_{n} \end{pmatrix},b=\begin{pmatrix} b_{1}\\ \vdots \\ b_{m} \end{pmatrix},X=\begin{pmatrix} x_{1}\\ \vdots \\ x_{n} \end{pmatrix},A=\begin{pmatrix} a_{11} &\cdots & a_{1j} & \cdots &a_{1n} \\ \vdots & & \vdots & &\vdots \\ a_{m1} & \cdots \cdots & a_{mj} & \cdots & a_{mn} \end{pmatrix}

则(LP)可写成下列形式:

                                              \min f=C^{T}X

                                       s.t.  AX=b

                                              X\geqslant 0

                                                \min \left \{ C^{T}X| AX=b,X\geqslant 0 \right \}

对于(LP),其可行域K常写成:

                                                  K=\left \{ X|AX=b,X\geqslant 0 \right \}

各种形式的线性规划模型都可以化成标准型:

①(LP)与原有问题具有同样的可行域和最优解(若存在),只是最优值(若存在)相差一个符号而已。求解原有问题转化为求解(LP)

②约束条件为不等式

如果线性规划具有不等式约束\sum_{j=1}^{n}a_{ij}x_{j}\leqslant b_{i},这时可以引进一个新变量x',用下面两个约束条件代替这个不等式约束:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \left\{\begin{matrix} \sum_{j=1}^{n}a_{ij}x_{j}+x'= b_{i}\\ x'\geqslant 0 \end{matrix}\right.

x'为松弛变量。

如果线性规划具有不等式约束\sum_{j=1}^{n}a_{ij}x_{j}\geqslant b_{i},这时引进一个新变量x'',用下面两个约束条件代替这个不等式约束:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​\left\{\begin{matrix} \sum_{j=1}^{n}a_{ij}x_{j}-x''= b_{i}\\ x''\geqslant 0 \end{matrix}\right.

x''为剩余变量。

有时,x'x''统称为松弛变量,它们在目标函数中的系数都为零。

③决策变量x_{j}为自由变量:x_{j}\neq 0

引进两个新的非负变量x'x'',并令x_{j}=x'-x'',将其代入约束条件和目标函数中,消去x_{j},同时,在约束条件中加入约束x'\geqslant 0x''\geqslant 0

④约束条件中出现x_{j}\leqslant 0

引进新的非负变量x'_{j},令x_{j}=-x'_{j},代入约束条件和目标函数中消去x_{j},这样,x_{j}\leqslant 0化成x'_{j}\geqslant 0

⑤约束条件中出现x_{j}\geqslant h_{j}(h_{j}\neq 0)

引进新的非负变量x'_{j},令x_{j}=x'_{j}+h_{j},将它代入目标函数和约束条件中消去x_{j},这样,转化成x'_{j}+h_{j}\geqslant h_{j},即为x'_{j}\geqslant 0

 (3)基本可行解

                                          \min f=\sum_{j=1}^{n}c_{j}x_{j}                             (2-4)

                                s.t    . \sum_{j=1}^{n}a_{ij}x_{j}=b_{j},i=1,...,m              (2-5)

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​  x_{j}\geqslant 0, j=1,...,n                         (2-6)                     

①基(本解)

设A是约束方程组m×n(m<n)维系数矩阵。B是矩阵A中m×n阶非奇异子矩阵(|B|≠0),则称B是线性规划问题的一个基。即,矩阵B是由m个线性独立的列向量组成。可设

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        B=\begin{pmatrix} a_{11} & a_{12}& \cdots &a_{1m} \\ \vdots & \vdots & &\vdots \\ a_{m1} & a_{m2} & \cdots & a_{mm} \end{pmatrix}=(P_{1},P_{2},...,P_{m})

P_{j}(j=1,2,...,m)为基向量,与基向量P_{j}相应的变量x_{j}(j=1,2,...,m)为基变量,否则称为非基变量。假设该方程组系数矩阵A的秩为m,因m<n,故它有无穷多个解。假设前m个变量的系数列向量是线性独立的,这时式(2-5)可写成

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \begin{pmatrix} a_{11}\\ a_{21}\\ \vdots \\ a_{m1} \end{pmatrix}x_{1}+\begin{pmatrix} a_{12}\\ a_{22}\\ \vdots \\ a_{m2} \end{pmatrix}x_{2}+...+\begin{pmatrix} a_{1m}\\ a_{2m}\\ \vdots \\ a_{mm} \end{pmatrix}x_{m}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​    =\begin{pmatrix} b_{1}\\ b_{2}\\ \vdots \\ b_{m} \end{pmatrix}-\begin{pmatrix} a_{1,m+1}\\ a_{2,m+1}\\ \vdots \\ a_{m,m+1} \end{pmatrix}x_{m+1}-...-\begin{pmatrix} a_{1n}\\ a_{2n}\\ \vdots \\ a_{mn} \end{pmatrix}x_{n}                            (2-7)

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​       \sum_{j=1}^{m}P_{j}x_{j}=b-\sum_{j=m+1}^{n}P_{j}x_{j}

 方程组(2-7)的一个基是

X_{B}是对应于这个基的基变量

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        X_{B}=(x_{1},x_{2},...,x_{m})^{T}

现若令(2-7)的非基变量x_{m+1}=x_{m+2}=...=x_{n}=0,这时变量的个数等于线性方程的个数。用高斯消去法,求出一个解

X=(x_{1},x_{2},...,x_{m},0,...,0)^{T}

该解的非零分量的数目不大于方程个数m,称X为基解。有一个基,就可以求出一个基解。

②基(本)可行解

满足非负条件(2-6)​的基解称为基可行解。基可行解的非零分量的数目也不大于m,并且都是非负的。

③可行基

对应于基可行解的基,称为可行基。约束方程组(2-5)具有基解的数目最多是C_{n}^{m}个。一般基可行解的数目小于基解的数目。另外,基解中的非零分量的个数小于m时,该基解是退化解。

(4)线性规划的几何特征

①基本概念

i.凸集

设K是n维欧式空间的一点集,若任意两点X^{(1)}\in K,X^{(2)}\in K的连线上的所有点\alpha X^{(1)}+(1-\alpha) X^{(2)}\in K,(0\leqslant \alpha \leqslant 1),则称K为凸集

ii.凸组合

X^{(1)}, X^{(2)},..., X^{(k)}是n维欧式空间中的k个点。若存在\mu_{1},...,\mu_{k},且0\leqslant \mu_{i}\leqslant 1,i=1,...,k;\sum_{i=1}^{k}\mu _{k}=1,使

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​  X=\mu _{1}X^{(1)}+\mu _{2}X^{(2)}+...+\mu _{k}X^{(k)}

则称X为X^{(1)},X^{(2)},...,X^{(k)}的凸组合。(当时0< \mu_{i}< 1,称为严格凸组合)

iii.顶点

设K是凸集,X\in K;若X不能用不同的两点X^{(1)}\in KX^{(2)}\in K的线性组合表示为

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        X=\alpha X^{(1)}+(1-\alpha )X^{(2)},(0<\alpha <1)

则称X为K的一个顶点(或极点)。

②几个定理

 【定理1】若线性规划问题存在可行域,则其可行域

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        D=\left \{ X|\sum_{j=1}^{n}P_{j}x_{j}=b,x_{j}\geqslant 0 \right \}

是凸集。

[引理1]线性规划问题的可行解X=(x_{1},...,x_{n})^{T}为基可行解的充要条件是X的正分量所对应的系数列向量是线性独立的。

【定理2】线性规划问题的基可行解X对应于可行域D的顶点。

[引理2]若K是有界凸集,则任何一点X\in K可表示为K的顶点的凸组合。

【定理3】若可行域有界,线性规划问题的目标函数一定可以在其可行域的顶点上达到最优。

2.单纯形法

(1)单纯形法求解线性规划的思路

一般线性规划问题具有线性方程组的变量数大于方程个数,这时有不定的解。单纯形法是在高斯消去法的基础上,发展为求解变量数多于方程数,并且使目标函数值优化的方法。从线性方程组中找出一个个的单纯形,每一个单纯形可以求得一组解,然后再判断该解使目标函数值是增大还是变小,决定下一步选择的单纯形,这就是迭代。直到目标函数实现最大值或最小值为止,这样问题就得到了最优解。

注意:单纯形是指0维中的点,一维中的线段,二维中的三角形,三维中的四面体,n维中的有n+1个顶点的多面体。

(2)单纯形法的原理

如果(LP)的可行域K不是空集,从K的某一顶点X^{0}出发,判别它是否为最优解?若不是,沿着边界找它邻近的另一个顶点,它应比原来的顶点优,看它是否为最优解。若不是,再沿着边界找它邻近的顶点。通过逐次迭代,直至找出最优解。

(3)单纯形法的基本步骤

①求(LP)的初始基本可行解X^{0},并将(LP)的有关信息制成表格(称为单纯形表)

②判别X^{0}是否为最优解。为此,需要给出一个基本可行解是否为最优解的判别标准

③若X^{0}不是最优解,则应另求基本可行解X^{'},且使C^{T}X^{'}<C^{T}X^{0}(至少C^{T}X^{'}\leqslant C^{T}X^{0})。同时,由X^{0}相应的单纯形表给出X^{'}相应的单纯形表。

④若X^{'}不是最优解,则视X^{'}X^{0},重复上述步骤,直至(LP)求得最优解或判定f在K内无下界。

3.人工变量法(分大M法和两阶段法),解决判别线性规划是否有可行解及寻求初始基本可行解这两个问题。

三、线性规划的对偶理论与灵敏性分析

1.对偶问题

(1)对偶问题的提出

对偶是指对同一事物(问题)从不同角度(立场)观察,有两种拟对立的表述。

给出一般线性规划(P)的对偶问题(D)的定义:

原有问题(P):

        \min f=\sum_{j=1}^{n}c_{j}x_{j}

s.t.\sum_{j=1}^{n}a_{ij}x_{j}\geqslant b_{i},i\in M_{1}

      \sum_{j=1}^{n}a_{ij}x_{j}= b_{i},i\in M_{2}

      x_{j}\geqslant 0,j \in N_{1}

       x_{j}\neq 0,j\in N_{2}

对偶问题(D):

        \max z=\sum_{i=1}^{m}b_{i}u_{i}

s.t.u_{i}\geqslant 0,i \in M_{1}

     u_{i}\neq 0,i\in M_{2} 

     \sum_{i=1}^{m}a_{ij}u_{i}\leqslant c_{j},j\in N_{1}

     \sum_{i=1}^{m}a_{ij}u_{i}=c_{j},j\in N_{2}

其中指标集

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        M_{1}\cap M_{2}=\O ,M_{1}\cup M_{2}=\left \{ 1,...,m \right \}

                                                  N_{1}\cap N_{2}=\O ,N_{1}\cup N_{2}=\left \{ 1,...,n \right \}

也就是说,由原有问题(P)构造对偶问题(D)的一般规则为:

①在原有问题(P)中,目标函数为求\min f=\sum_{j=1}^{n}c_{j}x_{j},其约束条件同一成\geqslant或=。

②在对偶问题(D)中,目标函数为求\max z=\sum_{i=1}^{m}b_{i}u_{i}

③在原有问题(P)中与b_{i}相应的一个约束条件,对应着对偶问题(D)的一个变量u_{i}:如果该约束条件为不等式,则u_{i}\geqslant 0;如果该约束条件为等式,则u_{i}为自由变量

④原有问题(P)的每个变量x_{j}对应着对偶问题(D)的一个约束条件:如果(P)中x_{j}\geqslant 0,则(D)中为\sum_{i=1}^{m}a_{ij}u_{i}\leqslant c_{j};如果x_{j}\neq 0,则\sum_{i=1}^{m}a_{ij}u_{i}= c_{j}

称问题(P)和问题(D)为一组对偶规划。

(2)对偶问题的基本性质

①对称性:对偶问题的对偶是原问题。

②弱对偶性:若\bar{X}是原有问题的可行解,\bar{Y}是对偶问题的可行解,则存在C\bar{X}\leqslant \bar{Y}b

③无界性:若原有问题(对偶问题)为无界解,则其对偶问题(原有问题)无可行解

④可行解是最优解时的性质:设\hat{X}是原问题的可行解,\hat{Y}是对偶问题的可行解,当C\hat{X}=\hat{Y}b时,\hat{X},\hat{Y}是最优解

⑤对偶定理:若原有问题有最优解,那么对偶问题也有最优解;且目标函数值相等

⑥互补松弛性:若\hat{X},\hat{Y}分别是原有问题和对偶问题的可行解。那么\hat{Y}X_{s}=0Y_{s}\hat{X}=0,当且仅当\hat{X},\hat{Y}为最优解。

⑦设原有问题是

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \max z=CX;AX+X_{s}=b;X,X_{s}\geqslant 0

它的对偶问题是

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \min \omega =Yb;YA-Y_{s}=C;Y,Y_{s}\geqslant 0

则原有问题单纯形表的检验数行对应对偶问题的一个基解,对应关系如下:

原有问题X_{B}X_{N}X_{S}
检验数0C_{N}-C_{B}B^{-1}N-C_{B}B^{-1}
对偶问题Y_{s_{1}}-Y_{s_{2}}-y

2.对偶理论

【定理3-1】设\hat{X}\hat{U}为(LP)和(LD)的可行解,则

  1. b^{T}\hat{U}\leqslant C^{T}\hat{X}
  2. b^{T}\hat{U}= C^{T}\hat{X}的充要条件为\hat{X}^{T}(C-A^{T}\hat{\hat{U}})=0
  3. 如果b^{T}\hat{U}= C^{T}\hat{X}成立,则\hat{X}\hat{U}分别为(LP)和(LD)的最优解

【定理3-2】(对偶性定理)

  1. 若(LP)有可行解,但目标函数值在可行域上无下界,则(LD)不可行
  2. 若(LD)有可行解,但目标函数值在可行域上无上界,则(LP)不可行
  3. (LP)和(LD)同时有最优解的充要条件为他们同时有可行解
  4. 若应用单纯形法求解(LP),得基本最优解X*,相应最优基为B,则单纯形因子U^{*}=(C_{B}^{T}B^{-1})^{T}为(LD)的最优解,且C^{T}X^{*}=b^{T}U^{*}
  5. 若(LP)有最优解X*,则(LD)必有最优解U^{*}存在,且C^{T}X^{*}=b^{T}U^{*}
  6. 若(LP)有可行解,(LD)无可行解,则(LP)的目标函数值在可行域上无下界。
  7. 若(LD)有可行解,(LP)无可行解,则(LD)的目标函数值在可行域上无下界。

【定理3-3】(松弛互补定理)设\hat{X}=(\hat{x}_{1},..,\hat{x}_{j},...,\hat{x}_{n})^{T}\hat{U}=(\hat{u}_{1},...,\hat{u}_{i},...,\hat{u}_{m})^{T}分别为原有问题和(P)和对偶问题(D)的可行解,则它们分别为(P)和(D)的最优解的充要条件(松弛互补条件)为

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \hat{x}_{j}(c_{j}-\sum_{i=1}^{m}a_{ij}\hat{u}_{i})=0,j=1,...,n

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        (\sum_{j=1}^{n}a_{ij}\hat{x}_{j}-b_{i})\hat{u}_{i}=0,i=1,...,m

对照(P)和(D)的定义,可见,松弛互补条件反映了(P)中变量(或约束条件)与(D)中对应的约束条件(或变量)在最优情况下相互之间的制约关系:

  1. 如果可行解\hat{X}中变量\hat{x}_{j}>0(j\in N_{1}),则(D)中对应的约束\sum_{i=1}^{m}a_{ij}\hat{u}_{i}\leqslant c_{j}(j\in N_{1})在最优情况下应成为等式约束:\sum_{i=1}^{m}a_{ij}\hat{u}_{i}=c_{j}(j\in N_{1})
  2. 如果可行解\hat{U}中变量\hat{u}_{i}>0(i\in M_{1}),则(P)中对应的约束\sum_{j=1}^{n}a_{ij}\hat{x}_{i}\geqslant b_{i}(i\in M_{1})在最优情况下应成为等式约束:\sum_{j=1}^{n}a_{ij}\hat{x}_{i}= b_{i}(i\in M_{1})
  3. 如果(P)中约束条件为严格不等式\sum_{j=1}^{n}a_{ij}\hat{x}_{i} > b_{i}(i\in M_{1}),则(D)中对应的变量在最优情况下有\hat{u}_{i}=0
  4. 如果(D)中约束条件为严格不等式\sum_{i=1}^{m}a_{ij}\hat{u}_{i} < c_{j}(j\in N_{1}),则(D)中对应的变量在最优情况下有\hat{x}_{j}=0​​​​​​​

3.对偶单纯形法

(1)对偶单纯形法

若B为(LP)的一个基,则r_{j}=c_{j}-C^{T}_{B}B^{-1}A,j\geqslant 0j=1,...,n都成立的充要条件为:单纯形因子U=(C^{T}_{B}B^{-1})^{T}是对偶问题(LD)的可行解。如果基B所对应的单纯形因子U=(C^{T}_{B}B^{-1})^{T}是对偶问题(LD)的可行解,则基B称为对偶可行基。

根据对偶理论,可以构造一个求解线性规划问题(LP)的新方法——对偶单纯形法。

(2)对偶单纯形法的特点

迭代一直在基本解中进行,基B始终为对偶可行基。

【定理3-4】设X为(LP)关于基B的基本解,且T(B)中r=(r_{1},...,r_{n})^{T}\geqslant 0,而\bar{b}_{k}<0,y_{kj}\geqslant 0(j=1,...,n),则(LP)无可行解。

(3)对偶单纯形法的计算步骤

①选取(LP)的初始指标集I_{B}和基B(B为对偶可行基,U=(C^{T}_{B}B^{-1})^{T}为(LD)的可行解),作单纯形表T(B)

\bar{b}_{i}\geqslant 0i=1,...,m是否都成立?

若是,则X_{B}=\bar{b},X_{D}=0即为(LP)最优解;f_{0}为它的最优值f^{*},算法终止。

若否,则定指标k:\bar{b}_{k}=\min \left \{ \bar{b}_{i}| \bar{b}_{i}<0,1\leqslant i\leqslant m \right \}

y_{kj}\geqslant 0j=1,..,n是否都成立?

若是,则(LP)不可行,算法终止。

若否,则根据最大比值准则定指标t:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \frac{r_{t}}{y_{kj}}=\max \left \{ \frac{r_{t}}{y_{kj}}|y_{kj}<0,j\in I_{D} \right \}

④以y_{kj}为枢轴元素进行转轴,得新的T(B),I_{B},I_{D}转步骤②

4.灵敏度分析

当线性规划问题中某一个或某几个系数发生变化后,原来已得结果一般会发生变化。当然可以用单纯形法从头计算,以便得到新的最优解。这样做很麻烦,而且也没有必要。因在单纯形法迭代时,每次运算都和基变量的系数矩阵B有关,因此可以把发生变化的个别系数,经过一定计算后直接填入最终计算表,并进行检查和分析,可按下表中几种情况处理:

原有问题对偶问题结论或继续计算的步骤
可行解可行解表中的解仍为最优解
可行解非可行解用单纯形法继续迭代求最优解
非可行解可行解用对偶单纯形法继续迭代求最优解
非可行解非可行解引进人工变量,编制新的单纯形表,求最优解

四、运输问题

1.运输问题的数学模型

(1)运输问题的数学模型

运输问题这个名称的获得是因为这类模型首先在物资运输的合理规划中形成并运用的缘故。建立运输问题的线性规划模型:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \min f=\sum_{i=1}^{m}\sum_{j=1}^{n}c_{ij}x_{ij}

                                                   s.t. \sum_{j=1}^{n}x_{ij}=a_{i},i=1,...,m

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​ \sum_{i=1}^{m}x_{ij}=b_{j},j=1,...,n

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​ x_{ij}\geqslant 0,i=1,...,m;j=1,...,n

其中\sum_{i=1}^{m}a_{i}=\sum_{j=1}^{n}b_{j},称上述模型为运输问题的标准模型,它含有m\times n个变量。由于收发平衡,有\sum_{i=1}^{m}a_{i}=\sum_{j=1}^{n}b_{j},所以运输问题模型中m+n个等式约束不是相互独立的。可以证明,若这m+n个等式约束删除任何一个,则运输问题的可行域不变。所以,运输问题的基本解仅有m+n-1个基本向量。

对于运输问题来说,单纯形法的步骤在手算时,可在运输表格上直接进行,所以俗称运输问题的求解方法为表上作业法。

(2)有关的基本概念

①设E是运输问题的一组变量,如果对E中变量作适当的排列后能得到下列形式:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        x_{i_{1}j_{1}},x_{i_{1}j_{2}},x_{i_{2}j_{2}},x_{i_{2}j_{3}},...,x_{i_{s}j_{s}},x_{i_{s}j_{1}},

其中i_{1},i_{2},...,i_{s}互不相同,j_{1},j_{2},...,j_{s}互不相同,则称E为运输问题的一个闭回路。闭回路中相应变量称为闭回路的顶点。

②设Q是运输问题的一组变量,若x_{ij}为Q中一个变量,且x_{ij}是第i行或第j列中属于Q的唯一变量,则称x_{ij}为Q的一个孤立点。

【定理4-1】

①在运输问题的m+n个等式约束方程中只有m+n-1个方程是相互独立的,而且其中任意一组m+n-1个约束方程都是相互独立的。

②在运输问题的mn个变量中,选取m+n-1个变量构成变量组Q,则Q能成为基本变量组的充要条件是:Q中不存在闭回路。

③设Q是运输问题的一组基本变量,x_{st}为非基本变量,则x_{st}必对应一条唯一的闭回路E。E除顶点x_{st}外,其余顶点都为基本变量。

④如果在运输问题中a_{i}(i=1,...,m)b_{j}(j=1,...,n)都为整数,则任一基本解中各变量的取值均为整数。

2.表上作业法

表上作业法是单纯形法在求解运输问题时的一种简化方法,其实质是单纯形法,故也称为运输问题单纯形法。但具体计算和术语有所不同。可归纳为:

①找出初始基可行解。即在有(m×n)格的产销平衡表上按一定的规则,给出m+n-1个数字,称为数字格。它们就是初始基变量的取值。

②求各非基变量的检验数,即在表上计算空格的检验数,判别是否达到最优解。如已是最优解,则停止计算,否则转到下一步。

③确定换入变量和换出变量,找出新的基可行解。在表上用闭回路法调整。

④重复②、③直到得到最优解为止

(1)初始基本可行解的寻求

①西北角法

西北角法按下列规则在mn个变量中选择m+n-1个基本变量构成变量组Q:从运输表格的西北角x_{11}开始,优先安排编号小的发点和收点之间的运输任务。

②最小元素法

最小元素法采用如下规则选取m+n-1个基本变量:优先安排单位运价c_{ij}小的发点A_{i}与收点B_{j}之间的运输任务。

(2)位势法

在求出运输问题的一个基本可行解和基本变量组Q以后,根据单纯形法步骤,应该计算变量x_{ij}的检验数r_{ij}。下面介绍位势法。

引进m+n个变量u_{1},...,u_{m},v_{1},...,v_{n}(其中有一个变量可以自由定值),对于x_{ij}\in Q,构造方程:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​       u_{i}+v_{j}=c_{ij}(x_{ij}\in Q)

因为Q有m+n-1个基本变量,所以我们得到了m+n-1个方程。于是这m+n个变量中有一个变量可以自由定值,为了统一起见,不妨令u_{1}=0。从而,由

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \left\{\begin{matrix} u_{1}=0\\ u_{i}+v_{j}=c_{ij}(x_{ij}\in Q) \end{matrix}\right.

可以求出m+n-1个变量的值。我们把上述方程组的一组解称为位势。

求出位势后,用下列公式来计算变量x_{ij}的检验数:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        r_{ij}=c_{ij}-(u_{i}+v_{j})

五、目标规划

1.目标规划原理与概念

查恩斯(A.Charnes)和库柏(W.Coopre)于1961年创立的目标规划理论,通过引入偏差变量、目标约束等概念解决了目标规划方面的问题。下面,对目标规划的基本概念逐一进行介绍。

负偏差变量d^{-}——实现值未能达到目标期望值的偏差值,d^{-}\geqslant 0

正偏差变量d^{+}——实现值超过目标期望值的偏差值,d^{+}\geqslant 0

引进偏差变量d^{-}d^{+}后,可以把目标期望值放入约束条件中,并称之为目标约束。相应的,模型中原来的约束条件称为系统约束。目标约束相对于系统约束来说是一种“软约束”。所谓“软约束”,是指目标约束中目标函数与目标期望值之间没有硬性约束关系,目标期望值可能恰好满足,可能不满足,也可能过量满足。其具体满足的程度,可通过偏差变量d^{-}d^{+}的取值加以衡量。

对于函数f来说,根据决策者的期望,其实现的目标要求可以写成下面3种情形之一:

①要求恰好达到目标期望值,表达成\min f=d^{-}+d^{+}。如果d^{-}+d^{+}=0,就说明恰好实现目标期望值

②希望超过目标期望值,即未达到目标期望值的偏差变量d^{-}为最小,表达成\min f=d^{-}。当d^{-}=0时,则完全实现该目标

③希望不超过目标期望值,即超过目标期望值的偏差变量d^{+}为最小,表达成\min f=d^{+}。当d^{+}=0时,则完全实现该目标。

为了区别于原来线性规划中目标函数的意义,上述函数f称为目标规划的达成函数。

对于多目标决策问题,目标规划依据“系统目标分级、赋权,决策问题逐级优化求解”的基本原理,通过引进“目标优先因子”和“相对权重系数”等概念与参数,很好地解决了模型的描述和求解。

通常,目标规划问题中各个目标的优先等级(优先因子)和同级目标中各个目标的相对权重系数,决策者应该经过专家评审讨论来决定。另外,在目标分级时,一般不同等级的目标,其度量单位可以不同,但同一等级的目标,其度量单位应该相同,以便研究确定其相对权重系数。

2.目标规划数学模型

在建立线性规划模型的基础上,建立目标规划模型的基本步骤为:①对各个目标确定目标期望值

②对各个目标引进偏差变量,建立目标约束方程

③确定目标优先等级和相对权重系数,建立达成函数

这里,目标规划中的达成函数完全是由偏差变量、目标优先因子和相对权重系数组成的,这与线性规划中的目标函数是有区别的。

为了建立目标规划的一般数学模型,给出下面符号:

Q——目标规划中目标的个数;

Z_{q}—第q个目标的目标函数Z_{q}=\sum _{j=1}^{n}c_{qj}x_{j},q=1,2,...,Q

E_{q}——第q个目标的目标期望值,q=1,2,...,Q

d_{q}^{-},d_{q}^{+}——第q个目标约束引进的偏差变量,q=1,2,...,Q

Z_{q}+d_{q}^{+}-d_{q}^{-}=E_{q}——第q个目标约束,q=1,2,...,Q

S——目标规划中目标的优先等级数

P_{1},...,P_{t},...,P_{S}——目标优先因子,有P_{1}>>...>>P_{t}>>...>>P_{S}

\omega _{tq}^{+},\omega _{tq}^{-}——第q个目标的正负偏差变量在第t个优先级中的相对权重系数(在同一t优先级中一般仅包含数个目标,这些目标的正负偏差变量在该级达成函数中的相对权重系数至少有一个不为零,而那些不属于t优先级的目标,其正负偏差变量在该优先级中的相对权重系数均为零)

f_{t}——第t个优先级的达成函数f_{t}=\sum _{q=1}^{Q}(\omega_{tq}^{+}d_{q}^{+}+ \omega_{tq}^{-}d_{q}^{-} )

于是,得到下列目标规划的一般模型:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​       \min f=\sum _{t=1}^{S}P_{t}f_{t}

                                        s.t.  Z_{q}+d_{q}^{-}-d_{q}^{+}=E_{q},q=1,2,...,Q

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​       \sum_{j=1}^{n}a_{ij}x_{j}\neq b_{i},i=1,2,...,m

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​       x_{j}\geqslant 0,j=1,2,...,n

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​       d_{q}^{-}\geqslant 0,d_{q}^{+}\geqslant 0,q=1,2,...,Q

对于上述目标规划问题,应严格按照“级别较高(同级权重较大)的目标优先实现,在其不退化的前提下,再考虑次级目标(同级权重较小)尽可能实现”的逐级优化原则进行求解。

3.解目标规划的单纯形法

目标规划的数学模型结构与线性规划的数学模型结构形式上没有本质的区别,所以可用单纯形法求解。但要考虑目标规划的数学模型一些特点,作以下规定:

(1)因目标规划问题的目标函数都是求最小化,所以以c_{j}-z_{j}\geqslant 0(j=1,2,...,n)为最优准则

(2)因非基变量的检验数中含有不同等级的优先因子,即

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​    c_{j}-z_{j}=\sum a_{kj}P_{k},j=1,2,...,n;k=1,2,...,K

P_{1}>>P_{2}>>...>>P_{K}:从每个检验数的整体来看:检验数的正、负首先决定于P_{1}的系数a_{1j}的正负。若a_{ij}=0,这时此检验数的正、负就决定于P_{2}的系数a_{2j}的正、负,下面可以以此类推。

解目标规划问题的单纯形法的计算步骤:

(1)建立初始单纯形表,在表中将检验数行按优先因子个数分别列成K行,置k=1,即对应优先因子行中的第一行开始计数。

(2)检查该行中是否存在负数,且对应列的前k-1行的系数是零。若有负数取其中最小者对应的变量为换入变量,转(3)。若无负数则转(5)。

(3)按最小比值规则确定换出变量,当存在两个和两个以上相同的最小比值时,选取具有较高优先级别的变量为换除变量。

(4)按单纯形法进行基变换运算,建立新的计算表,返回(2)。

(5)当k=K时,计算结束。表中的解即为满意解。否则置k=k+1,返回(2)。

六、整数规划

对某些实际问题而言,问题的全体或部分决策变量被限制为离散型的整数值,我们称这样的规划问题为整数线性规划,简称整数规划,简记为(IP)。

1.整数规划模型

人们对整数规划感兴趣,除了有些问题的实际变量必须是整数这个原因外,还因为现实生活中有些问题的解必须满足许多重要的特殊约束条件,或者在建立模型时,必须考虑一些重要原因,如若不引进附加的整数变量(仅取0或1,称为逻辑变量或0-1变量),那么,要完整地建立模型并把问题说清楚将是十分困难的。

整数线性规划中,如果所有的变量都限制为(非负)整数,就称为纯整数线性规划(pure integer linear programming)或称为全整数线性规划(all integer linear programming);如果仅一部分变量限制为整数,则称为混合整数线性规划(mixed integer linear programming)。整数线性规划的一种特殊情况是0-1规划,它的变量取值仅限于0或1。

即,整数规划可以分成下列几种类型:

(1)纯整数规划,简记(AIP):

        ​​​​​​​        ​​​​​​​        ​​​​​​​        \min \{ C^{T}X|AX=b,X\geqslant 0,X各分量为整数\}

(2)混合整数规划,简记为(MIP):

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \min \{ C^{T}X|AX=b,X\geqslant0,x_{j}为整数,j\in N_{1}\}

其中N_{1}\sqsubset \left \{ 1,...,n \right \}

(3)0-1规划:(LP)中X的分量或为0或为1,简记为(BIP)。

在上述模型中,A=(a_{ij})_{m\times n},b=(b_{1},...,b_{m})^{T},C=(c_{1},...,c_{n})^{T}a_{ij},b_{i},c_{j}均为整数(i=1,...,m;j=1,...,n)

将相应的线性规划的最优解“化整”来解原整数规划,虽是最容易想到的,但常常得不到整数规划的最优解,甚至根本不是可行解。因此有必要对整数规划的解法进行专门研究。

对于混合整数规划:

        ​​​​​​​        \max \{C^{T}X+D^{T}Y|A_{1}X+A_{2}Y\leqslant n,X\geqslant 0,Y的各个分量为0-1变量\}

或者

        ​​​​​​​     \max \{C^{T}X+D^{T}Y|A_{1}X+A_{2}Y\leqslant n,X\geqslant 0,X的各分量为整数;Y\geqslant 0\}

已有本德斯(Benders)分解算法,感兴趣的读者可以参阅线性规划有关著作。

2.纯整数规划的割平面法

割平面法实质上仍然是用解线性规划的方法来求解整数规划问题:首先不考虑变量是整数这一条件,仍然先解其相应的线性规划,若得到非整数的最优解,则增加能割去非整数解的线性约束条件,使得由原可行域中切割掉一部分,切割掉的部分只包含非整数解,即没有切割掉任何整数可行解。这个方法是R.E.Gomory提出来的,所以又称为Gomory的割平面法。

(1)割平面法的几何特征

记纯整数规划(AIP)的可行域为K_{AIP},若将(AIP)中要求变量为整数这个约束去掉,则得到相应的线性规划(LP),记(LP)的可行域为K_{LP}

对(LP)求解。若(LP)的最优解X^{*}是一个整数解(整数向量),那么X^{*}当然是(AIP)的最优解;若X^{*}不是整数解,设法对原线性规划(LP)增加一个线性约束条件(称它为割平面),把包含X^{*}在内的不含整数解的一部分集合从(LP)的可行域K_{LP}切割出去,再要求增加了这个约束条件后新的线性规划(LP_{1})的最优解X^{**},如果X^{**}是整数解,则X^{**}就是(AIP)的最优解,否则再次增加线性约束条件而重复上述过程。

(2)柯莫利割

割平面的关键在于如何寻找适当的切割约束条件,引进几个记号:

x为一个实数,则\left \lfloor x \right \rfloor表示不超过x的最大的整数;\left \lceil x \right \rceil表示不小于x的最小整数;\left \langle x \right \rangle=x-\left \lfloor x \right \rfloor(有\left \langle x \right \rangle\geqslant 0)。

设B为(LP)的一个基,X为(AIP)的一个可行解。由K_{AIP}\subset K_{LP},所以X也是(LP)的一个可行解,因此,X应满足单纯形表T(B)所表示的方程组:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        x_{B_{i}}+\sum_{j\in I_{D}}y_{ij}x_{j}=\bar{b}_{i};i=1,...,m                                       (6-1)

因为X\geqslant 0,\left \lfloor y_{ij} \right \rfloor\leqslant y_{ij},所以

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        x_{B_{i}}+\sum_{j\in I_{D}} \left \lfloor y_{ij} \right \rfloor x_{j}\leqslant \bar{b}_{i}

由于X\in K_{AIP},因而X的每个分量均为整数,故

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​      x_{B_{i}}+\sum_{j\in I_{D}} \left \lfloor y_{ij} \right \rfloor x_{j}\leqslant \left \lfloor \bar{b}_{i} \right \rfloor                                              (6-2)

将方程(6-1)减去不等式(6-2),可得

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        -\sum_{j\in I_{D}}\left \langle y_{ij} \right \rangle x_{i}\leqslant -\left \langle \bar{b}_{i} \right \rangle,i=1,...,m                                 (6-3)

该条件(6-3)是(AIP)任何一个可行解X必须满足的条件,称为柯莫利割

假设B是(LP)的最优基,X^{*}是(LP)关于基B的基本最优解,X^{*}不是整数解,这时,x_{j}^{*}=0(j\in I_{D})x_{B_{i}}^{*}=\bar{b}_{i}(i=1,...,m),且至少有一个\bar{b}_{k}(1\leqslant k\leqslant m)不是整数,即有\left \langle \bar{b}_{k} \right \rangle>0

此时,对不等式(6-3),取i=k,其左端-\sum_{j\in I_{D}}\left \langle y_{kj} \right \rangle x_{j}^{*}=0,而右端为-\left \langle \bar{b}_{k} \right \rangle<0,因此不等式(6-3)对X^{*}来说是不能成立的。即,X^{*}一定不满足柯莫利割:

        ​​​​​​​        ​​​​​​​                                                ​​​​​​​-\sum_{j\in I_{D}}\left \langle y_{kj} \right \rangle x_{j}\leqslant -\left \langle \bar{b}_{k} \right \rangle​​​​​​​                                     (6-4)

这个柯莫利割可以作为我们所需要的切割约束条件,它把X^{*}K_{LP}中切割出去。

假设(LP)关于基B和X^{*}的最优表T(B)如下表所示

表6-1
X_{B}...x_{B_{i}}...x_{j}...\bar{b}
X_{B}...e_{j}...y^{i}...\bar{b}
r...0...r_{j}...-f_{0}

对柯莫利割(6-4)引进松弛变量x_{n+1},得方程:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​      -\sum_{j\in I_{D}}\left \langle y_{kj} \right \rangle x_{j}+x_{n+1}=-\left \langle \bar{b}_{k} \right \rangle                                   (6-5)

设对(LP)增加柯莫利割(6-5)后所得的新线性规划为(\textup{LP}_{1}),取(\textup{LP}_{1})的初始指标集I_{\bar{B}}=I_{B}\cup \left \{ x_{n+1} \right \}x_{n+1}作为第m+1个基本变量,初始基为\bar{B}),在单纯形表T(B)表6-1中添加x_{n+1}行和x_{n+1}列,则单纯形表如下所示。

表6-2
X_{\bar{B}}...x_{B_{i}}...x_{j}...x_{n+1}\bar{b}^{'}
X_{B}...e_{i}...y^{i}...0\bar{b}
x_{n+1}...0...-\left \langle y_{kj} \right \rangle ...1-\left \langle \bar{b}_{k} \right \rangle
r...0...r_{j}...0-f_{0}

(3)柯莫利割平面法

现假设(AIP)相应的(LP)的可行域K_{LP}非空有界,我们给出柯莫利割平面法的算法步骤如下:

①用单纯形算法求解(LP),得基本最优解X^{*},B为最优基,T(B)为最优表。

X^{*}是否为整数解?

若是,则(AIP)中变量在X^{*}中的相应数值即为(AIP)的最优解,算法终止。

若否,则取\left \langle \bar{b}_{k} \right \rangle =\max \left \{ \left \langle \bar{b}_{i} \right \rangle |1\leqslant i \leqslant m \right \},把柯莫利割-\sum _{j\in I_{D}}\left \langle y_{kj} \right \rangle x_{j} \leqslant -\left \langle \bar{b}_{k} \right \rangle作为新的约束条件加入(LP)得到的新的(LP),按表6-2从T(B)得到\textrm{T}(\bar{\textup{B}}),把\textrm{T}(\bar{\textup{B}})视作新的T(B)

③从T(B)出发,应用对偶单纯形表法求解(LP),得最优解X^{*}、最优基B和最优表T(B),转步骤②

按此算法,自然会产生问题。对上述算法可作如下补充:在步骤③应用对偶单纯形法求解(LP)的过程中,如果发现转轴后,先前附加在某个柯莫利割的松弛变量x^{'}再次成为基本变量,则可以从单纯形表中删去x^{'}相应的行和列,被x^{'}附加的柯莫利割也从切割可行域K_{LP}的约束条件中删去。这样处理后,迭代过程中的单纯形表至多含有n+1个基本变量,切割(LP)的可行域K_{LP}的柯莫利割至多n+1-m个。

3.混合整数规划的割平面法

给定一个混合整数规划(MIP):

        ​​​​​​​        ​​​​​​​        ​​​​​​​        \min\{C^{T}X|aX=b,X\geqslant 0;j\in N_{1},x_{j}为整数\}

其中N_{1}\subset \left \{ 1,...,n \right \},记指标集N_{2}=\left \{ 1,...,n \right \}-N_{1},(MIP)的可行域记为K_{MIP}

B是(MIP)相应的线性规划(LP)的一个基,X是(MIP)的一个可行解,B_{k}\in N_{1},则

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        x_{B_{k}}=\bar{b}_{k}-\sum_{j\in I_{D}}y_{kj}x_{j}

为非负整数。令指标集

                                                 ​​​​​​​​​​​​​​​​​​​​​​​​​​​​I_{D_{1}}=I_{D}\cap N_{1},I_{D_{2}}=I_{D}\cap N_{2}

又记指标集

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        E^{+}=\left \{ j|j\in I_{D_{1}},\left \langle \bar{b}_{k} \right \rangle -\left \langle y_{kj} \right \rangle \geqslant 0\right \}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        E^{-}=\left \{ j|j\in I_{D_{1}},\left \langle \bar{b}_{k} \right \rangle -\left \langle y_{kj} \right \rangle < 0\right \}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        G^{+}=\left \{ j|j\in I_{D_{2}},y_{kj} \geqslant 0\right \}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        G^{-}=\left \{ j|j\in I_{D_{2}},y_{kj} < 0\right \}

从而,便得到如下结论:当X为(MIP)的可行解时,必须满足下列约束条件:

        -\sum_{j\in E^{+}}\left \langle y_{kj} \right \rangle x_{j} - \sum_{j\in E^{-}}\frac{(\left \langle y_{kj} \right \rangle -1)\left \langle \bar{b}_{k} \right \rangle}{\left \langle \bar{b}_{k}-1 \right \rangle}x_{j}-\sum_{j\in G^{+}}y_{kj}x_{j}-\sum_{j\in G^{-}}\frac{y_{kj}\left \langle \bar{b}_{k} \right \rangle}{\left \langle \bar{b}_{k} \right \rangle-1}x_{j}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \leqslant -\left \langle \bar{b}_{k} \right \rangle

称它为柯莫利割

如果是(MIP)相应的线性规划(LP)的一个最优基,X^{*}为(LP)的基本最优解,且X^{*}\bar{\in }K_{MIP},这时,一定存在一个B_{k}\in N_{1},有\left \langle \bar{b}_{k} \right \rangle >0。于是就对原线性规划(LP)增加上述柯莫利割的约束条件而得一个新的线性规划,对割平面引入松弛变量x_{n+1},我们可由原来的单纯形表T(B)得到新的(LP)的一张单纯形表,如下表所示,然后用对偶单纯形法继续求解。

X_{B}   \begin{matrix} \cdots & x_{B_{i}} & \cdots & x_{j} & \cdots & x_{n+1} \end{matrix}\bar{b}
\begin{matrix} x_{B_{1}}\\ \vdots \\ x_{B_{k}}\\ \vdots \\ x_{B_{M}}\\ x_{n+1} \end{matrix}\begin{matrix} \cdots & 0 & \cdots & y_{1j} & \cdots & 0 \\ & \vdots & & \vdots & &\vdots \\ \cdots & 1 & \cdots & y_{kj} & \cdots & 0\\ & \vdots & & \vdots & &\vdots \\ \cdots & 0 & \cdots & y_{mj} & \cdots & 0\\ \cdots & 0 & \cdots & -d_{j} & \cdots & 1 \end{matrix}\begin{matrix} \bar{b}_{1}\\ \vdots \\ \bar{b}_{k}\\ \vdots \\ \bar{b}_{m}\\ -\left \langle \bar{b}_{k} \right \rangle \end{matrix}
r\begin{matrix} \cdots & 0 & \cdots & r_{j} & \cdots & 0 \end{matrix}-f_{0}

 其中

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        d_{j}=\left\{\begin{matrix} \left \langle y_{kj} \right \rangle , & j\in E^{+}\\ \frac{(\left \langle y_{kj} \right \rangle -1)\left \langle \bar{b}_{k} \right \rangle}{\left \langle \bar{b}_{k} \right \rangle-1}, & j\in E^{-}\\ y_{kj}, & j\in G^{+}\\ \frac{y_{kj}\left \langle \bar{b}_{k} \right \rangle}{\left \langle \bar{b}_{k} \right \rangle -1}, & j\in G^{-} \end{matrix}\right.

 下面给出(MIP)的割平面法(假设(MIP)相应的线性规划的可行域非空有界)。

①应用单纯形表求解(MIP)相应的线性规划(LP),得(LP)的最优基B、T(B)和基本最优解X^{*}

\left \langle \bar{b}_{i}\right \rangle=0对一切B_{i}\in N_{1}是否都成立?

若是,则(MIP)中变量在X^{*}中的相应数值即为(MIP)的最优解,算法终止。

若否,则取\left \langle \bar{b}_{k} \right \rangle=\max \left \{\left \langle \bar{b}_{i} \right \rangle |B_{i}\in N_{1} \right \},将柯莫利割作为新的约束条件加入(LP)得到新的(LP),按表所示从T(B)得到新的单纯形表T(B)。

③从T(B)出发,应用对偶单纯形法求解,得最优解X^{*}、最优基B和最优表T(B),转步骤②(在用对偶单纯形法求解过程中,若有先前附加在某个柯莫利割的松弛变量x^{'}在转轴后由非基本变量再次成为基本变量,则可以从单纯形表中删去x^{'}相应的行和列)。

4.分支定界法

在求解整数规划时,如果可行域是有界的,首先容易想到的方法就是穷举变量的所有可行的整数组合。但是对于大规模问题,可行的整数组合数很大,所以我们的方法一般应是仅检查可行的整数组合的一部分,就能定出最优的整数解。分支定界法就是其中之一,分支定界法可用于解纯整数或混合的整数规划问题。

设有最大化的整数规划问题(AIP),与它相应的线性规划问题(LP),从解问题(LP)开始,若其最优解不符合(AIP)的整数条件,那么(LP)的最优目标函数值必是(AIP)的最优目标函数值的上界;而(AIP)的任意可行解的目标函数值将是(AIP)最优目标函数值的一个下界。分支定界法就是将(LP)的可行域分成子区域(称为分支)的方法,逐步减小上界和增大下界,最终求得目标函数值。分支定界法是一种隐式枚举法。

(1)0-1背包问题

整数规划:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \max f=\sum_{j=1}^{n}c_{j}x_{j}

                                                    s.t.        \sum_{j=1}^{n}a_{j}x_{j}\leqslant b

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​x_{j}=0,1;j=1,...,n

上述问题可以解释为一位旅行者在出发前,考虑他的背包内应装哪些物品,使物品重量之和不超过背包允许的负荷,而被装物品的使用价值最大,并因而常称这类问题为0-1背包问题

假设问题(K_{i})相应的线性规划问题为(\tilde{K}_{i}),于是有

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        K_{i}\subset \tilde{K}_{i};\max_{X\in K_{i}}f(X)\leqslant f_{i}=\max_{X\in \tilde{K}_{i}}f(X)

即(\tilde{K}_{i})的最优值f_{i}是(K_{i})最优值的上界。

若(\tilde{K}_{i})的最优解X^{i}有某一个分量x_{j}为分数,则将K_{i}划分为两个子集K_{i}^{'}K_{i}^{''},有

        ​​​​​​​        ​​​​​​​        ​​​​​​​        K_{i}^{'}=\left \{ X|X\in K_{i},x_{j}=0 \right \},K_{i}^{''}=\left \{ X|X\in K_{i},x_{j}=1 \right \}

K_{i}^{'})和(K_{i}^{''})相应的线性规划为(\tilde{K}_{i}^{'})和(\tilde{K}_{i}^{''}):

        ​​​​​​​        ​​​​​​​        ​​​​​​​        \tilde{K}_{i}^{'}=\left \{ X|X\in \tilde{K}_{i},x_{j}=0 \right \},\tilde{K}_{i}^{''}=\left \{ X|X\in \tilde{K}_{i},x_{j}=1 \right \}

不失一般性,我们有如下结论:

①定界\bar{f}(<+\infty )(K_{0})最优值的一个下界;

②如果由新分支而得的问题(\tilde{K}_{i})的最优解X^{i}是整数集,且f_{i}>\bar{f},则X^{i}f_{i}分别作为新的X^{*}\bar{f}。若X^{i}不是整数解,且f_{i}\leqslant \bar{f},则问题(K_{i})查清;反之,f_{i}>\bar{f},则(K_{i})作为活问题等待分支和清查。

③每当新的定界产生,就要对树上原有的活问题(未查清和未划分的)查视一遍而进行剪枝工作。

在求解0-1背包问题的基础上,介绍若干分支定界法的术语和记号。现在将讨论的问题转向为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​     \min\left \{ C^{T}X|X\in K_{0} \right \}

其中K_{0}的元素个数是有限的。

(1)划分——把K_{0}的一个子集K_{S}划分成有限个子集K_{S}^{1},K_{S}^{2},...,K_{S}^{m}(它们两两互斥或不互斥),即

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​K_{S}=K_{S}^{1}\cup K_{S}^{2}\cup ...\cup K_{S}^{m}

(2)松弛问题——将(K_{S})中的约束条件适当放宽,使得K_{S}扩大为\tilde{K}_{S},并且(\tilde{K}_{S})的求解有现成的算法或者(\tilde{K}_{S})(K_{S})求解容易些,称(\tilde{K}_{S})(K_{S})的松弛问题,此时有:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        K_{S}\subset \tilde{K}_{S}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​    \min_{X\in K_{S}}f(X)\geqslant \min_{X\in \tilde{K}_{S}}f(X)

(\tilde{K}_{S})的最优值f_{S}(K_{S})目标函数值的一个下界。

(3)(K_{S})的目标函数值的下界\underline{f}_{S}(简称为(K_{S})的下界)——一般的,取(\tilde{K}_{S})的最优值f_{S}作为(K_{S})目标函数值的下界\underline{f}_{S}。如果可能,自然希望能对(K_{S})的下界作更好的估计,应尽可能使\underline{f}_{S}接近(K_{S})的最优值。

(4)界限或定界\bar{f}——\bar{f}为在生长枚举树的过程中,到当前一步为止,(K_{S})所能搜索到的现有较好的可行解X^{*}的目标函数值,它是(K_{S})最优值的一个上界:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​ \min_{X\in K_{0}}f(x)\leqslant \bar{f}

当枚举树生长完毕,\bar{f}<+ \infty,则\bar{f}即为(K_{0})的最优值,对应的X^{*}即为(K_{0})的最优值。

在初始时,一般取\bar{f}=+\infty,以后每求解一个问题(K_{S})的松弛问题(\tilde{K}_{S}),一旦它的最优解X^{S}\in K_{S},且相应的最优值f_{S}<\bar{f},则f_{S}作为新的定界\bar{f}X^{S}作为新的X^{*}

(5)失去希望的问题——若(\tilde{K}_{S})的最优值f_{S}\geqslant \bar{f},这时,K_{S}中任何一个可行解X的目标函数值f(X)都不小于\bar{f},而\bar{f}是目前找到的(K_{0})的最优值的一个较好的上界,故K_{S}中不存在比X^{*}更优的解,所以不必再对K_{S}进行讨论,称(K_{S})为失去希望的问题。

(6)已被查清的问题——若对当前的(\tilde{K}_{S})已获得下列结论之一:

\tilde{K}_{S}=\varnothing,则K_{S}也为\varnothing

\tilde{K}_{S}的最优解X^{S}\in K_{S}

(\tilde{K}_{S})的最优值f_{S}\geqslant \bar{f}

则称(K_{S})为一个已被查清的问题

(7)活问题——若(K_{S})没有被查清,也没有被划分,则称(K_{S})为活问题。

(8)剪支——枚举树生长过程中,一旦获得新定界\bar{f},就用它去检查现有活问题,把失去希望的问题改为已被查清的问题,这一过程称为剪支。

(9)分支、父问题和子问题——选择一个活问题(K_{S})进行划分,称为分支,称(K_{S})为父问题,K_{S}划分后所得的数个分支问题,称为子问题。

(2)分支定界法

L——迭代至某一步时,枚举树中所有问题的下标集合;

E——当前枚举树中已查清的问题和已划分的问题的下标集合;

L-E——当前枚举树中活问题的下标集合;

l——当前枚举树中问题的最大下标;

S——在枚举树中,当前正在划分的问题的下标。

设(AIP)的可行域为K_{0},相应的线性规划问题的可行域\tilde{K}_{0}非空有界,求解(AIP)的分支定界法的算法步骤如下:

①应用单纯形法求解(\tilde{K}_{S}),得最优解X^{0}、最优值f_{0}和最优单纯形表T(B)。

\left \langle \bar{b}_{i} \right \rangle=0i=1,...,m都成立否?

若是,则X^{0},f_{0}即为(K_{0})的最优解X^{*}和最优值f^{*},算法终止。

若否,则存在\left \langle \bar{b}_{i} \right \rangle\neq 0,则取:\bar{f}=+\infty ,\underline{f}_{0}=\left \lceil f_{0} \right \rceil,E=\varnothing ,L=\left \{ 0 \right \},l=0

转步骤②。

L-E=\varnothing ?

若是,则当\bar{f}=+\infty时,K_{0}=\varnothing,算法终止。

\bar{f}<+\infty时,\bar{f}即为(K_{0})的最优值f^{*},相应的X^{*}即为(K_{0})的最优解,算法终止。

若否,则转步骤③。

③定指标S:取\underline{f}_{S}=\min\left \{ \underline{f}_{j}|j\in L-E \right \}

划分K_{S}:取\left \langle \bar{b}_{k} \right \rangle=\max\left \{ \left \langle \bar{b}_{i} \right \rangle |1\leqslant i \leqslant m\right \},令

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        K_{l+1}=\left \{ X|X\in K_{S},x_{B_{k}}\leqslant \left \lfloor \bar{b}_{k} \right \rfloor\right \}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        K_{l+2}=\left \{ X|X\in K_{S},x_{B_{k}}\geqslant \left \lceil \bar{b}_{k} \right \rceil \right \}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \tilde{K}_{l+1}=\left \{ X|X\in \tilde{K}_{S},x_{B_{k}}\leqslant \left \lfloor \bar{b}_{k} \right \rfloor\right \}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \tilde{K}_{l+2}=\left \{ X|X\in \tilde{K}_{S},x_{B_{k}}\geqslant \left \lceil \bar{b}_{k} \right \rceil \right \}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        L=L\cup \left \{ l+1,l+2 \right \},E=E\cup \left \{ S \right \}

④求解({K}_{l+1})。若最终单纯形表T(B)指出\tilde{K}_{l+1}=\varnothing,则取E=E\cup \left \{ l+1 \right \},转步骤⑤。否则,若\left \langle \bar{b}_{i} \right \rangle=0i=1,...,m都成立,则取E=E\cup \left \{ l+1 \right \},且当f_{l+1}<\bar{f}时,取X^{*}=X^{l+1},\bar{f}=f_{l+1},转步骤⑤;若存在\left \langle \bar{b}_{i} \right \rangle\neq 0,则取\underline{f}_{l+1}=\left \lceil f_{l+1} \right \rceil,转步骤⑤。

⑤求解({K}_{l+2})。若最终单纯形表T(B)指出\tilde{K}_{l+2}=\varnothing,则取E=E\cup \left \{ l+2 \right \},转步骤⑥。否则,若\left \langle \bar{b}_{i} \right \rangle=0i=1,...,m都成立,则取E=E\cup \left \{ l+2 \right \},且当f_{l+2}<\bar{f}时,取X^{*}=X^{l+2},\bar{f}=f_{l+2},转步骤⑥;若存在\left \langle \bar{b}_{i} \right \rangle\neq 0,则取\underline{f}_{l+2}=\left \lceil f_{l+2} \right \rceil,转步骤⑥。

l=l+2

M=\left \{ j|\underline{f}_{j}\geqslant \bar{f},j\in L-E \right \},E=E\cup M,转步骤②。

本算法在迭代过程中,在若干活问题中选取哪个问题先分支,或者在某个问题(\tilde{K}_{S})的最优解中,有若干个基本变量的\left \langle \bar{b}_{i} \right \rangle\neq 0,选取哪个基本变量x_{B_{k}}来对K_{S}进行划分,都会影响计算的进程。本文介绍的方法采用了下界最小的活问题先分支,除此之外,也可以采用新的活问题先分支的方法。

对于混合整数规划(MIP),只要对(AIP)的分支定界法稍作修改,就不难得到(MIP)的分支定界法。

怎么加快分支定界法求解的收敛速度,也是学者一直在探讨的问题。

5.0-1规划的分支定界法

0-1型整数规划是整数规划中的特殊情形,它的变量x_{i}仅取值0或1。这时 x_{i}称为0-1变量,或称二进制变量。它和一般整数规划的约束条件形式是一致的。如果变量x_{i}不是仅取值0或1,而是可取其他范围的非负整数,这时可利用二进制的计数法将它用若干个0-1变量来代替。在实际问题中,如果引入0-1变量,就可以把各种情况需要分别讨论的线性规划问题统一在一个问题中讨论。

(1)划分和定界

0-1规划的规范形式:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \min f=\sum_{j=1}^{n}c_{j}x_{j}

                                        s.t.   \sum_{j=1}^{n}a_{ij}x_{j}\leqslant b_{i},i=1,...,m

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        x_{j}=0,1;j=1,...,n

其中a_{ij}b_{i}均为整数,c_{j}均为非负整数。

一般地,假设问题(K_{S})是问题(K_{0})依次用变量x_{i_{1}},x_{i_{2}},...,x_{i_{k}}取值0或1进行划分而得的子问题,将(K_{S})中的约束条件y_{i}\geqslant 0(i=1,...,m)换成y_{i}\neq 0(i=1,...,m),即得(K_{S})的松弛问题(\tilde{K}_{S})(如图所示依次用x_{p},x_{q},x_{t}取值0或1进行划分的情况)。

(\tilde{K_{S}})中取值尚未固定的变量x_{j}的下标组成的集合记为J_{S}

显然,由于c_{j}\geqslant 0(j\in J_{S}),(\tilde{K}_{S})的最优解很容易求得:x_{i_{1}},...,x_{i_{k}}取相应的规定值;x_{j}=0(j\in J_{S})y_{i}=b_{i}-\sum_{j=1}^{n}a_{ij}x_{j}(i=1,...,m)。假若X_{S},Y_{S}不是(K_{S})的可行解,那么如何对K_{S}进行划分?

如果对j\in J_{S}x_{j}对所有的y_{i}^{S}<0,都有a_{ij}\geqslant 0,那么x_{j}之值由0提升为1时,不能改进(K_{S})关于Y的不可行性,因此,x_{j}不适宜作(K_{S})的划分变量。记​​​​​​​

        ​​​​​​​        ​​​​​​​        ​​​​​​​        Q_{S}=\{j|j\in J_{S},y_{i}^{S}<0时,总有a_{ij}\geqslant 0(1\leqslant i\leqslant m)\}

如果以x_{j}(K_{S})进行划分,让x_{j}的取值由0变成1(X^{S}中其余分量不变),那么相应的目标函数将由f_{S}变成f_{S+c_{j}},当时f_{S+c_{j}}\geqslant \bar{f},说明当x_{j}的取值由0变成1后,不能产生一个比目前的X^{*}更好地可行解。因此,可以把这种x_{j}排斥在用作划分的变量之外。令

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        G_{S}=\left \{ j|c_{j}+f_{S}\geqslant \bar{f},j\in J_{S}-Q_{S} \right \}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        M_{S}=J_{S}-Q_{S}-G_{S}

从而,仅对于j\in M_{S}的变量x_{j}可以考虑把它的值由0变成1。

j\in M_{S},令

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        V_{j}^{S}=\sum_{i=1}^{m}\min \left \{ y_{i}^{S}-a_{ij},0 \right \}

V_{j}^{S}作为x_{j}由0变成1时,在(K_{S})Y=(y_{1},...,y_{m})^{T}的不可行性度量值,简称为(K_{S})关于x_{j}的不可行指数。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        V_{k}^{S}=\max \left \{ V_{j}^{S}|j\in M_{S} \right \}

则可以就x_{j}(K_{S})进行划分:

        ​​​​​​​        K_{S}^{'}=\left \{ \binom{X}{Y}|\binom{X}{Y}\in K_{S},x_{k}=0 \right \},K_{S}^{''}=\left \{ \binom{X}{Y}|\binom{X}{Y}\in K_{S},x_{k}=1 \right \}

相应的

        ​​​​​​​        \tilde{K}_{S}^{'}=\left \{ \binom{X}{Y}|\binom{X}{Y}\in \tilde{K}_{S},x_{k}=0 \right \},\tilde{K}_{S}^{''}=\left \{ \binom{X}{Y}|\binom{X}{Y}\in \tilde{K}_{S},x_{k}=1 \right \}

显然,(\tilde{K}_{S}^{'})的最优解为X^{S},Y^{S};最优值为f_{S}(\tilde{K}_{S}^{''})的最优解为:x_{k}=1,x_{j}=x_{j}^{S}(j\neq k),y_{i}=y_{i}^{S}-a_{ik}(i=1,...,m);最优值为f_{S}+c_{k}

接下来,来更精确地估计(K_{S})最优值的下界\underline{f}_{S},以利于剪支。分几种情况来讨论。

①情况一

M_{S}=\varnothing,说明(K_{S})中没有更好的可行解,因此,(K_{S})失去希望,(K_{S})被查清,此时不妨取\underline{f}_{S}=\bar{f}

②情况二

M_{S}\neq \varnothing,且\sum_{j\in M_{S}}\min \left \{ 0,a_{ij} \right \}>y_{i}^{S}成立。那么,即使M_{S}那些a_{ij}<0的指标所相应的变量x_{j}都由0提升到1,也不能产生y_{i}的可行性,因而说(K_{S})是没有希望的,(K_{S})可以被认为查清,此时不妨设\underline{f}_{S}=\bar{f}

③情况三

M_{S}\neq \varnothing,且\sum_{j\in M_{S}}\min \left \{ 0,a_{ij} \right \}>y_{i}^{S}不成立。对于(K_{S})可以取

        \underline{f}_{S}=\left\{\begin{matrix} f_{S}+\min \left \{ c_{j}|j\in M_{S} \right \}, & when \max \left \{ V_{j}^{S}|j\in M_{S} \right \}=0 \\ f_{S}+\min \left \{ c_{j_{1}}+c_{j_{2}}|j_{1}\neq j_{2},j_{1},j_{2}\in M_{S} \right \}, & otherwise \end{matrix}\right.

(2)分支定界法

0-1规划分支定界法的特点是下标大的活问题(K_{S})先进行划分(S=\max \left \{ i|i\in L-E \right \}),下面给出具体的算法。

①求解(\tilde{K}_{0}),得最优解X^{0}Y^{0}为:x_{j}^{0}=0(j=1,...,n),y_{i}^{0}=b_{i}(i=1,...,m);最优值f_{0}=0

y_{i}^{0}\geqslant 0i=1,...,m都成立否?

若是,则X^{0},Y^{0}即为最优解,算法终止。

若否,则取\bar{f}=+\infty ,L=\left \{ 0 \right \},E=\varnothing ,l=0,J_{0}=\left \{ 1,2,...,n \right \},转步骤②。

L-E=\varnothing ?

若是,则若\bar{f}=+\infty ,(K_{0})无可行解,算法终止。

\bar{f}<+\infty ,X^{*},Y^{*}即为(K_{0})的最优解,\bar{f}即为(K_{0})的最优解,算法终止。

若否,则转步骤③。

③取S=\max\left \{ i|i\in L-E \right \},对问题(K_{S})进行下界\underline{f}_{S}估计,即

        ​​​​​​​        ​​​​​​​        Q_{S}=\{ j|j\in J_{S} ,y_{j}^{S}<0时,总有a_{ij}\geqslant 0(1\leqslant i\leqslant m)\}

        ​​​​​​​        ​​​​​​​        G_{S}=\left \{ j|c_{j}+f_{S}\geqslant \bar{f},j\in J_{S}-Q_{S}\right \}

        ​​​​​​​        ​​​​​​​        M_{S}=J_{S}-Q_{S}-G_{S}

M_{S}=\varnothing ?

若是,则取\underline{f}_{S}=\bar{f},E\cup \left \{ S \right \},转步骤②。

若否,则转步骤④。

④对一切i\in \left \{ i|y_{i}^{S}<0,1\leqslant i\leqslant m \right \}\sum_{j\in M_{S}}min\left \{ 0,a_{ij} \right \}\leqslant y_{i}^{S}成立否?

若是,则转步骤⑤。

若否,则取\underline{f}_{S}=\bar{f},E=E\cup\left \{ S \right \},转步骤②。

⑤对j\in M_{S},计算V_{j}^{S}=\sum_{i=1}^{m}\min \left \{ y_{j}^{S}-a_{ij},0 \right \},求\max \left \{ V_{j}^{S}|j\in M_{S} \right \}=V_{k}^{S}

V_{k}^{S}=0,取\bar{f}_{S}=f_{S}+\min\left \{ c_{j}|j\in M_{S} \right \}

V_{k}^{S}<0,取\underline{f}_{S}=f_{S}+\min\left \{ c_{j_{1}}+c_{j_{2}}|j_{1}\neq j_{2};j_{1},j_{2}\in M_{S} \right \}

\underline{f}_{S}\geqslant \bar{f}?

若是,则E=E\cup \left \{ S \right \},转步骤②。

若否,则转步骤⑥。

⑥划分K_{S}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        K_{l+1}=\left \{ \binom{X}{Y}|\binom{X}{Y}\in K_{S},x_{k}=0 \right \}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        K_{l+2}=\left \{ \binom{X}{Y}|\binom{X}{Y}\in K_{S},x_{k}=1 \right \}

相应的松弛问题为(\tilde{K}_{l+1})(\tilde{K}_{l+2}),取

L=L\cup \left \{ l+1,l+2 \right \},E=E\cup \left \{ S \right \},J_{l+1}=J_{S}-\left \{ k \right \},J_{l+2}=J_{S}-\left \{ k \right \},转步骤⑦。

⑦求解(\tilde{K}_{l+1})(\tilde{K}_{l+2})

(\tilde{K}_{l+1})的最优解X^{l+1},Y^{l+2}为:x_{j}^{l+1}=x_{j}^{S}(j=1,...,n),y_{i}^{l+1}=y_{i}^{S}(i=1,...,m);最优值f_{l+1}=f_{S}

(\tilde{K}_{l+2})的最优解X^{l+2},Y^{l+2}为:x_{k}^{l+2}=1,x_{j}^{l+2}=x_{j}^{S}(j=1,...,n,j\neq k),y_{i}^{l+2}=y_{i}^{S}-a_{ik}(1\leqslant i\leqslant m);最优值f_{l+2}=f_{S}+c_{k},转步骤⑧。

y_{i}^{l+2}\geqslant 0i=1,..,m都成立否?

若是,则转步骤⑨。

若否,则l=l+2,转步骤②。

f_{l+2}<\bar{f}?

若是,则X^{*}=X^{l+2},Y^{*}=Y^{l+2},\bar{f}=f_{l+2},取H=\left \{ h|\underline{f}_{h}\geqslant \bar{f},h\in L-E \right \},E=E\cup H\cup \left \{ l+2 \right \},l=l+2,转步骤②。

若否,则E=E \cup \left \{ l+2 \right \},l=l+2,转步骤②。

6.最优分配法(指派问题)

(1)最优分配问题

在生活中经常遇到这样的问题,某单位需完成n项任务,恰好有n个人可承担这些任务。犹疑每个人的专长不同,各人完成任务不同(或所费时间),效率也不同。于是产生应指派哪个人去完成哪项任务,使完成n项任务的总效率最高(或所需总时间最小)的问题。这类问题称为指派问题或分派问题。

(2)匈牙利方法

类似的问题有:n个人从事n项工作以使总成本最低,n辆车派往n个目的地以使总运输距离最少……我们统称这类问题为最优分配问题。

矩阵C=(c_{ij})_{n\times n}称为费用矩阵,矩阵C的元素c_{ij}\geqslant 0。一个最优分配问题的给出,是指给出了矩阵C,以后简记该问题为(C)。这类最优分配问题不难建立下列整数规划模型:

假设                                                        

则得0-1规划模型:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \min f=\sum_{i=1}^{n}\sum_{j=1}^{n}c_{ij}x_{ij}

                                   s.t.        \sum_{j=1}^{n}x_{ij}=1,i=1,...,n

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \sum_{i=1}^{n}x_{ij}=1,j=1,...,n

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        x_{ij}=0,1,i,j=1,...,n

 它是运输问题的特例,对它当然可以用已为表上作业法求解,但是由于迭代过程的每一步都出现退化情况而使计算显得太麻烦。为此,介绍一个更为简便的方法,通常称为匈牙利方法

【定理1】若对费用矩阵C=(c_{ij})的第k行或第k列的元素减去同一数值d,则对于分配问题(C)得到一个等价问题(\hat{C})

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​       \hat{C}=(\hat{c}_{ij})_{n\times n}

其中                                        \hat{c}_{ij}=\left\{\begin{matrix} c_{ij}-d,i=k\\ c_{ij},i\neq k, \end{matrix}\right.j=1,...,n                               (6-6-1)

或                                           \hat{c}_{ij}=\left\{\begin{matrix} c_{ij}-d,j=k\\ c_{ij},j\neq k, \end{matrix}\right.i=1,...,n                                 (6-6-2)

显然,上述问题(C)的最优值f^{*}与问题(\hat{C})的最优值f_{1}^{*}之间有如下关系式:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        f^{*}=f_{1}^{*}+d

约简矩阵——对矩阵C用式(6-6-1)或式(6-6-2)进行一系列变换,得矩阵\hat{C}=(c_{ij})(\hat{c}_{ij}\geqslant 0),则称矩阵\hat{C}为矩阵C的约简矩阵。

独立零——若矩阵C的约简矩阵\hat{C}中含有一定数量的零元素,则矩阵\hat{C}中位于不同行不同列的零元素称为独立零。

如果由矩阵C所得的约简矩阵\hat{C}含有较多的零元素,且能在这些零元素中选择到n个独立零,那么,我们让这n个独立零对应的x_{ij}=1,其余的x_{ij}=0,则它们就是问题(\hat{C})的最优解,而最优值就是零,当然它们也是问题(C)的最优解。

步骤①:对矩阵C进行约简

步骤②:在约简矩阵\hat{C}中选择最多个数的独立零(运算过程中用带括号的零表示独立零)。若独立零的个数恰为n,则令独立零对应的x_{ij}=1,其余变量为零,既得问题(C)的最优解,若独立零个数小于n,则进行步骤③。

步骤③:用最少的覆盖线覆盖约简矩阵\hat{C}中的全部零元素,寻找未覆盖的元素中的最小数\varepsilon(它总是一个正数),再进行矩阵变换,其变换规则为

        ⑴未覆盖的元素减去\varepsilon

        ⑵一次覆盖的元素照旧

        ⑶二次覆盖的元素增加\varepsilon

这样,又得到一个新的约简矩阵\hat{C}=(\hat{c}_{ij}),再转步骤②。

【定理2】在约简矩阵\hat{C}中能选择的独立零的最多个数,恰等于覆盖矩阵\hat{C}中所有零元素的最少覆盖线。

1.运筹学教材编写组 编. 《运筹学》第4版. 清华大学出版社. 1982

2.傅家良 编著. 《运筹学方法与模型》. 复旦大学出版社. 2014

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值