1 刀具的問題概述
問題描述
一道工序用自動化車床連續加工某種零件,由于刀具損壞等原因該工序會出現故障,其中刀具損壞故障占95%, 其它故障僅占 5%。工序出現故障是完全隨機的, 假定在生產任一零件時出現故障的機會均相同。工作人員通過檢查零件來確定工序是否出現故障。
現積累有100 次刀具故障記錄,故障出現時該刀具完成的零件數如附表。現計劃在刀具加工一定件數后定期更換新。
已知生產工序的費用參數如下:
1)故障時產出的零件損失費用 f=200 元/件;
2)進行檢查的費用 t=10 元/次;
3)發現故障進行調節使恢復正常的平均費用 d=3000 元/次(包括刀具費);
4)未發現故障時更換一把新刀具的費用 k=1000 元/次。
研究如下問題:
假定工序故障時產出的零件均為不合格品,正常時產出的零件均為合格品, 試對該工序設計效益最好的檢查間隔(生產多少零件檢查一次)和刀具更換策略。
459 362 624 542 509 584 433 748 815 505
612 452 434 982 640 742 565 706 593 680
926 653 164 487 734 608 428 1153 593 844
527 552 513 781 474 388 824 538 862 659
775 859 755 649 697 515 628 954 771 609
402 960 885 610 292 837 473 677 358 638
699 634 555 570 84 416 606 1062 484 120
447 654 564 339 280 246 687 539 790 581
621 724 531 512 577 496 468 499 544 645
764 558 378 765 666 763 217 715 310 851
1 問題一:使用MATLAB繪畫上述刀具壽命的直方圖
所需的函數
1 xlim([0, 1200]); ylim([0, 25]);
這兩個函數并不是繪畫出一個Y坐標和一個X坐標,而是用來規定這個直方圖的X坐標和Y坐標
2 histogram(num);
這個是用來繪畫一個直方圖函數,num是你所給的一個數組,這個數組里面有很多的元素
clear;% 輸入數據
num = [459, 362, 624, 542, 509, 584, 433, 748, 815, 505,
612, 452, 434, 982, 640, 742, 565, 706, 593, 680,
926, 653, 164, 487, 734, 608, 428, 1153, 593, 844,
527, 552, 513, 781, 474, 388, 824, 538, 862, 659,
775, 859, 755, 649, 697, 515, 628, 954, 771, 609,
402, 960, 885, 610, 292, 837, 473, 677, 358, 638,
699, 634, 555, 570, 84 , 416, 606, 1062, 484, 120,
447, 654, 564, 339, 280, 246, 687, 539, 790, 581,
621, 724, 531, 512, 577, 496, 468, 499, 544, 645,
764, 558, 378, 765, 666, 763, 217, 715, 310, 851];histogram(num);xlim([0, 1200]);
ylim([0, 25]);
這樣我們就可以繪畫出這些數據的直方圖,我們可以很直觀的看到它們是呈現正態分布的趨勢的
2 問題二:利用正態分布趨勢的一個隨機分布數來進行計算最佳間隔和最佳換刀周期
1 正態分布的數字的創建
我們這里需要用到方差和平均數,我們已經得知這里的方差和平均值分別為196.6和600
u = 600;
o = 196.6;
X = u + o * randn(1, 1e4);
然后randn是創建一個標準分布的隨機數,我們只需要按照這個公式即可創建一個正態分布的隨即數
X = 平均數 + 方差 * 標準分布的隨機數
這里randn( 1 , 1e4 ) 表示的是創建一個1e4這么多的元素,1表示是創建是多少列,0表示創建多少行
后面的1e4表示創建多少元素
然后接下來我們就要考慮這么設計一個最好的方案去規劃這些刀具
?
?
我們創建一個隨機優化模型來解決這個問題
x代表的是當前這把刀的壽命,n代表的是檢查的間隔
分為兩種情況
情況1:當X <= T的時候
10 * ceil( x / n ) 表示的是這個刀在從當前到壽命結束的總間隔所需檢查的費用
200 * ( n * ceil(x / n) - x )這個表示為檢查到所報廢的那一個零件
?
就比如上面這個例子,當我們T設計的是12,那么我們前面檢查的都是沒有報廢的,但是一旦到12的時候就報廢了,這個時候就是要消耗200塊
后面就是 + 3000就是報廢的沒換刀的費用,除以x就是每一個合格產品所消耗的費用
情況2:當X > T的時候
這個很好理解就是把所有檢查的費用加上,然后+1000,這個時候就進行換刀,除以T就是在換刀的時間段每把刀所需要的費用
然后我們就用MATLAB來進行編寫
u = 600;
o = 196.6;
X = u + o * randn(1, 1e4);minval = Inf;
minn = 0;
minT = 0;%n 檢查間隔
%T 更換周期
for T = 1:1000for n = 1:100total = 0;for i = 1:length(X)if X(i) > TY2 = (10 * floor(T / n) + 1000) / T;total = total + Y2;elseY1 = (10 * ceil(X(i) / n) + (n*ceil(X(i)/n) - X(i)) * 200 + 3000) / X(i);total = total + Y1;endend%fprintf("%d ",total);if minval > totalminval = total;minn = n;minT = T;endend
end
就是不斷判斷大小然后進行選取就好了
疑問:這里正態分布的中心值范圍為400 ~ 600,為什么不設置到這里?
因為就像我們去檢查生病,不可能只有老了再去,應該隨時都去,所以這里要設置全面