最近为了解决一个关于有条件限制的排列组合问题,所以用了简单的暴力解决
但是后来遇到更庞大的问题就会超出内存了,
有试过用基因算法也能得到解,但想用别的方式试试看
这边叙述一下我想解决的问题
例如:有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