Pairwise Least Squares: Difference between revisions
Added ballot generation to implementation.
(Revised significantly. Added implementation.) |
(Added ballot generation to implementation.) |
||
Line 141:
pd2 = pd + (d + d.T) / 2
return [x,pd,pd2]
def denseFromRanking(r):
n = r.shape[1]
d = mat(zeros((n,n)))
for i in range(n):
for k in range(i):
rk = r[0,k]
ri = r[0,i]
if (ri < rk):
d[i,k] += 1
elif (rk < ri):
d[k,i] += 1
return d
def denseFromRankingsTallies(rankings,tally):
n = rankings.shape[1]
d = mat(zeros((n,n)))
for i in range(rankings.shape[0]):
r = rankings[i]
dense = denseFromRanking(r)
d += dense * tally[i]
return d
def test():
d = denseFromRankingsTallies(rankings,tally)
[x,pd,pd2] = solveNetDense(d)
print("Scores")
Line 154 ⟶ 177:
print(sum(d,1))
print("Preferences")
print(
print("Projected Preferences")
print(pd)
Line 167 ⟶ 190:
</syntaxhighlight>
=== Test Output ===
<pre>
Scores
[[ 0.]
[ 1.]
[ 3.]
[-1.]]
Borda Scores
[[12.]
[16.]
[24.]
[ 8.]]
Preferences
[[ 0. 5. 2. 5.]
[ 5. 0. 4. 7.]
[ 8. 6. 0. 10.]
[ 5. 3. 0. 0.]]
Projected Preferences
[[ 0. -1. -3. 1.]
[ 1. 0. -2. 2.]
[ 3. 2. 0. 4.]
[-1. -2. -4. 0.]]
Projected Preferences Plus Pairwise Loops
[[0. 4. 2. 6.]
[6. 0. 3. 7.]
[8. 7. 0. 9.]
[4. 3. 1. 0.]]
Higher Order (>2) Loops Removed
[[ 0. 1. 0. -1.]
[-1. 0. 1. 0.]
[ 0. -1. 0. 1.]
[ 1. 0. -1. 0.]]
Borda Scores of Projected Preferences Plus Pairwise Loops
[[12.]
[16.]
[24.]
[ 8.]]
</pre>
=== External Links ===
|