Example #1
0
 /// <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();
 }
Example #2
0
 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();
 }