模型参考这里。
%主函数 clear all; clc; pop = 200; %种群数量 gen = 10; %迭代次数 pop_f=100;%父代种群数量 data_mac;%载入车间设备信息 data_pro;%载入待加工工件信息 pro_matrix=[];%包含工序及目标函数值得决策矩阵 mac_matrix=[];%包含设备染色体信息的决策矩阵 for i=1:pop_f%生成初始种群 [P,M,N]=initPop(J); [part_t,mac_t]=decode(J,P,M,N); c_time=cal_comp_time(part_t); d_time=cal_def_time(J,part_t); t_load=cal_equ_load(part_t); t_cons=cal_ene_consu(Mac,mac_t,P,M,c_time); pro_matrix(i,:)=[P,c_time,d_time,t_load,t_cons]; mac_matrix(i,:)=M; end for i = 1 : gen pool = round(pop/2);%round() 四舍五入取整 交配池大小 tour = 2;%竞标赛 参赛选手个数 [p_matrix,m_matrix]= non_domination_sort_mod(pro_matrix,mac_matrix);%种群进行非支配快速排序和拥挤度计算 clear pro_matrix; clear mac_matrix; [p_parent_chromosome,m_parent_chromosome] = tournament_selection(p_matrix,m_matrix,pool,tour);%竞标赛选择适合繁殖的父代 %交叉变异生成子代种群 [p_child_matrix,m_child_matrix]=genetic_operator(J,p_parent_chromosome,m_parent_chromosome); %根据父类和子类总种群,进行非支配快速排序,选取出下一代的父代种群 for j=1:size(p_child_matrix,1) P=p_child_matrix(j,:); M=m_child_matrix(j,:); N=machine_index(J,P,M); [part_t,mac_t]=decode(J,P,M,N); c_time=cal_comp_time(part_t); d_time=cal_def_time(J,part_t); t_load=cal_equ_load(part_t); t_cons=cal_ene_consu(Mac,mac_t,P,M,c_time); pro_matrix(j,:)=[P,c_time,d_time,t_load,t_cons]; mac_matrix(j,:)=M; end n_p_m=size(pro_matrix,1); pro_matrix(n_p_m+1:n_p_m+10,:)=p_matrix(1:10,1:size(pro_matrix,2));%保留精英染色体到子代种群中 mac_matrix(n_p_m+1:n_p_m+10,:)=m_matrix(1:10,:); end [p_matrix,m_matrix]= non_domination_sort_mod(pro_matrix,mac_matrix); num_of_level_1=length(find(p_matrix(:,size(p_matrix,2)-1)==1)); target_p_matrix=p_matrix(1:num_of_level_1,:); target_m_matrix=m_matrix(1:num_of_level_1,:); best_p=target_p_matrix(1,:);%选取第一个作为最优解,可根据需求,选择AHP和熵权法或模糊决策法,选出最优解 best_m=target_m_matrix(1,:); P=best_p(1:length(best_p)-6); M=best_m; N=machine_index(J,P,M); [~,mac_t]=decode(J,P,M,N); ganttChart1(J,best_p,M,mac_t);
[1]鞠海华, 刘长安, 张伟,等. 基于带精英策略的NSGA-Ⅱ遗传算法的车间作业调度研究[J]. 组合机床与自动化加工技术, 2008, 000(004):15-19.
部分理论引用网络文献,若有侵权联系博主删除。