首页 > 其他分享 >基于遗传优化的车间订单拣选优化matlab仿真

基于遗传优化的车间订单拣选优化matlab仿真

时间:2022-11-22 18:22:14浏览次数:60  
标签:拣选 Selch 订单 matlab X11 优化 gen

一、建模背景

汽车生产需要进行上千个零件的组装,而主机厂采用柔性生产,对于每种零部件的需求呈现小批量,多频次的特点,而对于服务于主机厂的区域分拨中心,需要对主机厂的订单进行拣选配送,完成需求的响应。如果按订单先到先拣的方式,将导致拣货工作人员在巷道内行走距离增加,效率较低,订单分批是为了提高拣选作业效率,目标就是缩短拣货过程中行走距离和时间,降本增效。

 

 

订单分批问题运用数学语言来表达是指把需要拣选的订单通过有效的模型进行分批,通过计算得出拣选的顺序从而使所求的目标函数实现最优。一般情况下建立的模型有两个优化目标:拣选行走距离最短或拣选行走时间最短,而这两个目标线性相关,距离的长短与行走时间呈正相关,因此本文建立以距离最短为目标的订单分批模型。

为了研究需要,同时基于问题的实际背景条件,本文对订单分批优化问题作出几点合理假设,具体如下:

(1)区域分拨中心的仓储为双区型仓库,仓库布局为平行排列的多层货架组成。相较于以往的单库型仓库,双区型更普遍于仓储运营,具有较好的实际意义,其仓库类型如图3-2;

(2)每张订单至少包含一个货品,且一张订单不可拆分为多个批次进行拣选;

(3)忽略货架高度所产生的距离,高度上的位移不算入拣选路径中;

(4)每个笼车的承重和容量规格相等,装载的货品容积和质量不超过限制条件;

(5)拣选单上的所有货物存储货位已知;

(6)紧急拉动的订单专人专车,不插入订单分批中;

(7)任意存储位置所储存的货物数量都能满足一次拣选要求;

(8)所有的拖车均为统一规格,移动速度与承载能力相同,拣选过程中速度一定,不考虑加速减速;

(9)拣选人员和拣选设备数量至少为一个,在运作过程中可能出现多个拣选设备同时拣选,故对于人员和设备不作要求

(10)拣选策略采用的为S型拣选路径

 

 

 

 初始的参数全部放在程序的最上面

 

 二、部分仿真图

这些初始参数自己设置就好,可以设置,模拟不同的订单情况。

 

 

这个优化算法的收敛过程,

 

下面我们改变不同的订单数量,分析不同订单数量下的f的值的变换,仿真结果如下所示:

 

 

 

 

 仿真结果如下所示:

 

 

这个优化算法的收敛过程,

下面我们改变不同的订单数量,分析不同订单数量下的f的值的变换,仿真结果如下所示:

 

 最后看一下,不优化情况下,直接进行处理,得到如下结果:

 

 这里,采用的是第四章节的目标函数,不进行优化,获得的结果。从上面的结果对比可知,通过路径优化后的总体路径长度,优于直接处理的结果。

三、部分核心代码:

clc;
clear;
close all;
warning off;
addpath 'func\'
addpath 'GA_toolbox\'
load parameters.mat
rng('default');
types2 = unique(types);
global N;
global M;
global K;
global Z;
%订单总数,设置的时候,N*Z和M*K最好能够整除,这样计算速度快点,没小数
N = 100;
%拣选设备或人员数量
M = 4;
%批次
K = 1;%这里公式4.1没有K,所以直接设置K=1
%需拣订单零件品种数,如果某个订单品种小于Z,那么用0赋值
Z = 8;%这个变量就是每一个单子的最大种类,不能无限制大,否则仿真会非常慢
%随着设置Z个类型
for i = 1:N
rng(i);
xx = randperm(length(types2));
tmps = types2(xx)';
L = floor(Z*rand)+1;
if L==Z
Tget(1:Z,i) = [tmps(1:L)]';
else
Tget(1:Z,i) = [[tmps(1:L)]';zeros(Z-L,1)];
end
end
Tget2 = reshape(Tget,[1,Z*N]);
AS=[];
for i = 1:length(Tget2);
if Tget2(i)>0
indx = find(types==Tget2(i));
AS{i}=indx;
else
AS{i}=0;
end
end
rng(1);
%载货容积能力
Vmv = 10+2*rand(1,M);
Qmv = 100*Vmv;
rng('shuffle')
MAXGEN = 200;
NIND = 500;
Nums = N*Z; %
Chrom = crtbp(NIND,Nums*10);
%sh
Areas = [];
for i = 1:Nums
Areas = [Areas,[1;length(AS{i})]];
end
FieldD = [rep([10],[1,Nums]);Areas;rep([0;0;0;0],[1,Nums])];
gen = 0;
%计算对应的目标值
tmps = randperm(length(types));
X = tmps(1:Nums);%初始值
fobj = func_obj(X,Tget2,AS,Lmatrix,St,Et,V,Vcode,Mcode,Vmv,Qmv,types,POS);
E = fobj;
Js = E*ones(NIND,1);
Objv = (Js+eps);
gen = 0;
%%
while gen < MAXGEN;
gen
rng(gen);
Pe0 = 0.9999;
pe1 = 0.0001;
FitnV=ranking(Objv);
Selch=select('sus',Chrom,FitnV);
Selch=recombin('xovsp', Selch,Pe0);
Selch=mut( Selch,pe1);
phen1=bs2rv(Selch,FieldD);
for a=1:1:NIND
X1 = round(phen1(a,:));
X11 = [];
for j = 1:length(AS)
if AS{j} == 0
X11 = [X11,0];
else
X11 = [X11,AS{j}(X1(j))];
end
end
%计算对应的目标值
fobj = func_obj(X11,Tget2,AS,Lmatrix,St,Et,V,Vcode,Mcode,Vmv,Qmv,types,POS);
E = fobj;
JJ(a,1) = E;
end
Objvsel=(JJ);
[Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);
gen=gen+1;
%保存参数收敛过程和误差收敛过程以及函数值拟合结论
Error(gen) = mean(JJ);
end
figure;
plot(Error,'linewidth',2);
grid on
xlabel('迭代次数');
ylabel('遗传算法优化过程');
save R2a.mat Error

A06-59

标签:拣选,Selch,订单,matlab,X11,优化,gen
From: https://www.cnblogs.com/matlabfpga/p/16916052.html

相关文章

  • 前端性能优化方法
    什么是前端性能优化(what)?从用户访问资源到资源完整的展现在用户面前的过程中,通过技术手段和优化策略,缩短每个步骤的处理时间从而提升整个资源的访问和呈现速度。###为什么......
  • 图像处理技术:图像获取 ----- 三、MATLAB基础知识
    1.MATLAB的数据种类、文件类型、操作符数据种类    文件类型:            操作符:           ......
  • 图像处理技术:MATLAB介绍 ----- 工作环境
      1.工作环境1.1工具条和工具栏    1.2当前目录浏览器窗口       1.3命令窗口  1.4编辑器窗口        ......
  • 用户背包优化分析与总结
    用户背包拉取列表接口数量变更推送旧每次点击用户背包,都拉取列表,每次道具消耗,都删除道具列表缓存保证一致性。缺点,单个道具的变更,会影响到整个列表缓存的生命周期,在道具量比......
  • HierarchyViewer结合merge标签优化布局结构
    今天给大家介绍一下一种优化Android布局的方法,我们这里需要用到一个工具,HierarchyViewer,这是Android自带的一个布局结构查看器,位于sdk的tools文件夹下,当然,我们要使用这个工......
  • TreeUtils工具类一行代码实现列表转树【第三版优化】 三级菜单 三级分类 附视频
    一、序言在日常一线开发过程中,总有列表转树的需求,几乎是项目的标配,比方说做多级菜单、多级目录、多级分类等,有没有一种通用且跨项目的解决方式呢?帮助广大技术朋友给业务瘦......
  • ClickHouse 语法优化细节(二)
    5、聚合计算外推聚合函数内的计算,会外推,例如:EXPLAINSYNTAXSELECTsum(UserID*2)FROMdatasets.visits_v1;//优化后效果SELECTsum(UserID)*2FROMdatasets.v......
  • 无重载读入输出优化
    仅适用于整形的读入输出。namespaceFIO{staticcharbuf[1<<22],*s=buf;inlinechargc(){staticcharbuf[1<<22],*s=buf,*t=buf;returns......
  • VS Code 是如何优化启动性能的?
    VSCode是如何优化启动性能的?作者:柳千 发布于:2021-9-810:00:00本文主要是对 CovalenceConf2019:VisualStudioCode–TheFirstSecond 这次分享的介绍,Co......
  • 【转】Win2003下Apache性能优化 增加13/1/30
    一直习惯在Solaris和linux下跑amp,前些时服务器硬盘坏掉,所以启用新服务器。新系统是Windows2003Server,在上面按Unix上的经验配置Apache和Mysql时问题多多,经过折腾,总算是......