m基于GA遗传优化的生产工艺设备布置优化matlab仿真

1.算法概述

       在设备布置的问题上,本文将作业车间设备布置这个多目标优化问题看成是包含布局面积,物流成本和生产工艺的连续优化的多行设备布置问题,使之更具有实际意义,在标准遗传算法的基础上,通过在染色体编码,约束处理,选择算子和变异算子设计,适应值计算等方面进行优化改进,提出一种多目标作业车间设备布局优化算法,以此金矿浮选厂为实例基础,通过Matlab仿真实验验证该方法的有效性,最后为低品位金矿浮选厂推荐出合理,实用的生产工艺流程及设备布置方案,论文研究的工作主要分以下几部分进行:

 

(1) 工艺研究:对金矿浮选工艺进行研究,产品,产量,产品加工的工艺路线,工序工时定额等基本因素是影响工厂生产组织方式和布局的主要因素,确定生产组织方式,制定与生产组织方式相适应的产品工艺路线,应用成组技术划分作业单元,确定工序工时,计算工厂设备需求数量,对影响工厂布局的主要因素进行了详细的分析与设计。

 

 (2) 设备选型:对浮选厂使用的各种机械设备有充分的了解,了解各机械设备的型号及产量等,以期通过合理进行设备的选择和布置提高工作效率。浮选工艺由颚式破碎机、球磨机、分级机、磁选机、浮选机、浓缩机和烘干机等主要设备,配合给矿机、提升机、传送机可组成完整的选矿生产线。为达到具有高效、低能、处理量高、经济合理等优点的目标。并结合设备布置的相关理论,对选金工艺流程进行优化。

 

 (3) 设备布置:针对案例车间的实际情况,将布局问题可视为连续优化的多行设备布局问题。根据以往车间布局问题相关文献所提供的方式,同时考虑本课题的研究对象,建立基于改进遗传算法的设备布置数学模型,并运用Matlab软件对其进行求解,通过分析仿真结果的分析,来对规划方案进行评估,找到一些尚不完善的地方,达到优化方案的目的。

 

1.目标函数的设计:

 

        首先,我们这里目标函数的设计如下所示:

 

 

 

        这里,对第一个目标函数需要修改,结合上次和你说的几个点,成本除了和距离,评论,单位成本之外,还和每个设备之间的流量有关系,这里C为单位时间单位物体的物流成本,所以上面的公式需要修改为:  

 

   

 

 

 

目标函数总物流成本;

 

 

 

 

目标函数的布局面积;

 

 

 

 

布局在同一行的ij设备之间的最小横向跨度;

 

 

 

 

       然后,还需要加入一个约束条件,即每个设备之间的最小间隔,因为,设备之间不能无限制的接近,否则就没有意义了,直接挨一起就可以了,这样就没有实际意义了。实际中每个设备之间有其合理的有效工作区域。   

 

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

 

 

 

3.核心MATLAB程序

 

clc;
clear;
close all;
warning off;
addpath 'func\'
addpath 'GA_toolbox\'
 RandStream.setDefaultStream(RandStream('mt19937ar','seed',1));
%参数设置
%设备长度
Li  = [8; 8;24; 8; 8;10; 8;12;12; 8; 8; 8]/2;
%设备宽度
Wi  = [8; 8;24; 8; 8;10; 8;12;12; 8; 8; 8]/4;
 
% 单位物流成本
c=[0,3,0,0,0,0,0,0,0,0,0,0;
   0,0,3,0,0,0,0,0,0,0,0,0;
   0,0,0,2,0,0,0,0,0,0,0,0;
   0,0,2,0,1,0,0,0,0,0,0,0;
   0,0,0,0,0,3,0,0,0,0,0,0;
   0,0,0,0,2,0,2,0,0,0,0,0;
   0,0,0,0,0,0,0,3,0,0,0,0;
   0,0,0,0,0,0,0,0,3,0,0,0;
   0,0,0,0,0,0,0,0,0,1,0,0;
   0,0,0,0,0,0,0,0,0,0,1,0;
   0,0,0,0,0,0,0,0,0,0,0,1;
   0,0,0,0,0,0,0,0,0,0,0,0];
 
% 物料搬运的频率
f=[0,2,0,0,0,0,0,0,0,0,0,0;
   0,0,2,0,0,0,0,0,0,0,0,0;
   0,0,0,3,0,0,0,0,0,0,0,0;
   0,0,3,0,2,0,0,0,0,0,0,0;
   0,0,0,0,0,2,0,0,0,0,0,0;
   0,0,0,0,3,0,1,0,0,0,0,0;
   0,0,0,0,0,0,0,4,0,0,0,0;
   0,0,0,0,0,0,0,0,3,0,0,0;
   0,0,0,0,0,0,0,0,0,1,0,0;
   0,0,0,0,0,0,0,0,0,0,1,0;
   0,0,0,0,0,0,0,0,0,0,0,1;
   0,0,0,0,0,0,0,0,0,0,0,0];
 
% 流量
Q=[0,3,0,0,0,0,0,0,0,0,0,0;
   0,0,3,0,0,0,0,0,0,0,0,0;
   0,0,0,3,0,0,0,0,0,0,0,0;
   0,0,2,0,3,0,0,0,0,0,0,0;
   0,0,0,0,0,3,0,0,0,0,0,0;
   0,0,0,0,2,0,3,0,0,0,0,0;
   0,0,0,0,0,0,0,1,0,0,0,0;
   0,0,0,0,0,0,0,0,1,0,0,0;
   0,0,0,0,0,0,0,0,0,1,0,0;
   0,0,0,0,0,0,0,0,0,0,1,0;
   0,0,0,0,0,0,0,0,0,0,0,1;
   0,0,0,0,0,0,0,0,0,0,0,0];
 
 
 
 
 
 
 
%设备之间的最小间隔
JGX=[0,10,10,10,10,10,10,10,10,10,10,10;
    10, 0,10,10,10,10,10,10,10,10,10,10;
    10,10,0, 10,10,10,10,10,10,10,10,10;
    10,10,10, 0,10,10,10,10,10,10,10,10;
    10,10,10,10, 0,10,10,10,10,10,10,10;
    10,10,10,10,10,0 ,10,10,10,10,10,10;
    10,10,10,10,10,10, 0,10,10,10,10,10;
    10,10,10,10,10,10,10, 0,10,10,10,10;
    10,10,10,10,10,10,10,10, 0,10,10,10;
    10,10,10,10,10,10,10,10,10, 0,10,10;
    10,10,10,10,10,10,10,10,10,10, 0,10;
    10,10,10,10,10,10,10,10,10,10,10, 0;
    ]/5;
 
 
JGY=[0,10,10,10,10,10,10,10,10,10,10,10;
    10, 0,10,10,10,10,10,10,10,10,10,10;
    10,10,0, 10,10,10,10,10,10,10,10,10;
    10,10,10, 0,10,10,10,10,10,10,10,10;
    10,10,10,10, 0,10,10,10,10,10,10,10;
    10,10,10,10,10,0 ,10,10,10,10,10,10;
    10,10,10,10,10,10, 0,10,10,10,10,10;
    10,10,10,10,10,10,10, 0,10,10,10,10;
    10,10,10,10,10,10,10,10, 0,10,10,10;
    10,10,10,10,10,10,10,10,10, 0,10,10;
    10,10,10,10,10,10,10,10,10,10, 0,10;
    10,10,10,10,10,10,10,10,10,10,10, 0;
    ]/5;
 
 
 
%设备之间的间距
%d,变量d为优化后的值,通过优化后,获得各个设备的坐标位置,从而计算各个设备之间的距离,从得到C;
%同时,需要使得区域面积S最小
 
%矩形区域的长度,x轴
Len      = 100;  
%矩形区域的宽度,y轴
Wid      = 100;  
%各设备的最小水平间距
mindx    = 5;
%各设备的最小垂直间距
mindy    = 5;
%各设备到区域边界的最小距离
minds    = 5;
 
%遗传算法参数
%面积或者成本权值
alpha    = 0.5;
%种群规模
pop_size = 200;
%迭代次数
max_gen  = 400;
%变异概率
Pm       = 0.2;
n        = size(c,1);
%产生各个设备的区域限制范围
[Low_limit,Up_limit] = func_limit(Li,Len,Wi,Wid,minds,n);
 
%遗传算法优化
[BextXY,BextFit,ALLXY,ALLFit]=func_GA(   max_gen,...
                                         pop_size,...
                                         Pm,...
                                         Low_limit,...
                                         Up_limit,...
                                         Len,...
                                         Wid,...
                                         Li,...
                                         Wi,...
                                         c,...
                                         f,...
                                         Q,...
                                         JGX,...
                                         JGY,...
                                         mindx,...
                                         mindy,...
                                         alpha);
                             
X=BextXY{max_gen};
 
disp('遗传算法输出的最优结果为');
Xp = X(1:2:end)'
Yp = X(2:2:end)'
figure(4);
for i = 1:n
    func_positon(Xp(i),Yp(i),Li(i),Wi(i));
    hold on;
end
 
02_014m

 

  

 

posted @ 2022-12-14 22:16  我爱C编程  阅读(66)  评论(0编辑  收藏  举报