Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
CRAP | |
100.00% |
22 / 22 |
LogisticGrowthPointValueCalculator | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
4 | |
100.00% |
22 / 22 |
__construct( $bareValue, $maxScoreFactor, $scoreGrowthFactor, $scoreInitialGrowth, $maxPointsFactor, $pointsGrowthFactor, $pointsInitialGrowth ) | |
100.00% |
1 / 1 |
1 | |
100.00% |
8 / 8 |
|||
getPointValue($personalScore, $pointsInvested) | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
_getShift($max, $growth, $initialGrowth) | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
_calculateFactor($max, $growth, $initialGrowth, $input) | |
100.00% |
1 / 1 |
1 | |
100.00% |
8 / 8 |
<?php | |
/** | |
* | |
*/ | |
namespace aae\app\trust { | |
/** | |
* @author Axel Ancona Esselmann | |
* @package aae\app\trust | |
*/ | |
class LogisticGrowthPointValueCalculator implements PointValueCalculatorInterface { | |
private $_bareValue; | |
private $_maxScoreFactor; | |
private $_scoreGrowthFactor; | |
private $_scoreInitialGrowth; | |
private $_maxPointsFactor; | |
private $_pointsGrowthFactor; | |
private $_pointsInitialGrowth; | |
public function __construct( | |
$bareValue, | |
$maxScoreFactor, | |
$scoreGrowthFactor, | |
$scoreInitialGrowth, | |
$maxPointsFactor, | |
$pointsGrowthFactor, | |
$pointsInitialGrowth | |
) { | |
$this->_bareValue = $bareValue; | |
$this->_maxScoreFactor = $maxScoreFactor; | |
$this->_scoreGrowthFactor = $scoreGrowthFactor; | |
$this->_scoreInitialGrowth = $scoreInitialGrowth; | |
$this->_maxPointsFactor = $maxPointsFactor; | |
$this->_pointsGrowthFactor = $pointsGrowthFactor; | |
$this->_pointsInitialGrowth = $pointsInitialGrowth; | |
} | |
public function getPointValue($personalScore, $pointsInvested) { | |
$scoreFactor = $this->_calculateFactor($this->_maxScoreFactor, $this->_scoreGrowthFactor, $this->_scoreInitialGrowth, $personalScore); | |
$pointsFactor = $this->_calculateFactor($this->_maxPointsFactor, $this->_pointsGrowthFactor, $this->_pointsInitialGrowth, $pointsInvested); | |
return $this->_bareValue * $scoreFactor * $pointsFactor; | |
} | |
private function _getShift($max, $growth, $initialGrowth) { | |
$ln = ( | |
($max - 1) / | |
($initialGrowth) | |
) - 1; | |
return - $growth * log($ln); | |
} | |
public function _calculateFactor($max, $growth, $initialGrowth, $input) { | |
$shift = $this->_getShift($max, $growth, $initialGrowth); | |
$offset = 1 - $initialGrowth; | |
return ( | |
($max - $offset) / | |
( | |
1 + exp( | |
- ($input + $shift) / | |
$growth | |
) | |
) | |
) + $offset; | |
} | |
} | |
} |