原需求:这是个仓库自动入库策略, 共6台堆垛机,同时入库工作,要求根据入库物料在各堆垛机的分布数量,平均分布入库,同时考虑堆垛机入库任务数和繁忙程度。
(对物料分布查询的结果和堆垛机任务查询的结果分别作比重排序(例如物料分布排序1-6,堆垛机任务数量排序1-6,两者相加最后综合排序1-6)找出需要入库的堆垛机。)
实现过程:1.先查询需要入库的物料在各堆垛机所在巷道的分布,找出各个巷道物料数从小到大排序;排序的结果如下:(这个是从表A中查到的)
表A查询结果:
堆垛机 物料数-------------堆垛机 权重
a 23 ---------------- a 3
b 16 -----------------b 2
c 32 --转化为权重:-- -c 5
d 0 ------------------ d 1
e 26 -------------------e 4
f 39 -------------------f 6
2查询所有堆垛机任务数(从表B中查询的结果),从小到大排序。排序结果如下
表B查询结果:
堆垛机 任务数--------------堆垛机 权重
a 10-------------------a 2
b 13------------------b 4
c 23----转化为权重:--c 5
d 11------------------ d 3
e 0--------------------e 1
f 28-------------------f 6
3.将2次结果的权重相加
a 3----------------a 2------------a 5-----------------d 4
b 2----------------b 4----------- b 6-----------------a 5
c 5--------加------c 5------结果---c 10---排序后--- e 5
d 1----------------d 3-------------d 4---------------b 6
e 4----------------e 1-------------e 5--------------c 10
f 6-----------------f 6 ------------f 12--------------f 12
如果不按比重排序而直接按SUM结果排序是这样:
a 23---------------a 10------------a 33---------------d 11
b 16-------------- b 13------------b 29--------------e 26
c 32------加--------c 23----结果---c 55---排序后---b 29
d 0----------------d 11------------d 11---------------a 33
e 26--------------- e 0-------------e 26---------------c 55
f 39 ---------------f 28------------f 67 --------------f 67
这个结果跟我想要的结果不一样。因为表A中的物料数远远大于表B中的任务数(例如表A 堆垛机d的物料数可能是2000,而表B 堆垛机d的任务数可能只有1个,所以不能简单的相加排序,如果这样相加排序了表B任务数的约束条件就不起作用了,而权重排序更均匀些,毕竟物料数和任务数都是要考虑的约束条件)
堆垛机---权重
d---------4
a---------5
e---------5 :daebcf是我想要的排序结果,用权重排序更均匀些(表A)
b---------6
c---------10
f---------12
以下是例子:
表a
字段1 字段2
a 23
b 16
c 32
d 0
e 26
f 39
表b
字段1 字段2
a 10
b 13
c 23
d 11
e 0
f 28
要求结果:
表a和表b各自排序,排序后按结果赋予顺序权重值从小到大:
a表排序后:
字段1 权重
d 1
b 2
a 3
e 4
c 5
f 6
B表排序后:
字段1 权重
e 1
a 2
d 3
b 4
c 5
f 6
然后将两个权重结果合并求和排序,按从小到大:
结果如下:
d 4
a 5
e 5
b 6
c 10
f 12
主要是为了求出权重最小的d. 求指导,谢谢