/majority-judgment-library-dart

Dart package to rank proposals according to Majority Judgment, using a score-based algorithm for performance and scalability

Primary LanguageDartMIT LicenseMIT

Majority Judgment for Dart

MIT Release Build Status Code Quality LoC Discord Chat

This Dart package helps to resolve polls using Majority Judgment.

Features

  • Efficient Majority Judgment algorithm, scales well to billions of participants
  • Configure whether to favor adhesion or contestation (default)
  • Balance proposal tallies using a static default grade or the median grade1
  • Room for Central Judgment and Usual Judgment
  • Unit-tested (run dart test)

Get started

import 'package:majority_judgment/majority_judgment.dart';

void main() {
    
      final pollTally = PollTally([
        [1, 2, 4, 2, 1], // Proposal A, from "worst" grade to "best" grade
        [1, 2, 4, 1, 2], // Proposal B
        [3, 1, 3, 1, 2], // Proposal C
        [1, 2, 4, 2, 1], // Proposal D (equal to A)
      ]);
      final mj = MajorityJudgmentResolver();
      final result = mj.resolve(pollTally);

      print(result.proposalsResults.map((ProposalResult p) => p.rank));
      //> (2, 1, 4, 2)

      print(result.sortedProposalsResults.map((ProposalResult p) => p.index));
      //> (1, 0, 3, 2)
    
}

Contribute

Usual git flow: clone, tinker, request a merge.

Authors

This package was made by MieuxVoter, a french nonprofit.

Footnotes

  1. TODO, see #1 ; it's a good first issue if you want to contribute