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

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

 

货位优化是仓库布局研究的一个主要分支,随着现代计算机技术以及控制技术的不断发展,生产企业和物流仓储企业仓库管理呈现出控制最优化、运行智能化的发展趋势,对仓库的货位优化已成为物流技术发展的一个重要标志。国外对仓储货位优化研究相对较早。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,如有疑问请咨询


结果:


  • 7
    点赞
  • 102
    收藏
    觉得还不错? 一键收藏
  • 60
    评论
MATLAB货位优化书是一本专门介绍如何利用MATLAB来进行货位优化的书籍。货位优化是指针对仓储管理中的货物存放问题进行最佳化设计的过程。在货物存放过程中,如何合理安排货位的位置和货物的存放顺序,对于提高仓库的工作效率和降低管理成本具有重要意义。 MATLAB作为一种强大的数学计算和工程建模软件,可以提供丰富的数据处理和优化算法,使得货位优化问题可以通过MATLAB进行快速高效的求解。该书通过简单易懂的实例和详细的分析,介绍了如何使用MATLAB进行货位优化的方法和技巧。 这本书首先介绍了货位优化的背景和意义,然后详细介绍了MATLAB中相关的数据处理和优化方法。其中包括如何将实际货位和货物转化为数学模型,并通过MATLAB进行数值求解。书中还介绍了一些常用的货位优化算法,例如贪心算法、模拟退火算法等,并给出了具体的实现步骤和示例代码。 此外,该书还通过实际案例展示了货位优化在实际仓储管理中的应用。例如,如何通过最小化货物移动距离或最大化货物存放密度来优化货位的设计。通过这些实例,读者可以更好地理解和掌握如何使用MATLAB进行货位优化,提高仓库的工作效率和减少管理成本。 总而言之,MATLAB货位优化书是一本专门介绍如何利用MATLAB进行货位优化的实用指南,对于仓储管理和物流行业的从业人员和研究人员具有很高的参考价值。
评论 60
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值