✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
一种基于群体智能优化算法的订单分批方法,包括如下步骤:1,建立以订单方案的总行走距离最短为目标的订单分批数学模型;2,根据订单之间的关联性定义订单相似度计算方法,采用最大化订单相似度规则对模型进行求解,实现订单初始分批;3,设计萤火虫算法对初始分批结果进行优化,得到最终订单分批结果.仿真结果表明:与未分批按单拣选作业相比,萤火虫算法优化后大大减少了订单方案的总行走距离,拣选作业效率显著提高.本发明可以有效解决"货到人"订单分批问题,为仓库订单拣选系统优化提供依据.
⛄ 部分代码
%% 计算种群中每个萤火虫的目标函数值
%输入Population: 种群
%输入orders: 每个订单所包含的物品信息
%输入batches_maxnum: 最大允许分批的数目
%输入orders_num: 订单数目
%输入capacity: 设备最大装载量
%输入item_weight: 每个储位品项的重量
%输入side_num: 每条拣选通道一侧的储位数目
%输入depot_leftAisle: 仓库与第1条拣选通道的距离,1.5LU
%输入enter_leave_aisle: 从通道进入拣选通道或从拣选通道进入通道需要行走的距离,1LU
%输入adjacent_location: 同一条拣选通道的两个相邻储位之间的距离,1LU
%输入adjacent_aisle: 两个相邻拣选通道的距离,5LUs
%输入alpha: 违反设备装载量约束的惩罚因子
%输出Obj: 种群中每个萤火虫的目标函数值
function Obj=obj_function(Population,orders,batches_maxnum,orders_num,capacity,item_weight,...
side_num,depot_leftAisle,enter_leave_aisle,adjacent_location,adjacent_aisle,alpha)
NIND=size(Population,1); %萤火虫数目
Obj=size(NIND,1); %初始化目标函数值
for i=1:NIND
Individual=Population(i,:); %第i个萤火虫
batches=decode(Individual,orders,batches_maxnum,orders_num,capacity,item_weight,...
side_num,depot_leftAisle,enter_leave_aisle,adjacent_location,adjacent_aisle); %解码
Obj(i,1)=cost_function(batches,orders,item_weight,capacity,side_num,depot_leftAisle,...
enter_leave_aisle,adjacent_location,adjacent_aisle,alpha); %为第i个萤火虫目标函数值赋值
end
end
⛄ 运行结果
⛄ 参考文献
[1] 邹炜, 赵洪銮, 宿梦梦,等. 一种基于萤火虫算法的订单分批方法:, CN114549138A[P]. 2022.
[2] 邹炜, 赵洪銮, 宿梦梦,等. 一种基于萤火虫算法的订单分批方法:.
[3] GAO Zhenhua, CHEN Zhuo. 基于萤火虫算法的订单分批问题研究[J]. 物流科技, 2019, 42(7):6.
[4] 马廷伟, 雷全胜, 李军,等. 基于启发式算法的订单分批问题研究[J]. 物流工程与管理, 2015, 37(11):4.