Skip to contents

Based on cpMajorityComparison(), add or subtract scores based on how an element fares against the others.

copelandRanking returns the corresponding ranking.

Usage

copelandScores(powerRelation, elements = NULL)

copelandRanking(powerRelation)

Arguments

powerRelation

A PowerRelation object created by newPowerRelation()

elements

vector of elements of which to calculate their scores. If elements == NULL, create vectors for all elements in pr$elements

Value

Score function returns a list of type CopelandScores and length of powerRelation$elements

(unless parameter elements is specified). Each element is a vector of 2 numbers, the number of pairwise winning comparisons and the number of pairwise losing comparisons. Those two numbers summed together gives us the actual ordinal Copeland score.

Ranking function returns corresponding SocialRankingSolution object.

Details

Strongly inspired by the Copeland score of social choice theory (Copeland 1951) , the Copeland-like solution is based on the net flow of the CP-majority graph (Allouche et al. 2020) .

Individuals are ordered according to the number of pairwise winning comparisons, minus the number of pairwise losing comparisons, over the set of all CP-comparisons.

More formally, in a given PowerRelation pr with element \(i\), count the number of elements \(j \in N \setminus \lbrace i \rbrace\) where cpMajorityComparison(pr, i, j) >= 0 and subtract those where cpMajorityComparison(pr, i, j) <= 0.

References

Allouche T, Escoffier B, Moretti S, Öztürk M (2020). “Social Ranking Manipulability for the CP-Majority, Banzhaf and Lexicographic Excellence Solutions.” In Bessiere C (ed.), Proceedings of the Twenty-Ninth International Joint Conference on Artificial Intelligence, IJCAI-20, 17--23. doi:10.24963/ijcai.2020/3 , Main track.

Copeland AH (1951). “A reasonable social welfare function.” mimeo, 1951. University of Michigan.

See also

Other CP-majority based functions: cpMajorityComparison(), kramerSimpsonScores()

Other score vector functions: cumulativeScores(), kramerSimpsonScores(), lexcelScores(), ordinalBanzhafScores()

Examples

# (123 ~ 12 ~ 3 ~ 1) > (2 ~ 23) > 13
pr <- newPowerRelation(
  c(1,2,3),
  "~", c(1,2),
  "~", c(3),
  "~", c(1),
  ">", c(2),
  "~", c(2,3),
  ">", c(1,3)
)

# `1` = 1
# `2` = 0
# `3` = -1
copelandScores(pr)
#> $`1`
#> [1]  2 -1
#> 
#> $`2`
#> [1]  2 -2
#> 
#> $`3`
#> [1]  1 -2
#> 
#> attr(,"class")
#> [1] "CopelandScores"

# only calculate results for two elements
# `1` = 1
# `3` = -1
copelandScores(pr, c(1,3))
#> $`1`
#> [1]  2 -1
#> 
#> $`3`
#> [1]  1 -2
#> 
#> attr(,"class")
#> [1] "CopelandScores"

# or just one element
copelandScores(pr, 2)
#> $`2`
#> [1]  2 -2
#> 
#> attr(,"class")
#> [1] "CopelandScores"

# 1 > 2 > 3
copelandRanking(pr)
#> 1 > 2 > 3