[問題]將矩陣呈現的關係轉為排序/ELECTRE II

作者: innocent817 (Shawn純真)   2014-08-15 23:28:01
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
想將矩陣呈現的關係轉為排序
[,1] [,2] [,3]
[1,] 0 1 1
[2,] 0 0 0
[3,] 0 1 0
以上面這個矩陣為例,這是一個兩兩比較關係的方陣
[1,2]=1表示1優於2,[1,3]=1表示1優於3,[3,2]=1表示3優於2
因此綜合上面三個:1優於3優於2
想得到的排序應該為1 3 2
以另一個矩陣解釋
[,1] [,2] [,3]
[1,] 0 0 1
[2,] 1 0 0
[3,] 0 0 0
即2優於1優於3,想得到的排序應為2 1 3
我原本想用R進行ELECTRE II的模擬實驗,可是R裡面沒有ELECTRE II的package
只有'MCDA'裡的ELECTRE TRI(另一個版本,差異頗大)
因此想說自己寫一個簡易版,可是到最後一個步驟怎麼也無法將矩陣轉為排序
實際上會排序的數量會有100個,也就是100*100的矩陣
因此無法像上面的例子用筆畫一畫就畫出來
想請問版上大大會如何解決這個問題
感激不盡!
[程式範例]:
[關鍵字]:
作者: Wush978 (拒看低質媒體)   2014-08-16 21:33:00
我覺得這個可能有partial order set的問題耶也就是說,最後可能不存在一個合理的排列Anyway, 我沒有看過解這種問題的實作,也許你要自己寫
作者: innocent817 (Shawn純真)   2014-08-16 22:31:00
實際上有ELECTRE II的軟體可以求出排序,但是因為不懂其排序的原理,因此無法在R上進行實作
作者: koai (可笑的自以為...)   2014-08-17 08:56:00
第二個矩陣[2,3]如果也會是1的話,可以考慮order(rowSums(A)order(rowSums(A),decreasing=TRUE)
作者: innocent817 (Shawn純真)   2014-08-17 12:42:00
可能沒有辦法,因為的確會出現W大說的部份排序問題
作者: cywhale (cywhale)   2014-08-21 01:58:00
現在問題是[i,j],[j,i]都可以等於1囉?

Links booklink

Contact Us: admin [ a t ] ucptt.com