Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
afrizal423 committed Mar 26, 2021
1 parent 0b83a7a commit 70b9518
Show file tree
Hide file tree
Showing 12 changed files with 111 additions and 19 deletions.
52 changes: 52 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<p align="right">
بِسْــــــــــــــمِ اللَّهِ الرَّحْمَنِ الرَّحِيم
</p>

# Decision Support System Fuzzy AHP Method Using PHP

Pakcage perhitungan sistem pendukung keputusan metode Fuzzy AHP menggunakan PHP.

## Installation

- Pastikan anda sudah memiliki composer di device anda.
- Install menggunakan perintah
```
composer require afrizalmy/fahp_dss
```
## How To Use
- Silahkan lihat pada file [ini](index.php)
- Siapkan data kriteria dan alternatif terlebih dahulu
- Lalu buat array untuk menampung data kriteria dan tiap-tiap alternatif. Silahkan lihat file [ini](percobaan.php) bagaimana caranya membuat array, logikanya seperti membuat pattern pyramid.
<b>PENTING UNTUK DIINGAT</b>.
Pastikan index array kriteria dan alternatif tidak berubah. Maksudnya adalah ketika proses pertama pemanggilan data kriteria dan alternatif akan disimpan disuatu variable, yang nantinya akan dipanggil ulang. Maka dari itu <i>Saran dari saya simpan data kriteria dan alternatif di database, lalu panggil dan buat sebuah array</i>.
- Setelah itu panggil function <i>buat_metric</i> dari class [Base](src/Base.php#L40), masukkan params kriteria, data array, dan nilai kepastian. Disini nilai kepastian bernilai ```1,1,1```.
- Panggil function FuzzyPairWise pada class [Fahp()](src/Fahp.php) untuk menghitung fuzzy pair wise. Masukkan params hasil matriks dari langkah sebelumnya.
- Setelah itu panggil function HitungGeoMetricMean pada class [Fahp()](src/Fahp.php) untuk menghitung geometric mean. Masukkan params hasil matriks dari langkah sebelumnya.
- Selanjutnya panggil function FuzzyWeight pada class [Fahp()](src/Fahp.php) untuk menghitung bobot.
- Lakukan berulang kali hingga akhir alternatif. Disini saya menyarankan untuk looping.
- Menuju ke langkah terakhir yaitu buat variable array yang didalamnya <b>HARUS ADA</b> array object bobot_kriteria dan bobot_alternatif. Silahkan lihat pada file [ini](index.php#L159). Saran dari saya gunakan looping untuk menyimpan pada object bobot_alternatif.
- Langkah terakhir panggil static function HitungSemuaBobot dari class [Fahp()](src/Fahp.php). Masukkan 3 params seperti kriteria, array object langkah sebelumnya, dan alternatif.
- hasil akan nampak seperti berikut
```
{
"array_bobot":[0.38293967781531879079892632944392971694469451904296875,0.40943338011437979684359333987231366336345672607421875,0.07401766522882970156249626825228915549814701080322265625,0.05732509200513700997614563448223634622991085052490234375,0.076284184836334645307687196691404096782207489013671875],
"best_alternatif":{"P2":0.40943338011437979684359333987231366336345672607421875},
"worst_alternatif":{"P4":0.05732509200513700997614563448223634622991085052490234375}
}
```
## Hitung Manual
- Silahkan lihat file [.xlsm](manual.xlsm) ini untuk perhitungan manual dari contoh file [ini](index.php).

## Disclaimer

* <b>Dilarang keras</b> di perjual-belikan, source ini saya publikasi untuk keperluan belajar saja.

## Donation

* Bagi yang ingin berdonasi terbentuknya sistem ini, siapapun, berapapun, saya ucapkan terimakasih sebanyak-banyaknya. Via Gopay / Dana.

### Gopay<br>
<img src="img/gpy.png" height="400"> <br>

### Dana<br>
<img src="img/dana.png" height="350">
6 changes: 3 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "afrizalmy/fahp_vikor",
"description": "Package sederhana untuk menghitung Sistem Pendukung Keputusan menggunakan metode Fuzzy AHP dan Vikor",
"name": "afrizalmy/fahp_dss",
"description": "Package sederhana untuk menghitung Sistem Pendukung Keputusan menggunakan metode Fuzzy AHP",
"require": {
"php": ">=7.1"
},
Expand All @@ -25,7 +25,7 @@
}
],
"autoload": {
"psr-4": {"afrizalmy\\FAHPVikor\\": "src/"}
"psr-4": {"afrizalmy\\FAHP\\": "src/"}
},
"minimum-stability": "dev"
}
2 changes: 1 addition & 1 deletion composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added img/dana.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/gpy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions index.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?php
require 'vendor/autoload.php';

use afrizalmy\FAHPVikor\Base;
use afrizalmy\FAHPVikor\Fahp;
use afrizalmy\FAHP\Base;
use afrizalmy\FAHP\Fahp;

header('Content-Type: application/json');

Expand Down
Binary file added manual.xlsm
Binary file not shown.
4 changes: 2 additions & 2 deletions percobaan.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?php
require 'vendor/autoload.php';

use afrizalmy\FAHPVikor\Base;
use afrizalmy\FAHPVikor\Fahp;
use afrizalmy\FAHP\Base;
use afrizalmy\FAHP\Fahp;

$kriteria = ["Quality","Origin","Cost","Delivery","After Sales"];

Expand Down
14 changes: 12 additions & 2 deletions src/Base.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

namespace afrizalmy\FAHPVikor;
namespace afrizalmy\FAHP;

class Base
{
Expand Down Expand Up @@ -36,7 +36,17 @@ private function create_matric(array $data){
$this->metrics = $pair_wise;
return $this->metrics;
}


/**
*
* Fungsi ini untuk membuat matriks yang nantinya akan di proses perhitungan fuzzy pair wise
*
* @param array $inputan adalah data kriteria
* @param array $data_array adalah data dari matriks
* @param int $nilai adalah nilai kepastian
*
* @return array berupa array object seperti kriteria, nilai_pasti dan matriks
*/
public function buat_metric(array $inputan, array $data_array, $nilai)
{
$this->kriteria = $inputan;
Expand Down
4 changes: 2 additions & 2 deletions src/ErrorHandling.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php

namespace afrizalmy\FAHPVikor;
use afrizalmy\FAHPVikor\Base;
namespace afrizalmy\FAHP;
use afrizalmy\FAHP\Base;

class ErrorHandling extends Base
{
Expand Down
40 changes: 35 additions & 5 deletions src/Fahp.php
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
<?php

namespace afrizalmy\FAHPVikor;
use afrizalmy\FAHPVikor\Base;
use afrizalmy\FAHPVikor\Helper;
use afrizalmy\FAHPVikor\ErrorHandling;
namespace afrizalmy\FAHP;
use afrizalmy\FAHP\Base;
use afrizalmy\FAHP\Helper;
use afrizalmy\FAHP\ErrorHandling;

class Fahp extends Base
{
protected $kriteria;
protected $metrics;

/**
* Fungsi ini untuk menghitung fuzzy pair wise.
*
* @param array $var adalah data array matriks dari langkah pembuatan matriks
*
* @return array berupa array yang didalamnya terdapat data matriks tadi.
*/
public function FuzzyPairWise(array $var = null)
{
$this->kriteria = $var["kriteria"];
Expand Down Expand Up @@ -38,6 +45,14 @@ protected function GetMaxMedMin($var)
return $hasil;
}

/**
* Fungsi ini untuk menghitung geometric mean.
* Silahkan lihat https://blog.pluang.com/cerdascuan/geometric-mean-adalah/
*
* @param array $var adalah data array matriks dari langkah perhitungan FuzzyPairWise
*
* @return array berupa array object seperti increase yang dimana memiliki object lagi seperti min, med, dan max
*/
public function HitungGeoMetricMean(array $var = null)
{
// var_dump($var);
Expand Down Expand Up @@ -71,7 +86,13 @@ public function HitungGeoMetricMean(array $var = null)
// var_dump($hasil);
return $hasil;
}

/**
* Fungsi ini untuk menghitung bobot.
*
* @param array $var adalah data array matriks dari langkah perhitungan geometricmean
*
* @return array berupa array yang didalamnya adalah bobot setiap kriteria.
*/
public function FuzzyWeight(array $var)
{
ErrorHandling::checkArrayGM($var);
Expand Down Expand Up @@ -127,6 +148,15 @@ public function FuzzyWeight(array $var)
return $arr_normalized;
}

/**
* Fungsi ini untuk menghitung semua bobot dari kriteria maupun tiap-tiap alternatif.
*
* @param array $kriteria adalah data kriteria
* @param array $arr adalah berupa array object seperti bobot_kriteria dan bobot_alternatif
* @param array $alternatif adalah data alternatif
* @return array berupa array object seperti array_bobot, best_alternatif dan worst_alternatif
*/
public static function HitungSemuaBobot($kriteria, $arr, $alternatif)
{
ErrorHandling::checkHitungSemuaBobot($arr);
Expand Down
4 changes: 2 additions & 2 deletions src/Helper.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php

namespace afrizalmy\FAHPVikor;
use afrizalmy\FAHPVikor\Base;
namespace afrizalmy\FAHP;
use afrizalmy\FAHP\Base;

class Helper extends Base{

Expand Down

0 comments on commit 70b9518

Please sign in to comment.