示例#1
0
function convertPlacementToScenario()
{
    $placements = json_decode(file(FNPL)[0], true);
    $scenario = Scenario::buildScenarioByPlacements($placements);
    $scenario['vms'] = json_decode(file(FNVM)[0], true);
    $scenario['pms'] = json_decode(file(FNPM)[0], true);
    file_put_contents(FNSC, json_encode($scenario));
    return $scenario;
}
示例#2
0
 /**
  * @depends testbuildScenarioByPlacements
  */
 public function testJsonToScenario()
 {
     $placements = array(array('A:2', 'A:3'), array('B:1', 'B:2'), array('C:2', 'C:3'), array('D:1', 'D:2', 'D:3'));
     $scenario1 = Scenario::buildScenarioByPlacements($placements);
     $json = Scenario::toDataTableJSON($scenario1);
     $scenario2 = Scenario::getScenarioFromJSON($json);
     $this->assertEquals($scenario1['nvms'], $scenario2['nvms'], 'VM # !match');
     $this->assertEquals($scenario1['npms'], $scenario2['npms'], 'PM # !match');
     foreach ($scenario1['rvm'] as $key => $value) {
         $this->assertEquals($value, $scenario2['rvm'][$key], "# of placements of {$key} !match");
     }
     foreach ($scenario1['rpm'] as $key => $value) {
         $this->assertEquals($value, $scenario2['rpm'][$key], "# of placements of {$key} !match");
     }
 }
示例#3
0
 static function getCombinatorialSliceQuantities($scenario, $maxVM)
 {
     require_once 'libs/Combinatorics.php';
     $combinatorics = new Math_Combinatorics();
     $sliceSize = $maxVM * 2 + 1;
     $input = array_keys($scenario['placements']);
     $combinations = $combinatorics->combinations($input, $sliceSize);
     $quatities = array();
     foreach ($combinations as $combination) {
         $slice = array();
         foreach ($combination as $index) {
             $slice[] = $scenario['placements'][$index];
         }
         $sliceScenario = Scenario::buildScenarioByPlacements($slice);
         $quatities[] = Approximation::calcularComRegrasMaxVMOutIn($sliceScenario, $maxVM);
     }
     return $quatities;
 }
示例#4
0
 static function getScenarioFromJSON($json)
 {
     $table = json_decode($json, true);
     unset($table['cols'][0]);
     foreach ($table['cols'] as $k => $v) {
         $pms[] = $v['label'];
     }
     $placements = array();
     foreach ($table['rows'] as $r => $row) {
         $tmp = array_shift($row['c']);
         $vm = $tmp['v'];
         foreach ($row['c'] as $k => $c) {
             if ($c['v'] == 1) {
                 $pm = $pms[$k];
                 $placements[$r][] = "{$vm}:{$pm}";
             }
         }
     }
     return Scenario::buildScenarioByPlacements($placements);
 }
示例#5
0
 /**
  * @depends testgetInsidersCombinations
  */
 public function testtreeSearchApproach()
 {
     $placements = array(array('A:1', 'A:2'), array('B:2', 'B:3'), array('C:1', 'C:3'), array('D:1', 'D:2'), array('E:2', 'E:3'), array('F:2', 'F:3'), array('G:1', 'G:3'), array('H:1', 'H:3'));
     $scenario = Scenario::buildScenarioByPlacements($placements);
     $maxVM = 3;
     $resp = Approximation::treeSearchApproach($scenario, $maxVM);
     $this->assertEquals(80, $resp, "# of approximation !match.");
 }