【车间调度】基于协同进化遗传算法求解流水车间调度问题附Matlab代码

简介: 【车间调度】基于协同进化遗传算法求解流水车间调度问题附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

为求解多协作车间的计划调度问题,提出了并行协同进化遗传算法.该算法采用基于工序的染色体编码方案.在遗传操作过程中,首先利用提出的基于工序约束的基因调整算法进行交叉操作和变异操作,保证了新个体满足工序约束.在解码操作过程中,采用考虑设备能力空间的解码算法,使得解码产生的调度为活动调度.此外,运用协同进化的思想,提出了协同适应值计算的算法,使协作环境的变化能灵敏地反映在个体的适应值上,从而有效地指导种群的进化.实例表明,该算法能够满足多协作车间并行协同调度的要求.

⛄ 部分代码

%COGA Summary of this function goes here


%   标准合作型协同进化遗传算法

clc;

clear all;

%

AVE=0;

Array_TestValue=[];

%% 定义全局变量

global POPSIZE_1  POPSIZE_2;%种群1的规模 种群2的规模

global P0 P1 T PC PM ;  %种群1,种群2,变异概率,交叉概率

POPSIZE_1=20;

POPSIZE_2=100;

Pc=0.90;

   %输入基础数据信息包含,工件个数N,每个工件的子工件个数,每个子工件在两台机器上的加工时间

   N=100;%工件的个数

   Range_Child_N=[3,7];%Range_Child_N  切割子工件的个数的范围

   Range_Time_M1_D=5;Range_Time_M1_U=30;% 机器1的加工时间范围

   Range_Time_M2_D=5;Range_Time_M2_U=30;% 机器2的加工时间的范围

   Limit_Volume=40;   % 缓冲区容量限制

   Info_N=zeros(N,max(Range_Child_N)*2+1);  % 第一列每个工件包含的的子工件数量,从第2列开始,表示子工件在两台机器上的加工时间比如  N=[3,2,5,1,8,4,6]

P0= cell(1,POPSIZE_1);  %  由20个矩阵组成的元胞

P1= zeros(POPSIZE_2,N);

T=150;   % 迭代次数150

FitnessValue_P0=zeros(1,POPSIZE_1);

FitnessValue_P1=zeros(POPSIZE_2,4);     %[选取的PO中的个体的编号,Cmax.Ctime,Count]

Size_External_Set=T;


Num_Coop=10;

Size_Nbest=7;

BestValueSet=cell(Size_External_Set,5); %档集中,外部存档集的形势{[个体0][个体2][Cmax][Ctime][Count]}


% ***********填充Inof_N

% for i=1:size(Info_N,1)

%     for j=1: size(Info_N,2)

%         if j==1  % 子工件的个数

%             Info_N(i,j)= round(rand(1,1)*(Range_Child_N(1,2)-Range_Child_N(1,1)))+Range_Child_N(1,1); % 3-6的随机整数

%             continue;

%         elseif(j>=2 && j<=2*Info_N(i,1)+1)

%              if(mod(j,2)==0) % 表示第一台机器的加工时间

%                 Info_N(i,j)= round(rand(1,1)*(Range_Time_M1_U-Range_Time_M1_D))+Range_Time_M1_D; % 5-20的随机整数

%              else

%                 Info_N(i,j)= round(rand(1,1)*(Range_Time_M2_U-Range_Time_M2_D))+Range_Time_M2_D; % 5-20的随机整数

%             end

%         else

%             Info_N(i,j)=0;

%         end

%     end

% end

% fid=fopen('F:\cn_windows_7_ultimate_with_sp1_x86_dvd_618763\0824\论文数据\Info_N1.txt','wt');

% for i=1:size(Info_N,1)

%     for j=1:size(Info_N,2)

%        fprintf(fid,'%d\t',Info_N(i,j));        

%     end

%     fprintf(fid,'%s\n',';');  

% end

% fclose(fid);

Info_N =[6 10 6 29 15 30 7 14 6 7 28 24 13 0 0 ;

6 16 28 12 30 14 14 7 25 7 9 14 23 0 0 ;

4 8 12 7 6 12 14 11 25 0 0 0 0 0 0 ;

7 20 10 27 15 10 5 25 26 16 19 5 29 9 26 ;

4 11 21 20 22 27 25 23 29 0 0 0 0 0 0 ;

6 11 17 10 16 14 21 24 20 24 17 24 28 0 0 ;

7 7 7 24 13 13 6 8 20 9 16 9 6 10 22 ;

5 16 23 26 5 24 7 11 7 19 22 0 0 0 0 ;

7 26 21 16 13 10 11 8 7 20 25 13 24 29 10 ;

6 28 18 25 25 28 22 14 22 16 12 24 6 0 0 ;

4 7 20 29 12 30 19 9 12 0 0 0 0 0 0 ;

7 18 22 14 25 9 18 9 9 25 24 13 28 19 19 ;

4 22 21 7 22 29 25 21 22 0 0 0 0 0 0 ;

6 14 8 20 18 21 19 26 30 8 15 28 13 0 0 ;

5 22 14 19 16 17 22 13 17 14 23 0 0 0 0 ;

5 18 8 7 17 13 9 23 10 17 24 0 0 0 0 ;

4 16 13 25 8 8 7 15 27 0 0 0 0 0 0 ;

4 8 20 6 22 28 8 12 17 0 0 0 0 0 0 ;

4 19 6 26 8 15 12 9 9 0 0 0 0 0 0 ;

6 28 12 14 21 30 28 21 23 23 15 24 7 0 0 ;

4 16 5 17 12 21 23 12 5 0 0 0 0 0 0 ;

5 28 13 8 14 24 27 5 27 13 26 0 0 0 0 ;

5 23 30 25 14 18 18 21 25 22 30 0 0 0 0 ;

6 16 28 10 28 19 28 25 19 21 15 13 20 0 0 ;

5 19 26 20 29 12 21 17 22 26 8 0 0 0 0 ;

6 19 19 17 9 7 12 25 30 13 28 13 11 0 0 ;

6 16 13 26 19 6 11 26 5 25 22 18 29 0 0 ;

4 25 23 18 22 9 26 26 6 0 0 0 0 0 0 ;

5 22 30 24 28 18 7 27 21 27 8 0 0 0 0 ;

5 19 21 16 16 28 7 28 13 10 14 0 0 0 0 ;

6 23 26 12 8 20 19 15 14 15 27 24 13 0 0 ;

5 7 6 21 18 18 21 10 25 17 9 0 0 0 0 ;

4 17 13 23 18 24 23 28 6 0 0 0 0 0 0 ;

5 25 29 22 23 23 21 23 19 26 29 0 0 0 0 ;

5 11 14 14 26 12 22 16 13 6 30 0 0 0 0 ;

5 21 20 15 14 17 21 30 22 16 8 0 0 0 0 ;

5 13 19 28 17 10 22 22 9 5 8 0 0 0 0 ;

4 12 9 10 7 20 18 13 14 0 0 0 0 0 0 ;

6 12 23 8 18 17 5 15 29 27 24 14 9 0 0 ;

3 10 8 27 16 23 19 0 0 0 0 0 0 0 0 ;

5 12 23 15 29 19 9 12 14 17 6 0 0 0 0 ;

3 20 11 29 29 9 10 0 0 0 0 0 0 0 0 ;

7 7 26 5 24 17 23 26 30 8 20 11 22 8 7 ;

6 20 12 7 27 28 23 23 27 8 28 5 10 0 0 ;

5 11 26 11 29 17 9 21 7 21 9 0 0 0 0 ;

4 11 26 22 20 22 19 30 18 0 0 0 0 0 0 ;

4 23 25 27 18 17 27 21 14 0 0 0 0 0 0 ;

4 13 26 15 12 15 30 30 27 0 0 0 0 0 0 ;

6 27 14 24 18 30 6 26 8 20 10 17 19 0 0 ;

5 30 18 24 30 6 9 15 14 25 27 0 0 0 0 ;

7 10 26 8 8 19 27 13 20 12 28 11 6 16 27 ;

4 11 15 23 7 22 28 29 17 0 0 0 0 0 0 ;

5 16 10 21 27 13 7 7 25 25 18 0 0 0 0 ;

5 9 29 18 6 12 17 19 30 19 19 0 0 0 0 ;

7 10 22 19 10 24 28 7 13 21 13 21 19 9 18 ;

4 24 11 26 9 11 12 17 24 0 0 0 0 0 0 ;

6 19 16 6 9 22 26 21 18 21 25 6 20 0 0 ;

4 9 14 24 14 27 17 16 8 0 0 0 0 0 0 ;

5 21 18 11 13 9 27 12 24 22 11 0 0 0 0 ;

6 29 12 18 26 7 17 19 28 26 19 24 7 0 0 ;

4 25 16 15 15 14 6 28 11 0 0 0 0 0 0 ;

4 8 17 25 7 17 14 24 29 0 0 0 0 0 0 ;

6 14 27 22 18 15 13 7 5 20 21 14 11 0 0 ;

6 30 11 9 26 26 15 27 16 20 16 14 10 0 0 ;

5 6 29 15 22 21 17 21 24 6 17 0 0 0 0 ;

6 19 7 11 24 14 12 22 24 8 18 30 10 0 0 ;

6 29 11 25 11 22 24 8 26 13 7 13 8 0 0 ;

4 13 9 28 8 16 29 12 26 0 0 0 0 0 0 ;

3 26 7 25 9 25 8 0 0 0 0 0 0 0 0 ;

3 19 23 22 29 8 23 0 0 0 0 0 0 0 0 ;

6 5 16 15 6 10 5 20 30 20 28 21 25 0 0 ;

4 9 10 11 14 25 11 30 14 0 0 0 0 0 0 ;

3 8 23 16 16 17 12 0 0 0 0 0 0 0 0 ;

5 24 16 27 5 22 22 29 19 16 5 0 0 0 0 ;

3 17 18 10 21 21 27 0 0 0 0 0 0 0 0 ;

3 27 16 17 20 14 9 0 0 0 0 0 0 0 0 ;

7 6 29 15 17 15 23 27 6 25 13 13 27 25 6 ;

3 6 29 7 12 14 22 0 0 0 0 0 0 0 0 ;

5 27 25 15 25 22 15 25 24 27 29 0 0 0 0 ;

4 20 21 12 7 5 14 11 9 0 0 0 0 0 0 ;

6 16 19 11 6 8 27 19 11 22 29 18 22 0 0 ;

6 25 30 19 28 20 29 27 26 28 23 5 28 0 0 ;

4 27 6 23 20 9 8 22 28 0 0 0 0 0 0 ;

4 28 30 15 5 27 25 26 15 0 0 0 0 0 0 ;

3 22 24 16 27 10 24 0 0 0 0 0 0 0 0 ;

7 6 18 17 7 22 25 14 12 24 11 23 28 21 8 ;

6 11 23 6 26 24 30 18 29 11 21 19 8 0 0 ;

6 13 6 9 26 29 9 28 30 5 21 26 26 0 0 ;

6 26 22 19 5 25 9 5 29 20 13 12 29 0 0 ;

5 21 21 17 29 20 16 28 27 14 19 0 0 0 0 ;

6 14 8 12 5 8 16 10 21 19 28 10 10 0 0 ;

4 13 9 9 26 6 18 13 13 0 0 0 0 0 0 ;

6 25 21 8 25 13 28 17 15 21 21 9 24 0 0 ;

4 17 18 18 22 16 25 27 27 0 0 0 0 0 0 ;

6 14 17 25 25 15 24 25 6 11 21 7 23 0 0 ;

3 29 9 30 23 5 23 0 0 0 0 0 0 0 0 ;

3 6 21 23 6 15 25 0 0 0 0 0 0 0 0 ;

4 28 24 10 18 14 29 16 22 0 0 0 0 0 0 ;

6 5 28 28 15 12 12 16 5 23 16 8 14 0 0 ;

5 29 24 6 29 28 23 26 17 7 8 0 0 0 0 ];


%% 初始化种群信息  定义两2个种群,编写人工解的生成方法,解码函数。

tic;

%获取一个人工解: 入参:工件的信息,和体积容量

[Pop0_Artifical,Pop1_Artifical] = getArtifical(Info_N,Limit_Volume);

% 填充初始种群

for i=1:max(POPSIZE_1,POPSIZE_2)

   if(i<=min(POPSIZE_1,POPSIZE_2))

      if(i==1)

          P0{1,i}=Pop0_Artifical;

          P1(i,:)=Pop1_Artifical;

      else

          % 获取规则解

          [Pop0_Rule,Pop1_Rule] = getRule(Info_N,Limit_Volume);

          P0{1,i}=Pop0_Rule;

          P1(i,:)=Pop1_Rule;

      end

   else

       if(POPSIZE_1>POPSIZE_2)

          [Pop0_Rule,Pop1_Rule] = getRule(Info_N,Limit_Volume);

          P0{1,i}=Pop0_Rule;

          P1(i,:)=Pop1_Rule;  

       else

          P1(i,:)=randperm(N);

       end

   end

end

⛄ 运行结果

⛄ 参考文献

[1] 于晓义, 孙树栋, 褚崴. 基于并行协同进化遗传算法的多协作车间计划调度[J]. 计算机集成制造系统, 2008, 14(5):10.

[2] 郑金克, 杨明忠, 蔡兰. 基于遗传算法的流水车间调度的实现[J]. 机电工程技术, 2006, 035(001):92-94.

[3] 周艳平王功明. 协同进化遗传算法及在车间调度中的应用[J]. 计算机系统应用, 2021, 30(10):248-253.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
2天前
|
算法 BI Serverless
基于鱼群算法的散热片形状优化matlab仿真
本研究利用浴盆曲线模拟空隙外形,并通过鱼群算法(FSA)优化浴盆曲线参数,以获得最佳孔隙度值及对应的R值。FSA通过模拟鱼群的聚群、避障和觅食行为,实现高效全局搜索。具体步骤包括初始化鱼群、计算适应度值、更新位置及判断终止条件。最终确定散热片的最佳形状参数。仿真结果显示该方法能显著提高优化效率。相关代码使用MATLAB 2022a实现。
|
2天前
|
算法 数据可视化
基于SSA奇异谱分析算法的时间序列趋势线提取matlab仿真
奇异谱分析(SSA)是一种基于奇异值分解(SVD)和轨迹矩阵的非线性、非参数时间序列分析方法,适用于提取趋势、周期性和噪声成分。本项目使用MATLAB 2022a版本实现从强干扰序列中提取趋势线,并通过可视化展示了原时间序列与提取的趋势分量。代码实现了滑动窗口下的奇异值分解和分组重构,适用于非线性和非平稳时间序列分析。此方法在气候变化、金融市场和生物医学信号处理等领域有广泛应用。
|
3天前
|
资源调度 算法
基于迭代扩展卡尔曼滤波算法的倒立摆控制系统matlab仿真
本课题研究基于迭代扩展卡尔曼滤波算法的倒立摆控制系统,并对比UKF、EKF、迭代UKF和迭代EKF的控制效果。倒立摆作为典型的非线性系统,适用于评估不同滤波方法的性能。UKF采用无迹变换逼近非线性函数,避免了EKF中的截断误差;EKF则通过泰勒级数展开近似非线性函数;迭代EKF和迭代UKF通过多次迭代提高状态估计精度。系统使用MATLAB 2022a进行仿真和分析,结果显示UKF和迭代UKF在非线性强的系统中表现更佳,但计算复杂度较高;EKF和迭代EKF则更适合维数较高或计算受限的场景。
|
1月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
102 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
1月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
66 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
1月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
57 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
4月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
4月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
4月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)

热门文章

最新文章

下一篇
DDNS