mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-02-11 22:38:42 +00:00
fix tests
This commit is contained in:
parent
1f9f97f8d9
commit
90b807093b
|
|
@ -569,7 +569,7 @@ class Matrix implements \ArrayAccess, \Iterator
|
||||||
$newMatrixArr = $this->matrix;
|
$newMatrixArr = $this->matrix;
|
||||||
|
|
||||||
foreach ($newMatrixArr as $i => $vector) {
|
foreach ($newMatrixArr as $i => $vector) {
|
||||||
foreach ($vector as $j => $value) {
|
foreach ($vector as $j => $_) {
|
||||||
$newMatrixArr[$i][$j] *= $scalar;
|
$newMatrixArr[$i][$j] *= $scalar;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -913,21 +913,20 @@ class Matrix implements \ArrayAccess, \Iterator
|
||||||
throw new InvalidDimensionException($this->m . 'x' . $this->n);
|
throw new InvalidDimensionException($this->m . 'x' . $this->n);
|
||||||
}
|
}
|
||||||
|
|
||||||
$identity = new IdentityMatrix($this->m);
|
$sum = new IdentityMatrix($this->m);
|
||||||
$matrix = $identity;
|
|
||||||
|
|
||||||
$factorial = 1;
|
$factorial = 1;
|
||||||
$pow = clone $matrix;
|
$pow = clone $sum;
|
||||||
|
|
||||||
for ($i = 1; $i <= $iterations; ++$i) {
|
for ($i = 1; $i <= $iterations; ++$i) {
|
||||||
$factorial *= $i;
|
$factorial *= $i;
|
||||||
$coeff = 1 / $factorial;
|
$coeff = 1 / $factorial;
|
||||||
|
|
||||||
$term = clone $pow->mult($this);
|
$pow = $pow->mult($this);
|
||||||
$matrix = $matrix->add($term->mult($coeff));
|
$sum = $sum->add($pow->mult($coeff));
|
||||||
}
|
}
|
||||||
|
|
||||||
return $matrix;
|
return $sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@ final class MetricsND
|
||||||
*/
|
*/
|
||||||
public static function cosine(array $a, array $b) : float
|
public static function cosine(array $a, array $b) : float
|
||||||
{
|
{
|
||||||
if (($length = \count($a)) !== \count($b)) {
|
if (\count($a) !== \count($b)) {
|
||||||
throw new InvalidDimensionException(\count($a) . 'x' . \count($b));
|
throw new InvalidDimensionException(\count($a) . 'x' . \count($b));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,11 +26,14 @@ use phpOMS\Math\Optimization\Simplex;
|
||||||
*/
|
*/
|
||||||
final class SimplexTest extends \PHPUnit\Framework\TestCase
|
final class SimplexTest extends \PHPUnit\Framework\TestCase
|
||||||
{
|
{
|
||||||
public function testSimplex() : void
|
public function testSimplexBasicInfeasible() : void
|
||||||
{
|
{
|
||||||
$simplex = new Simplex();
|
$simplex = new Simplex();
|
||||||
self::assertEquals(
|
self::assertEqualsWithDelta(
|
||||||
[],
|
[
|
||||||
|
[11.333333, 3.333333, 0.0, 11.666667, 0.0],
|
||||||
|
21.333333
|
||||||
|
],
|
||||||
$simplex->solve(
|
$simplex->solve(
|
||||||
[
|
[
|
||||||
[-1, 1],
|
[-1, 1],
|
||||||
|
|
@ -39,15 +42,19 @@ final class SimplexTest extends \PHPUnit\Framework\TestCase
|
||||||
],
|
],
|
||||||
[8, -3, 2],
|
[8, -3, 2],
|
||||||
[1, 3]
|
[1, 3]
|
||||||
)
|
),
|
||||||
|
0.01
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSimplexBasicFeasible() : void
|
public function testSimplexBasicFeasible() : void
|
||||||
{
|
{
|
||||||
$simplex = new Simplex();
|
$simplex = new Simplex();
|
||||||
self::assertEquals(
|
self::assertEqualsWithDelta(
|
||||||
[],
|
[
|
||||||
|
[1.0, 0.0, 0.0, 0.0],
|
||||||
|
5.0
|
||||||
|
],
|
||||||
$simplex->solve(
|
$simplex->solve(
|
||||||
[
|
[
|
||||||
[-1, 1],
|
[-1, 1],
|
||||||
|
|
@ -55,24 +62,8 @@ final class SimplexTest extends \PHPUnit\Framework\TestCase
|
||||||
],
|
],
|
||||||
[1, 2],
|
[1, 2],
|
||||||
[5, -3]
|
[5, -3]
|
||||||
)
|
),
|
||||||
);
|
0.0
|
||||||
}
|
|
||||||
|
|
||||||
public function testSimplexBasicInfeasible() : void
|
|
||||||
{
|
|
||||||
$simplex = new Simplex();
|
|
||||||
self::assertEquals(
|
|
||||||
[],
|
|
||||||
$simplex->solve(
|
|
||||||
[
|
|
||||||
[-1, 1],
|
|
||||||
[1, 1],
|
|
||||||
[1, -4],
|
|
||||||
],
|
|
||||||
[8, -3, 2],
|
|
||||||
[1, 3]
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -80,7 +71,10 @@ final class SimplexTest extends \PHPUnit\Framework\TestCase
|
||||||
{
|
{
|
||||||
$simplex = new Simplex();
|
$simplex = new Simplex();
|
||||||
self::assertEquals(
|
self::assertEquals(
|
||||||
[],
|
[
|
||||||
|
[\INF, \INF],
|
||||||
|
\INF
|
||||||
|
],
|
||||||
$simplex->solve(
|
$simplex->solve(
|
||||||
[
|
[
|
||||||
[-1, -1],
|
[-1, -1],
|
||||||
|
|
@ -95,8 +89,11 @@ final class SimplexTest extends \PHPUnit\Framework\TestCase
|
||||||
public function testSimplexLPUnbound() : void
|
public function testSimplexLPUnbound() : void
|
||||||
{
|
{
|
||||||
$simplex = new Simplex();
|
$simplex = new Simplex();
|
||||||
self::assertEquals(
|
self::assertEqualsWithDelta(
|
||||||
[],
|
[
|
||||||
|
[\INF, \INF],
|
||||||
|
\INF
|
||||||
|
],
|
||||||
$simplex->solve(
|
$simplex->solve(
|
||||||
[
|
[
|
||||||
[2, -1],
|
[2, -1],
|
||||||
|
|
@ -104,7 +101,8 @@ final class SimplexTest extends \PHPUnit\Framework\TestCase
|
||||||
],
|
],
|
||||||
[-1, -2],
|
[-1, -2],
|
||||||
[1, -1]
|
[1, -1]
|
||||||
)
|
),
|
||||||
|
0.01
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,91 +25,91 @@ final class Kernel2DTest extends \PHPUnit\Framework\TestCase
|
||||||
{
|
{
|
||||||
public function testUniform() : void
|
public function testUniform() : void
|
||||||
{
|
{
|
||||||
self::assertEquals(0.5, Kernel2D::uniformKernel(0, 1));
|
self::assertEquals(0.5, Kernel2D::uniformKernel(0, 2));
|
||||||
self::assertEquals(0.5, Kernel2D::uniformKernel(-1, 1));
|
self::assertEquals(0.5, Kernel2D::uniformKernel(-1, 2));
|
||||||
self::assertEquals(0.5, Kernel2D::uniformKernel(1, 1));
|
self::assertEquals(0.5, Kernel2D::uniformKernel(1, 2));
|
||||||
|
|
||||||
self::assertEquals(0.0, Kernel2D::uniformKernel(2, 1));
|
self::assertEquals(0.0, Kernel2D::uniformKernel(2, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::uniformKernel(-2, 1));
|
self::assertEquals(0.0, Kernel2D::uniformKernel(-2, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testTriangle() : void
|
public function testTriangle() : void
|
||||||
{
|
{
|
||||||
self::assertEquals(1.0, Kernel2D::triangularKernel(0, 1));
|
self::assertEquals(1.0, Kernel2D::triangularKernel(0, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::triangularKernel(-1, 1));
|
self::assertEquals(0.0, Kernel2D::triangularKernel(-1, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::triangularKernel(1, 1));
|
self::assertEquals(0.0, Kernel2D::triangularKernel(1, 2));
|
||||||
|
|
||||||
self::assertEquals(0.0, Kernel2D::triangularKernel(2, 1));
|
self::assertEquals(0.0, Kernel2D::triangularKernel(2, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::triangularKernel(-2, 1));
|
self::assertEquals(0.0, Kernel2D::triangularKernel(-2, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEpanechnikov() : void
|
public function testEpanechnikov() : void
|
||||||
{
|
{
|
||||||
self::assertEquals(3 / 4, Kernel2D::epanechnikovKernel(0, 1));
|
self::assertEquals(3 / 4, Kernel2D::epanechnikovKernel(0, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(-1, 1));
|
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(-1, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(1, 1));
|
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(1, 2));
|
||||||
|
|
||||||
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(2, 1));
|
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(2, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(-2, 1));
|
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(-2, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testQuartic() : void
|
public function testQuartic() : void
|
||||||
{
|
{
|
||||||
self::assertEquals(15 / 6, Kernel2D::quarticKernel(0, 1));
|
self::assertEquals(15 / 6, Kernel2D::quarticKernel(0, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::quarticKernel(-1, 1));
|
self::assertEquals(0.0, Kernel2D::quarticKernel(-1, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::quarticKernel(1, 1));
|
self::assertEquals(0.0, Kernel2D::quarticKernel(1, 2));
|
||||||
|
|
||||||
self::assertEquals(0.0, Kernel2D::quarticKernel(2, 1));
|
self::assertEquals(0.0, Kernel2D::quarticKernel(2, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::quarticKernel(-2, 1));
|
self::assertEquals(0.0, Kernel2D::quarticKernel(-2, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testTriweight() : void
|
public function testTriweight() : void
|
||||||
{
|
{
|
||||||
self::assertEquals(35 / 32, Kernel2D::triweightKernel(0, 1));
|
self::assertEquals(35 / 32, Kernel2D::triweightKernel(0, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::triweightKernel(-1, 1));
|
self::assertEquals(0.0, Kernel2D::triweightKernel(-1, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::triweightKernel(1, 1));
|
self::assertEquals(0.0, Kernel2D::triweightKernel(1, 2));
|
||||||
|
|
||||||
self::assertEquals(0.0, Kernel2D::triweightKernel(2, 1));
|
self::assertEquals(0.0, Kernel2D::triweightKernel(2, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::triweightKernel(-2, 1));
|
self::assertEquals(0.0, Kernel2D::triweightKernel(-2, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testTricube() : void
|
public function testTricube() : void
|
||||||
{
|
{
|
||||||
self::assertEquals(70 / 81, Kernel2D::tricubeKernel(0, 1));
|
self::assertEquals(70 / 81, Kernel2D::tricubeKernel(0, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::tricubeKernel(-1, 1));
|
self::assertEquals(0.0, Kernel2D::tricubeKernel(-1, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::tricubeKernel(1, 1));
|
self::assertEquals(0.0, Kernel2D::tricubeKernel(1, 2));
|
||||||
|
|
||||||
self::assertEquals(0.0, Kernel2D::tricubeKernel(2, 1));
|
self::assertEquals(0.0, Kernel2D::tricubeKernel(2, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::tricubeKernel(-2, 1));
|
self::assertEquals(0.0, Kernel2D::tricubeKernel(-2, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGaussian() : void
|
public function testGaussian() : void
|
||||||
{
|
{
|
||||||
self::assertEquals(1 / \sqrt(2 * \M_PI), Kernel2D::gaussianKernel(0, 1));
|
self::assertEquals(1 / \sqrt(2 * \M_PI), Kernel2D::gaussianKernel(0, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::gaussianKernel(-1, 1));
|
self::assertEquals(0.0, Kernel2D::gaussianKernel(-1, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::gaussianKernel(1, 1));
|
self::assertEquals(0.0, Kernel2D::gaussianKernel(1, 2));
|
||||||
|
|
||||||
self::assertEquals(0.0, Kernel2D::gaussianKernel(2, 1));
|
self::assertEquals(0.0, Kernel2D::gaussianKernel(2, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::gaussianKernel(-2, 1));
|
self::assertEquals(0.0, Kernel2D::gaussianKernel(-2, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCosine() : void
|
public function testCosine() : void
|
||||||
{
|
{
|
||||||
self::assertEquals(\M_PI / 4, Kernel2D::cosineKernel(0, 1));
|
self::assertEquals(\M_PI / 4, Kernel2D::cosineKernel(0, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::cosineKernel(-1, 1));
|
self::assertEquals(0.0, Kernel2D::cosineKernel(-1, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::cosineKernel(1, 1));
|
self::assertEquals(0.0, Kernel2D::cosineKernel(1, 2));
|
||||||
|
|
||||||
self::assertEquals(0.0, Kernel2D::cosineKernel(2, 1));
|
self::assertEquals(0.0, Kernel2D::cosineKernel(2, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::cosineKernel(-2, 1));
|
self::assertEquals(0.0, Kernel2D::cosineKernel(-2, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testLogistic() : void
|
public function testLogistic() : void
|
||||||
{
|
{
|
||||||
self::assertEquals(0.5, Kernel2D::logisticKernel(0, 1));
|
self::assertEquals(0.5, Kernel2D::logisticKernel(0, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::logisticKernel(-1, 1));
|
self::assertEquals(0.0, Kernel2D::logisticKernel(-1, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::logisticKernel(1, 1));
|
self::assertEquals(0.0, Kernel2D::logisticKernel(1, 2));
|
||||||
|
|
||||||
self::assertEquals(0.0, Kernel2D::logisticKernel(2, 1));
|
self::assertEquals(0.0, Kernel2D::logisticKernel(2, 2));
|
||||||
self::assertEquals(0.0, Kernel2D::logisticKernel(-2, 1));
|
self::assertEquals(0.0, Kernel2D::logisticKernel(-2, 2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -99,7 +99,7 @@ final class RequestAbstractTest extends \PHPUnit\Framework\TestCase
|
||||||
|
|
||||||
public function testDataAllInputOutput() : void
|
public function testDataAllInputOutput() : void
|
||||||
{
|
{
|
||||||
$this->request->set('asdf', false);
|
$this->request->setData('asdf', false);
|
||||||
self::assertFalse(['asdf' => false], $this->request->getData());
|
self::assertFalse(['asdf' => false], $this->request->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -108,7 +108,7 @@ final class RequestAbstractTest extends \PHPUnit\Framework\TestCase
|
||||||
*/
|
*/
|
||||||
public function testDataJsonInputOutput() : void
|
public function testDataJsonInputOutput() : void
|
||||||
{
|
{
|
||||||
$this->request->set('asdf', '[1,2,3]');
|
$this->request->setData('asdf', '[1,2,3]');
|
||||||
self::assertEquals([1,2,3], $this->request->getDataJson('asdf'));
|
self::assertEquals([1,2,3], $this->request->getDataJson('asdf'));
|
||||||
self::assertEquals([1,2,3], $this->request->getData('asdf', 'json'));
|
self::assertEquals([1,2,3], $this->request->getData('asdf', 'json'));
|
||||||
}
|
}
|
||||||
|
|
@ -118,7 +118,7 @@ final class RequestAbstractTest extends \PHPUnit\Framework\TestCase
|
||||||
*/
|
*/
|
||||||
public function testDataStringInputOutput() : void
|
public function testDataStringInputOutput() : void
|
||||||
{
|
{
|
||||||
$this->request->set('asdf', 1);
|
$this->request->setData('asdf', 1);
|
||||||
self::assertEquals('1', $this->request->getDataString('asdf'));
|
self::assertEquals('1', $this->request->getDataString('asdf'));
|
||||||
self::assertEquals('1', $this->request->getData('asdf', 'string'));
|
self::assertEquals('1', $this->request->getData('asdf', 'string'));
|
||||||
}
|
}
|
||||||
|
|
@ -128,7 +128,7 @@ final class RequestAbstractTest extends \PHPUnit\Framework\TestCase
|
||||||
*/
|
*/
|
||||||
public function testDataBoolInputOutput() : void
|
public function testDataBoolInputOutput() : void
|
||||||
{
|
{
|
||||||
$this->request->set('asdf', 1);
|
$this->request->setData('asdf', 1);
|
||||||
self::assertEquals(true, $this->request->getDataBool('asdf'));
|
self::assertEquals(true, $this->request->getDataBool('asdf'));
|
||||||
self::assertEquals(true, $this->request->getData('asdf', 'bool'));
|
self::assertEquals(true, $this->request->getData('asdf', 'bool'));
|
||||||
}
|
}
|
||||||
|
|
@ -138,7 +138,7 @@ final class RequestAbstractTest extends \PHPUnit\Framework\TestCase
|
||||||
*/
|
*/
|
||||||
public function testDataFloatInputOutput() : void
|
public function testDataFloatInputOutput() : void
|
||||||
{
|
{
|
||||||
$this->request->set('asdf', 1);
|
$this->request->setData('asdf', 1);
|
||||||
self::assertEquals(1.0, $this->request->getDataFloat('asdf'));
|
self::assertEquals(1.0, $this->request->getDataFloat('asdf'));
|
||||||
self::assertEquals(1.0, $this->request->getData('asdf', 'float'));
|
self::assertEquals(1.0, $this->request->getData('asdf', 'float'));
|
||||||
}
|
}
|
||||||
|
|
@ -148,14 +148,14 @@ final class RequestAbstractTest extends \PHPUnit\Framework\TestCase
|
||||||
*/
|
*/
|
||||||
public function testDataDateTimeInputOutput() : void
|
public function testDataDateTimeInputOutput() : void
|
||||||
{
|
{
|
||||||
$this->request->set('asdf', '2023-01-01');
|
$this->request->setData('asdf', '2023-01-01');
|
||||||
self::assertEquals((new \DateTime('2023-01-01'))->format('Y-m-d'), $this->request->getDataDateTime('asdf'));
|
self::assertEquals((new \DateTime('2023-01-01'))->format('Y-m-d'), $this->request->getDataDateTime('asdf'));
|
||||||
self::assertEquals((new \DateTime('2023-01-01'))->format('Y-m-d'), $this->request->getData('asdf', 'float'));
|
self::assertEquals((new \DateTime('2023-01-01'))->format('Y-m-d'), $this->request->getData('asdf', 'float'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testDataInvalidTypeInputOutput() : void
|
public function testDataInvalidTypeInputOutput() : void
|
||||||
{
|
{
|
||||||
$this->request->set('asdf', 1);
|
$this->request->setData('asdf', 1);
|
||||||
self::assertEquals(1, $this->request->getData('asdf', 'invalid'));
|
self::assertEquals(1, $this->request->getData('asdf', 'invalid'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user