泊位调度问题 matlab,流水线车间调度问题matlab源程序.doc
流水線車間調(diào)度問題matlab源程序
流水線車間調(diào)度問題matlab源程序
流水線型車間作業(yè)調(diào)度問題遺傳算法Matlab源碼
流水線型車間作業(yè)調(diào)度問題可以描述如下:n個(gè)任務(wù)在流水線上進(jìn)行m個(gè)階段的加工,每一階段至少有一臺(tái)機(jī)器且至少有一個(gè)階段存在多臺(tái)機(jī)器,并且同一階段上各機(jī)器的處理性能相同,在每一階段各任務(wù)均要完成一道工序,各任務(wù)的每道工序可以在相應(yīng)階段上的任意一臺(tái)機(jī)器上加工,已知任務(wù)各道工序的處理時(shí)間,要求確定所有任務(wù)的排序以及每一階段上機(jī)器的分配情況,使得調(diào)度指標(biāo)(一般求Makespan)最小。下面的源碼是求解流水線型車間作業(yè)調(diào)度問題的遺傳算法通用MATLAB源碼,屬于GreenSim團(tuán)隊(duì)原創(chuàng)作品,轉(zhuǎn)載請(qǐng)注明。
function [Zp,Y1p,Y2p,Y3p,Xp,LC1,LC2]=JSPGA(M,N,Pm,T,P)
%--------------------------------------------------------------------------
% JSPGA.m
% 流水線型車間作業(yè)調(diào)度遺傳算法
% GreenSim團(tuán)隊(duì)原創(chuàng)作品,轉(zhuǎn)載請(qǐng)注明
% Email:greensim@163.com
% GreenSim團(tuán)隊(duì)主頁(yè):/greensim
% 歡迎訪問GreenSim——算法仿真團(tuán)隊(duì)→/greensim
%--------------------------------------------------------------------------
% 輸入?yún)?shù)列表
% M 遺傳進(jìn)化迭代次數(shù)
% N 種群規(guī)模(取偶數(shù))
% Pm 變異概率
% T m×n的矩陣,存儲(chǔ)m個(gè)工件n個(gè)工序的加工時(shí)間
% P 1×n的向量,n個(gè)工序中,每一個(gè)工序所具有的機(jī)床數(shù)目
% 輸出參數(shù)列表
% Zp 最優(yōu)的Makespan值
% Y1p 最優(yōu)方案中,各工件各工序的開始時(shí)刻,可根據(jù)它繪出甘特圖
% Y2p 最優(yōu)方案中,各工件各工序的結(jié)束時(shí)刻,可根據(jù)它繪出甘特圖
% Y3p 最優(yōu)方案中,各工件各工序使用的機(jī)器編號(hào)
% Xp 最優(yōu)決策變量的值,決策變量是一個(gè)實(shí)數(shù)編碼的m×n矩陣
% LC1 收斂曲線1,各代最優(yōu)個(gè)體適應(yīng)值的記錄
% LC2 收斂曲線2,各代群體平均適應(yīng)值的記錄
% 最后,程序還將繪出三副圖片:兩條收斂曲線圖和甘特圖(各工件的調(diào)度時(shí)序圖)
%第一步:變量初始化
[m,n]=size(T);%m是總工件數(shù),n是總工序數(shù)
Xp=zeros(m,n);%最優(yōu)決策變量
LC1=zeros(1,M);%收斂曲線1
LC2=zeros(1,N);%收斂曲線2
%第二步:隨機(jī)產(chǎn)生初始種群
farm=cell(1,N);%采用細(xì)胞結(jié)構(gòu)存儲(chǔ)種群
for k=1:N
X=zeros(m,n);
for j=1:n
for i=1:m
X(i,j)=1+(P(j)-eps)*rand;
end
end
farm{k}=X;
end
counter=0;%設(shè)置迭代計(jì)數(shù)器
while counter
%第三步:交叉
newfarm=cell(1,N);%交叉產(chǎn)生的新種群存在其中
Ser=randperm(N);
for i=1:2:(N-1)
A=farm{Ser(i)};%父代個(gè)體
Manner=unidrnd(2);%隨機(jī)選擇交叉方式
if Manner==1
cp=unidrnd(m-1);%隨機(jī)選擇交叉點(diǎn)
%雙親雙子單點(diǎn)交叉
a=[A(1:cp,:);B((cp+1):m,:)];%子代個(gè)體
b=[B(1:cp,:);A((cp+1):m,:)];
else
cp=unidrnd(n-1);%隨機(jī)選擇交叉點(diǎn)
b=[B(:,1:cp),A(:,(cp+1):n)];
end
newfarm{i}=a;%交叉后的子代存入newfarm
newfarm{i+1}=b;
end
%新舊種群合并
FARM=[farm,newfarm];
%第四步:選擇復(fù)制
FITNESS=zeros(1,2*N);
fitness=zeros(1,N);
總結(jié)
以上是生活随笔為你收集整理的泊位调度问题 matlab,流水线车间调度问题matlab源程序.doc的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php的pathinfo,php中Pat
- 下一篇: php post 渲染数据,php 程序