10424-数学建模-第一章 线性规划
- 格式:doc
- 大小:472.00 KB
- 文档页数:10
第一章 线性规划§1 线性规划在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。
此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear Programming 简记LP)则是数学规划的一个重要分支。
自从1947年G. B. Dantzig 提出求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深入。
特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。
1.1 线性规划的实例与定义例1某机床厂生产甲、乙两种机床,每台销售后的利润分别为4000元与3000元。
生产甲机床需用B A 、机器加工,加工时间分别为每台2小时和1小时;生产乙机床需用C B A 、、三种机器加工,加工时间为每台各一小时。
若每天可用于加工的机器时数分别为A 机器10小时、B 机器8小时和C 机器7小时,问该厂应生产甲、乙机床各几台,才能使总利润最大?上述问题的数学模型:设该厂生产1x 台甲机床和2x 乙机床时总利润最大,则21,x x 应满足(目标函数)2134m ax x x z += (1)s.t.(约束条件)⎪⎪⎩⎪⎪⎨⎧≥≤≤+≤+0,781022122121x x x x x x x (2)这里变量21,x x 称之为决策变量,(1)式被称为问题的目标函数,(2)中的几个不等式是问题的约束条件,记为s.t.(即subject to)。
由于上面的目标函数及约束条件均为线性函数,故被称为线性规划问题。
总之,线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。
在解决实际问题时,把问题归结成一个线性规划数学模型是很重要的一步,但往往也是困难的一步,模型建立得是否恰当,直接影响到求解。
而选适当的决策变量,是我们建立有效模型的关键之一。
1.2 线性规划的Matlab 标准形式线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于号也可以是大于号。
线性规划1.简介:线性规划是运筹学中研究较早、发展较快、应用广泛、方法较成熟的一个重要分支,它是辅助人们进行科学管理的一种数学方法.在经济管理、交通运输、工农业生产等经济活动中,提高经济效果是人们不可缺少的要求,而提高经济效果一般通过两种途径:一是技术方面的改进,例如改善生产工艺,使用新设备和新型原材料.二是生产组织与计划的改进,即合理安排人力物力资源.线性规划所研究的是:在一定条件下,合理安排人力物力等资源,使经济效果达到最好.规划问题。
一般地,求线性目标函数在线性约束条件下的最大值或最小值的问题,统称为线性线性约束条件的解叫做可行解,由所有可行解组成的集合叫做可行域。
在优化模型中,如果目标函数f(x)和约束条件中的gi(x)都是线性函数,则该模型称为线性规划。
2.线性规划的3个基本要素(1)决策变量(2)目标函数f(x)(3)约束条件(gi(x)≤0称为约束条件)3.建立线性规划的模型(1)找出待定的未知变量(决策变量),并用袋鼠符号表示他们。
(2)找出问题中所有的限制或者约束,写出未知变量的线性方程或线性不等式。
(3)找到模型的目标或判据,写成决策变量的线性函数,以便求出其最大值或最小值。
以下题为例,来了解一下如何将线性规划用与实际的解题与生活中。
生产计划问题某工厂生产甲乙两种产品,每单位产品消耗和获得的利润如表试拟订生产计划,使该厂获得利润最大解答:根据解题的三个基本步骤(1)找出未知变量,用符号表示:设甲乙两种产品的生产量分别为x1与x2吨,利润为z万元。
(2)确定约束条件:在这道题目当中约束条件都分别为:钢材,电力,工作日以及生产量不能为负的限制钢材:9x 1+5 x 2≤360,电力:4x 1+5 x 2≤200,工作日:3x 1+10 x 2≤300,x 1 ≥0 ,x 2 ≥0,(3)确定目标函数:Z=7x 1+12 x 2所以综合上面这三步可知,这个生产组合问题的线性规划的数学模型为:max Z=7x 1+12 x 2s.t.⎪⎪⎪⎩⎪⎪⎪⎨⎧≥≥≤+≤+≤+00300103200543605921212121x x x x x x x x4.使用MATLAB 解决线性规划问题依旧是以上题为例,将其用MATLAB 来表示出来1.将目标函数用矩阵的乘法来表示max Z=(7 12)⎪⎪⎭⎫ ⎝⎛21x x 2.将约束条件也用矩阵的乘法表示s.t.⎪⎪⎪⎩⎪⎪⎪⎨⎧⎪⎪⎭⎫ ⎝⎛≤⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛≤⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛2121003002003601035459x x x x 编写MATLAB 的程序如下:c=[-7 -12]; (由于是max 函数,因此将目标函数的系数全部变为负数)A=[9,5;4,5;3,10];b=[360;200;300];Aeq=[];beq=[];vlb=[0;0];vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)其运行结果显示如下:x =20.000024.0000fval =-428.00005.MATLAB 求解线性规划的语句(1)c=[ ] 表示目标函数的各个决策变量的系数(2)A=[ ] 表示约束条件中≥或≤的式子中的各个决策变量的系数。
第1章线性规划Chapter 1 Linear Programming本章内容提要线性规划是运筹学的重要内容。
本章介绍线性规划数学模型、线性规划的基本概念以及求解线性规划数学模型的基本算法——单纯形法。
学习本章要求掌握以下内容:⏹线性规划模型的结构⏹线性规划的标准形式,非标准形式转化为标准形式⏹线性规划的图解以及相应的概念。
包括:约束直线,可行半空间,可行解,可行域,凸集,极点,目标函数等值线,最优解⏹线性规划的基本概念。
包括:基,基础解,基础可行解,基变量,非基变量,进基变量,离基变量,基变换⏹单纯形法原理。
包括:基变量和目标函数用非基变量表出,检验数,选择进基变量的原则,确定离基变量的方法,主元,旋转运算⏹单纯形表。
包括初始单纯形表的构成,单纯形表运算方法⏹初始基础可行解,两阶段法⏹退化的基础可行解§1.1 运筹学和线性规划1.1.1 运筹学运筹学(Operations Research)是二十世纪三十年代二次大战期间由于战争的需要发展起来的一门学科。
当时,英国组织了一批自然科学和工程科学的学者,和军队指挥员一起,研究大规模战争提出的一些问题。
如轰炸战术的评价和改进、反潜艇作战研究等,研究结果在战争实践中取得了明显得效果。
这些研究当时在英国称为Operational Research,直译为作战研究。
战争结束以后,这些研究方法不断发展完善,并逐步形成学科理论体系,其中一些主要的理论和方法包括:线性规划,网络流,整数规划,动态规划,非线性规划,排队论,决策分析,对策论,计算机模拟等。
这些理论和方法在经济管理领域也得到了广泛应用,Operations Research也转义成为“作业研究”。
我国将Operations Research译成“运筹学”,非常贴切地将Operations Research这一英文术语所包含的作战研究和作业研究两方面的涵义都体现了出来。
现在,运筹学已经成为管理科学重要的基础理论和应用方法,是管理科学专业基本的必修课程之一。
附录一Matlab入门§ 1 概论常用的数学软件有Maple, Mathematica, Mathlab等;常用的大型统计软件有SAS ,SPSS等。
下面我们简要地介绍一些Matlab的功能,应用范围及发展史。
Matlab有五大通用功能:数值计算功能(Nemeric),符号运算功能(Sybolic) (当要求Matlab进行符号运算时,它就请求Malpe计算并将结果返回到Matlab命令窗口),数据可视化功能(Graphic),数据图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。
Matlab在线性代数,矩阵分析,数值及优化,数理统计和随机信号分析,电路与系统,系统动力学,信号和图像处理,控制理论分析和系统设计,过程控制,建模和仿真,通信系统,财政金融的众多领域的理论研究和工程设计中得到了广泛应用。
MATLAB是1984年由美国Mathworks公司推向市场。
该软件有三大特点:一是功能强大;二是界面友善,语言自然;三是开放性强(仅Mathworks公司就推出了30多个应用工具箱)。
Matlab的版本经历了3.0,3.5,4.0,4.1,4.2,5.0,5.1,5.2,5.3,目前已经发展到Matlab6.0版本。
§2 Matlab入门1.指令行的编辑启动Matlab后,就可以利用Matlab工作。
由于Matlab是一种交互式语言,随时输入指令,即时给出运算结果是它的工作方式。
2*sin(0.3*pi)/(1+sqrt(5))↵ans=0.5000 (ans是一个保留的Matlab字符串,它表示上面一个式子的返回结果,用于结果的缺省变量名)2. 入门演示intro↵ demo↵3. 帮助① help↵ %帮助总揽help elfun↵ %关于基本函数的帮助信息help exp↵ %指数函数exp的详细信息② lookfor指令当要查找具有某种功能但又不知道准确名字的指令时,help的能力就不够了,lookfor可以根据用户提供的完整或不完整的关键词,去搜索出一组与之相关的指令。
第一章 线性规划§1 线性规划在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。
此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear Programming 简记LP)则是数学规划的一个重要分支。
自从1947年G. B. Dantzig 提出求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深入。
特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。
1.1 线性规划的实例与定义 例1 某机床厂生产甲、乙两种机床,每台销售后的利润分别为4000元与3000元。
生产甲机床需用B A 、机器加工,加工时间分别为每台2小时和1小时;生产乙机床需用C B A 、、三种机器加工,加工时间为每台各一小时。
若每天可用于加工的机器时数分别为A 机器10小时、B 机器8小时和C 机器7小时,问该厂应生产甲、乙机床各几台,才能使总利润最大?上述问题的数学模型:设该厂生产1x 台甲机床和2x 乙机床时总利润最大,则21,x x 应满足(目标函数)2134max x x z += (1)s.t.(约束条件)⎪⎪⎩⎪⎪⎨⎧≥≤≤+≤+0,781022122121x x x x x x x (2)这里变量21,x x 称之为决策变量,(1)式被称为问题的目标函数,(2)中的几个不等式是问题的约束条件,记为s.t.(即subject to)。
由于上面的目标函数及约束条件均为线性函数,故被称为线性规划问题。
总之,线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。
在解决实际问题时,把问题归结成一个线性规划数学模型是很重要的一步,但往往也是困难的一步,模型建立得是否恰当,直接影响到求解。
而选适当的决策变量,是我们建立有效模型的关键之一。
1.2 线性规划的Matlab 标准形式线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于号也可以是大于号。
为了避免这种形式多样性带来的不便,Matlab 中规定线性规划的标准形式为b Ax xc xT ≤ that such min 其中c 和x 为n 维列向量,b 为m 维列向量,A 为n m ⨯矩阵。
例如线性规划b Ax xc xT ≥ that such max 的Matlab 标准型为b Ax xc xT -≤-- that such min1.3 线性规划问题的解的概念一般线性规划问题的标准型为∑==nj j j x c z 1min (3)∑==≤nj ij ij m i b x a 1,,2,1 s.t. (4)可行解 满足约束条件(4)的解),,,(21n x x x x =,称为线性规划问题的可行解,而使目标函数(3)达到最小值的可行解叫最优解。
可行域 所有可行解构成的集合称为问题的可行域,记为R 。
图解法简单直观,有助于了解线性规划问题求解的基本原理。
我们先应用图解法来求解例1。
对于每一固定的值z ,使目标函数值等于z 的点构成的直线称为目标函数等位线,当z 变动时,我们得到一族平行直线。
对于例1,显然等位线越趋于右上方,其上的点具有越大的目标函数值。
不难看出,本例的最优解为Tx )6,2(*=,最优目标值26*=z 。
从上面的图解过程可以看出并不难证明以下断言:(1)可行域R 可能会出现多种情况。
R 可能是空集也可能是非空集合,当R 非空时,它必定是若干个半平面的交集(除非遇到空间维数的退化)。
R 既可能是有界区域,也可能是无界区域。
(2)在R 非空时,线性规划既可以存在有限最优解,也可以不存在有限最优解(其目标函数值无界)。
(3)若线性规划存在有限最优解,则必可找到具有最优目标函数值的可行域R 的“顶点”。
上述论断可以推广到一般的线性规划问题,区别只在于空间的维数。
在一般的n 维空间中,满足一线性等式∑==ni i b x a 1的点集被称为一个超平面,而满足一线性不等式∑=≤n i ib x a 1(或∑=≥ni ib x a 1)的点集被称为一个半空间(其中),,(1naa 为一n 维行向量,b 为一实数)。
若干个半空间的交集被称为多胞形,有界的多胞形又被称为多面体。
易见,线性规划的可行域必为多胞形(为统一起见,空集Φ也被视为多胞形)。
在一般n 维空间中,要直接得出多胞形“顶点”概念还有一些困难。
二维空间中的顶点可以看成为边界直线的交点,但这一几何概念的推广在一般n 维空间中的几何意义并不十分直观。
为此,我们将采用另一途径来定义它。
定义 1 称n 维空间中的区域R 为一凸集,若R x x ∈∀21,及)1,0(∈∀λ,有R x x ∈-+21)1(λλ。
定义2 设R 为n 维空间中的一个凸集,R 中的点x 被称为R 的一个极点,若不存在R x x ∈21、及)1,0(∈λ,使得21)1(x x x λλ-+=。
定义1 说明凸集中任意两点的连线必在此凸集中;而定义2 说明,若x 是凸集R 的一个极点,则x 不能位于R 中任意两点的连线上。
不难证明,多胞形必为凸集。
同样也不难证明,二维空间中可行域R 的顶点均为R 的极点(R 也没有其它的极点)。
1.5 求解线性规划的Matlab 解法单纯形法是求解线性规划问题的最常用、最有效的算法之一。
这里我们就不介绍单纯形法,有兴趣的读者可以参看其它线性规划书籍。
下面我们介绍线性规划的Matlab 解法。
Matlab5.3中线性规划的标准型为 b Ax x c Tx≤ such that min基本函数形式为linprog(c,A,b),它的返回值是向量x 的值。
还有其它的一些函数调用形式(在 Matlab 指令窗运行 help linprog 可以看到所有的函数调用形式),如:[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X 0,OPTIONS) 这里fval 返回目标函数的值,Aeq 和beq 对应等式约束beq x Aeq =*,LB 和UB 分别是变量x 的下界和上界,0x 是x 的初始值,OPTIONS 是控制参数。
例2 求解下列线性规划问题321532m a x x x x z -+=⎪⎩⎪⎨⎧≥≥+-=++0,,10527321321321x x x x x x x x x 解 (i )编写M 文件(ii )将M 文件存盘,并命名为example1.m 。
(iii )在Matlab 指令窗运行example1即可得所求结果。
例3 求解线性规划问题 32132 min x x x z ++=⎪⎩⎪⎨⎧≥≥+≥++0,,62382432121321x x x x x x x x 解 编写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 可以转化为线性规划的问题很多看起来不是线性规划的问题也可以通过变换变成线性规划的问题来解决。
如: 例3 线性规划问题为bAx x x x n ≤+++ t.s.||||||min 21其中T n x x x ][1 =,A 和b 为相应维数的矩阵和向量。
要把上面的问题变换成线性规划问题,只要注意到事实:对任意的i x ,存在0,>i i v u 满足i i i v u x -=,i i i v u x +=||事实上,我们只要取2||i i i x x u +=,2||ii i x x v -=就可以满足上面的条件。
这样,记T n u u u ][1 =,T n v v v ][1 =,从而我们可以把上面的问题变成∑=+ni i iv u1)(min⎩⎨⎧≥≤-0,)( t.s.v u bv u A例4 |}|max {min i y x iiε其中i i i y x -=ε。
对于这个问题,如果我们取||max 0i y ix ε=,这样,上面的问题就变换成0m i n x0011,, t .s.x y x x y x n n ≤-≤-此即我们通常的线性规划问题。
§2 运输问题(产销平衡)例5 某商品有m 个产地、n 个销地,各产地的产量分别为m a a ,,1 ,各销地的需求量分别为n b b ,,1 。
若该商品由i 产地运到j 销地的单位运价为ij c ,问应该如何调运才能使总运费最省?解:引入变量ij x ,其取值为由i 产地运往j 销地的该商品数量,数学模型为∑∑==m i nj ijij xc 11mins.t. ⎪⎪⎪⎩⎪⎪⎪⎨⎧≥====∑∑==0,,2,1,,,1,11ij mi j ij nj i ij x n j b x m i a x显然是一个线性规划问题,当然可以用单纯形法求解。
对产销平衡的运输问题,由于有以下关系式存在:∑∑∑∑∑∑=======⎪⎭⎫ ⎝⎛=⎪⎪⎭⎫ ⎝⎛=mi i nj n j m i ij mi n j ij j a x x b 111111其约束条件的系数矩阵相当特殊,可用比较简单的计算方法,习惯上称为表上作业法(由康托洛维奇和希奇柯克两人独立地提出,简称康—希表上作业法)。
§3 指派问题3.1 指派问题的数学模型例6 拟分配n 人去干n 项工作,每人干且仅干一项工作,若分配第i 人去干第j 项工作,需花费ij c 单位时间,问应如何分配工作才能使工人花费的总时间最少?容易看出,要给出一个指派问题的实例,只需给出矩阵)(ij c C =,C 被称为指派问题的系数矩阵。
引入变量ij x ,若分配i 干j 工作,则取1=ij x ,否则取0=ij x 。
上述指派问题的数学模型为∑∑==n i nj ijij xc 11mins.t.1 01111⎪⎪⎪⎩⎪⎪⎪⎨⎧===∑∑==或ij ni ij nj ij x x x (5)(5)的可行解既可以用一个矩阵表示,其每行每列均有且只有一个元素为1,其余元素均为0,也可以用n ,,1 中的一个置换表示。
(5)的变量只能取0或1,从而是一个0-1规划问题。
一般的0-1规划问题求解极为困难。
但指派问题并不难解,其约束方程组的系数矩阵十分特殊(被称为全单位模矩阵,其各阶非零子式均为1±),其非负可行解的分量只能取0或1,故约束10或=ij x 可改写为0≥ij x 而不改变其解。
此时,指派问题被转化为一个特殊的运输问题,其中n m =,1==j i b a 。
3.2 求解指派问题的匈牙利算法由于指派问题的特殊性,又存在着由匈牙利数学家Konig 提出的更为简便的解法—匈牙利算法。