當前位置:首頁 » 操作系統 » 遺傳演算法調度

遺傳演算法調度

發布時間: 2024-03-25 22:36:47

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

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

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

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

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

❸ 關於遺傳演算法做生產調度問題

我覺得是這里出了問題。數組定義有問題。

%選擇復制採取兩兩隨機配對競爭的方式,具有保留最優個體的能力
Ser=randperm(2*N);
for i=1:N
f1=FITNESS(Ser(2*i-1));
f2=FITNESS(Ser(2*i));
if f1<=f2
farm=FARM;
fitness(i)=FITNESS(Ser(2*i-1));
else
farm=FARM;
fitness(i)=FITNESS(Ser(2*i));
end

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

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

❺ 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遺傳演算法代碼,用簡單遺傳演算法(Simple Genetic Algorithm or Standard Genetic Algorithm ,SGA)求取函數最大值,初版編寫於7年前上學期間,當時是MATLAB 5.x,在演算法運行效率方面做了修改,主要是採用矩陣操作減少了循環。

遺傳演算法為群體優化演算法,也就是從多個初始解開始進行優化,每個解稱為一個染色體,各染色體之間通過競爭、合作、單獨變異,不斷進化。

優化時先要將實際問題轉換到遺傳空間,就是把實際問題的解用染色體表示,稱為編碼,反過程為解碼,因為優化後要進行評價,所以要返回問題空間,故要進行解碼。SGA採用二進制編碼,染色體就是二進制位串,每一位可稱為一個基因;解碼時應注意將染色體解碼到問題可行域內。

遺傳演算法模擬「適者生存,優勝劣汰」的進化機制,染色體適應生存環境的能力用適應度函數衡量。對於優化問題,適應度函數由目標函數變換而來。一般遺傳演算法求解最大值問題,如果是最小值問題,則通過取倒數或者加負號處理。SGA要求適應度函數>0,對於<0的問題,要通過加一個足夠大的正數來解決。這樣,適應度函數值大的染色體生存能力強。

遺傳演算法有三個進化運算元:選擇(復制)、交叉和變異。

SGA中,選擇採用輪盤賭方法,也就是將染色體分布在一個圓盤上,每個染色體占據一定的扇形區域,扇形區域的面積大小和染色體的適應度大小成正比。如果輪盤中心裝一個可以轉動的指針的話,旋轉指針,指針停下來時會指向某一個區域,則該區域對應的染色體被選中。顯然適應度高的染色體由於所佔的扇形區域大,因此被選中的幾率高,可能被選中多次,而適應度低的可能一次也選不中,從而被淘汰。演算法實現時採用隨機數方法,先將每個染色體的適應度除以所有染色體適應度的和,再累加,使他們根據適應度的大小分布於0-1之間,適應度大的占的區域大,然後隨機生成一個0-1之間的隨機數,隨機數落到哪個區域,對應的染色體就被選中。重復操作,選出群體規模規定數目的染色體。這個操作就是「優勝劣汰,適者生存」,但沒有產生新個體。

交叉模擬有性繁殖,由兩個染色體共同作用產生後代,SGA採用單點交叉。由於SGA為二進制編碼,所以染色體為二進制位串,隨機生成一個小於位串長度的隨機整數,交換兩個染色體該點後的那部分位串。參與交叉的染色體是輪盤賭選出來的個體,並且還要根據選擇概率來確定是否進行交叉(生成0-1之間隨機數,看隨機數是否小於規定的交叉概率),否則直接進入變異操作。這個操作是產生新個體的主要方法,不過基因都來自父輩個體。

變異採用位點變異,對於二進制位串,0變為1,1變為0就是變異。採用概率確定變異位,對每一位生成一個0-1之間的隨機數,看是否小於規定的變異概率,小於的變異,否則保持原狀。這個操作能夠使個體不同於父輩而具有自己獨立的特徵基因,主要用於跳出局部極值。

遺傳演算法認為生物由低級到高級進化,後代比前一代強,但實際操作中可能有退化現象,所以採用最佳個體保留法,也就是曾經出現的最好個體,一定要保證生存下來,使後代至少不差於前一代。大致有兩種類型,一種是把出現的最優個體單獨保存,最後輸出,不影響原來的進化過程;一種是將最優個體保存入子群,也進行選擇、交叉、變異,這樣能充分利用模式,但也可能導致過早收斂。

由於是基本遺傳演算法,所以優化能力一般,解決簡單問題尚可,高維、復雜問題就需要進行改進了。

下面為代碼。函數最大值為3905.9262,此時兩個參數均為-2.0480,有時會出現局部極值,此時一個參數為-2.0480,一個為2.0480。演算法中變異概率pm=0.05,交叉概率pc=0.8。如果不採用最優模式保留,結果會更豐富些,也就是演算法最後不一定收斂於極值點,當然局部收斂現象也會有所減少,但最終尋得的解不一定是本次執行中曾找到過的最好解。

(註:一位網名為mosquitee的朋友提醒我:原代碼的變異點位置有問題。檢驗後發現是將最初的循環實現方法改為矩陣實現方法時為了最優去掉mm的第N行所致,導致變異點位置發生了變化,現做了修改,修改部分加了顏色標記,非常感謝mosquitee,2010-4-22)

% Optimizing a function using Simple Genetic Algorithm with elitist preserved
%Max f(x1,x2)=100*(x1*x1-x2).^2+(1-x1).^2; -2.0480<=x1,x2<=2.0480
% Author: Wang Yonglin ([email protected])
clc;clear all;
format long;%設定數據顯示格式
%初始化參數
T=100;%模擬代數
N=80;% 群體規模
pm=0.05;pc=0.8;%交叉變異概率
umax=2.048;umin=-2.048;%參數取值范圍
L=10;%單個參數字串長度,總編碼長度2L
bval=round(rand(N,2*L));%初始種群
bestv=-inf;%最優適應度初值
%迭代開始
for ii=1:T
%解碼,計算適應度
for i=1:N
y1=0;y2=0;
for j=1:1:L
y1=y1+bval(i,L-j+1)*2^(j-1);
end
x1=(umax-umin)*y1/(2^L-1)+umin;
for j=1:1:L
y2=y2+bval(i,2*L-j+1)*2^(j-1);
end
x2=(umax-umin)*y2/(2^L-1)+umin;
obj(i)=100*(x1*x1-x2).^2+(1-x1).^2; %目標函數
xx(i,:)=[x1,x2];
end
func=obj;%目標函數轉換為適應度函數
p=func./sum(func);
q=cumsum(p);%累加
[fmax,indmax]=max(func);%求當代最佳個體
if fmax>=bestv
bestv=fmax;%到目前為止最優適應度值
bvalxx=bval(indmax,:);%到目前為止最佳位串
optxx=xx(indmax,:);%到目前為止最優參數
end
Bfit1(ii)=bestv; % 存儲每代的最優適應度
%%%%遺傳操作開始
%輪盤賭選擇
for i=1:(N-1)
r=rand;
tmp=find(r<=q);
newbval(i,:)=bval(tmp(1),:);
end
newbval(N,:)=bvalxx;%最優保留
bval=newbval;
%單點交叉
for i=1:2:(N-1)
cc=rand;
if cc<pc
point=ceil(rand*(2*L-1));%取得一個1到2L-1的整數
ch=bval(i,:);
bval(i,point+1:2*L)=bval(i+1,point+1:2*L);
bval(i+1,point+1:2*L)=ch(1,point+1:2*L);
end
end
bval(N,:)=bvalxx;%最優保留
%位點變異
mm=rand(N,2*L)<pm;%N行
mm(N,:)=zeros(1,2*L);%最後一行不變異,強制賦0
bval(mm)=1-bval(mm);
end

%輸出
plot(Bfit1);% 繪制最優適應度進化曲線
bestv %輸出最優適應度值
optxx %輸出最優參數

❼ 急求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

熱點內容
方舟編譯器廠家 發布:2024-11-28 04:13:15 瀏覽:979
android源碼編輯 發布:2024-11-28 04:12:38 瀏覽:596
兩路伺服器是什麼意思 發布:2024-11-28 03:39:39 瀏覽:937
sql精簡版64 發布:2024-11-28 03:36:28 瀏覽:73
金立怎麼加密圖片 發布:2024-11-28 03:31:43 瀏覽:664
2017玩dnf電腦什麼配置 發布:2024-11-28 03:30:56 瀏覽:520
ftp掛載存儲ip配置 發布:2024-11-28 03:28:51 瀏覽:963
山耐斯空壓機密碼多少 發布:2024-11-28 03:26:28 瀏覽:405
安卓拍照搖一搖是什麼軟體 發布:2024-11-28 03:26:27 瀏覽:257
小米2s存儲卡 發布:2024-11-28 03:15:49 瀏覽:649