private void btnCreate_Click(object sender, EventArgs e)
{
if (dgvLearningSource.DataSource == null)
{
MessageBox.Show("Please load some data first.");
return;
}
// Finishes and save any pending changes to the given data
dgvLearningSource.EndEdit();
// Creates a matrix from the source data table
sourceMatrix = (dgvLearningSource.DataSource as DataTable).ToMatrix(out sourceColumns);
// get learning rate
try { learningRate = double.Parse(learningRateBox.Text); }
catch { learningRate = 0.1; }
// get sigmoid's alpha value
try { sigmoidAlphaValue = Math.Max(0.001, Math.Min(50, double.Parse(alphaBox.Text))); }
catch { sigmoidAlphaValue = 2; }
// get neurons count in first layer
try { neuronsInFirstLayer = Math.Max(5, Math.Min(1000, int.Parse(neuronsBox.Text))); }
catch { neuronsInFirstLayer = 20; }
// iterations
try { iterations = Math.Max(0, int.Parse(iterationsBox.Text)); }
catch { iterations = 100; }
useRegularization = cbRegularization.Checked;
useNguyenWidrow = cbNguyenWidrow.Checked;
useSameWeights = cbSameWeights.Checked;
// update settings controls
UpdateSettings();
// disable all settings controls except "Stop" button
EnableControls(false);
// run worker thread
needToStop = false;
workerThread = new Thread(new ThreadStart(SearchSolution));
workerThread.Start();
}