<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Ted,<br>
      <br>
      I haven't been thinking very much about this topic lately.  But I
      have one or two ideas.   <br>
      <br>
      Abolish the party primaries and just have one big "primary".  
      Use  STV to one-at -a-time eliminate candidates until the
      remaining candidate with the fewest votes has a tally that is at
      least X (say 15)%<br>
      of the total of the unexhausted ballots (i.e. those that show some
      preference among uneliminated candidates).<br>
      <br>
      In the "general election" this should limit the field to a
      manageable number (no more than 6).<br>
      <br>
      ("STAR" is an abomination.)<br>
      <br>
      At least as important in the current period  is election integrity
      and thinking of ways to use technology to implement direct
      democracy or some hybrid of direct and representative democracy.<br>
      <br>
      Chris<br>
      <br>
      <br>
    </p>
    <div class="moz-cite-prefix">On 18/09/2020 6:13 am, Ted Stern wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAHGFzORqiXdEp+WnEG3nP8FDzjdcRnjs3hFbokuOi4xMd4Z5UQ@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">I've implemented the primary idea I proposed last
        month. It's available in my github repository as <b>winnow.py</b>.
        The repo is located at
        <div><b><br>
          </b></div>
        <div><a
            href="https://github.com/dodecatheon/approval-sorted-margins/"
            moz-do-not-send="true">https://github.com/dodecatheon/approval-sorted-margins/</a><br>
          <div><b><br>
            </b></div>
          <div>The code is designed to be used as a test bed for several
            score-ballot-based methods.</div>
          <div><br>
          </div>
          <div>The default method for advancing candidates is Preference
            Approval Sorted Margins.  It's basically Approval Sorted
            Margins, but I interpret any non-zero score as approval, so
            I'm calling the higher level of approval "Preference". As I
            proposed before, any ballots approving (non-zero score) of
            the currently advancing winner are removed completely, then
            tallies are done on the remaining ballots until no more
            candidates remain or 95% of the ballots are used up, or a
            maximum number of candidates (default 7) has been reached. 
            In each candidate advance round, candidates with remaining
            approval below the threshold (default 1%) are dropped.</div>
        </div>
        <div><br>
        </div>
        <div>Approval, Score, STAR, Vote 3-2-1, and Score Sorted Margins
          are supported, and just for the sake of completeness, I also
          include Preference (like approval but using explicit
          "preference" cutoff), and Top-rating.</div>
        <div><br>
        </div>
        <div>It is designed to be used on a linux command line with
          python 3.7+ that includes numpy.  I recommend getting the
          Anaconda (or mini-conda) package.  There are a lot of
          commandline options.</div>
        <div><br>
        </div>
        <div>From the standpoint of practicality, say in the event of a
          100+ candidate jungle primary, this type of primary would be
          relatively simple to implement for Approval, Score, Preference
          or Top-Rating.  Slightly more difficult would be STAR or Vote
          3-2-1.  Finally, any method that requires the pairwise array,
          such as PASM or SSM, would be most complicated, and would
          probably require some sort of candidate pruning below an
          approval threshold (to get the number of candidates below 20
          or so) to be at all feasible.</div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Fri, Aug 7, 2020 at 2:33 PM
          Ted Stern <<a href="mailto:dodecatheon@gmail.com"
            moz-do-not-send="true">dodecatheon@gmail.com</a>> wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px
          0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div dir="ltr">Over the years a number of people on this list
            (e.g. Rob Lanphier, myself and others) have proposed various
            methods for using Approval in primary elections.<br>
            <br>
            There are arguments to be made for using other PR methods,
            but it seems to me that SNTV is ideally suited to be a
            primary method, since it resists pushover and doesn't tend
            to overrepresent parties.<br>
            <br>
            Using Approval as a base method, single non-transferable
            approval voting would look like
            <div>
              <ul>
                <li>Advance Approval winner and Approval runner-up</li>
                <li>Deweight to zero all ballots approving of AW.</li>
                <li>Repeat until some threshold (e.g. 90%) of ballots
                  have been used up:</li>
                <ul>
                  <li>Advance approval winner on the current remaining
                    ballots</li>
                  <li>Deweight ballots approving of latest winner to
                    zero</li>
                </ul>
              </ul>
              The advantages here are </div>
            <div>
              <ul>
                <li>Relative simplicity -- No complicated reweighting
                  algorithms, so each recount for the next approval
                  winner is faster than the previous, and can even be
                  done by hand.</li>
                <li>Each winner (other than the first approval
                  runner-up) will tend to be from a different party or
                  faction of a party.  There may be some overlap from
                  also advancing the overall Approval runner-up, but if
                  the total AW and ARU are from the same party, it gives
                  them an advantage under Approval to have a similar
                  candidate for comparison. </li>
                <li>Most groups will be represented in the General
                  election.</li>
                <li>Pushover strategy is disincentivized by complete
                  deweighting, so parties should not be threatened by
                  strategic promotion of their worst candidate. There is
                  some possibility that voters would do that regardless,
                  but the effect should be no worse than in current
                  top-two elections.</li>
                <li>Modifications could include:</li>
                <ul>
                  <li>Stop advancing candidates when the highest
                    approval on remaining ballots drops below a
                    threshold. For example, if the total deweight
                    threshold is 90%, if the latest winner has less than
                    5% approval on remaining ballots (half the
                    complement of 90%), break the loop.</li>
                  <li>Stop when a certain number of candidates have
                    advanced. For example, if using the 5% rule above,
                    it is possible that 10 to 15 candidates could
                    advance to the General, defeating the winnowing
                    purpose of a primary. It seems reasonable to stop at
                    5 or 6 candidates.</li>
                  <li>Use a different method other than simple Approval.</li>
                </ul>
              </ul>
            </div>
            <div>I would be perfectly satisfied to have SNTAV as a
              primary method, but if one can handle a bit more
              complexity (say in smaller groups), it would be reasonable
              to use Approval Sorted Margins as the base method:</div>
            <div><br>
            </div>
            <div>
              <ul>
                <li>Use Ranked or Rated ballots with explicit Approval
                  Cutoff. If not explicitly specified, cutoff is at
                  zero-rating or last ranking.</li>
                <li>Advance Approval Sorted Margins winner to general
                  election </li>
                <li>Deweight to zero all ballots approving of AW.</li>
                <li>Repeat until some threshold (e.g. 90%) of ballots
                  have been used up:</li>
                <ul>
                  <li>Advance ASM winner on the current remaining
                    ballots</li>
                  <li>Deweight ballots approving of latest winner to
                    zero</li>
                </ul>
              </ul>
              <div>For public elections, I think the SNTAV approach I
                outline above, with a 90% threshold, 5% minimum
                remaining approval, and limited to 6 candidates (4
                approval winners and 1 top approval runner-up) gives
                enough room to enable more parties to develop.</div>
            </div>
          </div>
        </blockquote>
      </div>
    </blockquote>
  </body>
</html>