“华中杯”A题

2022-06-15 15:19:05 浏览数 (1)

我已经写过了,一点思路->第14届“华中杯”数学建模思路, 现在对A题做一些

讲解和代码的编写,抛砖引玉吧。

首先使用一下WPS转换一下文件的格式,CSV是我的最爱

我这里使用的Python,依赖Numpy和Pandas两个库:

可以方便的做一些数据的转换

转换成比较纯粹的格式,然后换个名字,以上就转换结果

使用numpy读取一下

自带的库这个也ok,不过效率不高,你可以感觉到的哪种慢

这就是结果,数据的规模也有了,一共2W 。

这个是它的意思,我们先关注里面不变的量,比如一共有多少货物种类。

也可以这样的去更换头,源文件没有做更换

对文件进行一下概况的计算

可以就关注某一个表头的项目

这里就是写了一个你的订单10需要的货物及其种类

数据都满足的是4位,如果是100,那就是0100,

可以验证一下~

[1]就是0 1=2(我没有算错)就是第二个位置上面,P是种类,后面是数量。

很简单的就是是这样的算出来了一个货物分布的订单和具体的数量,以及总数。

这里要求的是货架数量只有200,也就是种类只有200,也就是说我们不用顾全大局,只要算200以内的就好。

先假设订单数量为T

接着就是比如A的摆放策略就会让N个订单收益,T-N就是现在没有照顾到的

B的策略让M个收益,同样的T-M就是剩下的。

我们的目标就是让T-M最少,让尽可能多的订单被分拣。继续想,订单是由种类和个数制约。

我的策略是这样的,先计算每种货物的个数,那么可以得到,此时的订单里面的哪种货物的数量需要的最多。

一个货物(所需要的数量),也可以得到这个货物要分配的订单:

一个订单是由多个货物主导的,接下来就是从得到的清单。这里就按照我上面的做演示。

记得将索引改变。

得到的数据是这么多,也就是说D0190这个订单需要这么多的货物。

这里注意是要取舍的,要考虑是满足下一级用户的还是说适合工厂的,对于用户来讲是尽可能的拿到货物,但是工厂来说是尽可能地清空货物。举个极端地例子,比如A 30W件货物,B 1件货物都是占用的一样的,所以你要尽可能地要从货物地尾部来分拣。

这里使用绘制一个就从订单1-订单923对应的物品种类数

看下面:

这些地方都是种类特别少地地方.

这里的第一个订单的种类的分布,更加的清晰

注意这里的是要求批次低,这就隐含的要求是尽可能要装到运载极限的的时候。因为题中没有,所以这里你也需要自己标定。

我这里假如是快递的转运,那么就是说全天运转,你就订单数量除以24,取整,这样得到的就是小时转运极限订单。当然你也可以更加的人性化,比如考虑工作时间等。

我的字可太丑了,凑合的看。

选好种类为先,然后计算种类包含的订单,订单内部以数量来排序,算法上面的设计是递归的。

编程时候的便利

尾位置优先,还有计算要按照订单顺序,订单顺序不可以变,但是内部的挑拣顺序可以变。

emmmm写的时候很多细节没有考虑到,但是直播的时候有说:直播录屏

大家可以点击观看。

视频

0 人点赞