Beispiel #1
0
        private List <OneRow> GetRandomData(List <OneRow> samples, Dictionary <int, string> parameterNames,
                                            int defectParameterID)
        {
            List <OneRow> trainData         = new List <OneRow>();
            int           countOfRandomData = GetCount(samples.Count);
            List <int>    trainItemID       = new List <int>();
            Random        rand = new Random((int)DateTime.Now.Ticks);

            for (int i = 0; i < countOfRandomData;)
            {
                int j = rand.Next(0, samples.Count);
                while (!trainItemID.Contains(j))
                {
                    trainItemID.Add(j);
                    i++;
                }
            }
            trainItemID.Sort();
            foreach (var row in trainItemID)
            {
                OneRow findRowWithParameters = new OneRow();
                findRowWithParameters.Date = samples[row].Date;
                findRowWithParameters.Output[defectParameterID]     = samples[row].Output[defectParameterID];
                findRowWithParameters.OutputBool[defectParameterID] = samples[row].OutputBool[defectParameterID];
                foreach (KeyValuePair <int, string> parameterName in parameterNames)
                {
                    findRowWithParameters.Input[parameterName.Key] = samples[row].Input[parameterName.Key];
                }
                trainData.Add(findRowWithParameters);
            }
            return(trainData);
        }
 public MnemonicScheme()
 {
     //Выбор языка меню
     if (!string.IsNullOrEmpty(Properties.Settings.Default.Languages))
     {
         System.Threading.Thread.CurrentThread.CurrentUICulture =
             System.Globalization.CultureInfo.GetCultureInfo(Properties.Settings.Default.Languages);
         System.Threading.Thread.CurrentThread.CurrentCulture =
             System.Globalization.CultureInfo.GetCultureInfo(Properties.Settings.Default.Languages);
     }
     InitializeComponent();
     //TODO: Если данных нету в файле будет ошибка. Нужно сделать try/catch. Когда будет не лень.
     if (TrainData.Train.Count != 0)
     {
         int parameterID = new int();
         //Считываем первый элемент
         OneRow sample = TrainData.Train.First();                 // Обращение к первому элементу коллекции (В будущем по времени будем искать -- онлайн)
         TextBoxFeeling(sample, parameterID);                     // заполнение значений в текстбоксах текущими значениями технологических параметров
         parameterID = FindIDInDictionary(OPC_IA_shnek_K02.Name); // Поиск параметра в локальной базе данных
         //
         OPC_IA_shnek_K02.Text  = Convert.ToString(sample.Input[parameterID]) + ConvertName(OPC_IA_shnek_K02.Name);
         parameterID            = FindIDInDictionary(OPC_I_voronka_K02.Name);
         OPC_I_voronka_K02.Text = Convert.ToString(sample.Input[parameterID]) + ConvertName(OPC_I_voronka_K02.Name);
         parameterID            = FindIDInDictionary(OPC_V_shnek_K02.Name);
         OPC_V_shnek_K02.Text   = Convert.ToString(sample.Input[parameterID]) + ConvertName(OPC_V_shnek_K02.Name);
         parameterID            = FindIDInDictionary(OPC_V_voronka_K02.Name);
         OPC_V_voronka_K02.Text = Convert.ToString(sample.Input[parameterID]) + ConvertName(OPC_V_voronka_K02.Name);
         CalculateCP();
     }
     else
     {
         MessageBox.Show(Localization.MyStrings.DataNotGiven);
     }
 }
Beispiel #3
0
        public ManualUpdateSTK(string[] STKData, int Year)
        {
            List <STKDB> NewSTKManual = new List <STKDB>();

            foreach (string OneRow in STKData)
            {
                string[] ToAdd = OneRow.Split('\t');

                if (ToAdd.Length != 1 && ToAdd.Length == 4)
                {
                    var NewRow = new STKDB
                    {
                        ANC         = ToAdd[0],
                        Description = ToAdd[1],
                        IDCO        = ToAdd[2],
                        Year        = Year,
                        Month       = 0,
                        Day         = 0,
                        Value       = Convert.ToDouble(ToAdd[3]),
                    };
                    NewSTKManual.Add(NewRow);
                }
            }

            if (NewSTKManual != null)
            {
                STKController.AddManualUpdate(NewSTKManual);
            }
        }
Beispiel #4
0
 public ActionResult DoBet(OneRow row)
 {
     if (row != null)
     {
         ViewBag.Title = "Ставка";
         return(View(row));
     }
     else
     {
         return(HttpNotFound());
     }
 }
Beispiel #5
0
 private void GetPoints(ref decimal pointX, OneRow data, ref decimal pointY)
 {
     foreach (var item in ListDelete.Items)
     {
         int parameterID = XMLWork.FindIDWithName(item.ToString(), Properties.Settings.Default.Languages);
         pointX = pointX * data.Input[parameterID]; //234 232
     }
     foreach (var item in ListDeleteError.Items)
     {
         int parameterID = XMLWork.FindIDWithName(item.ToString(), Properties.Settings.Default.Languages);
         pointY = pointY * data.Input[parameterID]; //234 232
     }
 }
Beispiel #6
0
 public void NewTree(TreeNode root, OneRow item, Dictionary <string, Tuple <decimal, decimal> > l)
 {
     if (root.attribute.values != null)
     {
         for (int i = 0; i < root.attribute.values.Count; i++)
         {
             if ((root.attribute.values[i].Item1 <= item.Input[root.attribute.AttributeName]) && ((root.attribute.values[i].Item2) >= item.Input[root.attribute.AttributeName]))
             {
                 var borderValues = new Tuple <decimal, decimal>(root.attribute.values[i].Item1, root.attribute.values[i].Item2);
                 l.Add(root.attributeName, borderValues);
                 TreeNode childNode = root.getChildByBranchName(root.attribute.values[i]);
                 NewTree(childNode, item, l);
             }
         }
     }
 }
Beispiel #7
0
 public void Tree(TreeNode root, OneRow item, ref int positive)
 {
     if (root.attribute.values != null)
     {
         for (int i = 0; i < root.attribute.values.Count; i++)
         {
             if ((root.attribute.values[i].Item1 <= item.Input[root.attribute.AttributeName]) && ((root.attribute.values[i].Item2) >= item.Input[root.attribute.AttributeName]))
             {
                 TreeNode childNode = root.getChildByBranchName(root.attribute.values[i]);
                 Tree(childNode, item, ref positive);
             }
         }
     }
     else if (root.attribute.values == null)
     {
         if ((bool)root.attribute.LabelName == item.OutputBool[0])
         {
             positive = positive + 1;
         }
     }
 }
Beispiel #8
0
 public void TreeWithAddParameter(TreeNode root, OneRow item, List <string> parameters)
 {
     try
     {
         if (root.attribute.values != null)
         {
             for (int i = 0; i < root.attribute.values.Count; i++)
             {
                 if ((root.attribute.values[i].Item1 <= item.Input[root.attribute.AttributeName]) &&
                     ((root.attribute.values[i].Item2) >= item.Input[root.attribute.AttributeName]))
                 {
                     parameters.Add(root.attributeName);
                     TreeNode childNode = root.getChildByBranchName(root.attribute.values[i]);
                     TreeWithAddParameter(childNode, item, parameters);
                 }
             }
         }
     }
     catch
     {
         // ignored
     }
 }
Beispiel #9
0
        private void calculate_Click(object sender, EventArgs e)
        {
            if (gridControl1.RowCount == 0)
            {
                MessageBox.Show("Нету значений");
            }
            else
            {
                OneRow row = new OneRow();
                if (TrainData.Train.Count != 0)
                {
                    foreach (OneRow oneRow in TrainData.Train)
                    {
                        row = oneRow;
                        break;
                    }
                    //TODO: Поставить нормальное определение времени
                    ProductionTime time        = new ProductionTime(row.Input[60], row.Input[73], row.Input[87]);
                    decimal        timeProduct = 0.0M;
                    for (int i = gridControl1.RowCount - 1; i >= 0; i--)
                    {
                        if (i > 23)
                        {
                            //decimal s = Convert.ToDecimal(gridView1.GetRowCellValue(i, gridView1.Columns[1]));
                            decimal s = Convert.ToDecimal((gridControl1.DataSource as DataTable).Rows[i].ItemArray[1]);
                            timeProduct += s / time.TemperingVelocity;
                            if (i == 24)
                            {
                                decimal convertedTime = timeProduct * 60;
                                time.SetTempTime(convertedTime);
                            }
                        }
                        else if (i > 3 && i <= 23)
                        {
                            //decimal s = Convert.ToDecimal(gridView1.GetRowCellValue(i, gridView1.Columns[1]));
                            decimal s = Convert.ToDecimal((gridControl1.DataSource as DataTable).Rows[i].ItemArray[1]);
                            timeProduct += s / time.TakeOffVelocity;
                            if (i == 4)
                            {
                                decimal convertedTime = timeProduct * 60;
                                time.SetTakeOffTime(convertedTime);
                            }
                        }
                        else
                        {
                            //decimal s = Convert.ToDecimal(gridView1.GetRowCellValue(i, gridView1.Columns[1]));
                            decimal s = Convert.ToDecimal((gridControl1.DataSource as DataTable).Rows[i].ItemArray[1]);
                            timeProduct += s / time.CalenderVelocity;
                            if (i == 0)
                            {
                                decimal convertedTime = timeProduct * 60;
                                time.SetCalenderTime(convertedTime);
                                time.SetExtruderTime(ProductionTime.CalenderTime);
                            }
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Все очень плохо! Выборка не собрана");
                }
            }

            //gridView1.GetRowCellValue(0, gridView1.Columns[1]);
        }
Beispiel #10
0
 private void PrintNode_Color(TreeNode test_tree, List <IndexVertex> vertex, int index, string groupParamName, OneRow test_item, int deep)
 {
     if (test_tree.attribute.values != null)
     {
         for (int i = 0; i < test_tree.attribute.values.Count; i++)
         {
             if (test_tree.attribute.AttributeName != -1)
             {
                 newValue = test_item.Input[test_tree.attribute.AttributeName];
             }
             if ((newValue >= test_tree.attribute.values[i].Item1) && (newValue <= test_tree.attribute.values[i].Item2) && (deep == current_deep))
             {
                 TreeNode childNode = test_tree.getChildByBranchName(test_tree.attribute.values[i]);
                 if (childNode.attributeName != groupParamName)
                 {
                     vertex.Add(new IndexVertex(XMLWork.FindNameWithScada(test_tree.attributeName, language) + "\n" + childNode.Positive + "|" + childNode.Negative, index, test_tree.attribute.values[i], Brushes.Yellow));
                     int number = vertex.Count;
                     current_deep++;
                     PrintNode_Color(childNode, vertex, number - 1, groupParamName, test_item, deep + 1);
                     current_deep--;
                 }
             }
             else
             {
                 TreeNode childNode = test_tree.getChildByBranchName(test_tree.attribute.values[i]);
                 if (childNode.attributeName != groupParamName)
                 {
                     vertex.Add(new IndexVertex(XMLWork.FindNameWithScada(test_tree.attributeName, language) + "\n" + childNode.Positive + "|" + childNode.Negative, index, test_tree.attribute.values[i], Brushes.White));
                     int number = vertex.Count;
                     current_deep++;
                     PrintNode_Color(childNode, vertex, number - 1, groupParamName, test_item, deep);
                     current_deep--;
                 }
             }
         }
     }
 }
Beispiel #11
0
        public GraphControl(bool v_neuro, int caseNumb, object test_value, string groupParam, object test_item, string language)
        {
            this.language = language;
            TreeNode test_tree = (TreeNode)test_value;

            Graph = new PocGraph(true);
            List <IndexVertex> currentVerices = new List <IndexVertex>();

            switch (caseNumb)
            {
            case 1:
            {
                #region Full_tree+group
                currentVerices.Add(new IndexVertex(XMLWork.FindNameWithScada(test_tree.attributeName, language), -1, null, Brushes.Yellow));
                // PrintNode(test_tree, currentVerices, 0);

                PrintNode_group(test_tree, currentVerices, 0, groupParam);
                foreach (IndexVertex vertex in currentVerices)
                {
                    Graph.AddVertex(vertex.vertex);
                }
                for (int i = 1; i < currentVerices.Count; i++)
                {
                    AddNewGraphEdge(currentVerices[currentVerices[i].index].vertex, currentVerices[i].vertex, currentVerices[i].d1);
                }

                break;
                #endregion
            }

            case 2:
            {
                #region Short+group
                currentVerices.Add(new IndexVertex(XMLWork.FindNameWithScada(test_tree.attributeName, language) + "\n" + test_tree.Positive + "|" + test_tree.Negative, -1, null, Brushes.Brown));
                Shortest_TreeGroup(test_tree, currentVerices, 0, groupParam);


                foreach (IndexVertex vertex in currentVerices)
                {
                    Graph.AddVertex(vertex.vertex);
                }
                for (int i = 1; i < currentVerices.Count; i++)
                {
                    AddNewGraphEdge(currentVerices[currentVerices[i].index].vertex, currentVerices[i].vertex, currentVerices[i].d1);
                }
                break;
                #endregion
            }

            case 3:
            {
                #region podsvetka
                if (Graph != null)
                {
                    Graph.Clear();
                }
                currentVerices.Add(new IndexVertex(XMLWork.FindNameWithScada(test_tree.attributeName, language), -1, null, Brushes.Yellow));

                // PrintNode(test_tree, currentVerices, 0);

                OneRow test_items = (OneRow)test_item;

                PrintNode_Color(test_tree, currentVerices, 0, groupParam, test_items, 0);

                foreach (IndexVertex vertex in currentVerices)
                {
                    Graph.AddVertex(vertex.vertex);
                }

                for (int i = 1; i < currentVerices.Count; i++)
                {
                    AddNewGraphEdge(currentVerices[currentVerices[i].index].vertex, currentVerices[i].vertex, currentVerices[i].d1);
                }
                break;
                #endregion
            }

            case 4:
            {
                if (Graph != null)
                {
                    Graph.Clear();
                }
                Tuple <decimal, decimal> d1 = new Tuple <decimal, decimal>(1.0m, 1.0m);
                currentVerices.Add(new IndexVertex("Настройки OCS неверны?", 0, d1, Brushes.White));
                currentVerices.Add(new IndexVertex("Слишком высокая температура смеси?", 0, d1, Brushes.White));
                currentVerices.Add(new IndexVertex("Неправильная форма расплава?", 1, d1, Brushes.White));
                currentVerices.Add(new IndexVertex("Выглядит блестяще-черными/красно коричневыми?", 2, d1, Brushes.White));
                currentVerices.Add(new IndexVertex("Точки выглядят матово-черными?", 3, d1, Brushes.White));
                currentVerices.Add(new IndexVertex("Черные точки по краям?", 4, d1, Brushes.White));
                currentVerices.Add(new IndexVertex("Сделать запись QRQC", 5, d1, Brushes.Green));
                currentVerices.Add(new IndexVertex("Сообщить мастеру", 6, d1, Brushes.Orange));
                currentVerices.Add(new IndexVertex("Настроить OCS", 0, d1, Brushes.Green));
                currentVerices.Add(new IndexVertex("Снизить температуру смеси в горячем смесителе или время пребывания в горячем смесителе", 1, d1, Brushes.Green));
                currentVerices.Add(new IndexVertex("Расплав должен вытекать наружу, подогнать контризгиб. Следить за профилем.", 2, d1, Brushes.Green));
                currentVerices.Add(new IndexVertex("Снижать скорость пока пленка не станет чистой", 3, d1, Brushes.Green));
                currentVerices.Add(new IndexVertex("Увеличить стабилизатор не больше допустимого (1.1%)", 11, d1, Brushes.Green));
                currentVerices.Add(new IndexVertex("Остановить линию", 4, d1, Brushes.Red));
                currentVerices.Add(new IndexVertex("Почистить нож, головку и корпус кнеттера", 13, d1, Brushes.Green));
                currentVerices.Add(new IndexVertex("Остановить линию", 5, d1, Brushes.Red));
                currentVerices.Add(new IndexVertex("Почистить щетки запорные кольца", 15, d1, Brushes.Green));
                foreach (IndexVertex vertex in currentVerices)
                {
                    Graph.AddVertex(vertex.vertex);
                }
                for (int i = 1; i < currentVerices.Count; i++)
                {
                    AddNewGraphEdge(currentVerices[currentVerices[i].index].vertex, currentVerices[i].vertex, currentVerices[i].d1);
                }
                AddNewGraphEdge(currentVerices[8].vertex, currentVerices[6].vertex, d1);
                AddNewGraphEdge(currentVerices[9].vertex, currentVerices[6].vertex, d1);
                AddNewGraphEdge(currentVerices[10].vertex, currentVerices[6].vertex, d1);
                AddNewGraphEdge(currentVerices[12].vertex, currentVerices[6].vertex, d1);
                AddNewGraphEdge(currentVerices[14].vertex, currentVerices[6].vertex, d1);
                AddNewGraphEdge(currentVerices[16].vertex, currentVerices[6].vertex, d1);
                break;
            }
            }
        }
Beispiel #12
0
        //Сбор данных
        private void dataAcq_Click(object sender, EventArgs e)
        {
            if (ListDelete.Items.Count != 0)
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();
                TrainData.Train.Clear();
                measurementses.Clear();
                Dictionary <string, int> newElements = new Dictionary <string, int>();
                if (ListDelete.Items.Count != 0)
                {
                    //Сохранения имен параметров и их ID в справочник newElements
                    foreach (var item in ListDelete.Items)
                    {
                        string t = item.ToString();
                        int    j = elements.Where(s => s.Key == t).Single().Value;
                        newElements.Add(t, j);
                        //Работа с локальной базой данных(сохранения данных туда)
                        XMLWork.AddRow(j, t);
                    }
                }
                var  stream  = File.Open(path.Text, FileMode.Open, FileAccess.Read);
                var  eReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
                bool check   = true;
                try
                {
                    _counter = 0;
                    while (eReader.Read()) // Одну строку пропускаем с общей информацией
                    {
                        ++_counter;
                        break;
                    }
                    DateTime lastTime = new DateTime();
                    while (eReader.Read()) // Считывание информации с EXCEL файла
                    {
                        var      date = eReader.GetDateTime(0);
                        var      time = eReader.GetDateTime(1);
                        TimeSpan ts   = new TimeSpan(time.Hour, time.Minute, time.Second);
                        date = date + ts;
                        if (_counter == 1)
                        {
                            lastTime = date;
                        }
                        else
                        {
                            if (lastTime == date)
                            {
                                continue;
                            }
                            lastTime = date;
                        }
                        Measurements measurements;
                        foreach (var value in newElements)
                        {
                            Decimal parValue;
                            var     val = Convert.ToString(eReader.GetValue(value.Value));
                            val = val.Trim();
                            if (val == "")
                            {
                                parValue = -1;
                            }
                            else
                            {
                                var extA = Convert.ToString(eReader.GetValue(value.Value)).Replace(",", ".");
                                try
                                {
                                    parValue = Decimal.Parse(extA, NumberStyles.Float, _formatProvider);
                                }
                                catch (Exception exe)
                                {
                                    throw new Exception("Invalid value format in row " + _counter, exe);
                                }
                                measurements = new Measurements(parValue, date, value.Key, value.Value); // созеания измерения

                                measurementses.Add(measurements);                                        // и добавление его в коллекцию
                            }
                        }

                        ++_counter;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
                finally
                {
                    eReader.Close();
                }
                try
                {
                    List <OneRow> dataSet         = new List <OneRow>();
                    var           uniqueTimestamp = measurementses.OrderBy(o => o.TimeStamp).Select(o => o.TimeStamp).Distinct();
                    OneRow        lastRow         = new OneRow();

                    // Отделение технологических параметров от показателей качество.
                    //TODO: сделать отдельную колонку в бд, в которой хранить краткую информацию о расположении датчика относительно производственной линии
                    foreach (DateTime dateTime in uniqueTimestamp)
                    {
                        var moveData =
                            measurementses.Where(
                                o => ((dateTime == o.TimeStamp) && (!o.ParameterName.StartsWith("Def"))))
                            .ToDictionary(o => o.ParID, s => s.Value);     // Добавление технологических параметров в дикшионари
                        //температуры для усадки
                        var temperatureData = measurementses.Where(o => ((dateTime == o.TimeStamp) && (o.ParameterName.Contains("XT"))))
                                              .ToDictionary(o => o.ParameterName, s => s.Value);
                        //скорости для усадки
                        var velocityData = measurementses.Where(o => ((dateTime == o.TimeStamp) && (o.ParameterName.Contains("XV"))))
                                           .ToDictionary(o => o.ParameterName, s => s.Value);
                        OneRow row = new OneRow();
                        row.Input        = moveData;
                        row.Temperatures = temperatureData;
                        row.Velocities   = velocityData;
                        if (row.Input.Count >= 1)
                        {
                            row.Date = dateTime;
                            var dataOutput =
                                measurementses.Where(
                                    o => ((dateTime == o.TimeStamp) && (o.ParameterName.StartsWith("Def"))))
                                .ToDictionary(o => o.ParID, s => s.Value);
                            row.Output = dataOutput;
                            dataSet.Add(row); // Добавление показателя качества в ОЗУ
                        }
                        lastRow = row;
                    }

                    var datas =
                        measurementses.Where(o => dataSet.First().Date == o.TimeStamp)
                        .ToDictionary(o => o.ParID, s => s.ParameterName);
                    TrainData.GetData();
                    foreach (KeyValuePair <int, string> keyValuePair in datas)
                    {
                        if (!TrainData.Pairs.ContainsKey(keyValuePair.Value))
                        {
                            TrainData.Pairs.Add(keyValuePair.Value, keyValuePair.Value);
                        }
                    }
                    TrainData.nameParameter = datas;
                    TrainData.Train         = dataSet; // Присвоение статической переменной данных
                }
                catch (InvalidOperationException iex)
                {
                    var parameters = measurementses.Where(o => !o.ParameterName.StartsWith("Def")).ToArray();
                    if (parameters.Count() == 0)
                    {
                        MessageBox.Show(
                            Localization.MyStrings.QualityParameters);
                    }
                    else
                    {
                        MessageBox.Show(iex.ToString());
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }

                sw.Stop();
                var parametersInput = measurementses.Where(o => o.ParameterName.StartsWith("Def")).ToArray();
                if (parametersInput.Count() == 0)
                {
                    MessageBox.Show(
                        Localization.MyStrings.RegimeParameters, Localization.MyStrings.Warning);
                }
                MessageBox.Show(Localization.MyStrings.TimeParameters + sw.Elapsed);
                string pathToShrinkage = System.AppDomain.CurrentDomain.BaseDirectory + "\\Shrinkage.xml";
                if (File.Exists(pathToShrinkage))
                {
                    File.Delete(pathToShrinkage);
                }
            }
            else
            {
                MessageBox.Show(Localization.MyStrings.SelectedParameters);
            }
        }
Beispiel #13
0
        public void LoadFromDB()
        {
            values          = null;
            normalise       = null;
            weights         = null;
            normaliseRandom = null;
            listParameter.Clear();

            values                 = new decimal[ListDelete.Items.Count, TrainData.Train.Count];
            normalise              = new decimal[ListDelete.Items.Count, TrainData.Train.Count];
            normaliseRandom        = new decimal[ListDelete.Items.Count, TrainData.Train.Count];
            weights                = new decimal[ListDelete.Items.Count, Convert.ToInt32(numberOfNeurons.Text)];
            dimensionOfVector.Text = Convert.ToString(ListDelete.Items.Count);

            int count = 0;

            foreach (var item in ListDelete.Items)
            {
                int     parameterID = XMLWork.FindIDWithName(item.ToString(), Properties.Settings.Default.Languages);
                OneRow  row         = TrainData.Train.First();
                decimal value       = 0.0M;
                if (row.Input.ContainsKey(parameterID))
                {
                    value = row.Input[parameterID];
                }
                else if (row.Output.ContainsKey(parameterID))
                {
                    value = row.Output[parameterID];
                }
                listParameter.Add(count, new ParameterCharacteristics(item.ToString(), value, value, value, 0.0M, 0.0M));
                count++;
            }
            if (TrainData.Train.Count > 0)
            {
                int j = 0;
                //Вычисление среднего значения каждого атрибута выборки + сумма, минимум и максимум также вычисляются
                foreach (OneRow row in TrainData.Train)
                {
                    for (int i = 0; i < listParameter.Count; i++)
                    {
                        try
                        {
                            int parameterID = XMLWork.FindIDWithName(listParameter[i].ParameterName, Properties.Settings.Default.Languages);
                            if (row.Input.ContainsKey(parameterID))
                            {
                                values[i, j] = row.Input[parameterID];
                            }
                            else if (row.Output.ContainsKey(parameterID))
                            {
                                values[i, j] = row.Output[parameterID];
                            }
                            if (values[i, j] < listParameter[i].Min)
                            {
                                listParameter[i].Min = values[i, j];
                            }
                            if (values[i, j] > listParameter[i].Max)
                            {
                                listParameter[i].Max = values[i, j];
                            }
                            listParameter[i].Sum += values[i, j];
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.ToString());
                        }
                    }
                    j++;
                }
                //Поиск среднего значения по выборке
                for (int i = 0; i < listParameter.Count; i++)
                {
                    listParameter[i].Mean = listParameter[i].Sum / Convert.ToDecimal(TrainData.Train.Count);
                    j = 0;
                    decimal differenceSquares = 0.0M;
                    foreach (OneRow row in TrainData.Train)
                    {
                        differenceSquares += ((values[i, j] - listParameter[i].Mean) * (values[i, j] - listParameter[i].Mean));
                        j++;
                    }
                    listParameter[i].Deviation = differenceSquares / (decimal)(TrainData.Train.Count - 1);
                }



                //Нормализация данных
                for (int i = 0; i < listParameter.Count; i++)
                {
                    for (int k = 0; k < TrainData.Train.Count; k++)
                    {
                        if (listParameter[i].Max - listParameter[i].Min != 0)
                        {
                            normalise[i, k] = Normalisation.NormaliseWithDeviation(values[i, k], listParameter[i].Mean, listParameter[i].Deviation);
                        }
                        else
                        {
                            normalise[i, k] = 0.0M;
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show(Localization.MyStrings.Absent, Localization.MyStrings.Warning);
            }


            //
            int step = TrainData.Train.Count / Convert.ToInt32(numberOfNeurons.Text);

            //Здесь задаются начальные значения весов

            /*
             * for (int j = 0, n = 0; j < TrainData.Train.Count; j = j + step, n++)
             *  {
             *      if (n < Convert.ToInt32(numberOfNeurons.Text))
             *      {
             *          for (int i = 0; i < listParameter.Count; i++)
             *              weights[i,n] = normalise[i,j];
             *      }
             *  }*/
            Random rand = new Random((int)(DateTime.Now.Ticks));

            for (int j = 0; j < Convert.ToInt32(numberOfNeurons.Text); j++)
            {
                for (int k = 0; k < listParameter.Count; k++)
                {
                    weights[k, j] = Randomise.RandomDecimal(rand);
                }
            }
        }
Beispiel #14
0
        public static bool Load(string[] NewTable)
        {
            var       PNCForm  = MainProgram.Self.actionView.PNCListView;
            DataTable PNCTable = PNCForm.GetDataTable();

            if (PNCTable.Columns.Count <= 1)
            {
                PNCTable.Columns.Clear();
                PNCTable.Columns.Add("PNC");
                PNCTable.Columns.Add("OLD ANC");
                PNCTable.Columns.Add("OLD Q");
                PNCTable.Columns.Add("NEW ANC");
                PNCTable.Columns.Add("NEW Q");
                PNCTable.Columns.Add("OLD STK");
                PNCTable.Columns.Add("NEW STK");
                PNCTable.Columns.Add("Delta");
            }

            if (PNCTable.Rows.Count > 0)
            {
                DialogResult Result = MessageBox.Show("Do you want replease exist PNC List?", "Warning!", MessageBoxButtons.YesNo);
                if (Result == DialogResult.Yes)
                {
                    PNCTable.Rows.Clear();
                }
                else
                {
                    DialogResult Result2 = MessageBox.Show("Do you want Add to exist PNC List?", "Warning!", MessageBoxButtons.YesNo);
                    if (Result2 == DialogResult.No)
                    {
                        return(false);
                    }
                }
            }

            //Sprawdzenie czy dane są prawidłowo przygotowane przez użytkownika
            if (!ProtectionData(NewTable[0]))
            {
                return(false);
            }


            foreach (string OneRow in NewTable)
            {
                string[] SpecificRow = OneRow.Split(';');

                if (SpecificRow.Length != 1)
                {
                    DataRow NewRow = PNCTable.NewRow();
                    NewRow["PNC"] = SpecificRow[0];

                    if (SpecificRow[1] != string.Empty)
                    {
                        NewRow["OLD ANC"] = "ECCC(" + SpecificRow[1] + ")";
                    }

                    PNCTable.Rows.Add(NewRow);

                    int Limit = (SpecificRow.Length - 4) / 2;

                    for (int counter = 2; counter <= Limit; counter++)
                    {
                        NewRow            = PNCTable.NewRow();
                        NewRow["OLD ANC"] = SpecificRow[counter];
                        NewRow["OLD Q"]   = SpecificRow[counter + 1];
                        NewRow["NEW ANC"] = SpecificRow[counter + Limit + 1];
                        NewRow["NEW Q"]   = SpecificRow[counter + Limit + 2];
                        if (!(NewRow["OLD ANC"].ToString() == string.Empty && NewRow["NEW ANC"].ToString() == string.Empty))
                        {
                            PNCTable.Rows.Add(NewRow);
                        }
                        counter++;
                    }
                }
            }

            DataTable PNCTableDuplicate = PNCTable.Clone();
            bool      CanAdd            = false;

            foreach (DataRow Row in PNCTable.Rows)
            {
                if (Row["PNC"].ToString() != string.Empty)
                {
                    if (!PNCTableDuplicate.AsEnumerable().Any(u => u.Field <string>("PNC") == Row["PNC"].ToString()))
                    //if (!PNCTableDuplicate.AsEnumerable().Any(u => u.ToString() == Row[0].ToString()))
                    {
                        PNCTableDuplicate.Rows.Add(Row.ItemArray);
                        CanAdd = true;
                    }
                    else
                    {
                        CanAdd = false;
                    }
                }
                else
                {
                    if (CanAdd)
                    {
                        PNCTableDuplicate.Rows.Add(Row.ItemArray);
                    }
                }
            }

            if (!PNCSpecSTK.Find(PNCTableDuplicate))
            {
                return(false);
            }

            return(true);
        }
Beispiel #15
0
        private void Pb_AddData_Close_Click(object sender, EventArgs e)
        {
            //Action action = new Action();
            Cursor.Current = Cursors.WaitCursor;
            string[] row            = tb_AddData_Data.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
            int      DuplicateCount = 0;
            bool     IFCalc         = false;

            if (row[0] != "")
            {
                if (Jak == "PNC")
                {
                    DataGridView dg_PNC = (DataGridView)MainProgram.Self.TabControl.Controls.Find("dg_PNC", true).First();

                    if (dg_PNC.Rows.Count > 1)
                    {
                        DialogResult result = MessageBox.Show("Do you want replace all PNC in this Action ?", "Warning!", MessageBoxButtons.YesNo);
                        if (result == DialogResult.Yes)
                        {
                            dg_PNC.Rows.Clear();
                            dg_PNC.Columns.Clear();
                            dg_PNC.Columns.Add("PNC", "PNC");
                            dg_PNC.Columns["PNC"].Width    = 63;
                            dg_PNC.Columns["PNC"].SortMode = DataGridViewColumnSortMode.NotSortable;
                            IFCalc = true;
                        }
                        else if (result == DialogResult.No)
                        {
                            DialogResult result2 = MessageBox.Show("Do you want add this PNC to exisitng PNC for this Action ?", "Warning!", MessageBoxButtons.YesNo);
                            if (result2 == DialogResult.Yes)
                            {
                                IFCalc = true;
                            }
                            else if (result2 == DialogResult.No)
                            {
                                IFCalc = false;
                            }
                        }
                    }
                    else
                    {
                        dg_PNC.Rows.Clear();
                        dg_PNC.Columns.Clear();
                        dg_PNC.Columns.Add("PNC", "PNC");
                        dg_PNC.Columns["PNC"].Width    = 63;
                        dg_PNC.Columns["PNC"].SortMode = DataGridViewColumnSortMode.NotSortable;
                        IFCalc = true;
                    }


                    if (IFCalc)
                    {
                        foreach (string OneRow in row)
                        {
                            if (OneRow != "")
                            {
                                var Row = dg_PNC.Rows.Cast <DataGridViewRow>().Where(u => u.Cells["PNC"].Value.ToString().Equals(OneRow)).FirstOrDefault();
                                if (Row == null)
                                {
                                    dg_PNC.Rows.Add(OneRow);
                                }
                                else
                                {
                                    DuplicateCount++;
                                }
                            }
                        }
                    }
                    this.Close();
                    Cursor.Current = Cursors.Default;
                    if (DuplicateCount > 0)
                    {
                        MessageBox.Show($"Was remove {DuplicateCount} Duplicate Value", "Duplicate counter");
                    }
                    return;
                }
                if (Jak == "PNCSpec")
                {
                    DataGridView dg_PNC = (DataGridView)MainProgram.Self.TabControl.Controls.Find("dg_PNC", true).First();

                    if (dg_PNC.Rows.Count > 1)
                    {
                        DialogResult result = MessageBox.Show("Do you want replace all PNC in this Action ?", "Warning!", MessageBoxButtons.YesNo);
                        if (result == DialogResult.Yes)
                        {
                            dg_PNC.Rows.Clear();
                            dg_PNC.Columns.Clear();
                            dg_PNC.Columns.Add("PNC", "PNC");
                            dg_PNC.Columns.Add("OLD ANC", "OLD ANC");
                            dg_PNC.Columns.Add("OLD Q", "Q");
                            dg_PNC.Columns.Add("NEW ANC", "NEW ANC");
                            dg_PNC.Columns.Add("NEW Q", "Q");
                            dg_PNC.Columns["PNC"].Width     = 80;
                            dg_PNC.Columns["OLD ANC"].Width = 65;
                            dg_PNC.Columns["OLD ANC"].DefaultCellStyle.ForeColor = Color.Red;
                            dg_PNC.Columns["OLD Q"].Width = 35;
                            dg_PNC.Columns["OLD Q"].DefaultCellStyle.ForeColor = Color.Red;
                            dg_PNC.Columns["NEW ANC"].Width = 65;
                            dg_PNC.Columns["NEW ANC"].DefaultCellStyle.ForeColor = Color.Green;
                            dg_PNC.Columns["NEW Q"].Width = 35;
                            dg_PNC.Columns["NEW Q"].DefaultCellStyle.ForeColor = Color.Green;
                            dg_PNC.Columns["PNC"].SortMode     = DataGridViewColumnSortMode.NotSortable;
                            dg_PNC.Columns["OLD ANC"].SortMode = DataGridViewColumnSortMode.NotSortable;
                            dg_PNC.Columns["OLD Q"].SortMode   = DataGridViewColumnSortMode.NotSortable;
                            dg_PNC.Columns["NEW ANC"].SortMode = DataGridViewColumnSortMode.NotSortable;
                            dg_PNC.Columns["NEW Q"].SortMode   = DataGridViewColumnSortMode.NotSortable;
                            IFCalc = true;
                        }
                        else if (result == DialogResult.No)
                        {
                            DialogResult result2 = MessageBox.Show("Do you want add this PNC to exisitng PNC for this Action ?", "Warning!", MessageBoxButtons.YesNo);
                            if (result2 == DialogResult.Yes)
                            {
                                IFCalc = true;
                            }
                            else if (result2 == DialogResult.No)
                            {
                                IFCalc = false;
                            }
                        }
                    }
                    else
                    {
                        dg_PNC.Rows.Clear();
                        dg_PNC.Columns.Clear();
                        dg_PNC.Columns.Add("PNC", "PNC");
                        dg_PNC.Columns.Add("OLD ANC", "OLD ANC");
                        dg_PNC.Columns.Add("OLD Q", "Q");
                        dg_PNC.Columns.Add("NEW ANC", "NEW ANC");
                        dg_PNC.Columns.Add("NEW Q", "Q");
                        dg_PNC.Columns["PNC"].Width     = 80;
                        dg_PNC.Columns["OLD ANC"].Width = 65;
                        dg_PNC.Columns["OLD ANC"].DefaultCellStyle.ForeColor = Color.Red;
                        dg_PNC.Columns["OLD Q"].Width = 35;
                        dg_PNC.Columns["OLD Q"].DefaultCellStyle.ForeColor = Color.Red;
                        dg_PNC.Columns["NEW ANC"].Width = 65;
                        dg_PNC.Columns["NEW ANC"].DefaultCellStyle.ForeColor = Color.Green;
                        dg_PNC.Columns["NEW Q"].Width = 35;
                        dg_PNC.Columns["NEW Q"].DefaultCellStyle.ForeColor = Color.Green;
                        dg_PNC.Columns["PNC"].SortMode     = DataGridViewColumnSortMode.NotSortable;
                        dg_PNC.Columns["OLD ANC"].SortMode = DataGridViewColumnSortMode.NotSortable;
                        dg_PNC.Columns["OLD Q"].SortMode   = DataGridViewColumnSortMode.NotSortable;
                        dg_PNC.Columns["NEW ANC"].SortMode = DataGridViewColumnSortMode.NotSortable;
                        dg_PNC.Columns["NEW Q"].SortMode   = DataGridViewColumnSortMode.NotSortable;
                        IFCalc = true;
                    }


                    if (IFCalc)
                    {
                        foreach (string SingleRow in row)
                        {
                            if (SingleRow == string.Empty)
                            {
                                continue;
                            }

                            string[] SelectedRow = SingleRow.Split(';');
                            string   PNC         = SelectedRow[0];
                            string   ECCC        = string.Empty;

                            int Limit = ((SelectedRow.Length - 3) / 2);
                            if (SelectedRow[1].ToString() != string.Empty)
                            {
                                ECCC = "ECCC(" + SelectedRow[1] + ")";
                            }
                            dg_PNC.Rows.Add(PNC, ECCC, string.Empty);

                            dg_PNC.Rows[dg_PNC.Rows.Count - 1].DefaultCellStyle.BackColor = Color.LightBlue;
                            dg_PNC.Rows[dg_PNC.Rows.Count - 1].DefaultCellStyle.Font      = new Font(dg_PNC.Font, FontStyle.Bold);
                            dg_PNC.Rows[dg_PNC.Rows.Count - 1].Cells[1].Style.Font        = new Font(dg_PNC.Font, FontStyle.Regular);
                            dg_PNC.Rows[dg_PNC.Rows.Count - 1].Cells[1].Style.Font        = new Font("Tahoma", 10F, GraphicsUnit.Pixel);

                            for (int counter2 = 2; counter2 < Limit + 2; counter2++)
                            {
                                if (SelectedRow[counter2] != string.Empty || SelectedRow[counter2 + Limit + 1] != string.Empty)
                                {
                                    dg_PNC.Rows.Add(string.Empty, SelectedRow[counter2], SelectedRow[counter2 + 1], SelectedRow[counter2 + Limit + 1], SelectedRow[counter2 + Limit + 2]);
                                }
                                counter2++;
                            }
                        }
                    }
                    this.Close();
                    Cursor.Current = Cursors.Default;
                    return;
                }
            }
            else
            {
                this.Close();
                Cursor.Current = Cursors.Default;
                return;
            }
            if (Jak == "BU" || Jak == "EA1" || Jak == "EA2" || Jak == "EA3")
            {
                NumericUpDown Admin_Year  = (NumericUpDown)MainProgram.Self.TabControl.Controls.Find("num_Admin_YearQuantity", true).First();
                CheckBox      cb_AdminPNC = (CheckBox)MainProgram.Self.TabControl.Controls.Find("cb_AdminPNC", true).First();
                CheckBox      cb_AdminANC = (CheckBox)MainProgram.Self.TabControl.Controls.Find("cb_AdminANC", true).First();
                DataTable     Baza        = new DataTable();
                DataRow       FoundRow;

                int ile;

                if (cb_AdminANC.Checked)
                {
                    Data_Import.Singleton().Load_TxtToDataTable2(ref Baza, "ANC");
                }
                if (cb_AdminPNC.Checked)
                {
                    Data_Import.Singleton().Load_TxtToDataTable2(ref Baza, "PNC");
                }
                switch (Jak)
                {
                case "BU":
                    ile = 1;
                    break;

                case "EA1":
                    ile = 3;
                    break;

                case "EA2":
                    ile = 6;
                    break;

                case "EA3":
                    ile = 9;
                    break;

                default:
                    return;
                }

                if (Baza.Columns.Contains(Jak + "/12/" + Admin_Year.Text))
                {
                    for (int counter = ile; counter <= 12; counter++)
                    {
                        Baza.Columns.Remove(Jak + "/" + counter + "/" + Admin_Year.Text);
                    }
                }
                for (int counter = ile; counter <= 12; counter++)
                {
                    Baza.Columns.Add(new DataColumn(Jak + "/" + counter + "/" + Admin_Year.Text));
                }

                foreach (string OneRow in row)
                {
                    string[] row2 = OneRow.Split('\t');
                    if (row2[0] != "")
                    {
                        if (cb_AdminANC.Checked)
                        {
                            FoundRow = Baza.Select(string.Format("BUANC LIKE '%{0}%'", row2[0])).FirstOrDefault();
                        }
                        else
                        {
                            FoundRow = Baza.Select(string.Format("BUPNC LIKE '%{0}%'", row2[0])).FirstOrDefault();
                        }
                        int zmienna;
                        if (FoundRow != null)
                        {
                            zmienna = ile;
                            for (int counter = 1; counter <= (13 - ile); counter++)
                            {
                                FoundRow[Jak + "/" + zmienna + "/" + Admin_Year.Text] = row2[counter];
                                zmienna++;
                            }
                        }
                        else
                        {
                            DataRow NewRow = Baza.NewRow();
                            NewRow[0] = row2[0];
                            zmienna   = ile;
                            for (int counter = 1; counter <= (13 - ile); counter++)
                            {
                                NewRow[Jak + "/" + zmienna + "/" + Admin_Year.Text] = row2[counter];
                                zmienna++;
                            }
                            Baza.Rows.Add(NewRow);
                        }
                    }
                }
                if (cb_AdminANC.Checked)
                {
                    Data_Import.Singleton().Save_DataTableToTXT2(ref Baza, "ANC");
                }
                if (cb_AdminPNC.Checked)
                {
                    Data_Import.Singleton().Save_DataTableToTXT2(ref Baza, "PNC");
                }
                this.Close();
                Cursor.Current = Cursors.Default;
                return;
            }
            if (Jak == "AddMonthANC" || Jak == "AddMonthPNC")
            {
                NumericUpDown Admin_Year  = (NumericUpDown)MainProgram.Self.TabControl.Controls.Find("num_Admin_YearMonth", true).First();
                NumericUpDown Admin_Month = (NumericUpDown)MainProgram.Self.TabControl.Controls.Find("num_Admin_QuantityMonth", true).First();
                DataTable     Quantity    = new DataTable();
                DataRow       FoundRow;
                string        Miesiac = Admin_Month.Value.ToString() + "/" + Admin_Year.Value.ToString();


                if (Jak == "AddMonthANC")
                {
                    Data_Import.Singleton().Load_TxtToDataTable2(ref Quantity, "ANCMonth");
                }
                if (Jak == "AddMonthPNC")
                {
                    Data_Import.Singleton().Load_TxtToDataTable2(ref Quantity, "PNCMonth");
                }

                if (Quantity.Columns.Contains(Miesiac))
                {
                    Quantity.Columns.Remove(Miesiac);
                }
                Quantity.Columns.Add(new DataColumn(Miesiac));

                foreach (string OneRow in row)
                {
                    string[] NewValue = OneRow.Split('\t');

                    if (NewValue[0] != "")
                    {
                        if (Jak == "AddMonthANC")
                        {
                            FoundRow = Quantity.Select(string.Format("ANC LIKE '%{0}%'", NewValue[0])).FirstOrDefault();
                        }
                        else
                        {
                            FoundRow = Quantity.Select(string.Format("PNC LIKE '%{0}%'", NewValue[0])).FirstOrDefault();
                        }
                        if (FoundRow != null)
                        {
                            FoundRow[Miesiac] = NewValue[1];
                        }
                        else
                        {
                            DataRow NewRow = Quantity.NewRow();
                            NewRow[0]       = NewValue[0];
                            NewRow[Miesiac] = NewValue[1];
                            Quantity.Rows.Add(NewRow);
                        }
                    }
                }
                if (Jak == "AddMonthANC")
                {
                    Data_Import.Singleton().Save_DataTableToTXT2(ref Quantity, "ANCMonth");
                }
                if (Jak == "AddMonthPNC")
                {
                    Data_Import.Singleton().Save_DataTableToTXT2(ref Quantity, "PNCMonth");
                }
                this.Close();
                Cursor.Current = Cursors.Default;
                return;
            }
        }
 /// <summary>
 /// Заполнения значений технологических параметров для всех textBox'ов
 /// </summary>
 /// <param name="sample"></param>
 /// <param name="parameterID"></param>
 private void TextBoxFeeling(OneRow sample, int parameterID)
 {
     //Добавление всех значений каландрового вала
     foreach (var textBoxControl in calenderRollPanel.Controls)
     {
         var t = textBoxControl as TextBox;
         if (t != null)
         {
             parameterID = FindIDInDictionary(t.Name);
             t.Text      = Convert.ToString(sample.Input[parameterID]) + ConvertName(t.Name);
         }
     }
     //Добавление всех значений съемных валов
     foreach (var textBoxControl in takeOffRollPanel.Controls)
     {
         var t = textBoxControl as TextBox;
         if (t != null)
         {
             parameterID = FindIDInDictionary(t.Name);
             t.Text      = Convert.ToString(sample.Input[parameterID]) + ConvertName(t.Name);
         }
     }
     //Добавление всех значений темперирующих валов
     foreach (var textBoxControl in temperingRollPanel.Controls)
     {
         var t = textBoxControl as TextBox;
         if (t != null)
         {
             parameterID = FindIDInDictionary(t.Name);
             t.Text      = Convert.ToString(sample.Input[parameterID]) + ConvertName(t.Name);
         }
     }
     //Добавление всех значений стадии намотки
     foreach (var textBoxControl in winder.Controls)
     {
         var t = textBoxControl as TextBox;
         if (t != null)
         {
             parameterID = FindIDInDictionary(t.Name);
             t.Text      = Convert.ToString(sample.Input[parameterID]) + ConvertName(t.Name);
         }
     }
     //Показатели качества добавляются сюда
     foreach (var textBoxControl in qualityPanel.Controls)
     {
         var t = textBoxControl as TextBox;
         if ((t != null) && (!t.Name.EndsWith("LCL") || !t.Name.EndsWith("UCL") || !t.Name.EndsWith("CP")))
         {
             string name = t.Name.Replace("_", ".");
             try
             {
                 parameterID = FindIDInDictionary(name);
                 t.Text      = Convert.ToString(sample.Output[parameterID]) + ConvertName(t.Name);
             }
             catch (Exception ex)
             {
                 //усадку не ищем в базе, а считаем
             }
         }
     }
 }