资源描述:
《生产计划中的产量问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1数学建模实验王汝军河西学院数学与统计学院wangrujun711@163.com2实验七生产计划中的产量问题王汝军河西学院数学与统计学院wangrujun711@163.com实验目的1.介绍无约束最优化方法的一些基本概2.了解几种常见的无约束优化问题的求解方法,如迭代算法、最速下降法(梯度法)、牛顿法(Newton)、拟牛顿法。3.学习掌握用MATLAB优化工具箱中的命令来求解无约束优化问题。3实验内容某公司生产一种产品有甲、乙两个品牌,试讨论产销平衡下的最大利润。所谓产销平衡指公司的产量等于市场上的销量。利润既
2、取决于销量和单件价格,也依赖于产量和单件成本。按照市场规律,甲种品牌的价格固然会随其销量的增长而降低;同时乙品牌销量的增长也会使甲的价格有稍微下降,根据实际情况,可以确定价格与销量成线性关系,即乙的价格遵循同样的规律,有4实验内容甲品牌的成本会随着其产量的增长而降低,按实际情况可假设为负指数关系,即有乙品牌的成本遵循同样的规律,有试确定甲、乙两种品牌的产量,使公司获得的总利润最大。5实验准备1.无约束最优化无约束最优化方法是指在没有约束条件限制下,求多变量实值函数极值的方法。无约束最优化问题的数学表达式为一般f为非线
3、性函数,x是n维实变量,实际上这是一个多元函数无条件极值问题。由于一个求极大值问题,可以添加负号的方式转化为求极小值问题,因此通常只讨论求极小值问题。应该注意的是,极值问题的解,即极值点,都是局部最优解,全局最优解只能从局部最优解的比较中得到。6实验准备1如何求解无约束最优化问题的最优解呢?一般是采用迭代方法,即先选择一个初始点,再寻找该点处的下降方向,我们称为搜索方向。在该方向上求极小点,得到一个新的点。这个新的点要优于原来的点,即新点处的目标函数值小于原来点处的目标函数值。然后在新点处再寻找下降方向和该方向上求极
4、小点,……,如此下去,最终得到最优点。因此,求解无约束最优化问题需解决两个问题:一是在某些方向上的一维极小点,我们也称为一维搜索;另一个是寻找某些点处的下降方向,这是无约束最优化方法中最重要的一个问题。我们先了解第一个问题最常用的搜索方法。7实验准备12.求一维极小的二点二次插值方法设是点处的一个搜索方向,要在该方向上寻优问题,转化为求一维函数的求极值问题。最常用的一维搜索方法是插值法,即用某些点的函数值(或导数值)构造插值函数,用插值函数的极小点来近似函数的极小点。这里介绍一种有效的插值方法,称为二点二次插值方法,
5、即用二点处的函数值和一个点处的导数值构造二次函数,反复用二次函数的极小点来逼近函数的极小点。8实验准备19实验准备13.最速下降法前面介绍了一维搜索的二点二次插值方法,下面讨论如何选择搜索方向的问题,我们先来看看两个概念。定义1称n维向量为函数在处的梯度,记为定义2设d是任意的单位向量,若极限存在,则称该极限为函数在处沿方向d的一阶方向导数,简称为方向导数,记为,10实验准备1最速下降法的基本思想:选取一点作为初始点,计算该点的梯度,求该点处的最速下降方向,即令,再沿方向前进,寻找该方向上的极小点,得到点,再计算,令
6、,沿方向前进,得到点,如此下去……具体算法如下11实验准备112实验准备1在算法中,为精度要求,即当梯度接近于0时,我们就认为达到极小点,终止计算。这样做的目的是避免算法产生死循环,算法中的一维搜索可用算法1来求解。最速下降法是一种最基本的算法,它在最优化方法中占有重要地位。其优点是工作量小,存储变量较少,初始点要求不高;缺点是收敛慢,效率不高,有时达不到最优解。下面介绍一种简单而直观的方法——Newton法。13实验准备114实验准备115实验准备216x=fmin('fun',x1,x2)求一元函数y=f(x)在
7、[x1,x2]内的极小值x=fmin('fun',x1,x2,options)同上,参数options的定义由表1给出[x,options]=fmin(...)同上,同时返回参数options的值fmin函数采用黄金分割法和抛物线插值法,fun可直接用函数表达式表示,也可以是用M文件定义的函数名。实验准备217x=fmins('fun',x0,options)求多元函数以x0为迭代初值的局部极小值,参数options的定义由表1给出[x,options]=fmins(...)同上,同时返回参数options的值fmi
8、ns函数采用Nelder–Meade单纯形搜索法,fun可直接用函数表达式表示,也可以是用M文件定义的函数名。x=fminu('fun',x0)求多元函数以x0为迭代初值的局部极小值x=fminu('fun',x0,options)同上,参数options的定义由表1给出[x,options]=fminu('fun',x0,...)同上,同时返