ImageVerifierCode 换一换
格式:DOC , 页数:68 ,大小:239KB ,
资源ID:7029360      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7029360.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(Matlab与最优化应用.doc)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

Matlab与最优化应用.doc

1、Matlab与最优化应用 在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。 用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容: 1) 建立数学模型 即用数学语言来描述最优化问题。模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。 2) 数学求解 数

2、学模型建好以后,选择合理的最优化方法进行求解。 最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。     9.1 概 述   利用Matlab的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题。另外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便快捷的途径。 9.1.1

3、优化工具箱中的函数 优化工具箱中的函数包括下面几类: 1.最小化函数 表9-1 最小化函数表 函 数 描 述 fgoalattain 多目标达到问题 fminbnd 有边界的标量非线性最小化 fmincon 有约束的非线性最小化 fminimax 最大最小化 fminsearch, fminunc 无约束非线性最小化 fseminf 半无限问题 linprog 线性课题 quadprog 二次课题   2.方程求解函数 表9-2 方程求解函数表 函 数 描 述 \ 线性方程求解 fsol

4、ve 非线性方程求解 fzero 标量非线性方程求解   3.最小二乘(曲线拟合)函数 表9-3 最小二乘函数表 函 数 描 述 \ 线性最小二乘 lsqlin 有约束线性最小二乘 lsqcurvefit 非线性曲线拟合 lsqnonlin 非线性最小二乘 lsqnonneg 非负线性最小二乘   4.实用函数 表9-4 实用函数表 函 数 描 述 optimset 设置参数 optimget     5.大型方法的演示函数 表9-5 大型方法的演示函数表 函 数 描 述

5、 circustent 马戏团帐篷问题—二次课题 molecule 用无约束非线性最小化进行分子组成求解 optdeblur 用有边界线性最小二乘法进行图形处理   6.中型方法的演示函数 表9-6 中型方法的演示函数表 函 数 描 述 bandemo 香蕉函数的最小化 dfildemo 过滤器设计的有限精度 goaldemo 目标达到举例 optdemo 演示过程菜单 tutdemo 教程演示   9.1.3 参数设置 利用optimset函数,可以创建和编辑参数结构;利用optimget函数,可以获得options优

6、化参数。 ● optimget函数 功能:获得options优化参数。 语法: val = optimget(options,'param') val = optimget(options,'param',default) 描述: val = optimget(options,'param') 返回优化参数options中指定的参数的值。只需要用参数开头的字母来定义参数就行了。 val = optimget(options,'param',default) 若options结构参数中没有定义指定参数,则返回缺省值。注意,这种形式的函数主要用于其它优化函数。 举例: 1.  

7、     下面的命令行将显示优化参数options返回到my_options结构中: val = optimget(my_options,'Display') 2.       下面的命令行返回显示优化参数options到my_options结构中(就象前面的例子一样),但如果显示参数没有定义,则返回值'final': optnew = optimget(my_options,'Display','final'); 参见: optimset   ● optimset函数 功能:创建或编辑优化选项参数结构。 语法: options = optim

8、set('param1',value1,'param2',value2,...) optimset options = optimset options = optimset(optimfun) options = optimset(oldopts,'param1',value1,...) options = optimset(oldopts,newopts) 描述: options = optimset('param1',value1,'param2',value2,...) 创建一个称为options的优化选项参数,其中指定的参数具有指定值。所有未指定的参数都设置为空矩阵[]

9、将参数设置为[]表示当options传递给优化函数时给参数赋缺省值)。赋值时只要输入参数前面的字母就行了。 optimset函数没有输入输出变量时,将显示一张完整的带有有效值的参数列表。 options = optimset (with no input arguments) 创建一个选项结构options,其中所有的元素被设置为[]。 options = optimset(optimfun) 创建一个含有所有参数名和与优化函数optimfun相关的缺省值的选项结构options。 options = optimset(oldopts,'param1',value1,...) 创建一

10、个oldopts的拷贝,用指定的数值修改参数。 options = optimset(oldopts,newopts) 将已经存在的选项结构oldopts与新的选项结构newopts进行合并。newopts参数中的所有元素将覆盖oldopts参数中的所有对应元素。 举例: 1.下面的语句创建一个称为options的优化选项结构,其中显示参数设为'iter',TolFun参数设置为1e-8: options = optimset('Display','iter','TolFun',1e-8) 2.下面的语句创建一个称为options的优化结构的拷贝,改

11、变TolX参数的值,将新值保存到optnew参数中: optnew = optimset(options,'TolX',1e-4); 3.下面的语句返回options优化结构,其中包含所有的参数名和与fminbnd函数相关的缺省值: options = optimset('fminbnd') 4.若只希望看到fminbnd函数的缺省值,只需要简单地键入下面的语句就行了: optimset fminbnd 或者输入下面的命令,其效果与上面的相同: optimset('fm

12、inbnd') 参见: optimget   9.1.4 模型输入时需要注意的问题 使用优化工具箱时,由于优化函数要求目标函数和约束条件满足一定的格式,所以需要用户在进行模型输入时注意以下几个问题: 1.目标函数最小化 优化函数fminbnd、fminsearch、fminunc、fmincon、fgoalattain、fminmax和lsqnonlin都要求目标函数最小化,如果优化问题要求目标函数最大化,可以通过使该目标函数的负值最小化即-f(x)最小化来实现。近似地,对于quadprog函数提供-H和-f,对于linprog函数提供-f。 2.约束非正 优化工具箱要求非线

13、性不等式约束的形式为Ci(x)≤0,通过对不等式取负可以达到使大于零的约束形式变为小于零的不等式约束形式的目的,如Ci(x)≥0形式的约束等价于- Ci(x)≤0;Ci(x)≥b形式的约束等价于- Ci(x)+b≤0。 3.避免使用全局变量 9.1.5 @(函数句柄)函数 MATLAB6.0中可以用@函数进行函数调用。@函数返回指定MATLAB函数的句柄,其调用格式为: handle = @function 利用@函数进行函数调用有下面几点好处: ●    用句柄将一个函数传递给另一个函数; ●    减少定义函数的文件个数; ●    改进重复

14、操作; ●    保证函数计算的可靠性。 下面的例子为humps函数创建一个函数句柄,并将它指定为fhandle变量。 fhandle = @humps; 同样传递句柄给另一个函数,也将传递所有变量。本例将刚刚创建的函数句柄传递给fminbnd函数,然后在区间[0.3,1]上进行最小化。 x = fminbnd (@humps, 0.3, 1) x = 0.6370     9.2 最小化问题 9.2.1 单变量最小化 9.2.1.1 基本数学原理 本节讨论只有一个变量时的最小化问题,即一维搜索问题。该问题在某些情况下可以直接用于求解实际问题,但大多数

15、情况下它是作为多变量最优化方法的基础在应用,因为进行多变量最优化要用到一维搜索法。该问题的数学模型为: 其中,x,x1,和x2为标量,f(x)为函数,返回标量。 该问题的搜索过程可用下式表达: 其中xk为本次迭代的值,d为搜索方向,α为搜索方向上的步长参数。所以一维搜索就是要利用本次迭代的信息来构造下次迭代的条件。 求解单变量最优化问题的方法有很多种,根据目标函数是否需要求导,可以分为两类,即直接法和间接法。直接法不需要对目标函数进行求导,而间接法则需要用到目标函数的导数。 1.直接法 常用的一维直接法主要有消去法和近似法

16、两种。 (1)消去法 该法利用单峰函数具有的消去性质进行反复迭代,逐渐消去不包含极小点的区间,缩小搜索区间,直到搜索区间缩小到给定的允许精度为止。一种典型的消去法为黄金分割法(Golden Section Search)。黄金分割法的基本思想是在单峰区间内适当插入两点,将区间分为三段,然后通过比较这两点函数值的大小来确定是删去最左段还是最右段,或同时删去左右两段保留中间段。重复该过程使区间无限缩小。插入点的位置放在区间的黄金分割点及其对称点上,所以该法称为黄金分割法。该法的优点是算法简单,效率较高,稳定性好。 (2)多项式近似法 该法用于目标函数比较复杂的情况。此时寻找一个与它近似的函

17、数代替目标函数,并用近似函数的极小点作为原函数极小点的近似。常用的近似函数为二次和三次多项式。 二次内插涉及到形如下式的二次函数数据拟合问题: 其中步长极值为: 然后只要利用三个梯度或函数方程组就可以确定系数a和b,从而可以确定α*。得到该值以后,进行搜索区间的收缩。在缩短的新区间中,重新安排三点求出下一次的近似极小点α*,如此迭代下去,直到满足终止准则为止。其迭代公式为: 其中 二次插值法的计算速度比黄金分割法的快,但是对于一些强烈扭曲或可能多峰的函数,该法的收敛速度会变得很慢,甚至失败。 2.间接法 间接法需要计算目标函数的导数,优点是计算速度很快。常见的间

18、接法包括牛顿切线法、对分法、割线法和三次插值多项式近似法等。优化工具箱中用得较多的是三次插值法。 三次插值的基本思想与二次插值的一致,它是用四个已知点构造一个三次多项式P3(x),用它逼近函数f(x),以P3(x)的极小点作为f(x)的近似极小点。一般讲,三次插值法比二次插值法的收敛速度要快些,但每次迭代需要计算两个导数值。 三次插值法的迭代公式为 其中 如果函数的导数容易求得,一般来说首先考虑使用三次插值法,因为它具有较高的效率。对于只需要计算函数值的方法中,二次插值法是一个很好的方法,它的收敛速度较快,尤其在极小点所在区间较小

19、时尤其如此。黄金分割法则是一种十分稳定的方法,并且计算简单。由于以上原因,Matlab优化工具箱中使用得较多的方法是二次插值法、三次插值法、二次、三次混合插值法和黄金分割法。 9.2.1.2 相关函数介绍 fminbnd 功能:找到固定区间内单变量函数的最小值。 语法: x = fminbnd(fun,x1,x2) x = fminbnd(fun,x1,x2,options) x = fminbnd(fun,x1,x2,options,P1,P2,...) [x,fval] = fminbnd(...) [x,fval,exitflag] = fminbnd(...) [x

20、fval,exitflag,output] = fminbnd(...) 描述: fminbnd求取固定区间内单变量函数的最小值。 x = fminbnd(fun,x1,x2)返回区间{x1,x2}上fun参数描述的标量函数的最小值x。 x = fminbnd(fun,x1,x2,options)用options参数指定的优化参数进行最小化。 x = fminbnd(fun,x1,x2,options,P1,P2,...)提供另外的参数P1,P2等,传输给目标函数fun。如果没有设置options选项,则令options=[]。 [x,fval] = fminbnd(...)返回

21、解x处目标函数的值。 [x,fval,exitflag] = fminbnd(...)返回exitflag值描述fminbnd函数的退出条件。 [x,fval,exitflag,output] = fminbnd(...)返回包含优化信息的结构输出。 变量: 函数的输入变量在表9-7中进行描述,输出变量在表9-8中描述。与fminbnd函数相关的细节内容包含在fun,options,exitflag和output等参数中,如表9-10所示。 表9-10 参数描述表 参 数 描 述 fun 需要最小化的目标函数。fun函数需要输入标量参数x,返

22、回x处的目标函数标量值f。可以将fun函数指定为命令行,如 x = fminbnd(inline('sin(x*x)'),x0) 同样,fun参数可以是一个包含函数名的字符串。对应的函数可以是M文件、内部函数或MEX文件。若fun='myfun',则M文件函数myfun.m必须右下面的形式。 function f = myfun(x) f = ... %计算x处的函数值。 options 优化参数选项。你可以用optimset函数设置或改变这些参数的值。options参数有以下几个选项:

23、 l          ● Display – 显示的水平。选择'off',不显示输出;选择'iter',显示每一步迭代过程 l          的输出;选择'final',显示最终结果。 ● MaxFunEvals – 函数评价的最大允许次数。 l MaxIter – 最大允许迭代次数。 l TolX –x处的终止容限。 exitflag 描述退出条件: l   >0 表示目标函数收敛于解x处。 l   0 表示已经达到函数评价或迭代的最大次数。 l   <0 表示目标函数不收敛。 output 该参数包含下列优化信息: l  

24、output.iterations – 迭代次数。 l   output.algorithm – 所采用的算法。 l   output.funcCount – 函数评价次数。 算法: fminbnd是一个M文件。其算法基于黄金分割法和二次插值法。文献[1]中给出了实现同样算法的Fortran程序。 局限性: 1.目标函数必须是连续的。 2.fminbnd函数可能只给出局部最优解。 3.当问题的解位于区间边界上时,fminbnd函数的收敛速度常常很慢。此时,fmincon函数的计算速度更快,计算精度更高。 4.fminbnd函数只用于实数变量。 参见: fminsearc

25、h, fmincon, fminunc, optimset, inline 文献: [1]   Forsythe, G.E., M.A. Malcolm, and C.B. Moler, Computer Methods for Mathematical Computations, Prentice Hall, 1976. 9.2.1.3 应用实例 [例一] 在区间(0,2π)上求函数sin(x)的最小值: x = fminbnd(@sin,0,2*pi) x = 4.7124 所以区间(0,2π)上函数sin(x)的最小值点位于x=4.7124处。 最小值处的函

26、数值为: y = sin(x) y = -1.0000 磁盘中该问题的M文件名为opt21_1.m。   [例三] 对边长为3m的正方形铁板,在四个角处剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大? 假设剪去的正方形的边长为x,则水槽的容积为 现在要求在区间(0,1.5)上确定一个x,使 最大化。因为优化工具箱中要求目标函数最小化,所以需要对目标函数进行转换,即要求 最小化。 首先编写M文件opt21_3o.m: funct

27、ion f = myfun(x) f = -(3-2*x).^2 * x; 然后调用fminbnd函数(磁盘中M文件名为opt21_3.m): x = fminbnd(@opt21_3o,0,1.5) 得到问题的解: x = 0.5000 即剪掉的正方形的边长为0.5m时水槽的容积最大。 水槽的最大容积计算: y = optim2(x) y = -2.0000 所以水槽的最大容积为2.0000m3。   9.2.2 线性规划 9.2.2.1 基本数学原理 线性规划是处理线性

28、目标函数和线性约束的一种较为成熟的方法,目前已经广泛应用于军事、经济、工业、农业、教育、商业和社会科学等许多方面。线性规划问题的标准形式是: 或 写成矩阵形式为: 其中,0为n维列向量。 线性规划的标准形式要求目标函数最小化,约束条件取等式,变量非负。不符合这几个条件的线性模型要首先转化成标准形。 线性规划的求解方法主要是单纯形法(Simple Method),该法由Dantzig于1947年提出,以后经过多次改进。单纯形法是一种迭代算法,它从所有基本可行解的一个较小部分中通过迭代过程选出最优解。其迭代过程的一般描述为: 1. 将线性规划化为典范形式,从而可以得到一个初始基本可行解

29、x(0)(初始顶点),将它作为迭代过程的出发点,其目标值为z(x(0))。 2. 寻找一个基本可行解x(1),使z(x(1))≤z(x(0))。方法是通过消去法将产生x(0)的典范形式化为产生x(1)的典范形式。 3. 继续寻找较好的基本可行解x(2),x(3),…,使目标函数值不断改进,即z(x(1))≥z(x(2)) ≥z(x(3)) ≥…。当某个基本可行解再也不能被其它基本可行解改进时,它就是所求的最优解。 Matlab优化工具箱中采用的是投影法,它是单纯形法的一种变种。 9.2.2.2 相关函数介绍 linprog函数 功能:求解线性规划问题。 数学模型:

30、 其中f, x, b, beq, lb和ub为向量,A 和Aeq为矩阵。 语法: x = linprog(f,A,b,Aeq,beq) x = linprog(f,A,b,Aeq,beq,lb,ub) x = linprog(f,A,b,Aeq,beq,lb,ub,x0) x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) [x,fval] = linprog(...) [x,fval,exitflag] = linprog(...) [x,

31、fval,exitflag,output] = linprog(...) [x,fval,exitflag,output,lambda] = linprog(...) 描述: x = linprog(f,A,b)求解问题 min f'*x,约束条件为A*x <= b。 x = linprog(f,A,b,Aeq,beq)求解上面的问题,但增加等式约束,即Aeq*x = beq。若没有不等式存在,则令A=[]、b=[]。 x = linprog(f,A,b,Aeq,beq,lb,ub)定义设计变量x的下界lb和上界ub,使得x始终在该范围内。若没有等式约束,令Aeq=[]、beq=[]

32、 x = linprog(f,A,b,Aeq,beq,lb,ub,x0)设置初值为x0。该选项只适用于中型问题,缺省时大型算法将忽略初值。 x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)用options指定的优化参数进行最小化。 [x,fval] = linprog(...) 返回解x处的目标函数值fval。 [x,lambda,exitflag] = linprog(...)返回exitflag值,描述函数计算的退出条件。 [x,lambda,exitflag,output] = linprog(...) 返回包含优化信息的输出变量outp

33、ut。 [x,fval,exitflag,output,lambda] = linprog(...) 将解x处的拉格朗日乘子返回到lambda参数中。 变量: lambda参数 lambda参数是解x处的拉格朗日乘子。它有以下一些属性: l       lambda.lower –lambda的下界。 l       lambda.upper –lambda的上界。 l       lambda.ineqlin –lambda的线性不等式。 l       lambda.eqlin –lambda的线性等式。 其它参数意义同前。 算法: 大型优化算法 大型优化算

34、法采用的是LIPSOL法,该法在进行迭代计算之前首先要进行一系列的预处理。 中型优化算法 linprog函数使用的是投影法,就象quadprog函数的算法一样。linprog函数使用的是一种活动集方法,是线性规划中单纯形法的变种。它通过求解另一个线性规划问题来找到初始可行解。 诊断: 大型优化问题 算法的第一步涉及到一些约束条件的预处理问题。有些问题可能导致linprog函数退出,并显示不可行的信息。在本例中,exitflag参数将被设为负值以表示优化失败。 若Aeq参数中某行的所有元素都为零,但Beq参数中对应的元素不为零,则显示以下退出信息: Exiting due

35、 to infeasibility: an all zero row in the constraint matrix does not have a zero in corresponding right hand size entry. 若x的某一个元素没在界内,则给出以下退出信息: Exiting due to infeasibility: objective f'*x is unbounded below. 若Aeq参数的某一行中只有一个非零值,则x中的相关值称为奇异变量。这里,x中该成分的值可以用Aeq和Beq算得。若算得的值与另一个约束条件相矛盾,则给出以下退出信息:

36、 Exiting due to infeasibility: Singleton variables in equality constraints are not feasible. 若奇异变量可以求解但其解超出上界或下界,则给出以下退出信息: Exiting due to infeasibility: singleton variables in the equality constraints are not within bounds. 9.2.2.3 应用实例 [ [例二] 生产决策问题 某厂生产甲乙两种产品,已知制成一吨产品甲需用资源A 3吨,资源B

37、4m3;制成一吨产品乙需用资源A 2吨,资源B 6m3,资源C 7个单位。若一吨产品甲和乙的经济价值分别为7万元和5万元,三种资源的限制量分别为90吨、200m3和210个单位,试决定应生产这两种产品各多少吨才能使创造的总经济价值最高? 令生产产品甲的数量为x1,生产产品乙的数量为x2。由题意可以建立下面的模型: 该模型中要求目标函数最大化,需要按照Matlab的要求进行转换,即目标函数为 首先输入下列系数: f = [-7;-5]; A = [3 2 4 6 0 7]; b = [90; 200; 210]; lb = zeros(2,1

38、); 然后调用linprog函数: [x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb) x = 14.0000 24.0000 fval = -218.0000 exitflag = 1 output = iterations: 5 cgiterations: 0 algorithm: 'lipsol' lambda = ineqlin: [3x1 double] eqlin: [0x1 double]

39、 upper: [2x1 double] lower: [2x1 double] 由上可知,生产甲种产品14吨、乙种产品24吨可使创建的总经济价值最高。最高经济价值为218万元。exitflag=1表示过程正常收敛于解x处。 磁盘中本问题的M文件为opt22_2.m。   [例三] 投资问题 某单位有一批资金用于四个工程项目的投资,用于各工程项目时所得到得净收益(投入资金的百分比)如下表所示: 表9-11 工程项目收益表 工 程 项 目 A B C D 收益(%) 15 10 8 12   由于某种原因,决定用于项目A的投资不大于其它

40、各项投资之和;而用于项目B和C的投资要大于项目D的投资。试确定使该单位收益最大的投资分配方案。 用x1、x2、x3和x4分别代表用于项目A、B、C和D的投资百分数,由于各项目的投资百分数之和必须等于100%,所以 x1+x2+x3+x4=1 据题意,可以建立下面的数学模型: 将它转换为标准形式: 然后进行求解: 首先输入下列系数: f = [-0.15;-0.1;-0.08;-0.12]; A = [1 -1 -1 -1 0 -1 -1 1]; b = [0; 0]; Aeq=[1 1 1 1]; beq=

41、[1]; lb = zeros(4,1); 然后调用linprog函数: [x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb); x = 0.5000 0.2500 0.0000 0.2500 fval = -0.1300 exitflag = 1 可见,四个项目的投资百分数分别为0.50、0.25、0.00和0.25时可使该单位获得最大的收益。最大收益为13%。过程正常收敛。 磁盘中本问题的M文件为opt22_3.m。   [例四] 工件加工任务分

42、配问题 某车间有两台机床甲和乙,可用于加工三种工件。假定这两台机床的可用台时数分别为700和800,三种工件的数量分别为300、500和400,且已知用三种不同机床加工单位数量的不同工件所需的台时数和加工费用(如表 所示),问怎样分配机床的加工任务,才能既满足加工工件的要求,又使总加工费用最低? 表9-12 机床加工情况表 机床类型 单位工作所需加工台时数 单位工件的加工费用 可用 台时数 工件1 工件2 工件3 工件1 工件2 工件3 甲 0.4 1.1 1.0 13 9 10 700 乙 0.5 1.2 1.3 11 12 8 8

43、00   设在甲机床上加工工件1、2和3的数量分别为x1、x2和x3,在乙机床上加工工件1、2和3的数量分别为x4、x5和x6。根据三种工种的数量限制,有 x1+x4=300 (对工件1) x2+x5=500 (对工件2) x3+x6=400 (对工件3) 再根据机床甲和乙的可用总台时限制,可以得到其它约束条件。以总加工费用最少为目标函数,组合约束条件,可以得到下面的数学模型: 首先输入下列系数: f = [13;9;10;11;12;8]; A = [0.4 1.1 1 0 0 0 0 0 0 0.5 1.2 1.3]; b = [70

44、0; 800]; Aeq=[1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1]; beq=[300 500 400]; lb = zeros(6,1); 然后调用linprog函数: [x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb); x = 0.0000 500.0000 0.0000 300.0000 0.0000 400.0000 fval = 1.1000e+004 exitflag = 1

45、 可见,在甲机床上加工500个工件2,在乙机床上加工300个工件1、加工400个工件3可在满足条件的情况下使总加工费最小。最小费用为11000元。收敛正常。 磁盘中本问题的M文件为opt22_4.m。   [例五] 裁料问题 在某建筑工程施工中需要制作10000套钢筋,每套钢筋由2.9m、2.1m和1.5m三种不同长度的钢筋各一根组成,它们的直径和材质不同。目前在市场上采购到的同类钢筋的长度每根均为7.4m,问应购进多少根7.4m长的钢筋才能满足工程的需要? 首先分析共有多少种不同的套裁方法,该问题的可能材料方案如表9-13所示。 表9-13 材料方案表 下料长

46、度 (m) 裁 料 方 案 编 号 i 1 2 3 4 5 6 7 8 2.9 2 1 1 1 0 0 0 0 2.1 0 2 1 0 3 2 1 0 1.5 1 0 1 3 0 2 3 4 料头长度 (m) 0.1 0.3 0.9 0 1.1 0.2 0.8 1.4   设以xi(i=1,2,…,8)表示按第i种裁料方案下料的原材料数量,则可得该问题的数学模型为: 首先输入下列系数: f = [1;1;1;1;1;1;1;1]; Aeq=[2 0 0 0 0 0 0 0

47、 0 2 1 0 3 2 1 0 1 0 1 3 0 2 3 4]; beq=[10000 10000 10000]; lb = zeros(8,1); 然后调用linprog函数: [x,fval,exitflag,output,lambda] = linprog(f,[],[],Aeq,beq,lb); x = 1.0e+003 * 5.0000 0.0000 0.0000 0.0000 1.6667 2.5000 0.0000 0.0000 fval = 9.16

48、67e+003 所以最节省的情况需要9167根7.4m长的钢筋,其中第一种方案使用5000根,第五种方案使用1667根,第六种方案使用2500根。 磁盘中本问题的M文件为opt22_5.m。   [例六] 工作人员计划安排问题 某昼夜服务的公共交通系统每天各时间段(每4小时为一个时间段)所需的值班人数如表 所示,这些值班人员在某一时段开始上班后要连续工作8个小时(包括轮流用膳时间),问该公交系统至少需要多少名工作人员才能满足值班的需要? 表9-14 各时段所需值班人数表 班 次 时 间 段 所 需 人 数 1 6:00—10:00 60 2 10

49、00—14:00 70 3 14:00—18:00 60 4 18:00—22:00 50 5 22:00—2:00 20 6 2:00—6:00 30   设xi为第i个时段开始上班的人员数,据题意建立下面的数学模型: 需要对前面六个约束条件进行形式变换,是不等式为非正不等式。只需要在不等式两侧取负即可。 首先输入下列系数: f = [1;1;1;1;1;1]; A=[-1 0 0 0 0 -1 -1 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 -1 0

50、 0 0 0 0 -1 -1]; b=[-60;-70;-60;-50;-20;-30]; lb = zeros(6,1); 然后调用linprog函数: [x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb); x = 41.9176 28.0824 35.0494 14.9506 9.8606 20.1394 fval = 150.0000 exitflag = 1 可见,只要六个时段分别安排42人、28人、35人、15人、10人和20人就可以满足

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服