資源簡介
根據palmer法求解多機作業排序問題的原理編寫的MATLAB求解程序
代碼片段和文件信息
function?[SlopeScheduleNewTimeArrayStartTimeFinishTimeMakespan]?=?Ch7_Palmer(TimeArray)
%%?程序功能說明
%第7章:帕爾瑪算法計算工件的近優排序和最長流程時間,并繪制甘特圖
%====輸出參數====
???%Slope???????????:工件的斜度
???%Schedule????????:近優排序
???%NewTimeArray????:近優排序下的加工時間矩陣
???%StartTime???????:開始時間
???%FinishTime??????:完工時間
???%Makespan????????:最長流程時間
%====輸入參數====
???%TimeArray???????:加工時間矩陣
%編寫時間:2012年04月;完善時間:2012年12月。
%%?程序主體部分
%Get?the?near?optimal?schedule?by?the?Palmer?rule
%(1)根據帕爾瑪法則確定工件的近優加工排序
[mn]?=?size(TimeArray);??????????????%加工時間矩陣的行數和列數,行數m為機器數,列數n為工件數
if?m?<=?1
????error(‘機器數必須大于等于2‘)
end
for?i?=?1:n
????SlopeIndex(i)?=?0;????????????????????????????????????????????????%工件i的斜度指標的初值
????for?j=1:m
????????SlopeIndex(i)?=?SlopeIndex(i)+0.5*(2*j-m-1)*TimeArray(ji);???%計算工件i的斜度指標
????end
end
TimeArray(m+1:)?=?1:n;???????????????????????????????????????????%第m+1行為工件的代號
[SlopeBestIndex]?=?sort(SlopeIndex‘descend‘);???????????????????%給出斜度及斜度的非遞增順序——近優加工順序
Schedule?=?BestIndex;?????????????????????????????????????????????%工件的近優加工排序
TimeArray?=?TimeArray(:BestIndex);???????????????????????????????%根據近優加工順序重新排列加工時間矩陣
NewTimeArray?=?TimeArray(1:m:);??????????????????????????????????%重排后的加工時間矩陣
%(2)計算開工時間、完工時間、最長流程加工時間
WorkTime(1:m:)?=?TimeArray(1:m:);???????????????????????????????%重新定義的加工時間矩陣
StartTime(11)?=?0;??????????????????????????????????????????
- 上一篇:基于優先規則的MATLAB單機排序代碼
- 下一篇:LEACH算法相關代碼
評論
共有 條評論