文档库 最新最全的文档下载
当前位置:文档库 › matlab(四连杆优化设计)

matlab(四连杆优化设计)

matlab(四连杆优化设计)
matlab(四连杆优化设计)

机械优化设计在matlab中的应用

东南大学机械工程学院**

一优化设计目的:

在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。

二优化设计步骤:

1.机械优化设计的全过程一般可以分为如下几个步骤:

1)建立优化设计的数学模型;

2)选择适当的优化方法;

3)编写计算机程序;

4)准备必要的初始数据并伤及计算;

5)对计算机求得的结果进行必要的分析。

其中建立优化设计数学模型是首要的和关键的一步,它是取得正确结果的前提。优化方法的选取取决于数学模型的特点,例如优化问题规模的大小,目标函数和约束函数的性态以及计算精度等。在比较各种可供选用的优化方法时,需要考虑的一个重要因素是计算机执行这些程序所花费的时间和费用,也即计算效率。

2.建立数学模型的基本原则与步骤

①设计变量的确定;

设计变量是指在优化设计的过程中,不断进行修改,调整,一直处于变化的参数称为设计变量。设计变量的全体实际上是一组变量,可用一个列向量表示:

x=。

②目标函数的建立;

选择目标函数是整个优化设计过程中最重要的决策之一。当对某以设计性能有特定的要求,而这个要求有很难满足时,则针对这一性能进行优化会得到满意的效果。目标函数是设计变量的函数,是一项设计所追求的指标的数学反映,因此它能够用来评价设计的优劣。

目标函数的一般表达式为:

f(x)=,要根据实际的设计要求来设计目标函数。

③约束条件的确定。

一个可行性设计必须满足某些设计限制条件,这些限制条件称为约束条件,简称约束。

由若干个约束条件构成目标函数的可行域,而可行域内的所有设计点都是满足设计要求的,一般情况下,其设计可行域可表示为

在可行域中,任意设计点满足全部约束条件,称为可行解,但不是最优解,而优化设

计就是要求出目标函数在可行域的最优解。

三实例分析(机械优化设计P241页例8-5)

设计一曲柄摇杆机构如图,要求:

曲柄从

且已知

范围内变化。

分析:

1)设计变量的确定

决定机构尺寸的各杆长度,以及当摇杆按已知运动规律开始运行时,曲柄所载的位置角应列为设计变量,即:

X==

考虑到机构的杆长按比例变化时,不会改变其运动规律,因此在计算时常取

,而其他杆长则按比例取为的倍数。若取曲柄的初始位置角为极位角,则及相应摇杆位置角均为杆长的函数,几何图形关系如右图,其关

系式为:

=arcos[] (1)

=arcos[] (2)

将的长度代入上式(1),(2)得到:

=arcos[]

=arcos[]

因此,只有为独立变量,设计变量减少,故最后的设计变量为:

X==

2) 目标函数的建立

目标函数可根据已知的运动规律与机构实际运动规律之间的偏差最小为指标来建立,即

f(x)=→ min

式中—期望输出角,;

m —输入角等分数;

—实际输出角,由下图得:

a)0≤< b)

(3)

式中

将输入角分成30等分,并用近似公式计算,可得目标函数的表达式:

f(x)=

由题意知,传动角的变化范围是,则上式中变量的最后形式可以写成:

将带入(4)(5)得:

为当时的理想输出角,其值在题目中已经给出:

3)约束条件的确定

①曲柄摇杆机构应满足曲柄存在条件,可得

②曲柄摇杆机构的传动角可得

把约束条件简化(=5 ==,)

其中满足条件,故最后一共有两个设计变量(),7个约束条件。

4)优化计算

①此问题的图解见上图,有7个约束条件构成了改优化模型的可行域,而最优解在可行域内。

②优化方法选择:

该问题属于一般的约束非线性最优化类型,可以使用matlab优化工具箱里面的‘fmincon’函数进行求解。

⑴fmincon里面算法的选择:fmincon里面一共提供了‘largescale’,‘'medium-scale’两种算法,由于此问题只有两个设计变量,维数较低,故采用‘medium-scale’算法。‘medium-scale’算法是采用SQP,算法中Hessian阵可以通过BFGS迭代,初始Hessian阵任给。注意BFGS公式中q项是需要计算目标函数梯度得到的。所以Hessian矩阵的近似计算是需要用到有限差分法。在采用‘'medium-scale’算法时,需提供其设计变量的初始点

的信息,而初始点的选择也将影响计算得收敛性和收敛速度,如果初始点选择得不恰当,可能最后函数不能收敛,得不到计算结果。

⑵精度的控制:为了得到更加精确地解,需要设置优化函数的控制精度,函数本身默认精度为1e-4,精度比较低,通过options的设置将精度提高到1e-9,这样得到的结果更精确。以上两点通过设置options参数即可:

options=optimset('largescale','off','display','off','Algorithm','acti ve-set','TolFun',1e-9);

所有的程序编好以后,在命令窗口输入:youhua

得到的matlab的运行结果如下:

>> youhua

x =

4.1574

2.2909 %最优解

fval =

5.1899e-004 %目标函数最优点的值

exitflag =

5 %标志值,’5’表示重要方向导数小于规定的容许范围

并且约束违背小于options.ToLCon

output =

iterations: 12 %迭代次数

funcCount: 40 %函数的评价次数

lssteplength: 1

stepsize: 7.6955e-005

algorithm: 'medium-scale: SQP, Quasi-Newton, line-search' %采用的中型算法firstorderopt: 1.0832e-006 %一阶最优性条件constrviolation: -1.0852e-006

message: [1x780 char] %跳出信息lambda =

lower: [2x1 double]

upper: [2x1 double]

eqlin: [0x1 double]

eqnonlin: [0x1 double]

ineqlin: [5x1 double]

ineqnonlin: [2x1 double]

grad = %函数在最优点处梯度信息1.0e-003 *

0.4888

0.4445

hessian = %函数在最优点处海塞矩阵

0.0016 0.0075

0.0075 0.0468

>>

5)结果分析

①采用fmincon求解的最优值:

=[4.1574; 2.2909];

采用算法:中型算法(mediun-scale)。

这与课本给出的最优解:=[4.1286;2.3325],=0.0156相比,计算精度更高,最优解的数值更精确,故计算准确度高。

②用matlab绘制输入——输出曲线关系图

上图中(单位为“度”)蓝色的线代表曲柄摇杆机构的实际输出角与输入角的关系,红色的线代表理想输出角与输入角的关系。

可以看出:

实际输出和理论输出曲线之间存在线性误差,其最大线性误差为,误差在允许的范围之内,故结果的可信度也较大,运用matlab优化工具箱计算所得结果正确。

小结

通过结合实际问题的分析,计算,求解,更加深入地了解和掌握机械优化设计的过程和步骤,比较重要的步骤是数学模型的建立,以及设计变量的选取,以及数学模型的尺度变换,根据机构实际工作需要,建立目标函数的约束条件等等,当数学模型建好以后,剩下的工作可以再matlab里面完成,而matlab里面的优化工具箱,给用户提供了多种优化函数,使用者只需要将数学模型按要求编写成子程序嵌入已有的优化程序即可。

在设计过程中也遇到一些困难,比如说在在用matlab计算时,计算机已知处于busy 状态,得不到函数的最优解,最后反复的检查,终于找的了其原因,是由于初始点选择不恰当引起的,如果初始点选择得好,可以节省计算时间和计算空间,故初始点的选取比较重要。

附录

1.编写目标函数M文件myfun.m:

function f=myfun(x)

f=0; %函数f赋初值

a0=acos(((1+x(1))^2-x(2)^2+25)/(10*(1+x(1)))); %初始计算点曲柄和

摇杆的角度b0=acos(((1+x(1))^2-x(2)^2-25)/(10*x(2)));

i=2;

while(i<=31) %设置迭代次数为30次

a(i)=a0+(pi/2)*(i/30); % 计算曲柄各分度的角度值

b(i)=b0+2*(a(i)-a0)^2/(3*pi); % 计算摇杆各分度的角度值 r=sqrt(26-10*cos(a(i)));

c(i)=acos((r^2+x(2)^2-x(1)^2)/(2*x(2)*r));

d(i)=acos((r^2+24)/(10*r));

if a(i)<=pi

e(i)=pi-c(i)-d(i); %计算摇杆输出的实际值else if a(i)<=2*pi

e(i)=pi-c(i)+d(i);

end

end

a(1)=a0;

f=f+((b(i)-e(i))^2)*(a(i)-a(i-1)); %目标函数的计算

i=i+1;

end

2.编写非线性不等式约束M文件constrain.m:

function[c ceq]=constrain(x)

c=[36-x(1)^2-x(2)^2-1.414*x(1)*x(2);

x(1)^2+x(2)^2-1.414*x(1)*x(2)-16]; %非线性不等式约束

ceq=[];

3.调用fmincon优化函数,建立youhua.m文件:

lb=[1;1]; %设计变量的下界

x0=[4;2]; %迭代初始点

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

b=[-1;-1;-6;4;4];

options=optimset('largescale','off','display','off','Algohm'

,'active-set','TolFun',1e-9); %采用中型算法,设计精度为1e-9

[x,fval,exitflag,output]=fmincon(@myfun,x0,A,b,[],[],lb,[],

@constrain,options) %调用fmincon函数

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的曲柄摇杆机构优化设计 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程序文件

机械优化设计作业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的生产过程中最大利润问题的优化设计

2010-2011 学年一学期研究生课程考核 (读书报告、研究报告) 考核科目:现代设计理论与方法 学生所在院(系):机电工程学院 学生所在学科:车辆工程 姓名:陈松 学号:Y100201802 题目:基于MATLAB的生产过程中最大利润问题的优化设计

基于MATLAB的生产过程中最大利润问题的优化设计 在工厂编制生产计划中,使产品的计划利润最大是通常的目标。可是,在生产过程中,总是有种种条件的限制,使得我们的生产成本增多,从而导致利润并没有达到理想值。为了解决如何在有约束条件下解决最大利润的问题,我们通常将这些有约束的最优化问题转化为无约束最优化问题。而通过MATLAB现成的优化工具箱,我们可以通过调用最佳优化函数求解,从而更好的计算出生产产品所获得最大利润。 1.数学模型的建立

建立数学模型,即用数学语言来描述最优化问题,模型中的数学关系式反 映了最优化问题所要达到的目标和各种约束条件。而通过这些约束条件,我们能更好的制定新的生产计划,以便克服生产过程中的某些不利于生产的约束,从而更大的降低产品生产成本,使利润最大化。 1.1设计变量的确定 设计变量是指设计过程中可以进行调整和优选的独立参数,分为连续变量和离散变量。而本文主要用的是连续变量,设计变量一般表示为: 式中,X i 表示生产产品的台数,而当我们确定了生产每台的利润后,我们 就能知道X i 台的利润。 1.2目标函数的确定 已知某工厂能生产A、B、C三种产品,每月生产的数量分别为X 1,X 2 , X 3,产品每台利润分别为m 1 ,m 2 ,m 3 ,则可知该厂每月的利润为: Y= m 1 *X 1 + m 2 *X 2 + m 3 *X 3 即目标函数为: X * m + X * m + X * m ) ( 3 3 2 2 1 1 = X F 简化为: F(X)= i i X M*i=1,2,3 1.3约束条件的建立 生产A、B、C三种产品需用到四种机器V1、V2、V3、V4,每种机器的生产能力分别为K1、K2、K3、K4,所以有: 1)用V1每月生产的A、B、C三种部件分别为N1、N2、 N3,则:g 1(x)=N1*X 1 +N2*X 2 +N3*X 3 ≤K1 2)用V2每月生产的A、B、C三种部件分别为N11、N12、 N13,则:g 2(x)=N11*X 1 +N12*X 2 +N13*X 3 ≤K2 3)用V3每月生产的A、B、C三种部件分别为N21、N22、N23, 则:g 3(x)=N21*X 1 +N22*X 2 +N23*X 3 ≤K3

matlab(四连杆优化设计)

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

matlab与优化设计

机械优化设计课程设计 题目:齿轮减速器最优化设计班级:机械班 成员

2013年6月19日 一.设计题目:二级斜齿圆柱减速器的最优化设计二.设计要求:要求减速器有最小的体积和最紧凑的结

构 三.原始数据: 四.设计内容 1.设计方案的拟定及说明 2.电动机的选择及参数计算 3.带轮的初选与计算 4.计算圆柱斜齿轮的输入转矩、传动比、转速,然 后建立数学模型编写matlab语言程序,运行 程序包括geardesign. m 齿轮系统设计主程序 Gearobjfun. m目标函数子程序 Gearconstr. m 约束条件子程序 Gearparameter.m许用应力计算子程序 5.输出结果

1.该减速器为二级斜齿圆柱减速器,低速级采用二级斜齿圆 柱齿轮传动,选择三相交流异步电动机,v带传动 2.确定电动机的容量: 选择电动机的容量应保证电动机的额定功率大于等于工作机所需要的功率 电动机参数t=60/40=1.5s v=s/t=6.0*10^-3m/s P=0.5FV=0.5*110*60*0.001=3.3kw 1.η=η1* η32*η23*η4*η5 其中齿轮传动η1=0.96滚动轴承η2=0.98齿轮传动η3=0.97联轴器η4=0.99卷筒η5=1.0 η=0.96*0.98^3*0.97^2*0.99*1.00=0.84 P d=3.3\0.84=2.93kw 三,确定电动机的转速 已知压片机的转速40piece/min带传动的传动比i1=2~4 二级齿轮减速器的传动比i2=8~40,所以电动机的转动范围n=i1i2n=640~6400r/min 可行方案如下 确定电动机的转速具体数据如下 计算减速器输入转矩T1,输入转速n,总传动比i

转向梯形优化设计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) ) ) ;

(完整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第12章工程优化设计实例

MATLAB第12章工程优化设计实例 第12章工程优化设讣实例优化设讣的数学模型 优化设讣的数学模型是描述实际优化问题的设计内容、变量关系、有关设计条件和意图的数学表达式,它反映了物理现象各主要因素的内在联系,是进行优化设计的基础。优化设计数学模型的三大要素: ?设计变量 ?约束条件 ? LI标函数 1.设计变量 一个设计方案可以用一组基本参数的数值来表示,这些基本参数可以是构件尺寸等儿何量,也可以是质量等物理量,还可以是应力、变形等表示丄作性能的导出量。设计变量:在设讣过程中进行选择并最终必须确定的各项独立的基本参数,乂叫做优化参数。 设计变量的全体实际上是一组变量,可用一个列向量表示 2.约束条件 设计空间是所有设计方案的集合,但这些设计方案有些是工程上所不能接受 的。如一个设计满足所有对它提出的要求,就称为可行设计。 一个可行设讣必须满足某些设讣限制条件,这些限制条件称作约束条件,简称约 束。3.目标函数 为了对设计进行定量评价,必须构造包含设讣变量的评价函数,它是优化的口标, 称为LI标函数,以F(X)表示。

FxFxxx ()(),, , , 12n 在优化过程中,通过设计变量的不断向F(X)值改善的方向自动调整,最后求得 F(X)值最好或最满意的X值。在构造LI标函数时,应注意:訂标函数必须包含全部设计变量,所有的设计变量必须包含在约束函数中。 模型输入时需要注意的问题 使用优化工具箱时,山于优化函数要求口标函数和约束条件满足一定的格式,所以需要用户在进行模型输入时注意以下儿个问题: 1.目标函数最小化 优化函数 fminbnd、fminsearchx fminunc、fmincon、fgoalattdin、fminmax 和1 sqnonlin都要求LI标函数最小化,如果优化问题要求LI标函数最大化,可以通过使该LI标函数的负值最小化即-f(x)最小化来实现。近似地,对于quadprog函数提供-H 和-f,对于1 inprog函数提供-f。 2.约束非正 优化工具箱要求非线性不等式约束的形式为Ci(x)?0,通过对不等式取负可以达到使大于零的约束形式变为小于零的不等式约束形式的U的,如Ci (x)?0形式的约束等价于- Ci(x)?0;Ci(x)?b形式的约束等价于- Ci(x)+b?0。 3.避免使用全局变量 Fmincon是mat lab最主要内置的求解约束最优化的函数,该函数的优化问题的标准形式为:1.数学模型标准形式: min f , X, s. t. AX?b ,线性不等式约束, AeqX二beq ,线性等式约束, C(X)?0 ,非线性不等式约束条件,

简述基于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在优化设计中的应用

m a t l a b在优化设计中的 应用 The Standardization Office was revised on the afternoon of December 13, 2020

Matlab 在优化设计中的应用 摘 要 常见的优化问题包括线性规划、无约束优化、约束优化、最下二乘优化、多目标规划等。本文研究了matlab 在这些常见优化问题中的应用及求解。 在进行研究本课题之前,我们先通过网络、电子书刊等各种有效渠道获取我们所需信息,在充分了解与熟练掌握了各种优化问题的具体特点及性质后,我们给出了关于如何用matlab 进行多类优化问题的求解基本方法,在此前提下,为了体现该软件在这些优化领域的实际应用效果,我们结合若干个优化问题的实例进行分析、建模、以及运用matlab 编程求解,在求解过程中,通过得到的精确数据和反应结果的图例,我们了解到matlab 工具箱的功能强大,是处理优化问题的非常方便的编程工具。 关键词:matlab 优化问题 二、基本概念 线性规划 线性规划是优化的一个重要分支。它在理论和算法上都比较成熟,在实际中有广泛的应用。例如数学表达形式: ???? ? ??? ?=≥=+++=+++=++++++n i x b x a x a x a b x a x a x a b x a x a x a t s x c x c x c i m n mn m m n n n n n n ,,2,1,0..min 221 122222121112121112211

在MTLAB 提供的优化工具箱中,解决规划的命令是linprog ,它的调用格式如下, ),,(b A c linprog x = 求解下列形式的线性规划: ?? ?≤b Ax t s x c T ..min ),,,,(beq Aeq b A c linprog x = 求解下面形式的线性规划: ?? ? ? ????=?≤beq x Aeq b Ax t s x c T ..min 若没有不等式约束b Ax ≤,则只需命令 [][],==b A 。 ),,,,,,(ub lb beq Aeq b A c linprog x = 求解下面形式的线性规划: ??? ?????? ? ??≤≤=?≤ub x lb beq x Aeq b Ax t s x c T ..min 若没有不等式约束b Ax ≤,则只需令[][],==b A ;若只有下界约束,则可以不用输入 ub 。 无约束优化算法 对于无约束优化问题,已经有许多有效的算法。这些算法基本都是迭代法,它们都遵循下面的步骤: ① 选取初始点x 0 ,一般来说初始点越靠近最优解越好;

matlab在优化设计中的应用

Matlab 在优化设计中的应用 摘 要 常见的优化问题包括线性规划、无约束优化、约束优化、最下二乘优化、多目标规划等。本文研究了matlab 在这些常见优化问题中的应用及求解。 在进行研究本课题之前,我们先通过网络、电子书刊等各种有效渠道获取我们所需信息,在充分了解与熟练掌握了各种优化问题的具体特点及性质后,我们给出了关于如何用matlab 进行多类优化问题的求解基本方法,在此前提下,为了体现该软件在这些优化领域的实际应用效果,我们结合若干个优化问题的实例进行分析、建模、以及运用matlab 编程求解,在求解过程中,通过得到的精确数据和反应结果的图例,我们了解到matlab 工具箱的功能强大,是处理优化问题的非常方便的编程工具。 关键词:matlab 优化问题 二、基本概念 2.1.1 线性规划 线性规划是优化的一个重要分支。它在理论和算法上都比较成熟,在实际中有广泛的应用。例如数学表达形式: ???? ? ??? ?=≥=+++=+++=++++++n i x b x a x a x a b x a x a x a b x a x a x a t s x c x c x c i m n mn m m n n n n n n ,,2,1,0..min 221 122222121112121112211 在MTLAB 提供的优化工具箱中,解决规划的命令是linprog ,它的调用格式如下, ),,(b A c linprog x = 求解下列形式的线性规划: ?? ?≤b Ax t s x c T ..min ),,,,(beq Aeq b A c linprog x = 求解下面形式的线性规划:

机械优化设计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进行优化设计

实验1 优化设计方法——线性规划 一、实验目的 1)熟悉优化设计方法的基本原理及步骤; 2)掌握利用辅助工程计算软件MATLAB进行优化设计的基本操作。 二、实验内容 利用优化设计方法解下面线性规划问题,给出命令代码和优化结果。 某车间有两台机床甲和乙,可用于加工三种工件。假定这两台机床的可用台时数分别为700和800,三种工件的数量分别为300、500和400,且已知用三种不同机床加工单位数量的不同工件所需的台时数和加工费用(如表1所示),问怎样分配机床的加工任务,才能既满足加工工件的要求,又使总加工费用最低? 表1 机床加工情况表 机床类型 单位工作所需加工台时数单位工件的加工费用可用台时 数 工件1工件2工件3工件1工件2工件3 甲0.4 1.1 1.013910700 乙0.5 1.2 1.311128800 三、实验结果(matlab代码及结果) 提示:设在甲机床上加工工件1、2和3的数量分别为x1、x2和x3,在乙机床上加工工件1、2和3的数量分别为x4、x5和x6。根据教材13页优化设计步骤: 1)建立数学模型,即根据问题选取设计变量、建立目标函数、列出约束条件; 2)在matlab中编写程序,即利用线性规划优化函数linprog求解; 3)给出最优解。 [函数] linprog 以下为此函数的几种应用格式: [格式] x = linprog(f,A,b)求解问题 min f'*x,x为要求的解,约束条件为A*x <= b。 x = linprog(f,A,b,Aeq,beq)求解上面的问题,但增加等式约束,即Aeq*x = beq。若没有不等式存在,则令A=[]、b=[]。 x = linprog(f,A,b,Aeq,beq,lb,ub)定义设计变量x的下界lb和上界ub,使得x 始终在该范围内。若没有等式约束,令Aeq=[]、beq=[]。 x = linprog(f,A,b,Aeq,beq,lb,ub,x0)设置初值为x0。该选项只适用于中型问题,缺省时大型算法将忽略初值。 x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)用options指定的优化参数进行最小化。 [x,fval] = linprog(...) 返回解x处的目标函数值fval。 [x,lambda,exitflag] = linprog(...)返回exitflag值,描述函数计算的退出条件。 [x,lambda,exitflag,output] = linprog(...) 返回包含优化信息的输出变量ou tput。 [x,fval,exitflag,output,lambda] = linprog(...) 将解x处的拉格朗日乘子返回到lambda参数中。

matlab在优化设计中的应用

Matlab在优化设计中的应用 摘要 常见的优化问题包括线性规划、无约束优化、约束优化、最下二乘优化、多目标规划等。本文研究了matlab在这些常见优化问题中的应用及求解。 在进行研究本课题之前,我们先通过网络、电子书刊等各种有效渠道获取我们所需信息,在充分了解与熟练掌握了各种优化问题的具体特点及性质后,我们给出了关于如何用matlab进行多类优化问题的求解基本方法,在此前提下,为了体现该软件在这些优化领域的实际应用效果,我们结合若干个优化问题的实例进行分析、建模、以及运用matlab编程求解,在求解过程中,通过得到的精确数据和反应结果的图例,我们了解到matlab工具箱的功能强大,是处理优化问题的非常方便的编程工具。 关键词:matlab 优化问题 二、基本概念 2.1.1 线性规划 线性规划是优化的一个重要分支。它在理论和算法上都比较成熟,在实际中有广泛的应用。例如数学表达形式:

???? ? ??? ?=≥=+++=+++=++++++n i x b x a x a x a b x a x a x a b x a x a x a t s x c x c x c i m n mn m m n n n n n n ,,2,1,0..min 221 122222121112121112211 在MTLAB 提供的优化工具箱中,解决规划的命令是linprog ,它的调用格式如下, ),,(b A c linprog x = 求解下列形式的线性规划: ?? ?≤b Ax t s x c T ..min ),,,,(beq Aeq b A c linprog x = 求解下面形式的线性规划: ?? ? ? ????=?≤beq x Aeq b Ax t s x c T ..min 若没有不等式约束b Ax ≤,则只需命令 [][],==b A 。 ),,,,,,(ub lb beq Aeq b A c linprog x = 求解下面形式的线性规划: ??? ?????? ? ? ?≤≤=?≤ub x lb beq x Aeq b Ax t s x c T ..min 若没有不等式约束b Ax ≤,则只需令[][],==b A ;若只有下界约束,则可以不用输入ub 。 2.1.2 无约束优化算法 对于无约束优化问题,已经有许多有效的算法。这些算法基本都是迭代法,它们都遵循下面的步骤: ① 选取初始点x 0 ,一般来说初始点越靠近最优解越好; ② 如果当前迭代点x k 不是原问题的最优解,那么就需要找一个搜索方向p k ,使得目标函数f (x ) 从x k 出发,沿方向p k 有所下降;

机械优化设计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

相关文档