当前位置:文档之家› 利用Matlab求解机械设计优化问题的讲解

利用Matlab求解机械设计优化问题的讲解

利用Matlab求解机械设计优化问题的讲解
利用Matlab求解机械设计优化问题的讲解

利用MATLAB求解机械设计优化问题的分析

周婷婷

(能源与动力学院,油气0701)

摘要:MATLAB是目前国际上最流行的科学与工程计算的软件工具, 它具有强大的数值分析、矩阵运算、信号处理、图形显示、模拟仿真和最优化设计等功能。本文浅谈MATLAB在机械设计优化问题的几点应用。

关键词:MATLAB 约束条件机械设计优化

引言:在线性规划和非线性规划等领域经常遇到求函数极值等最优化问题,当函数或约束条件复杂到一定程度时就无法求解,而只能求助于极值分析算法,如果借助计算器进行手工计算的话,计算量会很大,如果要求遇到求解极值问题的每个人都去用BASIC,C和FORTRAN之类的高级语言编写一套程序的话,那是非一朝一日可以解决的,但如用MATLAB语言实现极值问题的数值解算,就可以避免计算量过大和编程难的两大难题,可以轻松高效地得到极值问题的数值解,而且可以达到足够的精度。

1无约束条件的极值问题的解算方法

设有Rosenbrock函数如下:

f(X1,X2)=100(X2-X1*X1)2+(1-X1)2

求向量X取何值时,F(x)的值最小及最小值是多少?

先用MATLAB语言的编辑器编写求解该问题的程序如下:

%把函数写成MATLAB语言表达式

fun=’100*(X(2)-X(1)*X(1)2+(1-X(1))2

%猜自变量的初值

X0=[-1 2]; %所有选项取默认值

options=[ ];

%调用最优化函数进行计算。

%函数最小值存放在数组元素options(8)中

%与极值点对应的自变量值存放在向量X里

%计算步数存放在数组元素options(10)中

[X,options]=fmins(fun,X0,options);

%显示与极值点对应的自变向量X的值。

%显示函数最小值

options(8)

%显示函数计算步数

options(10)

把上面这段程序保存为m文件,然后用“Tools”菜单中的“Run”命令行这段程序,就可以轻松的得到如下结果:

X=9.999908938395383e-001

9.99982742178110e-001

ans=1.706171071794760e-001

ans=195

显然,计算结果与理论结果的误差小到e-10级,这里调用了MATLAB的最优化函数fmins(),它采用Nelder-Mead的单纯形算法,就是因为这个函数的采用,使最小值问题的解算变得非常简单。

2.带约束条件的极值问题的解法

设目标函数和约束条件如下:

f(x) =-3X1+X2+X3

-X1+2X2-X3>= -11

4X1-X2-2X3<=-3

2X1-X3= -1

X1>=0,X2>=0,X3>=0;

求X向量取何值时函数取极小值?

对条件极值问题通常的做法都是将约束条件标准化(即把等式约束条件写成等号为0的形式,把不等式写成<=0的形式)。然后把条件极值问题转换为非条件极值问题,MATLAB也采用同样的做法。

下面是求解该问题的MATLAB语言程序。

funf =’f=-3*X(1)+X(2)+X(3);’%写出目标函数表达式。

fung=’g=[2*X(1)-X(3)+1;X(1)-2*X(2)+X(3)-11;4*X(1)-X(2)-2*X(3)+3];’%把约束条件标准化,写成向量函数。注意等式约束条件要放在前面。

fun=[funf ,fung] %把目标函数表达式和约束条件表达式合成一个向量函数。

X0=[101] %猜初值

options= [ ]

options[13]=1 %在options(13)中指定等式约束条件的个数。

vlb =zeros(1,3); %指定向量X的下界为0。

vub =[ ]; %对向量的上界不做要求。

[X,options]=constr(fun,X0,options,Vlb,Vlb); %调constr()函数%显示与极值点对应的X 向量值。

options(8) %显示极小值

options(10) %显示计算次数

g=[2*X(1)-X(3)+1;X(1)-2*X(2)+X(3)-11;4*X(1)-X(2)-2*X(3)+3] %显示约束条件表达式的取值。

运行这段MATLAB程序得到如下结果:

X=4.000000000000000e+000

1.00000000000000le+000

9.000000000000005e+000

ans=-1.99999999999999le+000

ans=17

g=-6.21724522790877e-015

1.77635683940025le-015

-1.421085471520200e-014

显然,计算结果是非常精确的,这里调用了MATLAB的最优化函数constr(),它是专门用来解算条件极值问题的。

3.机械优化设计应用实例

机械优化设计把数学规划理论与数值方法应用于设计中,用计

算机从大量可行方案中找出最优化设计方案,从而大大提高设计质

量和设计效率。MATLAB 具有解决线性规划和非线性规划、约束

优化和无约束优化问题的内部函数,因而可以完成这一功能。

现举一例:螺栓组联结的优化设计

如图4所示的压力容器螺栓组联接中,已知D 1= 400mm,D 2 =

250mm ,缸内工作压力为p=1.5 MPa ,螺栓材料为35号钢,σs =320Mpa,安全系数S=3,取残余预紧力Q ’p =1.6F,采用铜皮石棉密封垫片。现从安全、可靠、经济的角度来选择螺栓的个数n 和螺栓的直径d 。

3.1 设计问题分析

若从经济性考虑,螺栓数量尽量少些、尺寸小些,但这会使降低联结的强度和密封性,不能保证安全可靠的工作;若从安全、可靠度考虑,螺栓数量应多一些、尺寸大一些为好,显然经济性差,甚至造成安装扳手空间过小,操作困难。为此,该问题的设计思想是:在追求螺栓组联结经济成本最小化的同时,还要保证联结工作安全、可靠。

3 .2 设计变量 目标函数 约束条件

3.2 .1 设计变量 选取螺栓的个数n 和直径d(mm)为设计变量:

T 21T ]x [x ]d [n X ==

3.2 .2 目标函数 追求螺栓组联结经济成本C n 最小为目标。而当螺栓的长度、材料和加工条件一定时,螺栓的总成本与nd 值成正比,所以本问题优化设计的目标函数为

min F(X) = C n = n d = x 1x 2

① 强度约束条件 为了保证安全可靠地工作,螺栓组联结必须满足强度条件

][32.521σπσ≤=d Q

ca ; 其中Mpa S s 106.

3320][===σσ; n n p n D F F F F Q Q p πππ6093742505.16.246.26.26.12

22'

=?=?==+=+= N ;

对于粗牙普通螺纹:由文献[3]推荐,小径 d 1=0.85d 所以,强度约束条件为:

0106146192106146192106105624)(22

12211≤-=-=-=x x nd nd X g ② 密封约束条件 为了保证密封安全,螺栓间距应小于10d ,所以,密封约

束条件为:01040010)(21

12≤-=-=x x d n D X g ππ ③ 安装扳手空间约束条件 为了保证足够的扳手空间,螺栓间距应大于5d ,所以,安装约束条件为:040055)(1

21

3≤-=-=x x n D d X g ππ ④ 边界约束条件 0)(14≤-=x X g ;0)(25≤-=x X g

3.3 .3 建立数学模型

综上所述,本问题的数学模型可表达为:

设计变量:T 21]x [x X =

目标函数:min F(X) = x 1x 2

约束条件: s.t. 0)(≤X g i ( i = 1, 2, 3, 4, 5,)

现运用MATLAB 的优化函数进行求解 :

先编写M 文件

function [c,ceq]=mynas(x)

c(1)=146192/(x(1)*x(2)^2)-106; % 非线性不等式约束

c(2)=400*pi/x(1)-10*x(2);

c(3)=-400*pi/x(1)+5*x(2);

ceq=[]; % 非线性等式约束

在MATLAB 命令窗口输入:

fun='x(1)*x(2)'; % 目标函数

x0=[4,6]; % 设计变量初始值

A=[-1,0;0,-1]; % 线性不等式约束矩阵

b=[0;0];

Aeq=[]; % 线性等式约束矩阵

beq=[];

lb=[]; % 边界约束矩阵

ub=[];

[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,@mynlsub) % 调用有约束

优化函数

运行结果如下:

x = 11.4499 10.9751

fval = 125.6637

所以,该问题优化结果为:n =11.4499 ,d = 10.9751,目标函数最小值:

F(X)= 125.6637。根据实际问题的意义取整、标准化:n =12 ,d = 12。

由此例可以看出,与其它编程语言相比,MATLAB语言可以简化编程。

图5是调用MATLAB绘图函数自动对上例绘制的数学模型要素图(标注数字的曲线为目标函数的等值线),为此

在MATLAB命令窗口输入:

x1=0.1:20;

y1=146192./(106.*x1.^2);

y2=400.*pi./(10.*x1);

y3=400.*pi./(5.*x1);

plot(y1,x1,y2,x1,y3,x1,x(1),x(2),'o')

y4=0.1:0.1:20;

[y4,x1]=meshgrid(y4,x1);

Q=y4.*x1;

hold on;

[c,h]=contour(y4,x1,Q);

hold on;

clabel(c,h) ;

4.结束语

从上述实例可以看出,利用求解最优化问题具有编程简单,精度很高,速度很快,各种工形式的最优化问题都适用等优点,巧妙各种利用MATLAB语言可以取得事半功倍的效果。MATLAB具有科学计算的强大能力,不管处理什么样的对象——算法、图形、图像、报告或者算法仿真—— MATLAB 都能够帮助大家不断提高工作效率。MATLAB 环境能够完成算法开发、数据分析和可视化、高性能数据分析等工作,相对于传统的 C 、C++ 或者FORTRAN 语言,在MATLAB 中完成这些工作所消耗的时间仅仅是传统手段的极小一部分。开放性的MATLAB 软件和开发语言——M 语言,能够快速实现用户好的想法和概念。

MATLAB 本身包含了600 余个用于数学计算、统计和工程处理的函数,这样,就可以迅速完成科学计算任务而不必进行额外的开发。业内领先的工具箱算法极大的扩展了MATLAB 的应用领域,例如信号处理,数字图像处理、数据分析和统计以及算法建模和仿真等。MATLAB 的工具箱都是业内的专家、工程师结合多年来的经验和专业知识,专门开发的用户处理特殊数学计算、分析和图形可视化的功能函数集合。利用这些工具箱,用户可以通过对比应用一系列不同的算法,而避免了应用程序的开发。

使用MATLAB 软件进行科学计算,能够极大加快科研人员进行研究开发的进度,减少在编写程序和开发算法方面所消耗的时间和有限的经费,从而获得最大的效能。

参考文献

1.薛定宇《控制系统计算机辅助设计---MATLAB语言及应用》,清华大学出版社,1996

2.濮良贵《机械零件》北京.高等教育出版社。

3.蒲俊,吉家锋《MATLAB数学手册》上海.浦东电子出版社,2002。

4.黄华梁彭文生《机械设计基础》高等教育出版社

利用MATLAB求解机械设计优化问题的分析

学院:能源与动力工程学院

班级:油气0701

姓名:周婷婷

学号:0120705690137

matlab优化设计

MATLAB优化设计 学院:机电学院 专业:机械设计制造及其自动化 班级:072&&&-** 学号:20131****** 姓名:大禹 指导老师:祯 2015年10月25日

题目 1 1、求解如下最优化问题 步骤一:对已有的数学模型matlab 编程 1. 编写.m 文件并保存: h=[2 ,-2;-2, 4]; %实对称矩阵 f=[-2;-6]; %列向量 a=[1, 1;-1, 2]; %对应维数矩阵 b=[2;2]; %列向量 lb=zeros(2, 1); [x,value]=quadprog(h, f, a ,b ,[] ,[], lb) 2. 运行.m 文件结果如图1.0所示: subject to 2 21≤+x x 22-21≤+x x 0 21≥x x ,2 2 2121212262)(m in x x x x x x x f +-+--=

图1.0题目一文件运行结果 步骤二:matlab运行结果分析阶段 由图1.0知,当x1=0.8,x2=1.2时,min f (x)= -7.2。 题目 2 2、某农场拟修建一批半球壳顶的圆筒形谷仓,计划每座谷仓容积为300立方米,圆筒半径不得超过3米,高度不得超过10米。半球壳顶的建筑造价为每平方米150元,圆筒仓壁的造价为每平方米120元,地坪造价为每平方米50元,求造价最小的谷仓尺寸为多少?

步骤一:题目分析阶段 设:圆筒的半径为R,圆筒的高度为H 。 谷仓的容积为300立方米,可得: 3003 232=+R H R ππ 圆筒高度不得超过10米,可得: 100≤≤H 圆筒半径不得超过3米,可得: 30≤≤R 当造价最小时: 2225021202150),(m in R H R R H R f πππ+?+?= 步骤二:数学模型建立阶段 2 225021202150),(m in R H R R H R f πππ+?+?=

应用matlab求解约束优化问题

应用matlab求解约束优化问题 姓名:王铎 学号: 2007021271 班级:机械078 上交日期: 2010/7/2 完成日期: 2010/6/29

一.问题分析 f(x)=x1*x2*x3-x1^6+x2^3+x2*x3-x4^2 s.t x1-x2+3x2<=6 x1+45x2+x4=7 x2*x3*x4-50>=0 x2^2+x4^2=14 目标函数为多元约束函数,约束条件既有线性约束又有非线性约束所以应用fmincon函数来寻求优化,寻找函数最小值。由于非线性不等式约束不能用矩阵表示,要用程序表示,所以创建m文件其中写入非线性不等式约束及非线性等式约束,留作引用。 二.数学模型 F(x)为目标函数求最小值 x1 x2 x3 x4 为未知量 目标函数受约束于 x1-x2+3x2<=6 x1+45x2+x4=7 x2*x3*x4-50>=0 x2^2+x4^2=14 三.fmincon应用方法 这个函数的基本形式为 x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) 其中fun为你要求最小值的函数,可以单写一个文件设置函数,也可是m文件。 1.如果fun中有N个变量,如x y z, 或者是X1, X2,X3, 什么的,自己排个顺序,在fun中统一都是用x(1),x(2)....x(n) 表示的。 2. x0, 表示初始的猜测值,大小要与变量数目相同 3. A b 为线性不等约束,A*x <= b, A应为n*n阶矩阵。 4 Aeq beq为线性相等约束,Aeq*x = beq。 Aeq beq同上可求 5 lb ub为变量的上下边界,正负无穷用 -Inf和Inf表示, lb ub应为N阶数组 6 nonlcon 为非线性约束,可分为两部分,非线性不等约束 c,非线性相等约束,ceq 可按下面的例子设置 function [c,ceq] = nonlcon1(x) c = [] ceq = [] 7,最后是options,可以用OPTIMSET函数设置,具体可见OPTIMSET函数的帮助文件。 四.计算程序

机械优化设计MATLAB程序文件

机械优化设计作业1.用二次插值法求函数()()()22 ?极小值,精度e=0.01。 t t =t 1- + 在MATLAB的M文件编辑器中编写的M文件,如下: f=inline('(t+1)*(t-2)^2','t') a=0;b=3;epsilon=0.01; t1=a;f1=f(t1); t3=b;f3=f(t3); t2=0.5*(t1+t3);f2=f(t2); c1=(f3-f1)/(t3-t1); c2=((f2-f1)/(t2-t1)-c1)/(t2-t3); t4=0.5*(t1+t3-c1/c2);f4=f(t4); k=0; while(abs(t4-t2)>=epsilon) if t2f4 f1=f2;t1=t2; t2=t4;f2=f4; else f3=f4;t3=t4; end else if f2>f4 f3=f2;t3=t2; t2=t4;f2=f4; else f1=f4;t2=t4; end end c1=(f3-f1)/(t3-t1); c2=((f2-f1)/(t2-t1)-c1)/(t2-t3); t4=0.5*(t1+t3-c1/c2);f4=f(t4); k=k+1; end %输出最优解 if f2>f4 t=t4;f=f(t4); else t=t2;f=f(t2); end fprintf(1,'迭代计算k=%3.0f\n',k) fprintf(1,'极小点坐标t=%3.0f\n',t) fprintf(1,'函数值f=%3.4f\n',f)

运行结果如下: 迭代计算k= 7 极小点坐标t= 2 函数值f=0.0001 2.用黄金分割法求函数()32321+-=t t t ?的极小值,精度e=0.01。 在MATLAB 的M 文件编辑器中编写的M 文件,如下: f=inline('t^(2/3)-(t^2+1)^(1/3)','t'); a=0;b=3;epsilon=0.01; t1=b-0.618*(b-a);f1=f(t1); t2=a+0.618*(b-a);f2=f(t2); k=1; while abs(b-a)>=epsilon if f1

matlab 无约束优化问题

实验八 无约束优化问题 一.实验目的 掌握应用matlab 求解无约束最优化问题的方法 二.实验原理及方法 1:标准形式: 元函数 为其中n R R f X f n R x n →∈:) (min 2.无约束优化问题的基本算法一.最速下降法(共轭梯度法)算法步骤:⑴ 给定初始点 n E X ∈0,允许误差0>ε,令k=0; ⑵ 计算() k X f ?; ⑶ 检验是否满足收敛性的判别准则: () ε≤?k X f , 若满足,则停止迭代,得点k X X ≈*,否则进行⑷; ⑷ 令() k k X f S -?=,从k X 出发,沿k S 进行一维搜索, 即求k λ使得: ()() k k k k k S X f S X f λλλ+=+≥0 min ; ⑸ 令k k k k S X X λ+=+1,k=k+1返回⑵. 最速下降法是一种最基本的算法,它在最优化方法中占有重要地位.最速下降法的优点是工作量小,存储变量较少,初始点要求不高;缺点是收敛慢,最速下降法适用于寻优过程的前期迭代或作为间插步骤,当接近极值点时,宜选用别种收敛快的算法..牛顿法算法步骤: (1) 选定初始点n E X ∈0,给定允许误差0>ε,令k=0; (2) 求()k X f ?,()() 1 2-?k X f ,检验:若() ε

基于MATLAB的优化设计

基于MATLAB的曲柄摇杆机构优化设计 1.问题的提出 根据机械的用途和性能要求的不同,对连杆机构设计的要求是多种多样的,但这些设计要求可归纳为以下三种问题:(1)满足预定的运动规律要求;(2)满足预定的连杆位置要求;(3)满足预定的轨迹要求。在在第一个问题 里按照期望函数设计的思想,要求曲柄摇杆机构的曲柄与摇杆转角之间按照φ=f(?)(称为期望函数)的关系实现运动,由于机构的待定参数较少,故一 般不能准确实现该期望函数,设实际的函数为φ=F(?)(称为再现函数),而再 现函数一般是与期望函数不一致的,因此在设计时应使机构再现函数φ=F(?) 尽可能逼近所要求的期望函数φ=f(?)。这时需按机械优化设计方法来设计曲 柄连杆,建立优化数学模型,研究并提出其优化求解算法,并应用于优化模型的求解,求解得到更优的设计参数。 2.曲柄摇杆机构的设计 在图1所示的曲柄摇杆机构中,l1、l2、l3、l4分别是曲柄AB、连杆BC、摇杆CD和机架AD的长度。这里规定?0为摇杆在右极限位置φ0时的曲柄起始 位置角,它们由l1、l2、l3和l4确定。 图1曲柄摇杆机构简图 设计时,可在给定最大和最小传动角的前提下,当曲柄从?0转到?0+90?时,要求摇杆的输出角最优地实现一个给定的运动规律f(?)。这里假设要求: (?-?0)2(1)φE=f(?)=φ0+2 3π

s=30;qb=1;jj=5;fx=0; fa0=acos(((qb+x(1))^2-x(2)^2+jj^2)/(2*(qb+x(1))*jj)); %曲柄初始角 pu0=acos(((qb+x(1))^2-x(2)^2-jj^2)/(2*x(2)*jj));%摇杆初始角for i=1:s fai=fa0+0.5*pi*i/s; pui=pu0+2*(fai-fa0)^2?(3*pi); ri=sqrt(qb^2+jj^2-2*qb*jj*cos(fai)); alfi=acos((ri^2+x(2)^2-x(1)^2)/(2*ri*x(2))); bati=acos((ri^2+jj^2-qb^2)(/2*ri*jj)); if fai>0&fai<=pi psi=pi-alfi-bati; elseif fai>pi&fai<=2*pi psi=pi-alfi+bati; end fx=fx+(pui-psi)^2; end f=fx; (2)编写非线性约束函数M文件confun.m function[c,ceq]=confun(x); qb=1;jj=5;m=45*pi/180;n=135*pi/180; c(1)=x(1)^2+x(2)^2-(jj-qb)^2-2*x(1)*x(2)*cos(m); %最小传动角约束c(2)=-x(1)^2-x(2)^2+(jj+qb)^2+2*x(1)*x(2)*cos(n); %最大传动角约束ceq=[]; (3)在MATLAB命令窗口调用优化程序 x0=[6;4]; lb=[1;1]; ub=[]; %线性不等式约束 a=[-1-1;1-1;-11];b=[-6;4;4];[x,fn]=fmincon(@optimfun, x0,a,b,[],[],lb,ub,@confun); (4)运行结果

简述基于MATLAB的优化设计

基于MATLAB 的曲柄摇杆机构优化设计 1. 问题的提出 根据机械的用途和性能要求的不同,对连杆机构设计的要求是多种多样的,但这些设计要求可归纳为以下三种问题:(1)满足预定的运动规律要求;(2)满足预定的连杆位置要求;(3)满足预定的轨迹要求。在在第一个问题里按照期望函数设计的思想,要求曲柄摇杆机构的曲柄与摇杆转角之间按照()f φ?=(称为期望函数)的关系实现运动,由于机构的待定参数较少,故一般不能准确实现该期望函数,设实际的函数为()F φ?=(称为再现函数),而再现函数一般是与期望函数不一致的,因此在设计时应使机构再现函数()F φ?=尽可能逼近所要求的期望函数()f φ?=。这时需按机械优化设计方法来设计曲柄连杆,建立优化数学模型,研究并提出其优化求解算法,并应用于优化模型的求解,求解得到更优的设计参数。 2. 曲柄摇杆机构的设计 在图 1 所示的曲柄摇杆机构中,1l 、2l 、3l 、 4l 分别是曲柄AB 、连杆BC 、摇杆CD 和机架AD 的长度。这里规定0?为摇杆在右极限位置0φ时的曲柄起始位置角,它们由1l 、2l 、3l 和4l 确定。 图1 曲柄摇杆机构简图 设计时,可在给定最大和最小传动角的前提下,当曲柄从0?转到090??+时,要求摇杆的输出角最优地实现一个给定的运动规律()f ?。这里假设要求: ()()2 0023E f φ?φ??π ==+ - (1)

对于这样的设计问题,可以取机构的期望输出角()E f φ?=和实际输出角 ()F φ?=的平方误差之和作为目标函数,使得它的值达到最小。 2.1 设计变量的确定 决定机构尺寸的各杆长度1l 、2l 、3l 和4l ,以及当摇杆按已知运动规律开始运行时,曲柄所处的位置角0?应列为设计变量,即: []12340T x l l l l ?= (2) 考虑到机构的杆长按比例变化时,不会改变其运动规律,通常设定曲柄长度 1l =1.0,在这里可给定4l =5.0,其他杆长则按比例取为1l 的倍数。若取曲柄的初始 位置角为极位角,则?及相应的摇杆l 位置角φ均为杆长的函数,其关系式为: ()()()()222221243230124225arccos 210l l l l l l l l l l l l ?????++-+-+==????++???????? (3) ()()22222124323034325arccos 210l l l l l l l l l l ????? +--+--==???????????? (4) 因此,只有2l 、3l 为独立变量,则设计变量为[][]2312T T x l l x x ==。 2.2目标函数的建立 目标函数可根据已知的运动规律与机构实际运动规律之间的偏差最小为指标来建立,即: ()()2 1min m Ei i i f x φφ==-→∑ (5) 式中,Ei φ-期望输出角;m -输出角的等分数;i φ-实际输出角,由图 1 可知: ()()02i i i i i i i παβ?πφπαβπ?π--≤≤??=?-+≤≤?? (6) 式中,222222322132arccos arccos 22i i i i i r l l r x x rl r x α???? +-+-== ? ????? (7) 222241424arccos arccos 210i i i i i r l l r rl r β???? +-+== ? ????? (8) i r == (9) 2.3约束条件

机械优化设计MATLAB程序

t t t 机械优化设计作业 1.用二次插值法求函数?( )= ( +1)( - 2)2 极小值,精度 e=0.01。 在 MA TLAB 的 M 文件编辑器中编写的 M 文件,如下: f=inline('(t+1)*(t -2)^2','t') a=0;b=3;epsilon=0.01; t1=a;f1=f(t1); t3=b;f3=f(t3); t2=0.5*(t1+t3);f2=f(t2); c1=(f3-f1)/(t3-t1); c2=((f2-f1)/(t2-t1)-c1)/(t2-t3); t4=0.5*(t1+t3-c1/c2);f4=f(t4); k=0; while(abs(t4-t2)>=epsilon) if t2f4 f1=f2;t1=t2; t2=t4;f2=f4; else f3=f4;t3=t4; end else if f2>f4 f3=f2;t3=t2; t2=t4;f2=f4; else f1=f4;t2=t4; end end c1=(f3-f1)/(t3-t1); c2=((f2-f1)/(t2-t1)-c1)/(t2-t3); t4=0.5*(t1+t3-c1/c2);f4=f(t4); k=k+1; end %输出最优解 if f2>f4 t=t4;f=f(t4); else t=t2;f=f(t2); end fprintf(1,'迭代计算 k=%3.0f\n',k) fprintf(1,'极小点坐标 t=%3.0f\n',t) fprintf(1,'函数值 f=%3.4f\n',f)

3.用牛顿法、阻尼牛顿法及变尺度法求函数 的极小点。( ) ( ) ( )21121 22, xxxxxf -+-= 4 2 (1)在用牛顿法在 MATLAB 的 M 文件编辑器中编写的 M 文件,如下: function [x,fx,k]=niudunfa(x0) syms x1 x2 f=(x1-2)^4+(x1-2*x2)^2; fx=0; v=[x1,x2]; df=jacobian(f,v); df=df.'; G=jacobian(df,v); epson=1e -12; g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)}); G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)}); k=0; p=-G1\g1; x0=x0+p; while(norm(g1)>epson) p=-G1\g1; x0=x0+p; g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)}); G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)}); k=k+1; end x=x0; fx=subs(f,{x1,x2},{x(1,1),x(2,1)}); 运行结果如下: >> [x,fx,k]=niudunfa([1;1]) x =1.9999554476059523381489991377897 0.99997772380297616907449956889483 fx =0.0000000000000000039398907941382470301534502947647 k =23 (2)用阻尼牛顿法在 MA TLAB 的 M 文件编辑器中编写的 M 文件,如下: function [x,fx,k]=zuniniudunfa(x0)%阻尼牛顿法 syms x1 x2 f=(x1-2)^4+(x1-2*x2)^2; fx=0; v=[x1,x2]; df=jacobian(f,v); df=df.'; G=jacobian(df,v); epson=1e -12;%停机原则

用MATLAB求解规划问题

§15. 利用Matlab求解线性规划问题 线性规划是一种优化方法,Matlab优化工具箱中有现成函数linprog对如下式描述的LP问题求解: % min f'x % s.t .(约束条件):Ax<=b % (等式约束条件):Aeqx=beq % lb<=x<=ub linprog函数的调用格式如下: x=linprog(f,A,b) x=linprog(f,A,b,Aeq,beq) x=linprog(f,A,b,Aeq,beq,lb,ub) x=linprog(f,A,b,Aeq,beq,lb,ub,x0) x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options) [x,fval]=linprog(…) [x, fval, exitflag]=linprog(…) [x, fval, exitflag, output]=linprog(…) [x, fval, exitflag, output, lambda]=linprog(…) 其中: x=linprog(f,A,b)返回值x为最优解向量。 x=linprog(f,A,b,Aeq,beq) 作有等式约束的问题。若没有不等式约束,则令 111

A=[ ]、b=[ ] 。 x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options) 中lb ,ub为变量x的下界和上界,x0为初值点,options为指定优化参数进行最小化。 Options的参数描述: Display显示水平。选择’off’ 不显示输出;选择’I ter’显示每一步迭代过程的输出;选择’final’ 显示最终结果。 MaxFunEvals 函数评价的最大允许次数 Maxiter 最大允许迭代次数 TolX x处的终止容限 [x,fval]=linprog(…) 左端fval 返回解x处的目标函数值。 [x,fval,exitflag,output,lambda]=linprog(f,A,b, Aeq,beq,lb,ub,x0) 的输出部分: exitflag描述函数计算的退出条件:若为正值,表示目标函数收敛于解x 处;若为负值,表示目标函数不收敛;若为零值,表示已经达到函数评价或迭代的最大次数。 output 返回优化信息:output.iterations表示迭代次数;output.algorithm表示所采用的算法;outprt.funcCount表示函数评价次数。 lambda返回x处的拉格朗日乘子。它有以下属性: lambda.lower-lambda的下界; lambda.upper-lambda的上界; lambda.ineqlin-lambda的线性不等式; lambda.eqlin-lambda的线性等式。 112

最优化方法的Matlab实现(公式(完整版))

第九章最优化方法的MatIab实现 在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。 用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容: 1)建立数学模型即用数学语言来描述最优化问题。模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。 2)数学求解数学模型建好以后,选择合理的最优化方法进行求解。 最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。 9.1 概述 利用Matlab的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。 具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题。另外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便快捷的途径。 9.1.1优化工具箱中的函数 优化工具箱中的函数包括下面几类: 1 ?最小化函数

2.方程求解函数 3.最小—乘(曲线拟合)函数

4?实用函数 5 ?大型方法的演示函数 6.中型方法的演示函数 9.1.3参数设置 利用OPtimSet函数,可以创建和编辑参数结构;利用OPtimget函数,可以获得o PtiOns优化参数。 ? OPtimget 函数 功能:获得OPtiOns优化参数。 语法:

matlab(四连杆优化设计)

机械优化设计在matlab中的应用 东南大学机械工程学院** 一优化设计目的: 在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。 " 二优化设计步骤: 1.机械优化设计的全过程一般可以分为如下几个步骤: 1)建立优化设计的数学模型; 2)选择适当的优化方法; 3)编写计算机程序; : 4)准备必要的初始数据并伤及计算; 5)对计算机求得的结果进行必要的分析。 其中建立优化设计数学模型是首要的和关键的一步,它是取得正确结果的前提。优化方法的选取取决于数学模型的特点,例如优化问题规模的大小,目标函数和约束函数的性态以及计算精度等。在比较各种可供选用的优化方法时,需要考虑的一个重要因素是计算机执行这些程序所花费的时间和费用,也即计算效率。 2.建立数学模型的基本原则与步骤 ①设计变量的确定; — 设计变量是指在优化设计的过程中,不断进行修改,调整,一直处于变化的参数称为设计变量。设计变量的全体实际上是一组变量,可用一个列向量表示: x=。 ②目标函数的建立; 选择目标函数是整个优化设计过程中最重要的决策之一。当对某以设计性能有特定的要求,而这个要求有很难满足时,则针对这一性能进行优化会得到满意的效果。目标函数是设计变量的函数,是一项设计所追求的指标的数学反映,因此它能够用来评价设计的优劣。 目标函数的一般表达式为: 。 f(x)=,要根据实际的设计要求来设计目标函数。 ③约束条件的确定。 一个可行性设计必须满足某些设计限制条件,这些限制条件称为约束条件,简称约束。 由若干个约束条件构成目标函数的可行域,而可行域内的所有设计点都是满足设计要求的,一般情况下,其设计可行域可表示为

(完整word版)优化设计Matlab编程作业

优化设计

无约束优化 min f(x)= 21x +22x -21x 2x -41x 初选x0=[1,1] 程序: Step 1: Write an M-file objfun1.m. function f1=objfun1(x) f1=x(1)^2+2*x(2)^2-2*x(1)*x(2)-4*x(1); Step 2: Invoke one of the unconstrained optimization routines x0=[1,1]; >> options = optimset('LargeScale','off'); >> [x,fval,exitflag,output] = fminunc(@objfun1,x0,options) 运行结果: x = 4.0000 2.0000 fval = -8.0000 exitflag = 1 output = iterations: 3 funcCount: 12 stepsize: 1 firstorderopt: 2.3842e-007 algorithm: 'medium-scale: Quasi-Newton line search' message: [1x85 char] 非线性有约束优化 1. Min f(x)=321x +2 2x +21x -32x +5

Subject to: 1g (x)=1x +2x +18≤0 2g (x)=51x -32x -25≤0 3g (x)=131x -412 2x 0≤ 4g (x)=14≤1x 130≤ 5g (x)=2≤2x 57≤ 初选x0=[10,10] Step 1: Write an M-file objfun2.m function f2=objfun2(x) f2=3*x(1)^2+x(2)^2+2*x(1)-3*x(2)+5; Step 2: Write an M-file confun1.m for the constraints. function [c,ceq]=confun1(x) % Nonlinear inequality constraints c=[x(1)+x(2)+18; 5*x(1)-3*x(2)-25; 13*x(1)-41*x(2)^2; 14-x(1); x(1)-130; 2-x(2); x(2)-57]; % Nonlinear inequality constraints ceq=[]; Step 3: Invoke constrained optimization routine x0=[10,10]; % Make a starting guess at the solution >> options = optimset('LargeScale','off'); >> [x, fval] = ... fmincon(@objfun2,x0,[],[],[],[],[],[],@confun1,options) 运行结果: x = 3.6755 -7.0744 fval = 124.1495

利用Matlab求解机械设计优化问题的分析

利用MATLAB求解机械设计优化问题的分析 周婷婷 (能源与动力学院,油气0701) 摘要:MATLAB是目前国际上最流行的科学与工程计算的软件工具, 它具有强大的数值分析、矩阵运算、信号处理、图形显示、模拟仿真和最优化设计等功能。本文浅谈MATLAB在机械设计优化问题的几点应用。 关键词:MATLAB 约束条件机械设计优化 引言:在线性规划和非线性规划等领域经常遇到求函数极值等最优化问题,当函数或约束条件复杂到一定程度时就无法求解,而只能求助于极值分析算法,如果借助计算器进行手工计算的话,计算量会很大,如果要求遇到求解极值问题的每个人都去用BASIC,C和FORTRAN之类的高级语言编写一套程序的话,那是非一朝一日可以解决的,但如用MATLAB语言实现极值问题的数值解算,就可以避免计算量过大和编程难的两大难题,可以轻松高效地得到极值问题的数值解,而且可以达到足够的精度。 1无约束条件的极值问题的解算方法 设有Rosenbrock函数如下: f(X1,X2)=100(X2-X1*X1)2+(1-X1)2 求向量X取何值时,F(x)的值最小及最小值是多少? 先用MATLAB语言的编辑器编写求解该问题的程序如下: %把函数写成MATLAB语言表达式 fun=’100*(X(2)-X(1)*X(1)2+(1-X(1))2 %猜自变量的初值 X0=[-1 2]; %所有选项取默认值 options=[ ]; %调用最优化函数进行计算。 %函数最小值存放在数组元素options(8)中

%与极值点对应的自变量值存放在向量X里 %计算步数存放在数组元素options(10)中 [X,options]=fmins(fun,X0,options); %显示与极值点对应的自变向量X的值。 %显示函数最小值 options(8) %显示函数计算步数 options(10) 把上面这段程序保存为m文件,然后用“Tools”菜单中的“Run”命令行这段程序,就可以轻松的得到如下结果: X=9.999908938395383e-001 9.99982742178110e-001 ans=1.706171071794760e-001 ans=195 显然,计算结果与理论结果的误差小到e-10级,这里调用了MATLAB的最优化函数fmins(),它采用Nelder-Mead的单纯形算法,就是因为这个函数的采用,使最小值问题的解算变得非常简单。 2.带约束条件的极值问题的解法 设目标函数和约束条件如下: f(x) =-3X1+X2+X3 -X1+2X2-X3>= -11 4X1-X2-2X3<=-3 2X1-X3= -1 X1>=0,X2>=0,X3>=0; 求X向量取何值时函数取极小值? 对条件极值问题通常的做法都是将约束条件标准化(即把等式约束条件写成等号为0的形式,把不等式写成<=0的形式)。然后把条件极值问题转换为非条件极值问题,MATLAB也采用同样的做法。

机械优化设计MATLAB程序

机械优化设计作业 1.用二次插值法求函数()()()22 ?极小值,精度e=0.01。 t t =t 1- + 在MATLAB的M文件编辑器中编写的M文件,如下: f=inline('(t+1)*(t-2)^2','t') a=0;b=3;epsilon=0.01; t1=a;f1=f(t1); t3=b;f3=f(t3); t2=0.5*(t1+t3);f2=f(t2); c1=(f3-f1)/(t3-t1); c2=((f2-f1)/(t2-t1)-c1)/(t2-t3); t4=0.5*(t1+t3-c1/c2);f4=f(t4); k=0; while(abs(t4-t2)>=epsilon) if t2f4 f1=f2;t1=t2; t2=t4;f2=f4; else f3=f4;t3=t4; end else if f2>f4 f3=f2;t3=t2; t2=t4;f2=f4; else f1=f4;t2=t4; end end c1=(f3-f1)/(t3-t1); c2=((f2-f1)/(t2-t1)-c1)/(t2-t3); t4=0.5*(t1+t3-c1/c2);f4=f(t4); k=k+1; end %输出最优解 if f2>f4 t=t4;f=f(t4); else t=t2;f=f(t2); end fprintf(1,'迭代计算k=%3.0f\n',k) fprintf(1,'极小点坐标t=%3.0f\n',t) fprintf(1,'函数值f=%3.4f\n',f)

运行结果如下: 迭代计算k= 7 极小点坐标t= 2 函数值f=0.0001 2.用黄金分割法求函数()32321+-=t t t ?的极小值,精度e=0.01。 在MATLAB 的M 文件编辑器中编写的M 文件,如下: f=inline('t^(2/3)-(t^2+1)^(1/3)','t'); a=0;b=3;epsilon=0.01; t1=b-0.618*(b-a);f1=f(t1); t2=a+0.618*(b-a);f2=f(t2); k=1; while abs(b-a)>=epsilon if f1

转向梯形优化设计matlab程序

优化计算MATLAB程序 首先,将目标函数写成M文件,其程序语句如下; function f = fun (x) global K L thetamax alpha for i=1:61 f = 0 betae = atan(tan(alpha(i)/(1-(K/L)*tan(alpha(i)))); A(i)=2*x(1).^2*sin(x(2)+alpha(i)); B(i)=2*K*x(1)-2*x(1).^2*cos(x(2)+alpha(i)); C(i)=2*x(1).^2-4*x(1).^2*(cos(x(2)).^2+4*K*x(1)*cos(x(2))-2*K*x(1)* cos(x(2)+alpha(i)); theta3(i)= 2*acot((A(i)+sqrt(A(i).^2+B(i).^2-C(i).^2))/(B(i)+C(i))); beta(i)=x(2)+theta3(i)-pi; if alpha(i)<=pi/18 f(i)=1.5*abs(beta(i)-betae3(i)); elseif alpha>=pi/18,alpha(i)<=pi/9;f(i)=abs(betaa(i)-betae3(i)); elsef(i)=0.5*abs(beta(i)-betae3(i)); global K L thetamax alpha K=input L=input thetamax=input x0(1)=input

x0(2)=input thetamax = thetamax*pi/180; x0(2)=x0(2)*pi/180;lb(1)=0.17K; lb(2)=0.17*K; ub(1)=acot(K/(1.2*L))ub(2)=pi/2; alpha=linspace (0, theamax ,61); lb=[lb(1),lb(2)]; ub=[ub(1),ub(2)];x(0)=[x0(1),x0(2)]; options = optimset ( ‘TolFun’,‘le-10’,‘TolCon’,‘le-6’) [x,resnorm] = lsqnonlin(‘fun’,x0,lb,ub,options) g lobal K L thetamax alpha K = input L= input thetamax= input x ( 1) = input x ( 2) = input thetamax = thetamax * pi/ 180; x ( 2) = x ( 2) * pi/ 180; alpha= linspace( 0, thetamax , 61) ; fo r i= 1∶61 betae= atan( tan( alpha( i) ) / (( 1- K/ L) * tan( alpha( i) ) ) ) ; A ( i) = 2* ( x ( 1) ) .∧2* sin ( x ( 2) + alpha( i) ) ; B( i) = 2* K* x( 1) - 2* ( x ( 1) ) . ∧2* cos( x( 2) + alpha( i) ) ) ;

最优化方法的Matlab实现(公式完整版)

第九章最优化方法的Matlab实现 在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。 用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容:1)建立数学模型即用数学语言来描述最优化问题。模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。 2)数学求解数学模型建好以后,选择合理的最优化方法进行求解。 最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。 9.1 概述 利用Matlab的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题。另外,该工具箱还提供了线性、

非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便快捷的途径。 9.1.1 优化工具箱中的函数 优化工具箱中的函数包括下面几类: 1.最小化函数 表9-1 最小化函数表 2.方程求解函数 表9-2 方程求解函数表

3.最小二乘(曲线拟合)函数 表9-3 最小二乘函数表 4.实用函数 表9-4 实用函数表 5.大型方法的演示函数 表9-5 大型方法的演示函数表

基于Matlab的机械优化设计课后题

基于Matlab的机械优化设计课后题1.一维搜索法 说明:采用0.618法进行编程 代码如下:syms t f=(需要计算的函数) x1=0;h=2; f1=subs(f,x1);x2=x1+h; f2=subs(f,x2); f3=f2-1;t=1; if (f1-f2)>0 while f3e if f1>f2 a=a1;a1=a2; a2=a+k*(b-a); f1=f2; f2=subs(f,a2); else b=a2;a2=a1; a1=b-k*(b-a); f2=f1; f1=subs(f,a1); end

c=(b-a)/2; end 实际运行结果如下: 1. t=a1=5;f=11; 2. t=a1= 3.2796;f=22.6590; 3. t=a1=2;f=1.1122e-011; 2.无约束的优化设计 说明:一共采用了三种算法的编程 首先要建立步长函数,步长函数代码如下: function az=buchang(x,d,f) b=symvar(f); syms aa xn=x-d*aa; pa=subs(f,b,xn); pd=diff(pa,aa); aa=solve(pd); aa=real(aa); aa=subs(aa); n=size(aa,1);z=zeros(1,n); for i=1:n xn(:,i)=x-aa(i)*d; end for i=1:n z(i)=subs(f,b,xn(:,i)); end s=z(1);c=1; for i=1:n-1 if s>z(i+1) s=z(i+1);c=i+1; end end az=aa(c); end 1.DFP:·¨ syms (函数中的变量) f=(所需要优化的函数)

相关主题
文本预览
相关文档 最新文档