资源预览内容
第1页 / 共74页
第2页 / 共74页
第3页 / 共74页
第4页 / 共74页
第5页 / 共74页
第6页 / 共74页
第7页 / 共74页
第8页 / 共74页
第9页 / 共74页
第10页 / 共74页
亲,该文档总共74页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Matlab机械优化设计 中国石油大学课件 1 最小化问题 一 单变量最小化 1 相关函数介绍 1 fminbnd 2 功能 找到固定区间内单变量函数的最小值 语法和描述 fminbnd求取固定区间内单变量函数的最小值 x fminbnd fun x1 x2 返回区间 x1 x2 上fun参数描述的标量函数的最小值x x fminbnd fun x1 x2 options 用options参数指定的优化参数进行最小化 fminbnd 3 x fminbnd fun x1 x2 options P1 P2 提供另外的参数P1 P2等 传输给目标函数fun 如果没有设置options选项 则令options x fval fminbnd 返回解x处目标函数的值 x fval exitflag fminbnd 返回exitflag值描述fminbnd函数的退出条件 x fval exitflag output fminbnd 返回包含优化信息的结构输出 4 参数描述表 5 6 7 算法 fminbnd是一个M文件 其算法基于黄金分割法和二次插值法 局限性 1 目标函数必须是连续的 2 fminbnd函数可能只给出局部最优解 3 当问题的解位于区间边界上时 fminbnd函数的收敛速度常常很慢 此时 fmincon函数的计算速度更快 计算精度更高 4 fminbnd函数只用于实数变量 8 应用实例 例1 在区间 0 2 上求函数sin x 的最小值 x fminbnd sin 0 2 pi x 4 7124 9 例2 对边长为3m的正方形铁板 在四个角处剪去相等的正方形以制成方形无盖水槽 问如何剪法使水槽的容积最大 模型建立 假设剪去的正方形的边长为x 则水槽的容积为 现在要求在区间 0 1 5 上确定一个x 使最大化 因为优化工具箱中要求目标函数最小化 所以需要对目标函数进行转换 即要求最小化 10 首先编写M文件opt21 3o m functionf myfun x f 3 2 x 2 x 然后调用fminbnd函数 磁盘中M文件名为opt21 3 m x fminbnd opt21 3o 0 1 5 11 无约束非线性规划问题 相关函数 fminunc函数 fminsearch函数 12 fminunc函数功能 给定初值 求多变量标量函数的最小值 常用于无约束非线性最优化问题 数学模型 其中 x为一向量 f x 为一函数 返回标量 13 语法格式及描述 x fminunc fun x0 给定初值x0 求fun函数的局部极小点x x0可以是标量 向量或矩阵 x fminunc fun x0 options 用options参数中指定的优化参数进行最小化 x fminunc fun x0 options P1 P2 将问题参数p1 p2等直接输给目标函数fun 将options参数设置为空矩阵 作为options参数的缺省值 14 x fval fminunc 将解x处目标函数的值返回到fval参数中 x fval exitflag fminunc 返回exitflag值 描述函数的输出条件 x fval exitflag output fminunc 返回包含优化信息的结构输出 x fval exitflag output grad fminunc 将解x处fun函数的梯度值返回到grad参数中 x fval exitflag output grad hessian fminunc 将解x处目标函数的Hessian矩阵信息返回到hessian参数中 15 参数描述表 16 17 适用于大型和中型算法的参数 lDiagnostics 打印最小化函数的诊断信息 lDisplay 显示水平 选择 off 不显示输出 选择 iter 显示每一步迭代过程的输出 选择 final 显示最终结果 打印最小化函数的诊断信息 lGradObj 用户定义的目标函数的梯度 对于大型问题此参数是必选的 对于中型问题则是可选项 lMaxFunEvals 函数评价的最大次数 lMaxIter 最大允许迭代次数 lTolFun 函数值的终止容限 lTolX x处的终止容限 18 只用于大型算法的参数 lHessian 用户定义的目标函数的Hessian矩阵 lHessPattern 用于有限差分的Hessian矩阵的稀疏形式 若不方便求fun函数的稀疏Hessian矩阵H 可以通过用梯度的有限差分获得的H的稀疏结构 如非零值的位置等 来得到近似的Hessian矩阵H 若连矩阵的稀疏结构都不知道 则可以将HessPattern设为密集矩阵 在每一次迭代过程中 都将进行密集矩阵的有限差分近似 这是缺省设置 这将非常麻烦 所以花一些力气得到Hessian矩阵的稀疏结构还是值得的 19 lMaxPCGIter PCG迭代的最大次数 lPrecondBandWidth PCG前处理的上带宽 缺省时为零 对于有些问题 增加带宽可以减少迭代次数 lTolPCG PCG迭代的终止容限 lTypicalX 典型x值 只用于中型算法的参数 lDerivativeCheck 对用户提供的导数和有限差分求出的导数进行对比 lDiffMaxChange 变量有限差分梯度的最大变化 lDiffMinChange 变量有限差分梯度的最小变化 lLineSearchType 一维搜索算法的选择 20 21 22 习题4 6 目标函数m文件 保存为xiti4j6 mfunctionf myfun x f 10 x 1 2 x 2 2 20 x 1 4 x 2 24 求解m文件options optimset display on maxiter 10e5 tolfun 10e 5 tolx 0 01 x0 2 1 x fval exigflag hessian fminunc xiti4j6 x0 options 23 x 1 00002 0007fval 10 0000exigflag 1hessian iterations 6funcCount 21stepsize 1firstorderopt 0 0013algorithm medium scale Quasi Newtonlinesearch 24 例 初始点 1 1 程序 编辑ff2 m文件 functionf ff x f 8 x 1 4 x 2 x 1 2 3 x 2 2 编辑command m文件x0 1 1 取初始点 x fval exitflag fminunc ff x0 25 Optimizationterminatedsuccessfully Searchdirectionlessthan2 options TolXx 4 00000 6667fval 17 3333exitflag 1 26 注意1 对于求解平方和的问题 fminunc函数不是最好的选择 用lsqnonlin函数效果更佳 2 使用大型方法时 必须通过将options GradObj设置为 on 来提供梯度信息 否则将给出警告信息 27 局限性1 目标函数必须是连续的 fminunc函数有时会给出局部最优解 2 fminunc函数只对实数进行优化 即x必须为实数 而且f x 必须返回实数 当x为复数时 必须将它分解为实部和虚部 28 fminsearch函数 功能 求解多变量无约束函数的最小值 该函数常用于无约束非线性最优化问题 x fminsearch fun x0 初值为x0 求fun函数的局部极小点x x0可以是标量 向量或矩阵 x fminsearch fun x0 options 用options参数指定的优化参数进行最小化 x fminsearch fun x0 options P1 P2 将问题参数p1 p2等直接输给目标函数fun 将options参数设置为空矩阵 作为options参数的缺省值 语法格式及描述 29 x fval fminsearch 将x处的目标函数值返回到fval参数中 x fval exitflag fminsearch 返回exitflag值 描述函数的退出条件 x fval exitflag output fminsearch 返回包含优化信息的输出参数output 参数 各参数的意义同fminunc 30 fminunc与fminsearch 对于求解二次以上的问题 fminsearch比fminunc更有效 而且当问题为高度非线性时 前者更有效 fminsearch不适合求解平方和的问题 用lsqnolin更好 31 三 约束最小化 相关函数介绍 fmincon函数 32 功能 求多变量有约束非线性函数的最小值 fmincon函数 数学模型 其中 x b beq lb 和ub为向量 A和Aeq为矩阵 c x 和ceq x 为函数 返回标量 f x c x 和ceq x 可以是非线性函数 非线性不等式约束非线性等式约束 线性不等式约束线性等式约束 设计变量的上下界 33 语法格式及描述 x fmincon fun x0 A b 给定初值x0 求解fun函数的最小值x fun函数的约束条件为A x b x0可以是标量 向量或矩阵 x fmincon fun x0 A b Aeq beq 最小化fun函数 约束条件为Aeq x beq和A x b 若没有不等式存在 则设置A b x fmincon fun x0 A b Aeq beq lb ub 定义设计变量x的下界lb和上界ub 使得总是有lb x ub 若无等式存在 则令Aeq beq x fmincon fun x0 A b Aeq beq lb ub nonlcon 在上面的基础上 在nonlcon参数中提供非线性不等式c x 或等式ceq x fmincon函数要求c x 0且ceq x 0 当无边界存在时 令lb 和 或 ub 34 x fmincon fun x0 A b Aeq beq lb ub nonlcon options 用optiions参数指定的参数进行最小化 x fmincon fun x0 A b Aeq beq lb ub nonlcon options P1 P2 将问题参数P1 P2等直接传递给函数fun和nonlin 若不需要这些变量 则传递空矩阵到A b Aeq beq lb ub nonlcon和options x fval fmincon 返回解x处的目标函数值 x fval exitflag fmincon 返回exitflag参数 描述函数计算的退出条件 35 x fval exitflag output fmincon 返回包含优化信息的输出参数output x fval exitflag output lambda fmincon 返回解x处包含拉格朗日乘子的lambda参数 x fval exitflag output lambda grad fmincon 返回解x处fun函数的梯度 x fval exitflag output lambda grad hessian fmincon 返回解x处fun函数的Hessian矩阵 36 注意 1 fmincon函数提供了大型优化算法和中型优化算法 默认时 若在fun函数中提供了梯度 options参数的GradObj设置为 on 并且只有上下界存在或只有等式约束 fmincon函数将选择大型算法 当既有等式约束又有梯度约束时 使用中型算法 2 fmincon函数的中型算法使用的是序列二次规划法 在每一步迭代中求解二次规划子问题 并用BFGS法更新拉格朗日Hessian矩阵 3 fmincon函数可能会给出局部最优解 这与初值X0的选取有关 37 1 写成标准形式 s t 2x1 3x26s tx1 4x25x1 x20 例1 38 2 先建立M 文件fun3 m functionf fun3 x f x 1 2 x 2 1 2 x 1
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号