当前位置:首页 » 软件设计 » 机械结构优化设计

机械结构优化设计

发布时间: 2021-01-06 05:01:20

① 机械可靠性设计,机械优化设计学习什么软件

  1. SOLIDWORKS主要用于三维制图,并且用于简单零件级的受力分析,对于本科水平的人就内很容易掌握;

  2. ANSYS的模容块很多,有限元分析具有明显优势,但建模与参数设置很复杂,一般水平的人员很难熟练掌握,尤其需要学会理论力学、材料力学及固体力学等;

  3. 至于MATLAB,对于数据分析图标整理很有帮助;

  4. 对于纯机械可靠性设计,专业性很强,一般企业不设置这个岗位,除非国防军工、航天等特殊领域,更多的可靠性设计更着重电子元器件的分析;

  5. 机械论坛很多,比如中国机械网、机械设计论坛、机械cad网等,多看看有用的帖子,你会思索很多东西,慢慢就成熟了;

② 机械优化设计试题

压根看不清你的题

③ 优化设计在机械工程领域的相关书籍

提到机械方面的书籍,首先我会想到的就是Robert L. Norton写的书,最喜欢的是他版写的Design of Machinery,很多图书馆都有权第二版的,最新的是第五版,内容变动不大,增加了少许章节和补充

④ 对机械结构的优化设计需要考虑哪些方面

在满足使用的有效性的情况下,需要考虑其成本、维修,使用习惯,外观,大小,重量等

⑤ 机械工业出版社出版的《基于hyperworks的结构优化设计技术》资料下载地址下载不了

一楼说的没错,参考资料在软件路径下都有

⑥ 紧急求助啊!机械制造方面的有个专业叫工程优化设计,这和工程结构优化设计有区别吗可以在加分啊。

用我们学过这个方面知识的同学的话说,不管加什么前缀,后缀,带优化设计的专业或课程或模块方向,都是扯淡。
优化设计大概就是运用计算机(有数理的理论基础的,知识体系并非全是计算机)辅助分析,来到达设计方面的最优化,这个算是好的说法了,不好的说法,就教你些有限元分析啦,ansys什么的软件运用啦,学了没啥鸟用。
并不是说这些学科和知识没用,在国外机械类专业里面,这些知识方法和能力,就跟我们的机械制图,一样属于基础的,人人都得会的基础,而到了中国,因为软件全英文,理论又过于理论化,导致很多我这样的学生学不懂,从而就有那么一群搞学术的人总细化冠以优化设计这个词来凸显自己的高深,因为这个词让外人觉得很有技术水平,很琢磨不透,其实……
国内没人请你做优化设计的事儿的,就算研究所也只是搞学术的时候瞎弄了写写论文罢了,没任何的用处,在行业内这个已经是大家都知道的事实了,你说你会设计,有人请你,你说你会优化设计……,但有些东西也不能怪罪学术圈子,举个例子,分析设计的理论暂且不说,比如一个零件的强度分析,基础的数据,材料强度得有吧,就国内目前这种材料市场来看,别说强度了,你买回来的45钢是不是45钢都难说,不经过热处理,不经过理化试验,没人敢用,其他的铸件什么的更是……你连基础数据都没有,还分析个屁啊,分析都没结果,还谈什么优化,这不是扯淡这是什么。

⑦ 机械优化设计

非常有挑战性的工作,使用solidworks simulation可以助你达到目标。

⑧ 机械优化设计大作业:平面连杆机构的优化设计,用C语言编程!

计算 f(x1,x2)=x1^2+2*x2^2-4*x1-2*x1*x2 的无约束极值,初始点x0=[1,1]。

/*
tt ---- 一维搜索初始步长
ff ---- 差分法求梯度时的步长
ac ---- 终止迭代收敛精度
ad ---- 一维搜索收敛精度
n ----- 设计变量的维数
xk[n] -- 迭代初始点
*/

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<conio.h>

#define tt 0.01
#define ff 1.0e-6
#define ac 1.0e-6
#define ad 1.0e-6
#define n 2

double ia;

double fny(double *x)
{
double x1=x[0],x2=x[1];

double f;
f=x1*x1+2*x2*x2-4*x1-2*x1*x2;

return f;
}

double * iterate(double *x,double a,double *s)
{
double *x1;
int i;
x1=(double *)malloc(n*sizeof(double));
for(i=0;i<n;i++)
x1[i]=x[i]+a*s[i];
return x1;
}

double func(double *x,double a,double *s)
{
double *x1;
double f;
x1=iterate(x,a,s);
f=fny(x1);
return f;
}

void finding(double a[3],double f[3],double *xk,double *s)
{
double t=tt;
int i;
double a1,f1;
a[0]=0;f[0]=func(xk,a[0],s);
for(i=0;;i++)
{
a[1]=a[0]+t;
f[1]=func(xk,a[1],s);
if(f[1]<f[0]) break;
if(fabs(f[1]-f[0])>=ad)
{
t=-t;
a[0]=a[1];f[0]=f[1];
}
else
{
if(ia==1) return; //break
t=t/2;ia=1;
}
}

for(i=0;;i++)
{
a[2]=a[1]+t;
f[2]=func(xk,a[2],s);
if(f[2]>f[1]) break;
t=2*t;
a[0]=a[1];f[0]=f[1];
a[1]=a[2];f[1]=f[2];
}
if(a[0]>a[2])
{
a1=a[0];
f1=f[0];
a[0]=a[2];
f[0]=f[2];
a[2]=a1;
f[2]=f1;
}
return;
}

double lagrange(double *xk,double *ft,double *s)
{
int i;
double a[3],f[3];
double b,c,d,aa;
finding(a,f,xk,s);
for(i=0;;i++)
{
if(ia==1)

d=(pow(a[0],2)-pow(a[2],2))*(a[0]-a[1])-(pow(a[0],2)-pow(a[1],2))*(a[0]-a[2]);
if(fabs(d)==0) break;

c=((f[0]-f[2])*(a[0]-a[1])-(f[0]-f[1])*(a[0]-a[2]))/d;
if(fabs(c)==0) break;

b=((f[0]-f[1])-c*(pow(a[0],2)-pow(a[1],2)))/(a[0]-a[1]);
aa=-b/(2*c);
*ft=func(xk,aa,s);
if(fabs(aa-a[1])<=ad)
if(aa>a[1])
{
if(*ft>f[1])
else if(*ft<f[1])
else if(*ft==f[1])
{
a[2]=aa;a[0]=a[1];
f[2]=*ft;f[0]=f[1];
a[1]=(a[0]+a[2])/2;
f[1]=func(xk,a[1],s);
}
}
else
{
if(*ft>f[1])
else if(*ft<f[1])
else if(*ft==f[1])
{a[0]=aa;a[2]=a[1];
f[0]=*ft;f[2]=f[1];
a[1]=(a[0]+a[2])/2;
f[1]=func(xk,a[1],s);
}
}

}
if(*ft>f[1])
return aa;
}

double *gradient(double *xk)
{
double *g,f1,f2,q;
int i;
g=(double*)malloc(n*sizeof(double));
f1=fny(xk);
for(i=0;i<n;i++)
{q=ff;
xk[i]=xk[i]+q; f2=fny(xk);
g[i]=(f2-f1)/q; xk[i]=xk[i]-q;
}
return g;
}

double * bfgs(double *xk)
{
double u[n],v[n],h[n][n],dx[n],dg[n],s[n];
double aa,ib;
double *ft,*xk1,*g1,*g2,*xx,*x0=xk;
double fi;
int i,j,k;

ft=(double *)malloc(sizeof(double));
xk1=(double *)malloc(n*sizeof(double));

for(i=0;i<n;i++)
{
s[i]=0;
for(j=0;j<n;j++)
{
h[i][j]=0;
if(j==i) h[i][j]=1;
}
}
g1=gradient(xk);
fi=fny(xk);
x0=xk;

for(k=0;k<n;k++)
{
ib=0;
if(ia==1)
ib=0;
for(i=0;i<n;i++) s[i]=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
s[i]+= -h[i][j]*g1[j];
aa=lagrange(xk,ft,s);
xk1=iterate(xk,aa,s);
g2=gradient(xk1);

for(i=0;i<n;i++)
if((fabs(g2[i])>=ac)&&(fabs(g2[i]-g1[i])>=ac))

if(ib==0)
fi=*ft;
if(k==n-1)
{ int j;
xk=xk1;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
h[i][j]=0;
if(j==i) h[i][j]=1;
}
g1=g2; k=-1;
}

else
{
int j;
double a1=0,a2=0;
for(i=0;i<n;i++)
{
dg[i]=g2[i]-g1[i];
dx[i]=xk1[i]-xk[i];
}

for(i=0;i<n;i++)
{
int j;
u[i]=0;v[i]=0;
for(j=0;j<n;j++)
{
u[i]=u[i]+dg[j]*h[j][i];
v[i]=v[i]+dg[j]*h[i][j];
}
}

for(j=0;j<n;j++)
{
a1+=dx[j]*dg[j];
a2+=v[j]*dg[j];
}
if(fabs(a1)!=0)
{
a2=1+a2/a1;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
h[i][j]+=(a2*dx[i]*dx[j]-v[i]*dx[j]-dx[i]*u[j])/a1;
}
xk=xk1; g1=g2;
}
}
if(*ft>fi)
xk=x0;
return xx;
}

void main ()
{

int k;
double *xx,f;
double xk[n]=;
xx=bfgs(xk);
f=fny(xx);
printf("\n\nThe Optimal Design Result Is:\n");
for(k=0;k<n;k++)

printf("\n\tf*=%f",f);
getch();
}

这是基于一本书上的算法。但我很奇怪,原书中的算法有结果列出,但是我却不能通过编译。真是纳闷!修改后可以得到结果了,如果你要使用这个简单的程序,你只需更改 维数n、double fny(double *x)的实现部分以及main函数中的xk初值就可以了。不过这个程序也不是很好。

⑨ 机械优化设计 怎么做

专业级的问题

热点内容
美发店认证 发布:2021-03-16 21:43:38 浏览:443
物业纠纷原因 发布:2021-03-16 21:42:46 浏览:474
全国著名不孕不育医院 发布:2021-03-16 21:42:24 浏览:679
知名明星确诊 发布:2021-03-16 21:42:04 浏览:14
ipad大专有用吗 发布:2021-03-16 21:40:58 浏览:670
公务员协议班值得吗 发布:2021-03-16 21:40:00 浏览:21
知名书店品牌 发布:2021-03-16 21:39:09 浏览:949
q雷授权码在哪里买 发布:2021-03-16 21:38:44 浏览:852
图书天猫转让 发布:2021-03-16 21:38:26 浏览:707
宝宝水杯品牌 发布:2021-03-16 21:35:56 浏览:837