材料選擇

在機械工程領域中,經常會遇到要爲設計好的結構或者部件選擇合適的材料的問題。材料的選擇問題要考慮到多方面的因素,力學性能、結構的重量要求、材料的經濟性等等。目前,工程材料選擇一般的策略是根據經驗從一個龐大的材料庫中爲結構或者部件中的不同部分選擇較爲合適的不同材料,然後對整個選材方案進行評價,如果符合要求,即採用,否則繼續選擇。這種依賴於經驗的選擇方法缺乏科學性,無法保證每次的選擇是最優的。因此,希望您能根據所學的知識,爲企業提供一個合適的解決方案。
爲了簡化問題,現將某些問題具體化(實際參加建模比賽時,問題都比較抽象,因此很多需要自己將問題進行具體化!!!!):
1、所設計的方案主要考慮結構的質量和經濟性,結構的類型可以自行定義,不要太複雜,能說明問題即可(建議採用下圖所示結構,所需尺寸可以自己定義);
2、材料選擇需要一個材料庫,下表中給出了一個簡單的16個材料的數據庫,材料屬性中缺少的信息需要隊員自行補充(查閱資料獲得實際價格,或者人爲給定!)
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

建模隊員需要完成的任務

1、對問題進行一個較爲全面的瞭解,閱讀相關文獻(中英文),能較爲清楚地表述所研究的問題,明確該問題的難點所在,闡述自己的突破口,能夠較清楚地表達自己的思路和建模的過程;
2、建立合適的材料選擇數學模型;
3、研究數學模型的求解策略,研究是否具有較高效率的求解算法,給出至少一種算法流程圖。

寫作隊員需要完成的任務

對問題進行一個較爲全面的瞭解,閱讀相關文獻(中英文),能較爲清楚地表述所研究的問題、該問題目前的主要解決方法以及存在的不足,明確該問題的難點所在,以合理的文章結構將一種現有的解決方法表述出來;參考成功的數模參賽論文結構,論文的語言表述以及文章的結構將是重點考察的對象,此外,文章的排版、圖標的繪製也將作爲考察對象。

編程隊員需要完成的任務

對問題進行一個較爲全面的瞭解,閱讀相關文獻(中英文),能較爲清楚地表述所研究的問題,明確該問題的難點所在。針對現有的一種數學模型,提出恰當的求解方法,給出算法的實現流程圖,並用程序實現(最好用MATLAB!不建議用C語言!)(可做適當的簡化)

提交的答卷
所有的隊員都需要提交一份電子文檔,編程人員需要同時提交所編寫的程序代碼(m文件或者c文件,不要將代碼粘貼在文檔的最後!!),電子文檔的內容包括了自己所有的需要完成的任務。不需要都完成一篇完整的數模論文,建模隊員需要將模型的建立過程表述清楚,編程隊員需要將算法實現過程以及實現難點表述清楚。寫作隊員需要給出結構想對較爲完整的論文,但是內容上根據自己對問題的理解進行編寫。對具體的建模過程和算法實現過程不做要求,但是爲了論文的完整性,可以適當地涉及。

問題分析:
此類多目標優化問題最常用的方法建立的層次分析法(AHP)將問題化爲目標層、準則層及方案層,通過建立比較矩陣求權向量。但爲了使問題的解決更合理且易求解,本人創新建立了一種模型。即使力學性能成爲必須達到的約束條件,經濟性成爲我們需要求最值的目標函數。而經濟性的模型建立爲購買價格與使用壽命的商值。

模型假設:
1.在選擇材料時只考慮材料的力學性能(拉應力強度 切應力強度 彈性模量),與經濟性(購買價格及使用壽命),其他條件(比如說自重,工程材料受力主要來源於機械運動,自重影響很小,且不同的工程材料密度相似)忽略不考慮。
2.工程人員需要的材料必出現在材料庫中。
3.工程人員提出要求只選擇一種材料。

符號聲明:
A 經濟性
B 購買價格(元)
C 使用壽命(天)
D 材料的拉應力強度(Mpa)
E 材料的切應力強度(Mpa)
F 材料的彈性模量
G 需求的材料的最小拉應力強度(Mpa) H 需求的材料的最小切應力強度(Mpa)
L 需求的材料的最小彈性模量

模型建立:
目標函數:P=B/C
約束條件:1.D>=G
2.E>=H
3.F>=L
4.只選擇一種材料
問題轉化爲在約束條件下求目標函數最小值問題

數據:
在這裏插入圖片描述

C語言代碼
#include<stdio.h>
void main()
{
   /*各種材料性能數據的錄入(由程序員進行)*/
	int a,b,c,i,j,k=0,l,m,n;
    int d[9]={412,529,570,598,630,696,380,470,490};
	int e[9]={522,639,689,698,740,799,450,570,590};
	int f[9]={365,365,730,365,547,730,365,547,547};
	int g[9]={100,150,200,200,100,150,200,150,200};
	int h[9]={2000,2500,4100,3000,3446,5080,1500,3000,2790};
	int y[9];
	int z[9];
    /*用戶需求的性能輸入(由查詢用戶進行)*/
	printf("請輸入您所需要材料的拉應力強度(Mpa):\n");
    scanf("%d",&a);
	printf("請輸入您所需要材料的切應力強度(Mpa):\n");
    scanf("%d",&b);
    printf("請輸入您所需要材料的彈性模量(Mpa):\n");
    scanf("%d",&c);
    /*模型計算循環*/
    for(j=0;j<=8;j++) z[j]=(h[j])/(f[j]);
    /*篩選材料性能(選出性能可用的材料)循環*/
	for(n=0;n<=8;n++)
	{
	if((d[n]>=a)&&(e[n]>=b)&&(g[n]>=c)) 
	{
		y[k]=n;
	    k++;
     
	}
	}
    
	/*比較可用材料經濟性循環*/
  for(l=0,m=z[(y[0])];l<=k-1;l++)
    {
		if(m>=z[(y[l])])
		{
			i=y[l];
			m=z[(y[l])];
	}
	}
    /*將性能滿足,經濟性最好的材料牌號交給查詢用戶*/
  switch(i)
    {
	case 0: printf("建議您選擇Y20鋼\n"); break;
    case 1: printf("建議您選擇Y35鋼\n"); break;
	case 2: printf("建議您選擇Y40鋼\n"); break;
	case 3: printf("建議您選擇Y45鋼\n"); break;
	case 4: printf("建議您選擇Y50鋼\n"); break;
	case 5: printf("建議您選擇Y65鋼\n"); break;
	case 6: printf("建議您選擇Q235鋼\n"); break;
	case 7: printf("建議您選擇Q255鋼\n"); break;
	case 8: printf("建議您選擇Q275鋼\n"); break;
    default:printf("沒有合適材料\n");
	}
}

lingo:
model:
!建立材料集(成員爲各種材料,屬性爲價格 強度等);
sets:
materials/Y20,Y35,Y40,Y45,Y50,Y65,Q235,Q255,Q275/:jiage,laqiangdu,qieqiangdu,shouming,tanxing,xuanze; 
endsets
!確立目標函數(經濟性);
min=@sum(materials(I):xuanze(I)*jiage(I)/shouming(I));
!進行約束(只選用一種材料);
@for(materials(I):@bin(xuanze(I)));
1=@sum(materials(I):xuanze(I));
!進行力學性能約束(強度剛度);
550<=@sum(materials(I):xuanze(I)*laqiangdu(I));
600<=@sum(materials(I):xuanze(I)*qieqiangdu(I));
150<=@sum(materials(I):xuanze(I)*tanxing(I));
!將各材料的性質送入程序;
data:
jiage=2000,2500,4100,3000,3446,5080,1500,3000,2790;
laqiangdu=412,529,570,598,630,696,380,470,490;
qieqiangdu=522,639,689,698,740,799,450,570,590;
shouming=365,365,730,365,547,730,365,547,547;
tanxing=100,150,200,200,100,150,200,150,200;
enddata     

end

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章