導航:首頁 > 源碼編譯 > 遺傳演算法求解車間調度問題matlab

遺傳演算法求解車間調度問題matlab

發布時間:2023-03-27 09:26:32

『壹』 如何通過遺傳演算法用matlab編程解決貨物調動問題

組合優化問題建議自己編程,Matlab工具箱比較適合解決連續問題的優化。

『貳』 基於遺傳演算法求解作業車間調度的MATLAB程序問題

車間作業調度問題遺傳演算法 %--- % 輸入參數列表 % M 遺傳進化迭代猜凳次數 %你從網上找的這部分程穗數旅序肯定不全,這個T應該是一個存放數據的矩陣畢伏,要單獨

『叄』 遺傳演算法具體應用

1、函數優化

函數優化是遺傳演算法的經典應用領域,也是遺傳演算法進行性能評價的常用算例,許多人構造出了各種各樣復雜形式的測試函數:連續函數和離散函數、凸函數和凹函數、低維函數和高維函數、單峰函數和多峰函數等。

2、組合優化

隨著問題規模的增大,組合優化問題的搜索空間也急劇增大,有時在目前的計算上用枚舉法很難求出最優解。對這類復雜的問題,人們已經意識到應把主要精力放在尋求滿意解上,而遺傳演算法是尋求這種滿意解的最佳工具之一。

此外,GA也在生產調度問題、自動控制、機器人學、圖象處理、人工生命、遺傳編碼和機器學習等方面獲得了廣泛的運用。

3、車間調度

車間調度問題是一個典型的NP-Hard問題,遺傳演算法作為一種經典的智能演算法廣泛用於車間調度中,很多學者都致力於用遺傳演算法解決車間調度問題,現今也取得了十分豐碩的成果。

從最初的傳統車間調度(JSP)問題到柔性作業車間調度問題(FJSP),遺傳演算法都有優異的表現,在很多算例中都得到了最優或近優解。


(3)遺傳演算法求解車間調度問題matlab擴展閱讀:

遺傳演算法的缺點

1、編碼不規范及編碼存在表示的不準確性。

2、單一的遺傳演算法編碼不能全面地將優化問題的約束表示出來。考慮約束的一個方法就是對不可行解採用閾值,這樣,計算的時間必然增加。

3、遺傳演算法通常的效率比其他傳統的優化方法低。

4、遺傳演算法容易過早收斂。

5、遺傳演算法對演算法的精度、可行度、計算復雜性等方面,還沒有有效的定量分析方法。

『肆』 利用matlab軟體實現遺傳演算法,解決生產調度問題

對於遺傳演算法,matlab自己內置了工具箱函數,你完全不用編碼,只需要弄懂裡面的參數設置問題就行。

matlab的遺傳演算法實現函數是ga(),對應的設置參數的函數是gaoptimset。有哪些參數可以設置可以直接在命令窗口輸入gaoptimset。ga的用法可以在命令窗口輸入doc ga 查看,祝好。

『伍』 用遺傳演算法求解作業車間調度的MATLAB程序問題

你好歹看一下程序嘛,人家都給你注釋了輸入輸出都是啥,弊並亂你使用的時候得先給輸入賦值蔽棚。在命令行輸入M=啥,N=啥···然後再輸[Zp,Y1p,Y2p,Y3p,Xp,LC1,LC2]=JSPGA(M,N,Pm,T,P)
左邊租檔這些就是輸出了,要是運行成功會在workspace裡面看到

『陸』 matlab車間調度遺傳演算法中隨機產生初始種群的問題,,求教

P應該是一個大小為n的數組,P(j)表示數組第j個元素;eps在matalab中叫做「浮點零」,也叫是matalab中的零值。用手廳特殊的MATLAB數eps來代替在一個數組中的零元素,eps近似為2.2e-16。不是最小的數,而是系統能准確表示的浮點輪薯禪數的精度;rand是matlab中的隨機數,(0,1)間。
X(i,j)=1+(P(j)-eps)*rand;表示給矩陣X的第i行第j列的元素賦值,值為[1,P(j))范圍內的隨機數臘塵。
我解釋的您還滿意不?能在採納時加點懸賞分嗎?謝謝

『柒』 matlab遺傳演算法解決車間調度問題

你要漏稿的ranking文件是MATLAB工具包里改前面的文件,要的話我可以發給你,或者你到網上返殲孝找找gaot就知道了,另外,你這個文件裡面有沒有select.m這個文件,我這里缺失這個,有的話給我發一個

『捌』 誰有車間作業調度問題遺傳演算法的MATLAB源碼,要完整的程序哦~

function [Zp,Y1p,Y2p,Y3p,Xp,LC1,LC2]=JSPGA(M,N,Pm,T,P)
%--------------------------------------------------------------------------
% JSPGA.m
% 車間作業調度問題遺傳演算法
%--------------------------------------------------------------------------
% 輸入參數列表
% M 遺傳進化迭代次數
% N 種群規模(取偶數)
% Pm 變異概率
% T m×n的矩陣,存儲m個工件n個工序的加工時間
% P 1×n的向量,n個工序中,每一個工序所具有的機床數目
% 輸出參數列表
% Zp 最優的Makespan值
% Y1p 最優方案中,各工件各工序的開始時刻,可根據它繪出甘特圖
% Y2p 最優方案中,各工件各工序的結束時刻,可根據它繪出甘特圖
% Y3p 最優方案中,各工件各工序使用的機器編號
% Xp 最優決策變數的值,決策變數是一個實數編碼的m×n矩陣
% LC1 收斂曲線1,各代最優個體適應值的記錄
% LC2 收斂曲線2,各代群體平均適應值的記錄
% 最後,程序還將繪出三副圖片:兩條收斂曲線圖和甘特圖(各工件的調度時序圖)

%第一步:變數初始化
[m,n]=size(T);%m是總工件數,n是總工序數
Xp=zeros(m,n);%最優決策變數
LC1=zeros(1,M);%收斂曲線1
LC2=zeros(1,N);%收斂曲線2

%第二步:隨機產生初始種群
farm=cell(1,N);%採用細胞結構存儲種群
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;%設置迭代計數器
while counter

%第三步:交叉
newfarm=cell(1,N);%交叉產生的新種群存在其中
Ser=randperm(N);
for i=1:2:(N-1)
A=farm{Ser(i)};%父代個體
B=farm{Ser(i+1)};
Manner=unidrnd(2);%隨機選擇交叉方式
if Manner==1
cp=unidrnd(m-1);%隨機選擇交叉點
%雙親雙子單點交叉
a=[A(1:cp,:);B((cp+1):m,:)];%子代個體
b=[B(1:cp,:);A((cp+1):m,:)];
else
cp=unidrnd(n-1);%隨機選擇交叉點
a=[A(:,1:cp),B(:,(cp+1):n)];%雙親雙子單點交叉
b=[B(:,1:cp),A(:,(cp+1):n)];
end
newfarm{i}=a;%交叉後的子代存入newfarm
newfarm{i+1}=b;
end
%新舊種群合並
FARM=[farm,newfarm];

%第四步:選擇復制
FITNESS=zeros(1,2*N);
fitness=zeros(1,N);
plotif=0;
for i=1:(2*N)
X=FARM{i};
Z=COST(X,T,P,plotif);%調用計算費用的子函數
FITNESS(i)=Z;
end
%選擇復制採取兩兩隨機配對競爭的方式,具有保留最優個體的能力
Ser=randperm(2*N);
for i=1:N
f1=FITNESS(Ser(2*i-1));
f2=FITNESS(Ser(2*i));
if f1<=f2
farm{i}=FARM{Ser(2*i-1)};
fitness(i)=FITNESS(Ser(2*i-1));
else
farm{i}=FARM{Ser(2*i)};
fitness(i)=FITNESS(Ser(2*i));
end
end
%記錄最佳個體和收斂曲線
minfitness=min(fitness)
meanfitness=mean(fitness)
LC1(counter+1)=minfitness;%收斂曲線1,各代最優個體適應值的記錄
LC2(counter+1)=meanfitness;%收斂曲線2,各代群體平均適應值的記錄
pos=find(fitness==minfitness);
Xp=farm{pos(1)};

%第五步:變異
for i=1:N
if Pm>rand;%變異概率為Pm
X=farm{i};
I=unidrnd(m);
J=unidrnd(n);
X(I,J)=1+(P(J)-eps)*rand;
farm{i}=X;
end
end
farm{pos(1)}=Xp;

counter=counter+1
end

%輸出結果並繪圖
figure(1);
plotif=1;
X=Xp;
[Zp,Y1p,Y2p,Y3p]=COST(X,T,P,plotif);
figure(2);
plot(LC1);
figure(3);
plot(LC2);

『玖』 急求matlab車輛調度遺傳演算法代碼,需求車輛行駛最優路徑。

function [path,lmin]=ga(data,d) %data為點集,d為距離矩陣,即賦權圖
tic
%======================
sj0=data;%開環最短路線
%=================================
% sj0=[data;data(1,:)]; %閉環最短路線
%=========================
x=sj0(:,1);y=sj0(:,2);
N=length(x);
%=========================
% d(N,:)=d(1,:);%閉環最短路線
% d(:,N)=d(:,1);%距離矩陣d
%======================
L=N; %sj0的長度
w=800;dai=1000;
%通過改良圈演算法選取優良父代A
for k=1:w
c=randperm(L-2);
c1=[1,c+1,L];
flag=1;
while flag>0
flag=0;
for m=1:L-3
for n=m+2:L-1
if d(c1(m),c1(n))+d(c1(m+1),c1(n+1))<d(c1(m),c1(m+1))+d(c1(n),c1(n+1))
flag=1;
c1(m+1:n)=c1(n:-1:m+1);
<a href="https://www..com/s?wd=end&tn=44039180_cpr&fenlei=-CEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-" target="_blank" class="-highlight">end</a>
<a href="https://www..com/s?wd=end&tn=44039180_cpr&fenlei=-CEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-" target="_blank" class="-highlight">end</a>
<a href="https://www..com/s?wd=end&tn=44039180_cpr&fenlei=-CEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-" target="_blank" class="-highlight">end</a>
end
J(k,c1)=1:L;
end
J=J/L;
J(:,1)=0;J(:,L)=1;
rand('state',sum(clock));
%遺傳演算法實現過程
A=J;
for k=1:dai %產生0~1 間隨機數列進行編碼
B=A;
c=randperm(w);
%交配產生子代B
for i=1:2:w
F=2+floor(100*rand(1));
temp=B(c(i),F:L);
B(c(i),F:L)=B(c(i+1),F:L);
B(c(i+1),F:L)=temp;
end;
%變異產生子代C
by=find(rand(1,w)<0.1);
if length(by)==0
by=floor(w*rand(1))+1;
end
C=A(by,:);
L3=length(by);
for j=1:L3
<a href="https://www..com/s?wd=bw&tn=44039180_cpr&fenlei=-CEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-" target="_blank" class="-highlight">bw</a>=floor(1+fix(rand(1,3)*N)); %產生1-N的3個隨機數
<a href="https://www..com/s?wd=bw&tn=44039180_cpr&fenlei=-CEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-" target="_blank" class="-highlight">bw</a>=sort(<a href="https://www..com/s?wd=bw&tn=44039180_cpr&fenlei=-CEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-" target="_blank" class="-highlight">bw</a>);
C(j,:)=C(j,[1:bw(1)-1,bw(2)+1:bw(3),bw(1):bw(2),bw(3)+1:L]);
end
G=[A;B;C];
<a href="https://www..com/s?wd=TL&tn=44039180_cpr&fenlei=-CEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-" target="_blank" class="-highlight">TL</a>=size(G,1);
%在父代和子代中選擇優良品種作為新的父代
[<a href="https://www..com/s?wd=dd&tn=44039180_cpr&fenlei=-CEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-" target="_blank" class="-highlight">dd</a>,IX]=sort(G,2);
temp=[];
temp(1:<a href="https://www..com/s?wd=TL&tn=44039180_cpr&fenlei=-CEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-" target="_blank" class="-highlight">TL</a>)=0;
for j=1:<a href="https://www..com/s?wd=TL&tn=44039180_cpr&fenlei=-CEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-" target="_blank" class="-highlight">TL</a>
for i=1:L-1
temp(j)=temp(j)+d(IX(j,i),IX(j,i+1));
end
end
[DZ,IZ]=sort(temp);
A=G(IZ(1:w),:);
end
path=IX(IZ(1),:)
% for i=1:length(path)
% path(i)=path(i)-1;
% end
% path=path(2:end-1);
lmin=0;l=0;
for j=1:(length(path)-1)
<a href="https://www..com/s?wd=t1&tn=44039180_cpr&fenlei=-CEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-" target="_blank" class="-highlight">t1</a>=path(j);t2=path(j+1);
l=d(<a href="https://www..com/s?wd=t1&tn=44039180_cpr&fenlei=-CEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-" target="_blank" class="-highlight">t1</a>,t2);
lmin=lmin+l;
end
xx=sj0(path,1);yy=sj0(path,2);
plot(xx,yy,'r-o');
axis equal
toc

『拾』 matlab遺傳演算法解決車間調度問題

你要的ranking文件是MATLAB工具包裡面的文件,要的話我可以發給你,或者你到網上找找gaot就知道了,另外,你這個文件裡面有沒有select.m這個文件,我這里缺失這個,有的話給我發一個

閱讀全文

與遺傳演算法求解車間調度問題matlab相關的資料

熱點內容
abkdb編譯 瀏覽:708
尺度計演算法大全 瀏覽:925
單片機開發板的作用 瀏覽:330
唯美愛情動作電影在線觀看 瀏覽:574
老電影農村片 瀏覽:303
netbeansclinux 瀏覽:180
不可能的世界小說免費閱讀 瀏覽:272
法國啄木鳥絲襪電影 瀏覽:307
動作片愛情在線免費觀看 瀏覽:1002
騰飛投資理財分紅源碼 瀏覽:854
windows打開埠命令 瀏覽:93
php獲取數組第一個元素key 瀏覽:488
重生二戰德國元首希特勒 瀏覽:135
被迫成為言情文的炮灰男小三 瀏覽:646
風月片在線觀看視頻 瀏覽:427
如何更新搶修app 瀏覽:711
aqdya愛情網 瀏覽:743
韓國倫理電影正宇 瀏覽:887
男主角在劇里叫諾亞的電影 瀏覽:794
集結號的男主 瀏覽:415