机械优化设计(MATLAB的编程教程+习题)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
调用方式二: 在命令窗口中输入: [x,fval]=fminsearch(@demfun1,[0,0]) 得到的结果 X= 1.0016 0.8335 Fval= -3.3241
通过比较发现,当函数的阶数大于2时,使用 fminunc比fminsearch更有效,更精确。而且,当所选 函数高度不连续时,使用fminsearch效果比较好。
1.5 x2 0 x1
最后,调用fmincon函数求解 [X,FVAL]=fmincon(@(x) objfun(x),[1;2],[],[],[],[],[],[],@(x) confun(x))
案例1
薄铁板宽20cm,折成梯形槽,求梯形侧边多 长及底角多大,才会使槽的断面积最大。写出 这一优化设计问题的数学模型。用matlab软件 的优化工具箱求解.
局限性: (1)应用该函数可能会得到局部最优解。 (2)该函数只对实数进行最小化。如果x为复数时,必须将 它分为实数部和虚数部。
3 3 2 y 2 x 4 x x 10 x x x 求解函数 1 1 2 1 2 2 的最小值点。
方法一:直接在MATLAB命令窗口中输入:
[x0,fval]=fminsearch(’2*x(1)^3+4*x(1)*x(2)^310*x(1)*x(2)+x(2)^2’, [0,0]);
调用格式2:[X,FVAL]=FMINUNC(FUN,X0) 这种格式的功能是:同时返回解x和在点x处的目标函数值。
1. 求函数F=sin(x)+3的最小值点。
function f=demfun(x) f=sin(x)+3 然后,在命令窗口中输入: X=fminunc(@demfun,2)
得到
X= 4.7124
无约束优化问题
一维优化问题
一维优化问题的数学模型为:
min
具体的调用格式如下: 调用格式1:
f ( x)
x1 x x2
在matlab中,一维优化问题,也就是一维搜索问题的实现是由函数fminbnd 来实现的。
X=FMINBND(FUN,x1,x2)
这种格式的功能是:返回在区间(x1,x2)中标量函数FUN的最小值。
根据题意,该无盖箱子的长和宽均为6-2x,高 为x,取设计变量x 根据长方体容积表达式,得: 建立约束优化问题数学模型得
min s.t f x x (6 2 x ) 2 g1 x 3 0 g2 x 0
Matlab程序一: [x,xfval]=fminbnd(‘-x*(6-2*x)^2’,0,3)
方法二:在MATLAB的M编辑器中建立函数文件用来保存所要 求解最小值的函数:
Function f=demfun1(x) f= 2*x(1)^3+4*x(1)*x(2)^3-10*x(1)*x(2)+x(2)^2; 保存为demfun1.m。
然后,在命令窗口中调用该函数,这里有两种调用方式:
调用方式一: 在命令窗口中输入: [x,fval]=fminsearch(‘demfun1’,[0,0])
xopt = 6.6667 60.0001
fopt =
-57.7350
function f=fun1(x) a=pi/180; f=-(20-2*x(1))*x(1)*sin(x(2)*a)x(1)^2*sin(x(2)*a)*cos(x(2)*a); >>x0=[1,10]';lb=[0,0]';ub=[20,90]'; >> [x,fmin]=fmincon(@fun1,x0,[],[],[],[],lb,ub)
调用格式2:
[X,FVAL]=FMINDBND(FUN,x1,x2)
这种格式的功能是:同时返回解x和在点x处的目标函数值。
案例
如图,有一块边长为6m的正方形铝板,四角 截去相等的边长为x的方块并折转,造一个无 盖的箱子,问如何截法(x取何值)才能获得 最大容器的箱子,只写出这一优化问题的数学 模型。用matlab软件的优化工具箱求解。
2 2 y 5 x x 求函数 1 2 的极小点。
在命令窗口中 输入 X=fminunc(@(x) 5*x(1)^2+x(2)^2,[5;1])
x= 1.0e-006 * -0.7898
-0.0702
2. Fmபைடு நூலகம்nsearch
Fminsearch使用单纯形法,一种直接搜索的方法。 调用格式1: X=FMINSEARCH(FUN,X0) 这种格式的功能是:给定起始点X0,求函数FUN的局 部极小点X。其中,X0可以使一个标量、向量或者矩 阵。 调用格式2: [X,FVAL]=FMINSEARCH(FUN,X0) 这种格式的功能是:同时返回解x和在点x处的目标函 数值。
约束优化问题
1.线性规划
一般的约束非线性最优化问题
约束非线性最优化是指目标函数和约束函数都是定义在n维欧 几里得空间上的实值连续函数,并且至少有一个是非线性的。
X=fmincon(fun,x0,A,B,Aeq,Beq,LB,UB,NONLCON) 这个函数格式同上,同时,约束中增加由函数NONLCON定义的非线性约束条件, 在函数NONLCON的返回值中包含非线性等式约束Ceq(X)=0和非线性不等式 C(X)<=0。其中,C(X)和Ceq(X)均为向量。
Matlab程序二: 首先编写m文件
function f=volf(x)
f=-(6-2*x)^2*x
然后,调用fminbnd函数求解
[X,FVAL]=fminbnd(@volf,0,3)
无约束非线性规划问题
在MATLAB优化工具箱函数中,有以下两个函数用来求解上述问题: fminunc、fminsearch 1. Fminunc 调用格式1:X=FMINUNC(FUN,X0) 这种格式的功能是:给定起始点X0,求函数FUN的局部极小点X。 其中,X0可以是一个标量、向量或者矩阵。
解 取梯形侧边和底角作为设计变量,分别为x1, x2。建立优化问题的数学模型如下:
min((20 2 x1 ) x1 sin x 2 x12 sin x 2 cos x 2 ) s.t. x1 0 x1 20 0 x2 0 x 2 90 0
符号表示法
fun='-(20-2*x(1))*x(1)*sin(x(2)*pi/180)x(1)^2*sin(x(2)*pi/180)*cos(x(2)*pi/180)'; x0=[1,10]';lb=[0,0]';ub=[20,90]'; [xopt,fopt]=fminsearch(fun,x0)
求解如下形式的约束非线性规划问题
2 min 5 x12 2 x2
s.t.
目标函数文件 function f=objfun(x) f=5*x(1)^2+2*x(2)^2 约束函数文件 function [c,ceq]=confun(x) c=1.5/x(1)-x(2); Ceq=[];
首先,编制两个函数文件,分别保存目标函数和约束函数
通过比较发现,当函数的阶数大于2时,使用 fminunc比fminsearch更有效,更精确。而且,当所选 函数高度不连续时,使用fminsearch效果比较好。
1.5 x2 0 x1
最后,调用fmincon函数求解 [X,FVAL]=fmincon(@(x) objfun(x),[1;2],[],[],[],[],[],[],@(x) confun(x))
案例1
薄铁板宽20cm,折成梯形槽,求梯形侧边多 长及底角多大,才会使槽的断面积最大。写出 这一优化设计问题的数学模型。用matlab软件 的优化工具箱求解.
局限性: (1)应用该函数可能会得到局部最优解。 (2)该函数只对实数进行最小化。如果x为复数时,必须将 它分为实数部和虚数部。
3 3 2 y 2 x 4 x x 10 x x x 求解函数 1 1 2 1 2 2 的最小值点。
方法一:直接在MATLAB命令窗口中输入:
[x0,fval]=fminsearch(’2*x(1)^3+4*x(1)*x(2)^310*x(1)*x(2)+x(2)^2’, [0,0]);
调用格式2:[X,FVAL]=FMINUNC(FUN,X0) 这种格式的功能是:同时返回解x和在点x处的目标函数值。
1. 求函数F=sin(x)+3的最小值点。
function f=demfun(x) f=sin(x)+3 然后,在命令窗口中输入: X=fminunc(@demfun,2)
得到
X= 4.7124
无约束优化问题
一维优化问题
一维优化问题的数学模型为:
min
具体的调用格式如下: 调用格式1:
f ( x)
x1 x x2
在matlab中,一维优化问题,也就是一维搜索问题的实现是由函数fminbnd 来实现的。
X=FMINBND(FUN,x1,x2)
这种格式的功能是:返回在区间(x1,x2)中标量函数FUN的最小值。
根据题意,该无盖箱子的长和宽均为6-2x,高 为x,取设计变量x 根据长方体容积表达式,得: 建立约束优化问题数学模型得
min s.t f x x (6 2 x ) 2 g1 x 3 0 g2 x 0
Matlab程序一: [x,xfval]=fminbnd(‘-x*(6-2*x)^2’,0,3)
方法二:在MATLAB的M编辑器中建立函数文件用来保存所要 求解最小值的函数:
Function f=demfun1(x) f= 2*x(1)^3+4*x(1)*x(2)^3-10*x(1)*x(2)+x(2)^2; 保存为demfun1.m。
然后,在命令窗口中调用该函数,这里有两种调用方式:
调用方式一: 在命令窗口中输入: [x,fval]=fminsearch(‘demfun1’,[0,0])
xopt = 6.6667 60.0001
fopt =
-57.7350
function f=fun1(x) a=pi/180; f=-(20-2*x(1))*x(1)*sin(x(2)*a)x(1)^2*sin(x(2)*a)*cos(x(2)*a); >>x0=[1,10]';lb=[0,0]';ub=[20,90]'; >> [x,fmin]=fmincon(@fun1,x0,[],[],[],[],lb,ub)
调用格式2:
[X,FVAL]=FMINDBND(FUN,x1,x2)
这种格式的功能是:同时返回解x和在点x处的目标函数值。
案例
如图,有一块边长为6m的正方形铝板,四角 截去相等的边长为x的方块并折转,造一个无 盖的箱子,问如何截法(x取何值)才能获得 最大容器的箱子,只写出这一优化问题的数学 模型。用matlab软件的优化工具箱求解。
2 2 y 5 x x 求函数 1 2 的极小点。
在命令窗口中 输入 X=fminunc(@(x) 5*x(1)^2+x(2)^2,[5;1])
x= 1.0e-006 * -0.7898
-0.0702
2. Fmபைடு நூலகம்nsearch
Fminsearch使用单纯形法,一种直接搜索的方法。 调用格式1: X=FMINSEARCH(FUN,X0) 这种格式的功能是:给定起始点X0,求函数FUN的局 部极小点X。其中,X0可以使一个标量、向量或者矩 阵。 调用格式2: [X,FVAL]=FMINSEARCH(FUN,X0) 这种格式的功能是:同时返回解x和在点x处的目标函 数值。
约束优化问题
1.线性规划
一般的约束非线性最优化问题
约束非线性最优化是指目标函数和约束函数都是定义在n维欧 几里得空间上的实值连续函数,并且至少有一个是非线性的。
X=fmincon(fun,x0,A,B,Aeq,Beq,LB,UB,NONLCON) 这个函数格式同上,同时,约束中增加由函数NONLCON定义的非线性约束条件, 在函数NONLCON的返回值中包含非线性等式约束Ceq(X)=0和非线性不等式 C(X)<=0。其中,C(X)和Ceq(X)均为向量。
Matlab程序二: 首先编写m文件
function f=volf(x)
f=-(6-2*x)^2*x
然后,调用fminbnd函数求解
[X,FVAL]=fminbnd(@volf,0,3)
无约束非线性规划问题
在MATLAB优化工具箱函数中,有以下两个函数用来求解上述问题: fminunc、fminsearch 1. Fminunc 调用格式1:X=FMINUNC(FUN,X0) 这种格式的功能是:给定起始点X0,求函数FUN的局部极小点X。 其中,X0可以是一个标量、向量或者矩阵。
解 取梯形侧边和底角作为设计变量,分别为x1, x2。建立优化问题的数学模型如下:
min((20 2 x1 ) x1 sin x 2 x12 sin x 2 cos x 2 ) s.t. x1 0 x1 20 0 x2 0 x 2 90 0
符号表示法
fun='-(20-2*x(1))*x(1)*sin(x(2)*pi/180)x(1)^2*sin(x(2)*pi/180)*cos(x(2)*pi/180)'; x0=[1,10]';lb=[0,0]';ub=[20,90]'; [xopt,fopt]=fminsearch(fun,x0)
求解如下形式的约束非线性规划问题
2 min 5 x12 2 x2
s.t.
目标函数文件 function f=objfun(x) f=5*x(1)^2+2*x(2)^2 约束函数文件 function [c,ceq]=confun(x) c=1.5/x(1)-x(2); Ceq=[];
首先,编制两个函数文件,分别保存目标函数和约束函数