PHP code example of kick-in / hungarian
1. Go to this page and download the library: Download kick-in/hungarian library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
kick-in / hungarian example snippets
use Kickin\Hungarian\Matrix\Matrix;
$matrix = new Matrix(3);
$matrix->set(0, 0, 10);
$matrix->set(1, 0, 15);
$matrix->set(2, 0, 12);
$matrix->set(0, 1, 12);
$matrix->set(1, 1, 13);
$matrix->set(2, 1, 14);
$matrix->set(0, 2, 15);
$matrix->set(1, 2, 17);
$matrix->set(2, 2, 25);
use Kickin\Hungarian\Algo\Hungarian;
$solver = new Hungarian();
$result = $solver->solve($matrix);
$result = $solver->solveMax($matrix);
foreach($result as [$row, $col]){
echo $row . ": " . $col . "\n";
}
use Kickin\Hungarian\Matrix\StringMatrix;
$matrix = new StringMatrix(["Alice", "Bob", "Carol"], ["Bathroom", "Kitchen", "Windows"]);
$matrix->set("Alice", "Bathroom", 10);
$matrix->set("Bob", "Bathroom", 15);
$matrix->set("Carol", "Bathroom", 12);
$matrix->set("Alice", "Kitchen", 12);
$matrix->set("Bob", "Kitchen", 13);
$matrix->set("Carol", "Kitchen", 14);
$matrix->set("Alice", "Windows", 15);
$matrix->set("Bob", "Windows", 17);
$matrix->set("Carol", "Windows", 25);
use Kickin\Hungarian\Matrix\LabeledMatrix;
$matrix = new LabeledMatrix(User::all(), Task::all());
use Kickin\Hungarian\Matrix\MatrixBuilder;
$builder = new MatrixBuilder();
$builder->setRowSource(["Alice", "Bob", "Carol", "Dave"]);
$builder->setColSource(["Garbage", "Sweep floor"]);
$builder->setDefaultValue(1);
$builder->setAugmentValue(10);
$builder->setMappingFunction(function($row, $col){
return 1; // Define your own scoring for any assignment pair
});
$matrix = $builder->build();
$result = $solver->solve($matrix);
$assignedOnly = $result->withoutUnassigned();