예제 #1
0
 static function calcularComRegrasMaxVMOutIn($scenario, $maxVM)
 {
     $unwanted = 0;
     $all = array_product($scenario['rvm']);
     foreach ($scenario['rpm'] as $pmName => $numOfVMsInPM) {
         $unwantedLocal = 0;
         if ($numOfVMsInPM > $maxVM) {
             list($out, $in) = Approximation::getOutsidersInsiders($pmName, $scenario);
             for ($i = $maxVM + 1; $i <= $numOfVMsInPM; $i++) {
                 $inConsolidated = Approximation::getInsidersCombinations($in, $numOfVMsInPM - $i);
                 $unwantedLocal += $out * $inConsolidated;
             }
         }
         $unwanted += $unwantedLocal;
     }
     return $all - $unwanted;
 }
예제 #2
0
 /**
  * @depends testgetOutsidersInsiders
  */
 public function testgetInsidersCombinations()
 {
     $insiders = array(2, 1, 0, 2, 3);
     $this->assertEquals(1, Approximation::getInsidersCombinations($insiders, 0));
     $this->assertEquals(8, Approximation::getInsidersCombinations($insiders, 1));
     $this->assertEquals(23, Approximation::getInsidersCombinations($insiders, 2));
     $this->assertEquals(28, Approximation::getInsidersCombinations($insiders, 3));
     $insiders = array(2, 1, 2, 1, 1, 1);
     $this->assertEquals(44, Approximation::getInsidersCombinations($insiders, 3));
     //$this->assertEquals(array(),Approximation::_getInsidersCombinations($insiders,2));
 }