青
青云
Unregistered / Unconfirmed
GUEST, unregistred user!
我现在在做一个仓库出库的算法:
比如要求出100件货,仓库里现有货物,按入库时间顺序排列是: 20,50,15,30,20... ;
为了能够恰好满足100,那么就选20+50+30=100;
也就是跳过中间的15;
这个算法我已经实现了:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3927406
并开始投入使用,感觉不错;
但是有的时候发现,电脑会算死;
比如我要出库的数量在仓库里不满足,那么就相当于把所有的组合都要算一遍才能知道;
有一次,要出库10000件货;仓库里共有85个货位有满足条件的货,但是实际上是凑不出正好10000的,所以电脑就把所有的组合都算了一遍,等了半个小时,出不来;
我用概率论知识算了一下,呵呵,其组合数是2的85此方,大概是4*10的25此方;
这么大的组合,当然算不错来;
不过后来我发现,这85个货位里,有很多数量相同,比如 其中20个货位的数量是47,65个货位的数量是26 ;如果考虑到这种同数量的情况,我想组合的数量要大大降低;可能再用电脑就不会算死;
所以现在我有两个问题:
1.如果考虑同数量,算法该如何实现;
2.组合数的求解,如何求解,这是个数学问题,
类似我提的:
http://www.math.org.cn/forums/index.php?act=ST&f=17&t=64344&st=0#entry307625
比如要求出100件货,仓库里现有货物,按入库时间顺序排列是: 20,50,15,30,20... ;
为了能够恰好满足100,那么就选20+50+30=100;
也就是跳过中间的15;
这个算法我已经实现了:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3927406
并开始投入使用,感觉不错;
但是有的时候发现,电脑会算死;
比如我要出库的数量在仓库里不满足,那么就相当于把所有的组合都要算一遍才能知道;
有一次,要出库10000件货;仓库里共有85个货位有满足条件的货,但是实际上是凑不出正好10000的,所以电脑就把所有的组合都算了一遍,等了半个小时,出不来;
我用概率论知识算了一下,呵呵,其组合数是2的85此方,大概是4*10的25此方;
这么大的组合,当然算不错来;
不过后来我发现,这85个货位里,有很多数量相同,比如 其中20个货位的数量是47,65个货位的数量是26 ;如果考虑到这种同数量的情况,我想组合的数量要大大降低;可能再用电脑就不会算死;
所以现在我有两个问题:
1.如果考虑同数量,算法该如何实现;
2.组合数的求解,如何求解,这是个数学问题,
类似我提的:
http://www.math.org.cn/forums/index.php?act=ST&f=17&t=64344&st=0#entry307625