<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:trebuchet ms,sans-serif;font-size:small">Here is a more complete implementation. The example in the previous email was more of a tutorial + demonstration. This one is more of an actual code that you would use. You can have more candidates and higher dimensions. The usage is very straightforward:</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif;font-size:small">#<br># EXAMPLE 2<br>#<br>n_candidates = 4<br>n_dim = 5<br><br>candidates = np.random.rand(n_candidates,n_dim)<br>unit_bound = [ [0,1] for j in range(n_dim) ]<br><br>names = ['A','B','C','D']<br>tally = compute_tally(candidates,names,unit_bound)<br><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif;font-size:small">This is an example with 4 candidates in a 5-dimensional space. The candidates are uniformly randomly distributed and the bounds are the unit hypercube. To make the results legible, you need to supply a list of names ('A', 'B', 'C', 'D') for the candidates. The compute_tally() function does all the work and you just get a dictionary that tells you what fraction of voters choose each ballot.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif;font-size:small">For example:</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif;font-size:small">In [18]: tally<br>Out[18]: <br>{'A>B>C>D': 0.2158439457766137,<br> 'A>B>D>C': 0.058557168066913655,<br> 'A>C>B>D': 0.0872,<br> 'A>C>D>B': 0.0292,<br> 'A>D>B>C': 0.1043845169888461,<br> 'A>D>C>B': 0.09699999999999999,<br> 'B>A>C>D': 0.019399596489520984,<br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif;font-size:small">...</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif;font-size:small">and so on.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif;font-size:small"><br></div></div><div><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif;font-size:small">Cheers,</div></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><font face="trebuchet ms, sans-serif">Dr. Daniel Carrera</font></div><div dir="ltr"><font face="trebuchet ms, sans-serif">Postdoctoral Research Associate</font></div><div><font face="trebuchet ms, sans-serif">Iowa State University</font></div></div></div></div></div></div></div></div></div></div></div>