/// <summary> /// открыть коэфициенты /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button2_Click(object sender, EventArgs e) { richTextBox1.Text = ""; richTextBox2.Text = ""; if (listPeremens == null || listPeremens.Count == 0) { MessageBox.Show("Загрузите файл с переменными", "", MessageBoxButtons.OK, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1); return; } GeneratorКомбинаций genkombi = new GeneratorКомбинаций(listPeremens); List<Kombinacia> allstkombo = genkombi.runGen(); Fileload file = new Fileload(); List<List<ValueFile>> learn = file.getDataFile(); if (learn == null || learn.Count == 0) return; Proiz classProiz = new Proiz(); double[][] proiz; double[] ylean; classProiz.getProiz(listPeremens, allstkombo, learn, out proiz, out ylean); if (provPrizAndYlean(proiz, ylean, learn.Count, allstkombo.Count + 1) == false) return; koef = new Fileload().getLoadKoef(); if (koef == null || koef.Length == 0 && koef.Length == allstkombo.Count + 1) return; button1Prov.PerformClick(); }
private void button2Gradient_Click(object sender, EventArgs e) { richTextBox1.Text = ""; richTextBox2.Text = ""; if (listPeremens == null || listPeremens.Count == 0) { MessageBox.Show("Загрузите файл с переменными", "", MessageBoxButtons.OK, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1); return; } GeneratorКомбинаций genkombi = new GeneratorКомбинаций(listPeremens); List<Kombinacia> allstkombo = genkombi.runGen(); Fileload file = new Fileload(); List<List<ValueFile>> learn = file.getDataFile(); if (learn == null || learn.Count == 0) return; DialogQ q = new DialogQ(); if (learn.Count > 10000) { DialogResult r = MessageBox.Show("Файл обучения содержит " + learn.Count + " строк. Умешить для ускорения работы алгоритма градиентного спуска", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (r == DialogResult.Yes) { retq: q.Text = "Количество элементов файла обучения"; q.setText("Введите количество элементов, которые необходимо забрать из файла"); q.ShowDialog(); int len = q.getValueInt(); if (len > learn.Count || len == -1) goto retq; else if (len != -2) learn = learn.GetRange(0, len); } } Proiz classProiz = new Proiz(); double[][] proiz; double[] ylean; classProiz.getProiz(listPeremens, allstkombo, learn, out proiz, out ylean); if (provPrizAndYlean(proiz, ylean, learn.Count, allstkombo.Count + 1) == false) return; double eps = 1.0, la = 0.0001; eps = Properties.Settings.Default.eps; la = Properties.Settings.Default.lamda; textBox1.Text = "start time: " + DateTime.Now; toolStripLabel1.Text = "Работает градиентный спуск"; toolStripProgressBar1.Value = 1; learn.Clear(); new Thread(delegate() { GradientСпуск grad = new GradientСпуск(proiz, ylean, eps, la, allstkombo.Count + 1, this); koef = grad.runСпуск(); Invoke(new MethodInvoker(() => { toolStripLabel1.Text = "Градиентный спуск закончил работу"; foreach (var i in koef) richTextBox2.Text += i + "\t"; richTextBox1.Text = "end time: " + DateTime.Now + "\n" + richTextBox1.Text; })); resUr = allstkombo; }).Start(); }