debug
This commit is contained in:
@ -0,0 +1,254 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
use CondorcetPHP\Condorcet\{Condorcet, Election};
|
||||
use CondorcetPHP\Condorcet\Utils\CondorcetUtil;
|
||||
|
||||
require_once __DIR__.'/../../__CondorcetAutoload.php';
|
||||
|
||||
Condorcet::$UseTimer = true;
|
||||
$election = new Election;
|
||||
|
||||
// Inluding Data
|
||||
|
||||
require_once 'vote_data'.\DIRECTORY_SEPARATOR.'BasicVoteConf.php';
|
||||
|
||||
\define('TEST_NAME', 'Condorcet Bonus Example');
|
||||
|
||||
// View :
|
||||
?><!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title><?php echo TEST_NAME; ?></title>
|
||||
|
||||
<style>
|
||||
.votant {
|
||||
float: left;
|
||||
margin-right: 2cm;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header style="text-align:center;">
|
||||
<img src="../../condorcet-logo.png" alt="Condorcet Class" style="width:15%;">
|
||||
</header>
|
||||
|
||||
<h1><?php echo TEST_NAME; ?></h1>
|
||||
|
||||
<em style="font-weight:bold;"><a href="https://github.com/julien-boudry/Condorcet" target="_blank">Condorcet Class</a> version : <?php echo Condorcet::getVersion(); ?></em><br>
|
||||
|
||||
<em>
|
||||
Number of Candidates :
|
||||
<?php echo $election->countCandidates(); ?>
|
||||
|
|
||||
Number of votes :
|
||||
<?php echo $election->countVotes(); ?>
|
||||
</em>
|
||||
|
||||
<h2>Candidates list :</h2>
|
||||
|
||||
<ul>
|
||||
<?php
|
||||
foreach ($election->getCandidatesList() as $candidatName) {
|
||||
echo '<li>'.$candidatName.'</li>';
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Registered votes details :</h2>
|
||||
<?php
|
||||
foreach ($election->getVotesList() as $vote) {
|
||||
echo '<div class="votant">';
|
||||
|
||||
echo '<strong style="color:green;">'.implode(' / ', $vote->getTags()).'</strong><br>';
|
||||
|
||||
echo '<ol>';
|
||||
|
||||
foreach ($vote as $rank => $value) {
|
||||
if ($rank === 'tag') {
|
||||
continue;
|
||||
} ?>
|
||||
|
||||
<li><?php echo implode(',', $value); ?></li>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
echo '</ol><br></div>';
|
||||
}
|
||||
?>
|
||||
|
||||
<br><hr style="clear:both;">
|
||||
|
||||
<h2>Get pairwise :</h2>
|
||||
|
||||
<pre>
|
||||
<?php var_dump(CondorcetUtil::format($election->getPairwise())); ?>
|
||||
</pre>
|
||||
<br>
|
||||
<em style="color:green;">computed in <?php echo number_format($election->getLastTimer(), 5); ?> second(s).</em>
|
||||
|
||||
<br><br><hr style="clear:both;">
|
||||
|
||||
<h2>Winner by <a target="blank" href="http://en.wikipedia.org/wiki/Condorcet_method">natural Condorcet</a> :</h2>
|
||||
|
||||
<strong style="color:green;">
|
||||
<?php
|
||||
if ($election->getWinner() !== null) {
|
||||
echo $election->getWinner();
|
||||
} else {
|
||||
echo '<span style="color:red;">The votes of this group do not allow natural Condorcet winner because of <a href="http://fr.wikipedia.org/wiki/Paradoxe_de_Condorcet" target="_blank">Condorcet paradox</a>.</span>';
|
||||
}
|
||||
?>
|
||||
</strong>
|
||||
|
||||
<h2>Loser by <a target="blank" href="http://en.wikipedia.org/wiki/Condorcet_method">natural Condorcet</a> :</h2>
|
||||
|
||||
<strong style="color:green;">
|
||||
<?php
|
||||
if ($election->getLoser() !== null) {
|
||||
echo $election->getLoser();
|
||||
} else {
|
||||
echo '<span style="color:red;">The votes of this group do not allow natural Condorcet loser because of <a href="http://fr.wikipedia.org/wiki/Paradoxe_de_Condorcet" target="_blank">Condorcet paradox</a>.</span>';
|
||||
}
|
||||
?>
|
||||
</strong>
|
||||
|
||||
<br><br><hr>
|
||||
|
||||
<h2>Some pratices about default method :</h2>
|
||||
|
||||
<h3>Use default method :</h3>
|
||||
|
||||
<strong>Defaut:</strong> <?php echo Condorcet::getDefaultMethod(); ?> <br>
|
||||
|
||||
<pre>
|
||||
<?php var_dump(CondorcetUtil::format($election->getResult())); ?>
|
||||
</pre>
|
||||
|
||||
<h3>Change it to MiniMax_Margin :</h3>
|
||||
<?php Condorcet::setDefaultMethod('Minimax_Margin'); ?>
|
||||
|
||||
<strong>Defaut:</strong> <?php echo Condorcet::getDefaultMethod(); ?> <br>
|
||||
|
||||
<pre>
|
||||
<?php var_dump(CondorcetUtil::format($election->getResult())); ?>
|
||||
</pre>
|
||||
|
||||
|
||||
<br><br><hr>
|
||||
|
||||
<h2>Vote manipulation :</h2>
|
||||
|
||||
<h3>Display votes with tag "custom_tag_One"</h3>
|
||||
<?php
|
||||
foreach ($election->getVotesList('custom_tag_One', true) as $vote) {
|
||||
echo '<div class="votant">';
|
||||
|
||||
echo '<strong style="color:green;">'.implode(' / ', $vote->getTags()).'</strong><br>';
|
||||
|
||||
echo '<ol>';
|
||||
|
||||
foreach ($vote as $rank => $value) {
|
||||
if ($rank === 'tag') {
|
||||
continue;
|
||||
} ?>
|
||||
|
||||
<li><?php echo implode(',', $value); ?></li>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
echo '</ol><br></div>';
|
||||
}
|
||||
?>
|
||||
<div style="clear:both;"></div>
|
||||
|
||||
<h3>Or without with tag "custom_tag_Two"</h3>
|
||||
<?php
|
||||
foreach ($election->getVotesList('custom_tag_Two', false) as $vote) {
|
||||
echo '<div class="votant">';
|
||||
|
||||
echo '<strong style="color:green;">'.implode(' / ', $vote->getTags()).'</strong><br>';
|
||||
|
||||
echo '<ol>';
|
||||
|
||||
foreach ($vote as $rank => $value) {
|
||||
if ($rank === 'tag') {
|
||||
continue;
|
||||
} ?>
|
||||
|
||||
<li><?php echo implode(',', $value); ?></li>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
echo '</ol><br></div>';
|
||||
}
|
||||
?>
|
||||
<div style="clear:both;"></div>
|
||||
|
||||
<h3>Get a ranking without "custom_tag_One" & "custom_tag_Two" tags and display Kemeny-Young result but don't delete it</h3>
|
||||
|
||||
<pre>
|
||||
<?php
|
||||
$options = [
|
||||
'tags' => ['custom_tag_One', 'custom_tag_Two'],
|
||||
'withTag' => false,
|
||||
];
|
||||
|
||||
var_dump(CondorcetUtil::format($election->getResult('KemenyYoung', $options))); ?>
|
||||
</pre>
|
||||
<div style="clear:both;"></div>
|
||||
|
||||
<h3>Delete vote with "custom_tag_One" & "custom_tag_Two" tags and display Kemeny-Young result</h3> <?php // you can also delete vote without this tag, read the doc ( tips: removeVotesByTags('custom_tag_One', false) )?>
|
||||
|
||||
<?php
|
||||
$election->removeVotesByTags(['custom_tag_One', 'custom_tag_Two']);
|
||||
?>
|
||||
|
||||
|
||||
<pre>
|
||||
<?php var_dump(CondorcetUtil::format($election->getResult('KemenyYoung'))); ?>
|
||||
</pre>
|
||||
|
||||
|
||||
<h3>Check the new vote list</h3>
|
||||
<?php
|
||||
foreach ($election->getVotesList() as $vote) {
|
||||
echo '<div class="votant">';
|
||||
|
||||
echo '<strong style="color:green;">'.implode(' / ', $vote->getTags()).'</strong><br>';
|
||||
|
||||
echo '<ol>';
|
||||
|
||||
foreach ($vote as $rank => $value) {
|
||||
if ($rank === 'tag') {
|
||||
continue;
|
||||
} ?>
|
||||
|
||||
<li><?php echo implode(',', $value); ?></li>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
echo '</ol><br></div>';
|
||||
}
|
||||
?>
|
||||
<div style="clear:both;"></div>
|
||||
|
||||
|
||||
|
||||
<br><br><hr>
|
||||
|
||||
<!-- <h4>CondorcetUtil::format (for debug only) :</h4>
|
||||
|
||||
<pre>
|
||||
<?php // CondorcetUtil::format($election);?>
|
||||
</pre> -->
|
||||
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user