作者orangeforest ()
看板MATLAB
标题[讨论] 有条件的排列组合
时间Wed Jul 29 15:03:11 2015
最近为了解决一个关於有条件限制的排列组合问题,所以用了简单的暴力解决
但是後来遇到更庞大的问题就会超出记忆体了,
有试过用基因演算法也能得到解,但想用别的方式试试看
这边叙述一下我想解决的问题
例如:有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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.46.3.46
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1438153395.A.25E.html
1F:→ celestialgod: 一行行把组合写入档案,再一行行读入计算? 07/29 15:40
2F:→ celestialgod: 组合应该从50取2开始找,找到50取25,一步步筛选不 07/29 15:42
3F:→ celestialgod: 要的组合 07/29 15:42
4F:→ orangeforest: 晚点试看看,不知道还有没有什麽函数可以比较快计算 07/29 18:38
5F:→ orangeforest: ? 07/29 18:38
6F:推 JamesChen: 函数只是帮你写好一套 routine 07/30 23:35
7F:→ JamesChen: 你如果要快 可能是要找有什麽演算法 07/30 23:35
8F:→ orangeforest: 的确是…目前看来用一些生物演算法的结果都比较好 07/31 17:35
9F:推 s4300026: 建议去programming版问演算法问题 08/04 21:58