資源簡介
將各種優(yōu)先規(guī)則綜合在一起編寫了單機排序問題MATLAB求解的通用函數(shù)程序。
代碼片段和文件信息
function?[ScheduleStartTimeFinishTimeMeanOTMakespanMeanETMeanPTMeanWIPMeanTotalResultArray]?=?Ch6_SingleMachine_Rank(TimeArray)
%%?程序功能說明
%第6章:單機作業(yè)排列排序問題(單維規(guī)則)
%====輸出參數(shù)====
???%Schedule??????:給定優(yōu)先級規(guī)則下的排序方案
???%StartTime?????:開始時間
???%FinishTime????:流程時間
???%MeanOT????????:平均流程時間
???%Makespan??????:完工時間
???%MeanET????????:平均提前時間
???%MeanPT????????:平均超期時間
???%MeanWIP???????:平均在制品庫存量
???%MeanTotal?????:平均總庫存量
???%ResultArray???:模型結(jié)果
%====輸入?yún)?shù)====
???%TimeArray?????:業(yè)務(wù)時間矩陣,按照接到業(yè)務(wù)訂單的先后順序給出(3×n的矩陣)
???%第1行為業(yè)務(wù)順序代號,第2行為加工時間,第3行為希望交貨時間
%編寫時間:2012年03月;完善時間:2012年4月
%%?程序主體部分
%根據(jù)優(yōu)先級規(guī)則確定工件的加工方案
[mn]?=?size(TimeArray);
if?m?~=?3
????error(‘加工時間矩陣必須為三行‘)
end
%定義存放計算結(jié)果的矩陣
??ResultArray?=?zeros(8n);?????????????????????%設(shè)置存放建模的矩陣,共8行
%%?給定優(yōu)先級規(guī)則并建模
Number?=?input(‘請選擇優(yōu)先級規(guī)則的代號<1.FCFS;2.SPT;3.LCFS;4.EDD;5.STR;6.RANDOM>Number=:‘);
if?Number?==?1
????%(1)先到先服務(wù)(FCFS)規(guī)則建模
????ResultArray(1:)?=?TimeArray(1:);??????????%第1行存放工件加工順序
????ResultArray(3:)?=?TimeArray(2:);??????????%第3行存放加工時間
????ResultArray(5:)?=?TimeArray(3:);??????????%第5行存放期望交貨時間
????
elseif?Number?==?2
????%(2)最短加工時間(SPT)規(guī)則建模
????TimeArray_New?=?TimeArray‘;?????????????????%將時間矩陣轉(zhuǎn)置,以便進行排序
????TimeArray?=?(sortrows(TimeArray_New2))‘;???%得到按加工時間非遞減排序
????ResultArray(1:)?=?TimeArray(1:);??????????%第1行存放工件加工順序
????ResultArray(3:)?=?TimeArray(2:);??????????%第3行存放加工時間
????ResultArray(5:)?=?TimeArray(3:);??????????%第5行存放期望交貨時間
elseif?Number?==?3
????%(3)后到先服務(wù)(LCFS)規(guī)則建模
????TimeArray_New?=?-TimeArray‘;????????????????%將時間矩陣轉(zhuǎn)置,以便進行排序
????TimeArray?=?-(sortrows(TimeArray_New1))‘;??%得到按后到排序在前
????ResultArray(1:)?=?TimeArray(1:);??????????%第1行存放工件加工順序
????ResultArray(3:)?=?TimeArray(2:);??????????%第3行存放加工時間
????ResultArray(5:)?=?TimeArray(3:);??????????%第5行存放期望交貨時間
elseif?Number?==?4
????%(4)最短交貨期(EDD)規(guī)則建模
????TimeArray_New?=?TimeArray‘;?????????????????%將時間矩陣轉(zhuǎn)置,以便進行排序
????TimeArray?=?(sortrows(TimeArray_New3))‘;???%得到按后到排序在前
????ResultArray(1:)?=?TimeArray(1:);??????????%第1行存放工件加工順序
????ResultArray(3:)?=?TimeArray(2:);??????????%第3行存放加工時間
????ResultArray(5:)?=?TimeArray(3:);??????????%第5行存放期望交貨時間
elseif?Number?==?5
????%(5)剩余松弛時間(STR)規(guī)則建模
????SlackTime?=?TimeArray(3:)-TimeArray(2:);???????%計算剩余松弛時間
????TimeArray_New?=?[TimeArray‘?SlackTime‘];?????????%將剩余松弛時間列入新矩陣中
????TimeArray_Rank?=?(sortrows(TimeArray_New4))‘;???%按剩余松弛時間非遞減排序
????for?i?=1:length(TimeArray(2:))-1
????????if?TimeArray_Rank(4i)?==?TimeArray_Rank(4i+1)
????????????if?TimeArra
評論
共有 條評論