• 大小: 6KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: Matlab
  • 标签: 单机  排序  MATLAB  

资源简介

将各种优先规则综合在一起编写了单机排序问题MATLAB求解的通用函数程序。

资源截图

代码片段和文件信息

function [ScheduleStartTimeFinishTimeMeanOTMakespanMeanETMeanPTMeanWIPMeanTotalResultArray] = Ch6_SingleMachine_Rank(TimeArray)
%% 程序功能说明
%第6章:单机作业排列排序问题(单维规则)
%====输出参数====
   %Schedule      :给定优先级规则下的排序方案
   %StartTime     :开始时间
   %FinishTime    :流程时间
   %MeanOT        :平均流程时间
   %Makespan      :完工时间
   %MeanET        :平均提前时间
   %MeanPT        :平均超期时间
   %MeanWIP       :平均在制品库存量
   %MeanTotal     :平均总库存量
   %ResultArray   :模型结果
%====输入参数====
   %TimeArray     :业务时间矩阵,按照接到业务订单的先后顺序给出(3×n的矩阵)
   %第1行为业务顺序代号,第2行为加工时间,第3行为希望交货时间
%编写时间:2012年03月;完善时间:2012年4月

%% 程序主体部分
%根据优先级规则确定工件的加工方案
[mn] = size(TimeArray);
if m ~= 3
    error(‘加工时间矩阵必须为三行‘)
end

%定义存放计算结果的矩阵
  ResultArray = zeros(8n);                     %设置存放建模的矩阵,共8行

%% 给定优先级规则并建模
Number = input(‘请选择优先级规则的代号<1.FCFS;2.SPT;3.LCFS;4.EDD;5.STR;6.RANDOM>Number=:‘);
if Number == 1
    %(1)先到先服务(FCFS)规则建模
    ResultArray(1:) = TimeArray(1:);          %第1行存放工件加工顺序
    ResultArray(3:) = TimeArray(2:);          %第3行存放加工时间
    ResultArray(5:) = TimeArray(3:);          %第5行存放期望交货时间
    
elseif Number == 2
    %(2)最短加工时间(SPT)规则建模
    TimeArray_New = TimeArray‘;                 %将时间矩阵转置,以便进行排序
    TimeArray = (sortrows(TimeArray_New2))‘;   %得到按加工时间非递减排序
    ResultArray(1:) = TimeArray(1:);          %第1行存放工件加工顺序
    ResultArray(3:) = TimeArray(2:);          %第3行存放加工时间
    ResultArray(5:) = TimeArray(3:);          %第5行存放期望交货时间
elseif Number == 3
    %(3)后到先服务(LCFS)规则建模
    TimeArray_New = -TimeArray‘;                %将时间矩阵转置,以便进行排序
    TimeArray = -(sortrows(TimeArray_New1))‘;  %得到按后到排序在前
    ResultArray(1:) = TimeArray(1:);          %第1行存放工件加工顺序
    ResultArray(3:) = TimeArray(2:);          %第3行存放加工时间
    ResultArray(5:) = TimeArray(3:);          %第5行存放期望交货时间
elseif Number == 4
    %(4)最短交货期(EDD)规则建模
    TimeArray_New = TimeArray‘;                 %将时间矩阵转置,以便进行排序
    TimeArray = (sortrows(TimeArray_New3))‘;   %得到按后到排序在前
    ResultArray(1:) = TimeArray(1:);          %第1行存放工件加工顺序
    ResultArray(3:) = TimeArray(2:);          %第3行存放加工时间
    ResultArray(5:) = TimeArray(3:);          %第5行存放期望交货时间
elseif Number == 5
    %(5)剩余松弛时间(STR)规则建模
    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

评论

共有 条评论