ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【车间调度】基于nsgaII算法求解车间调度matlab源码

2022-01-22 18:34:39  阅读:221  来源: 互联网

标签:车间 matrix pro cal 调度 mac 源码 time part


1 模型介绍

模型参考这里

2 部分代码

%主函数
 
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);
 
​

3 仿真结果

img

4 参考文献

[1]鞠海华, 刘长安, 张伟,等. 基于带精英策略的NSGA-Ⅱ遗传算法的车间作业调度研究[J]. 组合机床与自动化加工技术, 2008, 000(004):15-19.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

标签:车间,matrix,pro,cal,调度,mac,源码,time,part
来源: https://blog.csdn.net/qq_59747472/article/details/120517801

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有