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