资源简介
用灰狼优化算法求解柔性作业车间问题,其中问题的规模为8*8,代码类型为Matlab,编码方式为三维实数编码。
代码片段和文件信息
%该程序用于解决柔性作业车间调度,m个工件,n道工序,其中n为最大工序数,工件的工序
%数可以少于n,加工机器数为M,每个工件的每道工序具有多个机器可以选择,对应的时间
%不同,其中初始种群的储存方式采用cell数据类型
%Version:1.3
%fileDescription:调度机器可选的柔性作业车间问题,甘特图已完善GWO8*8实例
%last edit time:2019-6-7
function GWO_Model_FJSP_1_3_8_8()
count = 600; %迭代次数
N = 50; %种群规模
m = 8; %工件数
n = 4; %工序数
M = 8; %机器数
a =2; %计算A/C协同系数的
plotif = 1; %控制程序是否进行绘图
s = input(mn); %数据输入
[pTN] = initial_p(mnNsM); %生成初始种群50采用细胞结构,每个元素为8*4
P = machine(nM);
FIT = zeros(count1);
aveFIT = zeros(count1);
X1=randperm(count); %收敛图形的横坐标X
X=sort(X1);
%------------------------输出最优解的时有用------------------------------
best_fit = 1000; %改变模型需要修改此参数
best_p = zeros(mn);
best_TN = zeros(mn);
Y1p = zeros(m1);
Y2p = zeros(m1);
Y3p = zeros(m1);
minfit3 = 1000000000;
%-------------------------进行迭代--------------------------------------
for i = 1:count
[fitY1Y2Y3] = object(pTNNPmn);
[newpnewTN] = GWO(fitpTNNmnsa);
a = a-2/(count-1); %a的值会线性下降
if best_fit > min(fit)
[best_pbest_TNbest_fitY1pY2pY3p]=best(best_fitbest_pfitbest_TNY1pY2pY3ppTNY1Y2Y3);
end
p = newp;
TN = newTN;
minfit = min(fit);
if minfit3>minfit
minfit3 = minfit;
end
FIT(i) = minfit3; %用于适应度函数的
aveFIT(i) = mean(fit); %用于适应度函数的
end
%------------------投射最佳方案数据--------------------------------------
fprintf(‘最优解:%d\n‘best_fit);
fprintf(‘工序1 工序2 工序3 工序4\n‘);
best_p
fprintf(‘时间1 时间2 时间3 时间4\n‘);
best_TN
%------------------------收敛曲线----------------------------------------
if plotif == 1
figure;
plot(XFIT‘r‘);
hold on;
plot(XaveFIT‘b‘);
title(‘收敛曲线‘);
hold on;
legend(‘最优解‘‘平均值‘);
%-------------------------甘特图-----------------------------------------
figure;
w=0.5; %横条宽度
set(gcf‘color‘‘w‘); %图的背景设为白色
for i = 1:m
for j = 1:n
color=[10.980.98;10.890.71;0.860.860.86;0.380.721;101;011;010.49;10.870.67;0.390.580.92;0.560.730.56];
a = [Y1p(ij)Y2p(ij)];
x=a(1[1 1 2 2]); %设置小图框四个点的x坐标
y=Y3p(ij)+[-w/2 w/2 w/2 -w/2]; %设置小图框四个点的y坐标
color = [color(i1)color(i2)color(i3)];
p=patch(‘xdata‘x‘ydata‘y‘facecolor‘color‘edgecolor‘‘k‘); %facecolor为填充颜色,edgecolor为图框颜色
text(a(11)+0.5Y3p(ij)[num2str(i)‘-‘num2str(j)]); %显示小图框里的数字位置和数值
end
end
xlabel(‘加工时间/s‘); %横坐标名称
ylabel(‘机器‘); %纵坐标名称
title({[num2str(m)‘*‘num2str(M)‘的一个最佳调度(最短完工时间为‘num2str(best_fit)‘)‘]}); %图形名称
axis([0best_fit+20M+1]); %x轴,y轴的范围
set(gca‘Box‘‘on‘); %显示图形边框
set(gca‘YTick‘0:M+1); %y轴的增长幅度
set(gca‘YTickLabel‘{‘‘;num2str((1:M)‘‘M%d‘);‘‘}); %显示机器号
hold on;
end
%--------------------------输入数据---------------------------------
function s = input(
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论