query('type', 'simple'); $learningRate = 0.1; $maxIterations = 100; switch ($perceptronType) { case 'simple': $learningRate = 0.015; $maxIterations = 100; break; } return inertia('PerceptronViewer', [ 'type' => $perceptronType, 'sessionId' => session()->getId(), 'datasets' => $this->getDatasets(), 'minError' => 0.01, 'learningRate' => $learningRate, 'maxIterations' => $maxIterations, ]); } private function getDatasets(): array { $dataSetsDirectory = public_path('data_sets'); $files = scandir($dataSetsDirectory); $datasets = []; foreach ($files as $file) { if (pathinfo($file, PATHINFO_EXTENSION) === 'csv') { $dataset = []; $dataset['label'] = str_replace('.csv', '', $file); $dataSetReader = new DataSetReader($dataSetsDirectory . '/' . $file); $dataset['data'] = $dataSetReader->lines; switch ($dataset['label']) { case '2.9': $dataset['defaultLearningRate'] = 0.015; break; } $datasets[] = $dataset; } } return $datasets; } private function getDataSetReader(string $dataSet): DataSetReader { $dataSetFileName = "data_sets/{$dataSet}.csv"; return new DataSetReader($dataSetFileName); } public function run(Request $request, ISynapticWeightsProvider $synapticWeightsProvider) { $perceptronType = $request->input('type', 'simple'); $minError = $request->input('min_error', 0.01); $weightInitMethod = $request->input('weight_init_method', 'random'); $dataSet = $request->input('dataset'); $learningRate = $request->input('learning_rate', 0.015); $maxIterations = $request->input('max_iterations', 100); $sessionId = $request->input('session_id', session()->getId()); $trainingId = $request->input('training_id'); if ($weightInitMethod === 'zeros') { $synapticWeightsProvider = new ZeroSynapticWeights(); } $dataSetReader = $this->getDataSetReader($dataSet); $iterationEventBuffer = new PerceptronIterationEventBuffer($sessionId, $trainingId); $networkTraining = match ($perceptronType) { 'simple' => new SimplePerceptronTraining($dataSetReader, $learningRate, $maxIterations, $synapticWeightsProvider, $iterationEventBuffer, $sessionId, $trainingId), default => null, }; event(new \App\Events\PerceptronInitialization($dataSetReader->lines, $networkTraining->activationFunction, $sessionId, $trainingId)); $networkTraining->start(); return response()->json([ 'message' => 'Training completed', ]); } }