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代码与数据下载地址
见博客主页