[讨论] 有条件的排列组合

楼主: orangeforest   2015-07-29 15:03:11
最近为了解决一个关于有条件限制的排列组合问题,所以用了简单的暴力解决
但是后来遇到更庞大的问题就会超出内存了,
有试过用基因算法也能得到解,但想用别的方式试试看
这边叙述一下我想解决的问题
例如:有50个位于不同地点的工厂(有x,y座标),
每个工厂各有不同的出货量(50个厂总产量约4500),
今天有两台大卡车去载货(每台可以载3000)
以下就是我的问题
1.将50厂分成2大群(给2台卡车),每群总和最多3000
列出满足条件的组合(数字不重复,组合也不重复)
例如: 1-2-3-4跟1-3-2-4是属于同一种(组合重复);也不可以1-2-2-3(数字重复)
2.依据座标计算组合里的总距离 (也就是卡车载完群里所有工厂的距离)
我目前的想法是将两个问题分成2个小程式
第一题 让一个小矩阵中存2个数值 共50个矩阵 [编号 出货量]
之后用nchoosek和randperm来求全部组合并算总出货量
但问题在于不知道该50取几当一群来计算总数,也难以检查是否有组合重复,就卡住了..
第二题算简单,只要第一题有解,套入距离公式后就能很快得到
以上问题还麻烦本版的高手们指教帮助了
附上部分资料的图片http://imgur.com/XLLl1ik
作者: celestialgod (天)   2015-07-29 15:40:00
一行行把组合写入档案,再一行行读入计算?组合应该从50取2开始找,找到50取25,一步步筛选不要的组合
楼主: orangeforest   2015-07-29 18:38:00
晚点试看看,不知道还有没有什么函数可以比较快计算?
作者: JamesChen (James)   2015-07-30 23:35:00
函数只是帮妳写好一套 routine你如果要快 可能是要找有什么算法
楼主: orangeforest   2015-07-31 17:35:00
的确是…目前看来用一些生物算法的结果都比较好
作者: s4300026 (s4300026)   2015-08-04 21:58:00
建议去programming版问算法问题

Links booklink

Contact Us: admin [ a t ] ucptt.com