遗传算法GA解决混合流水车间调度问题HFSP

混合流水车间HFSP

混合流水车间调度问题(HFSP)是传统流水车间调度问题(FSP)的拓展,本文针对HFSP问题进行描述、建模和求解。

混合流水车间问题(HFSP)


问题描述
通常模型做如下假设:
假设


HFSP符号描述:

在这里插入图片描述

决策变量:
决策变量
主要约束:
约束
约束
约束描述
优化目标:
优化目标

遗传算法(带精英保留)求解

本节使用带精英保留的遗传算法GA对HFSP问题进行求解。求解结果如下:


自定义算例如下:
加工时间矩阵:
加工时间
每阶段的并行机数量:
并行机数量


部分代码:
如需完整matlab代码,可私~ ~,也可咨询3249992049(扣)
main.m

clear all;
clc;
%% 生成数据
xls_path='.\工件信息.xlsx';
dataGenerate(xls_path);
%% 加载数据
load jobdata.mat
%% GA遗传算法
GAResult=GA(jobInfo,jobNum,machineVec,machineGroup);
%% GA迭代曲线
figure(1)
plot(GAResult.Convergence_curve_min,'r-','LineWidth',1.5)
hold on
plot(GAResult.Convergence_curve_avg,'b-.','LineWidth',1.5)
xlabel('运行次数');
ylabel('最大完工时间(makespan)');
title('运行结果')
legend('最小值','平均值')
box on; grid on
%% 画出甘特图
ganttIndex=1;
figure(2);
gantt_chart(GAResult.machineTable{ganttIndex},machineName,'甘特图');

GA.m

function GAResult=GA(jobInfo,jobNum,machineVec,machineGroup)
tstart=tic;         % 计时器
%% 种群规模、最大迭代次数
pop=100;
maxGen=100;
% 加工阶段数量,本数据集是8;自变量维度:dim
stageN=length(machineGroup);
dim=2*jobNum*stageN;

% 初始化种群
[chrom]=init(pop,jobNum,machineGroup);

% 计算目标函数值
for i=1:pop
    makespan=fitness(chrom(i,:),jobNum,machineVec,jobInfo,stageN);
    chrom(i,dim+1)=makespan;
end

%% 迭代主循环
Convergence_curve_min=zeros(1,maxGen);
Convergence_curve_avg=zeros(1,maxGen);
for gen=1:maxGen
    % 锦标赛法选择父代
    parent_chromosome=tournamentGA(chrom,dim);
    % 交叉变异
    offspring_chromosome=varOperator(parent_chromosome,jobNum,machineVec,...
        jobInfo,stageN);
    % 下面进行合并种群
    intermediate_chromosome=[chrom;offspring_chromosome];
    % 筛选种群
    [~,index]=sort(intermediate_chromosome(:,dim+1));
    chrom=intermediate_chromosome(index(1:pop),:);
    %% Disp
    disp(['当前迭代次数:',num2str(gen),'||最大完工时间(平均值):',num2str(mean(chrom(:,dim+1))),...
        '||最大完工时间(最小值):',num2str(min(chrom(:,dim+1)))]);
    %% 迭代曲线
    Convergence_curve_min(gen)=min(chrom(:,dim+1));
    Convergence_curve_avg(gen)=mean(chrom(:,dim+1));
end
RunTime=toc(tstart);
% disp(['Time:',num2str(RunTime)]);
%% 保存
GAResult.chrom=chrom;
GAResult.BestMakespan=chrom(1,size(chrom,2));
GAResult.RunTime=RunTime;
GAResult.Convergence_curve_min=Convergence_curve_min;
GAResult.Convergence_curve_avg=Convergence_curve_avg;
for i=1:pop
    [~,GAResult.machineTable{i}]=fitness(chrom(i,:),jobNum,machineVec,jobInfo,stageN);
end
save('GA_运行结果.mat','GAResult');
end

迭代曲线:
迭代曲线


甘特图:

甘特图

写在最后

本文内容为本人原创,未经本人允许,本文所有内容禁止搬运,严禁盗图盗文!如需MATLAB完整代码,可私博主~ ~

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
遗传算法是一种模拟生物遗传和进化过程的智能搜索算法,它在车间调度问题领域得到了广泛的应用。车间生产调度是对车间生产过程进行作业计划,通过有效的调度方法和优化技术,可以提高企业的资源利用率和生产效益。遗传算法以其简单、通用、适用范围广、全局优化能力强的特点,成为求解车间调度问题的核心和关键方法。\[2\] 在解决混合流水车间调度问题时,遗传算法的一般流程包括编码、初始化种群、评估个体适应度、选择、交叉和变异等步骤。首先,需要将问题转化为适合遗传算法处理的编码形式。然后,通过随机生成初始种群,每个个体代表一个调度方案。接下来,根据某种适应度函数评估每个个体的适应度,以确定其优劣程度。在选择阶段,根据适应度大小选择一部分个体作为父代,用于产生下一代个体。交叉和变异操作用于产生新的个体,以增加种群的多样性。通过迭代执行选择、交叉和变异操作,逐步优化个体的适应度,最终得到最优的调度方案。\[1\] 在具体实现中,可以根据具体问题的特点进行相应的调整和优化。例如,可以引入精英保留策略,保留每一代中适应度最好的个体,以防止优秀个体被淘汰。此外,还可以根据问题的特点设计适应度函数,选择合适的交叉和变异操作,以提高算法的性能和收敛速度。\[3\] 以上是关于遗传算法解决混合流水车间调度问题的一般介绍,具体的实现细节可以根据具体问题进行调整和优化。 #### 引用[.reference_title] - *1* [遗传算法混合流水车间调度问题(注释很多)JavaScript](https://blog.csdn.net/weixin_49736959/article/details/108919486)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【优化调度-车间调度】基于遗传算法求解混合流水车间调度问题Matlab代码](https://blog.csdn.net/matlab_dingdang/article/details/127260961)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [遗传算法GA解决混合流水车间调度问题HFSP](https://blog.csdn.net/weixin_46471774/article/details/130048345)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值