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

资源简介

根据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;                                          

评论

共有 条评论