资源简介
用灰狼优化算法求解柔性作业车间问题,其中问题的规模为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(
相关资源
- madgwick_传感器融合算法_matlab
- 遗传算法GA车间调度Matlab代码
- EMD matlab实现源码
- 贝叶斯分类器Matlab实现113478
- matlab模板匹配车牌识别
- 刘慧颖 MATLAB R2007基础教程
- MATLAB电机仿真精华50例源代码
- zw_支持向量机与朴素贝叶斯算法matl
- 循环码编码
- jnd算法,最小可觉差
- 基于matlab的手势识别系统
- 空间面板计量
- matlab编写的有限元杆的计算
- 关于通过功率谱分析提取信号周期的
- 功率谱MATLAB程序
- 信息论大作业 LZ78算法编译码 matlab仿
- 语音增强—matlab
- 果蝇参数寻优FOA-LSSVM的完整程序
- MATLAB超声传感阵列仿真
- 利用WOA算法优化libsvm中SVDD算法的参数
- 跳频通信系统MATLAB仿真
- 蚁群算法实现三维路径规划Matlab源码
- UR5机械臂MATLAB下轨迹规划
- ViBe背景建模Matlab代码
- 机械臂SEA柔顺控制matlab仿真
- 基于MATLAB人民币识别系统.zip
- 科研常用代码预测分类评价
- 产生泊松过程Matlab源码
- 最优化算法规划-单纯形法MATLAB程序
- 基于KL变换的人脸识别 matlab
评论
共有 条评论