matlab甘特圖
matlab甘特圖

本文目錄一覽:
- 1、用遺傳算法求解作業(yè)車間調度的MATLAB程序問題
- 2、大家好,請問誰有基于matlab的遺傳算法源代碼,很需要呀
- 3、這是什么資源甘特圖?怎么用MATLAB畫啊?
- 4、VS2013中調用matlab甘特圖能正常生成,發(fā)布到iis中,matlab能計算但無法形成甘特圖
- 5、matlab的一個M函數,用于繪圖,現在我想讓其可以把運行時生成的圖像自動保存,怎么加語句?
- 6、matlab中甘特圖畫法
用遺傳算法求解作業(yè)車間調度的MATLAB程序問題
你好歹看一下程序嘛,人家都給你注釋了輸入輸出都是啥,你使用的時候得先給輸入賦值。在命令行輸入M=啥,N=啥···然后再輸[Zp,Y1p,Y2p,Y3p,Xp,LC1,LC2]=JSPGA(M,N,Pm,T,P)
左邊這些就是輸出了,要是運行成功會在workspace里面看到
大家好,請問誰有基于matlab的遺傳算法源代碼,很需要呀
function [Zp,Y1p,Y2p,Y3p,Xp,LC1,LC2]=JSPGA(M,N,Pm,T,P)
%--------------------------------------------------------------------------
% JSPGA.m
% 車間作業(yè)調度問題遺傳算法
%--------------------------------------------------------------------------
% 輸入參數列表
% M 遺傳進化迭代次數
% N 種群規(guī)模(取偶數)
% Pm 變異概率
% T m×n的矩陣,存儲m個工件n個工序的加工時間
% P 1×n的向量,n個工序中,每一個工序所具有的機床數目
% 輸出參數列表
% Zp 最優(yōu)的Makespan值
% Y1p 最優(yōu)方案中,各工件各工序的開始時刻,可根據它繪出甘特圖
% Y2p 最優(yōu)方案中,各工件各工序的結束時刻,可根據它繪出甘特圖
% Y3p 最優(yōu)方案中,各工件各工序使用的機器編號
% Xp 最優(yōu)決策變量的值,決策變量是一個實數編碼的m×n矩陣
% LC1 收斂曲線1,各代最優(yōu)個體適應值的記錄
% LC2 收斂曲線2,各代群體平均適應值的記錄
% 最后,程序還將繪出三副圖片:兩條收斂曲線圖和甘特圖(各工件的調度時序圖)
%第一步:變量初始化
[m,n]=size(T);%m是總工件數,n是總工序數
Xp=zeros(m,n);%最優(yōu)決策變量
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=X;
end
counter=0;%設置迭代計數器
while counter
%第三步:交叉
newfarm=cell(1,N);%交叉產生的新種群存在其中
Ser=randperm(N);
for i=1:2:(N-1)
A=farm;%父代個體
B=farm;
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=a;%交叉后的子代存入newfarm
newfarm=b;
end
%新舊種群合并
FARM=[farm,newfarm];
%第四步:選擇復制
FITNESS=zeros(1,2*N);
fitness=zeros(1,N);
plotif=0;
for i=1:(2*N)
X=FARM;
Z=COST(X,T,P,plotif);%調用計算費用的子函數
FITNESS(i)=Z;
end
%選擇復制采取兩兩隨機配對競爭的方式,具有保留最優(yōu)個體的能力
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
end
%記錄最佳個體和收斂曲線
minfitness=min(fitness)
meanfitness=mean(fitness)
LC1(counter+1)=minfitness;%收斂曲線1,各代最優(yōu)個體適應值的記錄
LC2(counter+1)=meanfitness;%收斂曲線2,各代群體平均適應值的記錄
pos=find(fitness==minfitness);
Xp=farm;
%第五步:變異
for i=1:N
if Pmrand;%變異概率為Pm
X=farm;
I=unidrnd(m);
J=unidrnd(n);
X(I,J)=1+(P(J)-eps)*rand;
farm=X;
end
end
farm=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畫啊?
data=[
????0?3?0?6?2;?%x范圍?y范圍?編號
????3?8?0?7?4;
????3?9?7?9?5;
????8?14?0?2?6;
????9?11?2?7?7
????12?13?2?9?3
????13?17?2?8?8
????17?19?0?2?9];
x=data(:,[1?1?2?2])';
y=data(:,[3?4?4?3])';
%抽出data第一行看
%data(1,[1?1?2?2])=[0?0?3?3]
%data(1,[3?4?4?3])=[0?6?6?0]
%表示(0,0)-(0,6)-(3,6)-(3,0)四點組成的矩形
%用patch就可以畫出這個矩形
%不過patch要求每一列畫一個多邊形,所以最后要轉置
cla;
patch('xdata',x,'ydata',y,...?%根據x,y畫框框
????'facecolor','none','edgecolor','k');%框框面和邊的顏色
xl=(data(:,1)+data(:,2))/2;%x的平均值作為標記的x坐標
yl=(data(:,3)+data(:,4))/2;%y的平局值作為標記的y坐標
label=num2str(data(:,5));%data的第5列轉為字符,作為標記內容
text(xl,yl,label);%顯示標記
VS2013中調用matlab甘特圖能正常生成,發(fā)布到iis中,matlab能計算但無法形成甘特圖
%machine num time1 time2
a=[1 1 0 2;
1 3 2 8;
2 2 0 5;
3 4 0 4;
4 4 4 10;
4 2 10 13;
5 1 2 7;
5 3 8 10;
6 3 10 13;
8 1 7 9;
8 2 13 18;
9 4 10 18];
figure(1);clf;
w=0.5; %橫條寬度
set(gcf,'color','w');
for ii=1:size(a,1)
x=a(ii,[3 3 4 4]);
y=a(ii,1)+[-w/2 w/2 w/2 -w/2];
p=patch('xdata',x,'ydata',y,'facecolor','none','edgecolor','k');
text(a(ii,3)+0.5,a(ii,1),num2str(a(ii,2)));
end
xlabel('processing time(s)');
ylabel('Machine');
axis([0 20 0 10]);
set(gca,'Box','on');
set(gca,'YTick',0:10);
set(gca,'YTickLabel',[{''};num2str((1:9)','M%d');{''}]);
matlab的一個M函數,用于繪圖,現在我想讓其可以把運行時生成的圖像自動保存,怎么加語句?
str1='d:\work\test\file'; %存放的目錄,及文件名前部分
for i=1:50
str=[str1 num2str(i) '.fig']; %生成需要保存圖象的文件名=
畫圖
saveas(gcf,str);
end
matlab中甘特圖畫法
%machine?num?time1?time2
a=[1????1???0???2;
???1????3???2???8;
???2????2???0???5;
???3????4???0???4;
???4????4???4???10;
???4????2???10??13;
???5????1???2???7;
???5????3???8???10;
???6????3???10??13;
???8????1???7???9;
???8????2???13??18;
???9????4???10??18];
figure(1);clf;
w=0.5;???????%橫條寬度
set(gcf,'color','w');
for?ii=1:size(a,1)
????x=a(ii,[3?3?4?4]);
????y=a(ii,1)+[-w/2?w/2?w/2?-w/2];
????p=patch('xdata',x,'ydata',y,'facecolor','none','edgecolor','k');
????text(a(ii,3)+0.5,a(ii,1),num2str(a(ii,2)));
end
xlabel('processing?time(s)');
ylabel('Machine');
axis([0?20?0?10]);
set(gca,'Box','on');
set(gca,'YTick',0:10);
set(gca,'YTickLabel',[{''};num2str((1:9)','M%d');{''}]);
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。