gandung / topsis-fmadm
The TOPSIS FMADM (Fuzzy Multiple Attribute Decision Making) Algorithm
v1.0.1
2017-06-30 06:52 UTC
Requires
- php: >=5.6.0 || >=7.1.0
This package is auto-updated.
Last update: 2024-10-19 18:05:48 UTC
README
How to use:
Initialize fixed data
<?php require_once __DIR__ . DIRECTORY_SEPARATOR . 'bootstrap.php'; $data = [ [0.5290, 0.7742, 1, 1, 0.7665], [0.4110, 0.1275, 1, 1, 0.7415], [0.7050, 0.7537, 0.9400, 1, 0.8080], [0.3520, 0.2438, 0.8400, 1, 0.8330], [0.5290, 0.7065, 0.9200, 0.9600, 0.8080], [0.2940, 0.1970, 0.8000, 1, 0.8330], [0.4110, 0.4054, 0.8200, 1, 0.8330], [0.4700, 0.5043, 0.9000, 0.9600, 0.8750], [0.7640, 1, 1, 1, 0.8750], [0.9410, 1, 1, 1, 0.8330] ];
Or, initialize data which needs to be fuzzified
<?php require_once __DIR__ . DIRECTORY_SEPARATOR . 'bootstrap.php'; $data = [ ['IIIA', 7742, 56, 26, 15.33], ['IIC', 1275, 53, 25, 14.83], ['IIID', 7537, 57, 26, 16.16], ['IIB', 2438, 42, 25, 16.66], ['IIIA', 7065, 46, 24, 16.16], ['IIA', 1970, 40, 25.5, 16.66], ['IIC', 4054, 41, 26.5, 16.66], ['IID', 5043, 45, 24, 17.5], ['IVA', 10432, 57, 25.5, 17.5], ['IVD', 10743, 58, 23.5, 16.66], ];
To get ranking result (preference value) from fixed data
[...] $handler = new \FMADM\Topsis\Topsis($data); $handler->setWeight([1, 0.5, 0.75, 0.5, 1]); $handler->normalizeCriterionMatrix(); $pref = $handler->getPreferenceValuePerAlternative(); print_r($pref);
To get ranking result (preference value) from fuzzified data
[...] $processor = (new \FMADM\Topsis\FuzzyProcessor) ->withCriterion('golongan', ['IA', 'IB', 'IC', 'ID', 'IIA', 'IIB', 'IIC', 'IID', 'IIIA', 'IIIB', 'IIIC', 'IIID', 'IVA', 'IVB', 'IVC', 'IVD', 'IVE']) ->withCriterion('lama-mengajar', ['lower-bound' => 0, 'upper-bound' => 10000]) ->withCriterion('usia', ['lower-bound' => 20, 'upper-bound' => 60]) ->withCriterion('poin-kedisiplinan-avg', ['lower-bound' => 5, 'upper-bound' => 25]) ->withCriterion('poin-attitude-avg', ['lower-bound' => 5, 'upper-bound' => 20]); $fuzzy = new \FMADM\Topsis\Fuzzy($processor); $handler = new \FMADM\Topsis\Topsis($abstract); $handler->needsFuzzifiedData($fuzzy); $handler->setWeight([1, 0.5, 0.75, 0.5, 1]); $handler->normalizeCriterionMatrix(); $pref = $handler->getPreferenceValuePerAlternative(); print_r($pref);