[討論] 有條件的排列組合

作者: 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