Skip to content

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

License

Notifications You must be signed in to change notification settings

MieuxVoter/majority-judgment-library-dart

Repository files navigation

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages