龙空技术网

基于遗传算法的供应链仓网规划测算模型

逃跑吧橙哥 108

前言:

当前同学们对“遗传算法的交叉概率取值范围是多少”大体比较关注,小伙伴们都需要学习一些“遗传算法的交叉概率取值范围是多少”的相关资讯。那么小编在网摘上汇集了一些对于“遗传算法的交叉概率取值范围是多少””的相关资讯,希望大家能喜欢,你们快快来了解一下吧!

1. 项目简介

该项目的主要内容是对RDC仓和FDC仓进行选址,并规划每个仓具体的覆盖范围。目的是在保证配送时效的基础上,降低整体成本。具体描述如下:

(1)搭建RDC和FDC仓库商品布局测算模型,可根据各业态的历史销量、未来规划、相关费用等条件,建立供应链商品布局优化模型。在成本和时效等约束条件下,计算并输出RDC和FDC仓库商品布局方案;

(2)基于目前的仓网物流现状,考虑服务水平、成本等因素,确定仓库的覆盖范围,最终为前台输出最合理的仓库布点建议和预期的服务水平和履约成本。

(3)提供商品布局优化前后在时效和成本上的数据对比,给业务决策提供数据支持。

2. 模型设计

2.1 业务逻辑说明

(1)一个仓库覆盖一个城市,表示一个仓库要负责该城市的所有订单。

(2)一个RDC可以有多个下属FDC,FDC只能有一个对应的RDC。

(3)FDC覆盖城市的可选范围一定在其对应RDC的所属范围之内。

2.2 变量说明

各个模型的公用参数描述如下:

(1)m:备选仓库数量

(2)n:需求地(城市)数量

(3)x:决策变量,维度为m×n。具体的

其中,x_i表示仓库覆盖指定需求地的情况,0表示不覆盖,1表示覆盖。

(4)x^*:仓库开启状态,m维,与决策变量x的关系如下:

(5)odp(overnight_delivery_percent):各仓库覆盖所有需求地的次日达比例,维度为 m×n,元素对应的仓库和城市关系与决策变量x一致。元素值为-1,表示仓库不可以覆盖对应城市。元素值大于等于0,表示仓库可以覆盖对应城市,具体元素值表示,当前城市订单中,可以达到次日达级别的订单比例。比如,0.6表示一个仓库覆盖一个城市时,该城市的全部订单中,有60%的订单可以实现次日达。

(6)sddp(same_day_delivery_percent):各仓库覆盖所有需求地的当日达比例,维度为m×n ,具体含义与odp类似。该变量仅用于结果展示,不参与运算。

(7)freight:运输+操作成本。维度为m×n ,具体含义与odp类似。

(8)order_quantity:订单量,维度为n,表示各个城市的订单量。

(9)order_quantity_mn:订单量,维度为m×n ,order_quantity的m次重复,目的是构建与决策变量类似的关系,方便读取。

(10)warehouse_storage_cost:城市订单对应的仓储费用,维度为m×n,基于每个城市的订单量,平均库存周转天数,每个仓库对应的单位存储费用计算而来。(不同商品分大小件,单位费率是不一样的,这在计算的时候要考虑,同时仓库本身也有存储费用的计算规则,如不同梯度的费率也有所不同,这个不同地点,不同仓库计算规则有差异)。

(11)warehouse_ regular_cost:仓库固定费用,如租金,维护费用等,维度为m。

(12)weight:货物重量,维度为n,表示各个城市的订单对应的货物重量。

(13)inventory_cost:初始库存成本。

(14)init_warehouse_num:初始库存数量。

2.3 RDC模型设计

该模型是全国范围内,求解所有备选RDC的开仓及覆盖方案。具体模型设计如下:

库存和运输成本的另一种计算方式

2.4 FDC模型设计

该模型是在一个RDC覆盖的城市范围内,求解所有备选FDC的开仓及覆盖方案。根据业务逻辑要求,部分城市可以没有FDC仓覆盖,直接由RDC覆盖。所以,在决策变量中,n个仓库里,第一个为RDC仓,剩余的仓库为备选的FDC仓。

模型特有参数描述如下:

(1)transportation_rate:各个仓库的运输费率,维度为n。

具体模型设计如下

2.5 模型约束

2.5.1 固定约束

(1)每个城市只能有一个仓库覆盖,一个仓库可以覆盖多个城市。

(2)仓库必须覆盖所在地城市。

(3)开仓数量上限。该限制是满足产品要看各种开仓数量下的解决方案的要求。

2.5.2 可变约束

(1)指定某一个或某几个城市的最低时效。

(2)指定某一个或某几个城市的最高成本。

3. 数据构成

模型中涉及数据基本来源于实际订单的统计结果或拟合结果。数据取自2020年全年的实际销售订单。不同品类销售订单分别构建模型,如快消、销售电子、大家电等。具体如下:

3.1 以城市为单位,汇总统计订单量、订单对应包裹数(件数)、订单对应货物重量。

3.1 时效

以城市为单位,统计该城市全部订单的发货时间和收货事件,根据业务规定,将订单标记为当日达、次日达等,并统计每个城市当日的订单量占比和次日达订单量占比。

因为模型需要知道每个仓库到每个可覆盖城市的配送时效(次/当日达订单占比),而实际订单数据中每个城市只能统计出一个仓库覆盖该城市的时效数据。所以,需要通过拟合的方式对其他覆盖方式对应的时效进行估计。具体形式为,利用现有仓库到城市的时效数据和仓库到城市的距离进行拟合,得到一个线性模型,然后,用未知的仓库到城市的距离,去预测该仓库到城市的时效。

3.2 运输+操作成本

与时效数据类似,以城市为单位,根据统计好的订单数量、件数、重量,结合业务逻辑,计算具体的运输+操作成本。未知的仓库到城市的覆盖关系的成本估计与时效一致。目前的假设是运输+操作成本仅仅与距离有关。

4. 实现重难点及成果展示

4.1 难点

(1)建模及模型求解过程

开始是对RDC和FDC分别构建了单独的模型,目标函数的构成问题是一个比较大的难点,要结合理论知识、业务逻辑和可获取数据综合考虑,经过多次版本迭代,最终确定。

(2)数据来源

基于现有的建模方案,模型需要的输入数据中,包括一个城市的所有可选仓库覆盖该城市时的总成本和配送时效。但是,目前能够采集到的实际数据只有现有覆盖关系产生的总成本和配送时效。最后通过上述拟合的方式对未知数据进行估计,解决这一问题。

(3)多目标优化算法(遗传算法)对业务约束条件的响应

标准的遗传算法对约束条件的响应策略是,在每次迭代生成新的种群后,判断每个个体(解)是否满足约束条件,然后,满足约束条件的个体在下一次迭代过程中,会有更高的权重。

本项目中,约束条件较多,比如仓库必须覆盖所在地城市;指定城市的时效至少达到多少,指定城市的总成本不能高于多少。约束条件越多,相当于整个解空间中的可行空间越小。

如果单纯依靠遗传算法中的交叉、变异、选择环节,找到满足约束条件的解的概率极低,这种情况下,为了保证能够找到可行解,往往需要设置更大的种群规模,和更多的进化次数。随之带来的负面影响是求解时间的增加和计算资源的过多占用。

为解决这一问题,最后放弃了原有的通用变异算子,根据业务逻辑,设计并实现了一个定制化的变异算子,该算子内可以控制个体(解)的变异趋势,使个体的变异既保证了随机性和多样性,由尽可能满足所有的约束条件。

4.2 成果展示

模型会根据输入数据,迭代计算,最终输出多个整体的解决方案,所有解决方案处于帕累托前沿,具体的解决方案内容包括:当前方案整体次日达比例,总成本,是否满足约束,开启仓库数量,具体开启仓库位置,每个仓库的订单量次日达比例、当日达比例、每个仓库覆盖城市范围以及当前覆盖关系中,每个城市具体的订单量、次日达比例、当日达比例。具体输出情况如下图所示:

结合输出的解决方案,将其转化到地图上,可以更加清楚的看到最终选择开启的仓库以及各个仓库的覆盖情况,如下图所示:

标签: #遗传算法的交叉概率取值范围是多少