【优化调度-装配线调度】基于遗传算法实现双装配线调度matlab代码

223 阅读2分钟

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代码与数据下载地址

见博客主页