遗传算法求解立体仓库货位优化

遗传算法求解立体仓库货位优化

 

货位优化是仓库布局研究的一个主要分支,随着现代计算机技术以及控制技术的不断发展,生产企业和物流仓储企业仓库管理呈现出控制最优化、运行智能化的发展趋势,对仓库的货位优化已成为物流技术发展的一个重要标志。国外对仓储货位优化研究相对较早。Hesket研究了货物存储所需要的存储空间以及货物的订单数量对仓储效率的影响。Goetschalckx等证明了N类货物分配下最低COI值的货物存储在最适宜的货位,订单拣选和存储时间得到了优化。Graves等分析了货物组合成更少的类别时,高周转率的货物可能会占据不理想的货位。Rosenwein提出了货位布局的分级存储策略。Larson等在Rosenwein研究基础上,使用启发式算法对分级存储策略进行探讨。Sooksaksun等基于分类存储策略对巷道的数量、长度、产品的分类存储建立数学模型,模型以最小化平均行走距离为目标。Zhan等研究了带邻接约束的多层次仓库布局问题,建立了描述同类产品的临近放置的整数规划模型,并采用禁忌搜索算法求解。

遗传算法在解决货位优化NP难问题方面具有有效性。本文只对后者进行研究,从提升仓库出人库效率,保证货架稳定性和货品分类摆放这三方面来进行货位优化。

立体仓库的货架示意图如下:

数学模型:

仓库有X排货架,每个货架有y列z层

货物坐标(x,y,z) 出入库台在(0,0,0)

货物周转效率为Pxyz   货物重量为mxyz

堆垛机沿X、Y、Z轴的移动速度分别为Vx,Vy,Vz

每个货架的长度为L,高度为H

货架单元格的长宽高均为L0

第一个公式使出入库时间最短

第二个公式保证货架的稳定性

第三个公式为了使货物分巷道存放,平衡工作量

F=w1*f1+w2*f2+w3*f3(w1=0.5;w2=0.3;w3=0.2)

 

 部分程序
%     Author:    怡宝2号       博士猿工作室
%     Use:       基于遗传算法的三维三维货位优化
%                输入变量(可修改量):     TurnOver:每个货物的周转率
%                                        Weight:每个货物的重量
%                                        MAXGEN:遗传算法的遗传代数,视具体情况改变
%                                         NumGoods:货物的个数
%                             
%                输出:                   trace:每一代的最优个体
%                                        bestpop:每代最优染色体
%     Remark:   本人qq:778961303,如有疑问请咨询
clc
clearall
closeall
formatcompact
 
%参数初始化
[TurnOver,Weight,NIND,MAXGEN,GGAP,PC,PM,K,P ,Q ,...
    TotalTray,NumGoods,L0,vx,vy,vz,w1,w2,w3] =initial();
 
bestpop= [];    %每代最优的染色体
ex= importdata('初始货位.txt');
fori=1:size(ex,1)
    plotcube(ex(i,:)+0.5,[1,1,1],[0,0,0],[1 1 11 1 1 1 1],1,1);
    hold on
end
gridon
title('优化前的货位分配情况')
xlabel('排');
ylabel('列');
zlabel('层');
 
%所有空货位的集合
num=1;
fori=1:K
   for j=1:P
       for k=1:Q
           CHROM(num,:)=[i j k;];
           num = num+1;
       end
   end
end
 
%种群初始化
fori=1:NIND
    temp = randperm(TotalTray);
    chrom(i,:) = temp(1:NumGoods);
end
 
%计算目标函数和种群适应度
[Fone,Ftwo,Fthree,fitval,fitness]= Objfun(chrom,TurnOver,Weight,CHROM,L0,vx,vy,vz,K,w1,w2,w3);
 
%进化优化开始
gen= 1;
whilegen<MAXGEN
    prob=fitness./sum(fitness);       %进行归一化操作
    prob=cumsum(prob);                %累计求和
   
    selch=chrom(1:NIND*GGAP,:);          %子代
   
    %选择操作
    for i=1:2:NIND*GGAP                     %选择操作
        %--------寻找父代---------
        sita=rand();
        for j=1:NIND
            if sita<=prob(j)
                father=chrom(j,:);
                break;
            end
        end
        %--------寻找母代---------
        sita=rand();
        for j=1:NIND
            if sita<=prob(j)
                mother=chrom(j,:);
                break;
            end
        end
        %----------交叉操作--------------%
        if rand()<PC
            cutpoint =ceil(rand(1,2)*(NumGoods-3)+2);         %范围为[2,19];
            spoint=min(cutpoint);               %初始交叉点
            epoint=max(cutpoint);                 %终点交叉点
            %进行交叉
        end
         %----------变异操作--------------%
%          随机交换染色体上两个基因的位置
        temp=[];temp=rand();
        if temp<PM              %变异操作
           
        end
    end
   
    %计算子代的目标函数和适应度
    [Fone,Ftwo,Fthree,selfitval,selfitness] =Objfun(selch,TurnOver,Weight,CHROM,L0,vx,vy,vz,K,w1,w2,w3);
   
%     selfitness = selfitness/sum(selfitness);
    %重插入操作,优秀保留政策
   [chrom,fitval]=reins(chrom,selch,1,1,fitval,selfitval);        %重插入,越小越容易被选择,
   
    %记录
    [minfitval index] = min(fitval);            %最小值
    trace(gen)=minfitval;                       %记录每一代最小的适应度值
    bestpop(gen,:)  = chrom(index,:);           %最优的染色体
    gen=gen+1;
   
    fitness = 1./fitval;            %函数值越小,适应度越大
end
 
%   绘制解得变化图
figure()
plot(trace)
gridon
xlabel('遗传代数')
ylabel('目标函数变化')
title('遗传寻优')
 
%     Remark:   本人qq:778961303,如有疑问请咨询


结果:


  • 6
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 58
    评论
自动化立体仓库货位优化是一个非常重要的问题,它涉及到货物存储的效率、安全和可靠性等多个方面。Matlab是一款非常强大的数学软件,可以用于解决各种优化问题,包括货位优化问题。 下面是一种可能的Matlab算法,用于优化自动化立体仓库货位分配: 1. 首先,确定货物的种类和数量,以及货架的数量和高度等基本信息。 2. 接着,根据货物的种类和数量,以及货架的高度和数量,建立一个数学模型。该模型应该包括以下内容: - 货架的分布和高度; - 货物种类和数量; - 货位的容量和大小; - 货位的位置和编号; - 货物的存储和取出规则等。 3. 然后,使用Matlab的优化工具箱,将上述模型转化为一个数学优化问题。该问题的目标是最小化货物的存储和取出时间,同时满足仓库的容量和安全要求。 4. 在进行优化之前,需要确定一些参数,例如优化算法的类型、停止条件、初始值等。这些参数应该根据实际情况进行调整。 5. 最后,运行优化算法,得到最优的货位分配方案。该方案应该包括每个货架上存储的货物种类和数量,以及每个货位上存储的货物编号和数量。 需要注意的是,自动化立体仓库货位优化是一个非常复杂的问题,需要综合考虑多个因素,例如货物种类、数量、流量、存储规则、取货规则、货架高度、容量等。因此,在实际应用中,需要对上述算法进行不断的优化和改进,以满足实际需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 58
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值