您好,欢迎访问三七文档
第一章线性规划-2011.04.281.1线性规划及其实例•在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(LinearProgramming简记LP)则是数学规划的一个重要分支。例子•例1某机床厂生产甲、乙两种机床,每台销售后的利润分别为4000元与3000元。生产甲机床需用机器加工,加工时间分别为每台2小时和1小时;生产乙机床需用三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时数分别为机器10小时、机器8小时和机器7小时,问该厂应生产甲、乙机床各几台,才能使总利润最大?1.2线性规划的Matlab标准形式•线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于号也可以是大于号。为了避免这种形式多样性带来的不便,Matlab中规定线性规划的标准形式为bAxxcxTthatsuchmin其中c和x为n维列向量,b为m维列向量,A为m×n矩阵。1.3线性规划问题的解的概念•一般线性规划问题的标准型为njjjxcz1minnjijijmibxa1,,2,1s.t.可行解满足约束条件(4)的解x=(x1,x2,...,xn),称为线性规划问题的可行解,而使目标函数(3)达到最小值的可行解叫最优解。可行域所有可行解构成的集合称为问题的可行域,记为。(3)(4)1.4线性规划的图解法0246810012345678910x2=72x1+x2=10x1+x2=8z=12(2,6)图解法简单直观,有助于了解线性规划问题求解的基本原理。我们先应用图解法来求解上例。如上图所示,阴影区域即为LP问题的可行域R。对于每一固定的值z,使目标函数值等于的点构成的直线称为目标函数等位线,当z变动时,我们得到一族平行直线。让等位线沿目标函数值减小的方向移动,直到等位线与可行域有交点的最后位置,此时的交点(一个或多个)即为LP的最优解。•从上面的图解过程可以看出并不难证明以下断言:•(1)可行域可能会出现多种情况。R可能是空集也可能是非空集合,当R非空时,它必定是若干个半平面的交集(除非遇到空间维数的退化)。R既可能是有界区域,也可能是无界区域。•(2)在R非空时,线性规划既可以存在有限最优解,也可以不存在有限最优解(其目标函数值无界)。•(3)R非空且LP有有限最优解时,最优解可以唯一或有无穷多个。•(4)若线性规划存在有限最优解,则必可找到具有最优目标函数值的可行域R的“顶点”。1.5求解线性规划的Matlab解法•单纯形法是求解线性规划问题的最常用、最有效的算法之一。单纯形法是首先由•GeorgeDantzig于1947年提出的,近60年来,虽有许多变形体已被开发,但却保持着同样的基本观念。由于有如下结论:若线性规划问题有有限最优解,则一定有某个最优解是可行区域的一个极点。基于此,单纯形法的基本思路是:先找出可行域的一个极点,据一定规则判断其是否最优;若否,则转换到与之相邻的另一极点,并使目标函数值更优;如此下去,直到找到某一最优解为止。•Matlab中线性规划的标准型为•基本函数形式为linprog(c,A,b),它的返回值是向量的值。还有其它的一些函数调用形式(在Matlab指令窗运行helplinprog可以看到所有的函数调用形式),如:•[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS)•这里fval返回目标函数的值,Aeq和beq对应等式约束,LB和UB分别是变量的下界和上界,是的初始值,OPTIONS是控制参数。bAxxcTxsuchthatmin例2求解下列线性规划问题321532maxxxxz0,,10527321321321xxxxxxxxx解(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求解线性规划问题32132minxxxz0,,62382432121321xxxxxxxx解编写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可以转化为线性规划的问题§2运输问题(产销平衡)运输问题解法§3指派问题(又称分配问题AssignmentProblem)•3.1指派问题的数学模型指派问题的解法•(5)的可行解既可以用一个矩阵(称为解矩阵)表示,其每行每列均有且只有一个元素为1,其余元素均为0,也可以用1,2,…,n中的一个置换表示。•(5)的变量只能取0或1,从而是一个0-1规划问题。一般的0-1规划问题求解极为困难。但指派问题并不难解,其约束方程组的系数矩阵十分特殊(被称为全单位模矩阵,其各阶非零子式均为1或-1),其非负可行解的分量只能取0或1,故约束xij=0或1可改写为xij=0而不改变其解。此时,指派问题被转化为一个特殊的运输问题,其中m=n,ai=bj=1。3.2求解指派问题的匈牙利算法•由于指派问题的特殊性,又存在着由匈牙利数学家D.Konig提出的更为简便的解法—匈牙利算法。算法主要依据以下事实:如果系数矩阵C=(cij)一行(或一列)中每一元素都加上或减去同一个数,得到一个新矩阵B=(bij),则以C或B为系数矩阵的指派问题具有相同的最优指派。•利用上述性质,可将原系数阵C变换为含零元素较多的新系数阵B,而最优解不变。若能在B中找出n个位于不同行不同列的零元素,令解矩阵中相应位置的元素取值为1,其它元素取值为零,则所得该解是以B为系数阵的指派问题的最优解,从而也是原问题的最优解。•由C到B的转换可通过先让矩阵C的每行元素均减去其所在行的最小元素得矩阵D,D的每列元素再减去其所在列的最小元素得以实现。•下面通过一例子来说明该算法。§4对偶理论与灵敏度分析•4.1原始问题和对偶问题考虑下列一对线性规划模型:MaxC'xs.t.Ax=b,x=0(P)和Minb'ys.t.A'y=c,y=0(D)称(P)为原始问题,(D)为它的对偶问题。相关讨论•不太严谨地说,对偶问题可被看作是原始问题的“行列转置”:•1.原始问题约束条件中的第列系数与其对偶问题约束条件中的第行的系数相同;•2.原始目标函数的系数行与其对偶问题右侧的常数列相同;•3.原始问题右侧的常数列与其对偶目标函数的系数行相同;•4.在这一对问题中,除非负约束外的约束不等式方向和优化方向相反。4.2对偶问题的基本性质1、对称性:对偶问题的对偶是原问题。2、弱对偶性:若x是原问题的可行解,y是对偶问题的可行解。则恒有:c'x=b'y。3、无界性:若原问题(对偶问题)为无界解,则其对偶问题(原问题)无可行解。4、可行解是最优解时的性质:设x是原问题的可行解,y是对偶问题的可行解,当c'x=b'y时,x,y是最优解。5、对偶定理:若原问题有有限最优解,那么对偶问题也有最优解;且目标函数值相同。6、互补松弛性:若x,y分别是原问题和对偶问题的最优解,则y'(Ax-b)=0,x'(A'y-c)=0由上述性质可知,对任一LP问题(P),若它的对偶问题(D)可能的话,我们总可以通过求解(D)来讨论原问题(P):若(D)无界,则(P)无可行解;若(D)有有限最优解w,最优值wb,则利用互补松弛性可求得(P)的所有最优解,且(P)的最优值为wb。例如对只有两个行约束的LP,其对偶问题只有两个变量,总可用图解法来求解。对偶单纯形法例子4.3灵敏度分析jiijcba,,jcija灵敏度分析是指对系统或周围事物因周围条件变化显示出来的敏感程度的分析。在以前讨论线性规划问题时,假定都是常数。但实际上这些系数往往是估计值和预测值。如市场条件一变,值就会变化;往往是因工艺条件的改变而改变;是根据资源投入后的经济效果决定的一种决策选择。因此提出这样两个问题:当这些参数有一个或几个发生变化时,已求得的线性规划问题的最优解会有什么变化;或者这些参数在什么范围内变化时,线性规划问题的最优解不变。这里我们就不讨论了。.ib习题一Lingo软件简介•LINGO是LinearInteractiveandGeneralOptimizer的缩写,即“交互式的线性和通用优化求解器”,由美国LINDO系统公司(LindoSystemInc.)推出的,可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的最佳选择。其特色在于内置建模语言,提供十几个内部函数,可以允许决策变量是整数(即整数规划,包括0-1整数规划),方便灵活,而且执行速度非常快。能方便与EXCEL,数据库等其他软件交换数据。步骤•一般地,使用LINGO求解运筹学问题可以分为以下两个步骤来完成:•1)根据实际问题,建立数学模型,即使用数学建模的方法建立优化模型;•2)根据优化模型,利用LINGO来求解模型。主要是根据LINGO软件,把数学模型转译成计算机语言,借助于计算机来求解。综述•LINGO全称是LinearINteractiveandGeneralOptimizer的缩写---交互式的线性和通用优化求解器。它是一套设计用来帮助您快速,方便和有效的构建和求解线性,非线性,和整数最优化模型的功能全面的工具.包括功能强大的建模语言,建立和编辑问题的全功能环境,读取和写入Excel和数据库的功能,和一系列完全内置的求解程序.运行环境:Win9x/NT/2000/XP/2003软件类别:国外软件/工具软件/计算工具软件语言:英文Lingo是使建立和求解线性、非线性和整数最佳化模型更快更简单更有效率的综合工具。Lingo提供强大的语言和快速的求解引擎来阐述和求解最佳化模型。1简单的模型表示Lingo可以将线性、非线性和整数问题迅速得予以公式表示,并且容易阅读、了解和修改。LINGO的建模语言允许您使用汇总和下标变量以一种易懂的直观的方式来表达模型,非常类似您在使用纸和笔。模型更加容易构建,更容易理解,因此也更容易维护。2方便的数据输入和输出选择Lingo建立的模型可以直接从数据库或工作表获取资料。同样地,Lingo可以将求解结果直接输出到数据库或工作表。使得您能够在您选择的应用程序中生成报告.3强大的求解器LINGO拥有一整套快速的,内建的求解器用来求解线性的,非线性的(球面&非球面的),二次的,二次约束的,和整数优化问题.您甚至不需要指定或启动特定的求解器,因为LINGO会读取您的方程式并自动选择合适的求解器.4交互式模型或创建Turn-key应用程序您能够在LINGO内创建和求解模型,或您能够从您自己编写的应用程序中直接调用LINGO.对于开发交互式模型,LINGO提供了一整套建模环境来构建,求解和分析您的模型.对于构建turn-key解决方案,LINGO提供的可调用的DLL和OLE界面能够从用户自己写的程序中被调用.LINGO也能够从Excel宏或数据库应用程序中被直接调用.广泛的文件和HELP功能实例1实例2Optimizationterminated.x=6.42860.57140.0000value=14.5714实例3Optimizationterminated.x=0.80661.79000.0166y=7.0000实例4Globaloptimalsolutionfound.Objectivevalue:66.00000Totalsolveriterations:11VariableValueReducedCostX10.0000000.000000X21.0000000.000000X30.0000003.000000X40.0000
本文标题:第一章 线性规划
链接地址:https://www.777doc.com/doc-3355537 .html