👨🎓个人主页:研学社的博客
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
经典的分布式柔性作业车间调度问题(DFJSP)主要考虑工厂分配、机器布置、作业排序和运输。迄今为止,相关文献尚未研究工人安排的DFJSP,这在实际制造系统中广泛存在。在本文中,我们研究了工人安排的DFJSP(DFJSPW),其中不仅考虑了工厂,机器和操作,而且同时考虑了工人。针对此问题制定了混合整数线性规划模型。相应地,针对拟议的DFJSPW提出了一种基于NSGA-II结构的改进模因算法(IMA),其目标是同时最小化机器的制造跨度,最大工作量和工人工作量。在 IMA 中,设计了一种简化的两级编码和四种启发式解码方法来对个人进行编码和解码。设计合理的自适应邻域搜索算子,增强IMA的局部搜索能力,加速其收敛。构建了 58 个基准来评估我们提议的 IMA 的绩效。
📚2 运行结果
只有运行结果,没有运行可视化喔。
%% read the time stoppong criteria and benchmark
load('run_time_set.mat')
time_stop=min(run_time_set);
file_all=dir('Instance_*.mat');
for file=1:size(file_all,1)
file_name=file_all(file).name;
load(file_name);
%% input parameter
pop_size=100;
crossRate=0.8;
mutationRate=0.3;
NS_rate=0.1;
Obj_num=3;
count=1;
Population_all=[];
for k=1:count
tic;
obj=[];
%% initlize the neighbor information table
adap_use_times={[0,0,0,0],[1,1,1,1],[0,0,0,0]};
%% population initialization
[pop_st]=initialization(job_num,pop_size,all_oper,ope_set,fa_num,wo_num,ma_set_fa);
%% decode population
[Population_st]=decode(job_infor,pop_st,pop_size,job_num,all_oper,fa_num,Fa_ma_set,wo_num,ope_set,ma_set_fa);
while toc<=time_stop(file)
%% evolutionary operators
[cross_pop]=crossPopulate(Population_st,pop_size,all_oper,crossRate,wo_num);
[mut_pop]=mutation_pop(cross_pop,pop_size,all_oper,mutationRate,fa_num,wo_num);
[pop_evo]=decode(job_infor,mut_pop,pop_size,job_num,all_oper,fa_num,Fa_ma_set,wo_num,ope_set,ma_set_fa);
%% combine population
[Population_home]=[Population_st, pop_evo];
%% non-dominated sorting and crowding distance
len=size(Population_home,2);
[Population_home_ns]=nondominant_sort(Population_home,len,Obj_num);
[Population_home_ns]=crowding_distance(Population_home_ns,Obj_num);
%% ANS operator
[Population_home_ns,adap_use_times]=ANS_operator(Population_home_ns,all_oper,len,NS_rate,ope_set,job_infor,job_num,fa_num,Obj_num,Fa_ma_set,adap_use_times,wo_num,ma_set_fa);
%% population selection
[Population_st,Population_first]=selectPopulate(Population_home_ns,pop_size,Obj_num);
cur_obj=reshape([Population_first.objectives],[3,length(Population_first)])';
obj=[obj;round(mean(cur_obj))]
disp(['Number of PF members = ' num2str(numel(Population_first))])
end
%% Combine the optimal Pareto front in each computation
Population_all=[Population_all,Population_first];
end
%% Output the final Pareto front of 30 runs
[Population_ns_all]=nondominant_sort(Population_all,size(Population_all),Obj_num);
[~,index]=find([Population_ns_all.rank]==1);
num2=size(index,2);
Population_ns_one=Population_ns_all(index);
%% remove the duplicates
[Population_child_all]=move_repeat(Population_ns_one,num2,Obj_num);
filename_result=strcat('result_all_',file_name(1:end-4));
save(filename_result,'Population_child_all');
end
end
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]Qiang Luo, Qianwang Deng, Guiliang Gong, Xie Guo, Xiahui Liu (2022) A distributed flexible job shop scheduling problem considering worker arrangement using an improved memetic algorithm