Code Monkey home page Code Monkey logo

Comments (5)

LiamM32 avatar LiamM32 commented on July 17, 2024 1

I have decided to give up on Schulze_Proportional_Prefilter. I don't know how to make it as aggressive as it can be without ever removing the wrong candidates.

In a recent commit, I started remaking Schulze-STV, extended from SingleTransferableVote. While it doesn't output the correct results for all the Tideman tests, the process runs very fast. I feel confident enough that if I ever get it to find the correct results, it will be fast enough that we don't need a prefilter.

No more prefilter. Issue closed.

from condorcet.

LiamM32 avatar LiamM32 commented on July 17, 2024

I just checked inside $election->pairwise->pairwise[6]. These values are also all set to 0.

from condorcet.

LiamM32 avatar LiamM32 commented on July 17, 2024

It turns out that Schulze_Core::makeStrongestPaths() has to be modified. The problem is that it sets a path from one candidate to another to 0 if they have a pairwise loss to the other candidate.

The modification I made & reverted earlier that uses $M as an argument would work. However, you may also just remove the condition if ($election->getPairwise()[$i]['win'][$j] * $M > $election->getPairwise()[$j]['win'][$i]) and it will probably give the same results to the Schulze Method.

from condorcet.

julien-boudry avatar julien-boudry commented on July 17, 2024

@LiamM32 Is it still an open issue?

from condorcet.

LiamM32 avatar LiamM32 commented on July 17, 2024

Is it still an open issue?

Maybe. I haven't solved it. But it might just be a matter of the whole algorithm being flawed. Perhaps we should contact Schulze himself to ask about this.

But I think it's most likely that the algorithm itself is flawed. Based on the pairwise results, it indeed should be eliminating the candidate that it eliminates according to the algorithm I envisioned. But somehow, this candidate 'K' is supposed to be one of two winners in Tideman A22, according to the Schulze program.

Unfortunately, I don't understand Schulze STV enough to understand how K wins in this case.

from condorcet.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.