1、清华大学 龚纯2022-6-212l本书的主要内容是应用MATLAB来解决最优化问题,通过将“最优化问题”、“MATLAB优化工具箱”和“MATLAB编程”这三方面有机结合进行讲述,即一方面是使用工具箱来快速解决最优化问题,另一方面是通过算法编程深入解决最优化问题。l本书侧重于最优化算法的MATLAB实现,同时精选了大量的最优化问题实例,通过实例的求解,生动地教会读者掌握MATLAB在最优化问题方面的应用。l通过本书,读者不仅能掌握使用MATLAB最优化工具箱来快速解决实际问题,而且能学会分析优化算法和采用MATLAB编程解决最优化问题,从而提高分析和解决问题的能力。l本书可作为信息、数学、经
2、济、金融、管理、运筹、统计、计算机以及有关理工科专业的本科生、研究生作为教材、实验或教学参考书,也可供相关工程技术与管理人员、数学建模爱好者参考。 2022-6-2132022-6-2142022-6-2152022-6-216l1内容由浅入深、层次性强l2紧密围绕MATLAB,系统性强l3算法程序及实例丰富,实用性强l4算法编程实现,指导性强l5语言简洁精炼,可读性强2022-6-217l1 工具箱概述l 1.1 工具箱的功能l 1.2 工具箱的新特色l 1.3 工具箱的结构l2 工具箱函数l3 GUI优化工具l 3.1 GUI优化工具的启动l 3.2 GUI优化工具的界面l 3.3 GUI
3、优化工具使用步骤l 3.4 GUI优化工具应用实例l4 小结2022-6-218优化工具箱主要可以用于解决以下问题:l(1)求解无约束条件非线性极小值;l(2)求解约束条件下非线性极小值,包括目标逼近问题、极大-极小值问题以及半无限极小值问题;l(3)求解二次规划和线性规划问题;l(4)非线性最小二乘逼近和曲线拟合;l(5)非线性系统的方程求解;l(6)约束条件下的线性最小二乘优化;l(7)求解复杂结构的大规模优化问题。 2022-6-219MATLAB R2008b提供的优化工具箱是4.1版本,4.1版本较之以前的3.x版本,主要增加了以下新的特色。l(1)函数fmincon、fminima
4、x和fgoalattain中引入了并行机制,加快了梯度的计算速度;l(2)函数gatool和psearchtool 整合到优化工具箱GUI中;l(3)函数fmincon的求解器中新增内点算法;l(4)提供了KNITRO优化库的接口;l(5)函数lsqcurvefit、lsqnonlin和fsolve的优化选项参数PrecondBandWidth默认值由0变为inf;l(6)优化选项参数TolConSQP的默认值修改为1e6;l(7)输出结构中引入了参数constrviolation。 2022-6-21102022-6-21112022-6-21122022-6-21132022-6-2114
5、l(1)目标函数最小化l优化函数fminbnd、fminsearch、fminunc、fmincon、fgoalattain、fminmax和lsqnonlin都要求目标函数最小化。l(2)约束非正l优化工具箱要求非线性不等式约束的形式为Ci(x)0,通过对不等式取负可以达到使大于零的约束形式变为小于零的不等式约束形式的目的。l(3)避免使用全局变量ce Model.vi”等VI来实现。2022-6-2115优化工具(optimtool)是2006年9月在MATLAB 7.2版本优化工具箱3.1版本中推出的,它是执行下列常见优化任务的图形用户界面。l选择求解器并定义优化问题;l设置和检查优化选
6、项;l运行问题并将结果可视化;l在MATLAB工作空间和优化工具之间导入和导出问题定义、算法选项和结果;l自动生成M文件代码,以获取工作并自动执行任务; l带有图形选项,用来显示对求解器执行期间进度的预定义或自定义测量标准。 2022-6-2116图5-2 优化工具图形界面的菜单启动方式 图5-3 优化工具图形界面 l启动GUI Optimization tool有以下两种方法。l(1)在命令行上输入optimtool;l(2)在MATLAB主界面单击左下角的“Start”按钮,然后依次选择“ToolboxesOptimizationOptimization tool(optimtool)。
7、2022-6-2117lGUI优化工具的界面主要分为三大块:l左边为优化问题的描述及计算结果显示(Problem Setup and Results);l中间为优化选项的设置(Options);l右边为帮助(Quick Reference)。l为了界面的简洁,可以单击右上角的“”按钮将帮助隐藏起来。 l2优化选项lGUI优化工具的优化选项包括9大类。lStopping criteria:停止准则;lFunction value check:函数值检查;lUser-supplied derivatives:用户自定义微分(或梯度)函数;lApproximated derivatives:自适应微
8、分(或梯度);lAlgorithm settings:算法设置;lInner iteration stopping criteria:内迭代停止准则;lPlot functions:用户自定义绘图函数;lOutput functions:用户自定义输出函数;lDisplay to command window:输出到命令行窗口。2022-6-2118lGUI优化工具的基本使用步骤如下。l 1、选择求解器solver和优化算法;l 2、选定目标函数; l 3、设定目标函数的相关参数;l 4、设置优化选项;l 5、单击“Start”按钮,运行求解;l 6、查看求解器的状态和求解结果;l 7、将目标
9、函数、选项和结果导入/导出。2022-6-2119l例5-1fminunc求解器应用实例。l例5-2fminsearch求解器应用实例。l例5-3fmincon求解器应用实例。l例5-4lsqnonlin求解器应用实例。l例5-5linprog求解器应用实例。l例5-6ga求解器应用实例。2022-6-2120建立目标函数文件FunUnc.m文件:lfunction y = FunUnc(x)ly = x2 + 4*x -6;l然后启动优化工具:l在Solver下拉选框中选择fminunc;lAlgorithm下拉选框中选择Medium scale;l目标函数栏输入FunUnc;l初始点输入0
10、,其余参数默认;l单击Start按钮运行。图5-5 无约束优化实例 2022-6-2121l启动优化工具:l然后在Solver下拉选框中选择fminsearch;l目标函数栏输入(x)abs(x2-3*x+2);l初始点输入-7,其余参数默认;l单击Start按钮运行。l运行就可得到极小值和对应的值 图5-7 用fminsearch求解非光滑优化问题 2022-6-2122l约束优化采用的求解器为fmincon,可用的算法有三种:Trust region reflective(信赖域反射算法)、Active set(有效集算法)、Interior point(内点算法)。 lM文件:funct
11、ion f=FunCon(x)l f=-x(1)*x(2)*x(3);l启动优化工具:l在Solver下拉选框中选择fmincon;lAlgorithm下拉选框中选择Active set;l目标函数栏输入FunCon;l初始点输入10;10;10;l在约束条件的Linear inequalities输入框中输入A为-1 -2 -2;1 2 2,b为0;72,其余参数默认;l单击Start按钮运行。2022-6-2123l启动优化工具:l在Solver下拉选框中选择lsqnonlin;l算法采用L-M算法;l目标函数栏输入(x)x2+x-1;2*x2-3;l初始点输入5,其余参数默认;l单击St
12、art按钮运行。l运行就可得到极小值和对应的值 2022-6-2124l线性规划采用的求解器为linprog,可用的算法有三种:Large scale(大规模算法)、Medium scale-simplex(中等规模-单纯形算法)和Medium scale-Active set(中等规模-有效集算法),当Medium scale-Active set算法时,还要提供初始点。 l启动优化工具:l在Solver下拉选框中选择linprog;l算法采用Medium scale-simplex算法;l问题描述组框中的f输入-4;-1;l约束组框中的A输入-1 2;2 3;1 -1,b输入4;12;3,
13、其余参数默认;l单击Start按钮运行。2022-6-2125l优化工具箱中的智能优化算法包括遗传算法遗传算法(ga)和模拟退火算法模拟退火算法(simulannealbnd),MATLAB中的ga求解器功能非常强大,既能求解无约束优化问题,也能求解约束优化问题,而且约束条件可以是非线性的,但是simulannealbnd求解器只能求解无约束优化问题。l在Solver下拉选框中选择ga;l在适应函数栏输入(x)x4-3*x3+x2-2;l变量个数输入1,其余参数默认;l单击Start按钮运行。2022-6-2126l本章全面介绍了优化工具箱函数的功能、语法,以及GUI优化工具的使用及实例,GUI优化工具是进行MATLAB最优化计算的最简洁、最容易掌握的工具,后面的章节还会对常用的工具箱的函数进行详细讲述,并辅以实例。l通过本章读者不仅对MATLAB优化工具箱函数的强大功能有一个初步了解,还为后面更具体的介绍及应用打下基础。