数学建模教程 第一章 线性规划_第1页
数学建模教程 第一章 线性规划_第2页
数学建模教程 第一章 线性规划_第3页
数学建模教程 第一章 线性规划_第4页
数学建模教程 第一章 线性规划_第5页
已阅读5页,还剩181页未读 继续免费阅读

下载本文档

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

文档简介

目录线性规划整数规划非线性规划动态规划图与网络初等数学方法建模变分法层次分析法差分法模糊数学Matlab教程第一章线性规划§1线性规划在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(LinearProgramming简记LP)则是数学规划的一个重要分支。自从1947年G.B.Dantzig提出求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深入。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。1.1线性规划的实例与定义例1某机床厂生产甲、乙两种机床,每台销售后的利润分别为4000元与3000元。生产甲机床需用机器加工,加工时间分别为每台2小时和1小时;生产乙机床需用三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时数分别为机器10小时、机器8小时和机器7小时,问该厂应生产甲、乙机床各几台,才能使总利润最大?上述问题的数学模型:设该厂生产台甲机床和乙机床时总利润最大,则应满足(目标函数)(1)s.t.(约束条件)(2)这里变量称之为决策变量,(1)式被称为问题的目标函数,(2)中的几个不等式是问题的约束条件,记为s.t.(即subjectto)。上述即为一规划问题数学模型的三个要素。由于上面的目标函数及约束条件均为线性函数,故被称为线性规划问题。总之,线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。在解决实际问题时,把问题归结成一个线性规划数学模型是很重要的一步,但往往也是困难的一步,模型建立得是否恰当,直接影响到求解。而选取适当的决策变量,是我们建立有效模型的关键之一。线性规划的Matlab标准形式线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于号也可以是大于号。为了避免这种形式多样性带来的不便,Matlab中规定线性规划的标准形式为其中和为维列向量,为维列向量,为矩阵。例如线性规划的Matlab标准型为1.3线性规划问题的解的概念一般线性规划问题的标准型为(3)(4)可行解满足约束条件(4)的解,称为线性规划问题的可行解,而使目标函数(3)达到最小值的可行解叫最优解。可行域所有可行解构成的集合称为问题的可行域,记为。1.4线性规划的图解法图解法简单直观,有助于了解线性规划问题求解的基本原理。我们先应用图解法来求解例1。如上图所示,阴影区域即为LP问题的可行域R。对于每一固定的值,使目标函数值等于的点构成的直线称为目标函数等位线,当变动时,我们得到一族平行直线。让等位线沿目标函数值减小的方向移动,直到等位线与可行域有交点的最后位置,此时的交点(一个或多个)即为LP的最优解。对于例1,显然等位线越趋于右上方,其上的点具有越大的目标函数值。不难看出,本例的最优解为,最优目标值。从上面的图解过程可以看出并不难证明以下断言:(1)可行域可能会出现多种情况。可能是空集也可能是非空集合,当非空时,它必定是若干个半平面的交集(除非遇到空间维数的退化)。既可能是有界区域,也可能是无界区域。(2)在非空时,线性规划既可以存在有限最优解,也可以不存在有限最优解(其目标函数值无界)。(3)R非空且LP有有限最优解时,最优解可以唯一或有无穷多个。(4)若线性规划存在有限最优解,则必可找到具有最优目标函数值的可行域的“顶点”。上述论断可以推广到一般的线性规划问题,区别只在于空间的维数。在一般的维空间中,满足一线性等式的点集被称为一个超平面,而满足一线性不等式(或)的点集被称为一个半空间(其中为一维行向量,为一实数)。有限个半空间的交集被称为多胞形,有界的多胞形又被称为多面体。易见,线性规划的可行域必为多胞形(为统一起见,空集也被视为多胞形)。在一般维空间中,要直接得出多胞形“顶点”概念还有一些困难。二维空间中的顶点可以看成为边界直线的交点,但这一几何概念的推广在一般维空间中的几何意义并不十分直观。为此,我们将采用另一途径来定义它。定义1称维空间中的区域为一凸集,若及,有。定义2设为维空间中的一个凸集,中的点被称为的一个极点,若不存在及,使得。定义1说明凸集中任意两点的连线必在此凸集中;而定义2说明,若是凸集的一个极点,则不能位于中任意两点的连线上。不难证明,多胞形必为凸集。同样也不难证明,二维空间中可行域的顶点均为的极点(也没有其它的极点)。1.5求解线性规划的Matlab解法单纯形法是求解线性规划问题的最常用、最有效的算法之一。单纯形法是首先由GeorgeDantzig于1947年提出的,近60年来,虽有许多变形体已被开发,但却保持着同样的基本观念。由于有如下结论:若线性规划问题有有限最优解,则一定有某个最优解是可行区域的一个极点。基于此,单纯形法的基本思路是:先找出可行域的一个极点,据一定规则判断其是否最优;若否,则转换到与之相邻的另一极点,并使目标函数值更优;如此下去,直到找到某一最优解为止。这里我们不再详细介绍单纯形法,有兴趣的读者可以参看其它线性规划书籍。下面我们介绍线性规划的Matlab解法。Matlab5.3中线性规划的标准型为基本函数形式为linprog(c,A,b),它的返回值是向量的值。还有其它的一些函数调用形式(在Matlab指令窗运行helplinprog可以看到所有的函数调用形式),如:[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS)这里fval返回目标函数的值,Aeq和beq对应等式约束,LB和UB分别是变量的下界和上界,是的初始值,OPTIONS是控制参数。例2求解下列线性规划问题解(=1\*romani)编写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(=2\*romanii)将M文件存盘,并命名为example1.m。(=3\*romaniii)在Matlab指令窗运行example1即可得所求结果。求解线性规划问题解编写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运输问题(产销平衡)例5某商品有个产地、个销地,各产地的产量分别为,各销地的需求量分别为。若该商品由产地运到销地的单位运价为,问应该如何调运才能使总运费最省?解:引入变量,其取值为由产地运往销地的该商品数量,数学模型为s.t.显然是一个线性规划问题,当然可以用单纯形法求解。对产销平衡的运输问题,由于有以下关系式存在:其约束条件的系数矩阵相当特殊,可用比较简单的计算方法,习惯上称为表上作业法(由康托洛维奇和希奇柯克两人独立地提出,简称康—希表上作业法)。表上作业法是单纯形法在求解运输问题时的一种简化方法,其求解工作在运输表上进行逐步迭代如下:先按某一规则找出一个初始解(初始调运方案);再对现行解作最优性判断;若这个解不是最优的,就在运输表上对它进行调整改进,得一新解;再判断,再改进,直到得到最优解。§3指派问题(又称分配问题AssignmentProblem)3.1指派问题的数学模型例6拟分配人去干项工作,每人干且仅干一项工作,若分配第人去干第项工作,需花费单位时间,问应如何分配工作才能使工人花费的总时间最少?容易看出,要给出一个指派问题的实例,只需给出矩阵,被称为指派问题的系数矩阵。引入变量,若分配干工作,则取,否则取。上述指派问题的数学模型为s.t.(5)(5)的可行解既可以用一个矩阵(称为解矩阵)表示,其每行每列均有且只有一个元素为1,其余元素均为0,也可以用中的一个置换表示。(5)的变量只能取0或1,从而是一个0-1规划问题。一般的0-1规划问题求解极为困难。但指派问题并不难解,其约束方程组的系数矩阵十分特殊(被称为全单位模矩阵,其各阶非零子式均为),其非负可行解的分量只能取0或1,故约束可改写为而不改变其解。此时,指派问题被转化为一个特殊的运输问题,其中,。3.2求解指派问题的匈牙利算法由于指派问题的特殊性,又存在着由匈牙利数学家D.Konig提出的更为简便的解法—匈牙利算法。算法主要依据以下事实:如果系数矩阵一行(或一列)中每一元素都加上或减去同一个数,得到一个新矩阵

,则以或为系数矩阵的指派问题具有相同的最优指派。利用上述性质,可将原系数阵C变换为含零元素较多的新系数阵B,而最优解不变。若能在B中找出n个位于不同行不同列的零元素,令解矩阵中相应位置的元素取值为1,其它元素取值为零,则所得该解是以B为系数阵的指派问题的最优解,从而也是原问题的最优解。由C到B的转换可通过先让矩阵C的每行元素均减去其所在行的最小元素得矩阵D,D的每列元素再减去其所在列的最小元素得以实现。下面通过一例子来说明该算法。例7求解指派问题,其系数矩阵为解将第一行元素减去此行中的最小元素15,同样,第二行元素减去17,第三行元素减去17,最后一行的元素减去16,得再将第3列元素各减去1,得以为系数矩阵的指派问题有最优指派由等价性,它也是例7的最优指派。有时问题会稍复杂一些。例8求解系数矩阵的指派问题解:先作等价变换如下容易看出,从变换后的矩阵中只能选出四个位于不同行不同列的零元素,但,最优指派还无法看出。此时等价变换还可进行下去。步骤如下:对未选出0元素的行打;对行中0元素所在列打;对列中选中的0元素所在行打;重复(2)、(3)直到无法再打为止。可以证明,若用直线划没有打的行与打的列,就得到了能够覆盖住矩阵中所有零元素的最少条数的直线集合,找出未覆盖的元素中的最小者,令行元素减去此数,列元素加上此数,则原先选中的0元素不变,而未覆盖元素中至少有一个已转变为0,且新矩阵的指派问题与原问题也等价。上述过程可反复采用,直到能选取出足够的0元素为止。例如,对例5变换后的矩阵再变换,第三行、第五行元素减去2,第一列元素加上2,得现在已可看出,最优指派为。§4对偶理论与灵敏度分析4.1原始问题和对偶问题考虑下列一对线性规划模型:s.t.(P)和s.t.(D)称(P)为原始问题,(D)为它的对偶问题。不太严谨地说,对偶问题可被看作是原始问题的“行列转置”:原始问题约束条件中的第列系数与其对偶问题约束条件中的第行的系数相同;原始目标函数的系数行与其对偶问题右侧的常数列相同;原始问题右侧的常数列与其对偶目标函数的系数行相同;在这一对问题中,除非负约束外的约束不等式方向和优化方向相反。考虑线性规划:把其中的等式约束变成不等式约束,可得它的对偶问题是其中和分别表示对应于约束和的对偶变量组。令,则上式又可写成原问题和对偶的对偶问题约束之间的关系:对偶问题的基本性质1o对称性:对偶问题的对偶是原问题。2o弱对偶性:若是原问题的可行解,是对偶问题的可行解。则恒有:。3o无界性:若原问题(对偶问题)为无界解,则其对偶问题(原问题)无可行解。4o可行解是最优解时的性质:设是原问题的可行解,是对偶问题的可行解,当时,是最优解。5o对偶定理:若原问题有有限最优解,那么对偶问题也有最优解;且目标函数值相同。6o互补松弛性:若分别是原问题和对偶问题的最优解,则由上述性质可知,对任一LP问题(P),若它的对偶问题(D)可能的话,我们总可以通过求解(D)来讨论原问题(P):若(D)无界,则(P)无可行解;若(D)有有限最优解,最优值,则利用互补松弛性可求得(P)的所有最优解,且(P)的最优值为。例如对只有两个行约束的LP,其对偶问题只有两个变量,总可用图解法来求解。例9已知线性规划问题已知其对偶问题的最优解为,最优值为。试用对偶理论找出原问题的最优解。解先写出它的对偶问题s.t.=1\*GB3① =2\*GB3②=3\*GB3③=4\*GB3④=5\*GB3⑤将的值代入约束条件,得=2\*GB3②,=3\*GB3③,=4\*GB3④为严格不等式;设原问题的最优解为,由互补松弛性得。因;原问题的两个约束条件应取等式,故有求解后得到;故原问题的最优解为;最优值为。4.3灵敏度分析灵敏度分析是指对系统或周围事物因周围条件变化显示出来的敏感程度的分析。在以前讨论线性规划问题时,假定都是常数。但实际上这些系数往往是估计值和预测值。如市场条件一变,值就会变化;往往是因工艺条件的改变而改变;是根据资源投入后的经济效果决定的一种决策选择。因此提出这样两个问题:当这些参数有一个或几个发生变化时,已求得的线性规划问题的最优解会有什么变化;或者这些参数在什么范围内变化时,线性规划问题的最优解不变。这里我们就不讨论了。参数线性规划参数线性规划是研究这些参数中某一参数连续变化时,使最优解发生变化的各临界点的值。即把某一参数作为参变量,而目标函数在某区间内是这参变量的线性函数,含这参变量的约束条件是线性等式或不等式。因此仍可用单纯形法和对偶单纯形法进行分析参数线性规划问题。习题一1.某厂生产三种产品=1\*ROMANI,=2\*ROMANII,=3\*ROMANIII。每种产品要经过两道工序加工。设该厂有两种规格的设备能完成工序,它们以表示;有三种规格的设备能完成工序,它们以表示。产品=1\*ROMANI可在任何一种规格设备上加工。产品=2\*ROMANII可在任何规格的设备上加工,但完成工序时,只能在设备上加工;产品=3\*ROMANIII只能在与设备上加工。已知在各种机床设备的单件工时,原材料费,产品销售价格,各种设备有效台时以及满负荷操作时机床设备的费用如下表,要求安排最优的生产计划,使该厂利润最大。设备产品设备有效台时满负荷时的设备费用(元)=1\*ROMANI=2\*ROMANII=3\*ROMANIII5764710981211600010000400070004000300321250783200原料费(元/件)单价(元/件)0.251.250.352.000.502.802.有四个工人,要指派他们分别完成4项工作,每人做各项工作所消耗的时间如下表:工作工人甲乙丙丁15192619182317212122162324181917问指派哪个人去完成哪项工作,可使总的消耗时间为最小?3.某战略轰炸机群奉命摧毁敌人军事目标。已知该目标有四个要害部位,只要摧毁其中之一即可达到目的。为完成此项任务的汽油消耗量限制为48000升、重型炸弹48枚、轻型炸弹32枚。飞机携带重型炸弹时每升汽油可飞行2千米,带轻型炸弹时每升汽油可飞行3千米。又知每架飞机每次只能装载一枚炸弹,每出发轰炸一次除来回路程汽油消耗(空载时每升汽油可飞行4千米)外,起飞和降落每次各消耗100升。有关数据如表所示。要害部位离机场距离(千米)摧毁可能性每枚重型弹每枚轻型弹12344504805406000.100.200.150.250.080.160.120.20为了使摧毁敌方军事目标的可能性最大,应如何确定飞机轰炸的方案,要求建立这个问题的线性规划模型。第二章整数规划§1概论1.1定义规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中,变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适用于整数线性规划。目前还没有一种方法能有效地求解一切整数规划。整数规划的分类如不加特殊说明,一般指整数线性规划。对于整数线性规划模型大致可分为两类:1o变量全限制为整数时,称纯(完全)整数规划。2o变量部分限制为整数的,称混合整数规划。3o变量只能取0或1时,称之为0-1整数规划。整数规划特点(=1\*romani)原线性规划有最优解,当自变量限制为整数后,其整数规划解出现下述情况:=1\*GB3①原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。=2\*GB3②整数规划无可行解。例1原线性规划为s.t.其最优实数解为:。=3\*GB3③有可行解(当然就存在最优解),但最优解值一定不会优于原线性规划的最优值。例2原线性规划为s.t.其最优实数解为:。若限制整数得:。(=2\*romanii)整数规划最优解不能按照实数最优解简单取整而获得。1.3求解方法分类:(=1\*romani)分枝定界法—可求纯或混合整数线性规划。(=2\*romanii)割平面法—可求纯或混合整数线性规划。(=3\*romaniii)隐枚举法—求解“0-1”整数规划:=1\*GB3①过滤隐枚举法;=2\*GB3②分枝隐枚举法。(=4\*romaniv)匈牙利法—解决指派问题(“0-1”规划特殊情形)。(=5\*romanv)蒙特卡洛法—求解各种类型规划。下面将简要介绍常用的几种求解整数规划的方法。§2分枝定界法对有约束条件的最优化问题(其可行解为有限数)的可行解空间恰当地进行系统搜索,这就是分枝与定界内容。通常,把全部可行解空间反复地分割为越来越小的子集,称为分枝;并且对每个子集内的解集计算一个目标下界(对于最小值问题),这称为定界。在每次分枝后,凡是界限不优于已知可行解集目标值的那些子集不再进一步分枝,这样,许多子集可不予考虑,这称剪枝。这就是分枝定界法的主要思路。分枝定界法可用于解纯整数或混合的整数规划问题。在二十世纪六十年代初由LandDoig和Dakin等人提出。由于这方法灵活且便于用计算机求解,所以现在它已是解整数规划的重要方法。目前已成功地应用于求解生产进度问题、旅行推销员问题、工厂选址问题、背包问题及分配问题等。设有最大化的整数规划问题,与它相应的线性规划为问题,从解问题开始,若其最优解不符合的整数条件,那么的最优目标函数必是的最优目标函数的上界,记作;而的任意可行解的目标函数值将是的一个下界。分枝定界法就是将的可行域分成子区域再求其最大值的方法。逐步减小和增大,最终求到。现用下例来说明:例3求解下述整数规划s.t.解(=1\*romani)先不考虑整数限制,即解相应的线性规划,得最优解为:可见它不符合整数条件。这时是问题的最优目标函数值的上界,记作。而显然是问题的一个整数可行解,这时,是的一个下界,记作,即。(=2\*romanii)因为当前均为非整数,故不满足整数要求,任选一个进行分枝。设选进行分枝,把可行集分成2个子集:,因为4与5之间无整数,故这两个子集内的整数解必与原可行集合整数解一致。这一步称为分枝。这两个子集的规划及求解如下:问题:s.t.最优解为:。问题:s.t.最优解为:。再定界:。(=3\*romaniii)对问题再进行分枝得问题和,它们的最优解为再定界:,并将剪枝。(=4\*romaniv)对问题再进行分枝得问题和,它们的最优解为无可行解。将剪枝。于是可以断定原问题的最优解为:从以上解题过程可得用分枝定界法求解整数规划(最大化)问题的步骤为:开始,将要求解的整数规划问题称为问题,将与它相应的线性规划问题称为问题。(=1\*romani)解问题可能得到以下情况之一:(a)没有可行解,这时也没有可行解,则停止.(b)有最优解,并符合问题的整数条件,的最优解即为的最优解,则停止。(c)有最优解,但不符合问题的整数条件,记它的目标函数值为。(=2\*romanii)用观察法找问题的一个整数可行解,一般可取,试探,求得其目标函数值,并记作。以表示问题的最优目标函数值;这时有进行迭代。第一步:分枝,在的最优解中任选一个不符合整数条件的变量,其值为,以表示小于的最大整数。构造两个约束条件和将这两个约束条件,分别加入问题,求两个后继规划问题和。不考虑整数条件求解这两个后继问题。定界,以每个后继问题为一分枝标明求解的结果,与其它问题的解的结果中,找出最优目标函数值最大者作为新的上界。从已符合整数条件的各分支中,找出目标函数值为最大者作为新的下界,若无作用。第二步:比较与剪枝,各分枝的最优目标函数中若有小于者,则剪掉这枝,即以后不再考虑了。若大于,且不符合整数条件,则重复第一步骤。一直到最后得到为止。得最优整数解。§3型整数规划型整数规划是整数规划中的特殊情形,它的变量仅取值0或1。这时称为变量,或称二进制变量。仅取值0或1这个条件可由下述约束条件:,整数所代替,是和一般整数规划的约束条件形式一致的。在实际问题中,如果引入变量,就可以把有各种情况需要分别讨论的线性规划问题统一在一个问题中讨论了。我们先介绍引入变量的实际问题,再研究解法。3.1引入变量的实际问题3.1.1投资场所的选定——相互排斥的计划例4某公司拟在市东、西、南三区建立门市部。拟议中有7个位置(点)可供选择。规定在东区:由三个点中至多选两个;在西区:由两个点中至少选一个;在南区:由两个点中至少选一个。如选用点,设备投资估计为元,每年可获利润估计为元,但投资总额不能超过元。问应选择哪几个点可使年利润为最大?解题时先引入变量令.于是问题可列写成:s.t.3.1.2相互排斥的约束条件①有两个相互排斥的约束条件或。为了统一在一个问题中,引入变量,则上述约束条件可改写为:其中是充分大的数。②约束条件或可改写为③如果有个互相排斥的约束条件:为了保证这个约束条件只有一个起作用,我们引入个变量和一个充分大的常数,而下面这一组个约束条件(1)(2)就合于上述的要求。这是因为,由于(2),个中只有一个能取0值,设,代入(1),就只有的约束条件起作用,而别的式子都是多余的。3.1.3关于固定费用的问题(FixedCostProblem)在讨论线性规划时,有些问题是要求使成本为最小。那时总设固定成本为常数,并在线性规划的模型中不必明显列出。但有些固定费用(固定成本)的问题不能用一般线性规划来描述,但可改变为混合整数规划来解决,见下例。例5某工厂为了生产某种产品,有几种不同的生产方式可供选择,如选定的生产方式投资高(选购自动化程度高的设备),由于产量大,因而分配到每件产品的变动成本就降低;反之,如选定的生产方式投资低,将来分配到每件产品的变动成本可能增加。所以必须全面考虑。今设有三种方式可供选择,令表示采用第种方式时的产量;表示采用第种方式时每件产品的变动成本;表示采用第种方式时的固定成本。为了说明成本的特点,暂不考虑其它约束条件。采用各种生产方式的总成本分别为.在构成目标函数时,为了统一在一个问题中讨论,现引入变量,令(3)于是目标函数(3)式这个规定可表为下述3个线性约束条件:(4)其中是个充分大的常数。(4)式说明,当时必须为1;当时只有为0时才有意义,所以(4)式完全可以代替(3)式。3.2型整数规划解法之一(过滤隐枚举法)解型整数规划最容易想到的方法,和一般整数规划的情形一样,就是穷举法,即检查变量取值为0或1的每一种组合,比较目标函数值以求得最优解,这就需要检查变量取值的个组合。对于变量个数较大(例如),这几乎是不可能的。因此常设计一些方法,只检查变量取值的组合的一部分,就能求到问题的最优解。这样的方法称为隐枚举法(ImplicitEnumeration),分枝定界法也是一种隐枚举法。当然,对有些问题隐枚举法并不适用,所以有时穷举法还是必要的。下面举例说明一种解型整数规划的隐枚举法。例6s.t.求解思路及改进措施:(=1\*romani)先试探性求一个可行解,易看出满足约束条件,故为一个可行解,且相应的目标函数值为。(=2\*romanii)因为是求极大值问题,故求最优解时,凡是目标值的解不必检验是否满足约束条件即可删除,因它肯定不是最优解,于是应增加一个约束条件(目标值下界):,称该条件为过滤条件(FilteringContraint)。从而原问题等价于:s.t.若用全部枚举法,3个变量共有8种可能的组合,我们将这8种组合依次检验它是否满足条件(a)—(e),对某个组合,若它不满足(a),即不满足过滤条件,则(b)—(e)即可行性条件不必再检验;若它满足(a)—(e)且相应的目标值严格大于3,则进行(=3\*romaniii)。(=3\*romaniii)改进过滤条件。(=4\*romaniv)由于对每个组合首先计算目标值以验证过滤条件,故应优先计算目标值大的组合,这样可提前抬高过滤门槛,以减少计算量。按上述思路与方法,例6的求解过程可由下表来表示:目标值约束条件过滤条件abcde03√√√√√-25√√√√√18√√√√√63从而得最优解,最优值。§4蒙特卡洛法(随机取样法)前面介绍的常用的整数规划求解方法,主要是针对线性整数规划而言,而对于非线性整数规划目前尚未有一种成熟而有效的求解方法,因为非线性规划本身的通用有效解法尚未找到,更何况是非线性整数规划。然而,尽管整数规划由于限制变量为整数而增加了难度;然而又由于整数解是有限个,于是为枚举法提供了方便。当然,当自变量维数很大和取值范围很宽情况下,企图用显枚举法(即穷举法)计算出最优值是不现实的,但是应用概率理论可以证明,在一定的计算量的情况下,完全可以得出一个满意解。例7已知非线性整数规划为:s.t.对该题,目前尚无有效方法求出准确解。如果用显枚举法试探,共需计算个点,其计算量非常之大。然而应用蒙特卡洛去随机计算个点,便可找到满意解,那么这种方法的可信度究竟怎样呢?下面就分析随机取样采集个点计算时,应用概率理论来估计一下可信度。不失一般性,假定一个整数规划的最优点不是孤立的奇点。假设目标函数落在高值区的概率分别为0.01,0.00001,则当计算个点后,有任一个点能落在高值区的概率分别为,。解(=1\*romani)首先编写M文件mente.m定义目标函数f和约束向量函数g,程序如下:function[f,g]=mengte(x);f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)...-x(4)-2*x(5);g(1)=sum(x)-400;g(2)=x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800;g(3)=2*x(1)+x(2)+6*x(3)-200;g(4)=x(3)+x(4)+5*x(5)-200;(=2\*romanii)编写如下程序求问题的解:rand('state',sum(clock));p0=0;ticfori=1:10^5x=99*rand(5,1);x1=floor(x);x2=ceil(x);[f,g]=mengte(x1);ifsum(g<=0)==4ifp0<=fx0=x1;p0=f;endend[f,g]=mengte(x2);ifsum(g<=0)==4ifp0<=fx0=x2;p0=f;endendendx0,p0toc§5整数规划的计算机解法整数规划问题的求解可以使用Lingo等专用软件。对于一般的整数规划规划问题,无法直接利用Matlab的函数,必须利用Matlab编程实现分枝定界解法和割平面解法。但对于指派问题等特殊的整数规划问题或约束矩阵是幺模矩阵时,有时可以直接利用Matlab的函数linprog。例8求解下列指派问题,已知指派矩阵为解:编写Matlab程序如下:c=[382103;87297;6427584235;9106910];c=c(:);a=zeros(10,25);fori=1:5a(i,(i-1)*5+1:5*i)=1;a(5+i,i:5:25)=1;endb=ones(10,1);[x,y]=linprog(c,[],[],a,b,zeros(25,1),ones(25,1))求得最优指派方案为,最优值为21。习题二用分枝定界法解:s.t.2.试将下述非线性的规划问题转换成线性的规划问题s.t.3.某钻井队要从以下10个可供选择的井位中确定5个钻井探油,使总的钻探费用为最小。若10个井位的代号为,相应的钻探费用为,并且井位选择上要满足下列限制条件:或选择和,或选择钻探;选择了或就不能选,或反过来也一样;在中最多只能选两个;试建立这个问题的整数规划模型。第三章非线性规划§1非线性规划1.1非线性规划的实例与定义如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。一般说来,解非线性规划要比解线性规划问题困难得多。而且,也不象线性规划有单纯形法这一通用方法,非线性规划目前还没有适于各种问题的一般算法,各个方法都有自己特定的适用范围。下面通过实例归纳出非线性规划数学模型的一般形式,介绍有关非线性规划的基本概念。例1(投资决策问题)某企业有个项目可供选择投资,并且至少要对其中一个项目投资。已知该企业拥有总资金元,投资于第个项目需花资金元,并预计可收益元。试选择最佳投资方案。解设投资决策变量为,,则投资总额为,投资总收益为。因为该公司至少要对一个项目投资,并且总的投资金额不能超过总资金,故有限制条件另外,由于只取值0或1,所以还有最佳投资方案应是投资额最小而总收益最大的方案,所以这个最佳投资决策问题归结为总资金以及决策变量(取0或1)的限制条件下,极大化总收益和总投资之比。因此,其数学模型为:s.t.上面例题是在一组等式或不等式的约束下,求一个函数的最大值(或最小值)问题,其中目标函数或约束条件中至少有一个非线性函数,这类问题称之为非线性规划问题,简记为(NP)。可概括为一般形式(NP)其中称为模型(NP)的决策变量,称为目标函数,和称为约束函数。另外,称为等式约束,称为不等式约束。对于一个实际问题,在把它归结成非线性规划问题时,一般要注意如下几点:(=1\*romani)确定供选方案:首先要收集同问题有关的资料和数据,在全面熟悉问题的基础上,确认什么是问题的可供选择的方案,并用一组变量来表示它们。(=2\*romanii)提出追求目标:经过资料分析,根据实际需要和可能,提出要追求极小化或极大化的目标。并且,运用各种科学和技术原理,把它表示成数学关系式。(=3\*romaniii)给出价值标准:在提出要追求的目标之后,要确立所考虑目标的“好”或“坏”的价值标准,并用某种数量形式来描述它。(=4\*romaniv)寻求限制条件:由于所追求的目标一般都要在一定的条件下取得极小化或极大化效果,因此还需要寻找出问题的所有限制条件,这些条件通常用变量之间的一些不等式或等式来表示。1.2线性规划与非线性规划的区别如果线性规划的最优解存在,其最优解只能在其可行域的边界上达到(特别是可行域的顶点上达到);而非线性规划的最优解(如果最优解存在)则可能在其可行域的任意一点达到。1.3非线性规划的Matlab解法Matlab中非线性规划的数学模型写成以下形式,其中是标量函数,是相应维数的矩阵和向量,是非线性向量函数。Matlab中的命令是X=FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)它的返回值是向量,其中FUN是用M文件定义的函数;X0是的初始值;A,B,Aeq,Beq定义了线性约束,如果没有等式约束,则A=[],B=[],Aeq=[],Beq=[];LB和UB是变量的下界和上界,如果上界和下界没有约束,则LB=[],UB=[],如果无下界,则LB=-inf,如果无上界,则UB=inf;NONLCON是用M文件定义的非线性向量函数;OPTIONS定义了优化参数,可以使用Matlab缺省的参数设置。例2求下列非线性规划问题(=1\*romani)编写M文件fun1.mfunctionf=fun1(x);f=x(1)^2+x(2)^2+8;和M文件fun2.mfunction[g,h]=fun2(x);g=-x(1)^2+x(2);h=-x(1)-x(2)^2+2;%等式约束(=2\*romanii)在Matlab的命令窗口依次输入options=optimset;[x,y]=fmincon('fun1',rand(2,1),[],[],[],[],zeros(2,1),[],...'fun2',options)就可以求得当时,最小值。1.4求解非线性规划的基本迭代格式记(NP)的可行域为。若,并且则称是(NP)的整体最优解,是(NP)的整体最优值。如果有则称是(NP)的严格整体最优解,是(NP)的严格整体最优值。若,并且存在的邻域,使,则称是(NP)的局部最优解,是(NP)的局部最优值。如果有则称是(NP)的严格局部最优解,是(NP)的严格局部最优值。由于线性规划的目标函数为线性函数,可行域为凸集,因而求出的最优解就是整个可行域上的全局最优解。非线性规划却不然,有时求出的某个解虽是一部分可行域上的极值点,但并不一定是整个可行域上的全局最优解。对于非线性规划模型(NP),可以采用迭代方法求它的最优解。迭代方法的基本思想是:从一个选定的初始点出发,按照某一特定的迭代规则产生一个点列,使得当是有穷点列时,其最后一个点是(NP)的最优解;当是无穷点列时,它有极限点,并且其极限点是(NP)的最优解。设是某迭代方法的第轮迭代点,是第轮迭代点,记(1)这里,显然是由点与点确定的方向。式(1)就是求解非线性规划模型(NP)的基本迭代格式。通常,我们把基本迭代格式(1)中的称为第轮搜索方向,为沿方向的步长,使用迭代方法求解(NP)的关键在于,如何构造每一轮的搜索方向和确定适当的步长。设,若存在,使,称向量是在点处的下降方向。设,若存在,使,称向量是点处关于的可行方向。一个向量,若既是函数在点处的下降方向,又是该点关于区域的可行方向,则称之为函数在点处关于的可行下降方向。现在,我们给出用基本迭代格式(1)求解(NP)的一般步骤如下:0°选取初始点,令。1°构造搜索方向,依照一定规则,构造在点处关于的可行下降方向作为搜索方向。2°寻求搜索步长。以为起点沿搜索方向寻求适当的步长,使目标函数值有某种意义的下降。3°求出下一个迭代点。按迭代格式(1)求出。若已满足某种终止条件,停止迭代。4°以代替,回到1°步。1.5凸函数、凸规划设为定义在维欧氏空间中某个凸集上的函数,若对任何实数以及中的任意两点和,恒有则称为定义在上的凸函数。若对每一个和恒有则称为定义在上的严格凸函数。考虑非线性规划假定其中为凸函数,为凸函数,这样的非线性规划称为凸规划。可以证明,凸规划的可行域为凸集,其局部最优解即为全局最优解,而且其最优解的集合形成一个凸集。当凸规划的目标函数为严格凸函数时,其最优解必定唯一(假定最优解存在)。由此可见,凸规划是一类比较简单而又具有重要理论意义的非线性规划。§2无约束问题2.1一维搜索方法当用迭代法求函数的极小点时,常常用到一维搜索,即沿某一已知方向求目标函数的极小点。一维搜索的方法很多,常用的有:(1)试探法(“成功—失败”,斐波那契法,0.618法等);插值法(抛物线插值法,三次插值法等);(3)微积分中的求根法(切线法,二分法等)。考虑一维极小化问题(2)若是区间上的下单峰函数,我们介绍通过不断地缩短的长度,来搜索得(2)的近似最优解的两个方法。为了缩短区间,逐步搜索得(2)的最优解的近似值,我们可以采用以下途径:在中任取两个关于是对称的点和(不妨设,并把它们叫做搜索点),计算和并比较它们的大小。对于单峰函数,若,则必有,因而是缩短了的单峰区间;若,则有,故是缩短了的单峰区间;若,则和都是缩短了的单峰。因此通过两个搜索点处目标函数值大小的比较,总可以获得缩短了的单峰区间。对于新的单峰区间重复上述做法,显然又可获得更短的单峰区间。如此进行,在单峰区间缩短到充分小时,我们可以取最后的搜索点作为(2)最优解的近似值。应该按照怎样的规则来选取探索点,使给定的单峰区间的长度能尽快地缩短?Fibonacci法若数列{}满足关系:则称为Fibonacci数列,称为第个Fibonacci数,称相邻两个Fibonacci数之比为Fibonacci分数。当用斐波那契法以个探索点来缩短某一区间时,区间长度的第一次缩短率为,其后各次分别为。由此,若和是单峰区间中第1个和第2个探索点的话,那么应有比例关系,从而,(3)它们关于确是对称的点。如果要求经过一系列探索点搜索之后,使最后的探索点和最优解之间的距离不超过精度,这就要求最后区间的长度不超过,即(4)据此,我们应按照预先给定的精度,确定使(4)成立的最小整数作为搜索次数,直到进行到第个探索点时停止。用上述不断缩短函数的单峰区间的办法,来求得问题(2)的近似解,是Kiefer(1953年)提出的,叫做Finbonacci法,具体步骤如下:1°选取初始数据,确定单峰区间,给出搜索精度,由(4)确定搜索次数。2°,计算最初两个搜索点,按(3)计算和。3°whileifelseendend4°当进行至时,这就无法借比较函数值和的大小确定最终区间,为此,取其中为任意小的数。在和这两点中,以函数值较小者为近似极小点,相应的函数值为近似极小值。并得最终区间或。由上述分析可知,斐波那契法使用对称搜索的方法,逐步缩短所考察的区间,它能以尽量少的函数求值次数,达到预定的某一缩短率。例3试用斐波那契法求函数的近似极小点,要求缩短后的区间不大于区间的0.08倍。程序留作习题。2.1.20.618法若,满足比例关系称之为黄金分割数,其值为。黄金分割数和Fibonacci分数之间有着重要的关系,它们是1°,为偶数,,为奇数。2°。现用不变的区间缩短率0.618,代替斐波那契法每次不同的缩短率,就得到了黄金分割法(0.618法)。这个方法可以看成是斐波那契法的近似,实现起来比较容易,效果也相当好,因而易于为人们所接受。用0.618法求解,从第2个探索点开始每增加一个探索点作一轮迭代以后,原单峰区间要缩短0.618倍。计算个探索点的函数值可以把原区间连续缩短次,因为每次的缩短率均为,故最后的区间长度为这就是说,当已知缩短的相对精度为时,可用下式计算探索点个数:当然,也可以不预先计算探索点的数目,而在计算过程中逐次加以判断,看是否已满足了提出的精度要求。0.618法是一种等速对称进行试探的方法,每次的探索点均取在区间长度的0.618倍和0.382倍处。2.2二次插值法对极小化问题(2),当在上连续时,可以考虑用多项式插值来进行一维搜索。它的基本思想是:在搜索区间中,不断用低次(通常不超过三次)多项式来近似目标函数,并逐步用插值多项式的极小点来逼近(2)的最优解。

2.3无约束极值问题的解法无约束极值问题可表述为(5)求解问题(5)的迭代法大体上分为两种:一是用到函数的一阶导数或二阶导数,称为解析法。另一是仅用到函数值,称为直接法。2.3.1解析法2.3.1.1梯度法(最速下降法)对基本迭代格式(6)我们总是考虑从点出发沿哪一个方向,使目标函数下降得最快。微积分的知识告诉我们,点的负梯度方向,是从点出发使下降最快的方向。为此,称负梯度方向为在点处的最速下降方向。按基本迭代格式(6),每一轮从点出发沿最速下降方向作一维搜索,来建立求解无约束极值问题的方法,称之为最速下降法。这个方法的特点是,每轮的搜索方向都是目标函数在当前点下降最快的方向。同时,用或作为停止条件。其具体步骤如下:1°选取初始数据。选取初始点,给定终止误差,令。2°求梯度向量。计算,若,停止迭代,输出。否则,进行3°。3°构造负梯度方向。取.4°进行一维搜索。求,使得令转2°。例4用最速下降法求解无约束非线性规划问题其中,要求选取初始点,终止误差。解:(=1\*romani)编写M文件detaf.m如下function[f,df]=detaf(x);f=x(1)^2+25*x(2)^2;df(1)=2*x(1);df(2)=50*x(2);(=2\*romanii)编写M文件zuisu.mclcx=[2;2];[f0,g]=detaf(x);whilenorm(g)>0.000001p=-g'/norm(g);t=1.0;f=detaf(x+t*p);whilef>f0t=t/2;f=detaf(x+t*p);endx=x+t*p[f0,g]=detaf(x)end2.3.1.2Newton法考虑目标函数在点处的二次逼近式假定Hesse阵正定。由于正定,函数的稳定点是的最小点。为求此最小点,令,即可解得.对照基本迭代格式(1),可知从点出发沿搜索方向。并取步长即可得的最小点。通常,把方向叫做从点出发的Newton方向。从一初始点开始,每一轮从当前迭代点出发,沿Newton方向并取步长为1的求解方法,称之为Newton法。其具体步骤如下:1°选取初始数据。选取初始点,给定终止误差,令。2°求梯度向量。计算,若,停止迭代,输出。否则,进行3°。3°构造Newton方向。计算,取.4°求下一迭代点。令,转2°。例5用Newton法求解,选取,。解:(=1\*romani)编写M文件nwfun.m如下:function[f,df,d2f]=nwfun(x);f=x(1)^4+25*x(2)^4+x(1)^2*x(2)^2;df(1)=4*x(1)^3+2*x(1)*x(2)^2;df(2)=100*x(2)^3+2*x(1)^2*x(2);d2f(1,1)=12*x(1)^2+2*x(2)^2;d2f(1,2)=4*x(1)*x(2);d2f(2,1)=d2f(1,2);d2f(2,2)=300*x(2)^2+4*x(1)*x(2);(=2\*romanii)编写M文件:clcx=[2;2];[f0,g1,g2]=nwfun(x)whilenorm(g1)>0.00001%deadloop,fori=1:3p=-inv(g2)*g1',p=p/norm(p)t=1.0,f=detaf(x+t*p)whilef>f0t=t/2,f=detaf(x+t*p),endx=x+t*p[f0,g1,g2]=nwfun(x)end如果目标函数是非二次函数,一般地说,用Newton法通过有限轮迭代并不能保证可求得其最优解。Newton法的优点是收敛速度快;缺点是有时不好用而需采取改进措施,此外,当维数较高时,计算的工作量很大。2.3.1.3变尺度法变尺度法(VariableMetricAlgorithm)是近20多年来发展起来的,它不仅是求解无约束极值问题非常有效的算法,而且也已被推广用来求解约束极值问题。由于它既避免了计算二阶导数矩阵及其求逆过程,又比梯度法的收敛速度快,特别是对高维问题具有显著的优越性,因而使变尺度法获得了很高的声誉。下面我们就来简要地介绍一种变尺度法—DFP法的基本原理及其计算过程。这一方法首先由Davidon在1959年提出,后经Fletcher和Powell加以改进。我们已经知道,牛顿法的搜索方向是,为了不计算二阶导数矩阵及其逆阵,我们设法构造另一个矩阵,用它来逼近二阶导数矩阵的逆阵,这一类方法也称拟牛顿法(Quasi-NewtonMethod)。下面研究如何构造这样的近似矩阵,并将它记为。我们要求:每一步都能以现有的信息来确定下一个搜索方向;每做一次选代,目标函数值均有所下降;这些近似矩阵最后应收敛于解点处的Hesse阵的逆阵。当是二次函数时,其Hesse阵为常数阵,任两点和处的梯度之差为或对于非二次函数,仿照二次函数的情形,要求其Hesse阵的逆阵的第次近似矩阵满足关系式(7)这就是常说的拟Newton条件。若令(8)则式(7)变为,(9)现假定已知,用下式求(设和均为对称正定阵);(10)其中称为第次校正矩阵。显然,应满足拟Newton条件(9),即要求或(11)由此可以设想,的一种比较简单的形式是(12)其中和为两个待定列向量。将式(12)中的代入(11),得这说明,应使(13)考虑到应为对称阵,最简单的办法就是取(14)由式(13)得(15)若和不等于零,则有(16)于是,得校正矩阵(17)从而得到(18)上述矩阵称为尺度矩阵。通常,我们取第一个尺度矩阵为单位阵,以后的尺度矩阵按式(18)逐步形成。可以证明:(=1\*romani)当不是极小点且正定时,式(17)右端两项的分母不为零,从而可按式(18)产生下一个尺度矩阵;(=2\*romanii)若为对称正定阵,则由式(18)产生的也是对称正定阵;(=3\*romaniii)由此推出DFP法的搜索方向为下降方向。现将DFP变尺度法的计算步骤总结如下。1°给定初始点及梯度允许误差。2°若,则即为近似极小点,停止迭代,否则,转向下一步。3°令(单位矩阵),在方向进行一维搜索,确定最佳步长:如此可得下一个近似点4°一般地,设已得到近似点,算出,若则即为所求的近似解,停止迭代;否则,计算:并令,在方向上进行一维搜索,得,从而可得下一个近似点5°若满足精度要求,则即为所求的近似解,否则,转回4°,直到求出某点满足精度要求为止。2.3.2直接法在无约束非线性规划方法中,遇到问题的目标函数不可导或导函数的解析式难以表示时,人们一般需要使用直接搜索方法。同时,由于这些方法一般都比较直观和易于理解,因而在实际应用中常为人们所采用。下面我们介绍Powell方法。这个方法主要由所谓基本搜索、加速搜索和调整搜索方向三部分组成,具体步骤如下:1°选取初始数据。选取初始点,个线性无关初始方向,组成初搜索方向组。给定终止误差,令。2°进行基本搜索。令,依次沿中的方向进行一维搜索。对应地得到辅助迭代点,即3°构造加速方向。令,若,停止迭代,输出。否则进行4°。4°确定调整方向。按下式找出。若成立,进行5°。否则,进行6°。5°调整搜索方向组。令.同时,令,,转2°。6°不调整搜索方向组。令,转2°。2.4Matlab求函数的极小值和函数的零点2.4.1求单变量有界非线性函数在区间上的极小值Matlab的命令为[X,FVAL]=FMINBND(FUN,x1,x2,OPTIONS),它的返回值是极小点和函数的极小值。这里fun是用M文件定义的函数或Matlab中的单变量数学函数。例6求函数的最小值。解编写M文件fun1.mfunctionf=fun1(x);f=(x-3)^2-1;在Matlab的命令窗口输入[x,y]=fminbnd('fun1',0,5)即可求得极小点和极小值。求多变量函数的极小值其中是一个向量,是一个标量函数。Matlab中的基本命令是[X,FVAL]=FMINUNC(FUN,X0,OPTIONS,P1,P2,...)它的返回值是向量的值和函数的极小值。FUN是一个M文件,当FUN只有一个返回值时,它的返回值是函数;当FUN有两个返回值时,它的第二个返回值是的一阶导数行向量;当FUN有三个返回值时,它的第三个返回值是的二阶导数阵(Hessian阵)。X0是向量的初始值,OPTIONS是优化参数,使用确省参数时,OPTIONS为空矩阵。P1,P2是可以传递给FUN的一些参数。例7求函数的最小值。解:编写M文件fun2.m如下:function[f,g]=fun2(x);f=100*(x(2)-x(1)^2)^2+(1-x(1))^2;g=[-400*x(1)*(x(2)-x(1)^2)-2(1-x(1))200*(x(2)-x(1)^2)];在Matlab命令窗口输入fminunc('fun2',rand(1,2))即可求得函数的极小值。求多元函数的极值也可以使用Matlab的命令[X,FVAL]=FMINSEARCH(FUN,X0,OPTIONS,P1,P2,...)。§3约束极值问题带有约束条件的极值问题称为约束极值问题,也叫约束规划问题。求解约束极值问题要比求解无约束极值问题困难得多。为了简化其优化工作,可采用以下方法:将约束问题化为无约束问题;将非线性规划问题化为线性规划问题,以及能将复杂问题变换为较简单问题的其它方法。最优性条件库恩—塔克条件是非线性规划领域中最重要的理论成果之一,是确定某点为最优点的必要条件,但一般说它并不是充分条件(对于凸规划,它既是最优点存在的必要条件,同时也是充分条件)。二次规划若某非线性规划的目标函数为自变量的二次函数,约束条件又全是线性的,就称这种规划为二次规划。Matlab中二次规划的数学模型可表述如下:这里是实对称矩阵,是列向量,是相应维数的矩阵。Matlab中求解二次规划的命令是[X,FVAL]=QUADPROG(H,f,A,b,Aeq,beq,LB,UB,X0,OPTIONS)X的返回值是向量,FVAL的返回值是目标函数在X处的值。(具体细节可以参看在Matlab指令中运行helpquadprog后的帮助)。例8求解二次规划解编写如下程序:h=[4,-4;-4,8];f=[-6;-3];a=[1,1;4,1];b=[3;9];[x,value]=quadprog(h,f,a,b,[],[],zeros(2,1))求得。罚函数法利用罚函数法,可将非线性规划问题的求解,转化为求解一系列无约束极值问题,因而也称这种方法为序列无约束最小化技术,简记为

SUMT(SequentialUnconstrainedMinimizationTechnique)。罚函数法求解非线性规划问题的思想是,利用问题中的约束函数作出适当的罚函数,由此构造出带参数的增广目标函数,把问题转化为无约束非线性规划问题。主要有两种形式,一种叫外罚函数法,另一种叫内罚函数法,下面介绍外罚函数法。考虑如下问题:s.t.取一个充分大的数,构造函数(或这里,,,为适当的行向量,Matlab中可以直接利用和函数。)则以增广目标函数为目标函数的无约束极值问题的最优解也是原问题的最优解。例9求下列非线性规划解(=1\*romani)编写M文件test.mfunctiong=test(x);M=50000;f=x(1)^2+x(2)^2+8;g=f-M*min(x(1),0)-M*min(x(2),0)-M*min(x(1)^2-x(2),0)...+M*abs(-x(1)-x(2)^2+2);(=2\*romanii)在Matlab命令窗口输入[x,y]=fminunc('test',rand(2,1))即可求得问题的解。§4飞行管理问题在约10,000m高空的某边长160km的正方形区域内,经常有若干架飞机作水平飞行。区域内每架飞机的位置和速度向量均由计算机记录其数据,以便进行飞行管理。当一架欲进入该区域的飞机到达区域边缘时,记录其数据后,要立即计算并判断是否会与区域内的飞机发生碰撞。如果会碰撞,则应计算如何调整各架(包括新进入的)飞机飞行的方向角,以避免碰撞。现假定条件如下:1)不碰撞的标准为任意两架飞机的距离大于8km;2)飞机飞行方向角调整的幅度不应超过30度;3)所有飞机飞行速度均为每小时800km;4)进入该区域的飞机在到达区域边缘时,与区域内飞机的距离应在60km以上;5)最多需考虑6架飞机;6)不必考虑飞机离开此区域后的状况。请你对这个避免碰撞的飞行管理问题建立数学模型,列出计算步骤,对以下数据进行计算(方向角误差不超过0.01度),要求飞机飞行方向角调整的幅度尽量小。设该区域4个顶点的座标为(0,0),(160,0),(160,160),(0,160)。记录数据为:飞机编号横座标纵座标方向角(度)1150140243285852363150155220.54145501595130150230新进入0052注:方向角指飞行方向与轴正向的夹角。试根据实际应用背景对你的模型进行评价与推广。提示:,,其中为飞机的总架数,为时刻第架飞机的坐标,分别表示第架飞机飞出正方形区域边界的时刻。这里,,;,,;其中为飞机的速度,分别为第架飞机的初始方向角和调整后的方向角。令其中,则两架飞机不碰撞的条件是。习题三1.用Matlab的非线性规划命令fmincon求解飞行管理问题。2.用罚函数法求解飞行管理问题。3.某工厂向用户提供发动机,按合同规定,其交货数量和日期是:第一季度末交40台,第二季末交60台,第三季末交80台。工厂的最大生产能力为每季100台,每季的生产费用是(元),此处为该季生产发动机的台数。若工厂生产的多,多余的发动机可移到下季向用户交货,这样,工厂就需支付存贮费,每台发动机每季的存贮费为4元。问该厂每季应生产多少台发动机,才能既满足交货合同,又使工厂所花费的费用最少(假定第一季度开始时发动机无存货)。第四章动态规划§1引言1.1动态规划的发展及研究内容动态规划(dynamicprogramming)是运筹学的一个分支,是求解多阶段决策问题的最优化方法。20世纪50年代初R.E.Bellman等人在研究多阶段决策过程(multistepdecisionprocess)的优化问题时,提出了著名的最优性原理(principleofoptimality),把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类过程优化问题的新方法—动态规划。1957年出版了他的名著《DynamicProgramming》,这是该领域的第一本著作。动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。应指出,动态规划是求解某类问题的一种方法,是考察问题的一种途径,而不是一种特殊算法(如线性规划是一种算法)。因而,它不象线性规划那样有一个标准的数学表达式和明确定义的一组规则,而必须对具体问题进行具体分析处理。因此,在学习时,除了要对基本概念和方法正确理解外,应以丰富的想象力去建立模型,用创造性的技巧去求解。例1最短路线问题下面是一个线路网,连线上的数字表示两点之间的距离(或费用)。试寻求一条由到距离最短(或费用最省)的路线。例2生产计划问题工厂生产某种产品,每单位(千件)的成本为1(千元),每次开工的固定成本为3(千元),工厂每季度的最大生产能力为6(千件)。经调查,市场对该产品的需求量第一、二、三、四季度分别为2,3,2,4(千件)。如果工厂在第一、二季度将全年的需求都生产出来,自然可以降低成本(少付固定成本费),但是对于第三、四季度才能上市的产品需付存储费,每季每千件的存储费为0.5(千元)。还规定年初和年末这种产品均无库存。试制定一个生产计划,即安排每个季度的产量,使一年的总费用(生产成本和存储费)最少。1.2决策过程的分类根据过程的时间变量是离散的还是连续的,分为离散时间决策过程(discrete-timedecisionprocess)和连续时间决策过程(continuous-timedecisionprocess);根据过程的演变是确定的还是随机的,分为确定性决策过程(deterministicdecisionprocess)和随机性决策过程(stochasticdecisionprocess),其中应用最广的是确定性多阶段决策过程。§2基本概念、基本方程和计算方法2.1动态规划的基本概念和基本方程一个多阶段决策过程最优化问题的动态规划模型通常包含以下要素。2.1.1阶段阶段(step)是对整个过程的自然划分。通常根据时间顺序或空间顺序特征来划分阶段,以便按阶段的次序解优化问题。阶段变量一般用表示。在例1中由出发为,由出发为,依此下去从出发为,共个阶段。在例2中按照第一、二、三、四季度分为,共四个阶段。2.1.2状态状态(state)表示每个阶段开始时过程所处的自然状况。它应能描述过程的特征并且无后效性,即当某阶段的状态变量给定时,这个阶段以后过程的演变与该阶段以前各阶段的状态无关。通常还要求状态是直接或间接可以观测的。描述状态的变量称状态变量(statevariable)。变量允许取值的范围称允许状态集合(setofadmissiblestates)。用表示第阶段的状态变量,它可以是一个数或一个向量。用表示第阶段的允许状态集合。在例1中可取,或将定义为,则或,而。 个阶段的决策过程有个状态变量,表示演变的结果。在例1中取,或定义为,即。根据过程演变的具体情况,状态变量可以是离散的或连续的。为了计算的方便有时将连续变量离散化;为了分析的方便有时又将离散变量视为连续的。状态变量简称为状态。2.1.3决策当一个阶段的状态确定后,可以作出各种选择从而演变到下一阶段的某个状态,这种选择手段称为决策(decision),在最优控制问题中也称为控制(control)。描述决策的变量称决策变量(decisionvariable),变量允许取值的范围称允许决策集合(setofadmissibledecisions)。用表示第阶段处于状态时的决策变量,它是的函数,用表示的允许决策集合。在例1中可取或,可记作,而。决策变量简称决策。2.1.4策略决策组成的序列称为策略(policy)。由

温馨提示

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

评论

0/150

提交评论