public function getCvmpWithMaxCostBenefit(&$pareto) { //if(count($pareto) == 1) return array_pop($pareto); $cvmpMax = array_pop($pareto); $cbMax = Qualifiers::getCostBenefit($cvmpMax); foreach ($pareto as $cvmp) { $cb = Qualifiers::getCostBenefit($cvmp); if ($cb > $cbMax) { $cbMax = $cb; $cvmpMax = $cvmp; } } return $cvmpMax; }
/** * @depends testBenefit */ public function testCostBenefit() { Qualifiers::add('QUAtest'); Qualifiers::add('QUAmirror'); Costs::add('COSTextimp'); $places = ['v1' => 'p1', 'v2' => 'p1', 'v3' => 'p2', 'v4' => 'p2', 'v5' => 'p3']; $realCvmp = Cvmp::buildCVmpByPlacements($places); $cvmp = Cvmp::buildCVmpByPlacements($places); $cvmp['mirror'] = 11; // 220 - 200 / 2 (costTest = 2) $this->assertEquals(10, Qualifiers::getCostBenefit($cvmp), ""); }