FIX BUAT SIDANG
This commit is contained in:
parent
7cfe92dcec
commit
df989d1551
|
@ -6,6 +6,7 @@
|
||||||
use App\Models\Klaster;
|
use App\Models\Klaster;
|
||||||
use App\Models\Curanmor;
|
use App\Models\Curanmor;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use App\Services\KMeansService;
|
||||||
|
|
||||||
class LandingController extends Controller
|
class LandingController extends Controller
|
||||||
{
|
{
|
||||||
|
@ -18,5 +19,23 @@ public function index()
|
||||||
$tanggalCuranmor = \Carbon\Carbon::parse($updateCuranmor->updated_at)->translatedFormat('d F Y');
|
$tanggalCuranmor = \Carbon\Carbon::parse($updateCuranmor->updated_at)->translatedFormat('d F Y');
|
||||||
return view('landing', compact('klasters', 'tanggalCuras', 'tanggalCuranmor'));
|
return view('landing', compact('klasters', 'tanggalCuras', 'tanggalCuranmor'));
|
||||||
}
|
}
|
||||||
|
public function runKmeans()
|
||||||
|
{
|
||||||
|
|
||||||
|
$serviceKMeans = new KMeansService();
|
||||||
|
$serviceKMeans->SSEElbowCuranmor();
|
||||||
|
$serviceKMeans->SSEElbowCuras();
|
||||||
|
|
||||||
|
$serviceKMeansCuras = new KMeansService();
|
||||||
|
$hasilKMeansCuras = $serviceKMeansCuras->hitungKMeansCuras();
|
||||||
|
file_put_contents(storage_path('app/public/hasil_kmeans_curas.json'), json_encode($hasilKMeansCuras));
|
||||||
|
|
||||||
|
$serviceKmeansCuranmor = new KMeansService();
|
||||||
|
$hasilKMeansCuranmor = $serviceKmeansCuranmor->hitungKMeansCuranmor();
|
||||||
|
file_put_contents(storage_path('app/public/hasil_kmeans_curanmor.json'), json_encode($hasilKMeansCuranmor));
|
||||||
|
|
||||||
|
return redirect('/dashboard/curanmor');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,6 @@ public function hitungKMeansCuras()
|
||||||
$k = Klaster::count('id');
|
$k = Klaster::count('id');
|
||||||
$maxIterasi = 100;
|
$maxIterasi = 100;
|
||||||
|
|
||||||
// Ambil centroid awal yang unik
|
|
||||||
$minValue = $data->min('jumlah_curas');
|
$minValue = $data->min('jumlah_curas');
|
||||||
$maxValue = $data->max('jumlah_curas');
|
$maxValue = $data->max('jumlah_curas');
|
||||||
|
|
||||||
|
@ -88,9 +87,6 @@ public function hitungKMeansCuras()
|
||||||
|
|
||||||
|
|
||||||
// Update ke database
|
// Update ke database
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
foreach ($data as $item) {
|
foreach ($data as $item) {
|
||||||
Curas::where('id', $item->id)->update([
|
Curas::where('id', $item->id)->update([
|
||||||
'klaster_id' => $centroidToKlaster[$item->temp_klaster],
|
'klaster_id' => $centroidToKlaster[$item->temp_klaster],
|
||||||
|
@ -232,9 +228,17 @@ public function SSEElbowCuranmor()
|
||||||
|
|
||||||
// Loop untuk setiap nilai k dari 2 hingga maxK
|
// Loop untuk setiap nilai k dari 2 hingga maxK
|
||||||
for ($k = 2; $k <= $maxK; $k++) {
|
for ($k = 2; $k <= $maxK; $k++) {
|
||||||
$centroids = collect(range(1, $k))->map(function () use ($min, $max) {
|
$usedValues = [];
|
||||||
return ['jumlah_curanmor' => mt_rand($min, $max)];
|
$centroids = collect();
|
||||||
});
|
|
||||||
|
while ($centroids->count() < $k) {
|
||||||
|
$randVal = mt_rand($min, $max);
|
||||||
|
if (!in_array($randVal, $usedValues)) {
|
||||||
|
$centroids->push(['jumlah_curanmor' => $randVal]);
|
||||||
|
$usedValues[] = $randVal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$prevAssignment = [];
|
$prevAssignment = [];
|
||||||
|
|
||||||
|
@ -301,7 +305,7 @@ public function SSEElbowCuranmor()
|
||||||
public function SSEElbowCuras()
|
public function SSEElbowCuras()
|
||||||
{
|
{
|
||||||
$data = Curas::select('id', 'jumlah_curas')->get();
|
$data = Curas::select('id', 'jumlah_curas')->get();
|
||||||
$maxK = 10;
|
$maxK = 4;
|
||||||
$maxIterasi = 100;
|
$maxIterasi = 100;
|
||||||
$elbowData = [];
|
$elbowData = [];
|
||||||
|
|
||||||
|
@ -310,9 +314,17 @@ public function SSEElbowCuras()
|
||||||
|
|
||||||
// Loop untuk setiap nilai k dari 2 hingga maxK
|
// Loop untuk setiap nilai k dari 2 hingga maxK
|
||||||
for ($k = 2; $k <= $maxK; $k++) {
|
for ($k = 2; $k <= $maxK; $k++) {
|
||||||
$centroids = collect(range(1, $k))->map(function () use ($min, $max) {
|
$usedValues = [];
|
||||||
return ['jumlah_curas' => mt_rand($min, $max)];
|
$centroids = collect();
|
||||||
});
|
|
||||||
|
while ($centroids->count() < $k) {
|
||||||
|
$randVal = mt_rand($min, $max);
|
||||||
|
if (!in_array($randVal, $usedValues)) {
|
||||||
|
$centroids->push(['jumlah_curas' => $randVal]);
|
||||||
|
$usedValues[] = $randVal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$prevAssignment = [];
|
$prevAssignment = [];
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
use App\Http\Controllers\TampilHitunganController;
|
use App\Http\Controllers\TampilHitunganController;
|
||||||
|
|
||||||
// Route Landing
|
// Route Landing
|
||||||
|
Route::get('/kmeans', [LandingController::class, 'runKmeans']);
|
||||||
Route::get('/', [LandingController::class, 'index']);
|
Route::get('/', [LandingController::class, 'index']);
|
||||||
Route::get('/blank', function () {
|
Route::get('/blank', function () {
|
||||||
return view('admin.dashboardBlank');
|
return view('admin.dashboardBlank');
|
||||||
|
|
Loading…
Reference in New Issue