MATLAB的优化工具箱
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上页 下页 退出
哈 工 程 大 学 数 值 计 算 软 件
非线性最小二乘法求最小值, ●leastsq或lsqnonlin非线性最小二乘法求最小值,即求 或 非线性最小二乘法求最小值 MIN ∑fI2(x)=f(x)Tf(x) x=leastsq(‘fun’,x0)从矩阵 开始寻找最小值; 从矩阵x0开始寻找最小值 从矩阵 开始寻找最小值; x=leastsq(‘fun’x0,options)同上,但允许输入控制参数; 同上, 同上 但允许输入控制参数; 下面是一些例子。 下面是一些例子。 的最小值。 例1 求f(x)=ex1(4x12+2x22+4x1x2+2x2+1)的最小值。 的最小值 先编写一个名为fun.m的M文件,输入具体函数,如下 先编写一个名为 的 文件,输入具体函数,如下: % file name: fun.m function f=fun(x) f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); 然后,在命令行下, 然后,在命令行下,键入 >>x=[-1,1] % 变量 及x2的估计值,即x1=-1,x2=1 变量x1及 的估计值 的估计值, >>x=fminunc(‘fun’,x) %将结果赋值给 将结果赋值给x 将结果赋值给 >>digets(8);vpa(x) % 即x1=0.5000035,x2=-1.0000087时取得极值 时取得极值 ans = [ .50000350, -1.0000087]
上页 下页 退出
上页 下页 退出
% 下界 下界x1=x2=0, 不限定上界
>>x=constr(‘fun’,x,options,vlb,vub);digits(8);vpa(x) 0, 1.5000000]
>>[f,g]=fun(x) % 计算在极值点处函数值及限定条件的值 -10
哈 工 程 大 学 数 值 计 算 软 件
在例2 加入等式限定条件x 例4 在例2中,加入等式限定条件 1+x2=0,重新求解。 ,重新求解。 % 将fun.m 文件改成如下 文件改成如下: function [f,g]=fun(x) f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); g(1)=x(1)+x(2); % 等式条件要放到限定条件的前面 g(2)=1.5+x(1)*x(2)-x(1)-x(2); g(3)=-x(1)*x(2)-10 >>x=[-1,1]; options(13)=1; % 只有一个等式限定条件 >>x=constr(‘fun’,x,options);digits(5);vpa(x) ans = [ -1.2247, 1.2247]
哈 工 程 大 学 数 值 计 算 软 件
MATLAB的优化工具箱 的优化工具箱
目前MATLAB已经有 多个工具箱,例如:通讯工具箱、 已经有30多个工具箱 例如:通讯工具箱、 目前 已经有 多个工具箱, 控制系统工具箱、模糊逻辑工具箱、高阶谱分析工具箱、 控制系统工具箱、模糊逻辑工具箱、高阶谱分析工具箱、图 像处理工具箱、模型预测控制工具箱、神经网络工具箱等等。 像处理工具箱、模型预测控制工具箱、神经网络工具箱等等。 下面我们将介绍常用优化工具箱。首先说明,使用这个工具 下面我们将介绍常用优化工具箱。首先说明, 箱前,必须先安装此工具箱及其相关的PDF或者 或者HTML格式 箱前,必须先安装此工具箱及其相关的 或者 格式 的帮助文件。 的帮助文件。本节将用一些实例说明本工具箱中几个常用的 函数命令用法。 函数命令用法。
上页 下页 退出
哈 工 程 大 学 数 值 计 算 软 件
求多变量函数的最小值, ●fminu或fminunc求多变量函数的最小值,它使用的是拟牛 或 求多变量函数的最小值 顿法。 顿法。 x=fminu('fun',x0)从初值 寻找最小值并将结果赋值给 ,其中 从初值x0寻找最小值并将结果赋值给 从初值 寻找最小值并将结果赋值给x, 目标函数fun由 定义。 目标函数 由fun.m定义。 定义 x=fminu(‘fun’,x0,options)同上,但允许输入参数。Options(1) 同上, 同上 但允许输入参数。 优化计算期间是否输出(0-不输出 不输出, 输出 输出); 优化计算期间是否输出 不输出,1-输出 ;options(2)自变量 自变量 x最低精度的终止判断,默认为 最低精度的终止判断, 最低精度的终止判断 默认为1e-4;options(3)目标函数的终 ; 目标函数的终 止精度,默认为1e-4;options(14)最大迭代次数,默认为自变 最大迭代次数, 止精度,默认为 ; 最大迭代次数 量数目n*100;options(13)等式限定条件的个数;options(18) 等式限定条件的个数; 量数目 ; 等式限定条件的个数 第一次迭代时的初始步长。这些选项对下面的函数也有效, 第一次迭代时的初始步长。这些选项对下面的函数也有效,有 选项的详细信息, 观察。 关options选项的详细信息,请键入“help foptions”观察。 选项的详细信息 请键入“ 观察 带限定条件的目标函数的最小值。 ●constr或fmincon带限定条件的目标函数的最小值。 或 带限定条件的目标函数的最小值 x=constr(‘fun’,x0)从初值 寻找;限定条件为“<=0”的形式; 从初值x0寻找 的形式; 从初值 寻找;限定条件为“ 的形式 x=constr(‘fun’,x0,options)同上,但允许输入控制参数; 同上, 同上 但允许输入控制参数; x=constr(‘fun’,x0,options,vlb,vub)限定 的上下界; 限定x的上下界 限定 的上下界;
上页 下页 退出
哈 工 程 大 学 数 值wenku.baidu.com计 算 软 件
求上例中在条件1.5+x1x2-x1-x2<=0, x1x2+10>=0下最小 例2 求上例中在条件 下最小 值。 先编写一个名为fun.m的M文件,输入具体函数,如下 先编写一个名为 的 文件,输入具体函数,如下: % file name: fun.m function [f,g]=fun(x) % g为限定条件 为限定条件 f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); g(1)=1.5+x(1)*x(2)-x(1)-x(2); g(2)=-x(1)*x(2)-10 %限定条件都输成小于等于零的形式 限定条件都输成小于等于零的形式 在命令窗口中, 在命令窗口中,键入 >>x=[-1,1]; % 变量 及x2的估计值 变量x1及 的估计值 >>x=constr(‘fun’,x);digets(8);x=vpa(x) x= [ -9.5474050, 1.0474050]
上页 下页 退出
哈 工 程 大 学 数 值 计 算 软 件
将例2中的x限定为大于等于零 重新求解。 限定为大于等于零, 例3 将例2中的 限定为大于等于零,重新求解。 >>x=[-1,1];options=[]; % 使用 使用options的缺省选项 的缺省选项 >>vlb=[0,0];vub=[]; ans = [ g= 0 f= 17/2
哈 工 程 大 学 数 值 计 算 软 件
非线性最小二乘法求最小值, ●leastsq或lsqnonlin非线性最小二乘法求最小值,即求 或 非线性最小二乘法求最小值 MIN ∑fI2(x)=f(x)Tf(x) x=leastsq(‘fun’,x0)从矩阵 开始寻找最小值; 从矩阵x0开始寻找最小值 从矩阵 开始寻找最小值; x=leastsq(‘fun’x0,options)同上,但允许输入控制参数; 同上, 同上 但允许输入控制参数; 下面是一些例子。 下面是一些例子。 的最小值。 例1 求f(x)=ex1(4x12+2x22+4x1x2+2x2+1)的最小值。 的最小值 先编写一个名为fun.m的M文件,输入具体函数,如下 先编写一个名为 的 文件,输入具体函数,如下: % file name: fun.m function f=fun(x) f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); 然后,在命令行下, 然后,在命令行下,键入 >>x=[-1,1] % 变量 及x2的估计值,即x1=-1,x2=1 变量x1及 的估计值 的估计值, >>x=fminunc(‘fun’,x) %将结果赋值给 将结果赋值给x 将结果赋值给 >>digets(8);vpa(x) % 即x1=0.5000035,x2=-1.0000087时取得极值 时取得极值 ans = [ .50000350, -1.0000087]
上页 下页 退出
上页 下页 退出
% 下界 下界x1=x2=0, 不限定上界
>>x=constr(‘fun’,x,options,vlb,vub);digits(8);vpa(x) 0, 1.5000000]
>>[f,g]=fun(x) % 计算在极值点处函数值及限定条件的值 -10
哈 工 程 大 学 数 值 计 算 软 件
在例2 加入等式限定条件x 例4 在例2中,加入等式限定条件 1+x2=0,重新求解。 ,重新求解。 % 将fun.m 文件改成如下 文件改成如下: function [f,g]=fun(x) f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); g(1)=x(1)+x(2); % 等式条件要放到限定条件的前面 g(2)=1.5+x(1)*x(2)-x(1)-x(2); g(3)=-x(1)*x(2)-10 >>x=[-1,1]; options(13)=1; % 只有一个等式限定条件 >>x=constr(‘fun’,x,options);digits(5);vpa(x) ans = [ -1.2247, 1.2247]
哈 工 程 大 学 数 值 计 算 软 件
MATLAB的优化工具箱 的优化工具箱
目前MATLAB已经有 多个工具箱,例如:通讯工具箱、 已经有30多个工具箱 例如:通讯工具箱、 目前 已经有 多个工具箱, 控制系统工具箱、模糊逻辑工具箱、高阶谱分析工具箱、 控制系统工具箱、模糊逻辑工具箱、高阶谱分析工具箱、图 像处理工具箱、模型预测控制工具箱、神经网络工具箱等等。 像处理工具箱、模型预测控制工具箱、神经网络工具箱等等。 下面我们将介绍常用优化工具箱。首先说明,使用这个工具 下面我们将介绍常用优化工具箱。首先说明, 箱前,必须先安装此工具箱及其相关的PDF或者 或者HTML格式 箱前,必须先安装此工具箱及其相关的 或者 格式 的帮助文件。 的帮助文件。本节将用一些实例说明本工具箱中几个常用的 函数命令用法。 函数命令用法。
上页 下页 退出
哈 工 程 大 学 数 值 计 算 软 件
求多变量函数的最小值, ●fminu或fminunc求多变量函数的最小值,它使用的是拟牛 或 求多变量函数的最小值 顿法。 顿法。 x=fminu('fun',x0)从初值 寻找最小值并将结果赋值给 ,其中 从初值x0寻找最小值并将结果赋值给 从初值 寻找最小值并将结果赋值给x, 目标函数fun由 定义。 目标函数 由fun.m定义。 定义 x=fminu(‘fun’,x0,options)同上,但允许输入参数。Options(1) 同上, 同上 但允许输入参数。 优化计算期间是否输出(0-不输出 不输出, 输出 输出); 优化计算期间是否输出 不输出,1-输出 ;options(2)自变量 自变量 x最低精度的终止判断,默认为 最低精度的终止判断, 最低精度的终止判断 默认为1e-4;options(3)目标函数的终 ; 目标函数的终 止精度,默认为1e-4;options(14)最大迭代次数,默认为自变 最大迭代次数, 止精度,默认为 ; 最大迭代次数 量数目n*100;options(13)等式限定条件的个数;options(18) 等式限定条件的个数; 量数目 ; 等式限定条件的个数 第一次迭代时的初始步长。这些选项对下面的函数也有效, 第一次迭代时的初始步长。这些选项对下面的函数也有效,有 选项的详细信息, 观察。 关options选项的详细信息,请键入“help foptions”观察。 选项的详细信息 请键入“ 观察 带限定条件的目标函数的最小值。 ●constr或fmincon带限定条件的目标函数的最小值。 或 带限定条件的目标函数的最小值 x=constr(‘fun’,x0)从初值 寻找;限定条件为“<=0”的形式; 从初值x0寻找 的形式; 从初值 寻找;限定条件为“ 的形式 x=constr(‘fun’,x0,options)同上,但允许输入控制参数; 同上, 同上 但允许输入控制参数; x=constr(‘fun’,x0,options,vlb,vub)限定 的上下界; 限定x的上下界 限定 的上下界;
上页 下页 退出
哈 工 程 大 学 数 值wenku.baidu.com计 算 软 件
求上例中在条件1.5+x1x2-x1-x2<=0, x1x2+10>=0下最小 例2 求上例中在条件 下最小 值。 先编写一个名为fun.m的M文件,输入具体函数,如下 先编写一个名为 的 文件,输入具体函数,如下: % file name: fun.m function [f,g]=fun(x) % g为限定条件 为限定条件 f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); g(1)=1.5+x(1)*x(2)-x(1)-x(2); g(2)=-x(1)*x(2)-10 %限定条件都输成小于等于零的形式 限定条件都输成小于等于零的形式 在命令窗口中, 在命令窗口中,键入 >>x=[-1,1]; % 变量 及x2的估计值 变量x1及 的估计值 >>x=constr(‘fun’,x);digets(8);x=vpa(x) x= [ -9.5474050, 1.0474050]
上页 下页 退出
哈 工 程 大 学 数 值 计 算 软 件
将例2中的x限定为大于等于零 重新求解。 限定为大于等于零, 例3 将例2中的 限定为大于等于零,重新求解。 >>x=[-1,1];options=[]; % 使用 使用options的缺省选项 的缺省选项 >>vlb=[0,0];vub=[]; ans = [ g= 0 f= 17/2