定制 oceanbigone/majorityjudgment 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

oceanbigone/majorityjudgment

Composer 安装命令:

composer require oceanbigone/majorityjudgment

包简介

Sort candidates according to majority judgment

README 文档

README

Simple class PHP of majority judgment. See more details on Wikipedia.

How to install ?

composer require oceanbigone/majorityjudgment

How to use ?

See how to use with demo/index.php. You can see result here : demo page

require "../vendor/autoload.php";

//start Ballot
$ballot= new Ballot();

//create Mention
$excellent  = new Mention("Excellent");
$good       = new Mention("Good");
$prettyGood = new Mention("Pretty good");
[...]

//create Candidate
$candidate1 = new Candidate("Mrs ABCDE");
$candidate2 = new Candidate("Mr FGHIJ");

//add Mentions -- from the best to the worst (order is important) !!!!
$ballot->addMention($excellent);
$ballot->addMention($good);
$ballot->addMention($prettyGood);
[...]

//add some Candidats
$ballot->addCandidate($candidate1);
$ballot->addCandidate($candidate2);
[...]


//add votes (keep in mind that each participation need a vote for each candidate !)
$ballot->addVote(new Vote($candidate1,$excellent));
$ballot->addVote(new Vote($candidate2,$prettyGood));

$ballot->addVote(new Vote($candidate1,$good));
$ballot->addVote(new Vote($candidate2,$excellent));
[...]

//get an array of candidate sorted by Majority Jugement, if there is full ex-aequo (even after index added) then they are ordered by name.
$sortedCandidates=$ballot->proceedElection();
var_dump($sortedCandidates);

//details with MeritProfile object
foreach($sortedCandidates as $candidate){
    
    $meritProfil=new MeritProfile();
    
    //get merit profil as Array of Merit object (Merit is an object with two property : mention and percent of this mention) 
    $merits=$meritProfil->getAsMeritArray($candidate,$ballot->getVotes(),$ballot->getMentions());
    
    //display majority mention
    echo $meritProfil->processMajorityMention($candidate,$ballot->getVotes(),$ballot->getMentions()))->getLabel();
    
    //display percent of majority mention
    echo $meritProfil->processPercentOfMajorityMention($candidate,$ballot->getVotes(),$ballot->getMentions()));
        
}

//clear mentions
$ballot->clearMentions();

//clear candidates
$ballot->clearCandidates();

//clear Votes
$ballot->clearVotes();

Versions

2.1.8

  • Fix bug : force the sorting key to be used as a string

2.1.7

  • Fix bug when perfect exaequo (add an arbitrary loop index at the end of the sorting key)

2.1.6

  • Add demo/fixture02-bug.php to test a bug

2.1.5

  • Fix bug when perfect exaequo

2.1.4

  • Update this file (remove beta warning)

2.1.3

  • Majority mention strictly superior 50%
  • add a fixture

2.1.2

  • remove var_dump

2.1.1

  • Check ex-eaquo with the full key (not only current path)

2.1.0

  • New algorithm (no more ex-aequo)

2.0.4

  • Fix : bug when process worse percent than majority percent

2.0.3

  • Remove key in result array

2.0.2

  • fix : format key

2.0.1

  • Add some help in Readme

2.0.0

  • Return objects instead of associative array
    warning : This version is not compatible with older version

1.2.8

  • License

1.2.7

  • Finalize the algorithm and add an explanation

1.2.6

  • fix results error

1.2.5

  • fix precision round value for generate sorting key (in result array)

1.2.4

  • fix result error

1.2.3

  • sign error in ex-aequo results

1.2.2

  • sign error in ex-aequo results

1.2.1

  • update Readme

1.2.0

  • function getMeritProfile is now private
  • clean comment in code
  • add some documentation

1.1.0

  • function getMeritProfile is now public
  • function getAsMeritArray is now proceedElection

1.0.3

  • fix composer.json

1.0.2

  • add install information on Readme

1.0.1

  • corrections for packagist

1.0.0

  • Initial commit

统计信息

  • 总下载量: 80
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 17
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 17
  • Watchers: 7
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-08-31

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固