當前位置:首頁 » 軟體設計 » 機械結構優化設計

機械結構優化設計

發布時間: 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