数学建模之线性规划.doc_第1页
数学建模之线性规划.doc_第2页
数学建模之线性规划.doc_第3页
数学建模之线性规划.doc_第4页
数学建模之线性规划.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 线性规划1 线性规划在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支数学规划,而线性规划(Linear Programming 简记LP)则是数学规划的一个重要分支。自从1947年G. B. Dantzig 提出求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深入。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。1.1 线性规划的实例与定义例1 某机床厂生产甲、乙两种机床,每台销售后的利润分别为4000元与3000元。生产甲机床需用机器加工,加工时间分别为每台2小时和1小时;生产乙机床需用三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时数分别为机器10小时、机器8小时和机器7小时,问该厂应生产甲、乙机床各几台,才能使总利润最大?上述问题的数学模型:设该厂生产台甲机床和乙机床时总利润最大,则应满足(目标函数) (1)s.t.(约束条件) (2)这里变量称之为决策变量,(1)式被称为问题的目标函数,(2)中的几个不等式是问题的约束条件,记为s.t.(即subject to)。由于上面的目标函数及约束条件均为线性函数,故被称为线性规划问题。总之,线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。在解决实际问题时,把问题归结成一个线性规划数学模型是很重要的一步,但往往也是困难的一步,模型建立得是否恰当,直接影响到求解。而选适当的决策变量,是我们建立有效模型的关键之一。1.2 线性规划的Matlab标准形式线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于号也可以是大于号。为了避免这种形式多样性带来的不便,Matlab中规定线性规划的标准形式为 其中和为维列向量,、为适当维数的矩阵,、为适当维数的列向量。例如线性规划的Matlab标准型为 1.3 线性规划问题的解的概念一般线性规划问题的标准型为 (3)s.t. (4)可行解 满足约束条件(4)的解,称为线性规划问题的可行解,而使目标函数(3)达到最小值的可行解叫最优解。可行域 所有可行解构成的集合称为问题的可行域,记为。1.4 线性规划的图解法图解法简单直观,有助于了解线性规划问题求解的基本原理。我们先应用图解法来求解例1。对于每一固定的值,使目标函数值等于的点构成的直线称为目标函数等位线,当变动时,我们得到一族平行直线。对于例1,显然等位线越趋于右上方,其上的点具有越大的目标函数值。不难看出,本例的最优解为,最优目标值。从上面的图解过程可以看出并不难证明以下断言:(1)可行域可能会出现多种情况。可能是空集也可能是非空集合,当非空时,它必定是若干个半平面的交集(除非遇到空间维数的退化)。既可能是有界区域,也可能是无界区域。(2)在非空时,线性规划既可以存在有限最优解,也可以不存在有限最优解(其目标函数值无界)。(3)若线性规划存在有限最优解,则必可找到具有最优目标函数值的可行域的“顶点”。上述论断可以推广到一般的线性规划问题,区别只在于空间的维数。在一般的维空间中,满足一线性等式的点集被称为一个超平面,而满足一线性不等式(或)的点集被称为一个半空间(其中为一维行向量,为一实数)。若干个半空间的交集被称为多胞形,有界的多胞形又被称为多面体。易见,线性规划的可行域必为多胞形(为统一起见,空集也被视为多胞形)。在一般维空间中,要直接得出多胞形“顶点”概念还有一些困难。二维空间中的顶点可以看成为边界直线的交点,但这一几何概念的推广在一般维空间中的几何意义并不十分直观。为此,我们将采用另一途径来定义它。定义1 称维空间中的区域为一凸集,若及,有。定义2 设为维空间中的一个凸集,中的点被称为的一个极点,若不存在及,使得。定义1 说明凸集中任意两点的连线必在此凸集中;而定义2 说明,若是凸集的一个极点,则不能位于中任意两点的连线上。不难证明,多胞形必为凸集。同样也不难证明,二维空间中可行域的顶点均为的极点(也没有其它的极点)。1.5 求解线性规划的Matlab解法单纯形法是求解线性规划问题的最常用、最有效的算法之一。这里我们就不介绍单纯形法,有兴趣的读者可以参看其它线性规划书籍。下面我们介绍线性规划的Matlab解法。Matlab中线性规划的标准型为 基本函数形式为linprog(c,A,b),它的返回值是向量的值。还有其它的一些函数调用形式(在 Matlab 指令窗运行 help linprog 可以看到所有的函数调用形式),如:x,fval=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS)这里fval返回目标函数的值,LB和UB分别是变量的下界和上界,是的初始值,OPTIONS是控制参数。 例2 求解下列线性规划问题 解 (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 求解线性规划问题 解 编写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 规划问题为其中,和为相应维数的矩阵和向量。要把上面的问题变换成线性规划问题,只要注意到事实:对任意的,存在满足 ,事实上,我们只要取,就可以满足上面的条件。这样,记,从而我们可以把上面的问题变成 例5 其中。对于这个问题,如果我们取,这样,上面的问题就变换成 此即我们通常的线性规划问题。2 运输问题(产销平衡)例6 某商品有个产地、个销地,各产地的产量分别为,各销地的需求量分别为。若该商品由产地运到销地的单位运价为,问应该如何调运才能使总运费最省?解:引入变量,其取值为由产地运往销地的该商品数量,数学模型为 s.t. 显然是一个线性规划问题,当然可以用单纯形法求解。对产销平衡的运输问题,由于有以下关系式存在:其约束条件的系数矩阵相当特殊,可用比较简单的计算方法,习惯上称为表上作业法(由康托洛维奇和希奇柯克两人独立地提出,简称康希表上作业法)。3 指派问题3.1 指派问题的数学模型例7 拟分配人去干项工作,每人干且仅干一项工作,若分配第人去干第项工作,需花费单位时间,问应如何分配工作才能使工人花费的总时间最少?容易看出,要给出一个指派问题的实例,只需给出矩阵,被称为指派问题的系数矩阵。引入变量,若分配干工作,则取,否则取。上述指派问题的数学模型为 s.t. (5)(5)的可行解既可以用一个矩阵表示,其每行每列均有且只有一个元素为1,其余元素均为0,也可以用中的一个置换表示。(5)的变量只能取0或1,从而是一个0-1规划问题。一般的0-1规划问题求解极为困难。但指派问题并不难解,其约束方程组的系数矩阵十分特殊(被称为全单位模矩阵,其各阶非零子式均为),其非负可行解的分量只能取0或1,故约束可改写为而不改变其解。此时,指派问题被转化为一个特殊的运输问题,其中,。3.2 求解指派问题的匈牙利算法由于指派问题的特殊性,又存在着由匈牙利数学家Konig提出的更为简便的解法匈牙利算法。算法主要依据以下事实:如果系数矩阵一行(或一列)中每一元素都加上或减去同一个数,得到一个新矩阵,则以或为系数矩阵的指派问题具有相同的最优指派。例8 求解指派问题,其系数矩阵为 解 将第一行元素减去此行中的最小元素15,同样,第二行元素减去17,第三行元素减去17,最后一行的元素减去16,得 再将第3列元素各减去1,得 以为系数矩阵的指派问题有最优指派 由等价性,它也是例7的最优指派。 有时问题会稍复杂一些。例9 求解系数矩阵的指派问题 解:先作等价变换如下 容易看出,从变换后的矩阵中只能选出四个位于不同行不同列的零元素,但,最优指派还无法看出。此时等价变换还可进行下去。步骤如下:(1) 对未选出0元素的行打;(2) 对行中0元素所在列打;(3) 对列中选中的0元素所在行打;重复(2)、(3)直到无法再打为止。可以证明,若用直线划没有打的行与打的列,就得到了能够覆盖住矩阵中所有零元素的最少条数的直线集合,找出未覆盖的元素中的最小者,令行元素减去此数,列元素加上此数,则原先选中的0元素不变,而未覆盖元素中至少有一个已转变为0,且新矩阵的指派问题与原问题也等价。上述过程可反复采用,直到能选取出足够的0元素为止。例如,对例5变换后的矩阵再变换,第三行、第五行元素减去2,第一列元素加上2,得 现在已可看出,最优指派为。4 对偶理论与灵敏度分析4.1 原始问题和对偶问题考虑下列一对线性规划模型: s.t. (P)和 s.t. (D)称(P)为原始问题,(D)为它的对偶问题。不太严谨地说,对偶问题可被看作是原始问题的“行列转置”:(1) 原始问题中的第列系数与其对偶问题中的第行的系数相同;(2) 原始目标函数的各个系数行与其对偶问题右侧的各常数列相同;(3) 原始问题右侧的各常数列与其对偶目标函数的各个系数行相同;(4) 在这一对问题中,不等式方向和优化方向相反。考虑线性规划:把其中的等式约束变成不等式约束,可得 它的对偶问题是其中和分别表示对应于约束和的对偶变量组。令,则上式又可写成原问题和对偶的对偶约束之间的关系: 4.2 对偶问题的基本性质1o 对称性:对偶问题的对偶是原问题。2o 弱对偶性:若是原问题的可行解,是对偶问题的可行解。则存在。3o 无界性:若原问题(对偶问题)为无界解,则其对偶问题(原问题)无可行解。4o 可行解是最优解时的性质:设是原问题的可行解,是对偶问题的可行解,当时,是最优解。5o 对偶定理:若原问题有最优解,那么对偶问题也有最优解;且目标函数值相同。6o 互补松弛性:若分别是原问题和对偶问题的最优解,则 例10 已知线性规划问题 已知其对偶问题的最优解为。试用对偶理论找出原问题的最优解。解 先写出它的对偶问题 将的值代入约束条件,得,为严格不等式;由互补松弛性得。因 ;原问题的两个约束条件应取等式,故有求解后得到;故原问题的最优解为 。 4.3 灵敏度分析在以前讨论线性规划问题时,假定都是常数。但实际上这些系数往往是估计值和预测值。如市场条件一变,值就会变化;往往是因工艺条件的改变而改变;是根据资源投入后的经济效果决定的一种决策选择。因此提出这样两个问题:当这些系数有一个或几个发生变化时,已求得的线性规划问题的最优解会有什么变化;或者这些系数在什么范围内变化时,线性规划问题的最优解或最优基不变。这里我们就不讨论了。4.4 参数线性规划参数线性规划是研究这些参数中某一参数连续变化时,使最优解发生变化的各临界点的值。即把某一参数作为参变量,而目标函数在某区间内是这参变量的线性函数,含这参变量的约束条件是线性等式或不等式。因此仍可用单纯形法和对偶单纯形法进行分析参数线性规划问题。习 题 一1试将下述问题改写成线性规划问题: 2试将下列问题改写成线性规划问题: 3线性回归是一种常用的数理统计方法,这个方法要求对图上的一系列点选配一条合适的直线拟合。方法通常是先定直线方程为,然后按某种准则求定。通常这个准则为最小二乘法,但也可用其他准则。试根据以下准则建立这个问题的线性规划模型: 4某厂生产三种产品I,II,III。每种产品要经过两道工序加工。设该厂有两种规格的设备能完成工序,它们以表示;有三种规格的设备能完成工序,它们以表示。产品I可在任何一种规格设备上加工。产品II可在任何规格的设备上加工,但完成工序时,只能在设备上加工;产品III只能在与设备上加工。已知在各种机床设备的单件工时,原材料费,产品销售价格,各种设备有效台时以及满负荷操作时机床设备的费用如下表,要求安排最优的生产计划,使该厂利润最大。设备产 品设备有效台时满负荷时的设备费用(元)IIIIII5764710981211600010000400070004000300321250783200原料费(元/件)单 价(元/件)0.251.250.352.000.502.805有四个工人,要指派他们分别完成4项工作,每人做各项工作所消耗的时间如下表: 工作工人甲乙丙丁15192619182317212122162324181917 问指派哪个人去完成哪项工作,可使总的消耗时间为最小?6某战略轰炸机群奉命摧毁敌人军事目标。已知该目标有四个要害部位,只要摧毁其中之一即可达到目的。为完成此项任务的汽油消耗量限制为48000升、重型炸弹48枚、轻型炸弹32枚。飞机携带重型炸弹时每升汽油可飞行2千米,带轻型炸弹时每升汽油可飞行3千米。又知每架飞机每次只能装载一枚炸弹,每出发轰炸一次除来回路程汽油消耗(空载时每升汽油可飞行4千米)外,起飞和降落每次各消耗100升。有关数据如表所示。要害部位离机场距离(千米)摧毁可能性每枚重型弹每枚轻型弹12344504805406000.100.200.150.250.080.160.120.20为了使摧毁敌方军事目标的可能性最大,应如何确定飞机轰炸的方案,要求建立这个问题的线性规划模型。7用Matlab求解下列线性规划问题: s.t. 8用Matlab求解下列规划问题: s.t. 第二章 整数规划1 概论1.1 定义规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中,变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适用于整数线性规划。目前还没有一种方法能有效地求解一切整数规划。1.2 整数规划的分类如不加特殊说明,一般指整数线性规划。对于整数线性规划模型大致可分为两类:1o 变量全限制为整数时,称纯(完全)整数规划。2o 变量部分限制为整数的,称混合整数规划。1.2 整数规划特点(i) 原线性规划有最优解,当自变量限制为整数后,其整数规划解出现下述情况:原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。整数规划无可行解。例1 原线性规划为 其最优实数解为:。有可行解(当然就存在最优解),但最优解值变差。例2 原线性规划为 其最优实数解为:。若限制整数得:。(ii) 整数规划最优解不能按照实数最优解简单取整而获得。1.3 求解方法分类:(i)分枝定界法可求纯或混合整数线性规划。(ii)割平面法可求纯或混合整数线性规划。(iii)隐枚举法求解“0-1”整数规划: 过滤隐枚举法; 分枝隐枚举法。(iv)匈牙利法解决指派问题(“0-1”规划特殊情形)。(v)蒙特卡洛法求解各种类型规划。下面将简要介绍常用的几种求解整数规划的方法。2 分枝定界法对有约束条件的最优化问题(其可行解为有限数)的所有可行解空间恰当地进行系统搜索,这就是分枝与定界内容。通常,把全部可行解空间反复地分割为越来越小的子集,称为分枝;并且对每个子集内的解集计算一个目标下界(对于最小值问题),这称为定界。在每次分枝后,凡是界限超出已知可行解集目标值的那些子集不再进一步分枝,这样,许多子集可不予考虑,这称剪枝。这就是分枝定界法的主要思路。分枝定界法可用于解纯整数或混合的整数规划问题。在本世纪六十年代初由Land Doig和Dakin等人提出的。由于这方法灵活且便于用计算机求解,所以现在它已是解整数规划的重要方法。目前已成功地应用于求解生产进度问题、旅行推销员问题、工厂选址问题、背包问题及分配问题等。设有最大化的整数规划问题,与它相应的线性规划为问题,从解问题开始,若其最优解不符合的整数条件,那么的最优目标函数必是的最优目标函数的上界,记作;而的任意可行解的目标函数值将是的一个下界。分枝定界法就是将的可行域分成子区域的方法。逐步减小和增大,最终求到。现用下例来说明:例3 求解下述整数规划 解 (i)先不考虑整数限制,即解相应的线性规划,得最优解为:可见它不符合整数条件。这时是问题的最优目标函数值的上界,记作。而显然是问题的一个整数可行解,这时,是的一个下界,记作,即。(ii)因为当前均为非整数,故不满足整数要求,任选一个进行分枝。设选进行分枝,把可行集分成2个子集:,因为4与5之间无整数,故这两个子集的整数解必与原可行集合整数解一致。这一步称为分枝。这两个子集的规划及求解如下:问题: 最优解为:。问题: 最优解为:。再定界:。(iii)对问题再进行分枝得问题和,它们的最优解为再定界:,并将剪枝。(iv)对问题再进行分枝得问题和,它们的最优解为无可行解。将剪枝。于是可以断定原问题的最优解为:从以上解题过程可得用分枝定界法求解整数规划(最大化)问题的步骤为:开始,将要求解的整数规划问题称为问题,将与它相应的线性规划问题称为问题。(i)解问题可能得到以下情况之一: (a)没有可行解,这时也没有可行解,则停止 (b)有最优解,并符合问题的整数条件,的最优解即为的最优解,则停止。 (c)有最优解,但不符合问题的整数条件,记它的目标函数值为。(ii)用观察法找问题的一个整数可行解,一般可取,试探,求得其目标函数值,并记作。以表示问题的最优目标函数值;这时有 进行迭代。第一步:分枝,在的最优解中任选一个不符合整数条件的变量,其值为,以表示小于的最大整数。构造两个约束条件 和 将这两个约束条件,分别加入问题,求两个后继规划问题和。不考虑整数条件求解这两个后继问题。 定界,以每个后继问题为一分枝标明求解的结果,与其它问题的解的结果中,找出最优目标函数值最大者作为新的上界。从已符合整数条件的各分支中,找出目标函数值为最大者作为新的下界,若无作用不变。第二步:比较与剪枝,各分枝的最优目标函数中若有小于者,则剪掉这枝,即以后不再考虑了。若大于,且不符合整数条件,则重复第一步骤。一直到最后得到为止。得最优整数解。3 型整数规划型整数规划是整数规划中的特殊情形,它的变量仅取值0或1。这时称为变量,或称二进制变量。仅取值0或1这个条件可由下述约束条件: ,整数所代替,是和一般整数规划的约束条件形式一致的。在实际问题中,如果引入 变量,就可以把有各种情况需要分别讨论的线性规划问题统一在一个问题中讨论了。我们先介绍引入变量的实际问题,再研究解法。3.1 引入变量的实际问题 3.1.1 投资场所的选定相互排斥的计划 例4 某公司拟在市东、西、南三区建立门市部。拟议中有7个位置(点)可供选择。规定 在东区。由三个点中至多选两个; 在西区。由两个点中至少选一个;在南区,由两个点中至少选一个。 如选用点,设备投资估计为元,每年可获利润估计为元,但投资总额不能超过元。问应选择哪几个点可使年利润为最大?解题时先引入变量令 .于是问题可列写成: 3.1.2 相互排斥的约束条件有两个相互排斥的约束条件 或 。为了统一在一个问题中,引入变量,则上述约束条件可改写为: 其中是充分大的数。约束条件 或 可改写为如果有个互相排斥的约束条件:为了保证这个约束条件只有一个起作用,我们引入个变量和一个充分大的常数,而下面这一组个约束条件 (1) (2)就合于上述的要求。这是因为,由于(2),个中只有一个能取0值,设,代入(1),就只有的约束条件起作用,而别的式子都是多余的。3.1.3 关于固定费用的问题(Fixed Cost Problem)在讨论线性规划时,有些问题是要求使成本为最小。那时总设固定成本为常数,并在线性规划的模型中不必明显列出。但有些固定费用(固定成本)的问题不能用一般线性规划来描述,但可改变为混合整数规划来解决,见下例。例5 某工厂为了生产某种产品,有几种不同的生产方式可供选择,如选定的生产方式投资高(选购自动化程度高的设备),由于产量大,因而分配到每件产品的变动成本就降低;反之,如选定的生产方式投资低,将来分配到每件产品的变动成本可能增加。所以必须全面考虑。今设有三种方式可供选择,令表示采用第种方式时的产量;表示采用第种方式时每件产品的变动成本;表示采用第种方式时的固定成本。为了说明成本的特点,暂不考虑其它约束条件。采用各种生产方式的总成本分别为 . 在构成目标函数时,为了统一在一个问题中讨论,现引入变量,令 (3)于是目标函数 (3)式这个规定可表为下述3个线性约束条件: (4)其中是一个充分小的正常数,是个充分大的正常数。(4)式说明,当时必须为1;当时只有为0时才有意义,所以(4)式完全可以代替(3)式。3.2 型整数规划解法之一(过滤隐枚举法)解型整数规划最容易想到的方法,和一般整数规划的情形一样,就是穷举法,即检查变量取值为0或1的每一种组合,比较目标函数值以求得最优解,这就需要检查变量取值的个组合。对于变量个数较大(例如),这几乎是不可能的。因此常设计一些方法,只检查变量取值的组合的一部分,就能求到问题的最优解。这样的方法称为隐枚举法(Implicit Enumeration),分枝定界法也是一种隐枚举法。当然,对有些问题隐枚举法并不适用,所以有时穷举法还是必要的。下面举例说明一种解型整数规划的隐枚举法。 例6 求解思路及改进措施:(i) 先试探性求一个可行解,易看出满足约束条件,故为一个可行解,且。(ii) 因为是求极大值问题,故求最优解时,凡是目标值的解不必检验是否满足约束条件即可删除,因它肯定不是最优解,于是应增加一个约束条件(目标值下界):(iii) 改进过滤条件。(iv) 由于对每个组合首先计算目标值以验证过滤条件,故应优先计算目标值大的组合,这样可提前抬高过滤门槛,以减少计算量。4 蒙特卡洛法(随机取样法)前面介绍的常用的整数规划求解方法,主要是针对线性整数规划而言,而对于非线性整数规划目前尚未有一种成熟而准确的求解方法,因为非线性规划本身的通用有效解法尚未找到,更何况是非线性整数规划。然而,尽管整数规划由于限制变量为整数而增加了难度;然而又由于整数解是有限个,于是为枚举法提供了方便。当然,当自变量维数很大和取值范围很宽情况下,企图用显枚举法(即穷举法)计算出最优值是不现实的,但是应用概率理论可以证明,在一定的计算量的情况下,完全可以得出一个满意解。例7 已知非线性整数规划为:对该题,目前尚无有效方法求出准确解。如果用显枚举法试探,共需计算个点,其计算量非常之大。然而应用蒙特卡洛去随机计算个点,便可找到满意解,那么这种方法的可信度究竟怎样呢?下面就分析随机取样采集个点计算时,应用概率理论来估计一下可信度。不失一般性,假定一个整数规划的最优点不是孤立的奇点。假设目标函数落在高值区的概率分别为0.01,0.00001

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论