perhitungan

This commit is contained in:
yuliana dewi 2024-01-22 00:02:37 +07:00
parent d2cf7e62d7
commit 2de02742a4
9 changed files with 151 additions and 178 deletions

View File

@ -15,7 +15,7 @@ class DataAlternatifController extends Controller
$fetchAll = DataTables::of($data_alternatif)
->addIndexColumn()
->addColumn('nama_alternatif', function ($data) {
return $data->alternatif['nama_guru'];
return $data->guru['nama_guru'];
})
->addColumn('action', function ($data) {
return'

View File

@ -11,12 +11,12 @@ use App\Models\SubKriteria;
class PenilaianAlternatifController extends Controller
{
function index() {
$penilaian = Penilaian::with(['guru','kriteria','subKriteria'])->get();
$penilaian = Penilaian::with(['alternatif','kriteria','subKriteria'])->get();
return view('pages.penilaian.index',compact('penilaian'));
}
function create() {
$alternatif = Alternatif::with('alternatif')->get();
$alternatif = Alternatif::with('guru')->get();
$kriteria = Kriteria::get();
$subKriteria = SubKriteria::get();
return view('pages.penilaian.form', compact(['alternatif','kriteria','subKriteria']));

View File

@ -3,10 +3,56 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Kriteria;
use App\Models\Alternatif;
use App\Models\Penilaian;
class PerhitunganController extends Controller
{
function index() {
return view('pages.proses_penilaian.index');
$alternatif = Alternatif::with('penilaian.kriteria')->orderBy('kode_alternatif','ASC')->get();
$kriteria = Kriteria::get();
$penilaian = Penilaian::with('subKriteria')->get();
// return response()->json($alternatif);
// mencari min max
foreach ($kriteria as $key => $vkriteria) {
foreach ($penilaian as $key_1 => $vpenilaian) {
if ($vkriteria->id == $vpenilaian->id_kriteria) {
if ($vkriteria->sifat == "benefit") {
$minMax[$vkriteria->id][] = $vpenilaian->subKriteria['bobot'];
}elseif ($vkriteria->sifat == "cost") {
$minMax[$vkriteria->id][] = $vpenilaian->subKriteria['bobot'];
}
}
}
}
// normalisasi
foreach ($penilaian as $key_1 => $vpenilaian) {
foreach ($kriteria as $key => $vkriteria) {
if ($vkriteria->id == $vpenilaian->id_kriteria) {
if ($vkriteria->sifat == "benefit") { //nilai sub_kriteria : nilai maksimal
$normalisasi[$vpenilaian->alternatif->guru['nama_guru']][$vkriteria->id] = $vpenilaian->subKriteria['bobot'] / max($minMax[$vkriteria->id]);
}elseif ($vkriteria->sifat == "cost") { //nilai minimal : nilai sub_kriteria
$normalisasi[$vpenilaian->alternatif->guru['nama_guru']][$vkriteria->id] = min($minMax[$vkriteria->id]) / $vpenilaian->subKriteria['bobot'];
}
}
}
}
// perangkingan
foreach ($normalisasi as $key => $vnormalisasi) {
foreach ($kriteria as $key_1 => $vkriteria) { //hasil normalisasi x bobot_kriteria
$rank[$key][] = $vnormalisasi[$vkriteria->id] * $vkriteria->bobot_kriteria;
}
}
foreach ($normalisasi as $key => $value){ //total hasil perangkingan
$rank[$key][] = array_sum($rank[$key]);
}
asort($rank); //sortir $rank
// dd($minMax);
return view('pages.proses_penilaian.index', compact(['kriteria','alternatif','penilaian','minMax','normalisasi','rank']));
}
}

View File

@ -14,8 +14,16 @@ class Alternatif extends Model
protected $fillable = [
'kode_alternatif', 'id_guru',
];
function penilaian() {
return $this->hasMany(Penilaian::class, 'id_alternatif');
}
public function alternatif(){
public function guru(){
return $this->hasOne(Guru::class, 'id', 'id_guru');
}
function kriteria() {
return $this->hasMany(Penilaian::class, 'id_alternatif', 'id');
}
}

View File

@ -15,13 +15,13 @@ class Penilaian extends Model
'periode', 'id_alternatif', 'id_kriteria', 'id_sub',
];
public function guru(){
return $this->hasOne(Alternatif::class, 'id', 'id_alternatif');
public function alternatif(){
return $this->belongsTo(Alternatif::class, 'id_alternatif');
}
public function kriteria(){
return $this->hasOne(Kriteria::class, 'id', 'id_kriteria');
return $this->belongsTo(Kriteria::class, 'id_kriteria');
}
public function subKriteria(){
return $this->hasOne(SubKriteria::class, 'id', 'id_sub');
return $this->belongsTo(SubKriteria::class, 'id_sub');
}
}

View File

@ -62,8 +62,8 @@
<span>Proses Perhitungan</span>
</a>
</li>
<li class="nav-item {{ request()->segment(1) == 'proses-saw' ? 'active' : ''}}">
<a class="nav-link" href="{{ route('hapus_hasil') }}">
<li class="nav-item {{ request()->segment(1) == 'laporan-hasil' ? 'active' : ''}}">
<a class="nav-link" href="{{ route('laporan_hasil') }}">
<i class="fas fa-fw fa-arrow-right"></i>
<span>Data Hasil Keputusan</span>
</a>

View File

@ -20,7 +20,7 @@
<select name="id_alternatif" class="form-control">
<option value="">Pilih</option>
@foreach ($alternatif as $alt)
<option value="{{ $alt->id }}">{{ $alt->alternatif['nama_guru'] }}</option>
<option value="{{ $alt->id }}">{{ $alt->guru['nama_guru'] }}</option>
@endforeach
</select>
</div>

View File

@ -27,7 +27,7 @@
@foreach ($penilaian as $item)
<tr>
<td class="text-center">{{ $loop->iteration }}</td>
<td>{{ $item->guru->alternatif['nama_guru'] }}</td>
<td>{{ $item->alternatif->guru['nama_guru'] }}</td>
<td>{{ $item->kriteria['nama_kriteria'] }}</td>
<td class="text-center">{{ $item->subKriteria['sub_kriteria'] }}</td>
<td class="text-center">

View File

@ -10,41 +10,63 @@
<div class="card-body pt-3">
<h4 class="text-gray-900">1. Data Masing Masing Guru Terhadap Kriteria</h4>
<div class="table-responsive">
<table class="table table-striped text-center" width="100%">
<table class="table table-striped table-sm" width="100%">
<thead>
<tr>
<th>No</th>
<th>Alternatif</th>
<th>Daya Tahan</th>
<th>Umur</th>
<th>Harga</th>
<th>Layanan Purna Jual</th>
<th class="text-center" rowspan="2" style="vertical-align: middle">Kode (Ai)</th>
<th class="text-center" rowspan="2" style="vertical-align: middle">Keterangan</th>
<th class="text-center" colspan="{{ count($kriteria) }}">Kode Kriteria</th>
</tr>
<tr>
@foreach ($kriteria as $item)
<th class="text-center">{{ $item->kode_kriteria }}</th>
@endforeach
</tr>
</thead>
<tbody>
{{-- <tbody>
@foreach ($alternatif as $alt)
<tr>
<td>1</td>
<td class="text-left">Guru 1</td>
<td>4</td>
<td>5</td>
<td>3</td>
<td>7</td>
<td class="text-center">{{ $alt->kode_alternatif }}</td>
<td>{{ $alt->guru['nama_guru'] }}</td>
@foreach ($alt->penilaian as $nilai)
<td class="text-center">{{ $nilai->id_sub }}</td>
<?php
$minMaxKriteria[$nilai->kriteria->kode_kriteria]['min'] > $nilai->id_sub && $minMaxKriteria[$nilai->kriteria->kode_kriteria]['min'] = $nilai->id_sub;
$minMaxKriteria[$nilai->kriteria->kode_kriteria]['max'] < $nilai->id_sub && $minMaxKriteria[$nilai->kriteria->kode_kriteria]['max'] = $nilai->id_sub
?>
@endforeach
</tr>
@endforeach
</tbody> --}}
<tbody>
@forelse ($alternatif as $alt => $valt)
<tr>
<td class="text-center">{{ $valt->kode_alternatif }}</td>
<td>{{ $valt->guru['nama_guru'] }}</td>
@foreach ($valt->penilaian as $nilai)
<td class="text-center">{{ $nilai->subKriteria['bobot'] }}</td>
@endforeach
</tr>
@empty
<tr>
<td class="text-center" colspan="{{ count($kriteria) +2 }}">Data Kosong</td>
</tr>
@endforelse
</tbody>
<tfoot>
<tr>
<tr class="text-center">
<th colspan="2">Nilai Maks</th>
<th class="bg-secondary text-white">5</th>
<th class="bg-secondary text-white">5</th>
<th class="bg-secondary text-white">4</th>
<th class="bg-secondary text-white">7</th>
@foreach ($kriteria as $key => $vkriteria)
<th class="bg-secondary text-white">{{ max($minMax[$vkriteria->id]) }}</th>
@endforeach
</tr>
<tr>
<tr class="text-center">
<th colspan="2">Nilai Min</th>
<th class="bg-secondary text-white">2</th>
<th class="bg-secondary text-white">3</th>
<th class="bg-secondary text-white">3</th>
<th class="bg-secondary text-white">3</th>
@foreach ($kriteria as $key => $vkriteria)
<th class="bg-secondary text-white">{{ min($minMax[$vkriteria->id]) }}</th>
@endforeach
</tr>
</tfoot>
</table>
@ -52,163 +74,60 @@
<h4 class="text-gray-900 mt-4">2. Menghitung Nilai Normalisasi</h4>
<div class="table-responsive">
<table class="table table-striped text-center" width="100%">
<table class="table table-striped" width="100%">
<thead>
<tr>
<th>No</th>
<th>Alternatif</th>
<th>Daya Tahan</th>
<th>Umur</th>
<th>Harga</th>
<th>Layanan Purna Jual</th>
<th class="text-center" rowspan="2" style="vertical-align: middle;">Alternatif</th>
<th class="text-center" colspan="{{ count($kriteria) }}">Kode Kriteria</th>
</tr>
<tr>
@foreach ($kriteria as $item)
<th class="text-center">{{ $item->kode_kriteria }}</th>
@endforeach
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td class="text-left">Guru 1</td>
<td>4/5</td>
<td>5/5</td>
<td>3/4</td>
<td>7/7</td>
</tr>
@foreach ($normalisasi as $key => $value)
<tr>
<td width="20%">{{ $key }}</td>
@foreach ($value as $key_1 => $value_1)
<td class="text-center">{{ number_format($value_1 ,2) }}</td>
@endforeach
</tr>
@endforeach
</tbody>
</table>
</div>
<h4 class="text-gray-900 mt-4">3. Hasil Normalisasi</h4>
<h4 class="text-gray-900 mt-4">3. Perankingan</h4>
<div class="table-responsive">
<table class="table table-striped text-center" width="100%">
<thead>
<tr>
<th>No</th>
<th>Alternatif</th>
<th>Daya Tahan</th>
<th>Umur</th>
<th>Harga</th>
<th>Layanan Purna Jual</th>
<th>Kode Kriteria</th>
@foreach ($kriteria as $item)
<th class="text-center">{{ $item->kode_kriteria }}</th>
@endforeach
<th rowspan="2" style="vertical-align: middle">Total</th>
<th rowspan="2" style="vertical-align: middle">Rank</th>
</tr>
<tr>
<th>Bobot</th>
@foreach ($kriteria as $item)
<th class="text-center">{{ $item->bobot_kriteria }}</th>
@endforeach
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td class="text-left">Guru 1</td>
<td>0.8</td>
<td>1</td>
<td>0.8</td>
<td>1</td>
</tr>
</tbody>
</table>
</div>
<h4 class="text-gray-900 mt-4">4. Menghitung Nilai Refrensi</h4>
<div class="table-responsive">
<table class="table table-striped text-center" width="100%">
<thead>
<tr>
<th>No</th>
<th>Alternatif</th>
<th>Daya Tahan</th>
<th>Umur</th>
<th>Harga</th>
<th>Layanan Purna Jual</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td class="text-left">Guru 1</td>
<td>0.8 x 0.2</td>
<td>1 x 0.3</td>
<td>0.8 x 0.35</td>
<td>1 x 0.15</td>
</tr>
</tbody>
<tfoot>
<tr>
<th colspan="2">Bobot Kriteria</th>
<th class="bg-secondary text-white">0.2</th>
<th class="bg-secondary text-white">0.3</th>
<th class="bg-secondary text-white">0.35</th>
<th class="bg-secondary text-white">0.15</th>
</tr>
</tfoot>
</table>
</div>
<h4 class="text-gray-900 mt-4">5. Hasil Prefrensi</h4>
<div class="table-responsive">
<table class="table table-striped text-center" width="100%">
<thead>
<tr>
<th>No</th>
<th>Alternatif</th>
<th>Daya Tahan</th>
<th>Umur</th>
<th>Harga</th>
<th>Layanan Purna Jual</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td class="text-left">Guru 1</td>
<td>0.16</td>
<td>0.3</td>
<td>0.28</td>
<td>0.15</td>
</tr>
</tbody>
</table>
</div>
<h4 class="text-gray-900 mt-4">6. Menghitung Total Nilai Prefrensi</h4>
<div class="table-responsive">
<table class="table table-striped text-center" width="100%">
<thead>
<tr>
<th>No</th>
<th>Nama Alternatif</th>
<th>Daya Tahan</th>
<th>Umur</th>
<th>Harga</th>
<th>Layanan Purna Jual</th>
<th>Total Nilai Prefrensi</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td class="text-left">Guru 1</td>
<td>0.16</td>
<td>0.3</td>
<td>0.28</td>
<td>0.15</td>
<td class="bg-secondary text-white">0.89</td>
</tr>
</tbody>
</table>
</div>
<h4 class="text-gray-900 mt-4">7. Perankingan</h4>
<div class="table-responsive">
<table class="table table-striped text-center" width="100%">
<thead>
<tr>
<th>No</th>
<th>Nama Alternatif</th>
<th>Nilai Prefrensi</th>
<th>Ranking</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td class="text-left">Guru 1</td>
<td>0.89</td>
<td class="bg-secondary text-white">1</td>
</tr>
@foreach ($rank as $key => $value)
<tr>
<td width="20%">{{ $key }}</td>
@foreach ($value as $key_1 => $value_1)
<td class="text-center">{{ number_format($value_1 ,2) }}</td>
@endforeach
<td>{{ $loop->iteration }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>