当前位置:文档之家› matlab在优化设计中的应用

matlab在优化设计中的应用

matlab在优化设计中的应用
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 有所下降; ③ 用适当的方法选择步长a k (≥0),得到下一个迭代点x k+1=x k +a k p k ;

④ 检验新的迭代点xk+1是否为原问题的最优解,或者是否与最优解的近似误差满足预先给定的容

忍度。

2.1.3单变量约束优化问题

单变量约束优化问题的标准形式为

?

??<

2.1.4 最小二乘法优化

最小二乘优化时一类非常特殊的优化问题,它在实际中,尤其是在处理一些曲线拟合问题、线

性方程组无解时的近似解等问题,用的非常多。

最小二乘优化问题的目标函数一般为若干个函数的平方和,即:

()

∑=∈?m

i n

R x x f x F 1

2

1)(min

2.1.5多目标规划问题

在大多数的优化、中,都将多目标规划的一般形式表述为:

()

()()[

]

T

p x f x f x f x F 21)(min =

()()??

?===≥n

i x h m

i x g t s i i ,,2,1,0,,2,1,0.. 其中,()x f i 、()x g i 、()x h i 既可以为线性函数,也可以为非线性函数。

三、基本方法

对于解决那些常见优化问题,基本思路将在解题的过程中得到体现。我们给出具体一些建模实例来体现基本算法:

3.1就下列命令求下面分段函数的极小值点。

()??

???-<++≤≤-+->+-=1,3411,11,5622

2x x x x x x x x x f

解:首先编写目标函数的M 文件如下:

end

x x y else

x y x x elseif x x y x if

x exam ple y function ;342;

121

&1;5621

)(78++=+-=<=->=+-=>=*∧∧

*∧

然后为了分析直观,利用MTLAB 画出目标函数的图像,步骤如下: >> x=-5:0.01:5; >> n=length(x) n =

1001

>> for i=1:1001

y(i)=example8_7(x(i)); end

3.2 对于下面的线性规划问题:

min –x1-3x2

s.t. ??

?

??≥≤=-≤+02,18221621x x x x x x

先利用图解法求其最优解,然后利用优化工具箱中的linprog 命令求解。 解 〈图解法〉

先利用MATLAB 画出该线性规划的可行集及目标函数等值线: >>clear

>>syms x1 x2 >>f=-x1-3*x2; >>c1=x1+x2-6; >>c2=-x1+2*x2-8; >>ezcontourf(f) >>axis([0 6 0 6]) >>hold on >>ezplot(c1) >>ezplot(c2)

>>legend('f 等值线','x1+x2-6=0','-x1+2*x2-8=0') >>title('利用图解法求线性规划问题') >>gtext('x') 运行结果如下图:

从上图中可以看出可行集的顶点x (4/3,14/3)即为线性规划的最优解,它也是两个线性约束的交点。

3.3求解下面的最小二乘优化问题:

22

2

1

min

d Cx -

???????≤≤-≤≤-≤++-≤++2

25,513212..3213

21321x x x x x x x x x t s

其中

????

? ??=????? ??---=101,023101210d C

程序输入及结果

>> clear

A=[1 2 1;-2 1 3]; b=[1 1]';

C=[0 -1 2;1 0 -1;-3 2 0]; d=[1 0 1]'; lb=[-5 -5 -2]';

ub=[5 5 2]';

Aeq=[];beq=[];

[x,resnorm,residual,exitflag,output,lambda]=lsqlin(C,d,A,b,Aeq,beq,lb,ub) Warning:Large-scale method can handle bound constraints only;

switching to medium-scale method.

Warning: Large-scale method can handle bound constraints only;

using medium-scale method instead.

> In lsqlin at 249

Optimization terminated.

x = %最优解

-0.4578

-0.3133

0.1325

resnorm = %残差向量2-范数的平方,即reanorm=norm(residual)^2

0.5904

residual = %残差向量

-0.4217

-0.5904

-0.2530

exitflag =

1 %函数收敛到最优解

output =

iterations: 4 %迭代4次

algorithm: 'medium-scale: active-set' %调用的积极集算法firstorderopt: []

cgiterations: []

message: 'Optimization terminated.'

lambda = %Lagrange 乘子

lower: [3x1 double] upper: [3x1 double] eqlin: [0x1 double] ineqlin: [2x1 double] ineqlin:[2xl double]

3.4求下面优化问题的最优解,并求出相应的梯度、Hessian 矩阵以及Lagrang 乘子。

()()222112min

-+-x x

???≥+--≥+-0

20..21221x x x x t s

解 现将该优化问题转化为下面的标准形式:

()()222112min

-+-x x

???≤+≤-20..21

221x x x x t s

编写目标函数的M 文件如下:

function y=example8_9(x) y=(x(1)-2)^2+(x(2)-1)^2; function [c1,c2]=nonlin(x) c1=x(1)^2-x(2); c2=[]; clear A=[1 1]; b=2;

Aeq=[];beq=[];lb=[];ub=[]; x0=[0 0]';

[x,fval,exitflag,output,lambda,g,H]=fmincon(@example8_9,x0,Aeq,beq,lb,ub,@n onlin)

Warning £oLarge-scale £¨trust region £?method does not currently solve this type of problem£?

switching to medium-scale£¨line search£??£

四、实际应用

4.1 V 带轮优化设计

提出问题:设计带式输送机传动装置上的普通V 带传动,已知电动机额定功率P=4Kw ,转速

n1=1440r/min ,传动比i=3,采用A 型V 带,每天工作不超过10小时,设计带根数尽量少,带轮直径和中心距尽量小的方案。

4.1.1 数学模型建立

(1)设计变量:V 带传动的独立设计变量是小带轮直径和带的基准长度 即X=[1x ,2x T ]=[ 1d d ,d L T ] (2)目标函数包括三个分目标:

a .小带轮直径 min 1f (X )=1d d =1x

b .中心距 min 2f (X )=a=1a +22

1a a -

其中,1a =d L /4-π(i+1)1d d /8,2a =(i-12)21d d /8

c .带的根数 min 3f (X )=z=A K P/(0P +0P ?)αK L K

(3)约束条件

小带轮直径不小于推荐的A 型带轮最小直径mm d 100min = 即

=)(1X g 11min 100x d d d -=-≤0

带速不超过最大带速

s m v /25max =

02560000/60000/)(1max 12≤-=-=n d v n d X g d d ππ

小带轮包角大于

。120max =α

0)/21(180120/)1(1[180)(11min 1min 3≤--=---=-=ππαααa x a i d X g d

中心距大于)1(7.01+i d d , 即

7.0)(4=X g 08.2)1(11≤-=-+a x a i d d

小带轮基准直径在80—100mm 之间,中心距在320—400mm 之间,带的根数为1—4。

]5.1;40;10[])2/14(;)2/320400(;)2/80100[(];;[222222321------=---==w w w w

4.1.2编制MATLAB 优化设计

% V 带传动多目标优化设计

P=4;i=3;n1=1440;KA=1.1; %已知条件

x0=[100;1250]; %初始点(小带轮直径,V 带基准长度)

lb=[80;630]; %最小带轮直径和A型V带基准长度

ub=[100;4000]; %最大带轮直径和A型V带基准长度

goal=[75,280,2]; %分目标

w=[10^-2,40^-2,1.5^-2]; %分目标加权系数

[xopt,fopt]=fgoalattain(@VDCD_3mb_MB,x0,goal,w,[],[],[],[],lb,ub,@VDCD_3mb_YS) function f=VDCD_3mb_MB(x)

P=4;i=3;KA=1.1;

f(1)=x(1); %f1小带轮基准直径

a1=x(2)/4-pi*x(1)*(i+1)/8;

a2=x(1)^2*(i-1)^2/8;

a=a1+sqrt(a1^2-a2);

f(2)=a; %f2中心距

P0=0.02424*x(1)-1.112879; %单根带额定功率

DP0=0.17; %功率增量

alpha=180-180*x(1)*(i-1)/pi/a; %小带轮包角

Kalp=alpha/(0.549636*alpha+80.396114); %包角系数

KL=0.20639*x(2)^0.211806; %长度系数

f(3)=KA*P/(P0+DP0)/Kalp/KL; %V带根数

function[g,ceq]=VDCD_3mb_YS(x)

i=3;n1=1440;

g(1)=100-x(1);

g(2)=pi*x(1)*n1/6e4-25;

a1=x(2)/4-pi*x(1)*(i+1)/8;

a2=x(1)^2*(i-1)^2/8;

a=a1+sqrt(a1^2-a2);

g(3)=120-180*(1-x(1)*(i-1)/a/pi);

g(4)=0.7*x(1)*(i+1)-a;

ceq=[];

4.1.3运行结果:

Optimization terminated successfully:

Search direction less than 2*options.TolX and

maximum constraint violation is less than options.TolCon

Active Constraints:

5

9

xopt =

1.0e+003 *

0.1000

1.2269

fopt =

100.0000 281.5293 3.5958

表面最优方案为设计带根数为5或9,带轮直径和中心分别为(1.0e+003,100.0000)、(0.1000,281.5293)、(1.2269,3.5958)的方

4.2 MATLAB 优化设计在机件模型中的应用

提出问题:有一圆形等截面的销轴.一端固定在机架上.另一端作用着集中载荷P ;50kN 和扭矩M=400Nm ,其简化模型如图l 所示.由于结构的需要,轴的长度l 不得小于10cm ,已知锖轴的材料的弯曲应力=120MPa ;扭剪应力=80MPa ;允许挠度f=o .01cm ;密度p=7800kg /m3:弹性模量E=2.1×105MPa .现要求设计这根销轴,在满足使用要求下使其质量为最轻.

4.2.1建立数学模型:

通过分析,我们得知性能约束条件为:

1、弯曲强度要求悬臂粱的最大弯曲应力不得超过允许值,即h f ≤代人数据并整理;

2、扭转强度要求悬梁的最大弯曲应力不得超过允许值,即k b ≤,代人数据并整理;

3、刚度要求最大挠度不得超过允许值,代人数据并整理得边界约束条件:010≤-f 这样就可建立数学模型:

二、调用MATLAB 函数进行优化

采用MATLAB 可以简化编程.NATLAB 程序语言简单,也可采用交互式界面. 本例要MATLAB 命令窗口输入如下命令即可: funf=’f=0.0061 3x(1)‘x(2)’;%目标函数

funf=’g=[41.67’x(2)/x(1)“3一l ;I .62+x(2)‘3/x(1)‘4—1;25/x(1)‘3—1;’];%约束函数

fun=[funf furig];

x0=[8,10];%给出d 、I 的初始值 options=[];%参数向量取缺省值

vlb=[0,10];%设计变量d ,1的下限值 vub=[];%设计变量无上限值

[X ,option]-constr(fun ,x0,options ,vcb ,vub);%调用有约束优化函数 这时,就会输出优化结果如下: x=7.4692 10.0000

options=0 0.000l 0.0001 0,0000 0 0 0 3.4199 0 20.0000 7.0000 7.0000 0 200,0000 0 0.0000 0.1000 1.000

表明最优方案为d=7.4692cm ,1=lOcm ,Q=options(8)=3.14199kg .

五、参考文献

六、任务清单

6.1本组任务分配清单

七、课题研究总结母桑妮:

胡双:

肖锐:

朱小英:

马娟:

张海旭:

彭艺:

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 πππ+?+?=

2019年matlab优化工具箱的使用

优化工具箱的使用 MATLAB的优化工具箱提供了各种优化函数,这些优化函数可以通过在命令行输入相应的函数名加以调用;此外为了使用方便,MA TLAB还提供了图形界面的优化工具(GUI Optimization tool)。 1 GUI优化工具 GUI优化工具的启动 有两种启动方法: (1)在命令行输入optimtool; (2)在MA TLAB主界面单击左下角的“Start”按钮,然后依次选择“Toolboxes→Optimization→Optimization tool” GUI优化工具的界面 界面分为三大块: 左边(Problem Setup and Results)为优化问题的描述及计算结果显示; 中间(Options)为优化选项的设置; 右边(Quick Reference)为帮助。为了界面的简洁,可以单击右上角“<<”、“>>”的按钮将帮助隐藏或显示。 1、优化问题的描述及计算结果显示 此板块主要包括选择求解器、目标函数描述、约束条件描述等部分。 选择合适的求解器以及恰当的优化算法,是进行优化问题求解的首要工作。 ?Solver:选择优化问题的种类,每类优化问题对应不同的求解函数。 ?Algorithm:选择算法,对于不同的求解函数,可用的算法也不同。 Problem框组用于描述优化问题,包括以下内容: ?Objective function: 输入目标函数。 ?Derivatives: 选择目标函数微分(或梯度)的计算方式。 ?Start point: 初始点。 Constraints框组用于描述约束条件,包括以下内容: ?Linear inequalities: 线性不等式约束,其中A为约束系数矩阵,b代表约束向量。 ?Linear equalities: 线性等式约束,其中Aeq为约束系数矩阵,beq代表约束向量。 ?Bounds: 自变量上下界约束。 ?Nonlinear Constraints function; 非线性约束函数。 ?Derivatives: 非线性约束函数的微分(或梯度)的计算方式。 Run solver and view results框组用于显示求解过程和结果。 (对于不同的优化问题类型,此板块可能会不同,这是因为各个求解函数需要的参数个数不一样,如Fminunc 函数就没有Constraints框组。) 2、优化选项(Options) ?Stopping criteria: 停止准则。

应用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优化工具箱应用简介

MATLAB优化工具箱 1 工具箱概述 1.1 功能 (1)求解无约束条件非线性极小值; (2)求解约束条件下非线性极小值,包括目标逼近问题、极大-极小值问题和半无限极小值问题; (3)求解二次规划和线性规划问题; (4)非线性最小二乘逼近和曲线拟合; (5)非线性系统的方程求解; (6)约束条件下的线性最小二乘优化; (7)求解复杂结构的大规模优化问题。 1.2 工具箱的新特色 MATLAB R2008b使用的是4.1版本的优化工具箱,较3.x的变化在于: (1)fmincon、fminimax和fgoalattain中引入了并行机制,加快梯度计算速度; (2)函数gatool和pserchtool整合到优化工具箱GUI中; (3)函数fmincon的求解器中新增内点算法; (4)提供了KNITRO优化库的接口; (5)函数lsqcurvefit、lsqnonlin和fsolve的优化选项参数PrecondBandWinth默认值由0变为inf; (6)优化选项参数TolConSQP的默认值改为1e-6; (7)输出结构中引入了参数constrviolation。 2 工具箱函数 常用函数: 输入参数中可以用options,用于所有函数,其中包括有一下参数。 (1)Display:结果显示方式,off不显示,iter显示每次迭代的信息,final为最终结果,notify只有当求解不收敛的时候才显示结果。 (2)MaxFunEvals:允许函数计算的最大次数,取值为正整数。 (3)MaxIter:允许迭代的最大次数,正整数。 (4)TolFun:函数值(计算结果)精度,正整数。 (5)TolX:自变量的精度,正整数。 而且可以用函数optimset创建和修改。 模型输入时需要注意问题: (1)目标函数最小化;

基于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:标准形式: 元函数 为其中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程序文件

机械优化设计作业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.机械优化设计的全过程一般可以分为如下几个步骤: 1)建立优化设计的数学模型; 2)选择适当的优化方法; 3)编写计算机程序; : 4)准备必要的初始数据并伤及计算; 5)对计算机求得的结果进行必要的分析。 其中建立优化设计数学模型是首要的和关键的一步,它是取得正确结果的前提。优化方法的选取取决于数学模型的特点,例如优化问题规模的大小,目标函数和约束函数的性态以及计算精度等。在比较各种可供选用的优化方法时,需要考虑的一个重要因素是计算机执行这些程序所花费的时间和费用,也即计算效率。 2.建立数学模型的基本原则与步骤 ①设计变量的确定; — 设计变量是指在优化设计的过程中,不断进行修改,调整,一直处于变化的参数称为设计变量。设计变量的全体实际上是一组变量,可用一个列向量表示: x=。 ②目标函数的建立; 选择目标函数是整个优化设计过程中最重要的决策之一。当对某以设计性能有特定的要求,而这个要求有很难满足时,则针对这一性能进行优化会得到满意的效果。目标函数是设计变量的函数,是一项设计所追求的指标的数学反映,因此它能够用来评价设计的优劣。 目标函数的一般表达式为: 。 f(x)=,要根据实际的设计要求来设计目标函数。 ③约束条件的确定。 一个可行性设计必须满足某些设计限制条件,这些限制条件称为约束条件,简称约束。 由若干个约束条件构成目标函数的可行域,而可行域内的所有设计点都是满足设计要求的,一般情况下,其设计可行域可表示为

用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优化工具箱基本用法.

Matlab 优化工具箱 x = bintprog(f, A, b, Aeq, Beq, x0, options) 0-1规划

用MATLAB 优化工具箱解线性规划 命令:x=linprog (c ,A ,b ) 2、模型: beq AeqX b AX ..min =≤=t s cX z 命令:x=linprog (c ,A ,b ,Aeq,beq ) 注意:若没有不等式:b AX ≤存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ]. 3、模型: VUB X VLB beq AeqX b AX ..min ≤≤=≤=t s cX z 命令:[1] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB ) [2] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB, X0) 注意:[1] 若没有等式约束, 则令Aeq=[ ], beq=[ ]. [2]其中X0表示初始点 4、命令:[x,fval]=linprog(…) 返回最优解x及x处的目标函数值fval. 例1 max 6543216.064.072.032.028.04.0x x x x x x z +++++= 85003.003.003.001.001.001.0. .654321≤+++++x x x x x x t s 70005.002.041≤+x x 10005.002.052≤+x x 90008.003.063≤+x x 6,2,10 =≥j x j 解 编写M 文件小xxgh1.m 如下: c=[-0.4 -0.28 -0.32 -0.72 -0.64 -0.6]; A=[0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08]; b=[850;700;100;900]; Aeq=[]; beq=[]; vlb=[0;0;0;0;0;0]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub) min z=cX b AX t s ≤..1、模型:

(完整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求解机械设计优化问题的分析 周婷婷 (能源与动力学院,油气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程序

优化计算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在土木工程中的应用 MATLAB是由美国MathWorks公司于1984年发布的、面向科学计算、数据可视化以及交互程序设计的高级计算机语言。MA TLAB软件开发的初衷是方便地进行矩阵运算,如今的MATLAB已经把功能延伸到了科学研究和工程应用的诸多领域。在国外,MA TLAB已经成为数值分析、数理统计、系统识别、信号处理、动态仿真等领域的基本工具。同传统的土木工程计算机语言FORTRAN和C相比,MA TLAB 更具有以下几大优势: a)功能强大。除了数值计算上的绝对优势外,MA TLAB5.2以上版本中还开发了自己的符号计算功能。用户只要拥有一个MAT ,就可以方便的处理诸如矩阵运算,线性与非线性方程求解,特征值问题,统计及优化问题了。 b)语言简单。MA TLAB允许用户以数学形式的语言编写程序,比FORTRAN和C更接近计算公式的书写思维方式。它的操作和功能函数指令就是常用计算机和数学上一些简单的英文单词。 c)扩充能力强、可开发性强。MATLAB本身的函数就是以源代码形式出现,用户可以仿照其写法,创建自己的程序“库”。另外,MA TLAB可以方便的与FORTRAN 或C语言接口,充分利用现有资源。 d)编程易,效率高。MA TLAB程序文件是纯文本文件,用任何字处理文件都可以对它进行编写和修改。因此程序易调试,人机交互性强。另外,MATLAB自己也拥有视窗环境下的调试系统,程序调试简单、方便。随着科研水平的不断提高,科研领域的不断扩展,多学科并行、交叉发展已成必然,认识到MATLAB的强大功能,使得MATLAB在土木工程领域中得到充分应用,达到利用MA TLAB来快速实现科研构想和提高工作效率的效果。 1 MA TLAB在结构分析中的应用 土木工程中的结构分析主要是指结构在静力和动力荷载作用时结构内力和位移的求解问题。由于结构的复杂多变和对求解精度的严格要求,采用有限元法(finite element method)程序是常用的分析手段。有限元程序中非线性方程组的求解和解的收敛问题,是困扰许多科研人员的基本问题之一,采用FORTRAN或C不但需要很多语句,而且需要研究者有较高的计算机理论和实际操作水平,程序的编制与调试又要占用近一半的研究时间。MA TLAB的出现,可以在用简单的语句完成基本算法程序后,方程组的求解利用MA TLAB自身的命令实现,整个程序不但小巧、便于调试与操作,而且解的收敛问题易于解决。例如,经典的非线性方程组Newton解法MATLAB求解程序仅有l4行,而用C语言编写的Newton法子函数程序接近30行,而且在每个迭代步当Newton方程建立后,还要再调用其他子函数程序求解线性方程组,较MA TLAB程序要繁琐许多。再有,对图1所示的为整体坐标系中二维一次四结点单元,单元可以是任意形状的四边形。这种单元比较容易满足结构实际分析的需要,该单元在整体坐标系下(x0y坐标系)的形函数表达式非常复杂,用FORTRAN或C语言将其表达出来,是非常困难的。而用MATLAB语言就可以很容易的将其写出。如二维一次四结点单元的MA TLAB程序命令如下: clear v:sym(’[1,X,Y,X Y]’); m=sym(’【1,xl,yl,xl yl;x2,y2,x2 y2;1, x3,y3,x3 y3;1,x4,y4,x4 y4]’); mm=inv(m); d=v mm simplify(factor(d));

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 有所下降;

相关主题
文本预览