您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶(hù)?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>matlab源程序>

車(chē)間作業(yè)調(diào)度問(wèn)題遺傳算法Matlab源碼程序

大小:433 人氣: 2010-02-08 需要積分:0
小組店小二的空間

用戶(hù)級(jí)別:注冊(cè)會(huì)員

貢獻(xiàn)文章:

貢獻(xiàn)資料:

車(chē)間作業(yè)調(diào)度問(wèn)題遺傳算法Matlab源碼程序:function [Zp,Y1p,Y2p,Y3p,Xp,LC1,LC2]=JSPGA(M,N,Pm,T,P)
%--------------------------------------------------------------------------
%? JSPGA.m
%? 車(chē)間作業(yè)調(diào)度問(wè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)方案中,各工件各工序的開(kāi)始時(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è)體
??????? B=farm{Ser(i+1)};
??????? 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)
??????????? a=[A(:,1:cp),B(:,(cp+1):n)];%雙親雙子單點(diǎn)交叉
??????????? b=[B(:,1:cp),A(:,(cp+1):n)];
??????? end
??????? newfarm{i}=a;%交叉后的子代存入newfarm
??????? newfarm{i+1}=b;
??? end
??? %新舊種群合并
??? FARM=[farm,newfarm];

非常好我支持^.^

(3) 100%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶(hù)評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?