MATLAB优化工具箱的使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• 其中,UserFunction是求解目标函数f的函 数文件名,参数x0表示x的起始值,是向量, options为optimset定义的参数赋值。P1, p2等为传递给UserFunction的参数。
• 调用fminsearch的命令如下:
• X=fminsearch(@UserFunction,x0,options,p1,p2,…) • 其中,各参数的定义与fminunc一致。
• contour(X,Y,g,[e,e],'r'); • 画等高线,r为红色
极大值
极小值 左图为PE的等高线图,图上标出了每条等高线的数值,从图中可以清楚的找到 极小值、极大值的分布。右图中上面是三维图,下面是等高线图,图中也彪出 了极小值、极大值所在点的近似位置,在该点PE目标函数取得极小值、极大值。
调用的函数
以上程序用于求解最小值
• 求最大值程序如下:
• function Twospring
主函数
• x0=[0.5,5];
• k1=8.8;k2=1.1;L1=11;L2=11;F1=4.5;F2=4.5;
• options=optimset('largeScale','off');
• [x,f]=fminunc(@SpringEquilibriumMax,x0,options,k1,k2,L1,L2,F1,F2)
• function PE=SpringEquilibrium(x,k1,k2,L1,L2,F1,F2); • PE1=1/2*k1*(sqrt(x(1).^2+(L1-x(2)).^2)-L1).^2; • PE2=1/2*k2*(sqrt(x(1).^2+(L2+x(2)).^2)-L2).^2; • PE=PE1+PE2-F1*x(1)-F2*x(2)
• function PE=SpringEquilibriumMax(x,k1,k2,L1,L2,F1,F2); 调用的函数
• PE1=1/2*k1*(sqrt(x(1).^2+(L1-x(2)).^2)-L1).^2;
• PE2=1/2*k2*(sqrt(x(1).^2+(L2+x(2)).^2)-L2).^2;
• 应用举例:
• 编程实现如下:
• f=[-4,-5]; • A=[1,1;1.25,0.75;0,1]; • b=[200,200,150]; • lb=[0 0]; • x=linprog(f,A,b,[],[],lb,[])
2、非线性规划函数
一、无约束优化 无约束非线性规划(nonlinear programming)方法是确
• x=linspace(1,3,5),既x=[1 1.5 2 2.5 3]
• subplot是将多个图画到一个平面上的工具。其中,m表示是图排成m 行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一 共m行,如果第一个数字是2就是表示2行图。p是指你现在要把曲线 画到figure中哪个图上,最后一个如果是1表示是从左到右第一个位置。
MATLAB优化工具箱的使用
MATLAB优化问题的函数
• 1、线性规划函数
• Linprog用于解决线性规划问题(优化问题中目标函数和约束函数均为设计变量 的线性函数)
• 线性规划问题可描述为:
• f,b,beq,lb,ub为向量,A和Aeq为矩阵,x为一设计向量的变量, 上标T表示转置,矩阵A和向量b是线性不等式约束条件的系数, Aeq和beq是等式约束的条件的系数。
• 其使用格式如下 : • [xopt,fopt]=linprog(f,A,b,Aeq,beq,lb,ub,x0,options) • 该函数返回一设计向量变量xopt=[x1,x2,……]和标量 • f(x),x0为x的起点,options为optimset函数中定一的参 • 数的值。如果没有等式约束条件,则令Aeq=[],beq=[]。
• meshgrid 的使用方法: • [X,Y] = meshgrid(x,y) 将向量x和y定义的区域转换成矩阵X和Y,这两
个矩阵可以用来表示mesh和surf的三维空间点以及两个变量的赋值。 其中矩阵X的行向量是向量x的简单复制,而矩阵Y的列向量是向量y 的简单复制。
• [x1,x2]=meshgrid(linspace(-5,15,2),linspace(-5,15,2)) • x1 = • -5 15 • -5 15 • x2 = • -5 -5 • 15 15
• PE=-(PE1+PE2-F1*x(1)-F2*x(2))
Hale Waihona Puke Baidu
要获得PE函数的极大值,可通过求 (1/PE)或(-PE)函数的最优解
以上函数用于求解最大值
• 二、fminsearch
min imizef ( x1, x2) (C 1) / 8 C 1 ( A2 B2 3) sin( A2 B2 2)
定下列函数 min imize (x) x
这里,x为设计变量,f为一标量目标函数。解决上述问题 可有两个函数实现fminunc函数和fminsearch函数。其中, fminunc函数基于梯度搜索法实现,而fminsearch函数基 于直接搜索法实现。 调用fminunc的命令如下:
[xopt,fopt]=fminunc(@UserFunction,x0,options,p1,p2,…)
以下是用fminsearch解题:
• x0=[0.2,0.8]; • bottle=inline('-(((6*x(1)-3)^2+(6*x(2)-3)^2+3)/2+sinc((6*x(1)-3)^2+(6*x(2)-
3)^2+2)+1)/8','x'); • options=optimset('Large','off'); • [x,f]=fminsearch(bottle,x0,options)
另一个曲线拟合函数,lsqnonlin函数,其拟 合方式为最小二乘法。
min imize x
i
[ fi (x)]2
其调用方式为:
[xopt,resnorm] lsqnonlin(@UserFunction, x0,lb,ub,options, p1, p2,...)
UserFunction为求解目标函数的文件名,也可以用inline创建需要多个输 入参数的函数,只须在inline语句中定义表达式的同时列出输入参数 的名称。参数x0为起始值,xdata和ydata分别为输入/输出向量, options为由optimset定义的参数赋值。参数lb和ub为向量,分别表示 x的下界和上界。如不需要lb和ub参数,其后跟空矩阵符号[]。 Options参数后跟空矩阵符号[]时,表示用其默认值。p1,p2等为传递 给UserFunction的参数。
• 应用实例: a bln

• 这是应力-应变数据表
• sigma=[925,1125,1625,2125,2625,3125,3625]; • epsilon=[0.11,0.16,0.35,0.48,0.61,0.71,0.85]; • x0=[0.1,0.1]; • SigmaEpsilonFit=inline('x(1)+x(2)*log(sigma)','x','sigma'); • [x,resnorm]=lsqcurvefit(SigmaEpsilonFit,x0,sigma,epsilon)
2 A 6 x1 3 B 6x2 3 0 ( x1, x2) 1
• 程序如下:
• [x1,x2]=meshgrid(linspace(0,1,50),linspace(0,1,50));
• A=6*x1-3;B=6*x2-3; • C=(A.^2+B.^2+3)./2+sin(A.^2+B.^2+2); • bottle=(C+1)/8; • colormap([1 1 1]); • surf(x1,x2,bottle); • zlabel('f'); • xlabel('x_1'); • ylabel('x_2'); • view(-10,45) • 以上是图解法
s.t.: x1 x x2
• 优化函数为fminbnd,其调用格式为:
• 最小二乘法公式:
7
min imize a,b
1
[i (a b ln i )]2
• 拟合程序如下:
• sigma=[925,1125,1625,2125,2625,3125,3625]; • epsilon=[0.11,0.16,0.35,0.48,0.61,0.71,0.85]; • x0=[0.1,0.1]; • SigmaEpsilonLeastSq=inline('epsilon-
(x(1)+x(2)*log(sigma))','x','sigma','epsilon'); • [x,resnorm]=lsqnonlin(SigmaEpsilonLeastSq,x0,[],[],[],sigma,epsilon)
• 3、单目标约束优化 • 单变量优化
min imize f (x) x
• 二、曲线拟合
• Lsqcurvefit函数用于曲线拟合,其调用格式 如下:
• [xopt,resnorm]=lsqcurvefit(@UserFunction,x0,xdata,ydata,lb,ub,opti ons,p1,p2,…)
• 其中,xopt为x的最优解,resnorm是残差,其欧几里得范数如下:
应用举例: 一、fminunc
min imizePE(x1, x2) 0.5k1( x12 (L1 x2)2 L1)2
x1, x 2
0.5k2( x12 (L2 x2)2 L2)2 F1x1 F 2x2
• 首先我们用图解法来解,结果如下:
• 程序如下: • k1=8.8;k2=1.1;L1=11;L2=11;F1=4.5;F2=4.5; • [x1,x2]=meshgrid(linspace(-5,15,15),linspace(-5,15,15)); • PE1=1/2*k1*(sqrt(x1.^2+(L1-x2).^2)-L1).^2; • PE2=1/2*k2*(sqrt(x1.^2+(L2+x2).^2)-L2).^2; • PE=PE1+PE2-F1*x1-F2*x2; • subplot(1,2,1); • h=contour(x1,x2,PE,[-40:10:20,50:100:500],'k'); • clabel(h); • axis([-5,15,-5,15]); • xlabel('x_1'); • ylabel('x_2'); • subplot(1,2,2); • surfc(x1,x2,PE); • axis([-10,15,-10,15,-100,500]); • zlabel('PE'); • xlabel('x_1'); • ylabel('x_2');
• 用fminunc解此题:
• 程序如下:
• function Twospring
主函数
• x0=[0.5,5];
• k1=8.8;k2=1.1;L1=11;L2=11;F1=4.5;F2=4.5; • options=optimset('largeScale','off');
使用中规模优化算法
• [x,f]=fminunc(@SpringEquilibrium,x0,options,k1,k2,L1,L2,F1,F2)
( f (xdata ) ydata )2
• UserFunction为求解目标函数的文件名,也可以用inline创建需要多个 输入参数的函数,只须在inline语句中定义表达式的同时列出输入参 数的名称。参数x0为起始值,xdata和ydata分别为输入/输出向量, options为由optimset定义的参数赋值。参数lb和ub为向量,分别表示 x的下界和上界。如不需要lb和ub参数,其后跟空矩阵符号[]。 Options参数后跟空矩阵符号[]时,表示用其默认值。p1,p2等为传递 给UserFunction的参数。
相关文档
最新文档