예제 #1
0
 public function run()
 {
     //Step 1: define the semantics
     //$this->debug = true;
     //Step 2: transform assessments into the HFLTS
     parent::run();
     if ($this->debug) {
         system_message($this->N . " x " . $this->M . " x " . $this->P);
     }
     //Step 3: establish the alternatives, criteria and the weights of the criteria
     self::crossAlternativesWithCriteria();
     //Step 4: find out the positive ideal and the negative ideal solution
     self::idealSolution();
     //Step 5: derive the compromise solutions
     self::linguisticCompromise();
     $this->ranking();
     return $this->ranking[0]['vikor']['label'];
 }
예제 #2
0
 public function run()
 {
     //step 1: transform the linguistic expressions into HFLTS.
     //Since all criteria are of the maximizing type no normalization is needed
     parent::run();
     //$this->debug = true;
     if ($this->debug) {
         system_message($this->N . " x " . $this->M . " x " . $this->P);
     }
     //step 2: identify the concordance an discordance indices
     $this->crossAlternativesWithCriteria();
     //step 3: construct the concordance and discordance matrices
     $this->concordanceBalance();
     //step 4: get the net dominance and disadvantage indices (c_i and d_i)
     $this->dominanceBalance();
     //step 5: rank the alternatives in acoordance with c_i and d_i
     $this->ranking();
     return $this->ranking[0]['electre']['label'];
 }
예제 #3
0
 public function run()
 {
     parent::run();
     //$this->debug = true;
     if ($this->debug) {
         system_message($this->N . " x " . $this->M . " x " . $this->P);
     }
     //Assuption: G is a normalized linguistic decision matrix, where criteria benefit is same and cost criteria es negated
     $this->variance = $this->variance();
     //step 1 find the most important factor and calculate the relative weights
     $this->relativeWeights();
     //step 2 calculate the dominance degree for each alternative concerning a criterion
     //step 3 calculate the dominance degree for each alternative
     $this->crossAlternativesWithCriteria();
     //step 4 calculate the overall dominance degree for each alternative
     $this->overallDominance();
     //step 5 rank alternatives
     $this->ranking();
     return $this->ranking[0]['todim']['label'];
 }
예제 #4
0
 public function run()
 {
     parent::run();
     $this->debug = true;
     if ($this->debug) {
         system_message($this->N . " x " . $this->M . " x " . $this->P);
         echo '<br>superE <pre>';
         print_r($this->superE);
         echo '</pre>';
         echo '<br>E <pre>';
         print_r($this->E);
         echo '</pre>';
         echo '<br>W <pre>';
         print_r($this->W);
         echo '</pre>';
     }
     //Get the scenario  .-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-
     if (elgg_get_plugin_setting('weight_experts', 'hflts') == 1) {
         if (elgg_get_plugin_setting('weight_assessments', 'hflts') == 1) {
             system_message("Scenario 3: double subjectivity (E, superE) => 2-tuple extendend weighted mean in two phases");
             $this->crossAlternativesWithCriteria();
         } else {
             system_message("Scenario 2: DM with expertise (E) ignore (superE, W=1) => HFWA operator + extended mean");
             $this->crossWithHFWAoperator();
             $this->aggregation2();
         }
     } else {
         if (elgg_get_plugin_setting('weight_assessments', 'hflts') == 0) {
             system_message("Scenario 1: ignore (E, superE) W=1 => minmax operator + extended mean");
         } else {
             system_message("Scenario 4: ignore (E, superE) aggregate W => minmax + extended mean");
         }
         $this->translation();
         $this->aggregation2();
     }
     //..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-
     $this->average();
     $this->ranking();
     return $this->ranking[0]['average']['label'];
 }
예제 #5
0
 public function run()
 {
     //step 1 collect data into a fuzzy decision matrix
     parent::run();
     //$this->debug = true;
     if ($this->debug) {
         system_message($this->N . " x " . $this->M . " x " . $this->P);
     }
     //Assuption: G is a normalized linguistic decision matrix, where criteria benefit is same and cost criteria es negated
     //parent::topsisCase();//realEstateCase();vikorCase
     //step 2 aggretate the opinion of decision makers into X (one decision matrix) by using max-min operators
     $this->crossAlternativesWithCriteria();
     //step 3 Let a collection of benefit criteria (i.e., the larger C_j, the greater preference)
     //Let be a collection of cost criteria (i.e., the smaller C_j, the greater preference)
     // compute the HFLTS positive-ideal solution (HFLTS-PIS) & negative-ideal solution (HFLTS-NIS)
     $this->idealSolutions();
     //Step 4. Construct positive ideal separation matrix (D+) and negative ideal separation matrix (D−)
     //Step 5. Calculate the relative closeness (RC) of each alternative to the ideal solution
     $this->separationMatrix();
     //Step 6. Rank all the alternatives A i (i = 1, . , m) according to the closeness coefficient RC(A i ), the greater the value RC(A i ), the better the alternative A i.
     $this->ranking();
     return $this->ranking[0]['topsis']['label'];
 }
예제 #6
0
 public function run()
 {
     parent::run();
     //method not implemented
     return $this->ranking[0]['promethee']['label'];
 }