1 简介
总结了车间作业调度问题,提出了基于遗传算法的装配线调度的优化算法.通过仿真试验,初步实现了该算法在解决生产装配线调度问题的可用性.
2 部分代码
clc;
clear;
close all;
%% 问题定义
model=CreateModel(); %创建问题模型
CostFunction=@(q) MyCost(q,model); %适应度函数设置
nVar=model.nVar; % 问题的维度
VarSize=[1 nVar]; % 维度矩阵
%% 遗传参数设置
MaxIt = 100; %算法最大迭代次数
nPop=30; %种群数目
pc= 0.8; %交叉概率
pm=0.8; %变异概率
%% Initialization 初始化
empty_particle.Position=[];
empty_particle.Cost=[];
empty_particle.Sol=[];
particle=repmat(empty_particle,nPop,1);
GlobalBest.Cost=inf;%定义全局最优值
BestCost=zeros(MaxIt,1);%记录每代的最优适应度值
for i=1: nPop
%初始化种群
particle(i).Position= CreateRandomSolution(model);%随机解
%评价
[particle(i).Cost,particle(i).Sol] =CostFunction(particle(i).Position);%计算适应度值
%更新全局 最优
if particle(i).Cost<GlobalBest.Cost
GlobalBest=particle(i);
end
end
for iter=1:MaxIt
particle = Select(particle,[particle(:).Cost]);%选择
particle = Crossover(particle,pc);%交叉
particle = Mutation(particle,pm);%变异
for i=1: nPop
%评价
[particle(i).Cost,particle(i).Sol] =CostFunction(particle(i).Position);%求适应度值
%更新全局 最优
if particle(i).Cost<GlobalBest.Cost
GlobalBest=particle(i);
end
end
BestCost(iter) = GlobalBest.Cost;%记录每代的最优值
% Plot Solution
figure(1);
PlotSolution(GlobalBest.Sol,model);%画出甘特图
pause(0.01);
disp(['iter = ' num2str(iter) ';BestCost = ' num2str(GlobalBest.Cost)]);%显示每代的适应度值
end
img =gcf; %获取当前画图的句柄
print(img, '-dpng', '-r600', './运行结果1.png') %即可得到对应格式和期望dpi的图像
figure
plot(BestCost,'LineWidth',2);
xlabel('迭代次数');
ylabel('目标函数值');
img =gcf; %获取当前画图的句柄
print(img, '-dpng', '-r600', './运行结果.png') %即可得到对应格式和期望dpi的图像
3 仿真结果
4 参考文献
[1]余维薇. "基于遗传算法的生产装配线调度优化研究." 机电产品开发与创新 20.3(2007):3.
部分理论引用网络文献,若有侵权联系博主删除。
5 MATLAB代码与数据下载地址
见博客主页