资源简介
该代码用于解决具有机器柔性的柔性作业车间调度问题,工件数量与工序数量可自行调节,采用了传统遗传算法,编码方式为三维实数编码。
代码片段和文件信息
%该程序用于解决柔性作业车间调度,m个工件,n道工序,其中n为最大工序数,工件的工序
%数可以少于n,加工机器数为M,每个工件的每道工序具有多个机器可以选择,对应的时间
%不同,其中初始种群的储存方式采用cell数据类型
%Version:1.3
%fileDescription:调度机器可选的柔性作业车间问题,甘特图已完善改善初始解集(均衡分散原则),改善交叉(部分映射交叉)8*8实例
%last edit time:2019-4-15
function main()
count = 1000; %迭代次数
N = 50; %种群规模
pc = 0.8; %交换概率
pm = 0.2; %变异概率
m = 8; %工件数
n = 4; %工序数
M = 8; %机器数
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);
%-------------------------进行迭代--------------------------------------
for i = 1:count
[fitY1Y2Y3] = object(pTNNPmn);
[newpnewTN] = selection(pTNfitN);
[newpnewTN] = crossover(newppcmnNnewTN);
[newpnewTN] = var(newppmmnNsnewTN);
if best_fit > min(fit)
[best_pbest_TNbest_fitY1pY2pY3p]=best(best_fitbest_pfitbest_TNY1pY2pY3ppTNY1Y2Y3);
end
p = newp;
TN = newTN;
FIT(i) = min(fit); %用于适应度函数的
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(mn) %输入数据
s = cell(mn);
相关资源
- 求解多旅行商(MTSP)的遗传算法的
- 基于遗传算法的小波神经网络在股票
- matlab开发-基于遗传算法的机器人运动
- 《Matlab遗传算法工具箱及应用》源码
- 遗传算法图像分割matlab+源代码
- 神经网络、遗传算法、支持向量机、
- 谢菲尔德(Sheffield)遗传算法工具箱
- 遗传算法优化支持向量机GASVM
- 遗传算法工具箱
- MATLAB遗传算法工具箱及应用.zip
- 《MATLAB 遗传算法工具箱及应用》PDF完
- 遗传算法(Genetic Algorithm)MATLAB案例详
- MATLAB遗传算法工具箱及应用》pdf版.
- 基于遗传算法的自动排课系统设计
- MATLAB.遗传算法和粒子群算法程序设计
- 多目标优化文档及代码
- 超完整规范的多目标遗传优化算法M
- 遗传算法 -- matlab ga工具箱
- MATLAB遗传算法工具箱及应用 包含PDF电
- 神经网络的43个源程序及数据
- 基于BP算法和遗传算法的自适应噪声抵
- MATLAB遗传算法工具箱及应用(超清晰
- MATLAB遗传算法工具箱及应用(第二版
- 基于改进遗传算法的生产线平衡优化
- 雷英杰《MATLAB 遗传算法工具箱与应用
- MATLAB遗传算法工具箱及应用__雷英杰,
- 蜂群SVMABC-SVM遗传算法SVMGA-SVM粒子群
- 十大算法之详解模拟退火,禁忌搜索
- 遗传算法与径向基神经网络结合代码
- 神经网络和遗传算法结合的函数极值
评论
共有 条评论