当前位置:文档之家› 第2章 MATLAB辅助优化计算

第2章 MATLAB辅助优化计算


1 优化工具箱的工程应用步骤




用MATLAB 6.5优化工具箱解决实际工程应 用问题可概括为以下3个步骤: 根据所提出的最优化问题,建立优化问题的 数学模型,确定变量,列出约束条件和目标 函数; 对所建立的模型进行具体分析和研究,选择 合适的最优化求解方法; 根据最优化方法的算法,列出程序框图、选 择优化函数和编写语言程序,用计算机求解。



fval:返回目标函数在最优解x点的函数值: Exitflag:返回算法的终止标志。Exitflag>0 表示算法因求得了最小值而停止; Exitflag=0表示算法因迭代次数越限而停止; Exitflag<0表示算法因函数值发散而停止; Output:是一个返回优化算法信息的结构, 它的成员iterations返回迭代的次数。 funCount返回算法中函数估汁值的数目, algorithm使用的算法。
2 线性规成要素:(1) 决策变量,指决策者为实现规划目标采取的 方案、措施,是问题中要确定的未知量:(2) 目标函数,指问题要达到的目的要求,表示 为决策变量的函数;(3)约束条件,指决策 变量取值时受到的各种可用资源的限制,表 示为含决策变量的等式或不等式。如果在规 划问题的数学模型中,决策变量为可控的连 续变量,目标函数和约束条件都是线性的, 这类模型称为线性规划问题的数学模型。
主程序
结果输出

fsemcnf函数

quadprog函数

fminmax函数
5 多目标规划

多目标最优化问题的最早出现,应追溯到 1972年,Franklin提出了多目标问题矛盾如 何协调的问题。但国际上一般认为多目标最 优化问题是由法国经济学家V. Pareto在 1896年提出的,当时从政治经济学角度提出 多目标最优决策问题。1938年,Cournot从 经济学的角度提出了多目标问题的模型; 1944年,Von Neumann等人从对策论(博 弈论)的角度,提出具有多个决策者、而又 有彼此互相矛盾的多目标决策问题。



goal:代表函数fun要逼近的目标值,是一 个向量,它的维数大小等于目标函数fun返 回向量F的维数大小。fgoalattain的优化过 程就是使得F逼近goal; weight:代表给定的权值向量,用于控制目 标逼近过程的步长; nonlcon:函数由每一个输入变量x计算出c 和ceq,用于估计给定x点的非线性不等式 c(x)≤0和非线件等式ceq(x)=0。nonlcon可以 是一个函数句柄,含义同“myfun”。
第2-2章 MATLAB辅助优化计算
MATLAB优化工具箱函数选用 工程优化算法及MATLAB实现
2.1 MATLAB优化工具箱函数选用



MATLAB 6.5中的优化工具箱(Optimization Toolbox)中含有一系列的优化算法函数,这 些函数拓展了MATLAB 6.5数字计算环境的 处理能力,可以用于解决以下工程实际问题: ● 求解无约束条件非线性极小值; ● 求解约束条件非线性极小值,包括目标逼 近问题、极大-极小值问题,以及半无 限极 小值问题;


具体的参数含义如下: fun:代表要优化的目标函数,它的变量为 向量x、返回庄x点处向量值F 。在实际编程 中,fun可以有两种形式:
● 一是fun为一个函数句柄,如
x=fgoalattain(@myfun,x0,goal,weight),其 中myfun是用户自定义的MATLAB函数, 即: function F=myfun(x) F=…%计算函数在x点的值。 ●二是fun为一个内联对象(inline object)。如 x=fgoalattain(inline('sin(x)'), x0, goal, weight);

1951年,T. C. Koopman从生产和分配的的 活动分析中,提出了多目标最优化问题,并 正式使用Pareto最优概念。同年,H. W. Kuhn和A. W. Tucher从数学规划的角度, 提出向量极值的Pareto最优概念,并给出了 有效解的充分必要条件。1963年,L. A. Zadeh又从控制论的角度,提出了多准则问 题。1968年,Z. Johnsen系统地提出了关于 多目标决策模型的研究报告,这是多目标最 优化这门学科开始发展的一个转折点。

多目标规划的一般形式为

或者记为

求解多目标规划的最基本方法为评价函数法 评价函数法的基本思想是:借助于几何或应 用中的直观背景,构造所谓的评价函数,从 而将多目标优化问题转化为单目标优化问题。 然后利用单目标优化的求解方法求出最优解, 并把这种最优解当作多目标规划的最优解。

在MATLAB 6.5优化工具箱中,用于求解多 目标最优化问题的函数有:fgoalattain,用 法介绍如下。


在MATLAB 6.5优化工具箱中.用于求解无 约束非线性规划的函数有:fminsearch和 fminunc,用法介绍如下。 fminsearch函数

【工程应用背景】

【实例分析】
m文件
主程序
结果输出

fminunc函数

【工程应用背景】

【实例分析】
m文件
主程序
结果输出
注意:求解无约束条件下多变量函数的最小值 fminsearch函数和fminunc函数意义相同。
4 约束最优化

由于线性规划和二次规划问题都比较容易求解、 所以人们很自然地想到:把要求解的一般非线性 约束优化问题线性化.然后用线性规划来逐步求 其近似解.这种方法称为线性逼近法或序列线件 规划法(SLP)。但是线性逼近法的精度差,收敛速 度慢,而近二十年二次规划的解法得到很大发展, 有了比较有效的算法,因此近十年来用二次规划 的方法即序列二次规划法获得了突出的进展,成 为当前世界上—最流行的重要的约束优化算法之 一。

规定线性规划的标准型为

上述线性规划问题可简写为

对于标准形式的线性规划的可行解等价于线 性方程组Ax=b的非负解。

在MATLAB 6.5优化工具中,用于求解线性 规划的函数节有linprog,用法如下

程序
结果输出
3 无约束非线性规划

线性规划的目标函数和约束条件部是其自变 量的线性函数,如果目标函数或约束条件中 包含自变量的非线性函数,则这样的规划问 题就属于非线性规划。有些实际问题可以表 达成线性规划问题,但有些实际问题则需用 非线性规划的模型来表达,借助于非线性规 划的解怯来求解。有约束问题与无约束问题 是非线性规划的两大类问题,它们在处理方 法上有明显的不同。


求解一次规划和线性规划问题; ● 非线性最小二乘逼近和曲线拟合: ● 非线性系统的方程求解; ● 约束条件下的线性最小二乘优化; ● 求解复杂结构的大规模优化问题。 说明:优化工县箱中的所有函数都对应于一 个MATLAB 6.5的-M文件,这些-M文件通 过使用MATLAB 6.5的基本语句实现了具体 的优化算法。

options:设置优化选项参数,具体意义解 释如下:
Display 设置显示算法返回值的类别,“off”表示 不实现结果,“iter”表示每次迭 代都显示返回 值,“final”表示只显示最后返回值; ● MaxFunEval:设置算法中函数估计的最大数目; ● MaxIter:设置算法迭代的最大次数; ● TolX:设置使算法终止的Δx值。
结 果 输 出

2 边界约束问题
分析:此问题在非线性约束的基础上增加了变量x
的边界条件,在fmincon函数输入参数中加上lb和ub 参数即可。
结 果 输 出

3 等式问题
结 果 输 出
习题-1
习题-2
习题-3
习题-4
习题-5
习题-6


1 非线性不等式约束
分析:这样的非线性约束优化问题可以用MATLAB
优化工具箱中的fminncon函数来求解.因为约束为非 线性约束,所以不可能将约束条件信息直接包含再函 数的输入参数中,必须编写函数返回在每一个点x处 的约束值,然后再调用优化函数fminncon;
另一方面,fminncon函数要求的约束条 件一般为c(x) ≤ 0,所以将约束改为:
2.2工程优化算法及MATLAB实现
在MATLAB 6.5优化工具箱中,针对无约束 优化问题, fminunc函数使用了拟牛顿法。 【范例分析】 考虑如下问题:求解x=[x1,x2],使得

m文件
主程序
结 果 输 出

在MATLAB 6.5优化工具箱中,针对无约束 优化问题, fmincon、fminimax、 fseminf 和fgoalattain函数使用了SQP(Sequential Quadratic Programming)算法。 【范例分析】 这部分是有约束优化问题的几个例子,并给 出了详细的MATLAB源代码。


在MATLAB 6.5优化工具箱中.用于求解约 束最优化问题的函数有:fminbnd、 fmincon、 fsemcnf、quadprog和fminmax, 用法介绍如下。 fminbnd函数

【工程应用背景】

【实例分析】
m文件
主程序
结果输出

fmincon函数


【工程应用背景】
已知约束条件,求解函数f(x)的极小值,

其中x,b,beq,lb和ub均 是向量;A和Aeq是矩阵; c(x)和ceq (x)是返回值为向 量的函数;f(x)是一个返回 值为标量的函数;而且 c(x) , ceq (x) 和f(x) 可以是非续性 函数。

【实例分析】
相关主题