⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsp.m

📁 车间调度(matlab).rar 1、初始化参数: 族群 60
💻 M
字号:

%945
T=[21 71 16 52 26 34 53 21 55 95;
   55 31 98 79 12 66 42 77 77 39;
   34 64 62 19 92 79 43 54 83 37;
   87 69 87 38 24 83 41 93 77 60;
   98 44 25 75 43 49 96 77 17 79;
   35 76 28 10 61 9 95 35 7 95;
   16 59 46 91 43 50 52 59 28 27;
   45 87 41 20 54 43 14 9 39 71;
   33 37 66 33 26 8 28 89 42 78;
   69 81 94 96 27 69 45 78 74 84
    ];
M=[ 1 6 9 8 7 2 0 4 3 5;
    4 2 5 9 0 7 1 8 6 3;
    3 2 8 1 4 9 7 6 0 5;
    1 3 2 7 8 9 6 0 5 4;
    2 0 5 6 7 1 4 9 3 8;
    2 3 5 9 4 6 0 8 1 7;
    3 2 0 1 9 8 6 5 4 7;
    1 0 3 4 6 9 8 5 2 7;
    4 2 8 5 3 7 1 6 9 0;
    8 9 2 4 3 0 7 6 1 5     
];

%将 机器号+1
for i=1:10
   S=M(i,:);
   
   for j=1:10
    S(j)=S(j)+1;
   end
   M(i,:)=S;
end

%87
% T=[ 6 3 2 8 3 3  4 8 2 6;
%     1 5 3 8 6 11 2 3 5 9;
%     11 3 7 2 10 2 3 4 4 7;
%     3 5 12 5 3 3 8 4 12 9;
%     2 6 10 6 1 1 2 8 3 7;
%     3 9 4 6 4 2 12 3 2 9;
%     3 1 12 4 2 8 3 2 8 7;
%     3 5 4 3 4 10 5 2 3 11;
%     8 1 12 4 2 8 3 8 8 7;
%     6 5 4 3 4 10 5 6 3 11
%     ];
% M=[ 1 2 5 3 7 6 4 9 8 10;
%     3 6 4 10 8 2 7 1 9 5;
%     2 1 9 3 10 7 8 6 5 4;
%     4 6 8 7 1 9 2 3 5 10;
%     7 6 10 9 5 1 2 3 4 8;
%     3 8 9 4 6 7 1 2 5 10;
%     3 7 4 9 10 1 2 5 6 8;
%     3 4 10 8 6 5 2 7 1 9;
%     10 7 4 9 3 8 2 6 5 1;
%     3 10 4 8 6 5 9 7 1 2
%     ];
    
PNumber=10; %零件 个数 3
MNumber=10; %机器个数 3
WPNumber=[10 10 10 10 10 10 10 10 10 10];

%将 时间 处理下
TTemp=T;
for i=1:10 
   for j=1:10   
       TTemp(i,j)=T(M(i,j),i);
   end  
end
T=TTemp;



NIND=40;        %个体数目(Number of individuals)
MAXGEN=	200;      %最大遗传代数(Maximum number of generations)
GGAP=0.9;       %代沟(Generation gap)
XOVR=0.8;     %交叉率
MUTR=0.6;     %变异率

gen=0;  %代计数器

trace=zeros(2, MAXGEN);                        %寻优结果的初始值

 WNumber=0;
 for i=1:PNumber
  WNumber=WNumber+WPNumber(1,i); %工序个数
 end
 

% 初始化群
Chrom=zeros(NIND,WNumber);
for i=1:NIND
Chrom(i,:)=randperm(WNumber);
end

%计算目标函数值
  [PVal ObjV P]=cal(Chrom,NIND,T,M,PNumber,MNumber,WPNumber);   
     
 while gen<MAXGEN
  
    FitnV=ranking(ObjV);                                 %分配适应度值(Assign fitness values)         
    SelCh=select('sus', Chrom, FitnV, GGAP);               %选择
    SelCh=across(SelCh,NIND*GGAP,XOVR,WNumber);            %交叉
    SelCh=aberrance(SelCh,NIND*GGAP,MUTR,WNumber);         %变异
     
   [PVal ObjVSel P]=cal(SelCh,NIND*GGAP,T,M,PNumber,MNumber,WPNumber);   %计算目标函数值
   [Chrom ObjV] =reins(Chrom, SelCh,1, 1, ObjV, ObjVSel);                %重插入子代的新种群
   [PVal ObjVl P]=cal(Chrom,NIND,T,M,PNumber,MNumber,WPNumber);         %计算目标函数值
     gen=gen+1;                                             %代计数器增加

%    %输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的序号
   trace(1, gen)=min(ObjV);                               %遗传算法性能跟踪
    trace(2, gen)=sum(ObjV)/length(ObjV);
      
      %   初始化
      if gen==1
      Val1=PVal;
      Val2=P;
      MinVal=min(ObjV);
      end
      
   %记录 最小的工序
    if MinVal> trace(1,gen)
      Val1=PVal;
      Val2=P;
      MinVal=trace(1,gen);
    end
    
 end
 
  PVal=Val1; %工序时间
  P=Val2;  %工序
  MinVal=MinVal %最小时间
  
%计算解的变化
 hold on;
 plot([0,0],[0,0]);
plot(trace(1,:));
hold on;
plot(trace(2,:),'-.');grid;
legend('解的变化','种群均值的变化');
  
%显示结果
figure(2);
for i=1:WNumber
   val= P(1,i);

  a=(mod(val,10))+1;
  b=((val-a+1)/10);
  
  mText=M(b,a);
    PlotRec(PVal(1,i),PVal(2,i),mText);
   hold on;
   mPoint1=PVal(1,i);
   mPoint2=PVal(2,i);
    x1=mPoint1;
    y1=mText-0.5;
    x2=mPoint2;
    y2=mText-0.5;
    x3=mPoint2;
    y3=mText;
    x4=mPoint1;
    y4=mText;
    fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,0.5,1]);
   
    word=num2str(P(1,i));
   %text(0.5*mPoint1+0.5*mPoint2,mText-0.5,word);  
text(mPoint1,mText-0.7,word);  
end 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -