智能制造课题
 
 
 
 
 
文章内容页
当前位置: 首页>>教学资源>>实验指导书>>正文
实验一最速下降法(牛顿法)
2020-08-01 18:09  

(用C语言编程实现)

一、实验目的

1、理解最速下降法的求解原理和程序框图;

2、理解C语言程序的基本结构,根据程序框图运用C语言编写正确的程序;

3、掌握Microsoft Visual C++环境下C语言程序的上机调试过程

二、实验前准备

1. 复习Microsoft VisualC++ 6.0开发环境的使用方法。

2. 复习教材相关内容。

3. 写出程序清单。

三、实验条件

1)硬件:具有良好配置的电脑;

2)软件:Microsoft Visual C++ 6.0.

四、实验内容和步骤

1.最速下降法的程序框图

1.1  最速下降法程序框图

2. 实验任务和程序代码

1)任务

已知目标函数,初始点,迭代精度,试用最速下降法(亦称牛顿法、梯度法)目标函数的极小点和极小值。

解:运用梯度法可求出此函数的最优步长

其中分别为目标函数在处的梯度向量。

2C语言代码

#include <stdio.h>

#include <math.h>

#define EP 0.001

float H,s[2];

float x[2]={1,1};

float f(float *q)

{

float p;

p=pow(q[0],2)+2*pow(q[1],2)-4*q[0]-2*q[0]*q[1];

return(p);

}

float h()

{

floathh;

hh=(x[0]*s[0]+2*x[1]*s[1]-2*s[0]-s[1]*x[0]-s[0]*x[1])/(pow(s[0],2)+2*pow(s[1],2)-2*s[0]*s[1]);

/* 求最佳步长*/

return(hh);

}

main()

{

floaty,R;

int i=0,n=0;

do

     {

      n=n+1;

s[0]=2*x[0]-4-2*x[1];

s[1]=4*x[1]-2*x[0];

     R=sqrt(pow(s[0],2)+pow(s[1],2));

printf("\n R is %f.",R);

      H=h();

for(i=0;i<=1;i++)

x[i]=x[i]-H*s[i];

     }

while(R>EP);

y=f(x);

printf("\n The Min is %f.",y);

for(i=0;i<=1;i++)

printf("\n The X%d is %f.",i,x[i]);

printf("\n The Number is %d.",n);

}

3.上机操作步骤

3.1 创建工程

1)启动 Microsoft Visual C++ 6.0

启动VC6.0可以通过“开始”菜单,也可以通过桌面快捷方式等方式。

1.2  VC6.0开发环境

启动之后,我们看到的是空白的VC6.0开发环境截图如图1.2所示。跟大多数的Windows 应用程序一样,VC6.0最上面是菜单,然后是工具栏,中央是工作区,最下面一行是状态栏。我们现在看到的工作区,左边是Workspace 窗口,右边是灰底的空白窗口。

2)创建一个工程

VC6.0中,一个源程序文件必须属于一个工程(Project);所以我们首先来创建一个工程,做如下操作。

选择菜单:文件à新建...

打开下面窗口如下图1.3所示。

1.3  创建工程界面

选择“Win32 Console Application”,也就是Windows 32位控制台程序(也称黑屏程序)。输入工程名称,指定工程存储位置,点击“确定”按钮,弹出如图1.4所示的Win32控制台应用程序配置界面,选择第一个选项,也就是默认选项:一个空的工程,然后点击完成按钮。创建一个空的工程。

1.4  Win32控制台应用程序配置界面

3)确认创建新工程

如下图1.5窗口显示出之前所做的配置,以供最后检查。如果确认无误,该项目将被创建。

1.5  新项目信息窗口

确认该页面显示的内容都是正确的后,点击:确定按钮,创建该项目。VC6.0会根据所填写的配置创建相关的文件夹,创建完成后会显示创建的结果,如下图1.6所示。

1.6  项目创建后VC6.0界面

在窗口的左半部分的Workspace上,我们可以看到有两个,ClassViewFileViewClassView页面会显示当前工程中所声明的类、全局变量等;对于编写C语言程序来说,这个页面没有什么大的作用。FileView页面显示了三个预定义的逻辑文件夹:“Source Files”、“Header Files”、“ResourceFiles”。

3.2 添加一个文件到一个空的工程中

上一节中创建了一个空的工程,本节将添加一个源代码程序到该工程中。

1)创建新的.C源文件

选择菜单:文件 -->新建... ,打开下面窗口,如下图1.7所示。

1.7

Files 标签页面中,进行操作如下表2.1所示。

2.1创建.C源文件操作

顺序

选项

操作

说明

1

文件类型

选择“C++ Source File

因为这里没有 C Source File 选项,所以我们选择  C++ 语言的对应项。

2

文件名

输入:newtonmethod.c

注意newtonmethod.c后面的“.c”后缀是必要的。如果是要创建.cpp件,该后缀就可以不写了。

3

位置

保持默认值,不需要修改。

4

完成

点击"OK"按钮

2)查看源文件

当该.c源文件创建后,在左边Workspace 窗口中的FileView标签页面中,可以看到该新创建的newtonmethod.c节点,如图1.8所示。

1.8  创建源文件newtonmethod.c后的界面

编写程序

1)编写源代码

在程序编辑窗口输入C语言代码,编写完成后的结果如图1.9所示。

1.9  编写程序界面

2编译连接和运行源程序

①点击工具栏中的“编译”工具,这时系统开始对当前的源程序进行编译。如果编译完全成功,会显示“newtonmethod.obj- 0 error(s), 0 warning(s)”。另外,即便有一些warning,也可能编译成功。如果编译未成功,将所发现的错误显示在屏幕下方的组建窗口中。根据错误提示,修改程序后再重新编译,如还有错误,再继续修改、编译,直到没有错误为止。编译后的状态栏显示如图1.10所示。

1.10  编译后的界面

.编译无误后,点击工具栏中的进行连接,这时,在屏幕下方的组建窗口中会显示如下信息:“exp1.exe- 0 error(s), 0 warning(s)”,说明编译连接成功,如图1.11所示,并生成以源文件名为名字的可执行文件(exp1.exe)。

1.11  连接后的界面

.运行程序,选择组建菜单中的“! 执行[exp1.exe]”选项。这时,会出现一个“MS-DOS”窗口,输出结果显示在该窗口中(如图1.12所示)。

1.12  执行结果

到此,得到目标函数的极小点为

极小值为-8

.运行结束后,可以回到文件菜单,点击关闭工作空间选项,关闭当前文件窗口。

五、实验报告

试用最速下降法求目标函数的极小点和极小值。


实验二基于MATLAB优化工具箱的优化计算(一)

. 实验目的

1.了解利用MATLAB优化工具箱进行优化计算和设计的一般步骤;

2.了解MATLAB优化工具箱常用的优化功能函数和适用场合;

3.会运用ATLAB优化工具箱进行优化计算和设计。

. 实验条件

1.软件:MATLAB 7.0

2.硬件:配置良好的计算机

. 实验相关知识

1.运用MATLAB工具箱进行优化计算和设计的一般步骤

1)针对具体工程问题建立优化设计的数学模型,模型中应将不等式约束条件表示成g(X)0的形式;

2)建立目标函数文件(M文件),文件的内容主要为描述目标函数的表达式等,并将文件以自定义的目标函数文件名存储在文件夹中;

3)建立约束函数文件,约束文件中不等式约束函数式均以≤0的形式表达,以自定义的约束函数文件名存储在文件夹中;

4)建立调用优化工具函数的命令文件,文件内容包括初始点、设计变量的边界约束条件、运算结果输出等内容,以自定义的命令文件名存储于文件夹中。

5)将优化设计的命令文件复制到MATLAB命令窗口中进行运算求解。

2.MATLAB优化工具箱常用的优化功能函数

求解线性规划问题的主要函数是linprog

求解二次规划问题的主要函数是quadprog

求解无约束非线性规划问题的主要函数是fminbndfminuncfminsearch

求解约束非线性规划问题的主要函数是fgoalattainfminimax

. 实验内容

(一)线性规划问题的优化求解

1.线性规划的数学模型

s.t.           式(3.1

上式中:

   式(a)为线性目标函数,式(b)为线性不等式约束,式(c)为线性等式约束,式(d)为设计(决策)变量的边界条件。

,为各个决策变量构成的列向量;

,为目标函数各维变量的系数向量;

A——不等式约束方程的系数矩阵;

——等式约束方程的系数矩阵;

——分别为不等式约束方程和等式约束方程右端的常数;

——分别为决策变量的下限和上限;

2.MATLAB中函数调用格式

函数名:linprog

格式:

x=linprog(CAb)求解问题min C*X,约束条件为A*X≤b

x=linprog(C,A,b,Aeq,beq)求解上面的问题,但增加等式约束,即Aeq*X=beq若没有不等式存在,则令A=[]b=[]

x =linprog(C,A,b,Aeq,beq,lb,ub)定义设计变量x的下界lb和上界ub,使得x始终在该范围内,若没有等式约束,令Aeq=[]beq=[]

x = linprog(C,A,b,Aeq,beq,lb,ub,x0)设置初值为x0,该选项只适用于中型问题,默认时大型算法将忽略此值。

x =linprog(C,A,b,Aeq,beq,lb,ub,x0,options)options指定的优化参数进行最小化。

[x,fval]= linprog(...)返回解x处的目标函数值fval

[x,fval,exitflag]= linprog(...)返回exitflag值,描述函数计算的退出条件。

[x,fval,exitflag,output]= linprog(...)返回包含优化信息的输出变量output

[x,fval,exitflag,output,lambda]= linprog(...)将解x处的拉格朗日乘子返回到lambda参数中。

参数说明:

等参数已在前面数学模型的形式中作了说明。

x——最优解;

——返回目标函数在最优点x点的函数值,即最优值;

exitflag——返回算法的终止标志。

exitflag>0,表示函数收敛于解x

exitflag=0表示超过函数估值或迭代的最大数字;

exitflag<0表示函数不收敛于解x

output——返回优化算法信息的一个数据结构。

output=iterations表示迭代次数;

output=algorithm表示使用的运算规则;

output=icgiterations表示PCG跌打次数。

lambda——解xLagrange乘子,它有以下属性:

lambda=lower,表示下界lb

lambda=upper表示上界ub

lambda=ineqlin表示不等式约束;

lambda=eqlin表示等式约束。

x0——初始点;

options——可选项;

需要说明的是,由于MATLAB中函数调用格式默认求解线性规划的极小值,因此如果要求线性规划的最大值,需要将线性规划转换为求最小值的形式。

3.应用举例

【例1(生产规划问题):某厂利用ABC三种原料生产甲、乙、丙三种产品,已知生产每种产品在消耗原料方面的各项指标和单位产品的利润,以及可利用的数量,试制定适当的生产规划使得该工厂的总利润最大。

单位产品所消耗的原料

        产品

原料

现有原料数量(千克)

A

3

4

2

600

B

2

1

2

400

C

1

3

2

800

单位产品利润(万元)

2

4

3

合计:1800千克

解:(1)确定决策变量:

设生产甲、乙、丙三种产品的数量分别是

2)建立目标函数:

根据三种单位产品的利润情况,按照实现总的利润最大化,建立关于决策变量的函数:

3)确定约束条件:

4)在MATLAB命令窗口中依次输入下列系数:

>> C=[-2,-4,-3];

>> A=[3,4,2;2,1,2;1,3,2];

>> b=[600,400,800]';

>>Aeq=[];

>>beq=[];

>>lb=zeros(3,1);

5)调用linprog函数

>> [x,fval]=linprog(C,A,b,Aeq,beq,lb)

得到如下的最优结果:

Optimizationterminated.

x =

0.0000

  66.6667

 166.6667

fval=

-766.6667

(二)无约束非线性规划问题

无约束非线性规划问题的MATLAB函数有fminbndfminsearchfminunc三类,它们的适用范围见图3.1所示。

3.1无约束非线性规划问题的三类函数

1.有边界非线性最小化函数——fminbnd

1)功能和格式

功能:找到固定区间函数的最小值。

使用格式:

[x,fval]=fminbnd(funx1x2options)

x——返回目标函数的最优解

fval——返回目标函数的最优值

fun——目标函数

——设置优化变量给定区间的上下界;

options——设置优化选项参数

2)应用示例

【例2求解一维无约束优化问题在区间[0,1]中的极小值。

解:首先编制求解优化问题的M文件。

点击Matlab菜单栏File--»New--»M-File,打开M文件编辑器窗口,按图3.2的格式编辑M文件。

3.2 M文件

并将文件命名为fun

然后在命令窗口输入:[x,fval]=fminbnd(@fun,0,1),即可得到以下运行结果。

3.3运行结果

为了显示函数图形,我们还可以在命令窗口依次输入ezplot(@fun,[0,10])title('(x^3+cosx+xlogx)/e^x')grid on将得到如图3.4所示的函数图形。

3.4函数图形

2.fminsearch函数

1)功能及格式

功能:求多变量函数的最小值。

格式:

x =fminsearch(fun,x0)

x =fminsearch(fun,x0,options)

[x,fval]= fminsearch(...)

[x,fval,exitflag]= fminsearch(...)

[x,fval,exitflag,output]= fminsearch(...)

说明:

fun——目标函数;

options——设置优化选项参数;

x——返回目标函数的最优解;

fval——返回目标函数在最优解x点的函数值;

exitflag——返回算法的终止标志;

output——返回优化算法的信息的一个数据结构。

2)应用示例

【例3求函数的极小值,初始点x0=[-1.2,1]

解:首先编制求解优化问题的M文件M文件内容和格式如图3.5所示。

3.5 M文件

然后在命令窗口输入:[x,fval] =fminsearch(@myfun7,[-1.2, 1]),按回车键,即可得到如下运行结果:

x =

  1.0000    1.0000

fval =

8.1777e-010

这跟理论计算结果“x=[1,1],最优值为0”极为相近。

小提示:当需要清除MATLAB命令窗口里的内容时,输入clc命令即可。

3.fminunc 函数

1)功能和格式

功能:找到无约束多变量函数的最小值。

格式:

x =fminunc(fun,x0)

x =fminunc(fun,x0,options)

[x,fval]= fminunc(...)

[x,fval,exitflag]= fminunc(...)

[x,fval,exitflag,output]= fminunc(...)

[x,fval,exitflag,output,grad]= fminunc(...)

[x,fval,exitflag,output,grad,hessian]= fminunc(...)

grad是返回目标函数在最优解x点的梯度;

  hessian是返回目标函数在最优解x点的 hessian矩阵值。

  其余参数的意义跟前面相同,在此不再累赘述。

2)应用示例

4】求函数的最小值,初始点x0=

[-1,1]

解:首先,编写m文件,格式和内容如图3.6所示。

3.6 M文件

然后在MATLAB命令窗口输入:

x0 =[-1,1];    % Starting guess

options =optimset('LargeScale','off');

[x,fval,exitflag,output]= fminunc(@objfun3,x0,options),按回车键,即可得到如下运行结果:

Optimizationterminated: relative infinity-norm of gradient less than options.TolFun.

x =

  0.5000   -1.0000

fval =

1.0983e-015

exitflag =

   1

output =

iterations: 8

funcCount: 66

stepsize: 1

firstorderopt:7.3704e-008

algorithm:'medium-scale: Quasi-Newton line search'

message:'Optimization terminated: relative infinity-norm of gradient less thanoptions.TolFun.'

5求函数的最小值,初始点x0=[0,0]

解:Matlab程序为:

fun='exp(x(1))*(2*x(1)^2+3*x(2)^2+2*x(1)*x(2)+3*x(2)+1)';

x0=[0,0];

options=optimset('largescale','off','display','iter','tolx',1e-8,'tolfun',1e-8);

[x,fval,exitflag,output,grad,hessian]=fminunc(fun,x0,options)

运行结果为:

Gradient's

Iteration Func-count      f(x)       Step-size      infinity-norm

   0          3               1                            3

   1          9        0.369485      0.135362          0.813  

   2         12        0.284572             1           0.77  

   3         18        0.134248      0.424466          0.137  

   4         21        0.133024             1          0.018  

   5         24        0.132968             1        0.00839  

   6         27        0.132961             1       0.000935  

   7         30        0.132961             1      5.28e-005  

   8         33        0.132961             1       1.1e-006  

   9         36        0.132961             1      3.91e-008  

Optimizationterminated: relative infinity-norm of gradient less than options.TolFun.

Computingfinite-difference Hessian using user-supplied objective function.

x =

  0.2695   -0.5898

fval =

  0.1330

exitflag =

   1

output =

iterations: 9

funcCount: 36

stepsize: 1

firstorderopt:3.9116e-008

algorithm:'medium-scale: Quasi-Newton line search'

message:'Optimization terminated: relative infinity-norm of gradient less thanoptions.TolFun.'

grad =

 1.0e-007*

 -0.0186

 -0.3912

hessian =

  5.1064    2.6186

2.6186   7.8561

本例的程序对参数options进行了设置。

'largescale','off'关闭了大规模方式;

'display',用来控制计算过程的显示;

'iter'表示显示优化过程的每次计算结果;

'off'表示不显示所有输出,'final'仅输出最后结果;

'tolx'用来控制输入变量x的允许误差精度,本利设置为1e-8

'tolfun'是控制目标函数的允许误差精度,缺省值是1e-4,本例为1e-8


实验三  基于MATLAB优化工具箱的优化计算(二)

. 实验目的

1.了解MATLAB求解非线性约束优化问题的fmincon函数形式;

2.会运用fmincon优化工具箱进行优化计算和设计。

. 实验条件

1.软件:MATLAB 7.0

2.硬件:配置良好的计算机

三、实验内容

1MATLAB求解非线性约束优化问题的fmincon函数格式和语法说明

fmincon是求解多维约束优化问题

minf(X)

s.t.

的优化工具箱函数,它的语法说明如下:

[x,fval,exitflag,output,grad,hessian]=

fmincon(@fun,x0,A,b,Aeq,beq,Lb,Ub,‘Nlc’,options,P1,P2…)

  其中,输出参数有:

x是返回目标函数的最优解;

fval是返回目标函数在最优解x点的函数值;

exitflag是返回算法的终止标志;

output是返回优化算法的信息的一个数据结构

grad是返回目标函数在最优解x点的梯度;

hessian是返回目标函数在最优解x点的hessian矩阵值。

  输入参数有:

fun是调用目标函数的函数文件名;

x0是初始点;

Ab分别是线性不等式约束条件的系数矩阵和常数向量;

Aeqbeq分别为线性等式约束条件的系数矩阵和常数向量;

LbUb设计变量X的下界向量和上界向量;

  Nlc是定义非线性约束条件的函数名;

options是设置优化选项参数;

P1,P2等是传递给fun的附加参数.

参数A,b,Aeq,beq,Lb,Ub,options如果没有定义可用空矩阵符号“[]”代替。

UnconstrainedMinimization ExampleConsider the problem of finding a set of values [x1, x2]that solves      (2-1)  To solve thistwo-dimensional problem, write an M-file that returns the function value. Then,invoke the unconstrained minimization routine fminunc. Step 1: Write an M-fileobjfun.m.function f = objfun(x)

f =exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

Step 2: Invokeone of the unconstrained optimization routines.x0 = [-1,1];    % Starting guess

options= optimset('LargeScale','off');

[x,fval,exitflag,output]= fminunc(@objfun,x0,options);

After40 function evaluations, this produ

fminuncFind a minimum of an unconstrained multivariable function  where x is avector and f(x) is a function that returns a scalar. Syntaxx = fminunc(fun,x0)

x =fminunc(fun,x0,options)

[x,fval]= fminunc(...)

[x,fval,exitflag]= fminunc(...)

[x,fval,exitflag,output]= fminunc(...)

[x,fval,exitflag,output,grad]= fminunc(...)

[x,fval,exitflag,output,grad,hessian]= fminunc(...)

2、应用示例

求侧面积为常数6*52m2的体积最大的长方体体积。

   设该长方体的长、宽、高分别为x1x2x3,据题意得到下面的数学模型:

编一个M文件optim25_2o.m,返回x处的函数值f

function f = myfun(x)

f = -x(1) * x(2) * x(3);

由于约束条件是非线性等式约束,所以需要编写一个约束条件M文件opt25_2c.m

function [c,ceq] = mycon(x)

ceq =x(2)x(3)+x(3)x(1)+x(1)x(2)-75

下一步给定初值,并调用优化过程(磁盘中M文件名为opt25_2.m)

x0 = [4; 5; 6];

lb=zeros(3,1);

[x,fval,exitflag,output,lambda]=fmincon(@opt25_2o,x0,[],[],[],[],lb,[],@opt25_2c)

计算结果为:

Optimization terminated successfully:

Search direction less than2*options.TolX and

maximum constraint violation is less thanoptions.TolCon

Active Constraints:

    1

x =

   5.0000

   5.0000

   5.0000

fval =

-125.0000

exitflag =

    1

output =

iterations: 7

funcCount: 38

stepsize: 1

algorithm: 'medium-scale: SQP,Quasi-Newton, line-search'

firstorderopt: []

cgiterations: []

lambda =

lower: [3x1 double]

upper: [3x1 double]

eqlin: [0x1 double]

eqnonlin: 2.5000

ineqlin: [0x1 double]

ineqnonlin: [0x1 double]

优化结果显示过程成功收敛,搜索方向小于两倍options.TolX,最大违约值小于options.TolCon,主动约束为1个。

问题的解为x(1)=x(2)=x(3)=5.0000m,最大体积为125.0000m3exitflag=1,表示过程成功收敛于解x处。output输出变量显示了收敛过程中的迭代次数、目标函数计算次数、步长、算法等信息。lambda则包含模型信息。


实验四  机械优化设计实例

一、实验目的

1、能够针对实际优化设计及问题建立优化模型;

2、能够运用Matlab优化工具库对模型进行优化求解;

3、能结合实际和相关标准对优化结果进行处理。

二、实验条件

1.软件:MATLAB 7.0

2.硬件:配置良好的计算机

三、实验内容

某二级斜齿圆柱齿轮减速器,高速级输入功率转速,总传动比i=31.5,齿轮宽度系数,齿轮材料和热处理:大齿轮45号钢正火187207HB,小齿轮45号钢调质228255HB,工作寿命10年以上。要求按照总中心距最小来确定齿轮传动方案。

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

设计变量:

将涉及总中心距a齿轮传动方案的6个独立参数作为设计变量

目标函数:

              减速器总中心距最小为目标函数


                                             

③约束条件:含性能约束和边界约束

性能约束条件;

  高速级齿轮接触强度条件

低速级齿轮接触强度条件

  高速级大齿轮弯曲强度条件

低速级大齿轮弯曲强度条件

大齿轮与轴不干涉条件

边界约束条件:

低速级齿轮副模数的下限和上限

高速级小齿轮齿数的下限和上限

高速级大齿轮齿数的下限和上限

低速级小齿轮齿数的下限和上限

高速级传动比的下限和上限

齿轮副螺旋角的下限和上限

(2)编制优化设计的M文件

%两级斜齿轮减速器总中心距目标函数,文件名为:Jsqyh_f.m

function f=jsqyh_f(x);

hd=pi/180;

a1=x(1)*x(3)*(1+x(5));

a2=x(2)*x(4)*(1+31.5/x(5));

cb=2*cos(x(6)*hd);

f=(a1+a2)/cb;

%两级斜齿轮减速器优化设计的非线性不等式约束函数,文件名为:Jsqyh_g.m

function[g,ceq]=jsqyh_g(x);

hd=pi/180;

g(1)=cos(x(6)*hd)^3-3.079e-6*x(1)^3*x(3)^3*x(5);

g(2)=x(5)^2*cos(x(6)*hd)^3-1.701e-4*x(2)^3*x(4)^3;

g(3)=cos(x(6)*hd)^2-9.939e-5*(1+x(5))*x(1)^3*x(3)^2;

g(4)=x(5)^2.*cos(x(6)*hd)^2-1.076e-4*(31.5+x(5))*x(2)^3*x(4)^2;

g(5)=x(5)*(2*(x(1)+50)*cos(x(6)*hd)+x(1)*x(2)*x(3))-x(2)*x(4)*(31.5+x(5));

ceq=[];

   [x,fval,exitflag,output, grad,hessian]=

fmincon(@fun,x0,A,b,Aeq,beq,Lb,Ub,’Nlc’,options,P1,P2…)

文件名为:eg9_6.m

x0=[2;4;18;20;6.4;10];%设计变量的初始值

lb=[2;3.5;14;16;5.8;8];%设计变量的下限

ub=[5;6;22;22;7;15];%设计变量的上限

[x,fn]=fmincon(@jsqyh_f,x0,[],[],[],[],lb,ub,@jsqyh_g);

disp '     ************两级斜齿轮传动中心距优化设计最优解*************'

fprintf(1,'       高速级齿轮副模数   Mn1=%3.4fmm\n',x(1))

fprintf(1,'       低速级齿轮副模数   Mn2=%3.4fmm\n',x(2))

fprintf(1,'       高速级小齿轮齿数    z1=%3.4fmm\n',x(3))

fprintf(1,'       低速级小齿轮齿数    z2=%3.4fmm\n',x(4))

fprintf(1,'       高速级齿轮副传动比  i1=%3.4fmm\n',x(5))

fprintf(1,'       齿轮副螺旋角      beta=%3.4fmm\n',x(6))

fprintf(1,'       减速器总中心距     a12=%3.4fmm\n',fn)

g=jsqyh_g(x); disp'     ==========最优点的性能约束函数值=========='

fprintf(1,'   高速级齿轮副接触疲劳强度约束函数值    g1=%3.4fmm\n',g(1))

fprintf(1,'   低速级齿轮副接触疲劳强度约束函数值   g2=%3.4fmm\n',g(2))

fprintf(1,'   高速级大齿轮齿根弯曲强度约束函数值   g3=%3.4fmm\n',g(3))

fprintf(1,'   低速级大齿轮齿根弯曲强度约束函数值   g4=%3.4fmm\n',g(4))

fprintf(1,'   大齿轮顶圆与轴不干涉几何约束函数值   g5=%3.4fmm\n',g(5))

[x,fval,exitflag,output, grad,hessian]=

fmincon(@fun,x0,A,b,Aeq,beq,Lb,Ub,’Nlc’,options,P1,P2…)

(3) M文件运行结果及优化结果处理

************两级斜齿轮传动中心距优化设计最优解*************

       高速级齿轮副模数   Mn1=2.0461mm2mm

低速级齿轮副模数   Mn2=3.6059mm4mm

       高速级小齿轮齿数    z1=18.515619

低速级小齿轮齿数    z2=16.000016

       高速级齿轮副传动比   i1=5.80005.8

       齿轮副螺旋角      beta=8.00009.838mm

       减速器总中心距     a12=317.4186mm338.292340mm

==========最优点的性能约束函数值==========

  高速级齿轮副接触疲劳强度约束函数值    g1=0.0000mm

低速级齿轮副接触疲劳强度约束函数值   g2=0.0000mm

  高速级大齿轮齿根弯曲强度约束函数值    g3=-1.0042mm

低速级大齿轮齿根弯曲强度约束函数值   g4=-15.1854mm

  大齿轮顶圆与轴不干涉几何约束函数值    g5=-761.8043mm

关闭窗口
 
 联系我们 | 网站地图 | 返回首页 
站内搜索:

版权所有:攀枝花学院机械工程实践教学中心