5.1.1 工具箱的功能 优化工具箱主要可以用于解决以下问题: (1)求解无约束条件非线性极小值; 5.1.1 工具箱的功能 优化工具箱主要可以用于解决以下问题: (1)求解无约束条件非线性极小值; (2)求解约束条件下非线性极小值,包括目标逼近问题、极大-极小值问题以及半无限极小值问题; (3)求解二次规划和线性规划问题; (4)非线性最小二乘逼近和曲线拟合; (5)非线性系统的方程求解; (6)约束条件下的线性最小二乘优化; (7)求解复杂结构的大规模优化问题。
5.1.2 工具箱的新特色 MATLAB R2008b提供的优化工具箱是4.1版本,4.1版本较之以前的3.x版本,主要增加了以下新的特色。 5.1.2 工具箱的新特色 MATLAB R2008b提供的优化工具箱是4.1版本,4.1版本较之以前的3.x版本,主要增加了以下新的特色。 (1)函数fmincon、fminimax和fgoalattain中引入了并行机制,加快了梯度的计算速度; (2)函数gatool和psearchtool 整合到优化工具箱GUI中; (3)函数fmincon的求解器中新增内点算法; (4)提供了KNITRO优化库的接口; (5)函数lsqcurvefit、lsqnonlin和fsolve的优化选项参数PrecondBandWidth默认值由0变为inf; (6)优化选项参数TolConSQP的默认值修改为1e–6; (7)输出结构中引入了参数constrviolation。
5.1.3 工具箱的结构
5.2 工具箱函数
函数输入参数
函数输出参数
模型输入时需要注意的问题 (1)目标函数最小化 优化函数fminbnd、fminsearch、fminunc、fmincon、fgoalattain、fminmax和lsqnonlin都要求目标函数最小化。 (2)约束非正 优化工具箱要求非线性不等式约束的形式为Ci(x)≤0,通过对不等式取负可以达到使大于零的约束形式变为小于零的不等式约束形式的目的。 (3)避免使用全局变量ce Model.vi”等VI来实现。
5.3 GUI优化工具 优化工具(optimtool)是2006年9月在MATLAB 7.2版本优化工具箱3.1版本中推出的,它是执行下列常见优化任务的图形用户界面。 选择求解器并定义优化问题; 设置和检查优化选项; 运行问题并将结果可视化; 在MATLAB工作空间和优化工具之间导入和导出问题定义、算法选项和结果; 自动生成M文件代码,以获取工作并自动执行任务; 带有图形选项,用来显示对求解器执行期间进度的预定义或自定义测量标准。
5.3.1 GUI优化工具的启动 启动GUI Optimization tool有以下两种方法。 (1)在命令行上输入optimtool; (2)在MATLAB主界面单击左下角的“Start”按钮,然后依次选择“Toolboxes→Optimization→Optimization tool(optimtool)。 图5-2 优化工具图形界面的菜单启动方式 图5-3 优化工具图形界面
5.3.2 GUI优化工具的界面 GUI优化工具的界面主要分为三大块: 2.优化选项 GUI优化工具的优化选项包括9大类。 Stopping criteria:停止准则; Function value check:函数值检查; User-supplied derivatives:用户自定义微分(或梯度)函数; Approximated derivatives:自适应微分(或梯度); Algorithm settings:算法设置; Inner iteration stopping criteria:内迭代停止准则; Plot functions:用户自定义绘图函数; Output functions:用户自定义输出函数; Display to command window:输出到命令行窗口。 GUI优化工具的界面主要分为三大块: 左边为优化问题的描述及计算结果显示(Problem Setup and Results); 中间为优化选项的设置(Options); 右边为帮助(Quick Reference)。 为了界面的简洁,可以单击右上角的“<<”按钮将帮助隐藏起来。
5.3.3 GUI优化工具使用步骤 GUI优化工具的基本使用步骤如下。 1、选择求解器solver和优化算法; 2、选定目标函数; 3、设定目标函数的相关参数; 4、设置优化选项; 5、单击“Start”按钮,运行求解; 6、查看求解器的状态和求解结果; 7、将目标函数、选项和结果导入/导出。
5.3.4 GUI优化工具应用实例 例5-1 fminunc求解器应用实例。 例5-2 fminsearch求解器应用实例。 例5-3 fmincon求解器应用实例。 例5-4 lsqnonlin求解器应用实例。 例5-5 linprog求解器应用实例。 例5-6 ga求解器应用实例。
无约束优化(fminunc求解器) 建立目标函数文件FunUnc.m文件: function y = FunUnc(x) y = x^2 + 4*x -6; 然后启动优化工具: 在Solver下拉选框中选择fminunc; Algorithm下拉选框中选择Medium scale; 目标函数栏输入@FunUnc; 初始点输入0,其余参数默认; 单击Start按钮运行。 图5-5 无约束优化实例
无约束优化(fminsearch求解器) 启动优化工具: 然后在Solver下拉选框中选择fminsearch; 目标函数栏输入@(x)abs(x^2-3*x+2); 初始点输入-7,其余参数默认; 单击Start按钮运行。 运行就可得到极小值和对应的值 图5-7 用fminsearch求解非光滑优化问题
约束优化(fmincon求解器) 约束优化采用的求解器为fmincon,可用的算法有三种:Trust region reflective(信赖域反射算法)、Active set(有效集算法)、Interior point(内点算法)。 启动优化工具: 在Solver下拉选框中选择fmincon; Algorithm下拉选框中选择Active set; 目标函数栏输入@FunCon; 初始点输入[10;10;10]; 在约束条件的Linear inequalities输入框中输入A为[-1 -2 -2;1 2 2],b为[0;72],其余参数默认; 单击Start按钮运行。
非线性最小二乘优化(lsqnonlin求解器) 启动优化工具: 在Solver下拉选框中选择lsqnonlin; 算法采用L-M算法; 目标函数栏输入@(x)[x^2+x-1;2*x^2-3]; 初始点输入5,其余参数默认; 单击Start按钮运行。 运行就可得到极小值和对应的值
线性规划(linprog求解器) 线性规划采用的求解器为linprog,可用的算法有三种:Large scale(大规模算法)、Medium scale-simplex(中等规模-单纯形算法)和Medium scale-Active set(中等规模-有效集算法),当Medium scale-Active set算法时,还要提供初始点。 启动优化工具: 在Solver下拉选框中选择linprog; 算法采用Medium scale-simplex算法; 问题描述组框中的f输入[-4;-1]; 约束组框中的A输入[-1 2;2 3;1 -1],b输入[4;12;3],其余参数默认; 单击Start按钮运行。
智能优化算法(ga求解器) 优化工具箱中的智能优化算法包括遗传算法(ga)和模拟退火算法(simulannealbnd),MATLAB中的ga求解器功能非常强大,既能求解无约束优化问题,也能求解约束优化问题,而且约束条件可以是非线性的,但是simulannealbnd求解器只能求解无约束优化问题。 在Solver下拉选框中选择ga; 在适应函数栏输入@(x)x^4-3*x^3+x^2-2; 变量个数输入1,其余参数默认; 单击Start按钮运行。
5.4 小结 本章全面介绍了优化工具箱函数的功能、语法,以及GUI优化工具的使用及实例,GUI优化工具是进行MATLAB最优化计算的最简洁、最容易掌握的工具。