Added Limited Epoch Event Buffer

for better frontend performance when using big  max epoch number
This commit is contained in:
2026-03-21 09:42:05 +01:00
parent f0e7be4476
commit 6abb417430
10 changed files with 149 additions and 22 deletions

View File

@@ -8,6 +8,7 @@ use App\Models\SimpleBinaryPerceptronTraining;
use App\Services\DataSetReader;
use App\Services\ISynapticWeightsProvider;
use App\Services\PerceptronIterationEventBuffer;
use App\Services\PerceptronLimitedEpochEventBuffer;
use App\Services\ZeroSynapticWeights;
use Illuminate\Http\Request;
@@ -91,8 +92,15 @@ class PerceptronController extends Controller
case 'simple':
$dataset['defaultLearningRate'] = 0.015;
break;
case 'gradientdescent':
$dataset['defaultLearningRate'] = 0.001;
$dataset['defaultMinError'] = 2.0;
break;
}
break;
case 'table_2_11':
$dataset['defaultMinError'] = 1.0;
break;
}
$datasets[] = $dataset;
}
@@ -121,9 +129,14 @@ class PerceptronController extends Controller
$synapticWeightsProvider = new ZeroSynapticWeights();
}
$iterationEventBuffer = new PerceptronIterationEventBuffer($sessionId, $trainingId);
if ($maxIterations > config('perceptron.limited_broadcast_iterations')) {
$iterationsInterval = (int)($maxIterations / config('perceptron.limited_broadcast_iterations'));
$iterationEventBuffer = new PerceptronLimitedEpochEventBuffer($sessionId, $trainingId, $iterationsInterval);
}
$dataSetReader = $this->getDataSetReader($dataSet);
$iterationEventBuffer = new PerceptronIterationEventBuffer($sessionId, $trainingId);
$networkTraining = match ($perceptronType) {
'simple' => new SimpleBinaryPerceptronTraining($dataSetReader, $learningRate, $maxIterations, $synapticWeightsProvider, $iterationEventBuffer, $sessionId, $trainingId),