This is a laravel package to do certain method of Decision Support System. make sure to always use latest version of Laravel, and minimum PHP version is 7.4.
You can install the package via composer:
composer require fanboykun/decissionsupportsystem
you don't have to configure anything, it's ready to use as it functionality is only to make calculation based on your method's choise (explained below)
import the class on your controller
use Fanboykun\DecissionSuppportSystem\DecissionSuppportSystem;
and then use it as a parameter on your function, example :
public function calculate (DecissionSupportSystem $decissionSupportSystem)
{
// for example, let's use moora as the method, you can choose what method you want to use, method list and the function are available below
$result = $decissionSupportSystem->mooraOperator($your_data_to_calculate);
return $result;
}
or you can make a new class instance, example :
public function calculate ()
{
// for example, let's use moora as the method, you can choose what method you want to use, method list and the function are available below
$decissionSupportSystem = new DecissionSupportSystem();
$result = $decissionSupportSystem->mooraOperator($your_data_to_calculate);
return $result;
}
NOTE: the returned data type is array and the data that returned is like this example :
$returned_data = [
['alternative_id' => 1, 'optimized_value' => 0.9, 'rank' => 1,],
['alternative_id' => 2, 'optimized_value' => 0.8, 'rank' => 2,],
['alternative_id' => 3, 'optimized_value' => 0.6, 'rank' => 3,],
['alternative_id' => 4, 'optimized_value' => 0.5, 'rank' => 4,],
['alternative_id' => 5, 'optimized_value' => 0.4, 'rank' => 5,],
]
the key of an index is alternative_id
, and sorted by value of optimized_value
, and add an index named rank
.
here is the example of the data that required and accepted, make sure to follow this step because in order to read and calculate the data, it depends on the array index name. you may have different index name so you have to map it's name and value.
example from getting the data from database and mapping it :
public function getData(DecissionSupportSystem $decissionSupportSystem) : array
{
$data_to_calculate = Criteria::with('alternatives')->get()
->map(function ($item, $key){
return [
'criteria_id' => $item->id,
'name' => $item->name,
'type' => $item->is_cost,
'weight' => $item->weight,
'max_value' => $item->max_value,
'alternatives' => $item->alternatives->map(function ($item, $key){
return [
'alternative_id' => $item->id,
'name' => $item->name,
'value' => $item->pivot->value,
];
})->toArray()
];
})->toArray();
// example, we use moora method
$result = $decissionSupportSystem->mooraOperator($data_to_calculate);
return $result;
}
in above example, we are getting data from the database with eloquent, we get the data from Criteria
model that have ManyToMany
relationship with Alternative
model.
If you are still confuse about the many to many relationship, make sure to read the Laravel documentation.
From above explaination, we know the required data to pass. Here i going to show you the data type(s)
Column | Data Types | Description |
---|---|---|
criteria_id | integer | it should be unique (id) |
name | string | it is not used to begin any operation, but it's required |
type | boolean | true is cost and false is benefit |
weight | float | better to pass it as float, but it's accept any numeric value |
max_value | float | it's not required, when it's null. this package will search the max value |
alternatives | array | it is an array wrapper for the alternative |
alternative_id | integer | it should be unique (id) |
name | string | it is not used to begin any operation, but it's required |
value | float | better to pass it as float, but it's accept any numeric value |
- waspas :
waspasOperator()
- moora :
mooraOperator()
remember that you have to use the DecissionSupportSystem
class, either from your function as a parameter or make a new class instance inside your function.
for now, the method that available is only those, imma add new method soon.
Please see CHANGELOG for more information what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email irfanramadhan1812@gmail.com instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.
This package was generated using the Laravel Package Boilerplate.